stream-chat-react 12.12.0 → 12.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChannelList/ChannelList.d.ts +2 -2
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +4 -4
- package/dist/components/ChannelPreview/utils.d.ts +2 -2
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Message/QuotedMessage.d.ts +3 -1
- package/dist/components/Message/QuotedMessage.js +14 -11
- package/dist/components/Message/types.d.ts +2 -2
- package/dist/components/MessageInput/MessageInputFlat.js +2 -1
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts +3 -1
- package/dist/components/MessageInput/QuotedMessagePreview.js +4 -3
- package/dist/components/MessageList/utils.js +3 -0
- package/dist/context/MessageContext.d.ts +2 -2
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/experimental/index.browser.cjs.map +2 -2
- package/dist/experimental/index.node.cjs.map +2 -2
- package/dist/index.browser.cjs +449 -428
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +337 -316
- package/dist/index.node.cjs.map +4 -4
- package/dist/scss/v2/Message/Message-layout.scss +1 -1
- package/dist/scss/v2/Message/Message-theme.scss +5 -5
- package/package.json +4 -4
package/dist/index.node.cjs
CHANGED
|
@@ -45535,10 +45535,10 @@ var UnMemoizedConnectionStatus = () => {
|
|
|
45535
45535
|
var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
|
|
45536
45536
|
|
|
45537
45537
|
// src/components/MessageList/GiphyPreviewMessage.tsx
|
|
45538
|
-
var
|
|
45538
|
+
var import_react225 = __toESM(require("react"));
|
|
45539
45539
|
|
|
45540
45540
|
// src/components/Message/Message.tsx
|
|
45541
|
-
var
|
|
45541
|
+
var import_react224 = __toESM(require("react"));
|
|
45542
45542
|
|
|
45543
45543
|
// src/components/Message/hooks/useActionHandler.ts
|
|
45544
45544
|
var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
|
|
@@ -49112,7 +49112,7 @@ var useMessageTextStreaming = ({
|
|
|
49112
49112
|
};
|
|
49113
49113
|
|
|
49114
49114
|
// src/components/Message/MessageSimple.tsx
|
|
49115
|
-
var
|
|
49115
|
+
var import_react223 = __toESM(require("react"));
|
|
49116
49116
|
var import_clsx59 = __toESM(require("clsx"));
|
|
49117
49117
|
|
|
49118
49118
|
// src/components/Message/icons.tsx
|
|
@@ -51707,19 +51707,30 @@ var PollCreationDialog = ({ close }) => {
|
|
|
51707
51707
|
};
|
|
51708
51708
|
|
|
51709
51709
|
// src/components/Message/QuotedMessage.tsx
|
|
51710
|
-
var QuotedMessage = (
|
|
51710
|
+
var QuotedMessage = ({
|
|
51711
|
+
renderText: propsRenderText
|
|
51712
|
+
}) => {
|
|
51711
51713
|
const { Attachment: Attachment2 = Attachment, Avatar: ContextAvatar } = useComponentContext("QuotedMessage");
|
|
51712
51714
|
const { client } = useChatContext();
|
|
51713
|
-
const {
|
|
51715
|
+
const {
|
|
51716
|
+
isMyMessage,
|
|
51717
|
+
message,
|
|
51718
|
+
renderText: contextRenderText
|
|
51719
|
+
} = useMessageContext("QuotedMessage");
|
|
51714
51720
|
const { t: t2, userLanguage } = useTranslationContext("QuotedMessage");
|
|
51715
51721
|
const { jumpToMessage } = useChannelActionContext("QuotedMessage");
|
|
51722
|
+
const renderText2 = propsRenderText ?? contextRenderText ?? renderText;
|
|
51716
51723
|
const Avatar2 = ContextAvatar || Avatar;
|
|
51717
51724
|
const { quoted_message } = message;
|
|
51725
|
+
const poll = quoted_message?.poll_id && client.polls.fromState(quoted_message.poll_id);
|
|
51726
|
+
const quotedMessageDeleted = quoted_message?.deleted_at || quoted_message?.type === "deleted";
|
|
51727
|
+
const quotedMessageText = quotedMessageDeleted ? t2("This message was deleted...") : quoted_message?.i18n?.[`${userLanguage}_text`] || quoted_message?.text;
|
|
51728
|
+
const quotedMessageAttachment = quoted_message?.attachments?.length && !quotedMessageDeleted ? quoted_message.attachments[0] : null;
|
|
51729
|
+
const renderedText = (0, import_react179.useMemo)(
|
|
51730
|
+
() => renderText2(quotedMessageText, quoted_message?.mentioned_users),
|
|
51731
|
+
[quotedMessageText, quoted_message?.mentioned_users, renderText2]
|
|
51732
|
+
);
|
|
51718
51733
|
if (!quoted_message) return null;
|
|
51719
|
-
const poll = quoted_message.poll_id && client.polls.fromState(quoted_message.poll_id);
|
|
51720
|
-
const quotedMessageDeleted = quoted_message.deleted_at || quoted_message.type === "deleted";
|
|
51721
|
-
const quotedMessageText = quotedMessageDeleted ? t2("This message was deleted...") : quoted_message.i18n?.[`${userLanguage}_text`] || quoted_message.text;
|
|
51722
|
-
const quotedMessageAttachment = quoted_message.attachments?.length && !quotedMessageDeleted ? quoted_message.attachments[0] : null;
|
|
51723
51734
|
if (!quoted_message.poll && !quotedMessageText && !quotedMessageAttachment) return null;
|
|
51724
51735
|
return /* @__PURE__ */ import_react179.default.createElement(import_react179.default.Fragment, null, /* @__PURE__ */ import_react179.default.createElement(
|
|
51725
51736
|
"div",
|
|
@@ -51753,7 +51764,7 @@ var QuotedMessage = () => {
|
|
|
51753
51764
|
className: "str-chat__quoted-message-bubble__text",
|
|
51754
51765
|
"data-testid": "quoted-message-text"
|
|
51755
51766
|
},
|
|
51756
|
-
|
|
51767
|
+
renderedText
|
|
51757
51768
|
))
|
|
51758
51769
|
)
|
|
51759
51770
|
), message.attachments?.length ? /* @__PURE__ */ import_react179.default.createElement(Attachment2, { attachments: message.attachments }) : null);
|
|
@@ -53060,10 +53071,10 @@ var DefaultTriggerProvider = ({
|
|
|
53060
53071
|
};
|
|
53061
53072
|
|
|
53062
53073
|
// src/components/MessageInput/EditMessageForm.tsx
|
|
53063
|
-
var
|
|
53074
|
+
var import_react215 = __toESM(require("react"));
|
|
53064
53075
|
|
|
53065
53076
|
// src/components/MessageInput/MessageInputFlat.tsx
|
|
53066
|
-
var
|
|
53077
|
+
var import_react214 = __toESM(require("react"));
|
|
53067
53078
|
var import_clsx54 = __toESM(require("clsx"));
|
|
53068
53079
|
var import_react_dropzone2 = require("react-dropzone");
|
|
53069
53080
|
|
|
@@ -53105,40 +53116,170 @@ var StopAIGenerationButton = ({
|
|
|
53105
53116
|
};
|
|
53106
53117
|
|
|
53107
53118
|
// src/components/MessageInput/QuotedMessagePreview.tsx
|
|
53119
|
+
var import_react209 = __toESM(require("react"));
|
|
53120
|
+
|
|
53121
|
+
// src/components/Message/FixedHeightMessage.tsx
|
|
53122
|
+
var import_react207 = __toESM(require("react"));
|
|
53123
|
+
|
|
53124
|
+
// src/components/MML/MML.tsx
|
|
53108
53125
|
var import_react206 = __toESM(require("react"));
|
|
53126
|
+
var MMLReact = import_react206.default.lazy(async () => {
|
|
53127
|
+
const mml = await Promise.resolve().then(() => __toESM(require_dist2()));
|
|
53128
|
+
return { default: mml.MML };
|
|
53129
|
+
});
|
|
53130
|
+
var MML = (props) => {
|
|
53131
|
+
const { actionHandler, align = "right", source } = props;
|
|
53132
|
+
const { theme } = useChatContext("MML");
|
|
53133
|
+
return /* @__PURE__ */ import_react206.default.createElement(import_react206.Suspense, { fallback: null }, /* @__PURE__ */ import_react206.default.createElement(
|
|
53134
|
+
MMLReact,
|
|
53135
|
+
{
|
|
53136
|
+
className: `mml-align-${align}`,
|
|
53137
|
+
Loading: null,
|
|
53138
|
+
onSubmit: actionHandler,
|
|
53139
|
+
source,
|
|
53140
|
+
Success: null,
|
|
53141
|
+
theme: (theme || "").replace(" ", "-")
|
|
53142
|
+
}
|
|
53143
|
+
));
|
|
53144
|
+
};
|
|
53145
|
+
|
|
53146
|
+
// src/components/Message/FixedHeightMessage.tsx
|
|
53147
|
+
var selectColor = (number2, dark) => {
|
|
53148
|
+
const hue = number2 * 137.508;
|
|
53149
|
+
return `hsl(${hue},${dark ? "50%" : "85%"}, ${dark ? "75%" : "55%"})`;
|
|
53150
|
+
};
|
|
53151
|
+
var hashUserId = (userId) => {
|
|
53152
|
+
const hash = userId.split("").reduce((acc, c) => {
|
|
53153
|
+
acc = (acc << 5) - acc + c.charCodeAt(0);
|
|
53154
|
+
return acc & acc;
|
|
53155
|
+
}, 0);
|
|
53156
|
+
return Math.abs(hash) / 10 ** Math.ceil(Math.log10(Math.abs(hash) + 1));
|
|
53157
|
+
};
|
|
53158
|
+
var getUserColor = (theme, userId) => selectColor(hashUserId(userId), theme.includes("dark"));
|
|
53159
|
+
var UnMemoizedFixedHeightMessage = (props) => {
|
|
53160
|
+
const { groupedByUser: propGroupedByUser, message: propMessage } = props;
|
|
53161
|
+
const { theme } = useChatContext("FixedHeightMessage");
|
|
53162
|
+
const { groupedByUser: contextGroupedByUser, message: contextMessage } = useMessageContext("FixedHeightMessage");
|
|
53163
|
+
const { MessageDeleted: MessageDeleted2 = MessageDeleted } = useComponentContext("FixedHeightMessage");
|
|
53164
|
+
const { userLanguage } = useTranslationContext("FixedHeightMessage");
|
|
53165
|
+
const groupedByUser = propGroupedByUser !== void 0 ? propGroupedByUser : contextGroupedByUser;
|
|
53166
|
+
const message = propMessage || contextMessage;
|
|
53167
|
+
const handleAction = useActionHandler(message);
|
|
53168
|
+
const handleDelete2 = useDeleteHandler(message);
|
|
53169
|
+
const role = useUserRole(message);
|
|
53170
|
+
const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
|
|
53171
|
+
const renderedText = (0, import_react207.useMemo)(
|
|
53172
|
+
() => renderText(messageTextToRender, message.mentioned_users),
|
|
53173
|
+
[message.mentioned_users, messageTextToRender]
|
|
53174
|
+
);
|
|
53175
|
+
const userId = message.user?.id || "";
|
|
53176
|
+
const userColor = (0, import_react207.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
|
|
53177
|
+
const messageActionsHandler = (0, import_react207.useCallback)(
|
|
53178
|
+
() => getMessageActions(["delete"], { canDelete: role.canDelete }),
|
|
53179
|
+
[role]
|
|
53180
|
+
);
|
|
53181
|
+
const images = message?.attachments?.filter(({ type }) => type === "image");
|
|
53182
|
+
return /* @__PURE__ */ import_react207.default.createElement(
|
|
53183
|
+
"div",
|
|
53184
|
+
{
|
|
53185
|
+
className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
|
|
53186
|
+
key: message.id
|
|
53187
|
+
},
|
|
53188
|
+
message.user && /* @__PURE__ */ import_react207.default.createElement(
|
|
53189
|
+
Avatar,
|
|
53190
|
+
{
|
|
53191
|
+
image: message.user.image,
|
|
53192
|
+
name: message.user.name || message.user.id,
|
|
53193
|
+
user: message.user
|
|
53194
|
+
}
|
|
53195
|
+
),
|
|
53196
|
+
/* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react207.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react207.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react207.default.createElement(import_react207.default.Fragment, null, images && /* @__PURE__ */ import_react207.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react207.default.createElement(MML, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react207.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react207.default.createElement(
|
|
53197
|
+
MessageActions,
|
|
53198
|
+
{
|
|
53199
|
+
customWrapperClass: "str-chat__virtual-message__actions",
|
|
53200
|
+
getMessageActions: messageActionsHandler,
|
|
53201
|
+
handleDelete: handleDelete2,
|
|
53202
|
+
message,
|
|
53203
|
+
mine: () => role.isMyMessage
|
|
53204
|
+
}
|
|
53205
|
+
), /* @__PURE__ */ import_react207.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react207.default.createElement(
|
|
53206
|
+
MessageTimestamp,
|
|
53207
|
+
{
|
|
53208
|
+
customClass: "str-chat__message-simple-timestamp",
|
|
53209
|
+
message
|
|
53210
|
+
}
|
|
53211
|
+
))))))
|
|
53212
|
+
);
|
|
53213
|
+
};
|
|
53214
|
+
var FixedHeightMessage = import_react207.default.memo(
|
|
53215
|
+
UnMemoizedFixedHeightMessage
|
|
53216
|
+
);
|
|
53217
|
+
|
|
53218
|
+
// src/components/Message/StreamedMessageText.tsx
|
|
53219
|
+
var import_react208 = __toESM(require("react"));
|
|
53220
|
+
var StreamedMessageText = (props) => {
|
|
53221
|
+
const {
|
|
53222
|
+
message: messageFromProps,
|
|
53223
|
+
renderingLetterCount,
|
|
53224
|
+
renderText: renderText2,
|
|
53225
|
+
streamingLetterIntervalMs
|
|
53226
|
+
} = props;
|
|
53227
|
+
const { message: messageFromContext } = useMessageContext("StreamedMessageText");
|
|
53228
|
+
const message = messageFromProps || messageFromContext;
|
|
53229
|
+
const { text: text7 = "" } = message;
|
|
53230
|
+
const { streamedMessageText } = useMessageTextStreaming({
|
|
53231
|
+
renderingLetterCount,
|
|
53232
|
+
streamingLetterIntervalMs,
|
|
53233
|
+
text: text7
|
|
53234
|
+
});
|
|
53235
|
+
return /* @__PURE__ */ import_react208.default.createElement(
|
|
53236
|
+
MessageText,
|
|
53237
|
+
{
|
|
53238
|
+
message: { ...message, text: streamedMessageText },
|
|
53239
|
+
renderText: renderText2
|
|
53240
|
+
}
|
|
53241
|
+
);
|
|
53242
|
+
};
|
|
53243
|
+
|
|
53244
|
+
// src/components/MessageInput/QuotedMessagePreview.tsx
|
|
53109
53245
|
var QuotedMessagePreviewHeader = () => {
|
|
53110
53246
|
const { setQuotedMessage } = useChannelActionContext("QuotedMessagePreview");
|
|
53111
53247
|
const { t: t2 } = useTranslationContext("QuotedMessagePreview");
|
|
53112
|
-
return /* @__PURE__ */
|
|
53248
|
+
return /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-preview-header" }, /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-reply-to-message" }, t2("Reply to Message")), /* @__PURE__ */ import_react209.default.createElement(
|
|
53113
53249
|
"button",
|
|
53114
53250
|
{
|
|
53115
53251
|
"aria-label": t2("aria/Cancel Reply"),
|
|
53116
53252
|
className: "str-chat__quoted-message-remove",
|
|
53117
53253
|
onClick: () => setQuotedMessage(void 0)
|
|
53118
53254
|
},
|
|
53119
|
-
/* @__PURE__ */
|
|
53255
|
+
/* @__PURE__ */ import_react209.default.createElement(CloseIcon, null)
|
|
53120
53256
|
));
|
|
53121
53257
|
};
|
|
53122
53258
|
var QuotedMessagePreview = ({
|
|
53123
|
-
quotedMessage
|
|
53259
|
+
quotedMessage,
|
|
53260
|
+
renderText: renderText2 = renderText
|
|
53124
53261
|
}) => {
|
|
53125
53262
|
const { client } = useChatContext();
|
|
53126
53263
|
const { Attachment: Attachment2 = Attachment, Avatar: Avatar2 = Avatar } = useComponentContext("QuotedMessagePreview");
|
|
53127
53264
|
const { userLanguage } = useTranslationContext("QuotedMessagePreview");
|
|
53128
53265
|
const quotedMessageText = quotedMessage.i18n?.[`${userLanguage}_text`] || quotedMessage.text;
|
|
53129
|
-
const
|
|
53266
|
+
const renderedText = (0, import_react209.useMemo)(
|
|
53267
|
+
() => renderText2(quotedMessageText, quotedMessage.mentioned_users),
|
|
53268
|
+
[quotedMessage.mentioned_users, quotedMessageText, renderText2]
|
|
53269
|
+
);
|
|
53270
|
+
const quotedMessageAttachment = (0, import_react209.useMemo)(() => {
|
|
53130
53271
|
const [attachment] = quotedMessage.attachments ?? [];
|
|
53131
53272
|
return attachment ? [attachment] : [];
|
|
53132
53273
|
}, [quotedMessage.attachments]);
|
|
53133
53274
|
if (!quotedMessageText && !quotedMessageAttachment) return null;
|
|
53134
53275
|
const poll = quotedMessage.poll_id && client.polls.fromState(quotedMessage.poll_id);
|
|
53135
|
-
return /* @__PURE__ */
|
|
53276
|
+
return /* @__PURE__ */ import_react209.default.createElement(
|
|
53136
53277
|
"div",
|
|
53137
53278
|
{
|
|
53138
53279
|
className: "str-chat__quoted-message-preview",
|
|
53139
53280
|
"data-testid": "quoted-message-preview"
|
|
53140
53281
|
},
|
|
53141
|
-
quotedMessage.user && /* @__PURE__ */
|
|
53282
|
+
quotedMessage.user && /* @__PURE__ */ import_react209.default.createElement(
|
|
53142
53283
|
Avatar2,
|
|
53143
53284
|
{
|
|
53144
53285
|
className: "str-chat__avatar--quoted-message-sender",
|
|
@@ -53147,33 +53288,33 @@ var QuotedMessagePreview = ({
|
|
|
53147
53288
|
user: quotedMessage.user
|
|
53148
53289
|
}
|
|
53149
53290
|
),
|
|
53150
|
-
/* @__PURE__ */
|
|
53291
|
+
/* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__quoted-message-bubble" }, poll ? /* @__PURE__ */ import_react209.default.createElement(Poll, { isQuoted: true, poll }) : /* @__PURE__ */ import_react209.default.createElement(import_react209.default.Fragment, null, !!quotedMessageAttachment.length && /* @__PURE__ */ import_react209.default.createElement(Attachment2, { attachments: quotedMessageAttachment, isQuoted: true }), /* @__PURE__ */ import_react209.default.createElement(
|
|
53151
53292
|
"div",
|
|
53152
53293
|
{
|
|
53153
53294
|
className: "str-chat__quoted-message-text",
|
|
53154
53295
|
"data-testid": "quoted-message-text"
|
|
53155
53296
|
},
|
|
53156
|
-
|
|
53297
|
+
renderedText
|
|
53157
53298
|
)))
|
|
53158
53299
|
);
|
|
53159
53300
|
};
|
|
53160
53301
|
|
|
53161
53302
|
// src/components/MessageInput/LinkPreviewList.tsx
|
|
53162
53303
|
var import_clsx53 = __toESM(require("clsx"));
|
|
53163
|
-
var
|
|
53304
|
+
var import_react210 = __toESM(require("react"));
|
|
53164
53305
|
var LinkPreviewList = ({ linkPreviews }) => {
|
|
53165
53306
|
const { quotedMessage } = useChannelStateContext();
|
|
53166
53307
|
const showLinkPreviews = linkPreviews.length > 0 && !quotedMessage;
|
|
53167
53308
|
if (!showLinkPreviews) return null;
|
|
53168
|
-
return /* @__PURE__ */
|
|
53169
|
-
(linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */
|
|
53309
|
+
return /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
|
|
53310
|
+
(linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */ import_react210.default.createElement(LinkPreviewCard, { key: linkPreview.og_scrape_url, linkPreview }) : null
|
|
53170
53311
|
));
|
|
53171
53312
|
};
|
|
53172
53313
|
var LinkPreviewCard = ({ linkPreview }) => {
|
|
53173
53314
|
const { dismissLinkPreview } = useMessageInputContext();
|
|
53174
53315
|
const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers();
|
|
53175
|
-
const [referenceElement, setReferenceElement] = (0,
|
|
53176
|
-
return /* @__PURE__ */
|
|
53316
|
+
const [referenceElement, setReferenceElement] = (0, import_react210.useState)(null);
|
|
53317
|
+
return /* @__PURE__ */ import_react210.default.createElement(
|
|
53177
53318
|
"div",
|
|
53178
53319
|
{
|
|
53179
53320
|
className: (0, import_clsx53.default)("str-chat__link-preview-card", {
|
|
@@ -53181,7 +53322,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
|
|
|
53181
53322
|
}),
|
|
53182
53323
|
"data-testid": "link-preview-card"
|
|
53183
53324
|
},
|
|
53184
|
-
/* @__PURE__ */
|
|
53325
|
+
/* @__PURE__ */ import_react210.default.createElement(
|
|
53185
53326
|
PopperTooltip,
|
|
53186
53327
|
{
|
|
53187
53328
|
offset: [0, 5],
|
|
@@ -53190,7 +53331,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
|
|
|
53190
53331
|
},
|
|
53191
53332
|
linkPreview.og_scrape_url
|
|
53192
53333
|
),
|
|
53193
|
-
/* @__PURE__ */
|
|
53334
|
+
/* @__PURE__ */ import_react210.default.createElement(
|
|
53194
53335
|
"div",
|
|
53195
53336
|
{
|
|
53196
53337
|
className: "str-chat__link-preview-card__icon-container",
|
|
@@ -53198,23 +53339,23 @@ var LinkPreviewCard = ({ linkPreview }) => {
|
|
|
53198
53339
|
onMouseLeave: handleLeave,
|
|
53199
53340
|
ref: setReferenceElement
|
|
53200
53341
|
},
|
|
53201
|
-
/* @__PURE__ */
|
|
53342
|
+
/* @__PURE__ */ import_react210.default.createElement(LinkIcon, null)
|
|
53202
53343
|
),
|
|
53203
|
-
/* @__PURE__ */
|
|
53204
|
-
/* @__PURE__ */
|
|
53344
|
+
/* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content" }, /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content-title" }, linkPreview.title), /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__link-preview-card__content-description" }, linkPreview.text)),
|
|
53345
|
+
/* @__PURE__ */ import_react210.default.createElement(
|
|
53205
53346
|
"button",
|
|
53206
53347
|
{
|
|
53207
53348
|
className: "str-chat__link-preview-card__dismiss-button",
|
|
53208
53349
|
"data-testid": "link-preview-card-dismiss-btn",
|
|
53209
53350
|
onClick: () => dismissLinkPreview(linkPreview)
|
|
53210
53351
|
},
|
|
53211
|
-
/* @__PURE__ */
|
|
53352
|
+
/* @__PURE__ */ import_react210.default.createElement(CloseIcon, null)
|
|
53212
53353
|
)
|
|
53213
53354
|
);
|
|
53214
53355
|
};
|
|
53215
53356
|
|
|
53216
53357
|
// src/components/ChatAutoComplete/ChatAutoComplete.tsx
|
|
53217
|
-
var
|
|
53358
|
+
var import_react211 = __toESM(require("react"));
|
|
53218
53359
|
var UnMemoizedChatAutoComplete = (props) => {
|
|
53219
53360
|
const {
|
|
53220
53361
|
AutocompleteSuggestionItem: SuggestionItem,
|
|
@@ -53236,7 +53377,7 @@ var UnMemoizedChatAutoComplete = (props) => {
|
|
|
53236
53377
|
const [firstSkin] = emoji.skins ?? [];
|
|
53237
53378
|
return emoji.native ?? firstSkin.native;
|
|
53238
53379
|
};
|
|
53239
|
-
const updateInnerRef = (0,
|
|
53380
|
+
const updateInnerRef = (0, import_react211.useCallback)(
|
|
53240
53381
|
(ref) => {
|
|
53241
53382
|
if (innerRef) {
|
|
53242
53383
|
innerRef.current = ref;
|
|
@@ -53244,7 +53385,7 @@ var UnMemoizedChatAutoComplete = (props) => {
|
|
|
53244
53385
|
},
|
|
53245
53386
|
[innerRef]
|
|
53246
53387
|
);
|
|
53247
|
-
return /* @__PURE__ */
|
|
53388
|
+
return /* @__PURE__ */ import_react211.default.createElement(
|
|
53248
53389
|
ReactTextareaAutocomplete,
|
|
53249
53390
|
{
|
|
53250
53391
|
additionalTextareaProps: messageInput.additionalTextareaProps,
|
|
@@ -53279,15 +53420,15 @@ var UnMemoizedChatAutoComplete = (props) => {
|
|
|
53279
53420
|
}
|
|
53280
53421
|
);
|
|
53281
53422
|
};
|
|
53282
|
-
var ChatAutoComplete =
|
|
53423
|
+
var ChatAutoComplete = import_react211.default.memo(
|
|
53283
53424
|
UnMemoizedChatAutoComplete
|
|
53284
53425
|
);
|
|
53285
53426
|
|
|
53286
53427
|
// src/components/AIStateIndicator/AIStateIndicator.tsx
|
|
53287
|
-
var
|
|
53428
|
+
var import_react213 = __toESM(require("react"));
|
|
53288
53429
|
|
|
53289
53430
|
// src/components/AIStateIndicator/hooks/useAIState.ts
|
|
53290
|
-
var
|
|
53431
|
+
var import_react212 = require("react");
|
|
53291
53432
|
var AIStates = {
|
|
53292
53433
|
Error: "AI_STATE_ERROR",
|
|
53293
53434
|
ExternalSources: "AI_STATE_EXTERNAL_SOURCES",
|
|
@@ -53296,8 +53437,8 @@ var AIStates = {
|
|
|
53296
53437
|
Thinking: "AI_STATE_THINKING"
|
|
53297
53438
|
};
|
|
53298
53439
|
var useAIState = (channel) => {
|
|
53299
|
-
const [aiState, setAiState] = (0,
|
|
53300
|
-
(0,
|
|
53440
|
+
const [aiState, setAiState] = (0, import_react212.useState)(AIStates.Idle);
|
|
53441
|
+
(0, import_react212.useEffect)(() => {
|
|
53301
53442
|
if (!channel) {
|
|
53302
53443
|
return;
|
|
53303
53444
|
}
|
|
@@ -53337,7 +53478,7 @@ var AIStateIndicator = ({
|
|
|
53337
53478
|
[AIStates.Thinking]: t2("Thinking..."),
|
|
53338
53479
|
[AIStates.Generating]: t2("Generating...")
|
|
53339
53480
|
};
|
|
53340
|
-
return aiState in allowedStates ? /* @__PURE__ */
|
|
53481
|
+
return aiState in allowedStates ? /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react213.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
|
|
53341
53482
|
};
|
|
53342
53483
|
|
|
53343
53484
|
// src/components/MessageInput/MessageInputFlat.tsx
|
|
@@ -53382,19 +53523,19 @@ var MessageInputFlat = () => {
|
|
|
53382
53523
|
const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
|
|
53383
53524
|
const { channel } = useChatContext("MessageInputFlat");
|
|
53384
53525
|
const { aiState } = useAIState(channel);
|
|
53385
|
-
const stopGenerating = (0,
|
|
53526
|
+
const stopGenerating = (0, import_react214.useCallback)(() => channel?.stopAIResponse(), [channel]);
|
|
53386
53527
|
const [
|
|
53387
53528
|
showRecordingPermissionDeniedNotification,
|
|
53388
53529
|
setShowRecordingPermissionDeniedNotification
|
|
53389
|
-
] = (0,
|
|
53390
|
-
const closePermissionDeniedNotification = (0,
|
|
53530
|
+
] = (0, import_react214.useState)(false);
|
|
53531
|
+
const closePermissionDeniedNotification = (0, import_react214.useCallback)(() => {
|
|
53391
53532
|
setShowRecordingPermissionDeniedNotification(false);
|
|
53392
53533
|
}, []);
|
|
53393
|
-
const failedUploadsCount = (0,
|
|
53534
|
+
const failedUploadsCount = (0, import_react214.useMemo)(
|
|
53394
53535
|
() => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
|
|
53395
53536
|
[attachments]
|
|
53396
53537
|
);
|
|
53397
|
-
const accept = (0,
|
|
53538
|
+
const accept = (0, import_react214.useMemo)(
|
|
53398
53539
|
() => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
|
|
53399
53540
|
mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
|
|
53400
53541
|
return mediaTypeMap;
|
|
@@ -53408,7 +53549,7 @@ var MessageInputFlat = () => {
|
|
|
53408
53549
|
noClick: true,
|
|
53409
53550
|
onDrop: uploadNewFiles
|
|
53410
53551
|
});
|
|
53411
|
-
(0,
|
|
53552
|
+
(0, import_react214.useEffect)(() => {
|
|
53412
53553
|
const handleQuotedMessageUpdate = (e2) => {
|
|
53413
53554
|
if (e2.message?.id !== quotedMessage?.id) return;
|
|
53414
53555
|
if (e2.type === "message.deleted") {
|
|
@@ -53424,40 +53565,40 @@ var MessageInputFlat = () => {
|
|
|
53424
53565
|
channel?.off("message.updated", handleQuotedMessageUpdate);
|
|
53425
53566
|
};
|
|
53426
53567
|
}, [channel, quotedMessage]);
|
|
53427
|
-
if (recordingController.recordingState) return /* @__PURE__ */
|
|
53568
|
+
if (recordingController.recordingState) return /* @__PURE__ */ import_react214.default.createElement(AudioRecorder2, null);
|
|
53428
53569
|
const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
|
|
53429
53570
|
const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
|
|
53430
53571
|
const isRecording = !!recordingController.recordingState;
|
|
53431
53572
|
const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
|
|
53432
53573
|
const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
|
|
53433
|
-
return /* @__PURE__ */
|
|
53574
|
+
return /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, /* @__PURE__ */ import_react214.default.createElement("div", { ...getRootProps({ className: "str-chat__message-input" }) }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react214.default.createElement(
|
|
53434
53575
|
RecordingPermissionDeniedNotification2,
|
|
53435
53576
|
{
|
|
53436
53577
|
onClose: closePermissionDeniedNotification,
|
|
53437
53578
|
permissionName: "microphone" /* MIC */
|
|
53438
53579
|
}
|
|
53439
|
-
), findAndEnqueueURLsToEnrich && /* @__PURE__ */
|
|
53580
|
+
), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react214.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), isDragActive && /* @__PURE__ */ import_react214.default.createElement(
|
|
53440
53581
|
"div",
|
|
53441
53582
|
{
|
|
53442
53583
|
className: (0, import_clsx54.default)("str-chat__dropzone-container", {
|
|
53443
53584
|
"str-chat__dropzone-container--not-accepted": isDragReject
|
|
53444
53585
|
})
|
|
53445
53586
|
},
|
|
53446
|
-
!isDragReject && /* @__PURE__ */
|
|
53447
|
-
isDragReject && /* @__PURE__ */
|
|
53448
|
-
), displayQuotedMessage && /* @__PURE__ */
|
|
53587
|
+
!isDragReject && /* @__PURE__ */ import_react214.default.createElement("p", null, t2("Drag your files here")),
|
|
53588
|
+
isDragReject && /* @__PURE__ */ import_react214.default.createElement("p", null, t2("Some of the files will not be accepted"))
|
|
53589
|
+
), displayQuotedMessage && /* @__PURE__ */ import_react214.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react214.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react214.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react214.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react214.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react214.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react214.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react214.default.createElement(
|
|
53449
53590
|
CooldownTimer2,
|
|
53450
53591
|
{
|
|
53451
53592
|
cooldownInterval: cooldownRemaining,
|
|
53452
53593
|
setCooldownRemaining
|
|
53453
53594
|
}
|
|
53454
|
-
) : /* @__PURE__ */
|
|
53595
|
+
) : /* @__PURE__ */ import_react214.default.createElement(import_react214.default.Fragment, null, /* @__PURE__ */ import_react214.default.createElement(
|
|
53455
53596
|
SendButton2,
|
|
53456
53597
|
{
|
|
53457
53598
|
disabled: !numberOfUploads && !text7.length && attachments.length - failedUploadsCount === 0,
|
|
53458
53599
|
sendMessage: handleSubmit
|
|
53459
53600
|
}
|
|
53460
|
-
), recordingEnabled && /* @__PURE__ */
|
|
53601
|
+
), recordingEnabled && /* @__PURE__ */ import_react214.default.createElement(
|
|
53461
53602
|
StartRecordingAudioButton2,
|
|
53462
53603
|
{
|
|
53463
53604
|
disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
|
|
@@ -53475,22 +53616,22 @@ var MessageInputFlat = () => {
|
|
|
53475
53616
|
var EditMessageForm = () => {
|
|
53476
53617
|
const { t: t2 } = useTranslationContext("EditMessageForm");
|
|
53477
53618
|
const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
|
|
53478
|
-
(0,
|
|
53619
|
+
(0, import_react215.useEffect)(() => {
|
|
53479
53620
|
const onKeyDown = (event) => {
|
|
53480
53621
|
if (event.key === "Escape") clearEditingState?.();
|
|
53481
53622
|
};
|
|
53482
53623
|
document.addEventListener("keydown", onKeyDown);
|
|
53483
53624
|
return () => document.removeEventListener("keydown", onKeyDown);
|
|
53484
53625
|
}, [clearEditingState]);
|
|
53485
|
-
return /* @__PURE__ */
|
|
53626
|
+
return /* @__PURE__ */ import_react215.default.createElement(
|
|
53486
53627
|
"form",
|
|
53487
53628
|
{
|
|
53488
53629
|
autoComplete: "off",
|
|
53489
53630
|
className: "str-chat__edit-message-form",
|
|
53490
53631
|
onSubmit: handleSubmit
|
|
53491
53632
|
},
|
|
53492
|
-
/* @__PURE__ */
|
|
53493
|
-
/* @__PURE__ */
|
|
53633
|
+
/* @__PURE__ */ import_react215.default.createElement(MessageInputFlat, null),
|
|
53634
|
+
/* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react215.default.createElement(
|
|
53494
53635
|
"button",
|
|
53495
53636
|
{
|
|
53496
53637
|
className: "str-chat__edit-message-cancel",
|
|
@@ -53498,7 +53639,7 @@ var EditMessageForm = () => {
|
|
|
53498
53639
|
onClick: clearEditingState
|
|
53499
53640
|
},
|
|
53500
53641
|
t2("Cancel")
|
|
53501
|
-
), /* @__PURE__ */
|
|
53642
|
+
), /* @__PURE__ */ import_react215.default.createElement(
|
|
53502
53643
|
"button",
|
|
53503
53644
|
{
|
|
53504
53645
|
className: "str-chat__edit-message-send",
|
|
@@ -53511,7 +53652,7 @@ var EditMessageForm = () => {
|
|
|
53511
53652
|
};
|
|
53512
53653
|
|
|
53513
53654
|
// src/components/MessageInput/MessageInput.tsx
|
|
53514
|
-
var
|
|
53655
|
+
var import_react216 = __toESM(require("react"));
|
|
53515
53656
|
var MessageInputProvider = (props) => {
|
|
53516
53657
|
const cooldownTimerState = useCooldownTimer();
|
|
53517
53658
|
const messageInputState = useMessageInputState(props);
|
|
@@ -53522,7 +53663,7 @@ var MessageInputProvider = (props) => {
|
|
|
53522
53663
|
...props,
|
|
53523
53664
|
emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
|
|
53524
53665
|
});
|
|
53525
|
-
return /* @__PURE__ */
|
|
53666
|
+
return /* @__PURE__ */ import_react216.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
|
|
53526
53667
|
};
|
|
53527
53668
|
var UnMemoizedMessageInput = (props) => {
|
|
53528
53669
|
const { Input: PropInput } = props;
|
|
@@ -53531,57 +53672,35 @@ var UnMemoizedMessageInput = (props) => {
|
|
|
53531
53672
|
const Input = PropInput || ContextInput || MessageInputFlat;
|
|
53532
53673
|
const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
|
|
53533
53674
|
if (dragAndDropWindow)
|
|
53534
|
-
return /* @__PURE__ */
|
|
53535
|
-
return /* @__PURE__ */
|
|
53675
|
+
return /* @__PURE__ */ import_react216.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react216.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react216.default.createElement(Input, null)));
|
|
53676
|
+
return /* @__PURE__ */ import_react216.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react216.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react216.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react216.default.createElement(Input, null))));
|
|
53536
53677
|
};
|
|
53537
|
-
var MessageInput =
|
|
53678
|
+
var MessageInput = import_react216.default.memo(
|
|
53538
53679
|
UnMemoizedMessageInput
|
|
53539
53680
|
);
|
|
53540
53681
|
|
|
53541
|
-
// src/components/MML/MML.tsx
|
|
53542
|
-
var import_react214 = __toESM(require("react"));
|
|
53543
|
-
var MMLReact = import_react214.default.lazy(async () => {
|
|
53544
|
-
const mml = await Promise.resolve().then(() => __toESM(require_dist2()));
|
|
53545
|
-
return { default: mml.MML };
|
|
53546
|
-
});
|
|
53547
|
-
var MML = (props) => {
|
|
53548
|
-
const { actionHandler, align = "right", source } = props;
|
|
53549
|
-
const { theme } = useChatContext("MML");
|
|
53550
|
-
return /* @__PURE__ */ import_react214.default.createElement(import_react214.Suspense, { fallback: null }, /* @__PURE__ */ import_react214.default.createElement(
|
|
53551
|
-
MMLReact,
|
|
53552
|
-
{
|
|
53553
|
-
className: `mml-align-${align}`,
|
|
53554
|
-
Loading: null,
|
|
53555
|
-
onSubmit: actionHandler,
|
|
53556
|
-
source,
|
|
53557
|
-
Success: null,
|
|
53558
|
-
theme: (theme || "").replace(" ", "-")
|
|
53559
|
-
}
|
|
53560
|
-
));
|
|
53561
|
-
};
|
|
53562
|
-
|
|
53563
53682
|
// src/components/Reactions/ReactionsList.tsx
|
|
53564
|
-
var
|
|
53683
|
+
var import_react220 = __toESM(require("react"));
|
|
53565
53684
|
var import_clsx56 = __toESM(require("clsx"));
|
|
53566
53685
|
|
|
53567
53686
|
// src/components/Reactions/ReactionsListModal.tsx
|
|
53568
|
-
var
|
|
53687
|
+
var import_react218 = __toESM(require("react"));
|
|
53569
53688
|
var import_clsx55 = __toESM(require("clsx"));
|
|
53570
53689
|
|
|
53571
53690
|
// src/components/Reactions/hooks/useFetchReactions.ts
|
|
53572
|
-
var
|
|
53691
|
+
var import_react217 = require("react");
|
|
53573
53692
|
function useFetchReactions(options) {
|
|
53574
53693
|
const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
|
|
53575
|
-
const [reactions, setReactions] = (0,
|
|
53694
|
+
const [reactions, setReactions] = (0, import_react217.useState)([]);
|
|
53576
53695
|
const {
|
|
53577
53696
|
handleFetchReactions: propHandleFetchReactions,
|
|
53578
53697
|
reactionType,
|
|
53579
53698
|
shouldFetch,
|
|
53580
53699
|
sort
|
|
53581
53700
|
} = options;
|
|
53582
|
-
const [isLoading, setIsLoading] = (0,
|
|
53701
|
+
const [isLoading, setIsLoading] = (0, import_react217.useState)(shouldFetch);
|
|
53583
53702
|
const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
|
|
53584
|
-
(0,
|
|
53703
|
+
(0, import_react217.useEffect)(() => {
|
|
53585
53704
|
if (!shouldFetch) {
|
|
53586
53705
|
return;
|
|
53587
53706
|
}
|
|
@@ -53637,24 +53756,24 @@ function ReactionsListModal({
|
|
|
53637
53756
|
shouldFetch: modalProps.open,
|
|
53638
53757
|
sort: reactionDetailsSort
|
|
53639
53758
|
});
|
|
53640
|
-
const reactionDetailsWithLegacyFallback = (0,
|
|
53759
|
+
const reactionDetailsWithLegacyFallback = (0, import_react218.useMemo)(
|
|
53641
53760
|
() => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
|
|
53642
53761
|
[legacySortReactionDetails, reactionDetails]
|
|
53643
53762
|
);
|
|
53644
|
-
return /* @__PURE__ */
|
|
53763
|
+
return /* @__PURE__ */ import_react218.default.createElement(
|
|
53645
53764
|
Modal,
|
|
53646
53765
|
{
|
|
53647
53766
|
...modalProps,
|
|
53648
53767
|
className: (0, import_clsx55.default)("str-chat__message-reactions-details-modal", modalProps.className)
|
|
53649
53768
|
},
|
|
53650
|
-
/* @__PURE__ */
|
|
53769
|
+
/* @__PURE__ */ import_react218.default.createElement(
|
|
53651
53770
|
"div",
|
|
53652
53771
|
{
|
|
53653
53772
|
className: "str-chat__message-reactions-details",
|
|
53654
53773
|
"data-testid": "reactions-list-modal"
|
|
53655
53774
|
},
|
|
53656
|
-
/* @__PURE__ */
|
|
53657
|
-
({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
53775
|
+
/* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
|
|
53776
|
+
({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react218.default.createElement(
|
|
53658
53777
|
"div",
|
|
53659
53778
|
{
|
|
53660
53779
|
className: (0, import_clsx55.default)("str-chat__message-reactions-details-reaction-type", {
|
|
@@ -53666,25 +53785,25 @@ function ReactionsListModal({
|
|
|
53666
53785
|
reactionType
|
|
53667
53786
|
)
|
|
53668
53787
|
},
|
|
53669
|
-
/* @__PURE__ */
|
|
53788
|
+
/* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react218.default.createElement(EmojiComponent, null)),
|
|
53670
53789
|
"\xA0",
|
|
53671
|
-
/* @__PURE__ */
|
|
53790
|
+
/* @__PURE__ */ import_react218.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
|
|
53672
53791
|
)
|
|
53673
53792
|
)),
|
|
53674
|
-
SelectedEmojiComponent && /* @__PURE__ */
|
|
53675
|
-
/* @__PURE__ */
|
|
53793
|
+
SelectedEmojiComponent && /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react218.default.createElement(SelectedEmojiComponent, null)),
|
|
53794
|
+
/* @__PURE__ */ import_react218.default.createElement(
|
|
53676
53795
|
"div",
|
|
53677
53796
|
{
|
|
53678
53797
|
className: "str-chat__message-reactions-details-reacting-users",
|
|
53679
53798
|
"data-testid": "all-reacting-users"
|
|
53680
53799
|
},
|
|
53681
|
-
areReactionsLoading ? /* @__PURE__ */
|
|
53800
|
+
areReactionsLoading ? /* @__PURE__ */ import_react218.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react218.default.createElement(
|
|
53682
53801
|
"div",
|
|
53683
53802
|
{
|
|
53684
53803
|
className: "str-chat__message-reactions-details-reacting-user",
|
|
53685
53804
|
key: user?.id
|
|
53686
53805
|
},
|
|
53687
|
-
/* @__PURE__ */
|
|
53806
|
+
/* @__PURE__ */ import_react218.default.createElement(
|
|
53688
53807
|
Avatar,
|
|
53689
53808
|
{
|
|
53690
53809
|
className: "stream-chat__avatar--reaction",
|
|
@@ -53693,7 +53812,7 @@ function ReactionsListModal({
|
|
|
53693
53812
|
name: user?.name || user?.id
|
|
53694
53813
|
}
|
|
53695
53814
|
),
|
|
53696
|
-
/* @__PURE__ */
|
|
53815
|
+
/* @__PURE__ */ import_react218.default.createElement(
|
|
53697
53816
|
"span",
|
|
53698
53817
|
{
|
|
53699
53818
|
className: "str-chat__user-item--name",
|
|
@@ -53708,7 +53827,7 @@ function ReactionsListModal({
|
|
|
53708
53827
|
}
|
|
53709
53828
|
|
|
53710
53829
|
// src/components/Reactions/hooks/useProcessReactions.tsx
|
|
53711
|
-
var
|
|
53830
|
+
var import_react219 = require("react");
|
|
53712
53831
|
var defaultReactionsSort = (a2, b) => {
|
|
53713
53832
|
if (a2.firstReactionAt && b.firstReactionAt) {
|
|
53714
53833
|
return +a2.firstReactionAt - +b.firstReactionAt;
|
|
@@ -53730,19 +53849,19 @@ var useProcessReactions = (params) => {
|
|
|
53730
53849
|
const latestReactions = propReactions || message.latest_reactions;
|
|
53731
53850
|
const ownReactions = propOwnReactions || message?.own_reactions;
|
|
53732
53851
|
const reactionGroups = propReactionGroups || message?.reaction_groups;
|
|
53733
|
-
const isOwnReaction = (0,
|
|
53852
|
+
const isOwnReaction = (0, import_react219.useCallback)(
|
|
53734
53853
|
(reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
|
|
53735
53854
|
[ownReactions]
|
|
53736
53855
|
);
|
|
53737
|
-
const getEmojiByReactionType = (0,
|
|
53856
|
+
const getEmojiByReactionType = (0, import_react219.useCallback)(
|
|
53738
53857
|
(reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
|
|
53739
53858
|
[reactionOptions]
|
|
53740
53859
|
);
|
|
53741
|
-
const isSupportedReaction = (0,
|
|
53860
|
+
const isSupportedReaction = (0, import_react219.useCallback)(
|
|
53742
53861
|
(reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
|
|
53743
53862
|
[reactionOptions]
|
|
53744
53863
|
);
|
|
53745
|
-
const getLatestReactedUserNames = (0,
|
|
53864
|
+
const getLatestReactedUserNames = (0, import_react219.useCallback)(
|
|
53746
53865
|
(reactionType) => latestReactions?.flatMap((reaction) => {
|
|
53747
53866
|
if (reactionType && reactionType === reaction.type) {
|
|
53748
53867
|
const username = reaction.user?.name || reaction.user?.id;
|
|
@@ -53752,7 +53871,7 @@ var useProcessReactions = (params) => {
|
|
|
53752
53871
|
}) ?? [],
|
|
53753
53872
|
[latestReactions]
|
|
53754
53873
|
);
|
|
53755
|
-
const existingReactions = (0,
|
|
53874
|
+
const existingReactions = (0, import_react219.useMemo)(() => {
|
|
53756
53875
|
if (!reactionGroups) {
|
|
53757
53876
|
return [];
|
|
53758
53877
|
}
|
|
@@ -53786,7 +53905,7 @@ var useProcessReactions = (params) => {
|
|
|
53786
53905
|
sortReactions
|
|
53787
53906
|
]);
|
|
53788
53907
|
const hasReactions = existingReactions.length > 0;
|
|
53789
|
-
const totalReactionCount = (0,
|
|
53908
|
+
const totalReactionCount = (0, import_react219.useMemo)(
|
|
53790
53909
|
() => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
|
|
53791
53910
|
[existingReactions]
|
|
53792
53911
|
);
|
|
@@ -53808,7 +53927,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53808
53927
|
...rest
|
|
53809
53928
|
} = props;
|
|
53810
53929
|
const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
|
|
53811
|
-
const [selectedReactionType, setSelectedReactionType] = (0,
|
|
53930
|
+
const [selectedReactionType, setSelectedReactionType] = (0, import_react220.useState)(null);
|
|
53812
53931
|
const { t: t2 } = useTranslationContext("ReactionsList");
|
|
53813
53932
|
const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
|
|
53814
53933
|
const handleReactionButtonClick = (reactionType) => {
|
|
@@ -53818,7 +53937,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53818
53937
|
setSelectedReactionType(reactionType);
|
|
53819
53938
|
};
|
|
53820
53939
|
if (!hasReactions) return null;
|
|
53821
|
-
return /* @__PURE__ */
|
|
53940
|
+
return /* @__PURE__ */ import_react220.default.createElement(import_react220.default.Fragment, null, /* @__PURE__ */ import_react220.default.createElement(
|
|
53822
53941
|
"div",
|
|
53823
53942
|
{
|
|
53824
53943
|
"aria-label": t2("aria/Reaction list"),
|
|
@@ -53829,8 +53948,8 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53829
53948
|
"data-testid": "reaction-list",
|
|
53830
53949
|
role: "figure"
|
|
53831
53950
|
},
|
|
53832
|
-
/* @__PURE__ */
|
|
53833
|
-
({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
53951
|
+
/* @__PURE__ */ import_react220.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
|
|
53952
|
+
({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react220.default.createElement(
|
|
53834
53953
|
"li",
|
|
53835
53954
|
{
|
|
53836
53955
|
className: (0, import_clsx56.default)("str-chat__message-reaction", {
|
|
@@ -53838,7 +53957,7 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53838
53957
|
}),
|
|
53839
53958
|
key: reactionType
|
|
53840
53959
|
},
|
|
53841
|
-
/* @__PURE__ */
|
|
53960
|
+
/* @__PURE__ */ import_react220.default.createElement(
|
|
53842
53961
|
"button",
|
|
53843
53962
|
{
|
|
53844
53963
|
"aria-label": `Reactions: ${reactionType}`,
|
|
@@ -53846,9 +53965,9 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53846
53965
|
onClick: () => handleReactionButtonClick(reactionType),
|
|
53847
53966
|
type: "button"
|
|
53848
53967
|
},
|
|
53849
|
-
/* @__PURE__ */
|
|
53968
|
+
/* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react220.default.createElement(EmojiComponent, null)),
|
|
53850
53969
|
"\xA0",
|
|
53851
|
-
/* @__PURE__ */
|
|
53970
|
+
/* @__PURE__ */ import_react220.default.createElement(
|
|
53852
53971
|
"span",
|
|
53853
53972
|
{
|
|
53854
53973
|
className: "str-chat__message-reaction-count",
|
|
@@ -53858,8 +53977,8 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53858
53977
|
)
|
|
53859
53978
|
)
|
|
53860
53979
|
)
|
|
53861
|
-
), /* @__PURE__ */
|
|
53862
|
-
), selectedReactionType !== null && /* @__PURE__ */
|
|
53980
|
+
), /* @__PURE__ */ import_react220.default.createElement("li", null, /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
|
|
53981
|
+
), selectedReactionType !== null && /* @__PURE__ */ import_react220.default.createElement(
|
|
53863
53982
|
ReactionsListModal2,
|
|
53864
53983
|
{
|
|
53865
53984
|
handleFetchReactions,
|
|
@@ -53872,12 +53991,12 @@ var UnMemoizedReactionsList = (props) => {
|
|
|
53872
53991
|
}
|
|
53873
53992
|
));
|
|
53874
53993
|
};
|
|
53875
|
-
var ReactionsList =
|
|
53994
|
+
var ReactionsList = import_react220.default.memo(
|
|
53876
53995
|
UnMemoizedReactionsList
|
|
53877
53996
|
);
|
|
53878
53997
|
|
|
53879
53998
|
// src/components/Reactions/SimpleReactionsList.tsx
|
|
53880
|
-
var
|
|
53999
|
+
var import_react221 = __toESM(require("react"));
|
|
53881
54000
|
var import_clsx57 = __toESM(require("clsx"));
|
|
53882
54001
|
var WithTooltip = ({
|
|
53883
54002
|
children,
|
|
@@ -53885,12 +54004,12 @@ var WithTooltip = ({
|
|
|
53885
54004
|
onMouseLeave,
|
|
53886
54005
|
title
|
|
53887
54006
|
}) => {
|
|
53888
|
-
const [referenceElement, setReferenceElement] = (0,
|
|
54007
|
+
const [referenceElement, setReferenceElement] = (0, import_react221.useState)(null);
|
|
53889
54008
|
const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
|
|
53890
54009
|
onMouseEnter,
|
|
53891
54010
|
onMouseLeave
|
|
53892
54011
|
});
|
|
53893
|
-
return /* @__PURE__ */
|
|
54012
|
+
return /* @__PURE__ */ import_react221.default.createElement(import_react221.default.Fragment, null, /* @__PURE__ */ import_react221.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react221.default.createElement(
|
|
53894
54013
|
"span",
|
|
53895
54014
|
{
|
|
53896
54015
|
onMouseEnter: handleEnter,
|
|
@@ -53906,7 +54025,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
53906
54025
|
const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
|
|
53907
54026
|
const handleReaction = propHandleReaction || contextHandleReaction;
|
|
53908
54027
|
if (!hasReactions) return null;
|
|
53909
|
-
return /* @__PURE__ */
|
|
54028
|
+
return /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react221.default.createElement(
|
|
53910
54029
|
"ul",
|
|
53911
54030
|
{
|
|
53912
54031
|
className: "str-chat__simple-reactions-list str-chat__message-reactions",
|
|
@@ -53915,7 +54034,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
53915
54034
|
existingReactions.map(
|
|
53916
54035
|
({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
|
|
53917
54036
|
const tooltipContent = latestReactedUserNames.join(", ");
|
|
53918
|
-
return EmojiComponent && /* @__PURE__ */
|
|
54037
|
+
return EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
|
|
53919
54038
|
"li",
|
|
53920
54039
|
{
|
|
53921
54040
|
className: (0, import_clsx57.default)("str-chat__simple-reactions-list-item", {
|
|
@@ -53925,19 +54044,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
|
|
|
53925
54044
|
onClick: (event) => handleReaction(reactionType, event),
|
|
53926
54045
|
onKeyUp: (event) => handleReaction(reactionType, event)
|
|
53927
54046
|
},
|
|
53928
|
-
/* @__PURE__ */
|
|
54047
|
+
/* @__PURE__ */ import_react221.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null))
|
|
53929
54048
|
);
|
|
53930
54049
|
}
|
|
53931
54050
|
),
|
|
53932
|
-
/* @__PURE__ */
|
|
54051
|
+
/* @__PURE__ */ import_react221.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
|
|
53933
54052
|
));
|
|
53934
54053
|
};
|
|
53935
|
-
var SimpleReactionsList =
|
|
54054
|
+
var SimpleReactionsList = import_react221.default.memo(
|
|
53936
54055
|
UnMemoizedSimpleReactionsList
|
|
53937
54056
|
);
|
|
53938
54057
|
|
|
53939
54058
|
// src/components/Message/MessageEditedTimestamp.tsx
|
|
53940
|
-
var
|
|
54059
|
+
var import_react222 = __toESM(require("react"));
|
|
53941
54060
|
var import_clsx58 = __toESM(require("clsx"));
|
|
53942
54061
|
function MessageEditedTimestamp({
|
|
53943
54062
|
message: propMessage,
|
|
@@ -53953,7 +54072,7 @@ function MessageEditedTimestamp({
|
|
|
53953
54072
|
if (!isMessageEdited(message)) {
|
|
53954
54073
|
return null;
|
|
53955
54074
|
}
|
|
53956
|
-
return /* @__PURE__ */
|
|
54075
|
+
return /* @__PURE__ */ import_react222.default.createElement(
|
|
53957
54076
|
"div",
|
|
53958
54077
|
{
|
|
53959
54078
|
className: (0, import_clsx58.default)(
|
|
@@ -53964,36 +54083,10 @@ function MessageEditedTimestamp({
|
|
|
53964
54083
|
},
|
|
53965
54084
|
t2("Edited"),
|
|
53966
54085
|
" ",
|
|
53967
|
-
/* @__PURE__ */
|
|
54086
|
+
/* @__PURE__ */ import_react222.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
|
|
53968
54087
|
);
|
|
53969
54088
|
}
|
|
53970
54089
|
|
|
53971
|
-
// src/components/Message/StreamedMessageText.tsx
|
|
53972
|
-
var import_react221 = __toESM(require("react"));
|
|
53973
|
-
var StreamedMessageText = (props) => {
|
|
53974
|
-
const {
|
|
53975
|
-
message: messageFromProps,
|
|
53976
|
-
renderingLetterCount,
|
|
53977
|
-
renderText: renderText2,
|
|
53978
|
-
streamingLetterIntervalMs
|
|
53979
|
-
} = props;
|
|
53980
|
-
const { message: messageFromContext } = useMessageContext("StreamedMessageText");
|
|
53981
|
-
const message = messageFromProps || messageFromContext;
|
|
53982
|
-
const { text: text7 = "" } = message;
|
|
53983
|
-
const { streamedMessageText } = useMessageTextStreaming({
|
|
53984
|
-
renderingLetterCount,
|
|
53985
|
-
streamingLetterIntervalMs,
|
|
53986
|
-
text: text7
|
|
53987
|
-
});
|
|
53988
|
-
return /* @__PURE__ */ import_react221.default.createElement(
|
|
53989
|
-
MessageText,
|
|
53990
|
-
{
|
|
53991
|
-
message: { ...message, text: streamedMessageText },
|
|
53992
|
-
renderText: renderText2
|
|
53993
|
-
}
|
|
53994
|
-
);
|
|
53995
|
-
};
|
|
53996
|
-
|
|
53997
54090
|
// src/components/Message/MessageSimple.tsx
|
|
53998
54091
|
var MessageSimpleWithContext = (props) => {
|
|
53999
54092
|
const {
|
|
@@ -54017,8 +54110,8 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54017
54110
|
} = props;
|
|
54018
54111
|
const { client } = useChatContext("MessageSimple");
|
|
54019
54112
|
const { t: t2 } = useTranslationContext("MessageSimple");
|
|
54020
|
-
const [isBounceDialogOpen, setIsBounceDialogOpen] = (0,
|
|
54021
|
-
const [isEditedTimestampOpen, setEditedTimestampOpen] = (0,
|
|
54113
|
+
const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react223.useState)(false);
|
|
54114
|
+
const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react223.useState)(false);
|
|
54022
54115
|
const {
|
|
54023
54116
|
Attachment: Attachment2 = Attachment,
|
|
54024
54117
|
Avatar: Avatar2 = Avatar,
|
|
@@ -54038,7 +54131,7 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54038
54131
|
} = useComponentContext("MessageSimple");
|
|
54039
54132
|
const hasAttachment = messageHasAttachments(message);
|
|
54040
54133
|
const hasReactions = messageHasReactions(message);
|
|
54041
|
-
const isAIGenerated = (0,
|
|
54134
|
+
const isAIGenerated = (0, import_react223.useMemo)(
|
|
54042
54135
|
() => isMessageAIGenerated?.(message),
|
|
54043
54136
|
[isMessageAIGenerated, message]
|
|
54044
54137
|
);
|
|
@@ -54046,7 +54139,7 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54046
54139
|
return null;
|
|
54047
54140
|
}
|
|
54048
54141
|
if (message.deleted_at || message.type === "deleted") {
|
|
54049
|
-
return /* @__PURE__ */
|
|
54142
|
+
return /* @__PURE__ */ import_react223.default.createElement(MessageDeleted2, { message });
|
|
54050
54143
|
}
|
|
54051
54144
|
const showMetadata = !groupedByUser || endOfGroup;
|
|
54052
54145
|
const showReplyCountButton = !threadList && !!message.reply_count;
|
|
@@ -54080,14 +54173,14 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54080
54173
|
}
|
|
54081
54174
|
);
|
|
54082
54175
|
const poll = message.poll_id && client.polls.fromState(message.poll_id);
|
|
54083
|
-
return /* @__PURE__ */
|
|
54176
|
+
return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, editing && /* @__PURE__ */ import_react223.default.createElement(
|
|
54084
54177
|
Modal,
|
|
54085
54178
|
{
|
|
54086
54179
|
className: "str-chat__edit-message-modal",
|
|
54087
54180
|
onClose: clearEditingState,
|
|
54088
54181
|
open: editing
|
|
54089
54182
|
},
|
|
54090
|
-
/* @__PURE__ */
|
|
54183
|
+
/* @__PURE__ */ import_react223.default.createElement(
|
|
54091
54184
|
MessageInput,
|
|
54092
54185
|
{
|
|
54093
54186
|
clearEditingState,
|
|
@@ -54098,14 +54191,14 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54098
54191
|
...additionalMessageInputProps
|
|
54099
54192
|
}
|
|
54100
54193
|
)
|
|
54101
|
-
), isBounceDialogOpen && /* @__PURE__ */
|
|
54194
|
+
), isBounceDialogOpen && /* @__PURE__ */ import_react223.default.createElement(
|
|
54102
54195
|
MessageBounceModal,
|
|
54103
54196
|
{
|
|
54104
54197
|
MessageBouncePrompt: MessageBouncePrompt2,
|
|
54105
54198
|
onClose: () => setIsBounceDialogOpen(false),
|
|
54106
54199
|
open: isBounceDialogOpen
|
|
54107
54200
|
}
|
|
54108
|
-
), /* @__PURE__ */
|
|
54201
|
+
), /* @__PURE__ */ import_react223.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react223.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react223.default.createElement(
|
|
54109
54202
|
Avatar2,
|
|
54110
54203
|
{
|
|
54111
54204
|
image: message.user.image,
|
|
@@ -54114,7 +54207,7 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54114
54207
|
onMouseOver: onUserHover,
|
|
54115
54208
|
user: message.user
|
|
54116
54209
|
}
|
|
54117
|
-
), /* @__PURE__ */
|
|
54210
|
+
), /* @__PURE__ */ import_react223.default.createElement(
|
|
54118
54211
|
"div",
|
|
54119
54212
|
{
|
|
54120
54213
|
className: (0, import_clsx59.default)("str-chat__message-inner", {
|
|
@@ -54124,37 +54217,37 @@ var MessageSimpleWithContext = (props) => {
|
|
|
54124
54217
|
onClick: handleClick,
|
|
54125
54218
|
onKeyUp: handleClick
|
|
54126
54219
|
},
|
|
54127
|
-
/* @__PURE__ */
|
|
54128
|
-
/* @__PURE__ */
|
|
54129
|
-
/* @__PURE__ */
|
|
54220
|
+
/* @__PURE__ */ import_react223.default.createElement(MessageActions2, null),
|
|
54221
|
+
/* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react223.default.createElement(ReactionsList2, { reverse: true })),
|
|
54222
|
+
/* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react223.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react223.default.createElement(
|
|
54130
54223
|
Attachment2,
|
|
54131
54224
|
{
|
|
54132
54225
|
actionHandler: handleAction,
|
|
54133
54226
|
attachments: message.attachments
|
|
54134
54227
|
}
|
|
54135
|
-
) : null, isAIGenerated ? /* @__PURE__ */
|
|
54228
|
+
) : null, isAIGenerated ? /* @__PURE__ */ import_react223.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react223.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react223.default.createElement(
|
|
54136
54229
|
MML,
|
|
54137
54230
|
{
|
|
54138
54231
|
actionHandler: handleAction,
|
|
54139
54232
|
align: isMyMessage() ? "right" : "left",
|
|
54140
54233
|
source: message.mml
|
|
54141
54234
|
}
|
|
54142
|
-
), /* @__PURE__ */
|
|
54143
|
-
), showReplyCountButton && /* @__PURE__ */
|
|
54235
|
+
), /* @__PURE__ */ import_react223.default.createElement(MessageErrorIcon, null))
|
|
54236
|
+
), showReplyCountButton && /* @__PURE__ */ import_react223.default.createElement(
|
|
54144
54237
|
MessageRepliesCountButton2,
|
|
54145
54238
|
{
|
|
54146
54239
|
onClick: handleOpenThread,
|
|
54147
54240
|
reply_count: message.reply_count
|
|
54148
54241
|
}
|
|
54149
|
-
), showMetadata && /* @__PURE__ */
|
|
54242
|
+
), showMetadata && /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react223.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react223.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react223.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
|
|
54150
54243
|
};
|
|
54151
|
-
var MemoizedMessageSimple =
|
|
54244
|
+
var MemoizedMessageSimple = import_react223.default.memo(
|
|
54152
54245
|
MessageSimpleWithContext,
|
|
54153
54246
|
areMessageUIPropsEqual
|
|
54154
54247
|
);
|
|
54155
54248
|
var MessageSimple = (props) => {
|
|
54156
54249
|
const messageContext = useMessageContext("MessageSimple");
|
|
54157
|
-
return /* @__PURE__ */
|
|
54250
|
+
return /* @__PURE__ */ import_react223.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
|
|
54158
54251
|
};
|
|
54159
54252
|
|
|
54160
54253
|
// src/components/Message/Message.tsx
|
|
@@ -54190,11 +54283,11 @@ var MessageWithContext = (props) => {
|
|
|
54190
54283
|
canReply,
|
|
54191
54284
|
isMyMessage
|
|
54192
54285
|
} = userRoles;
|
|
54193
|
-
const messageIsUnread = (0,
|
|
54286
|
+
const messageIsUnread = (0, import_react224.useMemo)(
|
|
54194
54287
|
() => !!(!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())),
|
|
54195
54288
|
[client, isMyMessage, message.created_at, read]
|
|
54196
54289
|
);
|
|
54197
|
-
const messageActionsHandler = (0,
|
|
54290
|
+
const messageActionsHandler = (0, import_react224.useCallback)(
|
|
54198
54291
|
() => getMessageActions(messageActions, {
|
|
54199
54292
|
canDelete,
|
|
54200
54293
|
canEdit,
|
|
@@ -54248,9 +54341,9 @@ var MessageWithContext = (props) => {
|
|
|
54248
54341
|
onUserHover,
|
|
54249
54342
|
setEditingState: setEdit
|
|
54250
54343
|
};
|
|
54251
|
-
return /* @__PURE__ */
|
|
54344
|
+
return /* @__PURE__ */ import_react224.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react224.default.createElement(MessageUIComponent, { groupedByUser }));
|
|
54252
54345
|
};
|
|
54253
|
-
var MemoizedMessage =
|
|
54346
|
+
var MemoizedMessage = import_react224.default.memo(
|
|
54254
54347
|
MessageWithContext,
|
|
54255
54348
|
areMessagePropsEqual
|
|
54256
54349
|
);
|
|
@@ -54317,7 +54410,7 @@ var Message = (props) => {
|
|
|
54317
54410
|
notify: addNotification
|
|
54318
54411
|
});
|
|
54319
54412
|
const highlighted = highlightedMessageId === message.id;
|
|
54320
|
-
return /* @__PURE__ */
|
|
54413
|
+
return /* @__PURE__ */ import_react224.default.createElement(
|
|
54321
54414
|
MemoizedMessage,
|
|
54322
54415
|
{
|
|
54323
54416
|
additionalMessageInputProps: props.additionalMessageInputProps,
|
|
@@ -54369,7 +54462,7 @@ var Message = (props) => {
|
|
|
54369
54462
|
// src/components/MessageList/GiphyPreviewMessage.tsx
|
|
54370
54463
|
var GiphyPreviewMessage = (props) => {
|
|
54371
54464
|
const { message } = props;
|
|
54372
|
-
return /* @__PURE__ */
|
|
54465
|
+
return /* @__PURE__ */ import_react225.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react225.default.createElement(Message, { message }));
|
|
54373
54466
|
};
|
|
54374
54467
|
|
|
54375
54468
|
// src/components/MessageList/MessageList.tsx
|
|
@@ -54377,7 +54470,7 @@ var import_clsx61 = __toESM(require("clsx"));
|
|
|
54377
54470
|
var import_react244 = __toESM(require("react"));
|
|
54378
54471
|
|
|
54379
54472
|
// src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
|
|
54380
|
-
var
|
|
54473
|
+
var import_react226 = require("react");
|
|
54381
54474
|
|
|
54382
54475
|
// src/components/MessageList/utils.ts
|
|
54383
54476
|
var import_nanoid9 = require("nanoid");
|
|
@@ -54560,6 +54653,7 @@ var getIsFirstUnreadMessage = ({
|
|
|
54560
54653
|
previousMessage,
|
|
54561
54654
|
unreadMessageCount = 0
|
|
54562
54655
|
}) => {
|
|
54656
|
+
if (message.parent_id) return false;
|
|
54563
54657
|
const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
54564
54658
|
const lastReadTimestamp = lastReadDate?.getTime();
|
|
54565
54659
|
const messageIsUnread = !!createdAtTimestamp && !!lastReadTimestamp && createdAtTimestamp > lastReadTimestamp;
|
|
@@ -54583,7 +54677,7 @@ var useEnrichedMessages = (args) => {
|
|
|
54583
54677
|
} = args;
|
|
54584
54678
|
const { client } = useChatContext("useEnrichedMessages");
|
|
54585
54679
|
const { HeaderComponent } = useComponentContext("useEnrichedMessages");
|
|
54586
|
-
const lastRead = (0,
|
|
54680
|
+
const lastRead = (0, import_react226.useMemo)(() => channel.lastRead?.(), [channel]);
|
|
54587
54681
|
const enableDateSeparator = !disableDateSeparator;
|
|
54588
54682
|
let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
|
|
54589
54683
|
enableDateSeparator,
|
|
@@ -54598,7 +54692,7 @@ var useEnrichedMessages = (args) => {
|
|
|
54598
54692
|
messagesWithDates = insertIntro(messagesWithDates, headerPosition);
|
|
54599
54693
|
}
|
|
54600
54694
|
const groupStylesFn = groupStyles || getGroupStyles;
|
|
54601
|
-
const messageGroupStyles = (0,
|
|
54695
|
+
const messageGroupStyles = (0, import_react226.useMemo)(
|
|
54602
54696
|
() => messagesWithDates.reduce((acc, message, i) => {
|
|
54603
54697
|
const style = groupStylesFn(
|
|
54604
54698
|
message,
|
|
@@ -54617,13 +54711,13 @@ var useEnrichedMessages = (args) => {
|
|
|
54617
54711
|
};
|
|
54618
54712
|
|
|
54619
54713
|
// src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
|
|
54620
|
-
var
|
|
54714
|
+
var import_react228 = require("react");
|
|
54621
54715
|
|
|
54622
54716
|
// src/components/MessageList/hooks/useLastReadData.ts
|
|
54623
|
-
var
|
|
54717
|
+
var import_react227 = require("react");
|
|
54624
54718
|
var useLastReadData = (props) => {
|
|
54625
54719
|
const { messages, read, returnAllReadData, userID } = props;
|
|
54626
|
-
return (0,
|
|
54720
|
+
return (0, import_react227.useMemo)(
|
|
54627
54721
|
() => getReadStates(
|
|
54628
54722
|
messages.filter(({ user }) => user?.id === userID),
|
|
54629
54723
|
read,
|
|
@@ -54655,11 +54749,11 @@ var useMessageListElements = (props) => {
|
|
|
54655
54749
|
returnAllReadData,
|
|
54656
54750
|
userID: client.userID
|
|
54657
54751
|
});
|
|
54658
|
-
const lastReceivedMessageId = (0,
|
|
54752
|
+
const lastReceivedMessageId = (0, import_react228.useMemo)(
|
|
54659
54753
|
() => getLastReceived(enrichedMessages),
|
|
54660
54754
|
[enrichedMessages]
|
|
54661
54755
|
);
|
|
54662
|
-
const elements = (0,
|
|
54756
|
+
const elements = (0, import_react228.useMemo)(
|
|
54663
54757
|
() => renderMessages({
|
|
54664
54758
|
channelUnreadUiState,
|
|
54665
54759
|
components,
|
|
@@ -54686,7 +54780,7 @@ var useMessageListElements = (props) => {
|
|
|
54686
54780
|
};
|
|
54687
54781
|
|
|
54688
54782
|
// src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
|
|
54689
|
-
var
|
|
54783
|
+
var import_react229 = require("react");
|
|
54690
54784
|
function useMessageListScrollManager(params) {
|
|
54691
54785
|
const {
|
|
54692
54786
|
loadMoreScrollThreshold,
|
|
@@ -54697,13 +54791,13 @@ function useMessageListScrollManager(params) {
|
|
|
54697
54791
|
showNewMessages
|
|
54698
54792
|
} = params;
|
|
54699
54793
|
const { client } = useChatContext("useMessageListScrollManager");
|
|
54700
|
-
const measures = (0,
|
|
54794
|
+
const measures = (0, import_react229.useRef)({
|
|
54701
54795
|
offsetHeight: 0,
|
|
54702
54796
|
scrollHeight: 0
|
|
54703
54797
|
});
|
|
54704
|
-
const messages = (0,
|
|
54705
|
-
const scrollTop = (0,
|
|
54706
|
-
(0,
|
|
54798
|
+
const messages = (0, import_react229.useRef)(void 0);
|
|
54799
|
+
const scrollTop = (0, import_react229.useRef)(0);
|
|
54800
|
+
(0, import_react229.useLayoutEffect)(() => {
|
|
54707
54801
|
const prevMeasures = measures.current;
|
|
54708
54802
|
const prevMessages = messages.current;
|
|
54709
54803
|
const newMessages = params.messages;
|
|
@@ -54743,7 +54837,7 @@ function useMessageListScrollManager(params) {
|
|
|
54743
54837
|
}
|
|
54744
54838
|
|
|
54745
54839
|
// src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
|
|
54746
|
-
var
|
|
54840
|
+
var import_react230 = require("react");
|
|
54747
54841
|
var useScrollLocationLogic = (params) => {
|
|
54748
54842
|
const {
|
|
54749
54843
|
hasMoreNewer,
|
|
@@ -54753,12 +54847,12 @@ var useScrollLocationLogic = (params) => {
|
|
|
54753
54847
|
scrolledUpThreshold = 200,
|
|
54754
54848
|
suppressAutoscroll
|
|
54755
54849
|
} = params;
|
|
54756
|
-
const [hasNewMessages, setHasNewMessages] = (0,
|
|
54757
|
-
const [wrapperRect, setWrapperRect] = (0,
|
|
54758
|
-
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0,
|
|
54759
|
-
const closeToBottom = (0,
|
|
54760
|
-
const closeToTop = (0,
|
|
54761
|
-
const scrollToBottom = (0,
|
|
54850
|
+
const [hasNewMessages, setHasNewMessages] = (0, import_react230.useState)(false);
|
|
54851
|
+
const [wrapperRect, setWrapperRect] = (0, import_react230.useState)();
|
|
54852
|
+
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react230.useState)(true);
|
|
54853
|
+
const closeToBottom = (0, import_react230.useRef)(false);
|
|
54854
|
+
const closeToTop = (0, import_react230.useRef)(false);
|
|
54855
|
+
const scrollToBottom = (0, import_react230.useCallback)(() => {
|
|
54762
54856
|
if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
|
|
54763
54857
|
return;
|
|
54764
54858
|
}
|
|
@@ -54767,7 +54861,7 @@ var useScrollLocationLogic = (params) => {
|
|
|
54767
54861
|
});
|
|
54768
54862
|
setHasNewMessages(false);
|
|
54769
54863
|
}, [listElement, hasMoreNewer, suppressAutoscroll]);
|
|
54770
|
-
(0,
|
|
54864
|
+
(0, import_react230.useLayoutEffect)(() => {
|
|
54771
54865
|
if (listElement) {
|
|
54772
54866
|
setWrapperRect(listElement.getBoundingClientRect());
|
|
54773
54867
|
scrollToBottom();
|
|
@@ -54787,7 +54881,7 @@ var useScrollLocationLogic = (params) => {
|
|
|
54787
54881
|
scrollToBottom,
|
|
54788
54882
|
showNewMessages: () => setHasNewMessages(true)
|
|
54789
54883
|
});
|
|
54790
|
-
const onScroll = (0,
|
|
54884
|
+
const onScroll = (0, import_react230.useCallback)(
|
|
54791
54885
|
(event) => {
|
|
54792
54886
|
const element3 = event.target;
|
|
54793
54887
|
const scrollTop = element3.scrollTop;
|
|
@@ -54818,22 +54912,22 @@ var useScrollLocationLogic = (params) => {
|
|
|
54818
54912
|
};
|
|
54819
54913
|
|
|
54820
54914
|
// src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
|
|
54821
|
-
var
|
|
54915
|
+
var import_react233 = require("react");
|
|
54822
54916
|
|
|
54823
54917
|
// src/components/MessageList/MessageListMainPanel.tsx
|
|
54824
|
-
var
|
|
54918
|
+
var import_react231 = __toESM(require("react"));
|
|
54825
54919
|
var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
|
|
54826
|
-
var MessageListMainPanel = ({ children }) => /* @__PURE__ */
|
|
54920
|
+
var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react231.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
|
|
54827
54921
|
|
|
54828
54922
|
// src/components/MessageList/UnreadMessagesSeparator.tsx
|
|
54829
|
-
var
|
|
54923
|
+
var import_react232 = __toESM(require("react"));
|
|
54830
54924
|
var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
|
|
54831
54925
|
var UnreadMessagesSeparator = ({
|
|
54832
54926
|
showCount,
|
|
54833
54927
|
unreadCount
|
|
54834
54928
|
}) => {
|
|
54835
54929
|
const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
|
|
54836
|
-
return /* @__PURE__ */
|
|
54930
|
+
return /* @__PURE__ */ import_react232.default.createElement(
|
|
54837
54931
|
"div",
|
|
54838
54932
|
{
|
|
54839
54933
|
className: UNREAD_MESSAGE_SEPARATOR_CLASS,
|
|
@@ -54859,10 +54953,10 @@ var useUnreadMessagesNotification = ({
|
|
|
54859
54953
|
unreadCount
|
|
54860
54954
|
}) => {
|
|
54861
54955
|
const { messages } = useChannelStateContext("UnreadMessagesNotification");
|
|
54862
|
-
const [show, setShow] = (0,
|
|
54863
|
-
const isScrolledAboveTargetTop = (0,
|
|
54956
|
+
const [show, setShow] = (0, import_react233.useState)(false);
|
|
54957
|
+
const isScrolledAboveTargetTop = (0, import_react233.useRef)(false);
|
|
54864
54958
|
const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
|
|
54865
|
-
(0,
|
|
54959
|
+
(0, import_react233.useEffect)(() => {
|
|
54866
54960
|
if (!(unreadCount && intersectionObserverIsSupported)) {
|
|
54867
54961
|
setShow(false);
|
|
54868
54962
|
return;
|
|
@@ -54909,7 +55003,7 @@ var useUnreadMessagesNotification = ({
|
|
|
54909
55003
|
showAlways,
|
|
54910
55004
|
unreadCount
|
|
54911
55005
|
]);
|
|
54912
|
-
(0,
|
|
55006
|
+
(0, import_react233.useEffect)(() => {
|
|
54913
55007
|
if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
|
|
54914
55008
|
setShow(true);
|
|
54915
55009
|
isScrolledAboveTargetTop.current = false;
|
|
@@ -54919,7 +55013,7 @@ var useUnreadMessagesNotification = ({
|
|
|
54919
55013
|
};
|
|
54920
55014
|
|
|
54921
55015
|
// src/components/MessageList/hooks/useMarkRead.ts
|
|
54922
|
-
var
|
|
55016
|
+
var import_react234 = require("react");
|
|
54923
55017
|
var hasReadLastMessage = (channel, userId) => {
|
|
54924
55018
|
const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
|
|
54925
55019
|
const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
|
|
@@ -54933,7 +55027,7 @@ var useMarkRead = ({
|
|
|
54933
55027
|
const { client } = useChatContext("useMarkRead");
|
|
54934
55028
|
const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
|
|
54935
55029
|
const { channel } = useChannelStateContext("useMarkRead");
|
|
54936
|
-
(0,
|
|
55030
|
+
(0, import_react234.useEffect)(() => {
|
|
54937
55031
|
const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
|
|
54938
55032
|
const onVisibilityChange = () => {
|
|
54939
55033
|
if (shouldMarkRead()) markRead();
|
|
@@ -54992,11 +55086,11 @@ function getPreviousLastMessage(messages, newMessage) {
|
|
|
54992
55086
|
}
|
|
54993
55087
|
|
|
54994
55088
|
// src/components/MessageList/MessageNotification.tsx
|
|
54995
|
-
var
|
|
55089
|
+
var import_react235 = __toESM(require("react"));
|
|
54996
55090
|
var UnMemoizedMessageNotification = (props) => {
|
|
54997
55091
|
const { children, onClick, showNotification = true } = props;
|
|
54998
55092
|
if (!showNotification) return null;
|
|
54999
|
-
return /* @__PURE__ */
|
|
55093
|
+
return /* @__PURE__ */ import_react235.default.createElement(
|
|
55000
55094
|
"button",
|
|
55001
55095
|
{
|
|
55002
55096
|
"aria-live": "polite",
|
|
@@ -55007,12 +55101,12 @@ var UnMemoizedMessageNotification = (props) => {
|
|
|
55007
55101
|
children
|
|
55008
55102
|
);
|
|
55009
55103
|
};
|
|
55010
|
-
var MessageNotification =
|
|
55104
|
+
var MessageNotification = import_react235.default.memo(
|
|
55011
55105
|
UnMemoizedMessageNotification
|
|
55012
55106
|
);
|
|
55013
55107
|
|
|
55014
55108
|
// src/components/MessageList/MessageListNotifications.tsx
|
|
55015
|
-
var
|
|
55109
|
+
var import_react236 = __toESM(require("react"));
|
|
55016
55110
|
var MessageListNotifications = (props) => {
|
|
55017
55111
|
const {
|
|
55018
55112
|
hasNewMessages,
|
|
@@ -55025,7 +55119,7 @@ var MessageListNotifications = (props) => {
|
|
|
55025
55119
|
unreadCount
|
|
55026
55120
|
} = props;
|
|
55027
55121
|
const { t: t2 } = useTranslationContext("MessageListNotifications");
|
|
55028
|
-
return /* @__PURE__ */
|
|
55122
|
+
return /* @__PURE__ */ import_react236.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react236.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react236.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react236.default.createElement(
|
|
55029
55123
|
MessageNotification2,
|
|
55030
55124
|
{
|
|
55031
55125
|
isMessageListScrolledToBottom,
|
|
@@ -55039,11 +55133,11 @@ var MessageListNotifications = (props) => {
|
|
|
55039
55133
|
};
|
|
55040
55134
|
|
|
55041
55135
|
// src/components/MessageList/UnreadMessagesNotification.tsx
|
|
55042
|
-
var
|
|
55136
|
+
var import_react238 = __toESM(require("react"));
|
|
55043
55137
|
|
|
55044
55138
|
// src/components/MessageList/icons.tsx
|
|
55045
|
-
var
|
|
55046
|
-
var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */
|
|
55139
|
+
var import_react237 = __toESM(require("react"));
|
|
55140
|
+
var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react237.default.createElement(
|
|
55047
55141
|
"svg",
|
|
55048
55142
|
{
|
|
55049
55143
|
className,
|
|
@@ -55054,7 +55148,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
|
|
|
55054
55148
|
width: "24",
|
|
55055
55149
|
xmlns: "http://www.w3.org/2000/svg"
|
|
55056
55150
|
},
|
|
55057
|
-
/* @__PURE__ */
|
|
55151
|
+
/* @__PURE__ */ import_react237.default.createElement(
|
|
55058
55152
|
"path",
|
|
55059
55153
|
{
|
|
55060
55154
|
d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
|
|
@@ -55062,7 +55156,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
|
|
|
55062
55156
|
}
|
|
55063
55157
|
)
|
|
55064
55158
|
);
|
|
55065
|
-
var CloseIcon2 = () => /* @__PURE__ */
|
|
55159
|
+
var CloseIcon2 = () => /* @__PURE__ */ import_react237.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react237.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" }));
|
|
55066
55160
|
|
|
55067
55161
|
// src/components/MessageList/UnreadMessagesNotification.tsx
|
|
55068
55162
|
var UnreadMessagesNotification = ({
|
|
@@ -55074,19 +55168,19 @@ var UnreadMessagesNotification = ({
|
|
|
55074
55168
|
"UnreadMessagesNotification"
|
|
55075
55169
|
);
|
|
55076
55170
|
const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
|
|
55077
|
-
return /* @__PURE__ */
|
|
55171
|
+
return /* @__PURE__ */ import_react238.default.createElement(
|
|
55078
55172
|
"div",
|
|
55079
55173
|
{
|
|
55080
55174
|
className: "str-chat__unread-messages-notification",
|
|
55081
55175
|
"data-testid": "unread-messages-notification"
|
|
55082
55176
|
},
|
|
55083
|
-
/* @__PURE__ */
|
|
55084
|
-
/* @__PURE__ */
|
|
55177
|
+
/* @__PURE__ */ import_react238.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
|
|
55178
|
+
/* @__PURE__ */ import_react238.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react238.default.createElement(CloseIcon2, null))
|
|
55085
55179
|
);
|
|
55086
55180
|
};
|
|
55087
55181
|
|
|
55088
55182
|
// src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
|
|
55089
|
-
var
|
|
55183
|
+
var import_react239 = __toESM(require("react"));
|
|
55090
55184
|
var mousewheelListener2 = (event) => {
|
|
55091
55185
|
if (event instanceof WheelEvent && event.deltaY === 1) {
|
|
55092
55186
|
event.preventDefault();
|
|
@@ -55117,10 +55211,10 @@ var InfiniteScroll = (props) => {
|
|
|
55117
55211
|
const loadPreviousPageFn = loadPreviousPage || loadMore;
|
|
55118
55212
|
const hasNextPageFlag = hasNextPage || hasMoreNewer;
|
|
55119
55213
|
const hasPreviousPageFlag = hasPreviousPage || hasMore;
|
|
55120
|
-
const scrollComponent = (0,
|
|
55121
|
-
const previousOffset = (0,
|
|
55122
|
-
const previousReverseOffset = (0,
|
|
55123
|
-
const scrollListenerRef = (0,
|
|
55214
|
+
const scrollComponent = (0, import_react239.useRef)(void 0);
|
|
55215
|
+
const previousOffset = (0, import_react239.useRef)(void 0);
|
|
55216
|
+
const previousReverseOffset = (0, import_react239.useRef)(void 0);
|
|
55217
|
+
const scrollListenerRef = (0, import_react239.useRef)(void 0);
|
|
55124
55218
|
scrollListenerRef.current = () => {
|
|
55125
55219
|
const element4 = scrollComponent.current;
|
|
55126
55220
|
if (!element4 || element4.offsetParent === null) {
|
|
@@ -55144,7 +55238,7 @@ var InfiniteScroll = (props) => {
|
|
|
55144
55238
|
loadNextPageFn();
|
|
55145
55239
|
}
|
|
55146
55240
|
};
|
|
55147
|
-
(0,
|
|
55241
|
+
(0, import_react239.useEffect)(() => {
|
|
55148
55242
|
deprecationAndReplacementWarning(
|
|
55149
55243
|
[
|
|
55150
55244
|
[{ hasMoreNewer }, { hasNextPage }],
|
|
@@ -55155,7 +55249,7 @@ var InfiniteScroll = (props) => {
|
|
|
55155
55249
|
"InfiniteScroll"
|
|
55156
55250
|
);
|
|
55157
55251
|
}, []);
|
|
55158
|
-
(0,
|
|
55252
|
+
(0, import_react239.useEffect)(() => {
|
|
55159
55253
|
const scrollElement = scrollComponent.current?.parentNode;
|
|
55160
55254
|
if (!scrollElement) return;
|
|
55161
55255
|
const scrollListener = () => scrollListenerRef.current?.();
|
|
@@ -55167,7 +55261,7 @@ var InfiniteScroll = (props) => {
|
|
|
55167
55261
|
scrollElement.removeEventListener("resize", scrollListener, useCapture);
|
|
55168
55262
|
};
|
|
55169
55263
|
}, [initialLoad, useCapture]);
|
|
55170
|
-
(0,
|
|
55264
|
+
(0, import_react239.useEffect)(() => {
|
|
55171
55265
|
const scrollElement = scrollComponent.current?.parentNode;
|
|
55172
55266
|
if (scrollElement) {
|
|
55173
55267
|
scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
|
|
@@ -55188,11 +55282,11 @@ var InfiniteScroll = (props) => {
|
|
|
55188
55282
|
if (head) {
|
|
55189
55283
|
childrenArray.unshift(head);
|
|
55190
55284
|
}
|
|
55191
|
-
return
|
|
55285
|
+
return import_react239.default.createElement(element3, attributes, childrenArray);
|
|
55192
55286
|
};
|
|
55193
55287
|
|
|
55194
55288
|
// src/components/TypingIndicator/TypingIndicator.tsx
|
|
55195
|
-
var
|
|
55289
|
+
var import_react240 = __toESM(require("react"));
|
|
55196
55290
|
var import_clsx60 = __toESM(require("clsx"));
|
|
55197
55291
|
var useJoinTypingUsers = (names) => {
|
|
55198
55292
|
const { t: t2 } = useTranslationContext();
|
|
@@ -55230,7 +55324,7 @@ var UnMemoizedTypingIndicator = (props) => {
|
|
|
55230
55324
|
return null;
|
|
55231
55325
|
}
|
|
55232
55326
|
if (!isTypingActive) return null;
|
|
55233
|
-
return /* @__PURE__ */
|
|
55327
|
+
return /* @__PURE__ */ import_react240.default.createElement(
|
|
55234
55328
|
"div",
|
|
55235
55329
|
{
|
|
55236
55330
|
className: (0, import_clsx60.default)("str-chat__typing-indicator", {
|
|
@@ -55238,90 +55332,17 @@ var UnMemoizedTypingIndicator = (props) => {
|
|
|
55238
55332
|
}),
|
|
55239
55333
|
"data-testid": "typing-indicator"
|
|
55240
55334
|
},
|
|
55241
|
-
/* @__PURE__ */
|
|
55242
|
-
/* @__PURE__ */
|
|
55335
|
+
/* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
|
|
55336
|
+
/* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
|
|
55243
55337
|
);
|
|
55244
55338
|
};
|
|
55245
|
-
var TypingIndicator =
|
|
55339
|
+
var TypingIndicator = import_react240.default.memo(
|
|
55246
55340
|
UnMemoizedTypingIndicator
|
|
55247
55341
|
);
|
|
55248
55342
|
|
|
55249
55343
|
// src/components/MessageList/renderMessages.tsx
|
|
55250
55344
|
var import_react243 = __toESM(require("react"));
|
|
55251
55345
|
|
|
55252
|
-
// src/components/Message/FixedHeightMessage.tsx
|
|
55253
|
-
var import_react240 = __toESM(require("react"));
|
|
55254
|
-
var selectColor = (number2, dark) => {
|
|
55255
|
-
const hue = number2 * 137.508;
|
|
55256
|
-
return `hsl(${hue},${dark ? "50%" : "85%"}, ${dark ? "75%" : "55%"})`;
|
|
55257
|
-
};
|
|
55258
|
-
var hashUserId = (userId) => {
|
|
55259
|
-
const hash = userId.split("").reduce((acc, c) => {
|
|
55260
|
-
acc = (acc << 5) - acc + c.charCodeAt(0);
|
|
55261
|
-
return acc & acc;
|
|
55262
|
-
}, 0);
|
|
55263
|
-
return Math.abs(hash) / 10 ** Math.ceil(Math.log10(Math.abs(hash) + 1));
|
|
55264
|
-
};
|
|
55265
|
-
var getUserColor = (theme, userId) => selectColor(hashUserId(userId), theme.includes("dark"));
|
|
55266
|
-
var UnMemoizedFixedHeightMessage = (props) => {
|
|
55267
|
-
const { groupedByUser: propGroupedByUser, message: propMessage } = props;
|
|
55268
|
-
const { theme } = useChatContext("FixedHeightMessage");
|
|
55269
|
-
const { groupedByUser: contextGroupedByUser, message: contextMessage } = useMessageContext("FixedHeightMessage");
|
|
55270
|
-
const { MessageDeleted: MessageDeleted2 = MessageDeleted } = useComponentContext("FixedHeightMessage");
|
|
55271
|
-
const { userLanguage } = useTranslationContext("FixedHeightMessage");
|
|
55272
|
-
const groupedByUser = propGroupedByUser !== void 0 ? propGroupedByUser : contextGroupedByUser;
|
|
55273
|
-
const message = propMessage || contextMessage;
|
|
55274
|
-
const handleAction = useActionHandler(message);
|
|
55275
|
-
const handleDelete2 = useDeleteHandler(message);
|
|
55276
|
-
const role = useUserRole(message);
|
|
55277
|
-
const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
|
|
55278
|
-
const renderedText = (0, import_react240.useMemo)(
|
|
55279
|
-
() => renderText(messageTextToRender, message.mentioned_users),
|
|
55280
|
-
[message.mentioned_users, messageTextToRender]
|
|
55281
|
-
);
|
|
55282
|
-
const userId = message.user?.id || "";
|
|
55283
|
-
const userColor = (0, import_react240.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
|
|
55284
|
-
const messageActionsHandler = (0, import_react240.useCallback)(
|
|
55285
|
-
() => getMessageActions(["delete"], { canDelete: role.canDelete }),
|
|
55286
|
-
[role]
|
|
55287
|
-
);
|
|
55288
|
-
const images = message?.attachments?.filter(({ type }) => type === "image");
|
|
55289
|
-
return /* @__PURE__ */ import_react240.default.createElement(
|
|
55290
|
-
"div",
|
|
55291
|
-
{
|
|
55292
|
-
className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
|
|
55293
|
-
key: message.id
|
|
55294
|
-
},
|
|
55295
|
-
message.user && /* @__PURE__ */ import_react240.default.createElement(
|
|
55296
|
-
Avatar,
|
|
55297
|
-
{
|
|
55298
|
-
image: message.user.image,
|
|
55299
|
-
name: message.user.name || message.user.id,
|
|
55300
|
-
user: message.user
|
|
55301
|
-
}
|
|
55302
|
-
),
|
|
55303
|
-
/* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react240.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react240.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react240.default.createElement(import_react240.default.Fragment, null, images && /* @__PURE__ */ import_react240.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react240.default.createElement(MML, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react240.default.createElement(
|
|
55304
|
-
MessageActions,
|
|
55305
|
-
{
|
|
55306
|
-
customWrapperClass: "str-chat__virtual-message__actions",
|
|
55307
|
-
getMessageActions: messageActionsHandler,
|
|
55308
|
-
handleDelete: handleDelete2,
|
|
55309
|
-
message,
|
|
55310
|
-
mine: () => role.isMyMessage
|
|
55311
|
-
}
|
|
55312
|
-
), /* @__PURE__ */ import_react240.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react240.default.createElement(
|
|
55313
|
-
MessageTimestamp,
|
|
55314
|
-
{
|
|
55315
|
-
customClass: "str-chat__message-simple-timestamp",
|
|
55316
|
-
message
|
|
55317
|
-
}
|
|
55318
|
-
))))))
|
|
55319
|
-
);
|
|
55320
|
-
};
|
|
55321
|
-
var FixedHeightMessage = import_react240.default.memo(
|
|
55322
|
-
UnMemoizedFixedHeightMessage
|
|
55323
|
-
);
|
|
55324
|
-
|
|
55325
55346
|
// src/components/DateSeparator/DateSeparator.tsx
|
|
55326
55347
|
var import_react241 = __toESM(require("react"));
|
|
55327
55348
|
var UnMemoizedDateSeparator = (props) => {
|
|
@@ -57676,7 +57697,7 @@ var useChat = ({
|
|
|
57676
57697
|
if (!client) return;
|
|
57677
57698
|
const userAgent = client.getUserAgent();
|
|
57678
57699
|
if (!userAgent.includes("stream-chat-react")) {
|
|
57679
|
-
client.setUserAgent(`stream-chat-react-12.
|
|
57700
|
+
client.setUserAgent(`stream-chat-react-12.13.0-${userAgent}`);
|
|
57680
57701
|
}
|
|
57681
57702
|
client.threads.registerSubscriptions();
|
|
57682
57703
|
client.polls.registerSubscriptions();
|