stream-chat-react 12.4.0 → 12.5.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/assets/icons/stream-chat-icons.eot +0 -0
- package/dist/assets/icons/stream-chat-icons.svg +4 -0
- package/dist/assets/icons/stream-chat-icons.ttf +0 -0
- package/dist/assets/icons/stream-chat-icons.woff +0 -0
- package/dist/assets/icons/stream-chat-icons.woff2 +0 -0
- package/dist/components/Attachment/components/ProgressBar.d.ts +2 -2
- package/dist/components/Attachment/components/ProgressBar.js +2 -1
- package/dist/components/Channel/Channel.d.ts +1 -1
- package/dist/components/Channel/Channel.js +36 -15
- package/dist/components/Channel/constants.d.ts +1 -0
- package/dist/components/Channel/constants.js +1 -0
- package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -0
- package/dist/components/Channel/hooks/useChannelContainerClasses.js +10 -5
- package/dist/components/ChannelPreview/utils.js +35 -0
- package/dist/components/Chat/hooks/useChat.js +2 -0
- package/dist/components/Dialog/DialogAnchor.d.ts +1 -2
- package/dist/components/Dialog/DialogMenu.d.ts +3 -0
- package/dist/components/Dialog/DialogMenu.js +5 -0
- package/dist/components/Dialog/DialogPortal.d.ts +1 -1
- package/dist/components/Dialog/DialogPortal.js +4 -12
- package/dist/components/Dialog/FormDialog.d.ts +23 -0
- package/dist/components/Dialog/FormDialog.js +72 -0
- package/dist/components/Dialog/PromptDialog.d.ts +8 -0
- package/dist/components/Dialog/PromptDialog.js +7 -0
- package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +7 -0
- package/dist/components/DragAndDrop/DragAndDropContainer.js +93 -0
- package/dist/components/Form/FieldError.d.ts +6 -0
- package/dist/components/Form/FieldError.js +3 -0
- package/dist/components/Form/SwitchField.d.ts +7 -0
- package/dist/components/Form/SwitchField.js +21 -0
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +10 -0
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +10 -0
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +10 -0
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js +68 -0
- package/dist/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts +18 -0
- package/dist/components/InfiniteScrollPaginator/hooks/useCursorPaginator.js +41 -0
- package/dist/components/Message/MessageSimple.js +5 -1
- package/dist/components/Message/QuotedMessage.js +8 -4
- package/dist/components/Message/hooks/useUserRole.js +3 -2
- package/dist/components/Message/index.d.ts +1 -0
- package/dist/components/MessageInput/AttachmentSelector.d.ts +25 -0
- package/dist/components/MessageInput/AttachmentSelector.js +125 -0
- package/dist/components/MessageInput/EditMessageForm.js +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts +2 -0
- package/dist/components/MessageInput/MessageInput.js +9 -4
- package/dist/components/MessageInput/MessageInputFlat.js +4 -10
- package/dist/components/MessageInput/QuotedMessagePreview.js +7 -3
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +4 -1
- package/dist/components/MessageInput/index.d.ts +1 -0
- package/dist/components/MessageInput/index.js +1 -0
- package/dist/components/Modal/ModalHeader.d.ts +8 -0
- package/dist/components/Modal/ModalHeader.js +6 -0
- package/dist/components/Poll/Poll.d.ts +7 -0
- package/dist/components/Poll/Poll.js +8 -0
- package/dist/components/Poll/PollActions/AddCommentForm.d.ts +7 -0
- package/dist/components/Poll/PollActions/AddCommentForm.js +24 -0
- package/dist/components/Poll/PollActions/EndPollDialog.d.ts +6 -0
- package/dist/components/Poll/PollActions/EndPollDialog.js +19 -0
- package/dist/components/Poll/PollActions/PollAction.d.ts +9 -0
- package/dist/components/Poll/PollActions/PollAction.js +5 -0
- package/dist/components/Poll/PollActions/PollActions.d.ts +17 -0
- package/dist/components/Poll/PollActions/PollActions.js +46 -0
- package/dist/components/Poll/PollActions/PollAnswerList.d.ts +7 -0
- package/dist/components/Poll/PollActions/PollAnswerList.js +28 -0
- package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +6 -0
- package/dist/components/Poll/PollActions/PollOptionsFullList.js +16 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +7 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +18 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +9 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.js +19 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +11 -0
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +18 -0
- package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +6 -0
- package/dist/components/Poll/PollActions/PollResults/PollResults.js +33 -0
- package/dist/components/Poll/PollActions/PollResults/index.d.ts +1 -0
- package/dist/components/Poll/PollActions/PollResults/index.js +1 -0
- package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +7 -0
- package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +37 -0
- package/dist/components/Poll/PollActions/index.d.ts +7 -0
- package/dist/components/Poll/PollActions/index.js +7 -0
- package/dist/components/Poll/PollContent.d.ts +3 -0
- package/dist/components/Poll/PollContent.js +18 -0
- package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +9 -0
- package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +70 -0
- package/dist/components/Poll/PollCreationDialog/PollCreationDialog.d.ts +5 -0
- package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +87 -0
- package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +8 -0
- package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +44 -0
- package/dist/components/Poll/PollCreationDialog/index.d.ts +1 -0
- package/dist/components/Poll/PollCreationDialog/index.js +1 -0
- package/dist/components/Poll/PollCreationDialog/types.d.ts +21 -0
- package/dist/components/Poll/PollCreationDialog/types.js +1 -0
- package/dist/components/Poll/PollHeader.d.ts +3 -0
- package/dist/components/Poll/PollHeader.js +31 -0
- package/dist/components/Poll/PollOptionList.d.ts +6 -0
- package/dist/components/Poll/PollOptionList.js +14 -0
- package/dist/components/Poll/PollOptionSelector.d.ts +19 -0
- package/dist/components/Poll/PollOptionSelector.js +53 -0
- package/dist/components/Poll/PollVote.d.ts +12 -0
- package/dist/components/Poll/PollVote.js +31 -0
- package/dist/components/Poll/QuotedPoll.d.ts +3 -0
- package/dist/components/Poll/QuotedPoll.js +17 -0
- package/dist/components/Poll/constants.d.ts +3 -0
- package/dist/components/Poll/constants.js +3 -0
- package/dist/components/Poll/hooks/index.d.ts +2 -0
- package/dist/components/Poll/hooks/index.js +2 -0
- package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +4 -0
- package/dist/components/Poll/hooks/useManagePollVotesRealtime.js +36 -0
- package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +13 -0
- package/dist/components/Poll/hooks/usePollAnswerPagination.js +27 -0
- package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +13 -0
- package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +27 -0
- package/dist/components/Poll/index.d.ts +10 -0
- package/dist/components/Poll/index.js +10 -0
- package/dist/components/Portal/Portal.d.ts +6 -0
- package/dist/components/Portal/Portal.js +14 -0
- package/dist/components/ReactFileUtilities/UploadButton.d.ts +11 -1
- package/dist/components/ReactFileUtilities/UploadButton.js +22 -4
- package/dist/components/Thread/Thread.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -0
- package/dist/context/AttachmentSelectorContext.d.ts +8 -0
- package/dist/context/AttachmentSelectorContext.js +6 -0
- package/dist/context/ComponentContext.d.ts +21 -5
- package/dist/context/PollContext.d.ts +11 -0
- package/dist/context/PollContext.js +7 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +1 -0
- package/dist/css/v2/index.css +2 -2
- package/dist/css/v2/index.layout.css +2 -2
- package/dist/experimental/index.browser.cjs +129 -117
- package/dist/experimental/index.browser.cjs.map +4 -4
- package/dist/experimental/index.node.cjs +129 -117
- package/dist/experimental/index.node.cjs.map +4 -4
- package/dist/i18n/Streami18n.d.ts +45 -0
- package/dist/i18n/de.json +70 -25
- package/dist/i18n/en.json +46 -1
- package/dist/i18n/es.json +74 -25
- package/dist/i18n/fr.json +83 -34
- package/dist/i18n/hi.json +54 -9
- package/dist/i18n/it.json +75 -26
- package/dist/i18n/ja.json +46 -5
- package/dist/i18n/ko.json +46 -5
- package/dist/i18n/nl.json +59 -14
- package/dist/i18n/pt.json +66 -17
- package/dist/i18n/ru.json +66 -13
- package/dist/i18n/tr.json +77 -32
- package/dist/index.browser.cjs +4232 -1860
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +4172 -1773
- package/dist/index.node.cjs.map +4 -4
- package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +2 -2
- package/dist/scss/v2/AudioRecorder/AudioRecorder-layout.scss +64 -14
- package/dist/scss/v2/AudioRecorder/AudioRecorder-theme.scss +11 -1
- package/dist/scss/v2/Avatar/Avatar-layout.scss +4 -0
- package/dist/scss/v2/ChannelList/ChannelList-layout.scss +15 -0
- package/dist/scss/v2/Dialog/Dialog-layout.scss +54 -0
- package/dist/scss/v2/Dialog/Dialog-theme.scss +103 -0
- package/dist/scss/v2/DragAndDropContainer/DragAmdDropContainer-layout.scss +5 -0
- package/dist/scss/v2/DragAndDropContainer/DragAndDropContainer-theme.scss +47 -0
- package/dist/scss/v2/Form/Form-layout.scss +9 -0
- package/dist/scss/v2/Form/Form-theme.scss +17 -0
- package/dist/scss/v2/Icon/Icon-layout.scss +6 -1
- package/dist/scss/v2/InfiniteScrollPaginator/InfiniteScrollPaginator-layout.scss +4 -0
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -9
- package/dist/scss/v2/MessageInput/MessageInput-layout.scss +29 -4
- package/dist/scss/v2/MessageInput/MessageInput-theme.scss +61 -0
- package/dist/scss/v2/Modal/Modal-layout.scss +31 -0
- package/dist/scss/v2/Modal/Modal-theme.scss +6 -0
- package/dist/scss/v2/Notification/MessageNotification-layout.scss +1 -1
- package/dist/scss/v2/Poll/Poll-layout.scss +488 -0
- package/dist/scss/v2/Poll/Poll-theme.scss +206 -0
- package/dist/scss/v2/_base.scss +4 -0
- package/dist/scss/v2/_global-theme-variables.scss +1 -1
- package/dist/scss/v2/_icons.scss +7 -0
- package/dist/scss/v2/index.layout.scss +4 -0
- package/dist/scss/v2/index.scss +4 -0
- package/dist/types/types.d.ts +6 -0
- package/dist/utils/getChannel.js +7 -3
- package/package.json +4 -4
|
@@ -40,7 +40,7 @@ module.exports = __toCommonJS(experimental_exports);
|
|
|
40
40
|
|
|
41
41
|
// src/experimental/MessageActions/MessageActions.tsx
|
|
42
42
|
var import_clsx5 = __toESM(require("clsx"));
|
|
43
|
-
var
|
|
43
|
+
var import_react25 = __toESM(require("react"));
|
|
44
44
|
|
|
45
45
|
// src/context/ChannelActionContext.tsx
|
|
46
46
|
var import_react = __toESM(require("react"));
|
|
@@ -94,11 +94,10 @@ var ComponentContext = import_react4.default.createContext({});
|
|
|
94
94
|
var useComponentContext = (_componentName) => (0, import_react4.useContext)(ComponentContext);
|
|
95
95
|
|
|
96
96
|
// src/context/DialogManagerContext.tsx
|
|
97
|
-
var
|
|
97
|
+
var import_react9 = __toESM(require("react"));
|
|
98
98
|
|
|
99
99
|
// src/components/Dialog/DialogPortal.tsx
|
|
100
|
-
var
|
|
101
|
-
var import_react_dom = require("react-dom");
|
|
100
|
+
var import_react8 = __toESM(require("react"));
|
|
102
101
|
|
|
103
102
|
// src/components/Dialog/hooks/useDialog.ts
|
|
104
103
|
var import_react6 = require("react");
|
|
@@ -138,37 +137,50 @@ var useDialogIsOpen = (id) => {
|
|
|
138
137
|
return useStateStore(dialogManager.state, dialogIsOpenSelector).isOpen;
|
|
139
138
|
};
|
|
140
139
|
|
|
141
|
-
// src/components/
|
|
142
|
-
var
|
|
140
|
+
// src/components/Portal/Portal.ts
|
|
141
|
+
var import_react7 = require("react");
|
|
142
|
+
var import_react_dom = require("react-dom");
|
|
143
|
+
var Portal = ({
|
|
143
144
|
children,
|
|
144
|
-
|
|
145
|
+
getPortalDestination,
|
|
146
|
+
isOpen
|
|
145
147
|
}) => {
|
|
146
|
-
const { dialogManager } = useDialogManager();
|
|
147
|
-
const dialogIsOpen = useDialogIsOpen(dialogId);
|
|
148
148
|
const [portalDestination, setPortalDestination] = (0, import_react7.useState)(null);
|
|
149
149
|
(0, import_react7.useLayoutEffect)(() => {
|
|
150
|
-
const destination =
|
|
151
|
-
|
|
152
|
-
);
|
|
153
|
-
if (!destination) return;
|
|
150
|
+
const destination = getPortalDestination();
|
|
151
|
+
if (!destination || !isOpen) return;
|
|
154
152
|
setPortalDestination(destination);
|
|
155
|
-
}, [
|
|
153
|
+
}, [getPortalDestination, isOpen]);
|
|
156
154
|
if (!portalDestination) return null;
|
|
157
155
|
return (0, import_react_dom.createPortal)(children, portalDestination);
|
|
158
156
|
};
|
|
159
157
|
|
|
158
|
+
// src/components/Dialog/DialogPortal.tsx
|
|
159
|
+
var DialogPortalEntry = ({
|
|
160
|
+
children,
|
|
161
|
+
dialogId
|
|
162
|
+
}) => {
|
|
163
|
+
const { dialogManager } = useDialogManager();
|
|
164
|
+
const dialogIsOpen = useDialogIsOpen(dialogId);
|
|
165
|
+
const getPortalDestination = (0, import_react8.useCallback)(
|
|
166
|
+
() => document.querySelector(`div[data-str-chat__portal-id="${dialogManager.id}"]`),
|
|
167
|
+
[dialogManager.id]
|
|
168
|
+
);
|
|
169
|
+
return /* @__PURE__ */ import_react8.default.createElement(Portal, { getPortalDestination, isOpen: dialogIsOpen }, children);
|
|
170
|
+
};
|
|
171
|
+
|
|
160
172
|
// src/context/DialogManagerContext.tsx
|
|
161
|
-
var DialogManagerProviderContext =
|
|
173
|
+
var DialogManagerProviderContext = import_react9.default.createContext(void 0);
|
|
162
174
|
var useDialogManager = () => {
|
|
163
|
-
const value = (0,
|
|
175
|
+
const value = (0, import_react9.useContext)(DialogManagerProviderContext);
|
|
164
176
|
return value;
|
|
165
177
|
};
|
|
166
178
|
|
|
167
179
|
// src/context/MessageContext.tsx
|
|
168
|
-
var
|
|
169
|
-
var MessageContext =
|
|
180
|
+
var import_react10 = __toESM(require("react"));
|
|
181
|
+
var MessageContext = import_react10.default.createContext(void 0);
|
|
170
182
|
var useMessageContext = (_componentName) => {
|
|
171
|
-
const contextValue = (0,
|
|
183
|
+
const contextValue = (0, import_react10.useContext)(MessageContext);
|
|
172
184
|
if (!contextValue) {
|
|
173
185
|
return {};
|
|
174
186
|
}
|
|
@@ -176,7 +188,7 @@ var useMessageContext = (_componentName) => {
|
|
|
176
188
|
};
|
|
177
189
|
|
|
178
190
|
// src/context/TranslationContext.tsx
|
|
179
|
-
var
|
|
191
|
+
var import_react11 = __toESM(require("react"));
|
|
180
192
|
var import_dayjs2 = __toESM(require("dayjs"));
|
|
181
193
|
var import_calendar = __toESM(require("dayjs/plugin/calendar"));
|
|
182
194
|
var import_localizedFormat = __toESM(require("dayjs/plugin/localizedFormat"));
|
|
@@ -189,13 +201,13 @@ var defaultDateTimeParser = (input) => (0, import_dayjs.default)(input);
|
|
|
189
201
|
// src/context/TranslationContext.tsx
|
|
190
202
|
import_dayjs2.default.extend(import_calendar.default);
|
|
191
203
|
import_dayjs2.default.extend(import_localizedFormat.default);
|
|
192
|
-
var TranslationContext =
|
|
204
|
+
var TranslationContext = import_react11.default.createContext({
|
|
193
205
|
t: defaultTranslatorFunction,
|
|
194
206
|
tDateTimeParser: defaultDateTimeParser,
|
|
195
207
|
userLanguage: "en"
|
|
196
208
|
});
|
|
197
209
|
var useTranslationContext = (componentName) => {
|
|
198
|
-
const contextValue = (0,
|
|
210
|
+
const contextValue = (0, import_react11.useContext)(TranslationContext);
|
|
199
211
|
if (!contextValue) {
|
|
200
212
|
console.warn(
|
|
201
213
|
`The useTranslationContext hook was called outside of the TranslationContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the ${componentName} component.`
|
|
@@ -207,12 +219,12 @@ var useTranslationContext = (componentName) => {
|
|
|
207
219
|
|
|
208
220
|
// src/components/Avatar/Avatar.tsx
|
|
209
221
|
var import_clsx = __toESM(require("clsx"));
|
|
210
|
-
var
|
|
222
|
+
var import_react13 = __toESM(require("react"));
|
|
211
223
|
|
|
212
224
|
// src/components/Threads/icons.tsx
|
|
213
|
-
var
|
|
225
|
+
var import_react12 = __toESM(require("react"));
|
|
214
226
|
var Icon = {
|
|
215
|
-
MessageBubble: (props) => /* @__PURE__ */
|
|
227
|
+
MessageBubble: (props) => /* @__PURE__ */ import_react12.default.createElement(
|
|
216
228
|
"svg",
|
|
217
229
|
{
|
|
218
230
|
className: "str-chat__icon str-chat__icon--message-bubble",
|
|
@@ -223,7 +235,7 @@ var Icon = {
|
|
|
223
235
|
xmlns: "http://www.w3.org/2000/svg",
|
|
224
236
|
...props
|
|
225
237
|
},
|
|
226
|
-
/* @__PURE__ */
|
|
238
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
227
239
|
"path",
|
|
228
240
|
{
|
|
229
241
|
d: "M1.66659 1.66665H12.3333V9.66665H2.44659L1.66659 10.4466V1.66665ZM1.66659 0.333313C0.933252 0.333313 0.339919 0.933313 0.339919 1.66665L0.333252 13.6666L2.99992 11H12.3333C13.0666 11 13.6666 10.4 13.6666 9.66665V1.66665C13.6666 0.933313 13.0666 0.333313 12.3333 0.333313H1.66659ZM2.99992 6.99998H10.9999V8.33331H2.99992V6.99998ZM2.99992 4.99998H10.9999V6.33331H2.99992V4.99998ZM2.99992 2.99998H10.9999V4.33331H2.99992V2.99998Z",
|
|
@@ -231,7 +243,7 @@ var Icon = {
|
|
|
231
243
|
}
|
|
232
244
|
)
|
|
233
245
|
),
|
|
234
|
-
MessageBubbleEmpty: (props) => /* @__PURE__ */
|
|
246
|
+
MessageBubbleEmpty: (props) => /* @__PURE__ */ import_react12.default.createElement(
|
|
235
247
|
"svg",
|
|
236
248
|
{
|
|
237
249
|
className: "str-chat__icon str-chat__icon--message-bubble-empty",
|
|
@@ -242,7 +254,7 @@ var Icon = {
|
|
|
242
254
|
xmlns: "http://www.w3.org/2000/svg",
|
|
243
255
|
...props
|
|
244
256
|
},
|
|
245
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
246
258
|
"path",
|
|
247
259
|
{
|
|
248
260
|
d: "M18 0H2C0.9 0 0 0.9 0 2V20L4 16H18C19.1 16 20 15.1 20 14V2C20 0.9 19.1 0 18 0ZM18 14H4L2 16V2H18V14Z",
|
|
@@ -250,7 +262,7 @@ var Icon = {
|
|
|
250
262
|
}
|
|
251
263
|
)
|
|
252
264
|
),
|
|
253
|
-
Reload: (props) => /* @__PURE__ */
|
|
265
|
+
Reload: (props) => /* @__PURE__ */ import_react12.default.createElement(
|
|
254
266
|
"svg",
|
|
255
267
|
{
|
|
256
268
|
className: "str-chat__icon str-chat__icon--reload",
|
|
@@ -261,7 +273,7 @@ var Icon = {
|
|
|
261
273
|
xmlns: "http://www.w3.org/2000/svg",
|
|
262
274
|
...props
|
|
263
275
|
},
|
|
264
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
265
277
|
"path",
|
|
266
278
|
{
|
|
267
279
|
d: "M8 3V0L4 4L8 8V5C11.31 5 14 7.69 14 11C14 12.01 13.75 12.97 13.3 13.8L14.76 15.26C15.54 14.03 16 12.57 16 11C16 6.58 12.42 3 8 3ZM8 17C4.69 17 2 14.31 2 11C2 9.99 2.25 9.03 2.7 8.2L1.24 6.74C0.46 7.97 0 9.43 0 11C0 15.42 3.58 19 8 19V22L12 18L8 14V17Z",
|
|
@@ -269,7 +281,7 @@ var Icon = {
|
|
|
269
281
|
}
|
|
270
282
|
)
|
|
271
283
|
),
|
|
272
|
-
User: (props) => /* @__PURE__ */
|
|
284
|
+
User: (props) => /* @__PURE__ */ import_react12.default.createElement(
|
|
273
285
|
"svg",
|
|
274
286
|
{
|
|
275
287
|
className: "str-chat__icon str-chat__icon--user",
|
|
@@ -280,7 +292,7 @@ var Icon = {
|
|
|
280
292
|
xmlns: "http://www.w3.org/2000/svg",
|
|
281
293
|
...props
|
|
282
294
|
},
|
|
283
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ import_react12.default.createElement(
|
|
284
296
|
"path",
|
|
285
297
|
{
|
|
286
298
|
d: "M8 2C9.1 2 10 2.9 10 4C10 5.1 9.1 6 8 6C6.9 6 6 5.1 6 4C6 2.9 6.9 2 8 2ZM8 12C10.7 12 13.8 13.29 14 14H2C2.23 13.28 5.31 12 8 12ZM8 0C5.79 0 4 1.79 4 4C4 6.21 5.79 8 8 8C10.21 8 12 6.21 12 4C12 1.79 10.21 0 8 0ZM8 10C5.33 10 0 11.34 0 14V16H16V14C16 11.34 10.67 10 8 10Z",
|
|
@@ -324,14 +336,14 @@ var Avatar = (props) => {
|
|
|
324
336
|
onClick = () => void 0,
|
|
325
337
|
onMouseOver = () => void 0
|
|
326
338
|
} = props;
|
|
327
|
-
const [error, setError] = (0,
|
|
328
|
-
(0,
|
|
339
|
+
const [error, setError] = (0, import_react13.useState)(false);
|
|
340
|
+
(0, import_react13.useEffect)(() => {
|
|
329
341
|
setError(false);
|
|
330
342
|
}, [image]);
|
|
331
343
|
const nameStr = name?.toString() || "";
|
|
332
344
|
const initials = getWholeChar(nameStr, 0);
|
|
333
345
|
const showImage = image && !error;
|
|
334
|
-
return /* @__PURE__ */
|
|
346
|
+
return /* @__PURE__ */ import_react13.default.createElement(
|
|
335
347
|
"div",
|
|
336
348
|
{
|
|
337
349
|
className: (0, import_clsx.default)(`str-chat__avatar str-chat__message-sender-avatar`, className, {
|
|
@@ -345,7 +357,7 @@ var Avatar = (props) => {
|
|
|
345
357
|
role: "button",
|
|
346
358
|
title: name
|
|
347
359
|
},
|
|
348
|
-
showImage ? /* @__PURE__ */
|
|
360
|
+
showImage ? /* @__PURE__ */ import_react13.default.createElement(
|
|
349
361
|
"img",
|
|
350
362
|
{
|
|
351
363
|
alt: initials,
|
|
@@ -354,7 +366,7 @@ var Avatar = (props) => {
|
|
|
354
366
|
onError: () => setError(true),
|
|
355
367
|
src: image
|
|
356
368
|
}
|
|
357
|
-
) : /* @__PURE__ */
|
|
369
|
+
) : /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, !!initials.length && /* @__PURE__ */ import_react13.default.createElement("div", { className: (0, import_clsx.default)("str-chat__avatar-fallback"), "data-testid": "avatar-fallback" }, initials), !initials.length && /* @__PURE__ */ import_react13.default.createElement(Icon.User, null))
|
|
358
370
|
);
|
|
359
371
|
};
|
|
360
372
|
|
|
@@ -393,7 +405,7 @@ var useUserRole = (message, onlySenderCanEdit, disableQuotedMessages) => {
|
|
|
393
405
|
const isOwner = channel.state.membership.role === "owner";
|
|
394
406
|
const isModerator = client.user?.role === "channel_moderator" || channel.state.membership.role === "channel_moderator" || channel.state.membership.role === "moderator" || channel.state.membership.is_moderator === true || channel.state.membership.channel_role === "channel_moderator";
|
|
395
407
|
const isMyMessage = client.userID === message.user?.id;
|
|
396
|
-
const canEdit = !onlySenderCanEdit && channelCapabilities["update-any-message"] || isMyMessage && channelCapabilities["update-own-message"];
|
|
408
|
+
const canEdit = !message.poll && (!onlySenderCanEdit && channelCapabilities["update-any-message"] || isMyMessage && channelCapabilities["update-own-message"]);
|
|
397
409
|
const canDelete = channelCapabilities["delete-any-message"] || isMyMessage && channelCapabilities["delete-own-message"];
|
|
398
410
|
const canFlag = !isMyMessage && channelCapabilities["flag-message"];
|
|
399
411
|
const canMarkUnread = channelCapabilities["read-events"];
|
|
@@ -418,8 +430,8 @@ var useUserRole = (message, onlySenderCanEdit, disableQuotedMessages) => {
|
|
|
418
430
|
};
|
|
419
431
|
|
|
420
432
|
// src/components/Message/icons.tsx
|
|
421
|
-
var
|
|
422
|
-
var ActionsIcon = ({ className = "" }) => /* @__PURE__ */
|
|
433
|
+
var import_react14 = __toESM(require("react"));
|
|
434
|
+
var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement(
|
|
423
435
|
"svg",
|
|
424
436
|
{
|
|
425
437
|
className,
|
|
@@ -428,7 +440,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default
|
|
|
428
440
|
width: "11",
|
|
429
441
|
xmlns: "http://www.w3.org/2000/svg"
|
|
430
442
|
},
|
|
431
|
-
/* @__PURE__ */
|
|
443
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
432
444
|
"path",
|
|
433
445
|
{
|
|
434
446
|
d: "M1.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z",
|
|
@@ -436,7 +448,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default
|
|
|
436
448
|
}
|
|
437
449
|
)
|
|
438
450
|
);
|
|
439
|
-
var ReactionIcon = ({ className = "" }) => /* @__PURE__ */
|
|
451
|
+
var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement(
|
|
440
452
|
"svg",
|
|
441
453
|
{
|
|
442
454
|
className,
|
|
@@ -445,9 +457,9 @@ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.defaul
|
|
|
445
457
|
width: "12",
|
|
446
458
|
xmlns: "http://www.w3.org/2000/svg"
|
|
447
459
|
},
|
|
448
|
-
/* @__PURE__ */
|
|
460
|
+
/* @__PURE__ */ import_react14.default.createElement("g", { clipRule: "evenodd", fillRule: "evenodd" }, /* @__PURE__ */ import_react14.default.createElement("path", { d: "M6 1.2C3.3 1.2 1.2 3.3 1.2 6c0 2.7 2.1 4.8 4.8 4.8 2.7 0 4.8-2.1 4.8-4.8 0-2.7-2.1-4.8-4.8-4.8zM0 6c0-3.3 2.7-6 6-6s6 2.7 6 6-2.7 6-6 6-6-2.7-6-6z" }), /* @__PURE__ */ import_react14.default.createElement("path", { d: "M5.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM8.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM3.3 6.7c.3-.2.6-.1.8.1.3.4.8.9 1.5 1 .6.2 1.4.1 2.4-1 .2-.2.6-.3.8 0 .2.2.3.6 0 .8-1.1 1.3-2.4 1.7-3.5 1.5-1-.2-1.8-.9-2.2-1.5-.2-.3-.1-.7.2-.9z" }))
|
|
449
461
|
);
|
|
450
|
-
var ThreadIcon = ({ className = "" }) => /* @__PURE__ */
|
|
462
|
+
var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react14.default.createElement("svg", { className, height: "10", width: "14", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react14.default.createElement(
|
|
451
463
|
"path",
|
|
452
464
|
{
|
|
453
465
|
d: "M8.516 3c4.78 0 4.972 6.5 4.972 6.5-1.6-2.906-2.847-3.184-4.972-3.184v2.872L3.772 4.994 8.516.5V3zM.484 5l4.5-4.237v1.78L2.416 5l2.568 2.125v1.828L.484 5z",
|
|
@@ -457,11 +469,11 @@ var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react13.default.
|
|
|
457
469
|
|
|
458
470
|
// src/components/MessageActions/MessageActions.tsx
|
|
459
471
|
var import_clsx3 = __toESM(require("clsx"));
|
|
460
|
-
var
|
|
472
|
+
var import_react16 = __toESM(require("react"));
|
|
461
473
|
|
|
462
474
|
// src/components/Dialog/DialogAnchor.tsx
|
|
463
475
|
var import_clsx2 = __toESM(require("clsx"));
|
|
464
|
-
var
|
|
476
|
+
var import_react15 = __toESM(require("react"));
|
|
465
477
|
var import_focus = require("@react-aria/focus");
|
|
466
478
|
var import_react_popper = require("react-popper");
|
|
467
479
|
function useDialogAnchor({
|
|
@@ -469,7 +481,7 @@ function useDialogAnchor({
|
|
|
469
481
|
placement,
|
|
470
482
|
referenceElement
|
|
471
483
|
}) {
|
|
472
|
-
const [popperElement, setPopperElement] = (0,
|
|
484
|
+
const [popperElement, setPopperElement] = (0, import_react15.useState)(null);
|
|
473
485
|
const { attributes, styles, update } = (0, import_react_popper.usePopper)(referenceElement, popperElement, {
|
|
474
486
|
modifiers: [
|
|
475
487
|
{
|
|
@@ -484,7 +496,7 @@ function useDialogAnchor({
|
|
|
484
496
|
],
|
|
485
497
|
placement
|
|
486
498
|
});
|
|
487
|
-
(0,
|
|
499
|
+
(0, import_react15.useEffect)(() => {
|
|
488
500
|
if (open && popperElement) {
|
|
489
501
|
update?.();
|
|
490
502
|
}
|
|
@@ -515,7 +527,7 @@ var DialogAnchor = ({
|
|
|
515
527
|
placement,
|
|
516
528
|
referenceElement
|
|
517
529
|
});
|
|
518
|
-
(0,
|
|
530
|
+
(0, import_react15.useEffect)(() => {
|
|
519
531
|
if (!open) return;
|
|
520
532
|
const hideOnEscape = (event) => {
|
|
521
533
|
if (event.key !== "Escape") return;
|
|
@@ -529,7 +541,7 @@ var DialogAnchor = ({
|
|
|
529
541
|
if (!open) {
|
|
530
542
|
return null;
|
|
531
543
|
}
|
|
532
|
-
return /* @__PURE__ */
|
|
544
|
+
return /* @__PURE__ */ import_react15.default.createElement(DialogPortalEntry, { dialogId: id }, /* @__PURE__ */ import_react15.default.createElement(import_focus.FocusScope, { autoFocus: focus, contain: trapFocus, restoreFocus: true }, /* @__PURE__ */ import_react15.default.createElement(
|
|
533
545
|
"div",
|
|
534
546
|
{
|
|
535
547
|
...restDivProps,
|
|
@@ -557,25 +569,25 @@ var MessageActionsWrapper = (props) => {
|
|
|
557
569
|
"data-testid": "message-actions",
|
|
558
570
|
onClick: toggleOpen
|
|
559
571
|
};
|
|
560
|
-
if (inline) return /* @__PURE__ */
|
|
561
|
-
return /* @__PURE__ */
|
|
572
|
+
if (inline) return /* @__PURE__ */ import_react16.default.createElement("span", { ...wrapperProps }, children);
|
|
573
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", { ...wrapperProps }, children);
|
|
562
574
|
};
|
|
563
575
|
|
|
564
576
|
// src/components/Reactions/ReactionSelectorWithButton.tsx
|
|
565
|
-
var
|
|
577
|
+
var import_react21 = __toESM(require("react"));
|
|
566
578
|
|
|
567
579
|
// src/components/Reactions/ReactionSelector.tsx
|
|
568
|
-
var
|
|
580
|
+
var import_react20 = __toESM(require("react"));
|
|
569
581
|
var import_clsx4 = __toESM(require("clsx"));
|
|
570
582
|
|
|
571
583
|
// src/components/Reactions/reactionOptions.tsx
|
|
572
|
-
var
|
|
584
|
+
var import_react19 = __toESM(require("react"));
|
|
573
585
|
|
|
574
586
|
// src/components/Reactions/StreamEmoji.tsx
|
|
575
|
-
var
|
|
587
|
+
var import_react18 = __toESM(require("react"));
|
|
576
588
|
|
|
577
589
|
// src/components/Reactions/SpriteImage.tsx
|
|
578
|
-
var
|
|
590
|
+
var import_react17 = __toESM(require("react"));
|
|
579
591
|
|
|
580
592
|
// src/components/Reactions/utils/utils.ts
|
|
581
593
|
var isMutableRef = (ref) => {
|
|
@@ -610,13 +622,13 @@ var SpriteImage = ({
|
|
|
610
622
|
style,
|
|
611
623
|
width
|
|
612
624
|
}) => {
|
|
613
|
-
const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0,
|
|
614
|
-
(0,
|
|
625
|
+
const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react17.useState)([0, 0]);
|
|
626
|
+
(0, import_react17.useEffect)(() => {
|
|
615
627
|
getImageDimensions(spriteUrl).then(setSpriteDimensions).catch(console.error);
|
|
616
628
|
}, [spriteUrl]);
|
|
617
629
|
const [x, y] = position;
|
|
618
|
-
if (!spriteHeight || !spriteWidth) return /* @__PURE__ */
|
|
619
|
-
return /* @__PURE__ */
|
|
630
|
+
if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, fallback);
|
|
631
|
+
return /* @__PURE__ */ import_react17.default.createElement(
|
|
620
632
|
"div",
|
|
621
633
|
{
|
|
622
634
|
"data-testid": "sprite-image",
|
|
@@ -654,7 +666,7 @@ var StreamEmoji = ({
|
|
|
654
666
|
type
|
|
655
667
|
}) => {
|
|
656
668
|
const position = StreamSpriteEmojiPositions[type];
|
|
657
|
-
return /* @__PURE__ */
|
|
669
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
658
670
|
SpriteImage,
|
|
659
671
|
{
|
|
660
672
|
columns: 2,
|
|
@@ -671,11 +683,11 @@ var StreamEmoji = ({
|
|
|
671
683
|
|
|
672
684
|
// src/components/Reactions/reactionOptions.tsx
|
|
673
685
|
var defaultReactionOptions = [
|
|
674
|
-
{ type: "haha", Component: () => /* @__PURE__ */
|
|
675
|
-
{ type: "like", Component: () => /* @__PURE__ */
|
|
676
|
-
{ type: "love", Component: () => /* @__PURE__ */
|
|
677
|
-
{ type: "sad", Component: () => /* @__PURE__ */
|
|
678
|
-
{ type: "wow", Component: () => /* @__PURE__ */
|
|
686
|
+
{ type: "haha", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }), name: "Joy" },
|
|
687
|
+
{ type: "like", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }), name: "Thumbs up" },
|
|
688
|
+
{ type: "love", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }), name: "Heart" },
|
|
689
|
+
{ type: "sad", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
|
|
690
|
+
{ type: "wow", Component: () => /* @__PURE__ */ import_react19.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }), name: "Astonished" }
|
|
679
691
|
];
|
|
680
692
|
|
|
681
693
|
// src/components/Reactions/ReactionSelector.tsx
|
|
@@ -707,23 +719,23 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
707
719
|
const latestReactions = propLatestReactions || message?.latest_reactions || [];
|
|
708
720
|
const ownReactions = propOwnReactions || message?.own_reactions || [];
|
|
709
721
|
const reactionGroups = propReactionGroups || message?.reaction_groups || {};
|
|
710
|
-
const [tooltipReactionType, setTooltipReactionType] = (0,
|
|
711
|
-
const [tooltipPositions, setTooltipPositions] = (0,
|
|
712
|
-
const rootRef = (0,
|
|
713
|
-
const targetRef = (0,
|
|
714
|
-
const tooltipRef = (0,
|
|
715
|
-
const showTooltip = (0,
|
|
722
|
+
const [tooltipReactionType, setTooltipReactionType] = (0, import_react20.useState)(null);
|
|
723
|
+
const [tooltipPositions, setTooltipPositions] = (0, import_react20.useState)(null);
|
|
724
|
+
const rootRef = (0, import_react20.useRef)(null);
|
|
725
|
+
const targetRef = (0, import_react20.useRef)(null);
|
|
726
|
+
const tooltipRef = (0, import_react20.useRef)(null);
|
|
727
|
+
const showTooltip = (0, import_react20.useCallback)(
|
|
716
728
|
(event, reactionType) => {
|
|
717
729
|
targetRef.current = event.currentTarget;
|
|
718
730
|
setTooltipReactionType(reactionType);
|
|
719
731
|
},
|
|
720
732
|
[]
|
|
721
733
|
);
|
|
722
|
-
const hideTooltip = (0,
|
|
734
|
+
const hideTooltip = (0, import_react20.useCallback)(() => {
|
|
723
735
|
setTooltipReactionType(null);
|
|
724
736
|
setTooltipPositions(null);
|
|
725
737
|
}, []);
|
|
726
|
-
(0,
|
|
738
|
+
(0, import_react20.useEffect)(() => {
|
|
727
739
|
if (!tooltipReactionType || !rootRef.current) return;
|
|
728
740
|
const tooltip = tooltipRef.current?.getBoundingClientRect();
|
|
729
741
|
const target = targetRef.current?.getBoundingClientRect();
|
|
@@ -744,7 +756,7 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
744
756
|
}).filter(Boolean);
|
|
745
757
|
const iHaveReactedWithReaction = (reactionType) => ownReactions.find((reaction) => reaction.type === reactionType);
|
|
746
758
|
const getLatestUserForReactionType = (type) => latestReactions.find((reaction) => reaction.type === type && !!reaction.user)?.user || void 0;
|
|
747
|
-
return /* @__PURE__ */
|
|
759
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
748
760
|
"div",
|
|
749
761
|
{
|
|
750
762
|
className: (0, import_clsx4.default)(
|
|
@@ -756,7 +768,7 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
756
768
|
"data-testid": "reaction-selector",
|
|
757
769
|
ref: rootRef
|
|
758
770
|
},
|
|
759
|
-
!!tooltipReactionType && detailedView && /* @__PURE__ */
|
|
771
|
+
!!tooltipReactionType && detailedView && /* @__PURE__ */ import_react20.default.createElement(
|
|
760
772
|
"div",
|
|
761
773
|
{
|
|
762
774
|
className: "str-chat__reaction-selector-tooltip",
|
|
@@ -766,13 +778,13 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
766
778
|
visibility: tooltipPositions ? "visible" : "hidden"
|
|
767
779
|
}
|
|
768
780
|
},
|
|
769
|
-
/* @__PURE__ */
|
|
770
|
-
getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */
|
|
781
|
+
/* @__PURE__ */ import_react20.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
|
|
782
|
+
getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */ import_react20.default.createElement("span", { className: "latest-user-username", key: `key-${i}-${user}` }, `${user}${i < users.length - 1 ? ", " : ""}`))
|
|
771
783
|
),
|
|
772
|
-
/* @__PURE__ */
|
|
784
|
+
/* @__PURE__ */ import_react20.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
|
|
773
785
|
const latestUser = getLatestUserForReactionType(reactionType);
|
|
774
786
|
const count = reactionGroups[reactionType]?.count ?? 0;
|
|
775
|
-
return /* @__PURE__ */
|
|
787
|
+
return /* @__PURE__ */ import_react20.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react20.default.createElement(
|
|
776
788
|
"button",
|
|
777
789
|
{
|
|
778
790
|
"aria-label": `Select Reaction: ${reactionName || reactionType}`,
|
|
@@ -793,7 +805,7 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
793
805
|
}
|
|
794
806
|
}
|
|
795
807
|
},
|
|
796
|
-
!!count && detailedView && /* @__PURE__ */
|
|
808
|
+
!!count && detailedView && /* @__PURE__ */ import_react20.default.createElement(
|
|
797
809
|
"div",
|
|
798
810
|
{
|
|
799
811
|
className: "latest-user str-chat__message-reactions-last-user",
|
|
@@ -801,7 +813,7 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
801
813
|
onMouseEnter: (e) => showTooltip(e, reactionType),
|
|
802
814
|
onMouseLeave: hideTooltip
|
|
803
815
|
},
|
|
804
|
-
latestUser ? /* @__PURE__ */
|
|
816
|
+
latestUser ? /* @__PURE__ */ import_react20.default.createElement(
|
|
805
817
|
Avatar2,
|
|
806
818
|
{
|
|
807
819
|
image: latestUser.image,
|
|
@@ -809,15 +821,15 @@ var UnMemoizedReactionSelector = (props) => {
|
|
|
809
821
|
size: 20,
|
|
810
822
|
user: latestUser
|
|
811
823
|
}
|
|
812
|
-
) : /* @__PURE__ */
|
|
824
|
+
) : /* @__PURE__ */ import_react20.default.createElement("div", { className: "latest-user-not-found" })
|
|
813
825
|
),
|
|
814
|
-
/* @__PURE__ */
|
|
815
|
-
Boolean(count) && detailedView && /* @__PURE__ */
|
|
826
|
+
/* @__PURE__ */ import_react20.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react20.default.createElement(Component, null)),
|
|
827
|
+
Boolean(count) && detailedView && /* @__PURE__ */ import_react20.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
|
|
816
828
|
));
|
|
817
829
|
}))
|
|
818
830
|
);
|
|
819
831
|
};
|
|
820
|
-
var ReactionSelector =
|
|
832
|
+
var ReactionSelector = import_react20.default.memo(
|
|
821
833
|
UnMemoizedReactionSelector
|
|
822
834
|
);
|
|
823
835
|
|
|
@@ -828,11 +840,11 @@ var ReactionSelectorWithButton = ({
|
|
|
828
840
|
const { t } = useTranslationContext("ReactionSelectorWithButton");
|
|
829
841
|
const { isMyMessage, message } = useMessageContext("MessageOptions");
|
|
830
842
|
const { ReactionSelector: ReactionSelector2 = ReactionSelector } = useComponentContext("MessageOptions");
|
|
831
|
-
const buttonRef = (0,
|
|
843
|
+
const buttonRef = (0, import_react21.useRef)(null);
|
|
832
844
|
const dialogId = `reaction-selector--${message.id}`;
|
|
833
845
|
const dialog = useDialog({ id: dialogId });
|
|
834
846
|
const dialogIsOpen = useDialogIsOpen(dialogId);
|
|
835
|
-
return /* @__PURE__ */
|
|
847
|
+
return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(
|
|
836
848
|
DialogAnchor,
|
|
837
849
|
{
|
|
838
850
|
id: dialogId,
|
|
@@ -840,8 +852,8 @@ var ReactionSelectorWithButton = ({
|
|
|
840
852
|
referenceElement: buttonRef.current,
|
|
841
853
|
trapFocus: true
|
|
842
854
|
},
|
|
843
|
-
/* @__PURE__ */
|
|
844
|
-
), /* @__PURE__ */
|
|
855
|
+
/* @__PURE__ */ import_react21.default.createElement(ReactionSelector2, null)
|
|
856
|
+
), /* @__PURE__ */ import_react21.default.createElement(
|
|
845
857
|
"button",
|
|
846
858
|
{
|
|
847
859
|
"aria-expanded": dialogIsOpen,
|
|
@@ -851,12 +863,12 @@ var ReactionSelectorWithButton = ({
|
|
|
851
863
|
onClick: () => dialog?.toggle(),
|
|
852
864
|
ref: buttonRef
|
|
853
865
|
},
|
|
854
|
-
/* @__PURE__ */
|
|
866
|
+
/* @__PURE__ */ import_react21.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
|
|
855
867
|
));
|
|
856
868
|
};
|
|
857
869
|
|
|
858
870
|
// src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
|
|
859
|
-
var
|
|
871
|
+
var import_react22 = require("react");
|
|
860
872
|
var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
|
|
861
873
|
const { initialMessage: isInitialMessage, message } = useMessageContext();
|
|
862
874
|
const {
|
|
@@ -870,7 +882,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
|
|
|
870
882
|
canReply
|
|
871
883
|
} = useUserRole(message);
|
|
872
884
|
const isMessageThreadReply = typeof message.parent_id === "string";
|
|
873
|
-
return (0,
|
|
885
|
+
return (0, import_react22.useMemo)(() => {
|
|
874
886
|
if (disable) return messageActionSet;
|
|
875
887
|
if (isInitialMessage || // not sure whether this thing even works anymore
|
|
876
888
|
!message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
|
|
@@ -900,8 +912,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable = false) => {
|
|
|
900
912
|
};
|
|
901
913
|
|
|
902
914
|
// src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
|
|
903
|
-
var
|
|
904
|
-
var useSplitMessageActionSet = (messageActionSet) => (0,
|
|
915
|
+
var import_react23 = require("react");
|
|
916
|
+
var useSplitMessageActionSet = (messageActionSet) => (0, import_react23.useMemo)(() => {
|
|
905
917
|
const quickActionSet = [];
|
|
906
918
|
const dropdownActionSet = [];
|
|
907
919
|
for (const action of messageActionSet) {
|
|
@@ -912,14 +924,14 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react22.useMemo)
|
|
|
912
924
|
}, [messageActionSet]);
|
|
913
925
|
|
|
914
926
|
// src/experimental/MessageActions/defaults.tsx
|
|
915
|
-
var
|
|
927
|
+
var import_react24 = __toESM(require("react"));
|
|
916
928
|
var DefaultDropdownActionButton = ({
|
|
917
929
|
"aria-selected": ariaSelected = "false",
|
|
918
930
|
children,
|
|
919
931
|
className = "str-chat__message-actions-list-item-button",
|
|
920
932
|
role = "option",
|
|
921
933
|
...rest
|
|
922
|
-
}) => /* @__PURE__ */
|
|
934
|
+
}) => /* @__PURE__ */ import_react24.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
|
|
923
935
|
var DefaultMessageActionComponents = {
|
|
924
936
|
dropdown: {
|
|
925
937
|
Quote() {
|
|
@@ -934,48 +946,48 @@ var DefaultMessageActionComponents = {
|
|
|
934
946
|
textarea.focus();
|
|
935
947
|
}
|
|
936
948
|
};
|
|
937
|
-
return /* @__PURE__ */
|
|
949
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
|
|
938
950
|
},
|
|
939
951
|
Pin() {
|
|
940
952
|
const { handlePin, message } = useMessageContext();
|
|
941
953
|
const { t } = useTranslationContext();
|
|
942
|
-
return /* @__PURE__ */
|
|
954
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
|
|
943
955
|
},
|
|
944
956
|
MarkUnread() {
|
|
945
957
|
const { handleMarkUnread } = useMessageContext();
|
|
946
958
|
const { t } = useTranslationContext();
|
|
947
|
-
return /* @__PURE__ */
|
|
959
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
|
|
948
960
|
},
|
|
949
961
|
Flag() {
|
|
950
962
|
const { handleFlag } = useMessageContext();
|
|
951
963
|
const { t } = useTranslationContext();
|
|
952
|
-
return /* @__PURE__ */
|
|
964
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
|
|
953
965
|
},
|
|
954
966
|
Mute() {
|
|
955
967
|
const { handleMute, message } = useMessageContext();
|
|
956
968
|
const { mutes } = useChatContext();
|
|
957
969
|
const { t } = useTranslationContext();
|
|
958
|
-
return /* @__PURE__ */
|
|
970
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
|
|
959
971
|
},
|
|
960
972
|
Edit() {
|
|
961
973
|
const { handleEdit } = useMessageContext();
|
|
962
974
|
const { t } = useTranslationContext();
|
|
963
|
-
return /* @__PURE__ */
|
|
975
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
|
|
964
976
|
},
|
|
965
977
|
Delete() {
|
|
966
978
|
const { handleDelete } = useMessageContext();
|
|
967
979
|
const { t } = useTranslationContext();
|
|
968
|
-
return /* @__PURE__ */
|
|
980
|
+
return /* @__PURE__ */ import_react24.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete }, t("Delete"));
|
|
969
981
|
}
|
|
970
982
|
},
|
|
971
983
|
quick: {
|
|
972
984
|
React() {
|
|
973
|
-
return /* @__PURE__ */
|
|
985
|
+
return /* @__PURE__ */ import_react24.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
|
|
974
986
|
},
|
|
975
987
|
Reply() {
|
|
976
988
|
const { handleOpenThread } = useMessageContext();
|
|
977
989
|
const { t } = useTranslationContext();
|
|
978
|
-
return /* @__PURE__ */
|
|
990
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
979
991
|
"button",
|
|
980
992
|
{
|
|
981
993
|
"aria-label": t("aria/Open Thread"),
|
|
@@ -983,7 +995,7 @@ var DefaultMessageActionComponents = {
|
|
|
983
995
|
"data-testid": "thread-action",
|
|
984
996
|
onClick: handleOpenThread
|
|
985
997
|
},
|
|
986
|
-
/* @__PURE__ */
|
|
998
|
+
/* @__PURE__ */ import_react24.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
|
|
987
999
|
);
|
|
988
1000
|
}
|
|
989
1001
|
}
|
|
@@ -1021,7 +1033,7 @@ var MessageActions = ({
|
|
|
1021
1033
|
const { theme } = useChatContext();
|
|
1022
1034
|
const { isMyMessage, message } = useMessageContext();
|
|
1023
1035
|
const { t } = useTranslationContext();
|
|
1024
|
-
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0,
|
|
1036
|
+
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react25.useState)(
|
|
1025
1037
|
null
|
|
1026
1038
|
);
|
|
1027
1039
|
const filteredMessageActionSet = useBaseMessageActionSetFilter(
|
|
@@ -1037,14 +1049,14 @@ var MessageActions = ({
|
|
|
1037
1049
|
if (dropdownActionSet.length + quickActionSet.length === 0) {
|
|
1038
1050
|
return null;
|
|
1039
1051
|
}
|
|
1040
|
-
return /* @__PURE__ */
|
|
1052
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
1041
1053
|
"div",
|
|
1042
1054
|
{
|
|
1043
1055
|
className: (0, import_clsx5.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
|
|
1044
1056
|
"str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
|
|
1045
1057
|
})
|
|
1046
1058
|
},
|
|
1047
|
-
dropdownActionSet.length > 0 && /* @__PURE__ */
|
|
1059
|
+
dropdownActionSet.length > 0 && /* @__PURE__ */ import_react25.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react25.default.createElement(
|
|
1048
1060
|
"button",
|
|
1049
1061
|
{
|
|
1050
1062
|
"aria-expanded": dropdownDialogIsOpen,
|
|
@@ -1054,8 +1066,8 @@ var MessageActions = ({
|
|
|
1054
1066
|
"data-testid": "message-actions-toggle-button",
|
|
1055
1067
|
ref: setActionsBoxButtonElement
|
|
1056
1068
|
},
|
|
1057
|
-
/* @__PURE__ */
|
|
1058
|
-
), /* @__PURE__ */
|
|
1069
|
+
/* @__PURE__ */ import_react25.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
|
|
1070
|
+
), /* @__PURE__ */ import_react25.default.createElement(
|
|
1059
1071
|
DialogAnchor,
|
|
1060
1072
|
{
|
|
1061
1073
|
id: dropdownDialogId,
|
|
@@ -1063,21 +1075,21 @@ var MessageActions = ({
|
|
|
1063
1075
|
referenceElement: actionsBoxButtonElement,
|
|
1064
1076
|
trapFocus: true
|
|
1065
1077
|
},
|
|
1066
|
-
/* @__PURE__ */
|
|
1078
|
+
/* @__PURE__ */ import_react25.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react25.default.createElement(DropdownActionComponent, { key: type })))
|
|
1067
1079
|
)),
|
|
1068
|
-
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */
|
|
1080
|
+
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react25.default.createElement(QuickActionComponent, { key: type }))
|
|
1069
1081
|
);
|
|
1070
1082
|
};
|
|
1071
1083
|
var DropdownBox = ({ children, open }) => {
|
|
1072
1084
|
const { t } = useTranslationContext();
|
|
1073
|
-
return /* @__PURE__ */
|
|
1085
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
1074
1086
|
"div",
|
|
1075
1087
|
{
|
|
1076
1088
|
className: (0, import_clsx5.default)("str-chat__message-actions-box", {
|
|
1077
1089
|
"str-chat__message-actions-box--open": open
|
|
1078
1090
|
})
|
|
1079
1091
|
},
|
|
1080
|
-
/* @__PURE__ */
|
|
1092
|
+
/* @__PURE__ */ import_react25.default.createElement(
|
|
1081
1093
|
"div",
|
|
1082
1094
|
{
|
|
1083
1095
|
"aria-label": t("aria/Message Options"),
|