sceyt-chat-react-uikit 1.7.8-beta.11 → 1.7.8-beta.12
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 +123 -19
- package/index.modern.js +123 -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,122 @@ 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
|
+
nodes.push(lexical.$createTextNode(pastedText));
|
|
41003
|
+
}
|
|
41004
|
+
if (nodes.length > 0) {
|
|
41005
|
+
selection.insertNodes(nodes);
|
|
40912
41006
|
}
|
|
40913
41007
|
}
|
|
40914
41008
|
var handlePast = React.useCallback(function (e) {
|
|
40915
|
-
|
|
40916
|
-
|
|
41009
|
+
if (!('clipboardData' in e) || !e.clipboardData) {
|
|
41010
|
+
return false;
|
|
41011
|
+
}
|
|
41012
|
+
var pastedText = e.clipboardData.getData('text/plain');
|
|
41013
|
+
if (pastedText) {
|
|
40917
41014
|
editor.update(function () {
|
|
40918
41015
|
var selection = lexical.$getSelection();
|
|
40919
|
-
|
|
40920
|
-
|
|
40921
|
-
if (clipboardData != null && lexical.$isRangeSelection(selection)) {
|
|
40922
|
-
$insertDataTransferForPlainText(clipboardData, selection);
|
|
41016
|
+
if (lexical.$isRangeSelection(selection)) {
|
|
41017
|
+
processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection);
|
|
40923
41018
|
}
|
|
40924
41019
|
});
|
|
40925
41020
|
}
|
|
40926
|
-
|
|
41021
|
+
return true;
|
|
41022
|
+
}, [editor, contactsMap, setMentionedMember, getFromContacts, activeChannelMembers]);
|
|
40927
41023
|
var onDelete = React.useCallback(function (event) {
|
|
40928
41024
|
event.preventDefault();
|
|
40929
41025
|
editor.update(function () {
|
|
@@ -41037,14 +41133,18 @@ function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMess
|
|
|
41037
41133
|
}
|
|
41038
41134
|
}, [editor, editorState]);
|
|
41039
41135
|
}
|
|
41040
|
-
function FormatMessagePlugin(
|
|
41041
|
-
var editorState =
|
|
41042
|
-
setMessageBodyAttributes =
|
|
41043
|
-
setMessageText =
|
|
41044
|
-
|
|
41136
|
+
function FormatMessagePlugin(_ref3) {
|
|
41137
|
+
var editorState = _ref3.editorState,
|
|
41138
|
+
setMessageBodyAttributes = _ref3.setMessageBodyAttributes,
|
|
41139
|
+
setMessageText = _ref3.setMessageText,
|
|
41140
|
+
setMentionedMember = _ref3.setMentionedMember,
|
|
41141
|
+
messageToEdit = _ref3.messageToEdit,
|
|
41142
|
+
activeChannelMembers = _ref3.activeChannelMembers,
|
|
41143
|
+
contactsMap = _ref3.contactsMap,
|
|
41144
|
+
getFromContacts = _ref3.getFromContacts;
|
|
41045
41145
|
var _useLexicalComposerCo = LexicalComposerContext.useLexicalComposerContext(),
|
|
41046
41146
|
editor = _useLexicalComposerCo[0];
|
|
41047
|
-
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit);
|
|
41147
|
+
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts);
|
|
41048
41148
|
return null;
|
|
41049
41149
|
}
|
|
41050
41150
|
|
|
@@ -44196,7 +44296,11 @@ var SendMessageInput = function SendMessageInput(_ref3) {
|
|
|
44196
44296
|
editorState: realEditorState,
|
|
44197
44297
|
setMessageBodyAttributes: setMessageBodyAttributes,
|
|
44198
44298
|
setMessageText: messageToEdit ? setEditMessageText : setMessageText,
|
|
44199
|
-
messageToEdit: messageToEdit
|
|
44299
|
+
messageToEdit: messageToEdit,
|
|
44300
|
+
activeChannelMembers: activeChannelMembers,
|
|
44301
|
+
contactsMap: contactsMap,
|
|
44302
|
+
getFromContacts: getFromContacts,
|
|
44303
|
+
setMentionedMember: handleSetMentionMember
|
|
44200
44304
|
}), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isEmojisOpened && (/*#__PURE__*/React__default.createElement(EmojisPopup$1, {
|
|
44201
44305
|
handleEmojiPopupToggle: handleEmojiPopupToggle,
|
|
44202
44306
|
rightSide: emojisInRightSide,
|
package/index.modern.js
CHANGED
|
@@ -40903,26 +40903,122 @@ 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
|
+
nodes.push($createTextNode(pastedText));
|
|
41002
|
+
}
|
|
41003
|
+
if (nodes.length > 0) {
|
|
41004
|
+
selection.insertNodes(nodes);
|
|
40911
41005
|
}
|
|
40912
41006
|
}
|
|
40913
41007
|
var handlePast = useCallback(function (e) {
|
|
40914
|
-
|
|
40915
|
-
|
|
41008
|
+
if (!('clipboardData' in e) || !e.clipboardData) {
|
|
41009
|
+
return false;
|
|
41010
|
+
}
|
|
41011
|
+
var pastedText = e.clipboardData.getData('text/plain');
|
|
41012
|
+
if (pastedText) {
|
|
40916
41013
|
editor.update(function () {
|
|
40917
41014
|
var selection = $getSelection();
|
|
40918
|
-
|
|
40919
|
-
|
|
40920
|
-
if (clipboardData != null && $isRangeSelection(selection)) {
|
|
40921
|
-
$insertDataTransferForPlainText(clipboardData, selection);
|
|
41015
|
+
if ($isRangeSelection(selection)) {
|
|
41016
|
+
processMentionsInPastedText(pastedText, activeChannelMembers, contactsMap, getFromContacts, setMentionedMember, selection);
|
|
40922
41017
|
}
|
|
40923
41018
|
});
|
|
40924
41019
|
}
|
|
40925
|
-
|
|
41020
|
+
return true;
|
|
41021
|
+
}, [editor, contactsMap, setMentionedMember, getFromContacts, activeChannelMembers]);
|
|
40926
41022
|
var onDelete = useCallback(function (event) {
|
|
40927
41023
|
event.preventDefault();
|
|
40928
41024
|
editor.update(function () {
|
|
@@ -41036,14 +41132,18 @@ function useFormatMessage(editor, editorState, setMessageBodyAttributes, setMess
|
|
|
41036
41132
|
}
|
|
41037
41133
|
}, [editor, editorState]);
|
|
41038
41134
|
}
|
|
41039
|
-
function FormatMessagePlugin(
|
|
41040
|
-
var editorState =
|
|
41041
|
-
setMessageBodyAttributes =
|
|
41042
|
-
setMessageText =
|
|
41043
|
-
|
|
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;
|
|
41044
41144
|
var _useLexicalComposerCo = useLexicalComposerContext(),
|
|
41045
41145
|
editor = _useLexicalComposerCo[0];
|
|
41046
|
-
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, messageToEdit);
|
|
41146
|
+
useFormatMessage(editor, editorState, setMessageBodyAttributes, setMessageText, setMentionedMember, messageToEdit, activeChannelMembers, contactsMap, getFromContacts);
|
|
41047
41147
|
return null;
|
|
41048
41148
|
}
|
|
41049
41149
|
|
|
@@ -44195,7 +44295,11 @@ var SendMessageInput = function SendMessageInput(_ref3) {
|
|
|
44195
44295
|
editorState: realEditorState,
|
|
44196
44296
|
setMessageBodyAttributes: setMessageBodyAttributes,
|
|
44197
44297
|
setMessageText: messageToEdit ? setEditMessageText : setMessageText,
|
|
44198
|
-
messageToEdit: messageToEdit
|
|
44298
|
+
messageToEdit: messageToEdit,
|
|
44299
|
+
activeChannelMembers: activeChannelMembers,
|
|
44300
|
+
contactsMap: contactsMap,
|
|
44301
|
+
getFromContacts: getFromContacts,
|
|
44302
|
+
setMentionedMember: handleSetMentionMember
|
|
44199
44303
|
}), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isEmojisOpened && (/*#__PURE__*/React__default.createElement(EmojisPopup$1, {
|
|
44200
44304
|
handleEmojiPopupToggle: handleEmojiPopupToggle,
|
|
44201
44305
|
rightSide: emojisInRightSide,
|