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