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.browser.cjs
CHANGED
|
@@ -8447,7 +8447,7 @@ var require_react_is = __commonJS({
|
|
|
8447
8447
|
var require_ast_to_react = __commonJS({
|
|
8448
8448
|
"node_modules/mml-react/node_modules/react-markdown/lib/ast-to-react.js"(exports, module2) {
|
|
8449
8449
|
"use strict";
|
|
8450
|
-
var
|
|
8450
|
+
var React211 = require("react");
|
|
8451
8451
|
var xtend = require_immutable();
|
|
8452
8452
|
var ReactIs = require_react_is();
|
|
8453
8453
|
function astToReact(node2, options) {
|
|
@@ -8474,7 +8474,7 @@ var require_ast_to_react = __commonJS({
|
|
|
8474
8474
|
throw new Error("Renderer for type `".concat(node2.type, "` not defined or is not renderable"));
|
|
8475
8475
|
}
|
|
8476
8476
|
var nodeProps = getNodeProps(node2, key, options, renderer, parent, index3);
|
|
8477
|
-
return
|
|
8477
|
+
return React211.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
|
|
8478
8478
|
function resolveChildren() {
|
|
8479
8479
|
return node2.children && node2.children.map(function(childNode, i) {
|
|
8480
8480
|
return astToReact(childNode, options, {
|
|
@@ -8488,7 +8488,7 @@ var require_ast_to_react = __commonJS({
|
|
|
8488
8488
|
var props = {
|
|
8489
8489
|
key
|
|
8490
8490
|
};
|
|
8491
|
-
var isSimpleRenderer = typeof renderer === "string" || renderer ===
|
|
8491
|
+
var isSimpleRenderer = typeof renderer === "string" || renderer === React211.Fragment;
|
|
8492
8492
|
if (opts.sourcePos && node2.position) {
|
|
8493
8493
|
props["data-sourcepos"] = flattenPosition(node2.position);
|
|
8494
8494
|
}
|
|
@@ -8641,14 +8641,14 @@ var require_ast_to_react = __commonJS({
|
|
|
8641
8641
|
function mergeNodeChildren(node2, parsedChildren) {
|
|
8642
8642
|
var el = node2.element;
|
|
8643
8643
|
if (Array.isArray(el)) {
|
|
8644
|
-
var Fragment3 =
|
|
8645
|
-
return
|
|
8644
|
+
var Fragment3 = React211.Fragment || "div";
|
|
8645
|
+
return React211.createElement(Fragment3, null, el);
|
|
8646
8646
|
}
|
|
8647
8647
|
if (el.props.children || parsedChildren) {
|
|
8648
|
-
var children =
|
|
8649
|
-
return
|
|
8648
|
+
var children = React211.Children.toArray(el.props.children).concat(parsedChildren);
|
|
8649
|
+
return React211.cloneElement(el, null, children);
|
|
8650
8650
|
}
|
|
8651
|
-
return
|
|
8651
|
+
return React211.cloneElement(el, null);
|
|
8652
8652
|
}
|
|
8653
8653
|
function flattenPosition(pos) {
|
|
8654
8654
|
return [pos.start.line, ":", pos.start.column, "-", pos.end.line, ":", pos.end.column].map(String).join("");
|
|
@@ -8772,9 +8772,9 @@ var require_renderers = __commonJS({
|
|
|
8772
8772
|
"node_modules/mml-react/node_modules/react-markdown/lib/renderers.js"(exports, module2) {
|
|
8773
8773
|
"use strict";
|
|
8774
8774
|
var xtend = require_immutable();
|
|
8775
|
-
var
|
|
8776
|
-
var supportsStringRender = parseInt((
|
|
8777
|
-
var createElement =
|
|
8775
|
+
var React211 = require("react");
|
|
8776
|
+
var supportsStringRender = parseInt((React211.version || "16").slice(0, 2), 10) >= 16;
|
|
8777
|
+
var createElement = React211.createElement;
|
|
8778
8778
|
module2.exports = {
|
|
8779
8779
|
break: "br",
|
|
8780
8780
|
paragraph: "p",
|
|
@@ -8810,7 +8810,7 @@ var require_renderers = __commonJS({
|
|
|
8810
8810
|
}
|
|
8811
8811
|
function Root(props) {
|
|
8812
8812
|
var className = props.className;
|
|
8813
|
-
var root4 = !className &&
|
|
8813
|
+
var root4 = !className && React211.Fragment || "div";
|
|
8814
8814
|
return createElement(root4, className ? {
|
|
8815
8815
|
className
|
|
8816
8816
|
} : null, props.children);
|
|
@@ -8866,7 +8866,7 @@ var require_renderers = __commonJS({
|
|
|
8866
8866
|
var dangerous = props.allowDangerousHtml || props.escapeHtml === false;
|
|
8867
8867
|
var tag = props.isBlock ? "div" : "span";
|
|
8868
8868
|
if (!dangerous) {
|
|
8869
|
-
return createElement(
|
|
8869
|
+
return createElement(React211.Fragment || tag, null, props.value);
|
|
8870
8870
|
}
|
|
8871
8871
|
var nodeProps = {
|
|
8872
8872
|
dangerouslySetInnerHTML: {
|
|
@@ -8876,7 +8876,7 @@ var require_renderers = __commonJS({
|
|
|
8876
8876
|
return createElement(tag, nodeProps);
|
|
8877
8877
|
}
|
|
8878
8878
|
function ParsedHtml(props) {
|
|
8879
|
-
return props["data-sourcepos"] ?
|
|
8879
|
+
return props["data-sourcepos"] ? React211.cloneElement(props.element, {
|
|
8880
8880
|
"data-sourcepos": props["data-sourcepos"]
|
|
8881
8881
|
}) : props.element;
|
|
8882
8882
|
}
|
|
@@ -17773,6 +17773,7 @@ __export(src_exports, {
|
|
|
17773
17773
|
WaveProgressBar: () => WaveProgressBar,
|
|
17774
17774
|
Window: () => Window,
|
|
17775
17775
|
WithComponents: () => WithComponents,
|
|
17776
|
+
WithDragAndDropUpload: () => WithDragAndDropUpload,
|
|
17776
17777
|
areMessagePropsEqual: () => areMessagePropsEqual,
|
|
17777
17778
|
areMessageUIPropsEqual: () => areMessageUIPropsEqual,
|
|
17778
17779
|
attachmentTypeIconMap: () => attachmentTypeIconMap,
|
|
@@ -18483,9 +18484,6 @@ var MessageInputContextProvider = ({
|
|
|
18483
18484
|
var useMessageInputContext = (componentName) => {
|
|
18484
18485
|
const contextValue = (0, import_react13.useContext)(MessageInputContext);
|
|
18485
18486
|
if (!contextValue) {
|
|
18486
|
-
console.warn(
|
|
18487
|
-
`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.`
|
|
18488
|
-
);
|
|
18489
18487
|
return {};
|
|
18490
18488
|
}
|
|
18491
18489
|
return contextValue;
|
|
@@ -35600,7 +35598,7 @@ ReactTextareaAutocomplete.propTypes = {
|
|
|
35600
35598
|
};
|
|
35601
35599
|
|
|
35602
35600
|
// src/components/Channel/Channel.tsx
|
|
35603
|
-
var
|
|
35601
|
+
var import_react259 = __toESM(require("react"));
|
|
35604
35602
|
var import_lodash22 = __toESM(require("lodash.debounce"));
|
|
35605
35603
|
var import_lodash23 = __toESM(require("lodash.defaultsdeep"));
|
|
35606
35604
|
var import_lodash24 = __toESM(require("lodash.throttle"));
|
|
@@ -40868,10 +40866,10 @@ var UnMemoizedConnectionStatus = () => {
|
|
|
40868
40866
|
var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
|
|
40869
40867
|
|
|
40870
40868
|
// src/components/MessageList/GiphyPreviewMessage.tsx
|
|
40871
|
-
var
|
|
40869
|
+
var import_react228 = __toESM(require("react"));
|
|
40872
40870
|
|
|
40873
40871
|
// src/components/Message/Message.tsx
|
|
40874
|
-
var
|
|
40872
|
+
var import_react227 = __toESM(require("react"));
|
|
40875
40873
|
|
|
40876
40874
|
// src/components/Message/hooks/useActionHandler.ts
|
|
40877
40875
|
var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
|
|
@@ -44446,7 +44444,7 @@ var useMessageTextStreaming = ({
|
|
|
44446
44444
|
};
|
|
44447
44445
|
|
|
44448
44446
|
// src/components/Message/MessageSimple.tsx
|
|
44449
|
-
var
|
|
44447
|
+
var import_react226 = __toESM(require("react"));
|
|
44450
44448
|
var import_clsx60 = __toESM(require("clsx"));
|
|
44451
44449
|
|
|
44452
44450
|
// src/components/Message/icons.tsx
|
|
@@ -48431,12 +48429,10 @@ var DefaultTriggerProvider = ({
|
|
|
48431
48429
|
};
|
|
48432
48430
|
|
|
48433
48431
|
// src/components/MessageInput/EditMessageForm.tsx
|
|
48434
|
-
var
|
|
48432
|
+
var import_react218 = __toESM(require("react"));
|
|
48435
48433
|
|
|
48436
48434
|
// src/components/MessageInput/MessageInputFlat.tsx
|
|
48437
|
-
var
|
|
48438
|
-
var import_clsx55 = __toESM(require("clsx"));
|
|
48439
|
-
var import_react_dropzone2 = require("react-dropzone");
|
|
48435
|
+
var import_react217 = __toESM(require("react"));
|
|
48440
48436
|
|
|
48441
48437
|
// src/components/MessageInput/SendButton.tsx
|
|
48442
48438
|
var import_react205 = __toESM(require("react"));
|
|
@@ -48841,9 +48837,83 @@ var AIStateIndicator = ({
|
|
|
48841
48837
|
return aiState in allowedStates ? /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react215.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
|
|
48842
48838
|
};
|
|
48843
48839
|
|
|
48840
|
+
// src/components/MessageInput/WithDragAndDropUpload.tsx
|
|
48841
|
+
var import_react216 = __toESM(require("react"));
|
|
48842
|
+
var import_react_dropzone2 = require("react-dropzone");
|
|
48843
|
+
var import_clsx55 = __toESM(require("clsx"));
|
|
48844
|
+
var DragAndDropUploadContext = import_react216.default.createContext({
|
|
48845
|
+
subscribeToDrop: null
|
|
48846
|
+
});
|
|
48847
|
+
var useDragAndDropUploadContext = () => (0, import_react216.useContext)(DragAndDropUploadContext);
|
|
48848
|
+
var useRegisterDropHandlers = ({ uploadNewFiles }) => {
|
|
48849
|
+
const { subscribeToDrop } = useDragAndDropUploadContext();
|
|
48850
|
+
(0, import_react216.useEffect)(() => {
|
|
48851
|
+
const unsubscribe = subscribeToDrop?.(uploadNewFiles);
|
|
48852
|
+
return unsubscribe;
|
|
48853
|
+
}, [subscribeToDrop, uploadNewFiles]);
|
|
48854
|
+
};
|
|
48855
|
+
var WithDragAndDropUpload = ({
|
|
48856
|
+
children,
|
|
48857
|
+
className,
|
|
48858
|
+
component: Component2 = "div",
|
|
48859
|
+
style
|
|
48860
|
+
}) => {
|
|
48861
|
+
const dropHandlersRef = (0, import_react216.useRef)(/* @__PURE__ */ new Set());
|
|
48862
|
+
const { acceptedFiles = [], multipleUploads } = useChannelStateContext();
|
|
48863
|
+
const { t: t2 } = useTranslationContext();
|
|
48864
|
+
const messageInputContext = useMessageInputContext();
|
|
48865
|
+
const dragAndDropUploadContext = useDragAndDropUploadContext();
|
|
48866
|
+
const isWithinMessageInputContext = typeof messageInputContext.uploadNewFiles === "function";
|
|
48867
|
+
const accept = (0, import_react216.useMemo)(
|
|
48868
|
+
() => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
|
|
48869
|
+
mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
|
|
48870
|
+
return mediaTypeMap;
|
|
48871
|
+
}, {}),
|
|
48872
|
+
[acceptedFiles]
|
|
48873
|
+
);
|
|
48874
|
+
const subscribeToDrop = (0, import_react216.useCallback)((fn) => {
|
|
48875
|
+
dropHandlersRef.current.add(fn);
|
|
48876
|
+
return () => {
|
|
48877
|
+
dropHandlersRef.current.delete(fn);
|
|
48878
|
+
};
|
|
48879
|
+
}, []);
|
|
48880
|
+
const handleDrop = (0, import_react216.useCallback)((files) => {
|
|
48881
|
+
dropHandlersRef.current.forEach((fn) => fn(files));
|
|
48882
|
+
}, []);
|
|
48883
|
+
const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
|
|
48884
|
+
accept,
|
|
48885
|
+
// apply `disabled` rules if available, otherwise allow anything and
|
|
48886
|
+
// let the `uploadNewFiles` handle the limitations internally
|
|
48887
|
+
disabled: isWithinMessageInputContext ? !messageInputContext.isUploadEnabled || messageInputContext.maxFilesLeft === 0 : false,
|
|
48888
|
+
multiple: multipleUploads,
|
|
48889
|
+
noClick: true,
|
|
48890
|
+
onDrop: isWithinMessageInputContext ? messageInputContext.uploadNewFiles : handleDrop
|
|
48891
|
+
});
|
|
48892
|
+
if (dragAndDropUploadContext.subscribeToDrop !== null) {
|
|
48893
|
+
return /* @__PURE__ */ import_react216.default.createElement(Component2, { className }, children);
|
|
48894
|
+
}
|
|
48895
|
+
return /* @__PURE__ */ import_react216.default.createElement(
|
|
48896
|
+
DragAndDropUploadContext.Provider,
|
|
48897
|
+
{
|
|
48898
|
+
value: {
|
|
48899
|
+
subscribeToDrop
|
|
48900
|
+
}
|
|
48901
|
+
},
|
|
48902
|
+
/* @__PURE__ */ import_react216.default.createElement(Component2, { ...getRootProps({ className, style }) }, isDragActive && /* @__PURE__ */ import_react216.default.createElement(
|
|
48903
|
+
"div",
|
|
48904
|
+
{
|
|
48905
|
+
className: (0, import_clsx55.default)("str-chat__dropzone-container", {
|
|
48906
|
+
"str-chat__dropzone-container--not-accepted": isDragReject
|
|
48907
|
+
})
|
|
48908
|
+
},
|
|
48909
|
+
!isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
|
|
48910
|
+
isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Some of the files will not be accepted"))
|
|
48911
|
+
), children)
|
|
48912
|
+
);
|
|
48913
|
+
};
|
|
48914
|
+
|
|
48844
48915
|
// src/components/MessageInput/MessageInputFlat.tsx
|
|
48845
48916
|
var MessageInputFlat = () => {
|
|
48846
|
-
const { t: t2 } = useTranslationContext("MessageInputFlat");
|
|
48847
48917
|
const {
|
|
48848
48918
|
asyncMessagesMultiSendEnabled,
|
|
48849
48919
|
attachments,
|
|
@@ -48853,14 +48923,12 @@ var MessageInputFlat = () => {
|
|
|
48853
48923
|
hideSendButton,
|
|
48854
48924
|
isUploadEnabled,
|
|
48855
48925
|
linkPreviews,
|
|
48856
|
-
maxFilesLeft,
|
|
48857
48926
|
message,
|
|
48858
48927
|
numberOfUploads,
|
|
48859
48928
|
parent,
|
|
48860
48929
|
recordingController,
|
|
48861
48930
|
setCooldownRemaining,
|
|
48862
|
-
text: text8
|
|
48863
|
-
uploadNewFiles
|
|
48931
|
+
text: text8
|
|
48864
48932
|
} = useMessageInputContext("MessageInputFlat");
|
|
48865
48933
|
const {
|
|
48866
48934
|
AttachmentPreviewList: AttachmentPreviewList2 = AttachmentPreviewList,
|
|
@@ -48875,41 +48943,23 @@ var MessageInputFlat = () => {
|
|
|
48875
48943
|
StartRecordingAudioButton: StartRecordingAudioButton2 = StartRecordingAudioButton,
|
|
48876
48944
|
StopAIGenerationButton: StopAIGenerationButtonOverride
|
|
48877
48945
|
} = useComponentContext("MessageInputFlat");
|
|
48878
|
-
const {
|
|
48879
|
-
acceptedFiles = [],
|
|
48880
|
-
multipleUploads,
|
|
48881
|
-
quotedMessage
|
|
48882
|
-
} = useChannelStateContext("MessageInputFlat");
|
|
48946
|
+
const { quotedMessage } = useChannelStateContext("MessageInputFlat");
|
|
48883
48947
|
const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
|
|
48884
48948
|
const { channel } = useChatContext("MessageInputFlat");
|
|
48885
48949
|
const { aiState } = useAIState(channel);
|
|
48886
|
-
const stopGenerating = (0,
|
|
48950
|
+
const stopGenerating = (0, import_react217.useCallback)(() => channel?.stopAIResponse(), [channel]);
|
|
48887
48951
|
const [
|
|
48888
48952
|
showRecordingPermissionDeniedNotification,
|
|
48889
48953
|
setShowRecordingPermissionDeniedNotification
|
|
48890
|
-
] = (0,
|
|
48891
|
-
const closePermissionDeniedNotification = (0,
|
|
48954
|
+
] = (0, import_react217.useState)(false);
|
|
48955
|
+
const closePermissionDeniedNotification = (0, import_react217.useCallback)(() => {
|
|
48892
48956
|
setShowRecordingPermissionDeniedNotification(false);
|
|
48893
48957
|
}, []);
|
|
48894
|
-
const failedUploadsCount = (0,
|
|
48958
|
+
const failedUploadsCount = (0, import_react217.useMemo)(
|
|
48895
48959
|
() => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
|
|
48896
48960
|
[attachments]
|
|
48897
48961
|
);
|
|
48898
|
-
|
|
48899
|
-
() => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
|
|
48900
|
-
mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
|
|
48901
|
-
return mediaTypeMap;
|
|
48902
|
-
}, {}),
|
|
48903
|
-
[acceptedFiles]
|
|
48904
|
-
);
|
|
48905
|
-
const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
|
|
48906
|
-
accept,
|
|
48907
|
-
disabled: !isUploadEnabled || maxFilesLeft === 0,
|
|
48908
|
-
multiple: multipleUploads,
|
|
48909
|
-
noClick: true,
|
|
48910
|
-
onDrop: uploadNewFiles
|
|
48911
|
-
});
|
|
48912
|
-
(0, import_react216.useEffect)(() => {
|
|
48962
|
+
(0, import_react217.useEffect)(() => {
|
|
48913
48963
|
const handleQuotedMessageUpdate = (e2) => {
|
|
48914
48964
|
if (e2.message?.id !== quotedMessage?.id) return;
|
|
48915
48965
|
if (e2.type === "message.deleted") {
|
|
@@ -48925,40 +48975,31 @@ var MessageInputFlat = () => {
|
|
|
48925
48975
|
channel?.off("message.updated", handleQuotedMessageUpdate);
|
|
48926
48976
|
};
|
|
48927
48977
|
}, [channel, quotedMessage]);
|
|
48928
|
-
if (recordingController.recordingState) return /* @__PURE__ */
|
|
48978
|
+
if (recordingController.recordingState) return /* @__PURE__ */ import_react217.default.createElement(AudioRecorder2, null);
|
|
48929
48979
|
const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
|
|
48930
48980
|
const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
|
|
48931
48981
|
const isRecording = !!recordingController.recordingState;
|
|
48932
48982
|
const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
|
|
48933
48983
|
const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
|
|
48934
|
-
return /* @__PURE__ */
|
|
48984
|
+
return /* @__PURE__ */ import_react217.default.createElement(WithDragAndDropUpload, { className: "str-chat__message-input", component: "div" }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react217.default.createElement(
|
|
48935
48985
|
RecordingPermissionDeniedNotification2,
|
|
48936
48986
|
{
|
|
48937
48987
|
onClose: closePermissionDeniedNotification,
|
|
48938
48988
|
permissionName: "microphone" /* MIC */
|
|
48939
48989
|
}
|
|
48940
|
-
), findAndEnqueueURLsToEnrich && /* @__PURE__ */
|
|
48941
|
-
"div",
|
|
48942
|
-
{
|
|
48943
|
-
className: (0, import_clsx55.default)("str-chat__dropzone-container", {
|
|
48944
|
-
"str-chat__dropzone-container--not-accepted": isDragReject
|
|
48945
|
-
})
|
|
48946
|
-
},
|
|
48947
|
-
!isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
|
|
48948
|
-
isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Some of the files will not be accepted"))
|
|
48949
|
-
), 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(
|
|
48990
|
+
), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react217.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react217.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react217.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react217.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react217.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react217.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react217.default.createElement(
|
|
48950
48991
|
CooldownTimer2,
|
|
48951
48992
|
{
|
|
48952
48993
|
cooldownInterval: cooldownRemaining,
|
|
48953
48994
|
setCooldownRemaining
|
|
48954
48995
|
}
|
|
48955
|
-
) : /* @__PURE__ */
|
|
48996
|
+
) : /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, /* @__PURE__ */ import_react217.default.createElement(
|
|
48956
48997
|
SendButton2,
|
|
48957
48998
|
{
|
|
48958
48999
|
disabled: !numberOfUploads && !text8.length && attachments.length - failedUploadsCount === 0,
|
|
48959
49000
|
sendMessage: handleSubmit
|
|
48960
49001
|
}
|
|
48961
|
-
), recordingEnabled && /* @__PURE__ */
|
|
49002
|
+
), recordingEnabled && /* @__PURE__ */ import_react217.default.createElement(
|
|
48962
49003
|
StartRecordingAudioButton2,
|
|
48963
49004
|
{
|
|
48964
49005
|
disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
|
|
@@ -48969,29 +49010,29 @@ var MessageInputFlat = () => {
|
|
|
48969
49010
|
setShowRecordingPermissionDeniedNotification(true);
|
|
48970
49011
|
}
|
|
48971
49012
|
}
|
|
48972
|
-
)))))
|
|
49013
|
+
)))));
|
|
48973
49014
|
};
|
|
48974
49015
|
|
|
48975
49016
|
// src/components/MessageInput/EditMessageForm.tsx
|
|
48976
49017
|
var EditMessageForm = () => {
|
|
48977
49018
|
const { t: t2 } = useTranslationContext("EditMessageForm");
|
|
48978
49019
|
const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
|
|
48979
|
-
(0,
|
|
49020
|
+
(0, import_react218.useEffect)(() => {
|
|
48980
49021
|
const onKeyDown = (event) => {
|
|
48981
49022
|
if (event.key === "Escape") clearEditingState?.();
|
|
48982
49023
|
};
|
|
48983
49024
|
document.addEventListener("keydown", onKeyDown);
|
|
48984
49025
|
return () => document.removeEventListener("keydown", onKeyDown);
|
|
48985
49026
|
}, [clearEditingState]);
|
|
48986
|
-
return /* @__PURE__ */
|
|
49027
|
+
return /* @__PURE__ */ import_react218.default.createElement(
|
|
48987
49028
|
"form",
|
|
48988
49029
|
{
|
|
48989
49030
|
autoComplete: "off",
|
|
48990
49031
|
className: "str-chat__edit-message-form",
|
|
48991
49032
|
onSubmit: handleSubmit
|
|
48992
49033
|
},
|
|
48993
|
-
/* @__PURE__ */
|
|
48994
|
-
/* @__PURE__ */
|
|
49034
|
+
/* @__PURE__ */ import_react218.default.createElement(MessageInputFlat, null),
|
|
49035
|
+
/* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react218.default.createElement(
|
|
48995
49036
|
"button",
|
|
48996
49037
|
{
|
|
48997
49038
|
className: "str-chat__edit-message-cancel",
|
|
@@ -48999,7 +49040,7 @@ var EditMessageForm = () => {
|
|
|
48999
49040
|
onClick: clearEditingState
|
|
49000
49041
|
},
|
|
49001
49042
|
t2("Cancel")
|
|
49002
|
-
), /* @__PURE__ */
|
|
49043
|
+
), /* @__PURE__ */ import_react218.default.createElement(
|
|
49003
49044
|
"button",
|
|
49004
49045
|
{
|
|
49005
49046
|
className: "str-chat__edit-message-send",
|
|
@@ -49012,7 +49053,7 @@ var EditMessageForm = () => {
|
|
|
49012
49053
|
};
|
|
49013
49054
|
|
|
49014
49055
|
// src/components/MessageInput/MessageInput.tsx
|
|
49015
|
-
var
|
|
49056
|
+
var import_react219 = __toESM(require("react"));
|
|
49016
49057
|
var MessageInputProvider = (props) => {
|
|
49017
49058
|
const cooldownTimerState = useCooldownTimer();
|
|
49018
49059
|
const messageInputState = useMessageInputState(props);
|
|
@@ -49023,7 +49064,8 @@ var MessageInputProvider = (props) => {
|
|
|
49023
49064
|
...props,
|
|
49024
49065
|
emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
|
|
49025
49066
|
});
|
|
49026
|
-
|
|
49067
|
+
useRegisterDropHandlers(messageInputContextValue);
|
|
49068
|
+
return /* @__PURE__ */ import_react219.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
|
|
49027
49069
|
};
|
|
49028
49070
|
var UnMemoizedMessageInput = (props) => {
|
|
49029
49071
|
const { Input: PropInput } = props;
|
|
@@ -49032,35 +49074,35 @@ var UnMemoizedMessageInput = (props) => {
|
|
|
49032
49074
|
const Input3 = PropInput || ContextInput || MessageInputFlat;
|
|
49033
49075
|
const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
|
|
49034
49076
|
if (dragAndDropWindow)
|
|
49035
|
-
return /* @__PURE__ */
|
|
49036
|
-
return /* @__PURE__ */
|
|
49077
|
+
return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null)));
|
|
49078
|
+
return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null))));
|
|
49037
49079
|
};
|
|
49038
|
-
var MessageInput =
|
|
49080
|
+
var MessageInput = import_react219.default.memo(
|
|
49039
49081
|
UnMemoizedMessageInput
|
|
49040
49082
|
);
|
|
49041
49083
|
|
|
49042
49084
|
// src/components/Reactions/ReactionsList.tsx
|
|
49043
|
-
var
|
|
49085
|
+
var import_react223 = __toESM(require("react"));
|
|
49044
49086
|
var import_clsx57 = __toESM(require("clsx"));
|
|
49045
49087
|
|
|
49046
49088
|
// src/components/Reactions/ReactionsListModal.tsx
|
|
49047
|
-
var
|
|
49089
|
+
var import_react221 = __toESM(require("react"));
|
|
49048
49090
|
var import_clsx56 = __toESM(require("clsx"));
|
|
49049
49091
|
|
|
49050
49092
|
// src/components/Reactions/hooks/useFetchReactions.ts
|
|
49051
|
-
var
|
|
49093
|
+
var import_react220 = require("react");
|
|
49052
49094
|
function useFetchReactions(options) {
|
|
49053
49095
|
const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
|
|
49054
|
-
const [reactions, setReactions] = (0,
|
|
49096
|
+
const [reactions, setReactions] = (0, import_react220.useState)([]);
|
|
49055
49097
|
const {
|
|
49056
49098
|
handleFetchReactions: propHandleFetchReactions,
|
|
49057
49099
|
reactionType,
|
|
49058
49100
|
shouldFetch,
|
|
49059
49101
|
sort
|
|
49060
49102
|
} = options;
|
|
49061
|
-
const [isLoading, setIsLoading] = (0,
|
|
49103
|
+
const [isLoading, setIsLoading] = (0, import_react220.useState)(shouldFetch);
|
|
49062
49104
|
const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
|
|
49063
|
-
(0,
|
|
49105
|
+
(0, import_react220.useEffect)(() => {
|
|
49064
49106
|
if (!shouldFetch) {
|
|
49065
49107
|
return;
|
|
49066
49108
|
}
|
|
@@ -49116,24 +49158,24 @@ function ReactionsListModal({
|
|
|
49116
49158
|
shouldFetch: modalProps.open,
|
|
49117
49159
|
sort: reactionDetailsSort
|
|
49118
49160
|
});
|
|
49119
|
-
const reactionDetailsWithLegacyFallback = (0,
|
|
49161
|
+
const reactionDetailsWithLegacyFallback = (0, import_react221.useMemo)(
|
|
49120
49162
|
() => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
|
|
49121
49163
|
[legacySortReactionDetails, reactionDetails]
|
|
49122
49164
|
);
|
|
49123
|
-
return /* @__PURE__ */
|
|
49165
|
+
return /* @__PURE__ */ import_react221.default.createElement(
|
|
49124
49166
|
Modal,
|
|
49125
49167
|
{
|
|
49126
49168
|
...modalProps,
|
|
49127
49169
|
className: (0, import_clsx56.default)("str-chat__message-reactions-details-modal", modalProps.className)
|
|
49128
49170
|
},
|
|
49129
|
-
/* @__PURE__ */
|
|
49171
|
+
/* @__PURE__ */ import_react221.default.createElement(
|
|
49130
49172
|
"div",
|
|
49131
49173
|
{
|
|
49132
49174
|
className: "str-chat__message-reactions-details",
|
|
49133
49175
|
"data-testid": "reactions-list-modal"
|
|
49134
49176
|
},
|
|
49135
|
-
/* @__PURE__ */
|
|
49136
|
-
({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
49177
|
+
/* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
|
|
49178
|
+
({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
|
|
49137
49179
|
"div",
|
|
49138
49180
|
{
|
|
49139
49181
|
className: (0, import_clsx56.default)("str-chat__message-reactions-details-reaction-type", {
|
|
@@ -49145,25 +49187,25 @@ function ReactionsListModal({
|
|
|
49145
49187
|
reactionType
|
|
49146
49188
|
)
|
|
49147
49189
|
},
|
|
49148
|
-
/* @__PURE__ */
|
|
49190
|
+
/* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null)),
|
|
49149
49191
|
"\xA0",
|
|
49150
|
-
/* @__PURE__ */
|
|
49192
|
+
/* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
|
|
49151
49193
|
)
|
|
49152
49194
|
)),
|
|
49153
|
-
SelectedEmojiComponent && /* @__PURE__ */
|
|
49154
|
-
/* @__PURE__ */
|
|
49195
|
+
SelectedEmojiComponent && /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react221.default.createElement(SelectedEmojiComponent, null)),
|
|
49196
|
+
/* @__PURE__ */ import_react221.default.createElement(
|
|
49155
49197
|
"div",
|
|
49156
49198
|
{
|
|
49157
49199
|
className: "str-chat__message-reactions-details-reacting-users",
|
|
49158
49200
|
"data-testid": "all-reacting-users"
|
|
49159
49201
|
},
|
|
49160
|
-
areReactionsLoading ? /* @__PURE__ */
|
|
49202
|
+
areReactionsLoading ? /* @__PURE__ */ import_react221.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react221.default.createElement(
|
|
49161
49203
|
"div",
|
|
49162
49204
|
{
|
|
49163
49205
|
className: "str-chat__message-reactions-details-reacting-user",
|
|
49164
49206
|
key: user?.id
|
|
49165
49207
|
},
|
|
49166
|
-
/* @__PURE__ */
|
|
49208
|
+
/* @__PURE__ */ import_react221.default.createElement(
|
|
49167
49209
|
Avatar,
|
|
49168
49210
|
{
|
|
49169
49211
|
className: "stream-chat__avatar--reaction",
|
|
@@ -49172,7 +49214,7 @@ function ReactionsListModal({
|
|
|
49172
49214
|
name: user?.name || user?.id
|
|
49173
49215
|
}
|
|
49174
49216
|
),
|
|
49175
|
-
/* @__PURE__ */
|
|
49217
|
+
/* @__PURE__ */ import_react221.default.createElement(
|
|
49176
49218
|
"span",
|
|
49177
49219
|
{
|
|
49178
49220
|
className: "str-chat__user-item--name",
|
|
@@ -49187,7 +49229,7 @@ function ReactionsListModal({
|
|
|
49187
49229
|
}
|
|
49188
49230
|
|
|
49189
49231
|
// src/components/Reactions/hooks/useProcessReactions.tsx
|
|
49190
|
-
var
|
|
49232
|
+
var import_react222 = require("react");
|
|
49191
49233
|
var defaultReactionsSort = (a2, b) => {
|
|
49192
49234
|
if (a2.firstReactionAt && b.firstReactionAt) {
|
|
49193
49235
|
return +a2.firstReactionAt - +b.firstReactionAt;
|
|
@@ -49209,19 +49251,19 @@ var useProcessReactions = (params) => {
|
|
|
49209
49251
|
const latestReactions = propReactions || message.latest_reactions;
|
|
49210
49252
|
const ownReactions = propOwnReactions || message?.own_reactions;
|
|
49211
49253
|
const reactionGroups = propReactionGroups || message?.reaction_groups;
|
|
49212
|
-
const isOwnReaction = (0,
|
|
49254
|
+
const isOwnReaction = (0, import_react222.useCallback)(
|
|
49213
49255
|
(reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
|
|
49214
49256
|
[ownReactions]
|
|
49215
49257
|
);
|
|
49216
|
-
const getEmojiByReactionType = (0,
|
|
49258
|
+
const getEmojiByReactionType = (0, import_react222.useCallback)(
|
|
49217
49259
|
(reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
|
|
49218
49260
|
[reactionOptions]
|
|
49219
49261
|
);
|
|
49220
|
-
const isSupportedReaction = (0,
|
|
49262
|
+
const isSupportedReaction = (0, import_react222.useCallback)(
|
|
49221
49263
|
(reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
|
|
49222
49264
|
[reactionOptions]
|
|
49223
49265
|
);
|
|
49224
|
-
const getLatestReactedUserNames = (0,
|
|
49266
|
+
const getLatestReactedUserNames = (0, import_react222.useCallback)(
|
|
49225
49267
|
(reactionType) => latestReactions?.flatMap((reaction) => {
|
|
49226
49268
|
if (reactionType && reactionType === reaction.type) {
|
|
49227
49269
|
const username = reaction.user?.name || reaction.user?.id;
|
|
@@ -49231,7 +49273,7 @@ var useProcessReactions = (params) => {
|
|
|
49231
49273
|
}) ?? [],
|
|
49232
49274
|
[latestReactions]
|
|
49233
49275
|
);
|
|
49234
|
-
const existingReactions = (0,
|
|
49276
|
+
const existingReactions = (0, import_react222.useMemo)(() => {
|
|
49235
49277
|
if (!reactionGroups) {
|
|
49236
49278
|
return [];
|
|
49237
49279
|
}
|
|
@@ -49265,7 +49307,7 @@ var useProcessReactions = (params) => {
|
|
|
49265
49307
|
sortReactions
|
|
49266
49308
|
]);
|
|
49267
49309
|
const hasReactions = existingReactions.length > 0;
|
|
49268
|
-
const totalReactionCount = (0,
|
|
49310
|
+
const totalReactionCount = (0, import_react222.useMemo)(
|
|
49269
49311
|
() => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
|
|
49270
49312
|
[existingReactions]
|
|
49271
49313
|
);
|
|
@@ -49287,7 +49329,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49287
49329
|
...rest
|
|
49288
49330
|
} = props;
|
|
49289
49331
|
const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
|
|
49290
|
-
const [selectedReactionType, setSelectedReactionType] = (0,
|
|
49332
|
+
const [selectedReactionType, setSelectedReactionType] = (0, import_react223.useState)(null);
|
|
49291
49333
|
const { t: t2 } = useTranslationContext("ReactionsList");
|
|
49292
49334
|
const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
|
|
49293
49335
|
const handleReactionButtonClick = (reactionType) => {
|
|
@@ -49297,7 +49339,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49297
49339
|
setSelectedReactionType(reactionType);
|
|
49298
49340
|
};
|
|
49299
49341
|
if (!hasReactions) return null;
|
|
49300
|
-
return /* @__PURE__ */
|
|
49342
|
+
return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, /* @__PURE__ */ import_react223.default.createElement(
|
|
49301
49343
|
"div",
|
|
49302
49344
|
{
|
|
49303
49345
|
"aria-label": t2("aria/Reaction list"),
|
|
@@ -49308,8 +49350,8 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49308
49350
|
"data-testid": "reaction-list",
|
|
49309
49351
|
role: "figure"
|
|
49310
49352
|
},
|
|
49311
|
-
/* @__PURE__ */
|
|
49312
|
-
({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
49353
|
+
/* @__PURE__ */ import_react223.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
|
|
49354
|
+
({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react223.default.createElement(
|
|
49313
49355
|
"li",
|
|
49314
49356
|
{
|
|
49315
49357
|
className: (0, import_clsx57.default)("str-chat__message-reaction", {
|
|
@@ -49317,7 +49359,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49317
49359
|
}),
|
|
49318
49360
|
key: reactionType
|
|
49319
49361
|
},
|
|
49320
|
-
/* @__PURE__ */
|
|
49362
|
+
/* @__PURE__ */ import_react223.default.createElement(
|
|
49321
49363
|
"button",
|
|
49322
49364
|
{
|
|
49323
49365
|
"aria-label": `Reactions: ${reactionType}`,
|
|
@@ -49325,9 +49367,9 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49325
49367
|
onClick: () => handleReactionButtonClick(reactionType),
|
|
49326
49368
|
type: "button"
|
|
49327
49369
|
},
|
|
49328
|
-
/* @__PURE__ */
|
|
49370
|
+
/* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react223.default.createElement(EmojiComponent, null)),
|
|
49329
49371
|
"\xA0",
|
|
49330
|
-
/* @__PURE__ */
|
|
49372
|
+
/* @__PURE__ */ import_react223.default.createElement(
|
|
49331
49373
|
"span",
|
|
49332
49374
|
{
|
|
49333
49375
|
className: "str-chat__message-reaction-count",
|
|
@@ -49337,8 +49379,8 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49337
49379
|
)
|
|
49338
49380
|
)
|
|
49339
49381
|
)
|
|
49340
|
-
), /* @__PURE__ */
|
|
49341
|
-
), selectedReactionType !== null && /* @__PURE__ */
|
|
49382
|
+
), /* @__PURE__ */ import_react223.default.createElement("li", null, /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
|
|
49383
|
+
), selectedReactionType !== null && /* @__PURE__ */ import_react223.default.createElement(
|
|
49342
49384
|
ReactionsListModal2,
|
|
49343
49385
|
{
|
|
49344
49386
|
handleFetchReactions,
|
|
@@ -49351,12 +49393,12 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
49351
49393
|
}
|
|
49352
49394
|
));
|
|
49353
49395
|
};
|
|
49354
|
-
var ReactionsList =
|
|
49396
|
+
var ReactionsList = import_react223.default.memo(
|
|
49355
49397
|
UnMemoizedReactionsList
|
|
49356
49398
|
);
|
|
49357
49399
|
|
|
49358
49400
|
// src/components/Reactions/SimpleReactionsList.tsx
|
|
49359
|
-
var
|
|
49401
|
+
var import_react224 = __toESM(require("react"));
|
|
49360
49402
|
var import_clsx58 = __toESM(require("clsx"));
|
|
49361
49403
|
var WithTooltip = ({
|
|
49362
49404
|
children,
|
|
@@ -49364,12 +49406,12 @@ var WithTooltip = ({
|
|
|
49364
49406
|
onMouseLeave,
|
|
49365
49407
|
title
|
|
49366
49408
|
}) => {
|
|
49367
|
-
const [referenceElement, setReferenceElement] = (0,
|
|
49409
|
+
const [referenceElement, setReferenceElement] = (0, import_react224.useState)(null);
|
|
49368
49410
|
const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
|
|
49369
49411
|
onMouseEnter,
|
|
49370
49412
|
onMouseLeave
|
|
49371
49413
|
});
|
|
49372
|
-
return /* @__PURE__ */
|
|
49414
|
+
return /* @__PURE__ */ import_react224.default.createElement(import_react224.default.Fragment, null, /* @__PURE__ */ import_react224.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react224.default.createElement(
|
|
49373
49415
|
"span",
|
|
49374
49416
|
{
|
|
49375
49417
|
onMouseEnter: handleEnter,
|
|
@@ -49385,7 +49427,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
49385
49427
|
const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
|
|
49386
49428
|
const handleReaction = propHandleReaction || contextHandleReaction;
|
|
49387
49429
|
if (!hasReactions) return null;
|
|
49388
|
-
return /* @__PURE__ */
|
|
49430
|
+
return /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react224.default.createElement(
|
|
49389
49431
|
"ul",
|
|
49390
49432
|
{
|
|
49391
49433
|
className: "str-chat__simple-reactions-list str-chat__message-reactions",
|
|
@@ -49394,7 +49436,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
49394
49436
|
existingReactions.map(
|
|
49395
49437
|
({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
|
|
49396
49438
|
const tooltipContent = latestReactedUserNames.join(", ");
|
|
49397
|
-
return EmojiComponent && /* @__PURE__ */
|
|
49439
|
+
return EmojiComponent && /* @__PURE__ */ import_react224.default.createElement(
|
|
49398
49440
|
"li",
|
|
49399
49441
|
{
|
|
49400
49442
|
className: (0, import_clsx58.default)("str-chat__simple-reactions-list-item", {
|
|
@@ -49404,19 +49446,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
49404
49446
|
onClick: (event) => handleReaction(reactionType, event),
|
|
49405
49447
|
onKeyUp: (event) => handleReaction(reactionType, event)
|
|
49406
49448
|
},
|
|
49407
|
-
/* @__PURE__ */
|
|
49449
|
+
/* @__PURE__ */ import_react224.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react224.default.createElement(EmojiComponent, null))
|
|
49408
49450
|
);
|
|
49409
49451
|
}
|
|
49410
49452
|
),
|
|
49411
|
-
/* @__PURE__ */
|
|
49453
|
+
/* @__PURE__ */ import_react224.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
|
|
49412
49454
|
));
|
|
49413
49455
|
};
|
|
49414
|
-
var SimpleReactionsList =
|
|
49456
|
+
var SimpleReactionsList = import_react224.default.memo(
|
|
49415
49457
|
UnMemoizedSimpleReactionsList
|
|
49416
49458
|
);
|
|
49417
49459
|
|
|
49418
49460
|
// src/components/Message/MessageEditedTimestamp.tsx
|
|
49419
|
-
var
|
|
49461
|
+
var import_react225 = __toESM(require("react"));
|
|
49420
49462
|
var import_clsx59 = __toESM(require("clsx"));
|
|
49421
49463
|
function MessageEditedTimestamp({
|
|
49422
49464
|
message: propMessage,
|
|
@@ -49432,7 +49474,7 @@ function MessageEditedTimestamp({
|
|
|
49432
49474
|
if (!isMessageEdited(message)) {
|
|
49433
49475
|
return null;
|
|
49434
49476
|
}
|
|
49435
|
-
return /* @__PURE__ */
|
|
49477
|
+
return /* @__PURE__ */ import_react225.default.createElement(
|
|
49436
49478
|
"div",
|
|
49437
49479
|
{
|
|
49438
49480
|
className: (0, import_clsx59.default)(
|
|
@@ -49443,7 +49485,7 @@ function MessageEditedTimestamp({
|
|
|
49443
49485
|
},
|
|
49444
49486
|
t2("Edited"),
|
|
49445
49487
|
" ",
|
|
49446
|
-
/* @__PURE__ */
|
|
49488
|
+
/* @__PURE__ */ import_react225.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
|
|
49447
49489
|
);
|
|
49448
49490
|
}
|
|
49449
49491
|
|
|
@@ -49470,8 +49512,8 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49470
49512
|
} = props;
|
|
49471
49513
|
const { client } = useChatContext("MessageSimple");
|
|
49472
49514
|
const { t: t2 } = useTranslationContext("MessageSimple");
|
|
49473
|
-
const [isBounceDialogOpen, setIsBounceDialogOpen] = (0,
|
|
49474
|
-
const [isEditedTimestampOpen, setEditedTimestampOpen] = (0,
|
|
49515
|
+
const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react226.useState)(false);
|
|
49516
|
+
const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react226.useState)(false);
|
|
49475
49517
|
const {
|
|
49476
49518
|
Attachment: Attachment2 = Attachment,
|
|
49477
49519
|
Avatar: Avatar2 = Avatar,
|
|
@@ -49492,7 +49534,7 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49492
49534
|
} = useComponentContext("MessageSimple");
|
|
49493
49535
|
const hasAttachment = messageHasAttachments(message);
|
|
49494
49536
|
const hasReactions = messageHasReactions(message);
|
|
49495
|
-
const isAIGenerated = (0,
|
|
49537
|
+
const isAIGenerated = (0, import_react226.useMemo)(
|
|
49496
49538
|
() => isMessageAIGenerated?.(message),
|
|
49497
49539
|
[isMessageAIGenerated, message]
|
|
49498
49540
|
);
|
|
@@ -49500,10 +49542,10 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49500
49542
|
return null;
|
|
49501
49543
|
}
|
|
49502
49544
|
if (message.deleted_at || message.type === "deleted") {
|
|
49503
|
-
return /* @__PURE__ */
|
|
49545
|
+
return /* @__PURE__ */ import_react226.default.createElement(MessageDeleted2, { message });
|
|
49504
49546
|
}
|
|
49505
49547
|
if (isMessageBlocked(message)) {
|
|
49506
|
-
return /* @__PURE__ */
|
|
49548
|
+
return /* @__PURE__ */ import_react226.default.createElement(MessageBlocked2, null);
|
|
49507
49549
|
}
|
|
49508
49550
|
const showMetadata = !groupedByUser || endOfGroup;
|
|
49509
49551
|
const showReplyCountButton = !threadList && !!message.reply_count;
|
|
@@ -49537,14 +49579,14 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49537
49579
|
}
|
|
49538
49580
|
);
|
|
49539
49581
|
const poll = message.poll_id && client.polls.fromState(message.poll_id);
|
|
49540
|
-
return /* @__PURE__ */
|
|
49582
|
+
return /* @__PURE__ */ import_react226.default.createElement(import_react226.default.Fragment, null, editing && /* @__PURE__ */ import_react226.default.createElement(
|
|
49541
49583
|
Modal,
|
|
49542
49584
|
{
|
|
49543
49585
|
className: "str-chat__edit-message-modal",
|
|
49544
49586
|
onClose: clearEditingState,
|
|
49545
49587
|
open: editing
|
|
49546
49588
|
},
|
|
49547
|
-
/* @__PURE__ */
|
|
49589
|
+
/* @__PURE__ */ import_react226.default.createElement(
|
|
49548
49590
|
MessageInput,
|
|
49549
49591
|
{
|
|
49550
49592
|
clearEditingState,
|
|
@@ -49555,14 +49597,14 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49555
49597
|
...additionalMessageInputProps
|
|
49556
49598
|
}
|
|
49557
49599
|
)
|
|
49558
|
-
), isBounceDialogOpen && /* @__PURE__ */
|
|
49600
|
+
), isBounceDialogOpen && /* @__PURE__ */ import_react226.default.createElement(
|
|
49559
49601
|
MessageBounceModal,
|
|
49560
49602
|
{
|
|
49561
49603
|
MessageBouncePrompt: MessageBouncePrompt2,
|
|
49562
49604
|
onClose: () => setIsBounceDialogOpen(false),
|
|
49563
49605
|
open: isBounceDialogOpen
|
|
49564
49606
|
}
|
|
49565
|
-
), /* @__PURE__ */
|
|
49607
|
+
), /* @__PURE__ */ import_react226.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react226.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react226.default.createElement(
|
|
49566
49608
|
Avatar2,
|
|
49567
49609
|
{
|
|
49568
49610
|
image: message.user.image,
|
|
@@ -49571,7 +49613,7 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49571
49613
|
onMouseOver: onUserHover,
|
|
49572
49614
|
user: message.user
|
|
49573
49615
|
}
|
|
49574
|
-
), /* @__PURE__ */
|
|
49616
|
+
), /* @__PURE__ */ import_react226.default.createElement(
|
|
49575
49617
|
"div",
|
|
49576
49618
|
{
|
|
49577
49619
|
className: (0, import_clsx60.default)("str-chat__message-inner", {
|
|
@@ -49581,37 +49623,37 @@ var MessageSimpleWithContext = (props) => {
|
|
|
49581
49623
|
onClick: handleClick,
|
|
49582
49624
|
onKeyUp: handleClick
|
|
49583
49625
|
},
|
|
49584
|
-
/* @__PURE__ */
|
|
49585
|
-
/* @__PURE__ */
|
|
49586
|
-
/* @__PURE__ */
|
|
49626
|
+
/* @__PURE__ */ import_react226.default.createElement(MessageActions2, null),
|
|
49627
|
+
/* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react226.default.createElement(ReactionsList2, { reverse: true })),
|
|
49628
|
+
/* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react226.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react226.default.createElement(
|
|
49587
49629
|
Attachment2,
|
|
49588
49630
|
{
|
|
49589
49631
|
actionHandler: handleAction,
|
|
49590
49632
|
attachments: message.attachments
|
|
49591
49633
|
}
|
|
49592
|
-
) : null, isAIGenerated ? /* @__PURE__ */
|
|
49634
|
+
) : null, isAIGenerated ? /* @__PURE__ */ import_react226.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react226.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react226.default.createElement(
|
|
49593
49635
|
MML3,
|
|
49594
49636
|
{
|
|
49595
49637
|
actionHandler: handleAction,
|
|
49596
49638
|
align: isMyMessage() ? "right" : "left",
|
|
49597
49639
|
source: message.mml
|
|
49598
49640
|
}
|
|
49599
|
-
), /* @__PURE__ */
|
|
49600
|
-
), showReplyCountButton && /* @__PURE__ */
|
|
49641
|
+
), /* @__PURE__ */ import_react226.default.createElement(MessageErrorIcon, null))
|
|
49642
|
+
), showReplyCountButton && /* @__PURE__ */ import_react226.default.createElement(
|
|
49601
49643
|
MessageRepliesCountButton2,
|
|
49602
49644
|
{
|
|
49603
49645
|
onClick: handleOpenThread,
|
|
49604
49646
|
reply_count: message.reply_count
|
|
49605
49647
|
}
|
|
49606
|
-
), showMetadata && /* @__PURE__ */
|
|
49648
|
+
), showMetadata && /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react226.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react226.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react226.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
|
|
49607
49649
|
};
|
|
49608
|
-
var MemoizedMessageSimple =
|
|
49650
|
+
var MemoizedMessageSimple = import_react226.default.memo(
|
|
49609
49651
|
MessageSimpleWithContext,
|
|
49610
49652
|
areMessageUIPropsEqual
|
|
49611
49653
|
);
|
|
49612
49654
|
var MessageSimple = (props) => {
|
|
49613
49655
|
const messageContext = useMessageContext("MessageSimple");
|
|
49614
|
-
return /* @__PURE__ */
|
|
49656
|
+
return /* @__PURE__ */ import_react226.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
|
|
49615
49657
|
};
|
|
49616
49658
|
|
|
49617
49659
|
// src/components/Message/Message.tsx
|
|
@@ -49647,11 +49689,11 @@ var MessageWithContext = (props) => {
|
|
|
49647
49689
|
canReply,
|
|
49648
49690
|
isMyMessage
|
|
49649
49691
|
} = userRoles;
|
|
49650
|
-
const messageIsUnread = (0,
|
|
49692
|
+
const messageIsUnread = (0, import_react227.useMemo)(
|
|
49651
49693
|
() => !!(!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())),
|
|
49652
49694
|
[client, isMyMessage, message.created_at, read]
|
|
49653
49695
|
);
|
|
49654
|
-
const messageActionsHandler = (0,
|
|
49696
|
+
const messageActionsHandler = (0, import_react227.useCallback)(
|
|
49655
49697
|
() => getMessageActions(messageActions, {
|
|
49656
49698
|
canDelete,
|
|
49657
49699
|
canEdit,
|
|
@@ -49705,9 +49747,9 @@ var MessageWithContext = (props) => {
|
|
|
49705
49747
|
onUserHover,
|
|
49706
49748
|
setEditingState: setEdit
|
|
49707
49749
|
};
|
|
49708
|
-
return /* @__PURE__ */
|
|
49750
|
+
return /* @__PURE__ */ import_react227.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react227.default.createElement(MessageUIComponent, { groupedByUser }));
|
|
49709
49751
|
};
|
|
49710
|
-
var MemoizedMessage =
|
|
49752
|
+
var MemoizedMessage = import_react227.default.memo(
|
|
49711
49753
|
MessageWithContext,
|
|
49712
49754
|
areMessagePropsEqual
|
|
49713
49755
|
);
|
|
@@ -49774,7 +49816,7 @@ var Message = (props) => {
|
|
|
49774
49816
|
notify: addNotification
|
|
49775
49817
|
});
|
|
49776
49818
|
const highlighted = highlightedMessageId === message.id;
|
|
49777
|
-
return /* @__PURE__ */
|
|
49819
|
+
return /* @__PURE__ */ import_react227.default.createElement(
|
|
49778
49820
|
MemoizedMessage,
|
|
49779
49821
|
{
|
|
49780
49822
|
additionalMessageInputProps: props.additionalMessageInputProps,
|
|
@@ -49826,15 +49868,15 @@ var Message = (props) => {
|
|
|
49826
49868
|
// src/components/MessageList/GiphyPreviewMessage.tsx
|
|
49827
49869
|
var GiphyPreviewMessage = (props) => {
|
|
49828
49870
|
const { message } = props;
|
|
49829
|
-
return /* @__PURE__ */
|
|
49871
|
+
return /* @__PURE__ */ import_react228.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react228.default.createElement(Message, { message }));
|
|
49830
49872
|
};
|
|
49831
49873
|
|
|
49832
49874
|
// src/components/MessageList/MessageList.tsx
|
|
49833
49875
|
var import_clsx62 = __toESM(require("clsx"));
|
|
49834
|
-
var
|
|
49876
|
+
var import_react247 = __toESM(require("react"));
|
|
49835
49877
|
|
|
49836
49878
|
// src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
|
|
49837
|
-
var
|
|
49879
|
+
var import_react229 = require("react");
|
|
49838
49880
|
|
|
49839
49881
|
// src/components/MessageList/utils.ts
|
|
49840
49882
|
var import_nanoid9 = require("nanoid");
|
|
@@ -50041,7 +50083,7 @@ var useEnrichedMessages = (args) => {
|
|
|
50041
50083
|
} = args;
|
|
50042
50084
|
const { client } = useChatContext("useEnrichedMessages");
|
|
50043
50085
|
const { HeaderComponent } = useComponentContext("useEnrichedMessages");
|
|
50044
|
-
const lastRead = (0,
|
|
50086
|
+
const lastRead = (0, import_react229.useMemo)(() => channel.lastRead?.(), [channel]);
|
|
50045
50087
|
const enableDateSeparator = !disableDateSeparator;
|
|
50046
50088
|
let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
|
|
50047
50089
|
enableDateSeparator,
|
|
@@ -50056,7 +50098,7 @@ var useEnrichedMessages = (args) => {
|
|
|
50056
50098
|
messagesWithDates = insertIntro(messagesWithDates, headerPosition);
|
|
50057
50099
|
}
|
|
50058
50100
|
const groupStylesFn = groupStyles || getGroupStyles;
|
|
50059
|
-
const messageGroupStyles = (0,
|
|
50101
|
+
const messageGroupStyles = (0, import_react229.useMemo)(
|
|
50060
50102
|
() => messagesWithDates.reduce((acc, message, i) => {
|
|
50061
50103
|
const style = groupStylesFn(
|
|
50062
50104
|
message,
|
|
@@ -50075,13 +50117,13 @@ var useEnrichedMessages = (args) => {
|
|
|
50075
50117
|
};
|
|
50076
50118
|
|
|
50077
50119
|
// src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
|
|
50078
|
-
var
|
|
50120
|
+
var import_react231 = require("react");
|
|
50079
50121
|
|
|
50080
50122
|
// src/components/MessageList/hooks/useLastReadData.ts
|
|
50081
|
-
var
|
|
50123
|
+
var import_react230 = require("react");
|
|
50082
50124
|
var useLastReadData = (props) => {
|
|
50083
50125
|
const { messages, read, returnAllReadData, userID } = props;
|
|
50084
|
-
return (0,
|
|
50126
|
+
return (0, import_react230.useMemo)(
|
|
50085
50127
|
() => getReadStates(
|
|
50086
50128
|
messages.filter(({ user }) => user?.id === userID),
|
|
50087
50129
|
read,
|
|
@@ -50113,11 +50155,11 @@ var useMessageListElements = (props) => {
|
|
|
50113
50155
|
returnAllReadData,
|
|
50114
50156
|
userID: client.userID
|
|
50115
50157
|
});
|
|
50116
|
-
const lastReceivedMessageId = (0,
|
|
50158
|
+
const lastReceivedMessageId = (0, import_react231.useMemo)(
|
|
50117
50159
|
() => getLastReceived(enrichedMessages),
|
|
50118
50160
|
[enrichedMessages]
|
|
50119
50161
|
);
|
|
50120
|
-
const elements = (0,
|
|
50162
|
+
const elements = (0, import_react231.useMemo)(
|
|
50121
50163
|
() => renderMessages({
|
|
50122
50164
|
channelUnreadUiState,
|
|
50123
50165
|
components,
|
|
@@ -50144,7 +50186,7 @@ var useMessageListElements = (props) => {
|
|
|
50144
50186
|
};
|
|
50145
50187
|
|
|
50146
50188
|
// src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
|
|
50147
|
-
var
|
|
50189
|
+
var import_react232 = require("react");
|
|
50148
50190
|
function useMessageListScrollManager(params) {
|
|
50149
50191
|
const {
|
|
50150
50192
|
loadMoreScrollThreshold,
|
|
@@ -50155,13 +50197,13 @@ function useMessageListScrollManager(params) {
|
|
|
50155
50197
|
showNewMessages
|
|
50156
50198
|
} = params;
|
|
50157
50199
|
const { client } = useChatContext("useMessageListScrollManager");
|
|
50158
|
-
const measures = (0,
|
|
50200
|
+
const measures = (0, import_react232.useRef)({
|
|
50159
50201
|
offsetHeight: 0,
|
|
50160
50202
|
scrollHeight: 0
|
|
50161
50203
|
});
|
|
50162
|
-
const messages = (0,
|
|
50163
|
-
const scrollTop = (0,
|
|
50164
|
-
(0,
|
|
50204
|
+
const messages = (0, import_react232.useRef)(void 0);
|
|
50205
|
+
const scrollTop = (0, import_react232.useRef)(0);
|
|
50206
|
+
(0, import_react232.useLayoutEffect)(() => {
|
|
50165
50207
|
const prevMeasures = measures.current;
|
|
50166
50208
|
const prevMessages = messages.current;
|
|
50167
50209
|
const newMessages = params.messages;
|
|
@@ -50201,7 +50243,7 @@ function useMessageListScrollManager(params) {
|
|
|
50201
50243
|
}
|
|
50202
50244
|
|
|
50203
50245
|
// src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
|
|
50204
|
-
var
|
|
50246
|
+
var import_react233 = require("react");
|
|
50205
50247
|
var useScrollLocationLogic = (params) => {
|
|
50206
50248
|
const {
|
|
50207
50249
|
hasMoreNewer,
|
|
@@ -50211,12 +50253,12 @@ var useScrollLocationLogic = (params) => {
|
|
|
50211
50253
|
scrolledUpThreshold = 200,
|
|
50212
50254
|
suppressAutoscroll
|
|
50213
50255
|
} = params;
|
|
50214
|
-
const [hasNewMessages, setHasNewMessages] = (0,
|
|
50215
|
-
const [wrapperRect, setWrapperRect] = (0,
|
|
50216
|
-
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0,
|
|
50217
|
-
const closeToBottom = (0,
|
|
50218
|
-
const closeToTop = (0,
|
|
50219
|
-
const scrollToBottom = (0,
|
|
50256
|
+
const [hasNewMessages, setHasNewMessages] = (0, import_react233.useState)(false);
|
|
50257
|
+
const [wrapperRect, setWrapperRect] = (0, import_react233.useState)();
|
|
50258
|
+
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react233.useState)(true);
|
|
50259
|
+
const closeToBottom = (0, import_react233.useRef)(false);
|
|
50260
|
+
const closeToTop = (0, import_react233.useRef)(false);
|
|
50261
|
+
const scrollToBottom = (0, import_react233.useCallback)(() => {
|
|
50220
50262
|
if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
|
|
50221
50263
|
return;
|
|
50222
50264
|
}
|
|
@@ -50225,7 +50267,7 @@ var useScrollLocationLogic = (params) => {
|
|
|
50225
50267
|
});
|
|
50226
50268
|
setHasNewMessages(false);
|
|
50227
50269
|
}, [listElement, hasMoreNewer, suppressAutoscroll]);
|
|
50228
|
-
(0,
|
|
50270
|
+
(0, import_react233.useLayoutEffect)(() => {
|
|
50229
50271
|
if (listElement) {
|
|
50230
50272
|
setWrapperRect(listElement.getBoundingClientRect());
|
|
50231
50273
|
scrollToBottom();
|
|
@@ -50245,7 +50287,7 @@ var useScrollLocationLogic = (params) => {
|
|
|
50245
50287
|
scrollToBottom,
|
|
50246
50288
|
showNewMessages: () => setHasNewMessages(true)
|
|
50247
50289
|
});
|
|
50248
|
-
const onScroll = (0,
|
|
50290
|
+
const onScroll = (0, import_react233.useCallback)(
|
|
50249
50291
|
(event) => {
|
|
50250
50292
|
const element4 = event.target;
|
|
50251
50293
|
const scrollTop = element4.scrollTop;
|
|
@@ -50276,22 +50318,22 @@ var useScrollLocationLogic = (params) => {
|
|
|
50276
50318
|
};
|
|
50277
50319
|
|
|
50278
50320
|
// src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
|
|
50279
|
-
var
|
|
50321
|
+
var import_react236 = require("react");
|
|
50280
50322
|
|
|
50281
50323
|
// src/components/MessageList/MessageListMainPanel.tsx
|
|
50282
|
-
var
|
|
50324
|
+
var import_react234 = __toESM(require("react"));
|
|
50283
50325
|
var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
|
|
50284
|
-
var MessageListMainPanel = ({ children }) => /* @__PURE__ */
|
|
50326
|
+
var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react234.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
|
|
50285
50327
|
|
|
50286
50328
|
// src/components/MessageList/UnreadMessagesSeparator.tsx
|
|
50287
|
-
var
|
|
50329
|
+
var import_react235 = __toESM(require("react"));
|
|
50288
50330
|
var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
|
|
50289
50331
|
var UnreadMessagesSeparator = ({
|
|
50290
50332
|
showCount,
|
|
50291
50333
|
unreadCount
|
|
50292
50334
|
}) => {
|
|
50293
50335
|
const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
|
|
50294
|
-
return /* @__PURE__ */
|
|
50336
|
+
return /* @__PURE__ */ import_react235.default.createElement(
|
|
50295
50337
|
"div",
|
|
50296
50338
|
{
|
|
50297
50339
|
className: UNREAD_MESSAGE_SEPARATOR_CLASS,
|
|
@@ -50317,10 +50359,10 @@ var useUnreadMessagesNotification = ({
|
|
|
50317
50359
|
unreadCount
|
|
50318
50360
|
}) => {
|
|
50319
50361
|
const { messages } = useChannelStateContext("UnreadMessagesNotification");
|
|
50320
|
-
const [show, setShow] = (0,
|
|
50321
|
-
const isScrolledAboveTargetTop = (0,
|
|
50362
|
+
const [show, setShow] = (0, import_react236.useState)(false);
|
|
50363
|
+
const isScrolledAboveTargetTop = (0, import_react236.useRef)(false);
|
|
50322
50364
|
const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
|
|
50323
|
-
(0,
|
|
50365
|
+
(0, import_react236.useEffect)(() => {
|
|
50324
50366
|
if (!(unreadCount && intersectionObserverIsSupported)) {
|
|
50325
50367
|
setShow(false);
|
|
50326
50368
|
return;
|
|
@@ -50367,7 +50409,7 @@ var useUnreadMessagesNotification = ({
|
|
|
50367
50409
|
showAlways,
|
|
50368
50410
|
unreadCount
|
|
50369
50411
|
]);
|
|
50370
|
-
(0,
|
|
50412
|
+
(0, import_react236.useEffect)(() => {
|
|
50371
50413
|
if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
|
|
50372
50414
|
setShow(true);
|
|
50373
50415
|
isScrolledAboveTargetTop.current = false;
|
|
@@ -50377,7 +50419,7 @@ var useUnreadMessagesNotification = ({
|
|
|
50377
50419
|
};
|
|
50378
50420
|
|
|
50379
50421
|
// src/components/MessageList/hooks/useMarkRead.ts
|
|
50380
|
-
var
|
|
50422
|
+
var import_react237 = require("react");
|
|
50381
50423
|
var hasReadLastMessage = (channel, userId) => {
|
|
50382
50424
|
const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
|
|
50383
50425
|
const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
|
|
@@ -50391,7 +50433,7 @@ var useMarkRead = ({
|
|
|
50391
50433
|
const { client } = useChatContext("useMarkRead");
|
|
50392
50434
|
const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
|
|
50393
50435
|
const { channel } = useChannelStateContext("useMarkRead");
|
|
50394
|
-
(0,
|
|
50436
|
+
(0, import_react237.useEffect)(() => {
|
|
50395
50437
|
const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
|
|
50396
50438
|
const onVisibilityChange = () => {
|
|
50397
50439
|
if (shouldMarkRead()) markRead();
|
|
@@ -50450,11 +50492,11 @@ function getPreviousLastMessage(messages, newMessage) {
|
|
|
50450
50492
|
}
|
|
50451
50493
|
|
|
50452
50494
|
// src/components/MessageList/MessageNotification.tsx
|
|
50453
|
-
var
|
|
50495
|
+
var import_react238 = __toESM(require("react"));
|
|
50454
50496
|
var UnMemoizedMessageNotification = (props) => {
|
|
50455
50497
|
const { children, onClick, showNotification = true } = props;
|
|
50456
50498
|
if (!showNotification) return null;
|
|
50457
|
-
return /* @__PURE__ */
|
|
50499
|
+
return /* @__PURE__ */ import_react238.default.createElement(
|
|
50458
50500
|
"button",
|
|
50459
50501
|
{
|
|
50460
50502
|
"aria-live": "polite",
|
|
@@ -50465,12 +50507,12 @@ var UnMemoizedMessageNotification = (props) => {
|
|
|
50465
50507
|
children
|
|
50466
50508
|
);
|
|
50467
50509
|
};
|
|
50468
|
-
var MessageNotification =
|
|
50510
|
+
var MessageNotification = import_react238.default.memo(
|
|
50469
50511
|
UnMemoizedMessageNotification
|
|
50470
50512
|
);
|
|
50471
50513
|
|
|
50472
50514
|
// src/components/MessageList/MessageListNotifications.tsx
|
|
50473
|
-
var
|
|
50515
|
+
var import_react239 = __toESM(require("react"));
|
|
50474
50516
|
var MessageListNotifications = (props) => {
|
|
50475
50517
|
const {
|
|
50476
50518
|
hasNewMessages,
|
|
@@ -50483,7 +50525,7 @@ var MessageListNotifications = (props) => {
|
|
|
50483
50525
|
unreadCount
|
|
50484
50526
|
} = props;
|
|
50485
50527
|
const { t: t2 } = useTranslationContext("MessageListNotifications");
|
|
50486
|
-
return /* @__PURE__ */
|
|
50528
|
+
return /* @__PURE__ */ import_react239.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react239.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react239.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react239.default.createElement(
|
|
50487
50529
|
MessageNotification2,
|
|
50488
50530
|
{
|
|
50489
50531
|
isMessageListScrolledToBottom,
|
|
@@ -50497,11 +50539,11 @@ var MessageListNotifications = (props) => {
|
|
|
50497
50539
|
};
|
|
50498
50540
|
|
|
50499
50541
|
// src/components/MessageList/UnreadMessagesNotification.tsx
|
|
50500
|
-
var
|
|
50542
|
+
var import_react241 = __toESM(require("react"));
|
|
50501
50543
|
|
|
50502
50544
|
// src/components/MessageList/icons.tsx
|
|
50503
|
-
var
|
|
50504
|
-
var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */
|
|
50545
|
+
var import_react240 = __toESM(require("react"));
|
|
50546
|
+
var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react240.default.createElement(
|
|
50505
50547
|
"svg",
|
|
50506
50548
|
{
|
|
50507
50549
|
className,
|
|
@@ -50512,7 +50554,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
|
|
|
50512
50554
|
width: "24",
|
|
50513
50555
|
xmlns: "http://www.w3.org/2000/svg"
|
|
50514
50556
|
},
|
|
50515
|
-
/* @__PURE__ */
|
|
50557
|
+
/* @__PURE__ */ import_react240.default.createElement(
|
|
50516
50558
|
"path",
|
|
50517
50559
|
{
|
|
50518
50560
|
d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
|
|
@@ -50520,7 +50562,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
|
|
|
50520
50562
|
}
|
|
50521
50563
|
)
|
|
50522
50564
|
);
|
|
50523
|
-
var CloseIcon2 = () => /* @__PURE__ */
|
|
50565
|
+
var CloseIcon2 = () => /* @__PURE__ */ import_react240.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react240.default.createElement("path", { d: "M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z" }));
|
|
50524
50566
|
|
|
50525
50567
|
// src/components/MessageList/UnreadMessagesNotification.tsx
|
|
50526
50568
|
var UnreadMessagesNotification = ({
|
|
@@ -50532,19 +50574,19 @@ var UnreadMessagesNotification = ({
|
|
|
50532
50574
|
"UnreadMessagesNotification"
|
|
50533
50575
|
);
|
|
50534
50576
|
const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
|
|
50535
|
-
return /* @__PURE__ */
|
|
50577
|
+
return /* @__PURE__ */ import_react241.default.createElement(
|
|
50536
50578
|
"div",
|
|
50537
50579
|
{
|
|
50538
50580
|
className: "str-chat__unread-messages-notification",
|
|
50539
50581
|
"data-testid": "unread-messages-notification"
|
|
50540
50582
|
},
|
|
50541
|
-
/* @__PURE__ */
|
|
50542
|
-
/* @__PURE__ */
|
|
50583
|
+
/* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
|
|
50584
|
+
/* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react241.default.createElement(CloseIcon2, null))
|
|
50543
50585
|
);
|
|
50544
50586
|
};
|
|
50545
50587
|
|
|
50546
50588
|
// src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
|
|
50547
|
-
var
|
|
50589
|
+
var import_react242 = __toESM(require("react"));
|
|
50548
50590
|
var mousewheelListener2 = (event) => {
|
|
50549
50591
|
if (event instanceof WheelEvent && event.deltaY === 1) {
|
|
50550
50592
|
event.preventDefault();
|
|
@@ -50575,10 +50617,10 @@ var InfiniteScroll = (props) => {
|
|
|
50575
50617
|
const loadPreviousPageFn = loadPreviousPage || loadMore;
|
|
50576
50618
|
const hasNextPageFlag = hasNextPage || hasMoreNewer;
|
|
50577
50619
|
const hasPreviousPageFlag = hasPreviousPage || hasMore;
|
|
50578
|
-
const scrollComponent = (0,
|
|
50579
|
-
const previousOffset = (0,
|
|
50580
|
-
const previousReverseOffset = (0,
|
|
50581
|
-
const scrollListenerRef = (0,
|
|
50620
|
+
const scrollComponent = (0, import_react242.useRef)(void 0);
|
|
50621
|
+
const previousOffset = (0, import_react242.useRef)(void 0);
|
|
50622
|
+
const previousReverseOffset = (0, import_react242.useRef)(void 0);
|
|
50623
|
+
const scrollListenerRef = (0, import_react242.useRef)(void 0);
|
|
50582
50624
|
scrollListenerRef.current = () => {
|
|
50583
50625
|
const element5 = scrollComponent.current;
|
|
50584
50626
|
if (!element5 || element5.offsetParent === null) {
|
|
@@ -50602,7 +50644,7 @@ var InfiniteScroll = (props) => {
|
|
|
50602
50644
|
loadNextPageFn();
|
|
50603
50645
|
}
|
|
50604
50646
|
};
|
|
50605
|
-
(0,
|
|
50647
|
+
(0, import_react242.useEffect)(() => {
|
|
50606
50648
|
deprecationAndReplacementWarning(
|
|
50607
50649
|
[
|
|
50608
50650
|
[{ hasMoreNewer }, { hasNextPage }],
|
|
@@ -50613,7 +50655,7 @@ var InfiniteScroll = (props) => {
|
|
|
50613
50655
|
"InfiniteScroll"
|
|
50614
50656
|
);
|
|
50615
50657
|
}, []);
|
|
50616
|
-
(0,
|
|
50658
|
+
(0, import_react242.useEffect)(() => {
|
|
50617
50659
|
const scrollElement = scrollComponent.current?.parentNode;
|
|
50618
50660
|
if (!scrollElement) return;
|
|
50619
50661
|
const scrollListener = () => scrollListenerRef.current?.();
|
|
@@ -50625,7 +50667,7 @@ var InfiniteScroll = (props) => {
|
|
|
50625
50667
|
scrollElement.removeEventListener("resize", scrollListener, useCapture);
|
|
50626
50668
|
};
|
|
50627
50669
|
}, [initialLoad, useCapture]);
|
|
50628
|
-
(0,
|
|
50670
|
+
(0, import_react242.useEffect)(() => {
|
|
50629
50671
|
const scrollElement = scrollComponent.current?.parentNode;
|
|
50630
50672
|
if (scrollElement) {
|
|
50631
50673
|
scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
|
|
@@ -50646,11 +50688,11 @@ var InfiniteScroll = (props) => {
|
|
|
50646
50688
|
if (head) {
|
|
50647
50689
|
childrenArray.unshift(head);
|
|
50648
50690
|
}
|
|
50649
|
-
return
|
|
50691
|
+
return import_react242.default.createElement(element4, attributes, childrenArray);
|
|
50650
50692
|
};
|
|
50651
50693
|
|
|
50652
50694
|
// src/components/TypingIndicator/TypingIndicator.tsx
|
|
50653
|
-
var
|
|
50695
|
+
var import_react243 = __toESM(require("react"));
|
|
50654
50696
|
var import_clsx61 = __toESM(require("clsx"));
|
|
50655
50697
|
var useJoinTypingUsers = (names) => {
|
|
50656
50698
|
const { t: t2 } = useTranslationContext();
|
|
@@ -50688,7 +50730,7 @@ var UnMemoizedTypingIndicator = (props) => {
|
|
|
50688
50730
|
return null;
|
|
50689
50731
|
}
|
|
50690
50732
|
if (!isTypingActive) return null;
|
|
50691
|
-
return /* @__PURE__ */
|
|
50733
|
+
return /* @__PURE__ */ import_react243.default.createElement(
|
|
50692
50734
|
"div",
|
|
50693
50735
|
{
|
|
50694
50736
|
className: (0, import_clsx61.default)("str-chat__typing-indicator", {
|
|
@@ -50696,19 +50738,19 @@ var UnMemoizedTypingIndicator = (props) => {
|
|
|
50696
50738
|
}),
|
|
50697
50739
|
"data-testid": "typing-indicator"
|
|
50698
50740
|
},
|
|
50699
|
-
/* @__PURE__ */
|
|
50700
|
-
/* @__PURE__ */
|
|
50741
|
+
/* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
|
|
50742
|
+
/* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
|
|
50701
50743
|
);
|
|
50702
50744
|
};
|
|
50703
|
-
var TypingIndicator =
|
|
50745
|
+
var TypingIndicator = import_react243.default.memo(
|
|
50704
50746
|
UnMemoizedTypingIndicator
|
|
50705
50747
|
);
|
|
50706
50748
|
|
|
50707
50749
|
// src/components/MessageList/renderMessages.tsx
|
|
50708
|
-
var
|
|
50750
|
+
var import_react246 = __toESM(require("react"));
|
|
50709
50751
|
|
|
50710
50752
|
// src/components/DateSeparator/DateSeparator.tsx
|
|
50711
|
-
var
|
|
50753
|
+
var import_react244 = __toESM(require("react"));
|
|
50712
50754
|
var UnMemoizedDateSeparator = (props) => {
|
|
50713
50755
|
const {
|
|
50714
50756
|
calendar: calendar3,
|
|
@@ -50728,21 +50770,21 @@ var UnMemoizedDateSeparator = (props) => {
|
|
|
50728
50770
|
tDateTimeParser,
|
|
50729
50771
|
timestampTranslationKey: "timestamp/DateSeparator"
|
|
50730
50772
|
});
|
|
50731
|
-
return /* @__PURE__ */
|
|
50773
|
+
return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }));
|
|
50732
50774
|
};
|
|
50733
|
-
var DateSeparator =
|
|
50775
|
+
var DateSeparator = import_react244.default.memo(
|
|
50734
50776
|
UnMemoizedDateSeparator
|
|
50735
50777
|
);
|
|
50736
50778
|
|
|
50737
50779
|
// src/components/EventComponent/EventComponent.tsx
|
|
50738
|
-
var
|
|
50780
|
+
var import_react245 = __toESM(require("react"));
|
|
50739
50781
|
var UnMemoizedEventComponent = (props) => {
|
|
50740
50782
|
const { Avatar: Avatar2 = Avatar, calendar: calendar3, calendarFormats, format, message } = props;
|
|
50741
50783
|
const { t: t2, tDateTimeParser } = useTranslationContext("EventComponent");
|
|
50742
50784
|
const { created_at = "", event, text: text8, type } = message;
|
|
50743
50785
|
const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
|
|
50744
50786
|
if (type === "system")
|
|
50745
|
-
return /* @__PURE__ */
|
|
50787
|
+
return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react245.default.createElement("p", null, text8), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react245.default.createElement("strong", null, getDateString({
|
|
50746
50788
|
...getDateOptions,
|
|
50747
50789
|
calendar: calendar3,
|
|
50748
50790
|
calendarFormats,
|
|
@@ -50753,11 +50795,11 @@ var UnMemoizedEventComponent = (props) => {
|
|
|
50753
50795
|
if (event?.type === "member.removed" || event?.type === "member.added") {
|
|
50754
50796
|
const name2 = event.user?.name || event.user?.id;
|
|
50755
50797
|
const sentence = `${name2} ${event.type === "member.added" ? "has joined the chat" : "was removed from the chat"}`;
|
|
50756
|
-
return /* @__PURE__ */
|
|
50798
|
+
return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react245.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react245.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
|
|
50757
50799
|
}
|
|
50758
50800
|
return null;
|
|
50759
50801
|
};
|
|
50760
|
-
var EventComponent =
|
|
50802
|
+
var EventComponent = import_react245.default.memo(
|
|
50761
50803
|
UnMemoizedEventComponent
|
|
50762
50804
|
);
|
|
50763
50805
|
|
|
@@ -50785,7 +50827,7 @@ function defaultRenderMessages({
|
|
|
50785
50827
|
const message = messages[index3];
|
|
50786
50828
|
if (isDateSeparatorMessage(message)) {
|
|
50787
50829
|
renderedMessages.push(
|
|
50788
|
-
/* @__PURE__ */
|
|
50830
|
+
/* @__PURE__ */ import_react246.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react246.default.createElement(
|
|
50789
50831
|
DateSeparator2,
|
|
50790
50832
|
{
|
|
50791
50833
|
date: message.date,
|
|
@@ -50796,17 +50838,17 @@ function defaultRenderMessages({
|
|
|
50796
50838
|
);
|
|
50797
50839
|
} else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
50798
50840
|
renderedMessages.push(
|
|
50799
|
-
/* @__PURE__ */
|
|
50841
|
+
/* @__PURE__ */ import_react246.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react246.default.createElement(HeaderComponent, null))
|
|
50800
50842
|
);
|
|
50801
50843
|
} else if (message.type === "system") {
|
|
50802
50844
|
renderedMessages.push(
|
|
50803
|
-
/* @__PURE__ */
|
|
50845
|
+
/* @__PURE__ */ import_react246.default.createElement(
|
|
50804
50846
|
"li",
|
|
50805
50847
|
{
|
|
50806
50848
|
"data-message-id": message.id,
|
|
50807
50849
|
key: message.id || message.created_at
|
|
50808
50850
|
},
|
|
50809
|
-
/* @__PURE__ */
|
|
50851
|
+
/* @__PURE__ */ import_react246.default.createElement(MessageSystem, { message })
|
|
50810
50852
|
)
|
|
50811
50853
|
);
|
|
50812
50854
|
} else {
|
|
@@ -50825,19 +50867,19 @@ function defaultRenderMessages({
|
|
|
50825
50867
|
unreadMessageCount: channelUnreadUiState?.unread_messages
|
|
50826
50868
|
});
|
|
50827
50869
|
renderedMessages.push(
|
|
50828
|
-
/* @__PURE__ */
|
|
50870
|
+
/* @__PURE__ */ import_react246.default.createElement(import_react246.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react246.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react246.default.createElement(
|
|
50829
50871
|
UnreadMessagesSeparator2,
|
|
50830
50872
|
{
|
|
50831
50873
|
unreadCount: channelUnreadUiState?.unread_messages
|
|
50832
50874
|
}
|
|
50833
|
-
)), /* @__PURE__ */
|
|
50875
|
+
)), /* @__PURE__ */ import_react246.default.createElement(
|
|
50834
50876
|
"li",
|
|
50835
50877
|
{
|
|
50836
50878
|
className: messageClass,
|
|
50837
50879
|
"data-message-id": message.id,
|
|
50838
50880
|
"data-testid": messageClass
|
|
50839
50881
|
},
|
|
50840
|
-
/* @__PURE__ */
|
|
50882
|
+
/* @__PURE__ */ import_react246.default.createElement(
|
|
50841
50883
|
Message,
|
|
50842
50884
|
{
|
|
50843
50885
|
groupStyles: [groupStyles],
|
|
@@ -50894,8 +50936,8 @@ var MessageListWithContext = (props) => {
|
|
|
50894
50936
|
threadList = false,
|
|
50895
50937
|
unsafeHTML = false
|
|
50896
50938
|
} = props;
|
|
50897
|
-
const [listElement, setListElement] =
|
|
50898
|
-
const [ulElement, setUlElement] =
|
|
50939
|
+
const [listElement, setListElement] = import_react247.default.useState(null);
|
|
50940
|
+
const [ulElement, setUlElement] = import_react247.default.useState(null);
|
|
50899
50941
|
const { customClasses } = useChatContext("MessageList");
|
|
50900
50942
|
const {
|
|
50901
50943
|
EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
|
|
@@ -50983,24 +51025,24 @@ var MessageListWithContext = (props) => {
|
|
|
50983
51025
|
threadList
|
|
50984
51026
|
});
|
|
50985
51027
|
const messageListClass = customClasses?.messageList || "str-chat__list";
|
|
50986
|
-
const loadMore =
|
|
51028
|
+
const loadMore = import_react247.default.useCallback(() => {
|
|
50987
51029
|
if (loadMoreCallback) {
|
|
50988
51030
|
loadMoreCallback(messageLimit);
|
|
50989
51031
|
}
|
|
50990
51032
|
}, [loadMoreCallback, messageLimit]);
|
|
50991
|
-
const loadMoreNewer =
|
|
51033
|
+
const loadMoreNewer = import_react247.default.useCallback(() => {
|
|
50992
51034
|
if (loadMoreNewerCallback) {
|
|
50993
51035
|
loadMoreNewerCallback(messageLimit);
|
|
50994
51036
|
}
|
|
50995
51037
|
}, [loadMoreNewerCallback, messageLimit]);
|
|
50996
|
-
const scrollToBottomFromNotification =
|
|
51038
|
+
const scrollToBottomFromNotification = import_react247.default.useCallback(async () => {
|
|
50997
51039
|
if (hasMoreNewer) {
|
|
50998
51040
|
await jumpToLatestMessage();
|
|
50999
51041
|
} else {
|
|
51000
51042
|
scrollToBottom();
|
|
51001
51043
|
}
|
|
51002
51044
|
}, [scrollToBottom, hasMoreNewer]);
|
|
51003
|
-
|
|
51045
|
+
import_react247.default.useLayoutEffect(() => {
|
|
51004
51046
|
if (highlightedMessageId) {
|
|
51005
51047
|
const element4 = ulElement?.querySelector(
|
|
51006
51048
|
`[data-message-id='${highlightedMessageId}']`
|
|
@@ -51010,12 +51052,12 @@ var MessageListWithContext = (props) => {
|
|
|
51010
51052
|
}, [highlightedMessageId]);
|
|
51011
51053
|
const showEmptyStateIndicator = elements.length === 0 && !threadList;
|
|
51012
51054
|
const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
|
|
51013
|
-
return /* @__PURE__ */
|
|
51055
|
+
return /* @__PURE__ */ import_react247.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react247.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react247.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react247.default.createElement(
|
|
51014
51056
|
UnreadMessagesNotification2,
|
|
51015
51057
|
{
|
|
51016
51058
|
unreadCount: channelUnreadUiState?.unread_messages
|
|
51017
51059
|
}
|
|
51018
|
-
), /* @__PURE__ */
|
|
51060
|
+
), /* @__PURE__ */ import_react247.default.createElement(
|
|
51019
51061
|
"div",
|
|
51020
51062
|
{
|
|
51021
51063
|
className: (0, import_clsx62.default)(messageListClass, customClasses?.threadList),
|
|
@@ -51023,7 +51065,7 @@ var MessageListWithContext = (props) => {
|
|
|
51023
51065
|
ref: setListElement,
|
|
51024
51066
|
tabIndex: 0
|
|
51025
51067
|
},
|
|
51026
|
-
showEmptyStateIndicator ? /* @__PURE__ */
|
|
51068
|
+
showEmptyStateIndicator ? /* @__PURE__ */ import_react247.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react247.default.createElement(
|
|
51027
51069
|
InfiniteScroll,
|
|
51028
51070
|
{
|
|
51029
51071
|
className: "str-chat__message-list-scroll",
|
|
@@ -51032,17 +51074,17 @@ var MessageListWithContext = (props) => {
|
|
|
51032
51074
|
hasPreviousPage: props.hasMore,
|
|
51033
51075
|
head: props.head,
|
|
51034
51076
|
isLoading: props.loadingMore,
|
|
51035
|
-
loader: /* @__PURE__ */
|
|
51077
|
+
loader: /* @__PURE__ */ import_react247.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react247.default.createElement(LoadingIndicator2, { size: 20 })),
|
|
51036
51078
|
loadNextPage: loadMoreNewer,
|
|
51037
51079
|
loadPreviousPage: loadMore,
|
|
51038
51080
|
threshold: loadMoreScrollThreshold,
|
|
51039
51081
|
...restInternalInfiniteScrollProps
|
|
51040
51082
|
},
|
|
51041
|
-
/* @__PURE__ */
|
|
51042
|
-
/* @__PURE__ */
|
|
51043
|
-
/* @__PURE__ */
|
|
51083
|
+
/* @__PURE__ */ import_react247.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
|
|
51084
|
+
/* @__PURE__ */ import_react247.default.createElement(TypingIndicator2, { threadList }),
|
|
51085
|
+
/* @__PURE__ */ import_react247.default.createElement("div", { key: "bottom" })
|
|
51044
51086
|
)
|
|
51045
|
-
))), /* @__PURE__ */
|
|
51087
|
+
))), /* @__PURE__ */ import_react247.default.createElement(
|
|
51046
51088
|
MessageListNotifications2,
|
|
51047
51089
|
{
|
|
51048
51090
|
hasNewMessages,
|
|
@@ -51067,7 +51109,7 @@ var MessageList = (props) => {
|
|
|
51067
51109
|
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
51068
51110
|
...restChannelStateContext
|
|
51069
51111
|
} = useChannelStateContext("MessageList");
|
|
51070
|
-
return /* @__PURE__ */
|
|
51112
|
+
return /* @__PURE__ */ import_react247.default.createElement(
|
|
51071
51113
|
MessageListWithContext,
|
|
51072
51114
|
{
|
|
51073
51115
|
jumpToLatestMessage,
|
|
@@ -51080,16 +51122,16 @@ var MessageList = (props) => {
|
|
|
51080
51122
|
};
|
|
51081
51123
|
|
|
51082
51124
|
// src/components/MessageList/ScrollToBottomButton.tsx
|
|
51083
|
-
var
|
|
51125
|
+
var import_react248 = __toESM(require("react"));
|
|
51084
51126
|
var import_clsx63 = __toESM(require("clsx"));
|
|
51085
51127
|
var UnMemoizedScrollToBottomButton = (props) => {
|
|
51086
51128
|
const { isMessageListScrolledToBottom, onClick, threadList } = props;
|
|
51087
51129
|
const { channel: activeChannel, client } = useChatContext();
|
|
51088
51130
|
const { thread } = useChannelStateContext();
|
|
51089
|
-
const [countUnread, setCountUnread] = (0,
|
|
51090
|
-
const [replyCount, setReplyCount] = (0,
|
|
51131
|
+
const [countUnread, setCountUnread] = (0, import_react248.useState)(activeChannel?.countUnread() || 0);
|
|
51132
|
+
const [replyCount, setReplyCount] = (0, import_react248.useState)(thread?.reply_count || 0);
|
|
51091
51133
|
const observedEvent = threadList ? "message.updated" : "message.new";
|
|
51092
|
-
(0,
|
|
51134
|
+
(0, import_react248.useEffect)(() => {
|
|
51093
51135
|
const handleEvent = (event) => {
|
|
51094
51136
|
const newMessageInAnotherChannel = event.cid !== activeChannel?.cid;
|
|
51095
51137
|
const newMessageIsMine = event.user?.id === client.user?.id;
|
|
@@ -51111,14 +51153,14 @@ var UnMemoizedScrollToBottomButton = (props) => {
|
|
|
51111
51153
|
client.off(observedEvent, handleEvent);
|
|
51112
51154
|
};
|
|
51113
51155
|
}, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
|
|
51114
|
-
(0,
|
|
51156
|
+
(0, import_react248.useEffect)(() => {
|
|
51115
51157
|
if (isMessageListScrolledToBottom) {
|
|
51116
51158
|
setCountUnread(0);
|
|
51117
51159
|
setReplyCount(thread?.reply_count || 0);
|
|
51118
51160
|
}
|
|
51119
51161
|
}, [isMessageListScrolledToBottom, thread]);
|
|
51120
51162
|
if (isMessageListScrolledToBottom) return null;
|
|
51121
|
-
return /* @__PURE__ */
|
|
51163
|
+
return /* @__PURE__ */ import_react248.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react248.default.createElement(
|
|
51122
51164
|
"button",
|
|
51123
51165
|
{
|
|
51124
51166
|
"aria-live": "polite",
|
|
@@ -51129,8 +51171,8 @@ var UnMemoizedScrollToBottomButton = (props) => {
|
|
|
51129
51171
|
"data-testid": "message-notification",
|
|
51130
51172
|
onClick
|
|
51131
51173
|
},
|
|
51132
|
-
/* @__PURE__ */
|
|
51133
|
-
countUnread > 0 && /* @__PURE__ */
|
|
51174
|
+
/* @__PURE__ */ import_react248.default.createElement(ArrowDown, null),
|
|
51175
|
+
countUnread > 0 && /* @__PURE__ */ import_react248.default.createElement(
|
|
51134
51176
|
"div",
|
|
51135
51177
|
{
|
|
51136
51178
|
className: (0, import_clsx63.default)(
|
|
@@ -51143,23 +51185,23 @@ var UnMemoizedScrollToBottomButton = (props) => {
|
|
|
51143
51185
|
)
|
|
51144
51186
|
));
|
|
51145
51187
|
};
|
|
51146
|
-
var ScrollToBottomButton =
|
|
51188
|
+
var ScrollToBottomButton = import_react248.default.memo(
|
|
51147
51189
|
UnMemoizedScrollToBottomButton
|
|
51148
51190
|
);
|
|
51149
51191
|
|
|
51150
51192
|
// src/components/MessageList/VirtualizedMessageList.tsx
|
|
51151
|
-
var
|
|
51193
|
+
var import_react258 = __toESM(require("react"));
|
|
51152
51194
|
var import_react_virtuoso3 = require("react-virtuoso");
|
|
51153
51195
|
|
|
51154
51196
|
// src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
|
|
51155
|
-
var
|
|
51197
|
+
var import_react249 = require("react");
|
|
51156
51198
|
function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
|
|
51157
|
-
const [newMessagesNotification, setNewMessagesNotification] = (0,
|
|
51158
|
-
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0,
|
|
51159
|
-
const didMount = (0,
|
|
51160
|
-
const lastMessageId = (0,
|
|
51161
|
-
const atBottom = (0,
|
|
51162
|
-
(0,
|
|
51199
|
+
const [newMessagesNotification, setNewMessagesNotification] = (0, import_react249.useState)(false);
|
|
51200
|
+
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react249.useState)(true);
|
|
51201
|
+
const didMount = (0, import_react249.useRef)(false);
|
|
51202
|
+
const lastMessageId = (0, import_react249.useRef)("");
|
|
51203
|
+
const atBottom = (0, import_react249.useRef)(false);
|
|
51204
|
+
(0, import_react249.useEffect)(() => {
|
|
51163
51205
|
if (hasMoreNewer) {
|
|
51164
51206
|
setNewMessagesNotification(true);
|
|
51165
51207
|
return;
|
|
@@ -51185,17 +51227,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
|
|
|
51185
51227
|
}
|
|
51186
51228
|
|
|
51187
51229
|
// src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts
|
|
51188
|
-
var
|
|
51230
|
+
var import_react250 = require("react");
|
|
51189
51231
|
var STATUSES_EXCLUDED_FROM_PREPEND = {
|
|
51190
51232
|
failed: true,
|
|
51191
51233
|
sending: true
|
|
51192
51234
|
};
|
|
51193
51235
|
function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
51194
51236
|
const firstRealMessageIndex = hasDateSeparator ? 1 : 0;
|
|
51195
|
-
const firstMessageOnFirstLoadedPage = (0,
|
|
51196
|
-
const previousFirstMessageOnFirstLoadedPage = (0,
|
|
51197
|
-
const previousNumItemsPrepended = (0,
|
|
51198
|
-
const numItemsPrepended = (0,
|
|
51237
|
+
const firstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
|
|
51238
|
+
const previousFirstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
|
|
51239
|
+
const previousNumItemsPrepended = (0, import_react250.useRef)(0);
|
|
51240
|
+
const numItemsPrepended = (0, import_react250.useMemo)(() => {
|
|
51199
51241
|
if (!messages || !messages.length) {
|
|
51200
51242
|
previousNumItemsPrepended.current = 0;
|
|
51201
51243
|
return 0;
|
|
@@ -51225,10 +51267,10 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
|
51225
51267
|
}
|
|
51226
51268
|
|
|
51227
51269
|
// src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts
|
|
51228
|
-
var
|
|
51270
|
+
var import_react251 = require("react");
|
|
51229
51271
|
function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
51230
|
-
const lastFocusedOwnMessage = (0,
|
|
51231
|
-
const initialFocusRegistered = (0,
|
|
51272
|
+
const lastFocusedOwnMessage = (0, import_react251.useRef)("");
|
|
51273
|
+
const initialFocusRegistered = (0, import_react251.useRef)(false);
|
|
51232
51274
|
function recheckForNewOwnMessage() {
|
|
51233
51275
|
if (messages && messages.length > 0) {
|
|
51234
51276
|
const lastMessage = messages[messages.length - 1];
|
|
@@ -51239,7 +51281,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
51239
51281
|
}
|
|
51240
51282
|
return false;
|
|
51241
51283
|
}
|
|
51242
|
-
(0,
|
|
51284
|
+
(0, import_react251.useEffect)(() => {
|
|
51243
51285
|
if (messages && messages.length && !initialFocusRegistered.current) {
|
|
51244
51286
|
initialFocusRegistered.current = true;
|
|
51245
51287
|
recheckForNewOwnMessage();
|
|
@@ -51249,11 +51291,11 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
51249
51291
|
}
|
|
51250
51292
|
|
|
51251
51293
|
// src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts
|
|
51252
|
-
var
|
|
51294
|
+
var import_react252 = require("react");
|
|
51253
51295
|
var useGiphyPreview = (separateGiphyPreview) => {
|
|
51254
|
-
const [giphyPreviewMessage, setGiphyPreviewMessage] = (0,
|
|
51296
|
+
const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react252.useState)();
|
|
51255
51297
|
const { client } = useChatContext("useGiphyPreview");
|
|
51256
|
-
(0,
|
|
51298
|
+
(0, import_react252.useEffect)(() => {
|
|
51257
51299
|
const handleEvent = (event) => {
|
|
51258
51300
|
const { message, user } = event;
|
|
51259
51301
|
if (message?.command === "giphy" && user?.id === client.userID) {
|
|
@@ -51270,13 +51312,13 @@ var useGiphyPreview = (separateGiphyPreview) => {
|
|
|
51270
51312
|
};
|
|
51271
51313
|
|
|
51272
51314
|
// src/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.ts
|
|
51273
|
-
var
|
|
51315
|
+
var import_react253 = require("react");
|
|
51274
51316
|
var useMessageSetKey = ({
|
|
51275
51317
|
messages
|
|
51276
51318
|
}) => {
|
|
51277
|
-
const [messageSetKey, setMessageSetKey] = (0,
|
|
51278
|
-
const firstMessageId = (0,
|
|
51279
|
-
(0,
|
|
51319
|
+
const [messageSetKey, setMessageSetKey] = (0, import_react253.useState)(+/* @__PURE__ */ new Date());
|
|
51320
|
+
const firstMessageId = (0, import_react253.useRef)(void 0);
|
|
51321
|
+
(0, import_react253.useEffect)(() => {
|
|
51280
51322
|
const continuousSet = messages?.find(
|
|
51281
51323
|
(message) => message.id === firstMessageId.current
|
|
51282
51324
|
);
|
|
@@ -51291,24 +51333,24 @@ var useMessageSetKey = ({
|
|
|
51291
51333
|
};
|
|
51292
51334
|
|
|
51293
51335
|
// src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
|
|
51294
|
-
var
|
|
51336
|
+
var import_react254 = require("react");
|
|
51295
51337
|
var useScrollToBottomOnNewMessage = ({
|
|
51296
51338
|
messages,
|
|
51297
51339
|
scrollToBottom,
|
|
51298
51340
|
scrollToLatestMessageOnFocus
|
|
51299
51341
|
}) => {
|
|
51300
|
-
const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0,
|
|
51301
|
-
const scrollToBottomIfConfigured = (0,
|
|
51342
|
+
const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react254.useState)(false);
|
|
51343
|
+
const scrollToBottomIfConfigured = (0, import_react254.useRef)(void 0);
|
|
51302
51344
|
scrollToBottomIfConfigured.current = (event) => {
|
|
51303
51345
|
if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
|
|
51304
51346
|
return;
|
|
51305
51347
|
}
|
|
51306
51348
|
setTimeout(scrollToBottom, 100);
|
|
51307
51349
|
};
|
|
51308
|
-
(0,
|
|
51350
|
+
(0, import_react254.useEffect)(() => {
|
|
51309
51351
|
setNewMessagesReceivedInBackground(true);
|
|
51310
51352
|
}, [messages]);
|
|
51311
|
-
(0,
|
|
51353
|
+
(0, import_react254.useEffect)(() => {
|
|
51312
51354
|
const handleFocus = (event) => {
|
|
51313
51355
|
scrollToBottomIfConfigured.current?.(event);
|
|
51314
51356
|
};
|
|
@@ -51327,14 +51369,14 @@ var useScrollToBottomOnNewMessage = ({
|
|
|
51327
51369
|
};
|
|
51328
51370
|
|
|
51329
51371
|
// src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
|
|
51330
|
-
var
|
|
51372
|
+
var import_react255 = require("react");
|
|
51331
51373
|
var useUnreadMessagesNotificationVirtualized = ({
|
|
51332
51374
|
lastRead,
|
|
51333
51375
|
showAlways,
|
|
51334
51376
|
unreadCount
|
|
51335
51377
|
}) => {
|
|
51336
|
-
const [show, setShow] = (0,
|
|
51337
|
-
const toggleShowUnreadMessagesNotification = (0,
|
|
51378
|
+
const [show, setShow] = (0, import_react255.useState)(false);
|
|
51379
|
+
const toggleShowUnreadMessagesNotification = (0, import_react255.useCallback)(
|
|
51338
51380
|
(renderedMessages) => {
|
|
51339
51381
|
if (!unreadCount) return;
|
|
51340
51382
|
const firstRenderedMessage = renderedMessages[0];
|
|
@@ -51348,7 +51390,7 @@ var useUnreadMessagesNotificationVirtualized = ({
|
|
|
51348
51390
|
},
|
|
51349
51391
|
[lastRead, showAlways, unreadCount]
|
|
51350
51392
|
);
|
|
51351
|
-
(0,
|
|
51393
|
+
(0, import_react255.useEffect)(() => {
|
|
51352
51394
|
if (!unreadCount) setShow(false);
|
|
51353
51395
|
}, [unreadCount]);
|
|
51354
51396
|
return { show, toggleShowUnreadMessagesNotification };
|
|
@@ -51357,7 +51399,7 @@ var useUnreadMessagesNotificationVirtualized = ({
|
|
|
51357
51399
|
// src/components/MessageList/VirtualizedMessageListComponents.tsx
|
|
51358
51400
|
var import_clsx64 = __toESM(require("clsx"));
|
|
51359
51401
|
var import_lodash21 = __toESM(require("lodash.throttle"));
|
|
51360
|
-
var
|
|
51402
|
+
var import_react256 = __toESM(require("react"));
|
|
51361
51403
|
var PREPEND_OFFSET = 10 ** 7;
|
|
51362
51404
|
function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
|
|
51363
51405
|
return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
|
|
@@ -51378,10 +51420,10 @@ var Item3 = ({
|
|
|
51378
51420
|
context,
|
|
51379
51421
|
...props
|
|
51380
51422
|
}) => {
|
|
51381
|
-
if (!context) return /* @__PURE__ */
|
|
51423
|
+
if (!context) return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null);
|
|
51382
51424
|
const message = context.processedMessages[calculateItemIndex(props["data-item-index"], context.numItemsPrepended)];
|
|
51383
51425
|
const groupStyles = context.messageGroupStyles[message.id];
|
|
51384
|
-
return /* @__PURE__ */
|
|
51426
|
+
return /* @__PURE__ */ import_react256.default.createElement(
|
|
51385
51427
|
"div",
|
|
51386
51428
|
{
|
|
51387
51429
|
...props,
|
|
@@ -51395,13 +51437,13 @@ var Header = ({
|
|
|
51395
51437
|
context
|
|
51396
51438
|
}) => {
|
|
51397
51439
|
const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext("VirtualizedMessageListHeader");
|
|
51398
|
-
return /* @__PURE__ */
|
|
51440
|
+
return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react256.default.createElement(LoadingIndicator2, { size: 20 })));
|
|
51399
51441
|
};
|
|
51400
51442
|
var EmptyPlaceholder = ({
|
|
51401
51443
|
context
|
|
51402
51444
|
}) => {
|
|
51403
51445
|
const { EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator } = useComponentContext("VirtualizedMessageList");
|
|
51404
|
-
return /* @__PURE__ */
|
|
51446
|
+
return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react256.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
|
|
51405
51447
|
};
|
|
51406
51448
|
var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
51407
51449
|
const {
|
|
@@ -51437,12 +51479,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
51437
51479
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
51438
51480
|
}
|
|
51439
51481
|
const message = messageList[streamMessageIndex];
|
|
51440
|
-
if (!message) return /* @__PURE__ */
|
|
51482
|
+
if (!message) return /* @__PURE__ */ import_react256.default.createElement("div", { style: { height: "1px" } });
|
|
51441
51483
|
if (isDateSeparatorMessage(message)) {
|
|
51442
|
-
return DateSeparator2 ? /* @__PURE__ */
|
|
51484
|
+
return DateSeparator2 ? /* @__PURE__ */ import_react256.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
|
|
51443
51485
|
}
|
|
51444
51486
|
if (message.type === "system") {
|
|
51445
|
-
return MessageSystem ? /* @__PURE__ */
|
|
51487
|
+
return MessageSystem ? /* @__PURE__ */ import_react256.default.createElement(MessageSystem, { message }) : null;
|
|
51446
51488
|
}
|
|
51447
51489
|
const groupedByUser = shouldGroupByUser && streamMessageIndex > 0 && message.user?.id === messageList[streamMessageIndex - 1].user?.id;
|
|
51448
51490
|
const maybePrevMessage = messageList[streamMessageIndex - 1];
|
|
@@ -51458,7 +51500,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
51458
51500
|
previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
|
|
51459
51501
|
unreadMessageCount
|
|
51460
51502
|
});
|
|
51461
|
-
return /* @__PURE__ */
|
|
51503
|
+
return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react256.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react256.default.createElement(
|
|
51462
51504
|
Message,
|
|
51463
51505
|
{
|
|
51464
51506
|
additionalMessageInputProps,
|
|
@@ -51485,12 +51527,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
51485
51527
|
};
|
|
51486
51528
|
|
|
51487
51529
|
// src/context/VirtualizedMessageListContext.tsx
|
|
51488
|
-
var
|
|
51489
|
-
var VirtualizedMessageListContext = (0,
|
|
51530
|
+
var import_react257 = __toESM(require("react"));
|
|
51531
|
+
var VirtualizedMessageListContext = (0, import_react257.createContext)(void 0);
|
|
51490
51532
|
var VirtualizedMessageListContextProvider = ({
|
|
51491
51533
|
children,
|
|
51492
51534
|
value
|
|
51493
|
-
}) => /* @__PURE__ */
|
|
51535
|
+
}) => /* @__PURE__ */ import_react257.default.createElement(
|
|
51494
51536
|
VirtualizedMessageListContext.Provider,
|
|
51495
51537
|
{
|
|
51496
51538
|
value
|
|
@@ -51505,7 +51547,7 @@ function captureResizeObserverExceededError(e2) {
|
|
|
51505
51547
|
}
|
|
51506
51548
|
}
|
|
51507
51549
|
function useCaptureResizeObserverExceededError() {
|
|
51508
|
-
(0,
|
|
51550
|
+
(0, import_react258.useEffect)(() => {
|
|
51509
51551
|
window.addEventListener("error", captureResizeObserverExceededError);
|
|
51510
51552
|
return () => {
|
|
51511
51553
|
window.removeEventListener("error", captureResizeObserverExceededError);
|
|
@@ -51591,15 +51633,15 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51591
51633
|
const { client, customClasses } = useChatContext(
|
|
51592
51634
|
"VirtualizedMessageList"
|
|
51593
51635
|
);
|
|
51594
|
-
const virtuoso = (0,
|
|
51595
|
-
const lastRead = (0,
|
|
51636
|
+
const virtuoso = (0, import_react258.useRef)(null);
|
|
51637
|
+
const lastRead = (0, import_react258.useMemo)(() => channel.lastRead?.(), [channel]);
|
|
51596
51638
|
const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } = useUnreadMessagesNotificationVirtualized({
|
|
51597
51639
|
lastRead: channelUnreadUiState?.last_read,
|
|
51598
51640
|
showAlways: !!showUnreadNotificationAlways,
|
|
51599
51641
|
unreadCount: channelUnreadUiState?.unread_messages ?? 0
|
|
51600
51642
|
});
|
|
51601
51643
|
const { giphyPreviewMessage, setGiphyPreviewMessage } = useGiphyPreview(separateGiphyPreview);
|
|
51602
|
-
const processedMessages = (0,
|
|
51644
|
+
const processedMessages = (0, import_react258.useMemo)(() => {
|
|
51603
51645
|
if (typeof messages === "undefined") {
|
|
51604
51646
|
return [];
|
|
51605
51647
|
}
|
|
@@ -51631,12 +51673,12 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51631
51673
|
returnAllReadData,
|
|
51632
51674
|
userID: client.userID
|
|
51633
51675
|
});
|
|
51634
|
-
const lastReceivedMessageId = (0,
|
|
51676
|
+
const lastReceivedMessageId = (0, import_react258.useMemo)(
|
|
51635
51677
|
() => getLastReceived(processedMessages),
|
|
51636
51678
|
[processedMessages]
|
|
51637
51679
|
);
|
|
51638
51680
|
const groupStylesFn = groupStyles || getGroupStyles;
|
|
51639
|
-
const messageGroupStyles = (0,
|
|
51681
|
+
const messageGroupStyles = (0, import_react258.useMemo)(
|
|
51640
51682
|
() => processedMessages.reduce((acc, message, i) => {
|
|
51641
51683
|
const style = groupStylesFn(
|
|
51642
51684
|
message,
|
|
@@ -51669,7 +51711,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51669
51711
|
messageListIsThread: !!threadList,
|
|
51670
51712
|
wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id
|
|
51671
51713
|
});
|
|
51672
|
-
const scrollToBottom = (0,
|
|
51714
|
+
const scrollToBottom = (0, import_react258.useCallback)(async () => {
|
|
51673
51715
|
if (hasMoreNewer) {
|
|
51674
51716
|
await jumpToLatestMessage();
|
|
51675
51717
|
return;
|
|
@@ -51701,7 +51743,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51701
51743
|
processedMessages,
|
|
51702
51744
|
client.userID
|
|
51703
51745
|
);
|
|
51704
|
-
const handleItemsRendered = (0,
|
|
51746
|
+
const handleItemsRendered = (0, import_react258.useMemo)(
|
|
51705
51747
|
() => makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages),
|
|
51706
51748
|
[processedMessages, toggleShowUnreadMessagesNotification]
|
|
51707
51749
|
);
|
|
@@ -51714,7 +51756,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51714
51756
|
}
|
|
51715
51757
|
return isAtBottom ? stickToBottomScrollBehavior : false;
|
|
51716
51758
|
};
|
|
51717
|
-
const computeItemKey2 = (0,
|
|
51759
|
+
const computeItemKey2 = (0, import_react258.useCallback)(
|
|
51718
51760
|
(index3, _, { numItemsPrepended: numItemsPrepended2, processedMessages: processedMessages2 }) => processedMessages2[calculateItemIndex(index3, numItemsPrepended2)].id,
|
|
51719
51761
|
[]
|
|
51720
51762
|
);
|
|
@@ -51731,7 +51773,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51731
51773
|
loadMore?.(messageLimit);
|
|
51732
51774
|
}
|
|
51733
51775
|
};
|
|
51734
|
-
(0,
|
|
51776
|
+
(0, import_react258.useEffect)(() => {
|
|
51735
51777
|
let scrollTimeout;
|
|
51736
51778
|
if (highlightedMessageId) {
|
|
51737
51779
|
const index3 = findMessageIndex(processedMessages, highlightedMessageId);
|
|
@@ -51747,17 +51789,17 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51747
51789
|
}, [highlightedMessageId, processedMessages]);
|
|
51748
51790
|
if (!processedMessages) return null;
|
|
51749
51791
|
const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
|
|
51750
|
-
return /* @__PURE__ */
|
|
51792
|
+
return /* @__PURE__ */ import_react258.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react258.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react258.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react258.default.createElement(
|
|
51751
51793
|
UnreadMessagesNotification2,
|
|
51752
51794
|
{
|
|
51753
51795
|
unreadCount: channelUnreadUiState?.unread_messages
|
|
51754
51796
|
}
|
|
51755
|
-
), /* @__PURE__ */
|
|
51797
|
+
), /* @__PURE__ */ import_react258.default.createElement(
|
|
51756
51798
|
"div",
|
|
51757
51799
|
{
|
|
51758
51800
|
className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
|
|
51759
51801
|
},
|
|
51760
|
-
/* @__PURE__ */
|
|
51802
|
+
/* @__PURE__ */ import_react258.default.createElement(
|
|
51761
51803
|
import_react_virtuoso3.Virtuoso,
|
|
51762
51804
|
{
|
|
51763
51805
|
atBottomStateChange,
|
|
@@ -51823,7 +51865,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51823
51865
|
...defaultItemHeight ? { defaultItemHeight } : {}
|
|
51824
51866
|
}
|
|
51825
51867
|
)
|
|
51826
|
-
)), TypingIndicator2 && /* @__PURE__ */
|
|
51868
|
+
)), TypingIndicator2 && /* @__PURE__ */ import_react258.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react258.default.createElement(
|
|
51827
51869
|
MessageListNotifications2,
|
|
51828
51870
|
{
|
|
51829
51871
|
hasNewMessages: newMessagesNotification,
|
|
@@ -51835,7 +51877,7 @@ var VirtualizedMessageListWithContext = (props) => {
|
|
|
51835
51877
|
threadList,
|
|
51836
51878
|
unreadCount: threadList ? void 0 : channelUnreadUiState?.unread_messages
|
|
51837
51879
|
}
|
|
51838
|
-
), giphyPreviewMessage && /* @__PURE__ */
|
|
51880
|
+
), giphyPreviewMessage && /* @__PURE__ */ import_react258.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
|
|
51839
51881
|
};
|
|
51840
51882
|
function VirtualizedMessageList(props) {
|
|
51841
51883
|
const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext("VirtualizedMessageList");
|
|
@@ -51853,7 +51895,7 @@ function VirtualizedMessageList(props) {
|
|
|
51853
51895
|
suppressAutoscroll
|
|
51854
51896
|
} = useChannelStateContext("VirtualizedMessageList");
|
|
51855
51897
|
const messages = props.messages || contextMessages;
|
|
51856
|
-
return /* @__PURE__ */
|
|
51898
|
+
return /* @__PURE__ */ import_react258.default.createElement(
|
|
51857
51899
|
VirtualizedMessageListWithContext,
|
|
51858
51900
|
{
|
|
51859
51901
|
channel,
|
|
@@ -52059,7 +52101,7 @@ var ChannelContainer = ({
|
|
|
52059
52101
|
customClasses
|
|
52060
52102
|
});
|
|
52061
52103
|
const className = (0, import_clsx65.default)(chatClass, theme, channelClass, additionalClassName);
|
|
52062
|
-
return /* @__PURE__ */
|
|
52104
|
+
return /* @__PURE__ */ import_react259.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
|
|
52063
52105
|
};
|
|
52064
52106
|
var UnMemoizedChannel = (props) => {
|
|
52065
52107
|
const {
|
|
@@ -52071,15 +52113,15 @@ var UnMemoizedChannel = (props) => {
|
|
|
52071
52113
|
const { channel: contextChannel, channelsQueryState } = useChatContext("Channel");
|
|
52072
52114
|
const channel = propsChannel || contextChannel;
|
|
52073
52115
|
if (channelsQueryState.queryInProgress === "reload" && LoadingIndicator2) {
|
|
52074
|
-
return /* @__PURE__ */
|
|
52116
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
|
|
52075
52117
|
}
|
|
52076
52118
|
if (channelsQueryState.error && LoadingErrorIndicator2) {
|
|
52077
|
-
return /* @__PURE__ */
|
|
52119
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
|
|
52078
52120
|
}
|
|
52079
52121
|
if (!channel?.cid) {
|
|
52080
|
-
return /* @__PURE__ */
|
|
52122
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
|
|
52081
52123
|
}
|
|
52082
|
-
return /* @__PURE__ */
|
|
52124
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
|
|
52083
52125
|
};
|
|
52084
52126
|
var ChannelInner = (props) => {
|
|
52085
52127
|
const {
|
|
@@ -52105,7 +52147,7 @@ var ChannelInner = (props) => {
|
|
|
52105
52147
|
optionalMessageInputProps = {},
|
|
52106
52148
|
skipMessageDataMemoization
|
|
52107
52149
|
} = props;
|
|
52108
|
-
const channelQueryOptions = (0,
|
|
52150
|
+
const channelQueryOptions = (0, import_react259.useMemo)(
|
|
52109
52151
|
() => (0, import_lodash23.default)(propChannelQueryOptions, {
|
|
52110
52152
|
messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
|
|
52111
52153
|
}),
|
|
@@ -52116,13 +52158,13 @@ var ChannelInner = (props) => {
|
|
|
52116
52158
|
const chatContainerClass = getChatContainerClass(customClasses?.chatContainer);
|
|
52117
52159
|
const windowsEmojiClass = useImageFlagEmojisOnWindowsClass();
|
|
52118
52160
|
const thread = useThreadContext();
|
|
52119
|
-
const [channelConfig, setChannelConfig] = (0,
|
|
52120
|
-
const [notifications, setNotifications] = (0,
|
|
52121
|
-
const [quotedMessage, setQuotedMessage] = (0,
|
|
52122
|
-
const [channelUnreadUiState, _setChannelUnreadUiState] = (0,
|
|
52123
|
-
const notificationTimeouts = (0,
|
|
52124
|
-
const channelReducer = (0,
|
|
52125
|
-
const [state, dispatch] = (0,
|
|
52161
|
+
const [channelConfig, setChannelConfig] = (0, import_react259.useState)(channel.getConfig());
|
|
52162
|
+
const [notifications, setNotifications] = (0, import_react259.useState)([]);
|
|
52163
|
+
const [quotedMessage, setQuotedMessage] = (0, import_react259.useState)();
|
|
52164
|
+
const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react259.useState)();
|
|
52165
|
+
const notificationTimeouts = (0, import_react259.useRef)([]);
|
|
52166
|
+
const channelReducer = (0, import_react259.useMemo)(() => makeChannelReducer(), []);
|
|
52167
|
+
const [state, dispatch] = (0, import_react259.useReducer)(
|
|
52126
52168
|
channelReducer,
|
|
52127
52169
|
// channel.initialized === false if client.channel().query() was not called, e.g. ChannelList is not used
|
|
52128
52170
|
// => Channel will call channel.watch() in useLayoutEffect => state.loading is used to signal the watch() call state
|
|
@@ -52134,10 +52176,10 @@ var ChannelInner = (props) => {
|
|
|
52134
52176
|
);
|
|
52135
52177
|
const jumpToMessageFromSearch = useSearchFocusedMessage();
|
|
52136
52178
|
const isMounted = useIsMounted();
|
|
52137
|
-
const originalTitle = (0,
|
|
52138
|
-
const lastRead = (0,
|
|
52139
|
-
const online = (0,
|
|
52140
|
-
const clearHighlightedMessageTimeoutId = (0,
|
|
52179
|
+
const originalTitle = (0, import_react259.useRef)("");
|
|
52180
|
+
const lastRead = (0, import_react259.useRef)(void 0);
|
|
52181
|
+
const online = (0, import_react259.useRef)(true);
|
|
52182
|
+
const clearHighlightedMessageTimeoutId = (0, import_react259.useRef)(
|
|
52141
52183
|
null
|
|
52142
52184
|
);
|
|
52143
52185
|
const channelCapabilitiesArray = channel.data?.own_capabilities;
|
|
@@ -52149,14 +52191,14 @@ var ChannelInner = (props) => {
|
|
|
52149
52191
|
trailing: true
|
|
52150
52192
|
}
|
|
52151
52193
|
);
|
|
52152
|
-
const setChannelUnreadUiState = (0,
|
|
52194
|
+
const setChannelUnreadUiState = (0, import_react259.useMemo)(
|
|
52153
52195
|
() => (0, import_lodash24.default)(_setChannelUnreadUiState, 200, {
|
|
52154
52196
|
leading: true,
|
|
52155
52197
|
trailing: false
|
|
52156
52198
|
}),
|
|
52157
52199
|
[]
|
|
52158
52200
|
);
|
|
52159
|
-
const markRead = (0,
|
|
52201
|
+
const markRead = (0, import_react259.useMemo)(
|
|
52160
52202
|
() => (0, import_lodash24.default)(
|
|
52161
52203
|
async (options) => {
|
|
52162
52204
|
const { updateChannelUiUnreadState = true } = options ?? {};
|
|
@@ -52259,7 +52301,7 @@ var ChannelInner = (props) => {
|
|
|
52259
52301
|
}
|
|
52260
52302
|
throttledCopyStateFromChannel();
|
|
52261
52303
|
};
|
|
52262
|
-
(0,
|
|
52304
|
+
(0, import_react259.useLayoutEffect)(() => {
|
|
52263
52305
|
let errored = false;
|
|
52264
52306
|
let done = false;
|
|
52265
52307
|
(async () => {
|
|
@@ -52325,12 +52367,12 @@ var ChannelInner = (props) => {
|
|
|
52325
52367
|
channelConfig?.read_events,
|
|
52326
52368
|
initializeOnMount
|
|
52327
52369
|
]);
|
|
52328
|
-
(0,
|
|
52370
|
+
(0, import_react259.useEffect)(() => {
|
|
52329
52371
|
if (!state.thread) return;
|
|
52330
52372
|
const message = state.messages?.find((m) => m.id === state.thread?.id);
|
|
52331
52373
|
if (message) dispatch({ message, type: "setThread" });
|
|
52332
52374
|
}, [state.messages, state.thread]);
|
|
52333
|
-
const handleHighlightedMessageChange = (0,
|
|
52375
|
+
const handleHighlightedMessageChange = (0, import_react259.useCallback)(
|
|
52334
52376
|
({
|
|
52335
52377
|
highlightDuration,
|
|
52336
52378
|
highlightedMessageId
|
|
@@ -52353,15 +52395,15 @@ var ChannelInner = (props) => {
|
|
|
52353
52395
|
},
|
|
52354
52396
|
[channel, searchController]
|
|
52355
52397
|
);
|
|
52356
|
-
(0,
|
|
52398
|
+
(0, import_react259.useEffect)(() => {
|
|
52357
52399
|
if (!jumpToMessageFromSearch?.id) return;
|
|
52358
52400
|
handleHighlightedMessageChange({ highlightedMessageId: jumpToMessageFromSearch.id });
|
|
52359
52401
|
}, [jumpToMessageFromSearch, handleHighlightedMessageChange]);
|
|
52360
|
-
const addNotification = (0,
|
|
52402
|
+
const addNotification = (0, import_react259.useMemo)(
|
|
52361
52403
|
() => makeAddNotifications(setNotifications, notificationTimeouts.current),
|
|
52362
52404
|
[]
|
|
52363
52405
|
);
|
|
52364
|
-
const loadMoreFinished = (0,
|
|
52406
|
+
const loadMoreFinished = (0, import_react259.useCallback)(
|
|
52365
52407
|
(0, import_lodash22.default)(
|
|
52366
52408
|
(hasMore, messages) => {
|
|
52367
52409
|
if (!isMounted.current) return;
|
|
@@ -52422,7 +52464,7 @@ var ChannelInner = (props) => {
|
|
|
52422
52464
|
});
|
|
52423
52465
|
return queryResponse.messages.length;
|
|
52424
52466
|
};
|
|
52425
|
-
const jumpToMessage = (0,
|
|
52467
|
+
const jumpToMessage = (0, import_react259.useCallback)(
|
|
52426
52468
|
async (messageId, messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
|
|
52427
52469
|
dispatch({ loadingMore: true, type: "setLoadingMore" });
|
|
52428
52470
|
await channel.state.loadMessageIntoState(messageId, void 0, messageLimit);
|
|
@@ -52434,14 +52476,14 @@ var ChannelInner = (props) => {
|
|
|
52434
52476
|
},
|
|
52435
52477
|
[channel, handleHighlightedMessageChange, loadMoreFinished]
|
|
52436
52478
|
);
|
|
52437
|
-
const jumpToLatestMessage = (0,
|
|
52479
|
+
const jumpToLatestMessage = (0, import_react259.useCallback)(async () => {
|
|
52438
52480
|
await channel.state.loadMessageIntoState("latest");
|
|
52439
52481
|
loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
|
|
52440
52482
|
dispatch({
|
|
52441
52483
|
type: "jumpToLatestMessage"
|
|
52442
52484
|
});
|
|
52443
52485
|
}, [channel, loadMoreFinished]);
|
|
52444
|
-
const jumpToFirstUnreadMessage = (0,
|
|
52486
|
+
const jumpToFirstUnreadMessage = (0, import_react259.useCallback)(
|
|
52445
52487
|
async (queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
|
|
52446
52488
|
if (!channelUnreadUiState?.unread_messages) return;
|
|
52447
52489
|
let lastReadMessageId = channelUnreadUiState?.last_read_message_id;
|
|
@@ -52564,7 +52606,7 @@ var ChannelInner = (props) => {
|
|
|
52564
52606
|
channelUnreadUiState
|
|
52565
52607
|
]
|
|
52566
52608
|
);
|
|
52567
|
-
const deleteMessage = (0,
|
|
52609
|
+
const deleteMessage = (0, import_react259.useCallback)(
|
|
52568
52610
|
async (message) => {
|
|
52569
52611
|
if (!message?.id) {
|
|
52570
52612
|
throw new Error("Cannot delete a message - missing message ID.");
|
|
@@ -52721,7 +52763,7 @@ var ChannelInner = (props) => {
|
|
|
52721
52763
|
event?.preventDefault();
|
|
52722
52764
|
dispatch({ type: "closeThread" });
|
|
52723
52765
|
};
|
|
52724
|
-
const loadMoreThreadFinished = (0,
|
|
52766
|
+
const loadMoreThreadFinished = (0, import_react259.useCallback)(
|
|
52725
52767
|
(0, import_lodash22.default)(
|
|
52726
52768
|
(threadHasMore, threadMessages) => {
|
|
52727
52769
|
dispatch({
|
|
@@ -52785,7 +52827,7 @@ var ChannelInner = (props) => {
|
|
|
52785
52827
|
videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration,
|
|
52786
52828
|
watcher_count: state.watcherCount
|
|
52787
52829
|
});
|
|
52788
|
-
const channelActionContextValue = (0,
|
|
52830
|
+
const channelActionContextValue = (0, import_react259.useMemo)(
|
|
52789
52831
|
() => ({
|
|
52790
52832
|
addNotification,
|
|
52791
52833
|
closeThread,
|
|
@@ -52826,7 +52868,7 @@ var ChannelInner = (props) => {
|
|
|
52826
52868
|
setChannelUnreadUiState
|
|
52827
52869
|
]
|
|
52828
52870
|
);
|
|
52829
|
-
const componentContextValue = (0,
|
|
52871
|
+
const componentContextValue = (0, import_react259.useMemo)(
|
|
52830
52872
|
() => ({
|
|
52831
52873
|
Attachment: props.Attachment,
|
|
52832
52874
|
AttachmentPreviewList: props.AttachmentPreviewList,
|
|
@@ -52958,26 +53000,26 @@ var ChannelInner = (props) => {
|
|
|
52958
53000
|
typing
|
|
52959
53001
|
});
|
|
52960
53002
|
if (state.error) {
|
|
52961
|
-
return /* @__PURE__ */
|
|
53003
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: state.error }));
|
|
52962
53004
|
}
|
|
52963
53005
|
if (state.loading) {
|
|
52964
|
-
return /* @__PURE__ */
|
|
53006
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
|
|
52965
53007
|
}
|
|
52966
53008
|
if (!channel.watch) {
|
|
52967
|
-
return /* @__PURE__ */
|
|
53009
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement("div", null, t2("Channel Missing")));
|
|
52968
53010
|
}
|
|
52969
|
-
return /* @__PURE__ */
|
|
53011
|
+
return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react259.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react259.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react259.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react259.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react259.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(import_react259.default.Fragment, null, children)))))));
|
|
52970
53012
|
};
|
|
52971
|
-
var Channel =
|
|
53013
|
+
var Channel = import_react259.default.memo(UnMemoizedChannel);
|
|
52972
53014
|
|
|
52973
53015
|
// src/components/ChannelHeader/ChannelHeader.tsx
|
|
52974
|
-
var
|
|
53016
|
+
var import_react261 = __toESM(require("react"));
|
|
52975
53017
|
|
|
52976
53018
|
// src/components/ChannelHeader/icons.tsx
|
|
52977
|
-
var
|
|
53019
|
+
var import_react260 = __toESM(require("react"));
|
|
52978
53020
|
var MenuIcon2 = ({ title }) => {
|
|
52979
53021
|
const { t: t2 } = useTranslationContext("MenuIcon");
|
|
52980
|
-
return /* @__PURE__ */
|
|
53022
|
+
return /* @__PURE__ */ import_react260.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react260.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react260.default.createElement(
|
|
52981
53023
|
"path",
|
|
52982
53024
|
{
|
|
52983
53025
|
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",
|
|
@@ -53004,15 +53046,15 @@ var ChannelHeader = (props) => {
|
|
|
53004
53046
|
overrideTitle
|
|
53005
53047
|
});
|
|
53006
53048
|
const { member_count, subtitle } = channel?.data || {};
|
|
53007
|
-
return /* @__PURE__ */
|
|
53049
|
+
return /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react261.default.createElement(
|
|
53008
53050
|
"button",
|
|
53009
53051
|
{
|
|
53010
53052
|
"aria-label": t2("aria/Menu"),
|
|
53011
53053
|
className: "str-chat__header-hamburger",
|
|
53012
53054
|
onClick: openMobileNav
|
|
53013
53055
|
},
|
|
53014
|
-
/* @__PURE__ */
|
|
53015
|
-
), /* @__PURE__ */
|
|
53056
|
+
/* @__PURE__ */ import_react261.default.createElement(MenuIcon3, null)
|
|
53057
|
+
), /* @__PURE__ */ import_react261.default.createElement(
|
|
53016
53058
|
Avatar2,
|
|
53017
53059
|
{
|
|
53018
53060
|
className: "str-chat__avatar--channel-header",
|
|
@@ -53020,36 +53062,36 @@ var ChannelHeader = (props) => {
|
|
|
53020
53062
|
image: displayImage,
|
|
53021
53063
|
name: displayTitle
|
|
53022
53064
|
}
|
|
53023
|
-
), /* @__PURE__ */
|
|
53065
|
+
), /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react261.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react261.default.createElement(import_react261.default.Fragment, null, t2("{{ memberCount }} members", {
|
|
53024
53066
|
memberCount: member_count
|
|
53025
53067
|
}), ",", " "), t2("{{ watcherCount }} online", { watcherCount: watcher_count }))));
|
|
53026
53068
|
};
|
|
53027
53069
|
|
|
53028
53070
|
// src/components/Chat/Chat.tsx
|
|
53029
|
-
var
|
|
53071
|
+
var import_react265 = __toESM(require("react"));
|
|
53030
53072
|
var import_stream_chat6 = require("stream-chat");
|
|
53031
53073
|
|
|
53032
53074
|
// src/components/Chat/hooks/useChat.ts
|
|
53033
|
-
var
|
|
53075
|
+
var import_react262 = require("react");
|
|
53034
53076
|
var useChat = ({
|
|
53035
53077
|
client,
|
|
53036
53078
|
defaultLanguage = "en",
|
|
53037
53079
|
i18nInstance,
|
|
53038
53080
|
initialNavOpen
|
|
53039
53081
|
}) => {
|
|
53040
|
-
const [translators, setTranslators] = (0,
|
|
53082
|
+
const [translators, setTranslators] = (0, import_react262.useState)({
|
|
53041
53083
|
t: (key) => key,
|
|
53042
53084
|
tDateTimeParser: defaultDateTimeParser,
|
|
53043
53085
|
userLanguage: "en"
|
|
53044
53086
|
});
|
|
53045
|
-
const [channel, setChannel] = (0,
|
|
53046
|
-
const [mutes, setMutes] = (0,
|
|
53047
|
-
const [navOpen, setNavOpen] = (0,
|
|
53048
|
-
const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0,
|
|
53087
|
+
const [channel, setChannel] = (0, import_react262.useState)();
|
|
53088
|
+
const [mutes, setMutes] = (0, import_react262.useState)([]);
|
|
53089
|
+
const [navOpen, setNavOpen] = (0, import_react262.useState)(initialNavOpen);
|
|
53090
|
+
const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react262.useState)({});
|
|
53049
53091
|
const clientMutes = client.user?.mutes || [];
|
|
53050
53092
|
const closeMobileNav = () => setNavOpen(false);
|
|
53051
53093
|
const openMobileNav = () => setTimeout(() => setNavOpen(true), 100);
|
|
53052
|
-
const appSettings = (0,
|
|
53094
|
+
const appSettings = (0, import_react262.useRef)(
|
|
53053
53095
|
null
|
|
53054
53096
|
);
|
|
53055
53097
|
const getAppSettings = () => {
|
|
@@ -53059,9 +53101,9 @@ var useChat = ({
|
|
|
53059
53101
|
appSettings.current = client.getAppSettings();
|
|
53060
53102
|
return appSettings.current;
|
|
53061
53103
|
};
|
|
53062
|
-
(0,
|
|
53104
|
+
(0, import_react262.useEffect)(() => {
|
|
53063
53105
|
if (!client) return;
|
|
53064
|
-
const version = "12.
|
|
53106
|
+
const version = "12.15.0";
|
|
53065
53107
|
const userAgent = client.getUserAgent();
|
|
53066
53108
|
if (!userAgent.includes("stream-chat-react")) {
|
|
53067
53109
|
client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
|
|
@@ -53073,7 +53115,7 @@ var useChat = ({
|
|
|
53073
53115
|
client.polls.unregisterSubscriptions();
|
|
53074
53116
|
};
|
|
53075
53117
|
}, [client]);
|
|
53076
|
-
(0,
|
|
53118
|
+
(0, import_react262.useEffect)(() => {
|
|
53077
53119
|
setMutes(clientMutes);
|
|
53078
53120
|
const handleEvent = (event) => {
|
|
53079
53121
|
setMutes(event.me?.mutes || []);
|
|
@@ -53081,7 +53123,7 @@ var useChat = ({
|
|
|
53081
53123
|
client.on("notification.mutes_updated", handleEvent);
|
|
53082
53124
|
return () => client.off("notification.mutes_updated", handleEvent);
|
|
53083
53125
|
}, [clientMutes?.length]);
|
|
53084
|
-
(0,
|
|
53126
|
+
(0, import_react262.useEffect)(() => {
|
|
53085
53127
|
let userLanguage = client.user?.language;
|
|
53086
53128
|
if (!userLanguage) {
|
|
53087
53129
|
const browserLanguage = window.navigator.language.slice(0, 2);
|
|
@@ -53098,7 +53140,7 @@ var useChat = ({
|
|
|
53098
53140
|
});
|
|
53099
53141
|
});
|
|
53100
53142
|
}, [i18nInstance]);
|
|
53101
|
-
const setActiveChannel = (0,
|
|
53143
|
+
const setActiveChannel = (0, import_react262.useCallback)(
|
|
53102
53144
|
async (activeChannel, watchers = {}, event) => {
|
|
53103
53145
|
if (event && event.preventDefault) event.preventDefault();
|
|
53104
53146
|
if (activeChannel && Object.keys(watchers).length) {
|
|
@@ -53109,7 +53151,7 @@ var useChat = ({
|
|
|
53109
53151
|
},
|
|
53110
53152
|
[]
|
|
53111
53153
|
);
|
|
53112
|
-
(0,
|
|
53154
|
+
(0, import_react262.useEffect)(() => {
|
|
53113
53155
|
setLatestMessageDatesByChannels({});
|
|
53114
53156
|
}, [client.user?.id]);
|
|
53115
53157
|
return {
|
|
@@ -53126,7 +53168,7 @@ var useChat = ({
|
|
|
53126
53168
|
};
|
|
53127
53169
|
|
|
53128
53170
|
// src/components/Chat/hooks/useCreateChatContext.ts
|
|
53129
|
-
var
|
|
53171
|
+
var import_react263 = require("react");
|
|
53130
53172
|
var useCreateChatContext = (value) => {
|
|
53131
53173
|
const {
|
|
53132
53174
|
channel,
|
|
@@ -53151,7 +53193,7 @@ var useCreateChatContext = (value) => {
|
|
|
53151
53193
|
const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${Object.keys(client.listeners).length}${client.mutedChannels.length}
|
|
53152
53194
|
${client.user?.id}`;
|
|
53153
53195
|
const mutedUsersLength = mutes.length;
|
|
53154
|
-
const chatContext = (0,
|
|
53196
|
+
const chatContext = (0, import_react263.useMemo)(
|
|
53155
53197
|
() => ({
|
|
53156
53198
|
channel,
|
|
53157
53199
|
channelsQueryState,
|
|
@@ -53186,10 +53228,10 @@ var useCreateChatContext = (value) => {
|
|
|
53186
53228
|
};
|
|
53187
53229
|
|
|
53188
53230
|
// src/components/Chat/hooks/useChannelsQueryState.ts
|
|
53189
|
-
var
|
|
53231
|
+
var import_react264 = require("react");
|
|
53190
53232
|
var useChannelsQueryState = () => {
|
|
53191
|
-
const [error, setError] = (0,
|
|
53192
|
-
const [queryInProgress, setQueryInProgress] = (0,
|
|
53233
|
+
const [error, setError] = (0, import_react264.useState)(null);
|
|
53234
|
+
const [queryInProgress, setQueryInProgress] = (0, import_react264.useState)("uninitialized");
|
|
53193
53235
|
return {
|
|
53194
53236
|
error,
|
|
53195
53237
|
queryInProgress,
|
|
@@ -53224,7 +53266,7 @@ var Chat = (props) => {
|
|
|
53224
53266
|
translators
|
|
53225
53267
|
} = useChat({ client, defaultLanguage, i18nInstance, initialNavOpen });
|
|
53226
53268
|
const channelsQueryState = useChannelsQueryState();
|
|
53227
|
-
const searchController = (0,
|
|
53269
|
+
const searchController = (0, import_react265.useMemo)(
|
|
53228
53270
|
() => customChannelSearchController ?? new import_stream_chat6.SearchController({
|
|
53229
53271
|
sources: [
|
|
53230
53272
|
new import_stream_chat6.ChannelSearchSource(client),
|
|
@@ -53252,11 +53294,11 @@ var Chat = (props) => {
|
|
|
53252
53294
|
useImageFlagEmojisOnWindows
|
|
53253
53295
|
});
|
|
53254
53296
|
if (!translators.t) return null;
|
|
53255
|
-
return /* @__PURE__ */
|
|
53297
|
+
return /* @__PURE__ */ import_react265.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react265.default.createElement(TranslationProvider, { value: translators }, children));
|
|
53256
53298
|
};
|
|
53257
53299
|
|
|
53258
53300
|
// src/components/Chat/hooks/useCreateChatClient.ts
|
|
53259
|
-
var
|
|
53301
|
+
var import_react266 = require("react");
|
|
53260
53302
|
var import_stream_chat7 = require("stream-chat");
|
|
53261
53303
|
var useCreateChatClient = ({
|
|
53262
53304
|
apiKey,
|
|
@@ -53264,13 +53306,13 @@ var useCreateChatClient = ({
|
|
|
53264
53306
|
tokenOrProvider,
|
|
53265
53307
|
userData
|
|
53266
53308
|
}) => {
|
|
53267
|
-
const [chatClient, setChatClient] = (0,
|
|
53268
|
-
const [cachedUserData, setCachedUserData] = (0,
|
|
53309
|
+
const [chatClient, setChatClient] = (0, import_react266.useState)(null);
|
|
53310
|
+
const [cachedUserData, setCachedUserData] = (0, import_react266.useState)(userData);
|
|
53269
53311
|
if (userData.id !== cachedUserData.id) {
|
|
53270
53312
|
setCachedUserData(userData);
|
|
53271
53313
|
}
|
|
53272
|
-
const [cachedOptions] = (0,
|
|
53273
|
-
(0,
|
|
53314
|
+
const [cachedOptions] = (0, import_react266.useState)(options);
|
|
53315
|
+
(0, import_react266.useEffect)(() => {
|
|
53274
53316
|
const client = new import_stream_chat7.StreamChat(apiKey, void 0, cachedOptions);
|
|
53275
53317
|
let didUserConnectInterrupt = false;
|
|
53276
53318
|
const connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(() => {
|
|
@@ -53288,17 +53330,17 @@ var useCreateChatClient = ({
|
|
|
53288
53330
|
};
|
|
53289
53331
|
|
|
53290
53332
|
// src/components/Thread/Thread.tsx
|
|
53291
|
-
var
|
|
53333
|
+
var import_react271 = __toESM(require("react"));
|
|
53292
53334
|
var import_clsx66 = __toESM(require("clsx"));
|
|
53293
53335
|
|
|
53294
53336
|
// src/components/Thread/ThreadHeader.tsx
|
|
53295
|
-
var
|
|
53337
|
+
var import_react268 = __toESM(require("react"));
|
|
53296
53338
|
|
|
53297
53339
|
// src/components/Thread/icons.tsx
|
|
53298
|
-
var
|
|
53340
|
+
var import_react267 = __toESM(require("react"));
|
|
53299
53341
|
var CloseIcon3 = ({ title }) => {
|
|
53300
53342
|
const { t: t2 } = useTranslationContext("CloseIcon");
|
|
53301
|
-
return /* @__PURE__ */
|
|
53343
|
+
return /* @__PURE__ */ import_react267.default.createElement(
|
|
53302
53344
|
"svg",
|
|
53303
53345
|
{
|
|
53304
53346
|
"data-testid": "close-no-outline",
|
|
@@ -53306,8 +53348,8 @@ var CloseIcon3 = ({ title }) => {
|
|
|
53306
53348
|
viewBox: "0 0 24 24",
|
|
53307
53349
|
xmlns: "http://www.w3.org/2000/svg"
|
|
53308
53350
|
},
|
|
53309
|
-
/* @__PURE__ */
|
|
53310
|
-
/* @__PURE__ */
|
|
53351
|
+
/* @__PURE__ */ import_react267.default.createElement("title", null, title ?? t2("Close")),
|
|
53352
|
+
/* @__PURE__ */ import_react267.default.createElement(
|
|
53311
53353
|
"path",
|
|
53312
53354
|
{
|
|
53313
53355
|
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",
|
|
@@ -53327,7 +53369,7 @@ var ThreadHeader = (props) => {
|
|
|
53327
53369
|
overrideImage,
|
|
53328
53370
|
overrideTitle
|
|
53329
53371
|
});
|
|
53330
|
-
return /* @__PURE__ */
|
|
53372
|
+
return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react268.default.createElement(
|
|
53331
53373
|
"button",
|
|
53332
53374
|
{
|
|
53333
53375
|
"aria-label": t2("aria/Close thread"),
|
|
@@ -53335,26 +53377,26 @@ var ThreadHeader = (props) => {
|
|
|
53335
53377
|
"data-testid": "close-button",
|
|
53336
53378
|
onClick: closeThread
|
|
53337
53379
|
},
|
|
53338
|
-
/* @__PURE__ */
|
|
53380
|
+
/* @__PURE__ */ import_react268.default.createElement(CloseIcon3, null)
|
|
53339
53381
|
));
|
|
53340
53382
|
};
|
|
53341
53383
|
|
|
53342
53384
|
// src/components/Thread/ThreadHead.tsx
|
|
53343
|
-
var
|
|
53385
|
+
var import_react270 = __toESM(require("react"));
|
|
53344
53386
|
|
|
53345
53387
|
// src/components/Thread/ThreadStart.tsx
|
|
53346
|
-
var
|
|
53388
|
+
var import_react269 = __toESM(require("react"));
|
|
53347
53389
|
var ThreadStart = () => {
|
|
53348
53390
|
const { thread } = useChannelStateContext("ThreadStart");
|
|
53349
53391
|
const { t: t2 } = useTranslationContext("ThreadStart");
|
|
53350
53392
|
if (!thread?.reply_count) return null;
|
|
53351
|
-
return /* @__PURE__ */
|
|
53393
|
+
return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
|
|
53352
53394
|
};
|
|
53353
53395
|
|
|
53354
53396
|
// src/components/Thread/ThreadHead.tsx
|
|
53355
53397
|
var ThreadHead = (props) => {
|
|
53356
53398
|
const { ThreadStart: ThreadStart2 = ThreadStart } = useComponentContext("ThreadHead");
|
|
53357
|
-
return /* @__PURE__ */
|
|
53399
|
+
return /* @__PURE__ */ import_react270.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react270.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react270.default.createElement(ThreadStart2, null));
|
|
53358
53400
|
};
|
|
53359
53401
|
|
|
53360
53402
|
// src/components/Thread/Thread.tsx
|
|
@@ -53364,7 +53406,7 @@ var Thread = (props) => {
|
|
|
53364
53406
|
if (!thread && !threadInstance || channelConfig?.replies === false) return null;
|
|
53365
53407
|
return (
|
|
53366
53408
|
// FIXME: TS is having trouble here as at least one of the two would always be defined
|
|
53367
|
-
/* @__PURE__ */
|
|
53409
|
+
/* @__PURE__ */ import_react271.default.createElement(
|
|
53368
53410
|
ThreadInner,
|
|
53369
53411
|
{
|
|
53370
53412
|
...props,
|
|
@@ -53415,7 +53457,7 @@ var ThreadInner = (props) => {
|
|
|
53415
53457
|
const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
|
|
53416
53458
|
const MessageUIComponent = ThreadMessage || FallbackMessage;
|
|
53417
53459
|
const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
|
|
53418
|
-
(0,
|
|
53460
|
+
(0, import_react271.useEffect)(() => {
|
|
53419
53461
|
if (thread?.id && thread?.reply_count) {
|
|
53420
53462
|
loadMoreThread();
|
|
53421
53463
|
}
|
|
@@ -53437,7 +53479,7 @@ var ThreadInner = (props) => {
|
|
|
53437
53479
|
const threadClass = customClasses?.thread || (0, import_clsx66.default)("str-chat__thread-container str-chat__thread", {
|
|
53438
53480
|
"str-chat__thread--virtualized": virtualized
|
|
53439
53481
|
});
|
|
53440
|
-
const head = /* @__PURE__ */
|
|
53482
|
+
const head = /* @__PURE__ */ import_react271.default.createElement(
|
|
53441
53483
|
ThreadHead2,
|
|
53442
53484
|
{
|
|
53443
53485
|
key: messageAsThread.id,
|
|
@@ -53446,7 +53488,7 @@ var ThreadInner = (props) => {
|
|
|
53446
53488
|
...additionalParentMessageProps
|
|
53447
53489
|
}
|
|
53448
53490
|
);
|
|
53449
|
-
return /* @__PURE__ */
|
|
53491
|
+
return /* @__PURE__ */ import_react271.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react271.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react271.default.createElement(
|
|
53450
53492
|
ThreadMessageList,
|
|
53451
53493
|
{
|
|
53452
53494
|
disableDateSeparator: !enableDateSeparator,
|
|
@@ -53458,7 +53500,7 @@ var ThreadInner = (props) => {
|
|
|
53458
53500
|
...threadProps,
|
|
53459
53501
|
...virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps
|
|
53460
53502
|
}
|
|
53461
|
-
), /* @__PURE__ */
|
|
53503
|
+
), /* @__PURE__ */ import_react271.default.createElement(
|
|
53462
53504
|
MessageInput,
|
|
53463
53505
|
{
|
|
53464
53506
|
focus: autoFocus,
|
|
@@ -53472,12 +53514,12 @@ var ThreadInner = (props) => {
|
|
|
53472
53514
|
};
|
|
53473
53515
|
|
|
53474
53516
|
// src/components/Window/Window.tsx
|
|
53475
|
-
var
|
|
53517
|
+
var import_react272 = __toESM(require("react"));
|
|
53476
53518
|
var import_clsx67 = __toESM(require("clsx"));
|
|
53477
53519
|
var UnMemoizedWindow = (props) => {
|
|
53478
53520
|
const { children, thread: propThread } = props;
|
|
53479
53521
|
const { thread: contextThread } = useChannelStateContext("Window");
|
|
53480
|
-
return /* @__PURE__ */
|
|
53522
|
+
return /* @__PURE__ */ import_react272.default.createElement(
|
|
53481
53523
|
"div",
|
|
53482
53524
|
{
|
|
53483
53525
|
className: (0, import_clsx67.default)("str-chat__main-panel", {
|
|
@@ -53487,7 +53529,7 @@ var UnMemoizedWindow = (props) => {
|
|
|
53487
53529
|
children
|
|
53488
53530
|
);
|
|
53489
53531
|
};
|
|
53490
|
-
var Window =
|
|
53532
|
+
var Window = import_react272.default.memo(UnMemoizedWindow);
|
|
53491
53533
|
/*! Bundled license information:
|
|
53492
53534
|
|
|
53493
53535
|
is-buffer/index.js:
|