stream-chat-react 10.15.0 → 11.0.0-rc.2
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/browser.full-bundle.js +1249 -4491
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.js +4 -3
- package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +9 -7
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +34 -24
- package/dist/components/Channel/Channel.d.ts +7 -13
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +58 -69
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +8 -8
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +24 -14
- package/dist/components/Emojis/EmojiPicker.d.ts +10 -0
- package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -0
- package/dist/components/Emojis/EmojiPicker.js +57 -0
- package/dist/components/Emojis/index.cjs.js +89 -0
- package/dist/components/Emojis/index.d.ts +2 -0
- package/dist/components/Emojis/index.d.ts.map +1 -0
- package/dist/components/Emojis/index.js +1 -0
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +2 -3
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -1
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +4 -7
- package/dist/components/MessageInput/MessageInput.d.ts +17 -5
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.js +3 -1
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +12 -27
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +8 -11
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -9
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiTrigger.js +32 -12
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +1 -19
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +3 -15
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -2
- package/dist/components/MessageInput/index.d.ts +0 -1
- package/dist/components/MessageInput/index.d.ts.map +1 -1
- package/dist/components/MessageInput/index.js +0 -1
- package/dist/components/Reactions/ReactionSelector.d.ts +3 -8
- package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionSelector.js +18 -25
- package/dist/components/Reactions/ReactionsList.d.ts +3 -8
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +9 -12
- package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -5
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.js +12 -15
- package/dist/components/Reactions/SpriteImage.d.ts +12 -0
- package/dist/components/Reactions/SpriteImage.d.ts.map +1 -0
- package/dist/components/Reactions/SpriteImage.js +28 -0
- package/dist/components/Reactions/StreamEmoji.d.ts +18 -0
- package/dist/components/Reactions/StreamEmoji.d.ts.map +1 -0
- package/dist/components/Reactions/StreamEmoji.js +16 -0
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +7 -7
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.js +14 -18
- package/dist/components/Reactions/index.d.ts +3 -0
- package/dist/components/Reactions/index.d.ts.map +1 -1
- package/dist/components/Reactions/index.js +3 -0
- package/dist/components/Reactions/reactionOptions.d.ts +8 -0
- package/dist/components/Reactions/reactionOptions.d.ts.map +1 -0
- package/dist/components/Reactions/reactionOptions.js +11 -0
- package/dist/components/Reactions/utils/utils.d.ts +1 -0
- package/dist/components/Reactions/utils/utils.d.ts.map +1 -1
- package/dist/components/Reactions/utils/utils.js +12 -0
- package/dist/context/ChannelStateContext.d.ts +1 -1
- package/dist/context/ChatContext.d.ts +1 -1
- package/dist/context/ComponentContext.d.ts +5 -2
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageInputContext.d.ts +1 -7
- package/dist/context/MessageInputContext.d.ts.map +1 -1
- package/dist/context/index.d.ts +0 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +0 -1
- package/dist/i18n/Streami18n.d.ts +0 -1
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +0 -1
- package/dist/i18n/en.json +0 -1
- package/dist/i18n/es.json +0 -1
- package/dist/i18n/fr.json +0 -1
- package/dist/i18n/hi.json +0 -1
- package/dist/i18n/it.json +0 -1
- package/dist/i18n/ja.json +0 -1
- package/dist/i18n/ko.json +0 -1
- package/dist/i18n/nl.json +0 -1
- package/dist/i18n/pt.json +0 -1
- package/dist/i18n/ru.json +0 -1
- package/dist/i18n/tr.json +0 -1
- package/dist/icons-0801b1e9.js +3133 -0
- package/dist/index.cjs.js +1038 -4157
- package/dist/index_UMD.d.ts +7 -0
- package/dist/index_UMD.d.ts.map +1 -0
- package/dist/index_UMD.js +8 -0
- package/dist/types/types.d.ts +3 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +34 -7
- package/dist/components/Channel/emojiData.d.ts +0 -15
- package/dist/components/Channel/emojiData.d.ts.map +0 -1
- package/dist/components/Channel/emojiData.js +0 -23
- package/dist/components/MessageInput/EmojiPicker.d.ts +0 -6
- package/dist/components/MessageInput/EmojiPicker.d.ts.map +0 -1
- package/dist/components/MessageInput/EmojiPicker.js +0 -23
- package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts +0 -3
- package/dist/components/MessageInput/hooks/useEmojiIndex.d.ts.map +0 -1
- package/dist/components/MessageInput/hooks/useEmojiIndex.js +0 -13
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +0 -11
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +0 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.js +0 -68
- package/dist/context/DefaultEmoji.d.ts +0 -3
- package/dist/context/DefaultEmoji.d.ts.map +0 -1
- package/dist/context/DefaultEmoji.js +0 -3
- package/dist/context/DefaultEmojiPicker.d.ts +0 -3
- package/dist/context/DefaultEmojiPicker.d.ts.map +0 -1
- package/dist/context/DefaultEmojiPicker.js +0 -3
- package/dist/context/EmojiContext.d.ts +0 -49
- package/dist/context/EmojiContext.d.ts.map +0 -1
- package/dist/context/EmojiContext.js +0 -41
- package/dist/index.cjs.js.map +0 -1
- package/dist/stream-emoji.json +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { EmojiData, NimbleEmojiIndex } from 'emoji-mart';
|
|
3
2
|
import type { FileLike } from '../../ReactFileUtilities';
|
|
4
3
|
import type { Attachment, Message, UserResponse } from 'stream-chat';
|
|
5
4
|
import type { MessageInputProps } from '../MessageInput';
|
|
@@ -9,7 +8,6 @@ import type { FileUpload, ImageUpload, LinkPreviewMap } from '../types';
|
|
|
9
8
|
import { SetLinkPreviewMode } from '../types';
|
|
10
9
|
export declare type MessageInputState<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
11
10
|
attachments: Attachment<StreamChatGenerics>[];
|
|
12
|
-
emojiPickerIsOpen: boolean;
|
|
13
11
|
fileOrder: string[];
|
|
14
12
|
fileUploads: Record<string, FileUpload>;
|
|
15
13
|
imageOrder: string[];
|
|
@@ -19,10 +17,6 @@ export declare type MessageInputState<StreamChatGenerics extends DefaultStreamCh
|
|
|
19
17
|
setText: (text: string) => void;
|
|
20
18
|
text: string;
|
|
21
19
|
};
|
|
22
|
-
declare type SetEmojiPickerIsOpenAction = {
|
|
23
|
-
type: 'setEmojiPickerIsOpen';
|
|
24
|
-
value: boolean;
|
|
25
|
-
};
|
|
26
20
|
declare type SetTextAction = {
|
|
27
21
|
getNewText: (currentStateText: string) => string;
|
|
28
22
|
type: 'setText';
|
|
@@ -63,28 +57,22 @@ declare type AddMentionedUserAction<StreamChatGenerics extends DefaultStreamChat
|
|
|
63
57
|
type: 'addMentionedUser';
|
|
64
58
|
user: UserResponse<StreamChatGenerics>;
|
|
65
59
|
};
|
|
66
|
-
export declare type MessageInputReducerAction<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =
|
|
60
|
+
export declare type MessageInputReducerAction<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = SetTextAction | ClearAction | SetImageUploadAction | SetFileUploadAction | SetLinkPreviewsAction | RemoveImageUploadAction | RemoveFileUploadAction | AddMentionedUserAction<StreamChatGenerics>;
|
|
67
61
|
export declare type MessageInputHookProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = EnrichURLsController & {
|
|
68
|
-
closeEmojiPicker: React.MouseEventHandler<HTMLElement>;
|
|
69
|
-
emojiPickerRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
70
62
|
handleChange: React.ChangeEventHandler<HTMLTextAreaElement>;
|
|
71
|
-
handleEmojiKeyDown: React.KeyboardEventHandler<HTMLSpanElement>;
|
|
72
63
|
handleSubmit: (event: React.BaseSyntheticEvent, customMessageData?: Partial<Message<StreamChatGenerics>>, options?: SendMessageOptions) => void;
|
|
73
64
|
insertText: (textToInsert: string) => void;
|
|
74
65
|
isUploadEnabled: boolean;
|
|
75
66
|
maxFilesLeft: number;
|
|
76
67
|
numberOfUploads: number;
|
|
77
68
|
onPaste: (event: React.ClipboardEvent<HTMLTextAreaElement>) => void;
|
|
78
|
-
onSelectEmoji: (emoji: EmojiData) => void;
|
|
79
69
|
onSelectUser: (item: UserResponse<StreamChatGenerics>) => void;
|
|
80
|
-
openEmojiPicker: React.MouseEventHandler<HTMLSpanElement>;
|
|
81
70
|
removeFile: (id: string) => void;
|
|
82
71
|
removeImage: (id: string) => void;
|
|
83
72
|
textareaRef: React.MutableRefObject<HTMLTextAreaElement | null | undefined>;
|
|
84
73
|
uploadFile: (id: string) => void;
|
|
85
74
|
uploadImage: (id: string) => void;
|
|
86
75
|
uploadNewFiles: (files: FileList | File[]) => void;
|
|
87
|
-
emojiIndex?: NimbleEmojiIndex;
|
|
88
76
|
};
|
|
89
77
|
export declare type CommandsListState = {
|
|
90
78
|
closeCommandsList: () => void;
|
|
@@ -100,26 +88,20 @@ export declare type MentionsListState = {
|
|
|
100
88
|
* hook for MessageInput state
|
|
101
89
|
*/
|
|
102
90
|
export declare const useMessageInputState: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>(props: MessageInputProps<StreamChatGenerics, V>) => MessageInputState<StreamChatGenerics> & EnrichURLsController & {
|
|
103
|
-
closeEmojiPicker: React.MouseEventHandler<HTMLElement>;
|
|
104
|
-
emojiPickerRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
105
91
|
handleChange: React.ChangeEventHandler<HTMLTextAreaElement>;
|
|
106
|
-
handleEmojiKeyDown: React.KeyboardEventHandler<HTMLSpanElement>;
|
|
107
92
|
handleSubmit: (event: React.BaseSyntheticEvent, customMessageData?: Partial<Message<StreamChatGenerics>> | undefined, options?: SendMessageOptions) => void;
|
|
108
93
|
insertText: (textToInsert: string) => void;
|
|
109
94
|
isUploadEnabled: boolean;
|
|
110
95
|
maxFilesLeft: number;
|
|
111
96
|
numberOfUploads: number;
|
|
112
97
|
onPaste: (event: React.ClipboardEvent<HTMLTextAreaElement>) => void;
|
|
113
|
-
onSelectEmoji: (emoji: EmojiData) => void;
|
|
114
98
|
onSelectUser: (item: UserResponse<StreamChatGenerics>) => void;
|
|
115
|
-
openEmojiPicker: React.MouseEventHandler<HTMLSpanElement>;
|
|
116
99
|
removeFile: (id: string) => void;
|
|
117
100
|
removeImage: (id: string) => void;
|
|
118
101
|
textareaRef: React.MutableRefObject<HTMLTextAreaElement | null | undefined>;
|
|
119
102
|
uploadFile: (id: string) => void;
|
|
120
103
|
uploadImage: (id: string) => void;
|
|
121
104
|
uploadNewFiles: (files: FileList | File[]) => void;
|
|
122
|
-
emojiIndex?: NimbleEmojiIndex | undefined;
|
|
123
105
|
} & CommandsListState & MentionsListState;
|
|
124
106
|
export {};
|
|
125
107
|
//# sourceMappingURL=useMessageInputState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useMessageInputState.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputState.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,14 @@ import { __assign } from "tslib";
|
|
|
2
2
|
import { useCallback, useReducer, useState } from 'react';
|
|
3
3
|
import { nanoid } from 'nanoid';
|
|
4
4
|
import { useChannelStateContext } from '../../../context/ChannelStateContext';
|
|
5
|
-
import { useEmojiIndex } from './useEmojiIndex';
|
|
6
5
|
import { useAttachments } from './useAttachments';
|
|
7
6
|
import { useMessageInputText } from './useMessageInputText';
|
|
8
|
-
import { useEmojiPicker } from './useEmojiPicker';
|
|
9
7
|
import { useSubmitHandler } from './useSubmitHandler';
|
|
10
8
|
import { usePasteHandler } from './usePasteHandler';
|
|
11
9
|
import { useLinkPreviews } from './useLinkPreviews';
|
|
12
10
|
import { LinkPreviewState, SetLinkPreviewMode } from '../types';
|
|
13
11
|
var makeEmptyMessageInputState = function () { return ({
|
|
14
12
|
attachments: [],
|
|
15
|
-
emojiPickerIsOpen: false,
|
|
16
13
|
fileOrder: [],
|
|
17
14
|
fileUploads: {},
|
|
18
15
|
imageOrder: [],
|
|
@@ -86,7 +83,6 @@ var initState = function (message) {
|
|
|
86
83
|
var mentioned_users = message.mentioned_users || [];
|
|
87
84
|
return {
|
|
88
85
|
attachments: attachments,
|
|
89
|
-
emojiPickerIsOpen: false,
|
|
90
86
|
fileOrder: fileOrder,
|
|
91
87
|
fileUploads: fileUploads,
|
|
92
88
|
imageOrder: imageOrder,
|
|
@@ -103,8 +99,6 @@ var initState = function (message) {
|
|
|
103
99
|
var messageInputReducer = function (state, action) {
|
|
104
100
|
var _a, _b;
|
|
105
101
|
switch (action.type) {
|
|
106
|
-
case 'setEmojiPickerIsOpen':
|
|
107
|
-
return __assign(__assign({}, state), { emojiPickerIsOpen: action.value });
|
|
108
102
|
case 'setText':
|
|
109
103
|
return __assign(__assign({}, state), { text: action.getNewText(state.text) });
|
|
110
104
|
case 'clear':
|
|
@@ -178,7 +172,7 @@ var messageInputReducer = function (state, action) {
|
|
|
178
172
|
*/
|
|
179
173
|
export var useMessageInputState = function (props) {
|
|
180
174
|
var _a;
|
|
181
|
-
var additionalTextareaProps = props.additionalTextareaProps,
|
|
175
|
+
var additionalTextareaProps = props.additionalTextareaProps, getDefaultValue = props.getDefaultValue, message = props.message, urlEnrichmentConfig = props.urlEnrichmentConfig;
|
|
182
176
|
var _b = useChannelStateContext('useMessageInputState'), _c = _b.channelCapabilities, channelCapabilities = _c === void 0 ? {} : _c, channelConfig = _b.channelConfig, enrichURLForPreviewChannelContext = _b.enrichURLForPreview;
|
|
183
177
|
var defaultValue = (getDefaultValue === null || getDefaultValue === void 0 ? void 0 : getDefaultValue()) || (additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue);
|
|
184
178
|
var initialStateValue = message ||
|
|
@@ -206,8 +200,7 @@ export var useMessageInputState = function (props) {
|
|
|
206
200
|
setShowMentionsList(true);
|
|
207
201
|
};
|
|
208
202
|
var closeMentionsList = function () { return setShowMentionsList(false); };
|
|
209
|
-
var _h =
|
|
210
|
-
var _j = useAttachments(props, state, dispatch, textareaRef), maxFilesLeft = _j.maxFilesLeft, numberOfUploads = _j.numberOfUploads, removeFile = _j.removeFile, removeImage = _j.removeImage, uploadFile = _j.uploadFile, uploadImage = _j.uploadImage, uploadNewFiles = _j.uploadNewFiles;
|
|
203
|
+
var _h = useAttachments(props, state, dispatch, textareaRef), maxFilesLeft = _h.maxFilesLeft, numberOfUploads = _h.numberOfUploads, removeFile = _h.removeFile, removeImage = _h.removeImage, uploadFile = _h.uploadFile, uploadImage = _h.uploadImage, uploadNewFiles = _h.uploadNewFiles;
|
|
211
204
|
var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads, enrichURLsController).handleSubmit;
|
|
212
205
|
var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
|
|
213
206
|
var onPaste = usePasteHandler(uploadNewFiles, insertText, isUploadEnabled, enrichURLsController.findAndEnqueueURLsToEnrich).onPaste;
|
|
@@ -217,10 +210,5 @@ export var useMessageInputState = function (props) {
|
|
|
217
210
|
var setText = useCallback(function (text) {
|
|
218
211
|
dispatch({ getNewText: function () { return text; }, type: 'setText' });
|
|
219
212
|
}, []);
|
|
220
|
-
return __assign(__assign(__assign({}, state), enrichURLsController), { closeCommandsList: closeCommandsList,
|
|
221
|
-
/**
|
|
222
|
-
* TODO: fix the below at some point because this type casting is wrong
|
|
223
|
-
* and just forced to not have warnings currently with the unknown casting
|
|
224
|
-
*/
|
|
225
|
-
closeEmojiPicker: closeEmojiPicker, closeMentionsList: closeMentionsList, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, openMentionsList: openMentionsList, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, showMentionsList: showMentionsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
213
|
+
return __assign(__assign(__assign({}, state), enrichURLsController), { closeCommandsList: closeCommandsList, closeMentionsList: closeMentionsList, handleChange: handleChange, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openMentionsList: openMentionsList, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, showMentionsList: showMentionsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
226
214
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageInputText.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6UAOD,oBAAoB,CAAC,4BAA4B,CAAC;;+BAmB9D,MAAM;;
|
|
1
|
+
{"version":3,"file":"useMessageInputText.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6UAOD,oBAAoB,CAAC,4BAA4B,CAAC;;+BAmB9D,MAAM;;CAwExB,CAAC"}
|
|
@@ -17,7 +17,7 @@ export var useMessageInputText = function (props, state, dispatch, findAndEnqueu
|
|
|
17
17
|
var insertText = useCallback(function (textToInsert) {
|
|
18
18
|
var maxLength = (additionalTextareaProps || {}).maxLength;
|
|
19
19
|
if (!textareaRef.current) {
|
|
20
|
-
dispatch({
|
|
20
|
+
return dispatch({
|
|
21
21
|
getNewText: function (text) {
|
|
22
22
|
var updatedText = text + textToInsert;
|
|
23
23
|
if (maxLength && updatedText.length > maxLength) {
|
|
@@ -27,7 +27,6 @@ export var useMessageInputText = function (props, state, dispatch, findAndEnqueu
|
|
|
27
27
|
},
|
|
28
28
|
type: 'setText',
|
|
29
29
|
});
|
|
30
|
-
return;
|
|
31
30
|
}
|
|
32
31
|
var _a = textareaRef.current, selectionEnd = _a.selectionEnd, selectionStart = _a.selectionStart;
|
|
33
32
|
newCursorPosition.current = selectionStart + textToInsert.length;
|
|
@@ -2,7 +2,6 @@ export * from './AttachmentPreviewList';
|
|
|
2
2
|
export * from './CooldownTimer';
|
|
3
3
|
export * from './DefaultTriggerProvider';
|
|
4
4
|
export * from './EditMessageForm';
|
|
5
|
-
export * from './EmojiPicker';
|
|
6
5
|
export * from './hooks';
|
|
7
6
|
export * from './icons';
|
|
8
7
|
export * from './MessageInput';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
|
@@ -2,7 +2,6 @@ export * from './AttachmentPreviewList';
|
|
|
2
2
|
export * from './CooldownTimer';
|
|
3
3
|
export * from './DefaultTriggerProvider';
|
|
4
4
|
export * from './EditMessageForm';
|
|
5
|
-
export * from './EmojiPicker';
|
|
6
5
|
export * from './hooks';
|
|
7
6
|
export * from './icons';
|
|
8
7
|
export * from './MessageInput';
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AvatarProps } from '../Avatar';
|
|
3
|
-
import { ReactionEmoji } from '../Channel/emojiData';
|
|
4
|
-
import type { NimbleEmojiProps } from 'emoji-mart';
|
|
5
3
|
import type { ReactionResponse } from 'stream-chat';
|
|
6
4
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
5
|
+
import type { ReactionOptions } from './reactionOptions';
|
|
7
6
|
export declare type ReactionSelectorProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
8
|
-
/** Additional props to be passed to the [NimbleEmoji](https://github.com/missive/emoji-mart/blob/master/src/components/emoji/nimble-emoji.js) component from `emoji-mart` */
|
|
9
|
-
additionalEmojiProps?: Partial<NimbleEmojiProps>;
|
|
10
7
|
/** Custom UI component to display user avatar, defaults to and accepts same props as: [Avatar](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Avatar/Avatar.tsx) */
|
|
11
8
|
Avatar?: React.ElementType<AvatarProps>;
|
|
12
9
|
/** If true, shows the user's avatar with the reaction */
|
|
@@ -18,11 +15,9 @@ export declare type ReactionSelectorProps<StreamChatGenerics extends DefaultStre
|
|
|
18
15
|
/** An array of the own reaction objects to distinguish own reactions visually */
|
|
19
16
|
own_reactions?: ReactionResponse<StreamChatGenerics>[];
|
|
20
17
|
/** An object that keeps track of the count of each type of reaction on a message */
|
|
21
|
-
reaction_counts?:
|
|
22
|
-
[key: string]: number;
|
|
23
|
-
};
|
|
18
|
+
reaction_counts?: Record<string, number>;
|
|
24
19
|
/** A list of the currently supported reactions on a message */
|
|
25
|
-
reactionOptions?:
|
|
20
|
+
reactionOptions?: ReactionOptions;
|
|
26
21
|
/** If true, adds a CSS class that reverses the horizontal positioning of the selector */
|
|
27
22
|
reverse?: boolean;
|
|
28
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionSelector.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ReactionSelector.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AAKjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,+LAA+L;IAC/L,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6GAA6G;IAC7G,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC1D,iFAAiF;IACjF,aAAa,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAkLF;;GAEG;AACH,eAAO,MAAM,gBAAgB,gIAES,CAAC"}
|
|
@@ -1,29 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React, { Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
2
|
import clsx from 'clsx';
|
|
4
3
|
import { isMutableRef } from './utils/utils';
|
|
5
4
|
import { Avatar as DefaultAvatar } from '../Avatar';
|
|
6
|
-
import { getStrippedEmojiData } from '../Channel/emojiData';
|
|
7
5
|
import { useComponentContext } from '../../context/ComponentContext';
|
|
8
|
-
import { useEmojiContext } from '../../context/EmojiContext';
|
|
9
6
|
import { useMessageContext } from '../../context/MessageContext';
|
|
10
7
|
var UnMemoizedReactionSelector = React.forwardRef(function (props, ref) {
|
|
11
8
|
var _a;
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var _e =
|
|
15
|
-
var
|
|
16
|
-
var _g = emojiConfig || {}, defaultMinimalEmojis = _g.defaultMinimalEmojis, fullEmojiData = _g.emojiData, emojiSetDef = _g.emojiSetDef;
|
|
9
|
+
var propAvatar = props.Avatar, _b = props.detailedView, detailedView = _b === void 0 ? true : _b, propHandleReaction = props.handleReaction, propLatestReactions = props.latest_reactions, propOwnReactions = props.own_reactions, propReactionCounts = props.reaction_counts, propReactionOptions = props.reactionOptions, _c = props.reverse, reverse = _c === void 0 ? false : _c;
|
|
10
|
+
var _d = useComponentContext('ReactionSelector'), contextAvatar = _d.Avatar, contextReactionOptions = _d.reactionOptions;
|
|
11
|
+
var _e = useMessageContext('ReactionSelector'), contextHandleReaction = _e.handleReaction, message = _e.message;
|
|
12
|
+
var reactionOptions = propReactionOptions !== null && propReactionOptions !== void 0 ? propReactionOptions : contextReactionOptions;
|
|
17
13
|
var Avatar = propAvatar || contextAvatar || DefaultAvatar;
|
|
18
14
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
19
15
|
var latestReactions = propLatestReactions || (message === null || message === void 0 ? void 0 : message.latest_reactions) || [];
|
|
20
16
|
var ownReactions = propOwnReactions || (message === null || message === void 0 ? void 0 : message.own_reactions) || [];
|
|
21
17
|
var reactionCounts = propReactionCounts || (message === null || message === void 0 ? void 0 : message.reaction_counts) || {};
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
var emojiData = useMemo(function () { return (reactionsAreCustom ? fullEmojiData : getStrippedEmojiData(fullEmojiData)); }, [fullEmojiData, reactionsAreCustom]);
|
|
25
|
-
var _h = useState(null), tooltipReactionType = _h[0], setTooltipReactionType = _h[1];
|
|
26
|
-
var _j = useState(null), tooltipPositions = _j[0], setTooltipPositions = _j[1];
|
|
18
|
+
var _f = useState(null), tooltipReactionType = _f[0], setTooltipReactionType = _f[1];
|
|
19
|
+
var _g = useState(null), tooltipPositions = _g[0], setTooltipPositions = _g[1];
|
|
27
20
|
var targetRef = useRef(null);
|
|
28
21
|
var tooltipRef = useRef(null);
|
|
29
22
|
var showTooltip = useCallback(function (event, reactionType) {
|
|
@@ -80,17 +73,17 @@ var UnMemoizedReactionSelector = React.forwardRef(function (props, ref) {
|
|
|
80
73
|
} },
|
|
81
74
|
React.createElement("div", { className: 'arrow', style: { left: tooltipPositions === null || tooltipPositions === void 0 ? void 0 : tooltipPositions.arrow } }), (_a = getUsersPerReactionType(tooltipReactionType)) === null || _a === void 0 ? void 0 :
|
|
82
75
|
_a.map(function (user, i, users) { return (React.createElement("span", { className: 'latest-user-username', key: "key-".concat(i, "-").concat(user) }, "".concat(user).concat(i < users.length - 1 ? ', ' : ''))); }))),
|
|
83
|
-
React.createElement("ul", { className: 'str-chat__message-reactions-list str-chat__message-reactions-options' }, reactionOptions.map(function (
|
|
84
|
-
var
|
|
85
|
-
var
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
React.createElement(
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
React.createElement("ul", { className: 'str-chat__message-reactions-list str-chat__message-reactions-options' }, reactionOptions.map(function (_a) {
|
|
77
|
+
var Component = _a.Component, reactionName = _a.name, reactionType = _a.type;
|
|
78
|
+
var latestUser = getLatestUserForReactionType(reactionType);
|
|
79
|
+
var count = reactionCounts && reactionCounts[reactionType];
|
|
80
|
+
return (React.createElement("li", { key: reactionType },
|
|
81
|
+
React.createElement("button", { "aria-label": "Select Reaction: ".concat(reactionName || reactionType), className: clsx('str-chat__message-reactions-list-item str-chat__message-reactions-option', {
|
|
82
|
+
'str-chat__message-reactions-option-selected': iHaveReactedWithReaction(reactionType),
|
|
83
|
+
}), "data-text": reactionType, onClick: function (event) { return handleReaction(reactionType, event); } },
|
|
84
|
+
!!count && detailedView && (React.createElement("div", { className: 'latest-user str-chat__message-reactions-last-user', onClick: hideTooltip, onMouseEnter: function (e) { return showTooltip(e, reactionType); }, onMouseLeave: hideTooltip }, latestUser ? (React.createElement(Avatar, { image: latestUser.image, name: latestUser.name, size: 20, user: latestUser })) : (React.createElement("div", { className: 'latest-user-not-found' })))),
|
|
85
|
+
React.createElement("span", { className: 'str-chat__message-reaction-emoji' },
|
|
86
|
+
React.createElement(Component, null)),
|
|
94
87
|
Boolean(count) && detailedView && (React.createElement("span", { className: 'str-chat__message-reactions-list-item__count' }, count || '')))));
|
|
95
88
|
}))));
|
|
96
89
|
});
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import type { NimbleEmojiProps } from 'emoji-mart';
|
|
2
1
|
import type { ReactionResponse } from 'stream-chat';
|
|
3
2
|
import type { ReactEventHandler } from '../Message/types';
|
|
4
3
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
5
|
-
import type {
|
|
4
|
+
import type { ReactionOptions } from './reactionOptions';
|
|
6
5
|
export declare type ReactionsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
7
|
-
/** Additional props to be passed to the [NimbleEmoji](https://github.com/missive/emoji-mart/blob/master/src/components/emoji/nimble-emoji.js) component from `emoji-mart` */
|
|
8
|
-
additionalEmojiProps?: Partial<NimbleEmojiProps>;
|
|
9
6
|
/** Custom on click handler for an individual reaction, defaults to `onReactionListClick` from the `MessageContext` */
|
|
10
7
|
onClick?: ReactEventHandler;
|
|
11
8
|
/** An array of the own reaction objects to distinguish own reactions visually */
|
|
12
9
|
own_reactions?: ReactionResponse<StreamChatGenerics>[];
|
|
13
10
|
/** An object that keeps track of the count of each type of reaction on a message */
|
|
14
|
-
reaction_counts?:
|
|
15
|
-
[key: string]: number;
|
|
16
|
-
};
|
|
11
|
+
reaction_counts?: Record<string, number>;
|
|
17
12
|
/** A list of the currently supported reactions on a message */
|
|
18
|
-
reactionOptions?:
|
|
13
|
+
reactionOptions?: ReactionOptions;
|
|
19
14
|
/** An array of the reaction objects to display in the list */
|
|
20
15
|
reactions?: ReactionResponse<StreamChatGenerics>[];
|
|
21
16
|
/** Display the reactions in the list in reverse order, defaults to false */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,sHAAsH;IACtH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,iFAAiF;IACjF,aAAa,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACnD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAgHF;;GAEG;AACH,eAAO,MAAM,aAAa,yJAAwE,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __assign, __rest } from "tslib";
|
|
2
|
-
import React, {
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
|
-
import { useEmojiContext } from '../../context/EmojiContext';
|
|
5
4
|
import { useMessageContext } from '../../context/MessageContext';
|
|
6
5
|
import { useChatContext } from '../../context/ChatContext';
|
|
7
6
|
import { useProcessReactions } from './hooks/useProcessReactions';
|
|
@@ -21,9 +20,8 @@ var ButtonWithTooltip = function (_a) {
|
|
|
21
20
|
};
|
|
22
21
|
var UnMemoizedReactionsList = function (props) {
|
|
23
22
|
var onClick = props.onClick, _a = props.reverse, reverse = _a === void 0 ? false : _a, rest = __rest(props, ["onClick", "reverse"]);
|
|
24
|
-
var _b = useEmojiContext('ReactionsList'), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
25
23
|
var onReactionListClick = useMessageContext('ReactionsList').onReactionListClick;
|
|
26
|
-
var
|
|
24
|
+
var _b = useProcessReactions(rest), aggregatedUserNamesByType = _b.aggregatedUserNamesByType, getEmojiByReactionType = _b.getEmojiByReactionType, iHaveReactedWithReaction = _b.iHaveReactedWithReaction, latestReactions = _b.latestReactions, latestReactionTypes = _b.latestReactionTypes, reactionCounts = _b.reactionCounts, supportedReactionsArePresent = _b.supportedReactionsArePresent, totalReactionCount = _b.totalReactionCount;
|
|
27
25
|
if (!latestReactions.length)
|
|
28
26
|
return null;
|
|
29
27
|
if (!supportedReactionsArePresent)
|
|
@@ -33,17 +31,16 @@ var UnMemoizedReactionsList = function (props) {
|
|
|
33
31
|
}), "data-testid": 'reaction-list', onClick: onClick || onReactionListClick, onKeyUp: onClick || onReactionListClick, role: 'figure' },
|
|
34
32
|
React.createElement("ul", { className: 'str-chat__message-reactions' },
|
|
35
33
|
latestReactionTypes.map(function (reactionType) {
|
|
36
|
-
var
|
|
34
|
+
var ReactionOption = getEmojiByReactionType(reactionType);
|
|
37
35
|
var isOwnReaction = iHaveReactedWithReaction(reactionType);
|
|
38
|
-
return
|
|
36
|
+
return (ReactionOption && (React.createElement("li", { className: clsx('str-chat__message-reaction', {
|
|
39
37
|
'str-chat__message-reaction-own': isOwnReaction,
|
|
40
|
-
}), key:
|
|
41
|
-
React.createElement(ButtonWithTooltip, { "aria-label": "Reactions: ".concat(reactionType), title: aggregatedUserNamesByType[reactionType].join(', '), type: 'button' },
|
|
42
|
-
React.createElement(
|
|
43
|
-
React.createElement(
|
|
44
|
-
React.createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 16 }, additionalEmojiProps)))),
|
|
38
|
+
}), key: reactionType },
|
|
39
|
+
React.createElement(ButtonWithTooltip, { "aria-label": "Reactions: ".concat(reactionType), "data-testid": "reactions-list-button-".concat(reactionType), title: aggregatedUserNamesByType[reactionType].join(', '), type: 'button' },
|
|
40
|
+
React.createElement("span", { className: 'str-chat__message-reaction-emoji' },
|
|
41
|
+
React.createElement(ReactionOption.Component, null)),
|
|
45
42
|
"\u00A0",
|
|
46
|
-
React.createElement("span", { className: 'str-chat__message-reaction-count', "data-testclass": 'reaction-list-reaction-count' }, reactionCounts[reactionType]))))
|
|
43
|
+
React.createElement("span", { className: 'str-chat__message-reaction-count', "data-testclass": 'reaction-list-reaction-count' }, reactionCounts[reactionType])))));
|
|
47
44
|
}),
|
|
48
45
|
React.createElement("li", null,
|
|
49
46
|
React.createElement("span", { className: 'str-chat__reaction-list--counter' }, totalReactionCount)))));
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { NimbleEmojiProps } from 'emoji-mart';
|
|
3
2
|
import type { ReactionResponse } from 'stream-chat';
|
|
4
3
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
5
|
-
import type {
|
|
4
|
+
import type { ReactionOptions } from './reactionOptions';
|
|
6
5
|
export declare type SimpleReactionsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
7
|
-
/** Additional props to be passed to the [NimbleEmoji](https://github.com/missive/emoji-mart/blob/master/src/components/emoji/nimble-emoji.js) component from `emoji-mart` */
|
|
8
|
-
additionalEmojiProps?: Partial<NimbleEmojiProps>;
|
|
9
6
|
/** Function that adds/removes a reaction on a message (overrides the function stored in `MessageContext`) */
|
|
10
7
|
handleReaction?: (reactionType: string, event: React.BaseSyntheticEvent) => Promise<void>;
|
|
11
8
|
/** An array of the own reaction objects to distinguish own reactions visually */
|
|
@@ -15,7 +12,7 @@ export declare type SimpleReactionsListProps<StreamChatGenerics extends DefaultS
|
|
|
15
12
|
[key: string]: number;
|
|
16
13
|
};
|
|
17
14
|
/** A list of the currently supported reactions on a message */
|
|
18
|
-
reactionOptions?:
|
|
15
|
+
reactionOptions?: ReactionOptions;
|
|
19
16
|
/** An array of the reaction objects to display in the list */
|
|
20
17
|
reactions?: ReactionResponse<StreamChatGenerics>[];
|
|
21
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/SimpleReactionsList.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SimpleReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/SimpleReactionsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsCzD,oBAAY,wBAAwB,CAClC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,6GAA6G;IAC7G,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,iFAAiF;IACjF,aAAa,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,oFAAoF;IACpF,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC5C,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;CACpD,CAAC;AA4FF,eAAO,MAAM,mBAAmB,+JAES,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React, {
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { useChatContext } from '../../context/ChatContext';
|
|
5
|
-
import { useEmojiContext } from '../../context/EmojiContext';
|
|
6
5
|
import { useMessageContext } from '../../context/MessageContext';
|
|
7
|
-
import { useEnterLeaveHandlers } from '../Tooltip/hooks';
|
|
8
6
|
import { useProcessReactions } from './hooks/useProcessReactions';
|
|
7
|
+
import { useEnterLeaveHandlers } from '../Tooltip/hooks';
|
|
9
8
|
import { PopperTooltip } from '../Tooltip';
|
|
10
9
|
// todo: merge with ReactionsList/ButtonWithTooltip
|
|
11
10
|
// avoiding breaking change of replacing <span> with <button>
|
|
@@ -23,10 +22,9 @@ var WithTooltip = function (_a) {
|
|
|
23
22
|
};
|
|
24
23
|
var UnMemoizedSimpleReactionsList = function (props) {
|
|
25
24
|
var propHandleReaction = props.handleReaction, rest = __rest(props, ["handleReaction"]);
|
|
26
|
-
var _a = useEmojiContext('SimpleReactionsList'), Emoji = _a.Emoji, emojiConfig = _a.emojiConfig;
|
|
27
25
|
var contextHandleReaction = useMessageContext('SimpleReactionsList').handleReaction;
|
|
28
|
-
var
|
|
29
|
-
var
|
|
26
|
+
var _a = useProcessReactions(rest), getEmojiByReactionType = _a.getEmojiByReactionType, iHaveReactedWithReaction = _a.iHaveReactedWithReaction, latestReactions = _a.latestReactions, latestReactionTypes = _a.latestReactionTypes, supportedReactionsArePresent = _a.supportedReactionsArePresent, totalReactionCount = _a.totalReactionCount;
|
|
27
|
+
var _b = useState(undefined), tooltipReactionType = _b[0], setTooltipReactionType = _b[1];
|
|
30
28
|
var themeVersion = useChatContext('SimpleReactionsList').themeVersion;
|
|
31
29
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
32
30
|
if (!latestReactions.length)
|
|
@@ -46,22 +44,21 @@ var UnMemoizedSimpleReactionsList = function (props) {
|
|
|
46
44
|
};
|
|
47
45
|
return (React.createElement("div", { className: 'str-chat__message-reactions-container' },
|
|
48
46
|
React.createElement("ul", { className: 'str-chat__simple-reactions-list str-chat__message-reactions', "data-testid": 'simple-reaction-list', onMouseLeave: function () { return setTooltipReactionType(undefined); } },
|
|
49
|
-
latestReactionTypes.map(function (reactionType
|
|
47
|
+
latestReactionTypes.map(function (reactionType) {
|
|
50
48
|
var _a;
|
|
51
|
-
var
|
|
49
|
+
var ReactionOption = getEmojiByReactionType(reactionType);
|
|
52
50
|
var isOwnReaction = iHaveReactedWithReaction(reactionType);
|
|
53
|
-
var tooltipVisible =
|
|
51
|
+
var tooltipVisible = tooltipReactionType === reactionType;
|
|
54
52
|
var tooltipContent = (_a = getUsersPerReactionType(tooltipReactionType)) === null || _a === void 0 ? void 0 : _a.join(', ');
|
|
55
|
-
return
|
|
53
|
+
return (ReactionOption && (React.createElement("li", { className: clsx('str-chat__simple-reactions-list-item', {
|
|
56
54
|
'str-chat__message-reaction-own': isOwnReaction,
|
|
57
|
-
}), key:
|
|
55
|
+
}), key: reactionType, onClick: function (event) { return handleReaction(reactionType, event); }, onKeyUp: function (event) { return handleReaction(reactionType, event); } },
|
|
58
56
|
React.createElement(WithTooltip, { onMouseEnter: function () { return setTooltipReactionType(reactionType); }, onMouseLeave: function () { return setTooltipReactionType(undefined); }, title: tooltipContent },
|
|
59
|
-
React.createElement(
|
|
60
|
-
React.createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 13 }, additionalEmojiProps))),
|
|
57
|
+
React.createElement(ReactionOption.Component, null),
|
|
61
58
|
"\u00A0",
|
|
62
59
|
tooltipVisible && themeVersion === '1' && (React.createElement("div", { className: 'str-chat__simple-reactions-list-tooltip' },
|
|
63
60
|
React.createElement("div", { className: 'arrow' }),
|
|
64
|
-
tooltipContent)))))
|
|
61
|
+
tooltipContent))))));
|
|
65
62
|
}),
|
|
66
63
|
React.createElement("li", { className: 'str-chat__simple-reactions-list-item--last-number' }, totalReactionCount))));
|
|
67
64
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare type SpriteImageProps = {
|
|
3
|
+
columns: number;
|
|
4
|
+
position: [number, number];
|
|
5
|
+
rows: number;
|
|
6
|
+
spriteUrl: string;
|
|
7
|
+
fallback?: React.ReactNode;
|
|
8
|
+
height?: number;
|
|
9
|
+
width?: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const SpriteImage: ({ columns, fallback, height, position, rows, spriteUrl, width, }: SpriteImageProps) => JSX.Element;
|
|
12
|
+
//# sourceMappingURL=SpriteImage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteImage.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/SpriteImage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,oBAAY,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,qEAQrB,gBAAgB,gBAgClB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { getImageDimensions } from './utils/utils';
|
|
3
|
+
export var SpriteImage = function (_a) {
|
|
4
|
+
var columns = _a.columns, fallback = _a.fallback, height = _a.height, position = _a.position, rows = _a.rows, spriteUrl = _a.spriteUrl, width = _a.width;
|
|
5
|
+
var _b = useState([0, 0]), _c = _b[0], spriteWidth = _c[0], spriteHeight = _c[1], setSpriteDimensions = _b[1];
|
|
6
|
+
useEffect(function () {
|
|
7
|
+
getImageDimensions(spriteUrl).then(setSpriteDimensions).catch(console.error);
|
|
8
|
+
}, [spriteUrl]);
|
|
9
|
+
var x = position[0], y = position[1];
|
|
10
|
+
var spriteItemWidth = spriteWidth / columns;
|
|
11
|
+
var spriteItemHeight = spriteHeight / rows;
|
|
12
|
+
var resizeRatio = 1;
|
|
13
|
+
if (!width && height)
|
|
14
|
+
resizeRatio = height / spriteItemHeight;
|
|
15
|
+
if (width && !height)
|
|
16
|
+
resizeRatio = width / spriteItemWidth;
|
|
17
|
+
if (resizeRatio === Infinity)
|
|
18
|
+
resizeRatio = 1;
|
|
19
|
+
if (!spriteHeight || !spriteWidth)
|
|
20
|
+
return React.createElement(React.Fragment, null, fallback);
|
|
21
|
+
return (React.createElement("div", { "data-testid": 'sprite-image', style: {
|
|
22
|
+
backgroundImage: "url('".concat(spriteUrl, "')"),
|
|
23
|
+
backgroundPosition: "".concat(x * (100 / (columns - 1)), "% ").concat(y * (100 / (rows - 1)), "%"),
|
|
24
|
+
backgroundSize: "".concat(columns * 100, "% ").concat(rows * 100, "%"),
|
|
25
|
+
height: height !== null && height !== void 0 ? height : spriteItemHeight * resizeRatio,
|
|
26
|
+
width: width !== null && width !== void 0 ? width : spriteItemWidth * resizeRatio,
|
|
27
|
+
} }));
|
|
28
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SpriteImageProps } from './SpriteImage';
|
|
3
|
+
import type { Readable } from '../../types/types';
|
|
4
|
+
declare const StreamSpriteEmojiPositions: {
|
|
5
|
+
angry: number[];
|
|
6
|
+
haha: number[];
|
|
7
|
+
like: number[];
|
|
8
|
+
love: number[];
|
|
9
|
+
sad: number[];
|
|
10
|
+
wow: number[];
|
|
11
|
+
};
|
|
12
|
+
declare type StreamEmojiType = keyof typeof StreamSpriteEmojiPositions;
|
|
13
|
+
export declare const StreamEmoji: ({ fallback, type, }: {
|
|
14
|
+
type: StreamEmojiType;
|
|
15
|
+
fallback?: React.ReactNode;
|
|
16
|
+
}) => JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=StreamEmoji.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamEmoji.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/StreamEmoji.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,QAAA,MAAM,0BAA0B;;;;;;;CAO/B,CAAC;AAEF,aAAK,eAAe,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAI/D,eAAO,MAAM,WAAW;UAGJ,eAAe;;iBAYlC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SpriteImage } from './SpriteImage';
|
|
3
|
+
var StreamSpriteEmojiPositions = {
|
|
4
|
+
angry: [1, 1],
|
|
5
|
+
haha: [1, 0],
|
|
6
|
+
like: [0, 0],
|
|
7
|
+
love: [1, 2],
|
|
8
|
+
sad: [0, 1],
|
|
9
|
+
wow: [0, 2],
|
|
10
|
+
};
|
|
11
|
+
var STREAM_SPRITE_URL = 'https://getstream.imgix.net/images/emoji-sprite.png';
|
|
12
|
+
export var StreamEmoji = function (_a) {
|
|
13
|
+
var fallback = _a.fallback, type = _a.type;
|
|
14
|
+
var position = StreamSpriteEmojiPositions[type];
|
|
15
|
+
return (React.createElement(SpriteImage, { columns: 2, fallback: fallback, height: 18, position: position, rows: 3, spriteUrl: STREAM_SPRITE_URL }));
|
|
16
|
+
};
|