UNPKG

matrix-react-sdk

Version:
149 lines (124 loc) 15.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _languageHandler = require("../../../languageHandler"); var _FormattingUtils = require("../../../utils/FormattingUtils"); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _ReactionsRowButtonTooltip = _interopRequireDefault(require("./ReactionsRowButtonTooltip")); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _dec, _class, _class2, _temp; let ReactionsRowButton = (_dec = (0, _replaceableComponent.replaceableComponent)("views.messages.ReactionsRowButton"), _dec(_class = (_temp = _class2 = class ReactionsRowButton extends _react.default.PureComponent /*:: <IProps, IState>*/ { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "state", { tooltipRendered: false, tooltipVisible: false }); (0, _defineProperty2.default)(this, "onClick", () => { const { mxEvent, myReactionEvent, content } = this.props; if (myReactionEvent) { this.context.redactEvent(mxEvent.getRoomId(), myReactionEvent.getId()); } else { this.context.sendEvent(mxEvent.getRoomId(), "m.reaction", { "m.relates_to": { "rel_type": "m.annotation", "event_id": mxEvent.getId(), "key": content } }); _dispatcher.default.dispatch({ action: "message_sent" }); } }); (0, _defineProperty2.default)(this, "onMouseOver", () => { this.setState({ // To avoid littering the DOM with a tooltip for every reaction, // only render it on first use. tooltipRendered: true, tooltipVisible: true }); }); (0, _defineProperty2.default)(this, "onMouseLeave", () => { this.setState({ tooltipVisible: false }); }); } render() { const { mxEvent, content, count, reactionEvents, myReactionEvent } = this.props; const classes = (0, _classnames.default)({ mx_ReactionsRowButton: true, mx_ReactionsRowButton_selected: !!myReactionEvent }); let tooltip; if (this.state.tooltipRendered) { tooltip = /*#__PURE__*/_react.default.createElement(_ReactionsRowButtonTooltip.default, { mxEvent: this.props.mxEvent, content: content, reactionEvents: reactionEvents, visible: this.state.tooltipVisible }); } const room = this.context.getRoom(mxEvent.getRoomId()); let label; if (room) { const senders = []; for (const reactionEvent of reactionEvents) { const member = room.getMember(reactionEvent.getSender()); const name = member ? member.name : reactionEvent.getSender(); senders.push(name); } label = (0, _languageHandler._t)("<reactors/><reactedWith> reacted with %(content)s</reactedWith>", { content }, { reactors: () => { return (0, _FormattingUtils.formatCommaSeparatedList)(senders, 6); }, reactedWith: sub => { if (!content) { return null; } return sub; } }); } const isPeeking = room.getMyMembership() !== "join"; return /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: classes, "aria-label": label, onClick: this.onClick, disabled: isPeeking, onMouseOver: this.onMouseOver, onMouseLeave: this.onMouseLeave }, /*#__PURE__*/_react.default.createElement("span", { className: "mx_ReactionsRowButton_content", "aria-hidden": "true" }, content), /*#__PURE__*/_react.default.createElement("span", { className: "mx_ReactionsRowButton_count", "aria-hidden": "true" }, count), tooltip); } }, (0, _defineProperty2.default)(_class2, "contextType", _MatrixClientContext.default), _temp)) || _class); exports.default = ReactionsRowButton; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL1JlYWN0aW9uc1Jvd0J1dHRvbi50c3giXSwibmFtZXMiOlsiUmVhY3Rpb25zUm93QnV0dG9uIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwidG9vbHRpcFJlbmRlcmVkIiwidG9vbHRpcFZpc2libGUiLCJteEV2ZW50IiwibXlSZWFjdGlvbkV2ZW50IiwiY29udGVudCIsInByb3BzIiwiY29udGV4dCIsInJlZGFjdEV2ZW50IiwiZ2V0Um9vbUlkIiwiZ2V0SWQiLCJzZW5kRXZlbnQiLCJkaXMiLCJkaXNwYXRjaCIsImFjdGlvbiIsInNldFN0YXRlIiwicmVuZGVyIiwiY291bnQiLCJyZWFjdGlvbkV2ZW50cyIsImNsYXNzZXMiLCJteF9SZWFjdGlvbnNSb3dCdXR0b24iLCJteF9SZWFjdGlvbnNSb3dCdXR0b25fc2VsZWN0ZWQiLCJ0b29sdGlwIiwic3RhdGUiLCJyb29tIiwiZ2V0Um9vbSIsImxhYmVsIiwic2VuZGVycyIsInJlYWN0aW9uRXZlbnQiLCJtZW1iZXIiLCJnZXRNZW1iZXIiLCJnZXRTZW5kZXIiLCJuYW1lIiwicHVzaCIsInJlYWN0b3JzIiwicmVhY3RlZFdpdGgiLCJzdWIiLCJpc1BlZWtpbmciLCJnZXRNeU1lbWJlcnNoaXAiLCJvbkNsaWNrIiwib25Nb3VzZU92ZXIiLCJvbk1vdXNlTGVhdmUiLCJNYXRyaXhDbGllbnRDb250ZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWdCQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztJQXFCcUJBLGtCLFdBRHBCLGdEQUFxQixtQ0FBckIsQyxtQ0FBRCxNQUNxQkEsa0JBRHJCLFNBQ2dEQyxlQUFNQztBQUR0RDtBQUNvRjtBQUFBO0FBQUE7QUFBQSxpREFHeEU7QUFDSkMsTUFBQUEsZUFBZSxFQUFFLEtBRGI7QUFFSkMsTUFBQUEsY0FBYyxFQUFFO0FBRlosS0FId0U7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QVRMLE9BTEksQ0FBUjtBQWlCSDs7QUFDRCxVQUFNQyxTQUFTLEdBQUdiLElBQUksQ0FBQ2MsZUFBTCxPQUEyQixNQUE3QztBQUNBLHdCQUFPLDZCQUFDLHlCQUFEO0FBQ0gsTUFBQSxTQUFTLEVBQUVuQixPQURSO0FBRUgsb0JBQVlPLEtBRlQ7QUFHSCxNQUFBLE9BQU8sRUFBRSxLQUFLYSxPQUhYO0FBSUgsTUFBQSxRQUFRLEVBQUVGLFNBSlA7QUFLSCxNQUFBLFdBQVcsRUFBRSxLQUFLRyxXQUxmO0FBTUgsTUFBQSxZQUFZLEVBQUUsS0FBS0M7QUFOaEIsb0JBUUg7QUFBTSxNQUFBLFNBQVMsRUFBQywrQkFBaEI7QUFBZ0QscUJBQVk7QUFBNUQsT0FDS3BDLE9BREwsQ0FSRyxlQVdIO0FBQU0sTUFBQSxTQUFTLEVBQUMsNkJBQWhCO0FBQThDLHFCQUFZO0FBQTFELE9BQ0tZLEtBREwsQ0FYRyxFQWNGSyxPQWRFLENBQVA7QUFnQkg7O0FBeEcrRSxDLHdEQUMzRG9CLDRCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE5LCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCB7IE1hdHJpeEV2ZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21vZGVscy9ldmVudFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gJy4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlcic7XG5pbXBvcnQgeyBmb3JtYXRDb21tYVNlcGFyYXRlZExpc3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9Gb3JtYXR0aW5nVXRpbHMnO1xuaW1wb3J0IGRpcyBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyByZXBsYWNlYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXBsYWNlYWJsZUNvbXBvbmVudFwiO1xuaW1wb3J0IFJlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXAgZnJvbSBcIi4vUmVhY3Rpb25zUm93QnV0dG9uVG9vbHRpcFwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIC8vIFRoZSBldmVudCB3ZSdyZSBkaXNwbGF5aW5nIHJlYWN0aW9ucyBmb3JcbiAgICBteEV2ZW50OiBNYXRyaXhFdmVudDtcbiAgICAvLyBUaGUgcmVhY3Rpb24gY29udGVudCAvIGtleSAvIGVtb2ppXG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIC8vIFRoZSBjb3VudCBvZiB2b3RlcyBmb3IgdGhpcyBrZXlcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIC8vIEEgU2V0IG9mIE1hdHJpeCByZWFjdGlvbiBldmVudHMgZm9yIHRoaXMga2V5XG4gICAgcmVhY3Rpb25FdmVudHM6IFNldDxNYXRyaXhFdmVudD47XG4gICAgLy8gQSBwb3NzaWJsZSBNYXRyaXggZXZlbnQgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdm90ZWQgZm9yIHRoaXMgdHlwZVxuICAgIG15UmVhY3Rpb25FdmVudD86IE1hdHJpeEV2ZW50O1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICB0b29sdGlwUmVuZGVyZWQ6IGJvb2xlYW47XG4gICAgdG9vbHRpcFZpc2libGU6IGJvb2xlYW47XG59XG5cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLm1lc3NhZ2VzLlJlYWN0aW9uc1Jvd0J1dHRvblwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhY3Rpb25zUm93QnV0dG9uIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHN0YXRpYyBjb250ZXh0VHlwZSA9IE1hdHJpeENsaWVudENvbnRleHQ7XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgICAgdG9vbHRpcFJlbmRlcmVkOiBmYWxzZSxcbiAgICAgICAgdG9vbHRpcFZpc2libGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBvbkNsaWNrID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IG14RXZlbnQsIG15UmVhY3Rpb25FdmVudCwgY29udGVudCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKG15UmVhY3Rpb25FdmVudCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LnJlZGFjdEV2ZW50KFxuICAgICAgICAgICAgICAgIG14RXZlbnQuZ2V0Um9vbUlkKCksXG4gICAgICAgICAgICAgICAgbXlSZWFjdGlvbkV2ZW50LmdldElkKCksXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LnNlbmRFdmVudChteEV2ZW50LmdldFJvb21JZCgpLCBcIm0ucmVhY3Rpb25cIiwge1xuICAgICAgICAgICAgICAgIFwibS5yZWxhdGVzX3RvXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJyZWxfdHlwZVwiOiBcIm0uYW5ub3RhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50X2lkXCI6IG14RXZlbnQuZ2V0SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgXCJrZXlcIjogY29udGVudCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXMuZGlzcGF0Y2goe2FjdGlvbjogXCJtZXNzYWdlX3NlbnRcIn0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG9uTW91c2VPdmVyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpdHRlcmluZyB0aGUgRE9NIHdpdGggYSB0b29sdGlwIGZvciBldmVyeSByZWFjdGlvbixcbiAgICAgICAgICAgIC8vIG9ubHkgcmVuZGVyIGl0IG9uIGZpcnN0IHVzZS5cbiAgICAgICAgICAgIHRvb2x0aXBSZW5kZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHRvb2x0aXBWaXNpYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdG9vbHRpcFZpc2libGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbXhFdmVudCwgY29udGVudCwgY291bnQsIHJlYWN0aW9uRXZlbnRzLCBteVJlYWN0aW9uRXZlbnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoe1xuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uX3NlbGVjdGVkOiAhIW15UmVhY3Rpb25FdmVudCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHRvb2x0aXA7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnRvb2x0aXBSZW5kZXJlZCkge1xuICAgICAgICAgICAgdG9vbHRpcCA9IDxSZWFjdGlvbnNSb3dCdXR0b25Ub29sdGlwXG4gICAgICAgICAgICAgICAgbXhFdmVudD17dGhpcy5wcm9wcy5teEV2ZW50fVxuICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgcmVhY3Rpb25FdmVudHM9e3JlYWN0aW9uRXZlbnRzfVxuICAgICAgICAgICAgICAgIHZpc2libGU9e3RoaXMuc3RhdGUudG9vbHRpcFZpc2libGV9XG4gICAgICAgICAgICAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb20gPSB0aGlzLmNvbnRleHQuZ2V0Um9vbShteEV2ZW50LmdldFJvb21JZCgpKTtcbiAgICAgICAgbGV0IGxhYmVsO1xuICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgY29uc3Qgc2VuZGVycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWFjdGlvbkV2ZW50IG9mIHJlYWN0aW9uRXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVtYmVyID0gcm9vbS5nZXRNZW1iZXIocmVhY3Rpb25FdmVudC5nZXRTZW5kZXIoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IG1lbWJlciA/IG1lbWJlci5uYW1lIDogcmVhY3Rpb25FdmVudC5nZXRTZW5kZXIoKTtcbiAgICAgICAgICAgICAgICBzZW5kZXJzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYWJlbCA9IF90KFxuICAgICAgICAgICAgICAgIFwiPHJlYWN0b3JzLz48cmVhY3RlZFdpdGg+IHJlYWN0ZWQgd2l0aCAlKGNvbnRlbnQpczwvcmVhY3RlZFdpdGg+XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZWFjdG9yczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdENvbW1hU2VwYXJhdGVkTGlzdChzZW5kZXJzLCA2KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3RlZFdpdGg6IChzdWIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1BlZWtpbmcgPSByb29tLmdldE15TWVtYmVyc2hpcCgpICE9PSBcImpvaW5cIjtcbiAgICAgICAgcmV0dXJuIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25DbGlja31cbiAgICAgICAgICAgIGRpc2FibGVkPXtpc1BlZWtpbmd9XG4gICAgICAgICAgICBvbk1vdXNlT3Zlcj17dGhpcy5vbk1vdXNlT3Zlcn1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17dGhpcy5vbk1vdXNlTGVhdmV9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm14X1JlYWN0aW9uc1Jvd0J1dHRvbl9jb250ZW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJteF9SZWFjdGlvbnNSb3dCdXR0b25fY291bnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICB7Y291bnR9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7dG9vbHRpcH1cbiAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPjtcbiAgICB9XG59XG4iXX0=