@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
81 lines (75 loc) • 4.39 kB
JavaScript
'use strict';
var React = require('react');
var ui_ContextMenu = require('../chunks/bundle-DTHYr0GL.js');
var ui_Label = require('../chunks/bundle-BHzRqGq7.js');
var ui_UserProfile = require('./UserProfile.js');
var utils = require('../chunks/bundle-CFoLTSSR.js');
var useSendbird = require('../chunks/bundle-Ca9F08jN.js');
require('../chunks/bundle-t_oZmZ9n.js');
require('react-dom');
require('@sendbird/chat');
require('@sendbird/chat/openChannel');
require('./SortByRow.js');
require('../chunks/bundle-DOU45JCK.js');
require('./IconButton.js');
require('../chunks/bundle-D-jQ3JP_.js');
require('@sendbird/chat/groupChannel');
require('../utils/message/getOutgoingMessageState.js');
require('../chunks/bundle-CiBS1Ovq.js');
require('../chunks/bundle-D0vvN7I4.js');
require('../chunks/bundle-CZ9HZzlb.js');
require('../chunks/bundle-CJV1ehy9.js');
require('../chunks/bundle-CpTDlea1.js');
require('../chunks/bundle-XZ8qGH7O.js');
require('../chunks/bundle-mZOg8YmN.js');
require('../chunks/bundle-C8VvVV0P.js');
require('../chunks/bundle-Dsi0B6WF.js');
require('../sendbirdSelectors.js');
require('../chunks/bundle-Dq_3Fsbm.js');
require('../chunks/bundle-D604_AmM.js');
require('./ImageRenderer.js');
require('../chunks/bundle-CcbqrlOG.js');
require('./Icon.js');
require('./Button.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
function MentionLabel(props) {
var _a, _b, _c;
var mentionTemplate = props.mentionTemplate, mentionedUserId = props.mentionedUserId, mentionedUserNickname = props.mentionedUserNickname, isByMe = props.isByMe;
var mentionRef = React.useRef();
var state = useSendbird.useSendbird().state;
var userId = (_a = state === null || state === void 0 ? void 0 : state.config) === null || _a === void 0 ? void 0 : _a.userId;
var sdk = (_c = (_b = state === null || state === void 0 ? void 0 : state.stores) === null || _b === void 0 ? void 0 : _b.sdkStore) === null || _c === void 0 ? void 0 : _c.sdk;
var amIBeingMentioned = userId === mentionedUserId;
var _d = React.useState(), user = _d[0], setUser = _d[1];
var fetchUser = React.useCallback(function (toggleDropdown) {
if (user || !(sdk === null || sdk === void 0 ? void 0 : sdk.createApplicationUserListQuery)) {
toggleDropdown();
return;
}
var query = sdk === null || sdk === void 0 ? void 0 : sdk.createApplicationUserListQuery({
userIdsFilter: [mentionedUserId],
});
query.next().then(function (members) {
if ((members === null || members === void 0 ? void 0 : members.length) > 0) {
setUser(members[0]);
}
toggleDropdown();
});
}, [sdk, mentionedUserId]);
return (React__default.default.createElement(ui_ContextMenu.ContextMenu, { menuTrigger: function (toggleDropdown) { return (React__default.default.createElement("a", { className: utils.classnames('sendbird-word__mention', amIBeingMentioned && 'sendbird-word__mention--me'), onClick: function () { return fetchUser(toggleDropdown); }, ref: mentionRef, "data-userid": mentionedUserId, "data-nickname": mentionedUserNickname, "data-sb-mention": true },
React__default.default.createElement(ui_Label.Label, { type: ui_Label.LabelTypography.CAPTION_1, color: isByMe ? ui_Label.LabelColors.ONCONTENT_1 : ui_Label.LabelColors.ONBACKGROUND_1 }, "".concat(mentionTemplate).concat(mentionedUserNickname)))); }, menuItems: function (closeDropdown) { return (React__default.default.createElement(ui_ContextMenu.MenuItems
/**
* parentRef: For catching location(x, y) of MenuItems
* parentContainRef: For toggling more options(menus & reactions)
*/
, {
/**
* parentRef: For catching location(x, y) of MenuItems
* parentContainRef: For toggling more options(menus & reactions)
*/
parentRef: mentionRef, parentContainRef: mentionRef, closeDropdown: closeDropdown, style: { paddingTop: '0px', paddingBottom: '0px' } },
React__default.default.createElement(ui_UserProfile, { user: user, onSuccess: closeDropdown, currentUserId: userId }))); } }));
}
module.exports = MentionLabel;
//# sourceMappingURL=MentionLabel.js.map