matrix-react-sdk
Version:
SDK for matrix.org using React
135 lines (103 loc) • 17.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.ROOM_ADVANCED_TAB = exports.ROOM_BRIDGES_TAB = exports.ROOM_NOTIFICATIONS_TAB = exports.ROOM_ROLES_TAB = exports.ROOM_SECURITY_TAB = exports.ROOM_GENERAL_TAB = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _TabbedView = _interopRequireWildcard(require("../../structures/TabbedView"));
var _languageHandler = require("../../../languageHandler");
var _AdvancedRoomSettingsTab = _interopRequireDefault(require("../settings/tabs/room/AdvancedRoomSettingsTab"));
var _RolesRoomSettingsTab = _interopRequireDefault(require("../settings/tabs/room/RolesRoomSettingsTab"));
var _GeneralRoomSettingsTab = _interopRequireDefault(require("../settings/tabs/room/GeneralRoomSettingsTab"));
var _SecurityRoomSettingsTab = _interopRequireDefault(require("../settings/tabs/room/SecurityRoomSettingsTab"));
var _NotificationSettingsTab = _interopRequireDefault(require("../settings/tabs/room/NotificationSettingsTab"));
var _BridgeSettingsTab = _interopRequireDefault(require("../settings/tabs/room/BridgeSettingsTab"));
var sdk = _interopRequireWildcard(require("../../../index"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher"));
var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore"));
var _UIFeature = require("../../../settings/UIFeature");
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _dec, _class, _class2, _temp;
const ROOM_GENERAL_TAB = "ROOM_GENERAL_TAB";
exports.ROOM_GENERAL_TAB = ROOM_GENERAL_TAB;
const ROOM_SECURITY_TAB = "ROOM_SECURITY_TAB";
exports.ROOM_SECURITY_TAB = ROOM_SECURITY_TAB;
const ROOM_ROLES_TAB = "ROOM_ROLES_TAB";
exports.ROOM_ROLES_TAB = ROOM_ROLES_TAB;
const ROOM_NOTIFICATIONS_TAB = "ROOM_NOTIFICATIONS_TAB";
exports.ROOM_NOTIFICATIONS_TAB = ROOM_NOTIFICATIONS_TAB;
const ROOM_BRIDGES_TAB = "ROOM_BRIDGES_TAB";
exports.ROOM_BRIDGES_TAB = ROOM_BRIDGES_TAB;
const ROOM_ADVANCED_TAB = "ROOM_ADVANCED_TAB";
exports.ROOM_ADVANCED_TAB = ROOM_ADVANCED_TAB;
let RoomSettingsDialog = (_dec = (0, _replaceableComponent.replaceableComponent)("views.dialogs.RoomSettingsDialog"), _dec(_class = (_temp = _class2 = class RoomSettingsDialog extends _react.default.Component {
constructor(...args) {
super(...args);
(0, _defineProperty2.default)(this, "_onAction", payload => {
// When view changes below us, close the room settings
// whilst the modal is open this can only be triggered when someone hits Leave Room
if (payload.action === 'view_home_page') {
this.props.onFinished();
}
});
}
componentDidMount() {
this._dispatcherRef = _dispatcher.default.register(this._onAction);
}
componentWillUnmount() {
if (this._dispatcherRef) _dispatcher.default.unregister(this._dispatcherRef);
}
_getTabs() {
const tabs = [];
tabs.push(new _TabbedView.Tab(ROOM_GENERAL_TAB, (0, _languageHandler._td)("General"), "mx_RoomSettingsDialog_settingsIcon", /*#__PURE__*/_react.default.createElement(_GeneralRoomSettingsTab.default, {
roomId: this.props.roomId
})));
tabs.push(new _TabbedView.Tab(ROOM_SECURITY_TAB, (0, _languageHandler._td)("Security & Privacy"), "mx_RoomSettingsDialog_securityIcon", /*#__PURE__*/_react.default.createElement(_SecurityRoomSettingsTab.default, {
roomId: this.props.roomId
})));
tabs.push(new _TabbedView.Tab(ROOM_ROLES_TAB, (0, _languageHandler._td)("Roles & Permissions"), "mx_RoomSettingsDialog_rolesIcon", /*#__PURE__*/_react.default.createElement(_RolesRoomSettingsTab.default, {
roomId: this.props.roomId
})));
tabs.push(new _TabbedView.Tab(ROOM_NOTIFICATIONS_TAB, (0, _languageHandler._td)("Notifications"), "mx_RoomSettingsDialog_notificationsIcon", /*#__PURE__*/_react.default.createElement(_NotificationSettingsTab.default, {
roomId: this.props.roomId
})));
if (_SettingsStore.default.getValue("feature_bridge_state")) {
tabs.push(new _TabbedView.Tab(ROOM_BRIDGES_TAB, (0, _languageHandler._td)("Bridges"), "mx_RoomSettingsDialog_bridgesIcon", /*#__PURE__*/_react.default.createElement(_BridgeSettingsTab.default, {
roomId: this.props.roomId
})));
}
if (_SettingsStore.default.getValue(_UIFeature.UIFeature.AdvancedSettings)) {
tabs.push(new _TabbedView.Tab(ROOM_ADVANCED_TAB, (0, _languageHandler._td)("Advanced"), "mx_RoomSettingsDialog_warningIcon", /*#__PURE__*/_react.default.createElement(_AdvancedRoomSettingsTab.default, {
roomId: this.props.roomId,
closeSettingsFn: this.props.onFinished
})));
}
return tabs;
}
render() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const roomName = _MatrixClientPeg.MatrixClientPeg.get().getRoom(this.props.roomId).name;
return /*#__PURE__*/_react.default.createElement(BaseDialog, {
className: "mx_RoomSettingsDialog",
hasCancel: true,
onFinished: this.props.onFinished,
title: (0, _languageHandler._t)("Room Settings - %(roomName)s", {
roomName
})
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_SettingsDialog_content"
}, /*#__PURE__*/_react.default.createElement(_TabbedView.default, {
tabs: this._getTabs()
})));
}
}, (0, _defineProperty2.default)(_class2, "propTypes", {
roomId: _propTypes.default.string.isRequired,
onFinished: _propTypes.default.func.isRequired
}), _temp)) || _class);
exports.default = RoomSettingsDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvUm9vbVNldHRpbmdzRGlhbG9nLmpzIl0sIm5hbWVzIjpbIlJPT01fR0VORVJBTF9UQUIiLCJST09NX1NFQ1VSSVRZX1RBQiIsIlJPT01fUk9MRVNfVEFCIiwiUk9PTV9OT1RJRklDQVRJT05TX1RBQiIsIlJPT01fQlJJREdFU19UQUIiLCJST09NX0FEVkFOQ0VEX1RBQiIsIlJvb21TZXR0aW5nc0RpYWxvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicGF5bG9hZCIsImFjdGlvbiIsInByb3BzIiwib25GaW5pc2hlZCIsImNvbXBvbmVudERpZE1vdW50IiwiX2Rpc3BhdGNoZXJSZWYiLCJkaXMiLCJyZWdpc3RlciIsIl9vbkFjdGlvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5yZWdpc3RlciIsIl9nZXRUYWJzIiwidGFicyIsInB1c2giLCJUYWIiLCJyb29tSWQiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJVSUZlYXR1cmUiLCJBZHZhbmNlZFNldHRpbmdzIiwicmVuZGVyIiwiQmFzZURpYWxvZyIsInNkayIsImdldENvbXBvbmVudCIsInJvb21OYW1lIiwiTWF0cml4Q2xpZW50UGVnIiwiZ2V0IiwiZ2V0Um9vbSIsIm5hbWUiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWlCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVPLE1BQU1BLGdCQUFnQixHQUFHLGtCQUF6Qjs7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxtQkFBMUI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGdCQUF2Qjs7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyx3QkFBL0I7O0FBQ0EsTUFBTUMsZ0JBQWdC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QUFsRTs7QUFDQSx3QkFDSSw2QkFBQyxVQUFEO0FBQ0ksTUFBQSxTQUFTLEVBQUMsdUJBRGQ7QUFFSSxNQUFBLFNBQVMsRUFBRSxJQUZmO0FBR0ksTUFBQSxVQUFVLEVBQUUsS0FBSzFCLEtBQUwsQ0FBV0MsVUFIM0I7QUFJSSxNQUFBLEtBQUssRUFBRSx5QkFBRyw4QkFBSCxFQUFtQztBQUFDcUIsUUFBQUE7QUFBRCxPQUFuQztBQUpYLG9CQU1JO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZixvQkFDSSw2QkFBQyxtQkFBRDtBQUFZLE1BQUEsSUFBSSxFQUFFLEtBQUtiLFFBQUw7QUFBbEIsTUFESixDQU5KLENBREo7QUFZSDs7QUF2RjJELEMsc0RBQ3pDO0FBQ2ZJLEVBQUFBLE1BQU0sRUFBRWMsbUJBQVVDLE1BQVYsQ0FBaUJDLFVBRFY7QUFFZjVCLEVBQUFBLFVBQVUsRUFBRTBCLG1CQUFVRyxJQUFWLENBQWVEO0FBRlosQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTkgTWljaGFlbCBUZWxhdHluc2tpIDw3dDNjaGd1eUBnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgVGFiYmVkVmlldywge1RhYn0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZXMvVGFiYmVkVmlld1wiO1xuaW1wb3J0IHtfdCwgX3RkfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQWR2YW5jZWRSb29tU2V0dGluZ3NUYWIgZnJvbSBcIi4uL3NldHRpbmdzL3RhYnMvcm9vbS9BZHZhbmNlZFJvb21TZXR0aW5nc1RhYlwiO1xuaW1wb3J0IFJvbGVzUm9vbVNldHRpbmdzVGFiIGZyb20gXCIuLi9zZXR0aW5ncy90YWJzL3Jvb20vUm9sZXNSb29tU2V0dGluZ3NUYWJcIjtcbmltcG9ydCBHZW5lcmFsUm9vbVNldHRpbmdzVGFiIGZyb20gXCIuLi9zZXR0aW5ncy90YWJzL3Jvb20vR2VuZXJhbFJvb21TZXR0aW5nc1RhYlwiO1xuaW1wb3J0IFNlY3VyaXR5Um9vbVNldHRpbmdzVGFiIGZyb20gXCIuLi9zZXR0aW5ncy90YWJzL3Jvb20vU2VjdXJpdHlSb29tU2V0dGluZ3NUYWJcIjtcbmltcG9ydCBOb3RpZmljYXRpb25TZXR0aW5nc1RhYiBmcm9tIFwiLi4vc2V0dGluZ3MvdGFicy9yb29tL05vdGlmaWNhdGlvblNldHRpbmdzVGFiXCI7XG5pbXBvcnQgQnJpZGdlU2V0dGluZ3NUYWIgZnJvbSBcIi4uL3NldHRpbmdzL3RhYnMvcm9vbS9CcmlkZ2VTZXR0aW5nc1RhYlwiO1xuaW1wb3J0ICogYXMgc2RrIGZyb20gXCIuLi8uLi8uLi9pbmRleFwiO1xuaW1wb3J0IHtNYXRyaXhDbGllbnRQZWd9IGZyb20gXCIuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCBkaXMgZnJvbSBcIi4uLy4uLy4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSBcIi4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdzU3RvcmVcIjtcbmltcG9ydCB7VUlGZWF0dXJlfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvVUlGZWF0dXJlXCI7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcblxuZXhwb3J0IGNvbnN0IFJPT01fR0VORVJBTF9UQUIgPSBcIlJPT01fR0VORVJBTF9UQUJcIjtcbmV4cG9ydCBjb25zdCBST09NX1NFQ1VSSVRZX1RBQiA9IFwiUk9PTV9TRUNVUklUWV9UQUJcIjtcbmV4cG9ydCBjb25zdCBST09NX1JPTEVTX1RBQiA9IFwiUk9PTV9ST0xFU19UQUJcIjtcbmV4cG9ydCBjb25zdCBST09NX05PVElGSUNBVElPTlNfVEFCID0gXCJST09NX05PVElGSUNBVElPTlNfVEFCXCI7XG5leHBvcnQgY29uc3QgUk9PTV9CUklER0VTX1RBQiA9IFwiUk9PTV9CUklER0VTX1RBQlwiO1xuZXhwb3J0IGNvbnN0IFJPT01fQURWQU5DRURfVEFCID0gXCJST09NX0FEVkFOQ0VEX1RBQlwiO1xuXG5AcmVwbGFjZWFibGVDb21wb25lbnQoXCJ2aWV3cy5kaWFsb2dzLlJvb21TZXR0aW5nc0RpYWxvZ1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vbVNldHRpbmdzRGlhbG9nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICByb29tSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgb25GaW5pc2hlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXJSZWYgPSBkaXMucmVnaXN0ZXIodGhpcy5fb25BY3Rpb24pO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5fZGlzcGF0Y2hlclJlZikgZGlzLnVucmVnaXN0ZXIodGhpcy5fZGlzcGF0Y2hlclJlZik7XG4gICAgfVxuXG4gICAgX29uQWN0aW9uID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgLy8gV2hlbiB2aWV3IGNoYW5nZXMgYmVsb3cgdXMsIGNsb3NlIHRoZSByb29tIHNldHRpbmdzXG4gICAgICAgIC8vIHdoaWxzdCB0aGUgbW9kYWwgaXMgb3BlbiB0aGlzIGNhbiBvbmx5IGJlIHRyaWdnZXJlZCB3aGVuIHNvbWVvbmUgaGl0cyBMZWF2ZSBSb29tXG4gICAgICAgIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gJ3ZpZXdfaG9tZV9wYWdlJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkZpbmlzaGVkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgX2dldFRhYnMoKSB7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBbXTtcblxuICAgICAgICB0YWJzLnB1c2gobmV3IFRhYihcbiAgICAgICAgICAgIFJPT01fR0VORVJBTF9UQUIsXG4gICAgICAgICAgICBfdGQoXCJHZW5lcmFsXCIpLFxuICAgICAgICAgICAgXCJteF9Sb29tU2V0dGluZ3NEaWFsb2dfc2V0dGluZ3NJY29uXCIsXG4gICAgICAgICAgICA8R2VuZXJhbFJvb21TZXR0aW5nc1RhYiByb29tSWQ9e3RoaXMucHJvcHMucm9vbUlkfSAvPixcbiAgICAgICAgKSk7XG4gICAgICAgIHRhYnMucHVzaChuZXcgVGFiKFxuICAgICAgICAgICAgUk9PTV9TRUNVUklUWV9UQUIsXG4gICAgICAgICAgICBfdGQoXCJTZWN1cml0eSAmIFByaXZhY3lcIiksXG4gICAgICAgICAgICBcIm14X1Jvb21TZXR0aW5nc0RpYWxvZ19zZWN1cml0eUljb25cIixcbiAgICAgICAgICAgIDxTZWN1cml0eVJvb21TZXR0aW5nc1RhYiByb29tSWQ9e3RoaXMucHJvcHMucm9vbUlkfSAvPixcbiAgICAgICAgKSk7XG4gICAgICAgIHRhYnMucHVzaChuZXcgVGFiKFxuICAgICAgICAgICAgUk9PTV9ST0xFU19UQUIsXG4gICAgICAgICAgICBfdGQoXCJSb2xlcyAmIFBlcm1pc3Npb25zXCIpLFxuICAgICAgICAgICAgXCJteF9Sb29tU2V0dGluZ3NEaWFsb2dfcm9sZXNJY29uXCIsXG4gICAgICAgICAgICA8Um9sZXNSb29tU2V0dGluZ3NUYWIgcm9vbUlkPXt0aGlzLnByb3BzLnJvb21JZH0gLz4sXG4gICAgICAgICkpO1xuICAgICAgICB0YWJzLnB1c2gobmV3IFRhYihcbiAgICAgICAgICAgIFJPT01fTk9USUZJQ0FUSU9OU19UQUIsXG4gICAgICAgICAgICBfdGQoXCJOb3RpZmljYXRpb25zXCIpLFxuICAgICAgICAgICAgXCJteF9Sb29tU2V0dGluZ3NEaWFsb2dfbm90aWZpY2F0aW9uc0ljb25cIixcbiAgICAgICAgICAgIDxOb3RpZmljYXRpb25TZXR0aW5nc1RhYiByb29tSWQ9e3RoaXMucHJvcHMucm9vbUlkfSAvPixcbiAgICAgICAgKSk7XG5cbiAgICAgICAgaWYgKFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJmZWF0dXJlX2JyaWRnZV9zdGF0ZVwiKSkge1xuICAgICAgICAgICAgdGFicy5wdXNoKG5ldyBUYWIoXG4gICAgICAgICAgICAgICAgUk9PTV9CUklER0VTX1RBQixcbiAgICAgICAgICAgICAgICBfdGQoXCJCcmlkZ2VzXCIpLFxuICAgICAgICAgICAgICAgIFwibXhfUm9vbVNldHRpbmdzRGlhbG9nX2JyaWRnZXNJY29uXCIsXG4gICAgICAgICAgICAgICAgPEJyaWRnZVNldHRpbmdzVGFiIHJvb21JZD17dGhpcy5wcm9wcy5yb29tSWR9IC8+LFxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShVSUZlYXR1cmUuQWR2YW5jZWRTZXR0aW5ncykpIHtcbiAgICAgICAgICAgIHRhYnMucHVzaChuZXcgVGFiKFxuICAgICAgICAgICAgICAgIFJPT01fQURWQU5DRURfVEFCLFxuICAgICAgICAgICAgICAgIF90ZChcIkFkdmFuY2VkXCIpLFxuICAgICAgICAgICAgICAgIFwibXhfUm9vbVNldHRpbmdzRGlhbG9nX3dhcm5pbmdJY29uXCIsXG4gICAgICAgICAgICAgICAgPEFkdmFuY2VkUm9vbVNldHRpbmdzVGFiIHJvb21JZD17dGhpcy5wcm9wcy5yb29tSWR9IGNsb3NlU2V0dGluZ3NGbj17dGhpcy5wcm9wcy5vbkZpbmlzaGVkfSAvPixcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhYnM7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBCYXNlRGlhbG9nID0gc2RrLmdldENvbXBvbmVudCgndmlld3MuZGlhbG9ncy5CYXNlRGlhbG9nJyk7XG5cbiAgICAgICAgY29uc3Qgcm9vbU5hbWUgPSBNYXRyaXhDbGllbnRQZWcuZ2V0KCkuZ2V0Um9vbSh0aGlzLnByb3BzLnJvb21JZCkubmFtZTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCYXNlRGlhbG9nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdteF9Sb29tU2V0dGluZ3NEaWFsb2cnXG4gICAgICAgICAgICAgICAgaGFzQ2FuY2VsPXt0cnVlfVxuICAgICAgICAgICAgICAgIG9uRmluaXNoZWQ9e3RoaXMucHJvcHMub25GaW5pc2hlZH1cbiAgICAgICAgICAgICAgICB0aXRsZT17X3QoXCJSb29tIFNldHRpbmdzIC0gJShyb29tTmFtZSlzXCIsIHtyb29tTmFtZX0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdteF9TZXR0aW5nc0RpYWxvZ19jb250ZW50Jz5cbiAgICAgICAgICAgICAgICAgICAgPFRhYmJlZFZpZXcgdGFicz17dGhpcy5fZ2V0VGFicygpfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==