UNPKG

matrix-react-sdk

Version:
91 lines (87 loc) 15.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _BaseCard = _interopRequireDefault(require("./BaseCard")); var _WidgetUtils = _interopRequireWildcard(require("../../../utils/WidgetUtils")); var _AppTile = _interopRequireDefault(require("../elements/AppTile")); var _languageHandler = require("../../../languageHandler"); var _ContextMenu = require("../../structures/ContextMenu"); var _WidgetContextMenu = require("../context_menus/WidgetContextMenu"); var _WidgetLayoutStore = require("../../../stores/widgets/WidgetLayoutStore"); var _UIStore = _interopRequireDefault(require("../../../stores/UIStore")); var _RightPanelStore = _interopRequireDefault(require("../../../stores/right-panel/RightPanelStore")); var _Heading = _interopRequireDefault(require("../typography/Heading")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2020 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ const WidgetCard = ({ room, widgetId, onClose }) => { const cli = (0, _react.useContext)(_MatrixClientContext.default); const apps = (0, _WidgetUtils.useWidgets)(room); const app = apps.find(a => a.id === widgetId); const isRight = app && _WidgetLayoutStore.WidgetLayoutStore.instance.isInContainer(room, app, _WidgetLayoutStore.Container.Right); const [menuDisplayed, handle, openMenu, closeMenu] = (0, _ContextMenu.useContextMenu)(); (0, _react.useEffect)(() => { if (!app || !isRight) { // stop showing this card _RightPanelStore.default.instance.popCard(); } }, [app, isRight]); // Don't render anything as we are about to transition if (!app || !isRight) return null; let contextMenu; if (menuDisplayed) { const rect = handle.current?.getBoundingClientRect(); const rightMargin = rect ? rect.right : 0; const bottomMargin = rect ? rect.bottom : 0; contextMenu = /*#__PURE__*/_react.default.createElement(_WidgetContextMenu.WidgetContextMenu, { chevronFace: _ContextMenu.ChevronFace.None, right: _UIStore.default.instance.windowWidth - rightMargin - 12, top: bottomMargin + 12, onFinished: closeMenu, app: app }); } const header = /*#__PURE__*/_react.default.createElement("div", { className: "mx_BaseCard_header_title" }, /*#__PURE__*/_react.default.createElement(_Heading.default, { size: "4", className: "mx_BaseCard_header_title_heading" }, _WidgetUtils.default.getWidgetName(app)), /*#__PURE__*/_react.default.createElement(_ContextMenu.ContextMenuButton, { className: "mx_BaseCard_header_title_button--option", ref: handle, onClick: openMenu, isExpanded: menuDisplayed, label: (0, _languageHandler._t)("common|options") }), contextMenu); return /*#__PURE__*/_react.default.createElement(_BaseCard.default, { header: header, className: "mx_WidgetCard", onClose: onClose, withoutScrollContainer: true }, /*#__PURE__*/_react.default.createElement(_AppTile.default, { app: app, fullWidth: true, showMenubar: false, room: room, userId: cli.getSafeUserId(), creatorUserId: app.creatorUserId, widgetPageTitle: _WidgetUtils.default.getWidgetDataTitle(app), waitForIframeLoad: app.waitForIframeLoad })); }; var _default = exports.default = WidgetCard; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQmFzZUNhcmQiLCJfV2lkZ2V0VXRpbHMiLCJfQXBwVGlsZSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQ29udGV4dE1lbnUiLCJfV2lkZ2V0Q29udGV4dE1lbnUiLCJfV2lkZ2V0TGF5b3V0U3RvcmUiLCJfVUlTdG9yZSIsIl9SaWdodFBhbmVsU3RvcmUiLCJfSGVhZGluZyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIldpZGdldENhcmQiLCJyb29tIiwid2lkZ2V0SWQiLCJvbkNsb3NlIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJhcHBzIiwidXNlV2lkZ2V0cyIsImFwcCIsImZpbmQiLCJpZCIsImlzUmlnaHQiLCJXaWRnZXRMYXlvdXRTdG9yZSIsImluc3RhbmNlIiwiaXNJbkNvbnRhaW5lciIsIkNvbnRhaW5lciIsIlJpZ2h0IiwibWVudURpc3BsYXllZCIsImhhbmRsZSIsIm9wZW5NZW51IiwiY2xvc2VNZW51IiwidXNlQ29udGV4dE1lbnUiLCJ1c2VFZmZlY3QiLCJSaWdodFBhbmVsU3RvcmUiLCJwb3BDYXJkIiwiY29udGV4dE1lbnUiLCJyZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0TWFyZ2luIiwicmlnaHQiLCJib3R0b21NYXJnaW4iLCJib3R0b20iLCJjcmVhdGVFbGVtZW50IiwiV2lkZ2V0Q29udGV4dE1lbnUiLCJjaGV2cm9uRmFjZSIsIkNoZXZyb25GYWNlIiwiTm9uZSIsIlVJU3RvcmUiLCJ3aW5kb3dXaWR0aCIsInRvcCIsIm9uRmluaXNoZWQiLCJoZWFkZXIiLCJjbGFzc05hbWUiLCJzaXplIiwiV2lkZ2V0VXRpbHMiLCJnZXRXaWRnZXROYW1lIiwiQ29udGV4dE1lbnVCdXR0b24iLCJyZWYiLCJvbkNsaWNrIiwiaXNFeHBhbmRlZCIsImxhYmVsIiwiX3QiLCJ3aXRob3V0U2Nyb2xsQ29udGFpbmVyIiwiZnVsbFdpZHRoIiwic2hvd01lbnViYXIiLCJ1c2VySWQiLCJnZXRTYWZlVXNlcklkIiwiY3JlYXRvclVzZXJJZCIsIndpZGdldFBhZ2VUaXRsZSIsImdldFdpZGdldERhdGFUaXRsZSIsIndhaXRGb3JJZnJhbWVMb2FkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvcmlnaHRfcGFuZWwvV2lkZ2V0Q2FyZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm9vbSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IE1hdHJpeENsaWVudENvbnRleHQgZnJvbSBcIi4uLy4uLy4uL2NvbnRleHRzL01hdHJpeENsaWVudENvbnRleHRcIjtcbmltcG9ydCBCYXNlQ2FyZCBmcm9tIFwiLi9CYXNlQ2FyZFwiO1xuaW1wb3J0IFdpZGdldFV0aWxzLCB7IHVzZVdpZGdldHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvV2lkZ2V0VXRpbHNcIjtcbmltcG9ydCBBcHBUaWxlIGZyb20gXCIuLi9lbGVtZW50cy9BcHBUaWxlXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IENoZXZyb25GYWNlLCBDb250ZXh0TWVudUJ1dHRvbiwgdXNlQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vLi4vc3RydWN0dXJlcy9Db250ZXh0TWVudVwiO1xuaW1wb3J0IHsgV2lkZ2V0Q29udGV4dE1lbnUgfSBmcm9tIFwiLi4vY29udGV4dF9tZW51cy9XaWRnZXRDb250ZXh0TWVudVwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBXaWRnZXRMYXlvdXRTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvd2lkZ2V0cy9XaWRnZXRMYXlvdXRTdG9yZVwiO1xuaW1wb3J0IFVJU3RvcmUgZnJvbSBcIi4uLy4uLy4uL3N0b3Jlcy9VSVN0b3JlXCI7XG5pbXBvcnQgUmlnaHRQYW5lbFN0b3JlIGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvcmlnaHQtcGFuZWwvUmlnaHRQYW5lbFN0b3JlXCI7XG5pbXBvcnQgSGVhZGluZyBmcm9tIFwiLi4vdHlwb2dyYXBoeS9IZWFkaW5nXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIHJvb206IFJvb207XG4gICAgd2lkZ2V0SWQ6IHN0cmluZztcbiAgICBvbkNsb3NlKCk6IHZvaWQ7XG59XG5cbmNvbnN0IFdpZGdldENhcmQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyByb29tLCB3aWRnZXRJZCwgb25DbG9zZSB9KSA9PiB7XG4gICAgY29uc3QgY2xpID0gdXNlQ29udGV4dChNYXRyaXhDbGllbnRDb250ZXh0KTtcblxuICAgIGNvbnN0IGFwcHMgPSB1c2VXaWRnZXRzKHJvb20pO1xuICAgIGNvbnN0IGFwcCA9IGFwcHMuZmluZCgoYSkgPT4gYS5pZCA9PT0gd2lkZ2V0SWQpO1xuICAgIGNvbnN0IGlzUmlnaHQgPSBhcHAgJiYgV2lkZ2V0TGF5b3V0U3RvcmUuaW5zdGFuY2UuaXNJbkNvbnRhaW5lcihyb29tLCBhcHAsIENvbnRhaW5lci5SaWdodCk7XG5cbiAgICBjb25zdCBbbWVudURpc3BsYXllZCwgaGFuZGxlLCBvcGVuTWVudSwgY2xvc2VNZW51XSA9IHVzZUNvbnRleHRNZW51KCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWFwcCB8fCAhaXNSaWdodCkge1xuICAgICAgICAgICAgLy8gc3RvcCBzaG93aW5nIHRoaXMgY2FyZFxuICAgICAgICAgICAgUmlnaHRQYW5lbFN0b3JlLmluc3RhbmNlLnBvcENhcmQoKTtcbiAgICAgICAgfVxuICAgIH0sIFthcHAsIGlzUmlnaHRdKTtcblxuICAgIC8vIERvbid0IHJlbmRlciBhbnl0aGluZyBhcyB3ZSBhcmUgYWJvdXQgdG8gdHJhbnNpdGlvblxuICAgIGlmICghYXBwIHx8ICFpc1JpZ2h0KSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBjb250ZXh0TWVudTogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKG1lbnVEaXNwbGF5ZWQpIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IGhhbmRsZS5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmlnaHRNYXJnaW4gPSByZWN0ID8gcmVjdC5yaWdodCA6IDA7XG4gICAgICAgIGNvbnN0IGJvdHRvbU1hcmdpbiA9IHJlY3QgPyByZWN0LmJvdHRvbSA6IDA7XG4gICAgICAgIGNvbnRleHRNZW51ID0gKFxuICAgICAgICAgICAgPFdpZGdldENvbnRleHRNZW51XG4gICAgICAgICAgICAgICAgY2hldnJvbkZhY2U9e0NoZXZyb25GYWNlLk5vbmV9XG4gICAgICAgICAgICAgICAgcmlnaHQ9e1VJU3RvcmUuaW5zdGFuY2Uud2luZG93V2lkdGggLSByaWdodE1hcmdpbiAtIDEyfVxuICAgICAgICAgICAgICAgIHRvcD17Ym90dG9tTWFyZ2luICsgMTJ9XG4gICAgICAgICAgICAgICAgb25GaW5pc2hlZD17Y2xvc2VNZW51fVxuICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXIgPSAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQmFzZUNhcmRfaGVhZGVyX3RpdGxlXCI+XG4gICAgICAgICAgICA8SGVhZGluZyBzaXplPVwiNFwiIGNsYXNzTmFtZT1cIm14X0Jhc2VDYXJkX2hlYWRlcl90aXRsZV9oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAge1dpZGdldFV0aWxzLmdldFdpZGdldE5hbWUoYXBwKX1cbiAgICAgICAgICAgIDwvSGVhZGluZz5cbiAgICAgICAgICAgIDxDb250ZXh0TWVudUJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0Jhc2VDYXJkX2hlYWRlcl90aXRsZV9idXR0b24tLW9wdGlvblwiXG4gICAgICAgICAgICAgICAgcmVmPXtoYW5kbGV9XG4gICAgICAgICAgICAgICAgb25DbGljaz17b3Blbk1lbnV9XG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZD17bWVudURpc3BsYXllZH1cbiAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJjb21tb258b3B0aW9uc1wiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7Y29udGV4dE1lbnV9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZUNhcmQgaGVhZGVyPXtoZWFkZXJ9IGNsYXNzTmFtZT1cIm14X1dpZGdldENhcmRcIiBvbkNsb3NlPXtvbkNsb3NlfSB3aXRob3V0U2Nyb2xsQ29udGFpbmVyPlxuICAgICAgICAgICAgPEFwcFRpbGVcbiAgICAgICAgICAgICAgICBhcHA9e2FwcH1cbiAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICBzaG93TWVudWJhcj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgcm9vbT17cm9vbX1cbiAgICAgICAgICAgICAgICB1c2VySWQ9e2NsaS5nZXRTYWZlVXNlcklkKCl9XG4gICAgICAgICAgICAgICAgY3JlYXRvclVzZXJJZD17YXBwLmNyZWF0b3JVc2VySWR9XG4gICAgICAgICAgICAgICAgd2lkZ2V0UGFnZVRpdGxlPXtXaWRnZXRVdGlscy5nZXRXaWRnZXREYXRhVGl0bGUoYXBwKX1cbiAgICAgICAgICAgICAgICB3YWl0Rm9ySWZyYW1lTG9hZD17YXBwLndhaXRGb3JJZnJhbWVMb2FkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9CYXNlQ2FyZD5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0Q2FyZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFMLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sWUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsa0JBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxRQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBVCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVksUUFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQTRDLFNBQUFhLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFB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