UNPKG

@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
'use strict'; var React = require('react'); var ui_ContextMenu = require('../chunks/bundle-DGV1BX0m.js'); var ui_Label = require('../chunks/bundle-zgmRG2KL.js'); var ui_UserProfile = require('./UserProfile.js'); var utils = require('../chunks/bundle-CkQrhwR6.js'); var useSendbird = require('../chunks/bundle-Bq15P9qk.js'); require('../chunks/bundle-Conb-pOy.js'); require('react-dom'); require('@sendbird/chat'); require('@sendbird/chat/openChannel'); require('./SortByRow.js'); require('../chunks/bundle-t8BQsgL5.js'); require('./IconButton.js'); require('../chunks/bundle-fYxs1lss.js'); require('@sendbird/chat/groupChannel'); require('../utils/message/getOutgoingMessageState.js'); require('../chunks/bundle-DAdgL6r8.js'); require('../chunks/bundle-Dobj18FB.js'); require('../chunks/bundle-CVJwHwWn.js'); require('../chunks/bundle-Cfh78Xnm.js'); require('../chunks/bundle-DPDyqKIJ.js'); require('../chunks/bundle-BbrBawlX.js'); require('../chunks/bundle-Cyl6_qLo.js'); require('../chunks/bundle-B19RHFpR.js'); require('../chunks/bundle-Bnb8seJF.js'); require('../sendbirdSelectors.js'); require('../chunks/bundle-dUH189qO.js'); require('../chunks/bundle-B7KG10z2.js'); require('./ImageRenderer.js'); require('../chunks/bundle-C99t7tzf.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