sceyt-chat-react-uikit 1.7.8-beta.11 → 1.7.8-beta.13
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/components/SendMessageInput/FormatMessagePlugin/index.d.ts +11 -1
- package/index.js +122 -19
- package/index.modern.js +122 -19
- package/package.json +1 -1
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
import { IMessage, IMember } from '../../../types';
|
|
3
|
+
export default function FormatMessagePlugin({ editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts }: {
|
|
4
|
+
editorState: any;
|
|
5
|
+
setMessageBodyAttributes: (data: any) => void;
|
|
6
|
+
setMessageText: (newMessageText: string) => void;
|
|
7
|
+
setMentionedMember: (mentionedMember: any) => void;
|
|
8
|
+
messageToEdit?: IMessage;
|
|
9
|
+
activeChannelMembers: IMember[];
|
|
10
|
+
contactsMap: any;
|
|
11
|
+
getFromContacts: boolean;
|
|
12
|
+
}): JSX.Element | null;
|
package/index.js
CHANGED
|
@@ -40904,26 +40904,121 @@ function EditMessagePlugin(_ref) {
|
|
|
40904
40904
|
return null;
|
|
40905
40905
|
}
|
|
40906
40906
|
|
|
40907
|
-
function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit) {
|
|
40908
|
-
|
|
40909
|
-
|
|
40910
|
-
|
|
40911
|
-
|
|
40907
|
+
function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts) {
|
|
40908
|
+
if (activeChannelMembers === void 0) {
|
|
40909
|
+
activeChannelMembers = [];
|
|
40910
|
+
}
|
|
40911
|
+
if (contactsMap === void 0) {
|
|
40912
|
+
contactsMap = {};
|
|
40913
|
+
}
|
|
40914
|
+
if (getFromContacts === void 0) {
|
|
40915
|
+
getFromContacts = false;
|
|
40916
|
+
}
|
|
40917
|
+
function processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection) {
|
|
40918
|
+
if (!pastedText) return;
|
|
40919
|
+
var contacts = getFromContacts ? [].concat(Object.values(contactsMap), activeChannelMembers) : activeChannelMembers;
|
|
40920
|
+
var mentionPatterns = [];
|
|
40921
|
+
contacts.forEach(function (contactOrMember) {
|
|
40922
|
+
var contactFromMap = contactsMap[contactOrMember.id];
|
|
40923
|
+
var contact = getFromContacts && contactFromMap ? contactFromMap : undefined;
|
|
40924
|
+
var member = contact ? undefined : contactOrMember;
|
|
40925
|
+
var fullDisplayName = makeUsername(contact, member, getFromContacts, false);
|
|
40926
|
+
if (fullDisplayName && fullDisplayName !== 'Deleted user') {
|
|
40927
|
+
mentionPatterns.push({
|
|
40928
|
+
pattern: "@" + fullDisplayName,
|
|
40929
|
+
contact: contactOrMember
|
|
40930
|
+
});
|
|
40931
|
+
}
|
|
40932
|
+
});
|
|
40933
|
+
mentionPatterns.sort(function (a, b) {
|
|
40934
|
+
return b.pattern.length - a.pattern.length;
|
|
40935
|
+
});
|
|
40936
|
+
var matches = [];
|
|
40937
|
+
var usedRanges = [];
|
|
40938
|
+
mentionPatterns.forEach(function (_ref) {
|
|
40939
|
+
var pattern = _ref.pattern,
|
|
40940
|
+
contact = _ref.contact;
|
|
40941
|
+
var searchIndex = 0;
|
|
40942
|
+
var _loop = function _loop() {
|
|
40943
|
+
var index = pastedText.indexOf(pattern, searchIndex);
|
|
40944
|
+
if (index === -1) return 1;
|
|
40945
|
+
var isOverlapping = usedRanges.some(function (range) {
|
|
40946
|
+
return index < range.end && index + pattern.length > range.start;
|
|
40947
|
+
});
|
|
40948
|
+
if (!isOverlapping) {
|
|
40949
|
+
var charBefore = index > 0 ? pastedText[index - 1] : undefined;
|
|
40950
|
+
var isValidStart = charBefore === undefined || charBefore === ' ' || charBefore === '\n' || charBefore === '\r';
|
|
40951
|
+
var charAfter = pastedText[index + pattern.length];
|
|
40952
|
+
var isValidEnd = charAfter === undefined || charAfter === ' ' || charAfter === '\n' || charAfter === '\r';
|
|
40953
|
+
if (isValidStart && isValidEnd) {
|
|
40954
|
+
matches.push({
|
|
40955
|
+
start: index,
|
|
40956
|
+
end: index + pattern.length,
|
|
40957
|
+
contact: contact,
|
|
40958
|
+
pattern: pattern
|
|
40959
|
+
});
|
|
40960
|
+
usedRanges.push({
|
|
40961
|
+
start: index,
|
|
40962
|
+
end: index + pattern.length
|
|
40963
|
+
});
|
|
40964
|
+
}
|
|
40965
|
+
}
|
|
40966
|
+
searchIndex = index + 1;
|
|
40967
|
+
};
|
|
40968
|
+
while (true) {
|
|
40969
|
+
if (_loop()) break;
|
|
40970
|
+
}
|
|
40971
|
+
});
|
|
40972
|
+
matches.sort(function (a, b) {
|
|
40973
|
+
return a.start - b.start;
|
|
40974
|
+
});
|
|
40975
|
+
var nodes = [];
|
|
40976
|
+
var currentIndex = 0;
|
|
40977
|
+
matches.forEach(function (_ref2) {
|
|
40978
|
+
var start = _ref2.start,
|
|
40979
|
+
end = _ref2.end,
|
|
40980
|
+
contact = _ref2.contact,
|
|
40981
|
+
pattern = _ref2.pattern;
|
|
40982
|
+
if (start > currentIndex) {
|
|
40983
|
+
var textBefore = pastedText.substring(currentIndex, start);
|
|
40984
|
+
if (textBefore) {
|
|
40985
|
+
nodes.push(lexical.$createTextNode(textBefore));
|
|
40986
|
+
}
|
|
40987
|
+
}
|
|
40988
|
+
setMentionedMember(contact);
|
|
40989
|
+
var mentionNode = $createMentionNode(_extends({}, contact, {
|
|
40990
|
+
name: pattern
|
|
40991
|
+
}));
|
|
40992
|
+
nodes.push(mentionNode);
|
|
40993
|
+
currentIndex = end;
|
|
40994
|
+
});
|
|
40995
|
+
if (currentIndex < pastedText.length) {
|
|
40996
|
+
var remainingText = pastedText.substring(currentIndex);
|
|
40997
|
+
if (remainingText) {
|
|
40998
|
+
nodes.push(lexical.$createTextNode(remainingText));
|
|
40999
|
+
}
|
|
41000
|
+
}
|
|
41001
|
+
if (matches.length === 0) {
|
|
41002
|
+
selection.insertText(pastedText);
|
|
41003
|
+
} else if (nodes.length > 0) {
|
|
41004
|
+
selection.insertNodes(nodes);
|
|
40912
41005
|
}
|
|
40913
41006
|
}
|
|
40914
41007
|
var handlePast = React.useCallback(function (e) {
|
|
40915
|
-
|
|
40916
|
-
|
|
41008
|
+
if (!('clipboardData' in e) || !e.clipboardData) {
|
|
41009
|
+
return false;
|
|
41010
|
+
}
|
|
41011
|
+
var pastedText = e.clipboardData.getData('text/plain');
|
|
41012
|
+
if (pastedText) {
|
|
40917
41013
|
editor.update(function () {
|
|
40918
41014
|
var selection = lexical.$getSelection();
|
|
40919
|
-
|
|
40920
|
-
|
|
40921
|
-
if (clipboardData != null && lexical.$isRangeSelection(selection)) {
|
|
40922
|
-
$insertDataTransferForPlainText(clipboardData, selection);
|
|
41015
|
+
if (lexical.$isRangeSelection(selection)) {
|
|
41016
|
+
processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection);
|
|
40923
41017
|
}
|
|
40924
41018
|
});
|
|
40925
41019
|
}
|
|
40926
|
-
|
|
41020
|
+
return true;
|
|
41021
|
+
}, [editor, contactsMap, setMentionedMember, getFromContacts, activeChannelMembers]);
|
|
40927
41022
|
var onDelete = React.useCallback(function (event) {
|
|
40928
41023
|
event.preventDefault();
|
|
40929
41024
|
editor.update(function () {
|
|
@@ -41037,14 +41132,18 @@ function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMess
|
|
|
41037
41132
|
}
|
|
41038
41133
|
}, [editor, editorState]);
|
|
41039
41134
|
}
|
|
41040
|
-
function FormatMessagePlugin(
|
|
41041
|
-
var editorState =
|
|
41042
|
-
setMessageBodyAttributes =
|
|
41043
|
-
setMessageText =
|
|
41044
|
-
|
|
41135
|
+
function FormatMessagePlugin(_ref3) {
|
|
41136
|
+
var editorState = _ref3.editorState,
|
|
41137
|
+
setMessageBodyAttributes = _ref3.setMessageBodyAttributes,
|
|
41138
|
+
setMessageText = _ref3.setMessageText,
|
|
41139
|
+
setMentionedMember = _ref3.setMentionedMember,
|
|
41140
|
+
messageToEdit = _ref3.messageToEdit,
|
|
41141
|
+
activeChannelMembers = _ref3.activeChannelMembers,
|
|
41142
|
+
contactsMap = _ref3.contactsMap,
|
|
41143
|
+
getFromContacts = _ref3.getFromContacts;
|
|
41045
41144
|
var _useLexicalComposerCo = LexicalComposerContext.useLexicalComposerContext(),
|
|
41046
41145
|
editor = _useLexicalComposerCo[0];
|
|
41047
|
-
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit);
|
|
41146
|
+
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts);
|
|
41048
41147
|
return null;
|
|
41049
41148
|
}
|
|
41050
41149
|
|
|
@@ -44196,7 +44295,11 @@ var SendMessageInput = function SendMessageInput(_ref3) {
|
|
|
44196
44295
|
editorState: realEditorState,
|
|
44197
44296
|
setMessageBodyAttributes: setMessageBodyAttributes,
|
|
44198
44297
|
setMessageText: messageToEdit ? setEditMessageText : setMessageText,
|
|
44199
|
-
messageToEdit: messageToEdit
|
|
44298
|
+
messageToEdit: messageToEdit,
|
|
44299
|
+
activeChannelMembers: activeChannelMembers,
|
|
44300
|
+
contactsMap: contactsMap,
|
|
44301
|
+
getFromContacts: getFromContacts,
|
|
44302
|
+
setMentionedMember: handleSetMentionMember
|
|
44200
44303
|
}), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isEmojisOpened && (/*#__PURE__*/React__default.createElement(EmojisPopup$1, {
|
|
44201
44304
|
handleEmojiPopupToggle: handleEmojiPopupToggle,
|
|
44202
44305
|
rightSide: emojisInRightSide,
|
package/index.modern.js
CHANGED
|
@@ -40903,26 +40903,121 @@ function EditMessagePlugin(_ref) {
|
|
|
40903
40903
|
return null;
|
|
40904
40904
|
}
|
|
40905
40905
|
|
|
40906
|
-
function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit) {
|
|
40907
|
-
|
|
40908
|
-
|
|
40909
|
-
|
|
40910
|
-
|
|
40906
|
+
function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts) {
|
|
40907
|
+
if (activeChannelMembers === void 0) {
|
|
40908
|
+
activeChannelMembers = [];
|
|
40909
|
+
}
|
|
40910
|
+
if (contactsMap === void 0) {
|
|
40911
|
+
contactsMap = {};
|
|
40912
|
+
}
|
|
40913
|
+
if (getFromContacts === void 0) {
|
|
40914
|
+
getFromContacts = false;
|
|
40915
|
+
}
|
|
40916
|
+
function processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection) {
|
|
40917
|
+
if (!pastedText) return;
|
|
40918
|
+
var contacts = getFromContacts ? [].concat(Object.values(contactsMap), activeChannelMembers) : activeChannelMembers;
|
|
40919
|
+
var mentionPatterns = [];
|
|
40920
|
+
contacts.forEach(function (contactOrMember) {
|
|
40921
|
+
var contactFromMap = contactsMap[contactOrMember.id];
|
|
40922
|
+
var contact = getFromContacts && contactFromMap ? contactFromMap : undefined;
|
|
40923
|
+
var member = contact ? undefined : contactOrMember;
|
|
40924
|
+
var fullDisplayName = makeUsername(contact, member, getFromContacts, false);
|
|
40925
|
+
if (fullDisplayName && fullDisplayName !== 'Deleted user') {
|
|
40926
|
+
mentionPatterns.push({
|
|
40927
|
+
pattern: "@" + fullDisplayName,
|
|
40928
|
+
contact: contactOrMember
|
|
40929
|
+
});
|
|
40930
|
+
}
|
|
40931
|
+
});
|
|
40932
|
+
mentionPatterns.sort(function (a, b) {
|
|
40933
|
+
return b.pattern.length - a.pattern.length;
|
|
40934
|
+
});
|
|
40935
|
+
var matches = [];
|
|
40936
|
+
var usedRanges = [];
|
|
40937
|
+
mentionPatterns.forEach(function (_ref) {
|
|
40938
|
+
var pattern = _ref.pattern,
|
|
40939
|
+
contact = _ref.contact;
|
|
40940
|
+
var searchIndex = 0;
|
|
40941
|
+
var _loop = function _loop() {
|
|
40942
|
+
var index = pastedText.indexOf(pattern, searchIndex);
|
|
40943
|
+
if (index === -1) return 1;
|
|
40944
|
+
var isOverlapping = usedRanges.some(function (range) {
|
|
40945
|
+
return index < range.end && index + pattern.length > range.start;
|
|
40946
|
+
});
|
|
40947
|
+
if (!isOverlapping) {
|
|
40948
|
+
var charBefore = index > 0 ? pastedText[index - 1] : undefined;
|
|
40949
|
+
var isValidStart = charBefore === undefined || charBefore === ' ' || charBefore === '\n' || charBefore === '\r';
|
|
40950
|
+
var charAfter = pastedText[index + pattern.length];
|
|
40951
|
+
var isValidEnd = charAfter === undefined || charAfter === ' ' || charAfter === '\n' || charAfter === '\r';
|
|
40952
|
+
if (isValidStart && isValidEnd) {
|
|
40953
|
+
matches.push({
|
|
40954
|
+
start: index,
|
|
40955
|
+
end: index + pattern.length,
|
|
40956
|
+
contact: contact,
|
|
40957
|
+
pattern: pattern
|
|
40958
|
+
});
|
|
40959
|
+
usedRanges.push({
|
|
40960
|
+
start: index,
|
|
40961
|
+
end: index + pattern.length
|
|
40962
|
+
});
|
|
40963
|
+
}
|
|
40964
|
+
}
|
|
40965
|
+
searchIndex = index + 1;
|
|
40966
|
+
};
|
|
40967
|
+
while (true) {
|
|
40968
|
+
if (_loop()) break;
|
|
40969
|
+
}
|
|
40970
|
+
});
|
|
40971
|
+
matches.sort(function (a, b) {
|
|
40972
|
+
return a.start - b.start;
|
|
40973
|
+
});
|
|
40974
|
+
var nodes = [];
|
|
40975
|
+
var currentIndex = 0;
|
|
40976
|
+
matches.forEach(function (_ref2) {
|
|
40977
|
+
var start = _ref2.start,
|
|
40978
|
+
end = _ref2.end,
|
|
40979
|
+
contact = _ref2.contact,
|
|
40980
|
+
pattern = _ref2.pattern;
|
|
40981
|
+
if (start > currentIndex) {
|
|
40982
|
+
var textBefore = pastedText.substring(currentIndex, start);
|
|
40983
|
+
if (textBefore) {
|
|
40984
|
+
nodes.push($createTextNode(textBefore));
|
|
40985
|
+
}
|
|
40986
|
+
}
|
|
40987
|
+
setMentionedMember(contact);
|
|
40988
|
+
var mentionNode = $createMentionNode(_extends({}, contact, {
|
|
40989
|
+
name: pattern
|
|
40990
|
+
}));
|
|
40991
|
+
nodes.push(mentionNode);
|
|
40992
|
+
currentIndex = end;
|
|
40993
|
+
});
|
|
40994
|
+
if (currentIndex < pastedText.length) {
|
|
40995
|
+
var remainingText = pastedText.substring(currentIndex);
|
|
40996
|
+
if (remainingText) {
|
|
40997
|
+
nodes.push($createTextNode(remainingText));
|
|
40998
|
+
}
|
|
40999
|
+
}
|
|
41000
|
+
if (matches.length === 0) {
|
|
41001
|
+
selection.insertText(pastedText);
|
|
41002
|
+
} else if (nodes.length > 0) {
|
|
41003
|
+
selection.insertNodes(nodes);
|
|
40911
41004
|
}
|
|
40912
41005
|
}
|
|
40913
41006
|
var handlePast = useCallback(function (e) {
|
|
40914
|
-
|
|
40915
|
-
|
|
41007
|
+
if (!('clipboardData' in e) || !e.clipboardData) {
|
|
41008
|
+
return false;
|
|
41009
|
+
}
|
|
41010
|
+
var pastedText = e.clipboardData.getData('text/plain');
|
|
41011
|
+
if (pastedText) {
|
|
40916
41012
|
editor.update(function () {
|
|
40917
41013
|
var selection = $getSelection();
|
|
40918
|
-
|
|
40919
|
-
|
|
40920
|
-
if (clipboardData != null && $isRangeSelection(selection)) {
|
|
40921
|
-
$insertDataTransferForPlainText(clipboardData, selection);
|
|
41014
|
+
if ($isRangeSelection(selection)) {
|
|
41015
|
+
processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection);
|
|
40922
41016
|
}
|
|
40923
41017
|
});
|
|
40924
41018
|
}
|
|
40925
|
-
|
|
41019
|
+
return true;
|
|
41020
|
+
}, [editor, contactsMap, setMentionedMember, getFromContacts, activeChannelMembers]);
|
|
40926
41021
|
var onDelete = useCallback(function (event) {
|
|
40927
41022
|
event.preventDefault();
|
|
40928
41023
|
editor.update(function () {
|
|
@@ -41036,14 +41131,18 @@ function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMess
|
|
|
41036
41131
|
}
|
|
41037
41132
|
}, [editor, editorState]);
|
|
41038
41133
|
}
|
|
41039
|
-
function FormatMessagePlugin(
|
|
41040
|
-
var editorState =
|
|
41041
|
-
setMessageBodyAttributes =
|
|
41042
|
-
setMessageText =
|
|
41043
|
-
|
|
41134
|
+
function FormatMessagePlugin(_ref3) {
|
|
41135
|
+
var editorState = _ref3.editorState,
|
|
41136
|
+
setMessageBodyAttributes = _ref3.setMessageBodyAttributes,
|
|
41137
|
+
setMessageText = _ref3.setMessageText,
|
|
41138
|
+
setMentionedMember = _ref3.setMentionedMember,
|
|
41139
|
+
messageToEdit = _ref3.messageToEdit,
|
|
41140
|
+
activeChannelMembers = _ref3.activeChannelMembers,
|
|
41141
|
+
contactsMap = _ref3.contactsMap,
|
|
41142
|
+
getFromContacts = _ref3.getFromContacts;
|
|
41044
41143
|
var _useLexicalComposerCo = useLexicalComposerContext(),
|
|
41045
41144
|
editor = _useLexicalComposerCo[0];
|
|
41046
|
-
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit);
|
|
41145
|
+
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts);
|
|
41047
41146
|
return null;
|
|
41048
41147
|
}
|
|
41049
41148
|
|
|
@@ -44195,7 +44294,11 @@ var SendMessageInput = function SendMessageInput(_ref3) {
|
|
|
44195
44294
|
editorState: realEditorState,
|
|
44196
44295
|
setMessageBodyAttributes: setMessageBodyAttributes,
|
|
44197
44296
|
setMessageText: messageToEdit ? setEditMessageText : setMessageText,
|
|
44198
|
-
messageToEdit: messageToEdit
|
|
44297
|
+
messageToEdit: messageToEdit,
|
|
44298
|
+
activeChannelMembers: activeChannelMembers,
|
|
44299
|
+
contactsMap: contactsMap,
|
|
44300
|
+
getFromContacts: getFromContacts,
|
|
44301
|
+
setMentionedMember: handleSetMentionMember
|
|
44199
44302
|
}), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isEmojisOpened && (/*#__PURE__*/React__default.createElement(EmojisPopup$1, {
|
|
44200
44303
|
handleEmojiPopupToggle: handleEmojiPopupToggle,
|
|
44201
44304
|
rightSide: emojisInRightSide,
|