UNPKG

matrix-react-sdk

Version:
115 lines (112 loc) 17.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 _EventTilePreview = _interopRequireDefault(require("../elements/EventTilePreview")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _SettingLevel = require("../../../settings/SettingLevel"); var _languageHandler = require("../../../languageHandler"); var _SettingsSubsection = _interopRequireDefault(require("./shared/SettingsSubsection")); var _Field = _interopRequireDefault(require("../elements/Field")); var _FontWatcher = require("../../../settings/watchers/FontWatcher"); /* Copyright 2024 New Vector Ltd. Copyright 2021-2023 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. */ class FontScalingPanel extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "MESSAGE_PREVIEW_TEXT", (0, _languageHandler._t)("common|preview_message")); /** * Font sizes available (in px) */ (0, _defineProperty2.default)(this, "sizes", [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36]); (0, _defineProperty2.default)(this, "layoutWatcherRef", void 0); (0, _defineProperty2.default)(this, "unmounted", false); /** * Save the new font size * @param delta */ (0, _defineProperty2.default)(this, "onFontSizeChanged", async delta => { const parsedDelta = parseInt(delta, 10) || 0; this.setState({ fontSizeDelta: parsedDelta }); await _SettingsStore.default.setValue("fontSizeDelta", null, _SettingLevel.SettingLevel.DEVICE, parsedDelta); }); /** * Compute the difference between the selected font size and the browser font size * @param fontSize */ (0, _defineProperty2.default)(this, "computeDeltaFontSize", fontSize => { return fontSize - this.state.browserFontSize; }); this.state = { fontSizeDelta: _SettingsStore.default.getValue("fontSizeDelta", null), browserFontSize: _FontWatcher.FontWatcher.getBrowserDefaultFontSize(), useCustomFontSize: _SettingsStore.default.getValue("useCustomFontSize"), layout: _SettingsStore.default.getValue("layout") }; } async componentDidMount() { // Fetch the current user profile for the message preview const client = _MatrixClientPeg.MatrixClientPeg.safeGet(); const userId = client.getSafeUserId(); const profileInfo = await client.getProfileInfo(userId); this.layoutWatcherRef = _SettingsStore.default.watchSetting("layout", null, () => { // Update the layout for the preview window according to the user selection const value = _SettingsStore.default.getValue("layout"); if (this.state.layout !== value) { this.setState({ layout: value }); } }); if (this.unmounted) return; this.setState({ userId, displayName: profileInfo.displayname, avatarUrl: profileInfo.avatar_url }); } componentWillUnmount() { this.unmounted = true; if (this.layoutWatcherRef) { _SettingsStore.default.unwatchSetting(this.layoutWatcherRef); } } render() { return /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { heading: (0, _languageHandler._t)("settings|appearance|font_size"), stretchContent: true, "data-testid": "mx_FontScalingPanel" }, /*#__PURE__*/_react.default.createElement(_Field.default, { element: "select", className: "mx_FontScalingPanel_Dropdown", label: (0, _languageHandler._t)("settings|appearance|font_size"), value: this.state.fontSizeDelta.toString(), onChange: e => this.onFontSizeChanged(e.target.value) }, this.sizes.map(size => /*#__PURE__*/_react.default.createElement("option", { key: size, value: this.computeDeltaFontSize(size) }, size === this.state.browserFontSize ? (0, _languageHandler._t)("settings|appearance|font_size_default", { fontSize: size }) : size))), /*#__PURE__*/_react.default.createElement(_EventTilePreview.default, { className: "mx_FontScalingPanel_preview", message: this.MESSAGE_PREVIEW_TEXT, layout: this.state.layout, userId: this.state.userId, displayName: this.state.displayName, avatarUrl: this.state.avatarUrl })); } } exports.default = FontScalingPanel; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9FdmVudFRpbGVQcmV2aWV3IiwiX1NldHRpbmdzU3RvcmUiLCJfTWF0cml4Q2xpZW50UGVnIiwiX1NldHRpbmdMZXZlbCIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfU2V0dGluZ3NTdWJzZWN0aW9uIiwiX0ZpZWxkIiwiX0ZvbnRXYXRjaGVyIiwiRm9udFNjYWxpbmdQYW5lbCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiX3QiLCJkZWx0YSIsInBhcnNlZERlbHRhIiwicGFyc2VJbnQiLCJzZXRTdGF0ZSIsImZvbnRTaXplRGVsdGEiLCJTZXR0aW5nc1N0b3JlIiwic2V0VmFsdWUiLCJTZXR0aW5nTGV2ZWwiLCJERVZJQ0UiLCJmb250U2l6ZSIsInN0YXRlIiwiYnJvd3NlckZvbnRTaXplIiwiZ2V0VmFsdWUiLCJGb250V2F0Y2hlciIsImdldEJyb3dzZXJEZWZhdWx0Rm9udFNpemUiLCJ1c2VDdXN0b21Gb250U2l6ZSIsImxheW91dCIsImNvbXBvbmVudERpZE1vdW50IiwiY2xpZW50IiwiTWF0cml4Q2xpZW50UGVnIiwic2FmZUdldCIsInVzZXJJZCIsImdldFNhZmVVc2VySWQiLCJwcm9maWxlSW5mbyIsImdldFByb2ZpbGVJbmZvIiwibGF5b3V0V2F0Y2hlclJlZiIsIndhdGNoU2V0dGluZyIsInZhbHVlIiwidW5tb3VudGVkIiwiZGlzcGxheU5hbWUiLCJkaXNwbGF5bmFtZSIsImF2YXRhclVybCIsImF2YXRhcl91cmwiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVud2F0Y2hTZXR0aW5nIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImhlYWRpbmciLCJzdHJldGNoQ29udGVudCIsImVsZW1lbnQiLCJjbGFzc05hbWUiLCJsYWJlbCIsInRvU3RyaW5nIiwib25DaGFuZ2UiLCJlIiwib25Gb250U2l6ZUNoYW5nZWQiLCJ0YXJnZXQiLCJzaXplcyIsIm1hcCIsInNpemUiLCJrZXkiLCJjb21wdXRlRGVsdGFGb250U2l6ZSIsIm1lc3NhZ2UiLCJNRVNTQUdFX1BSRVZJRVdfVEVYVCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9Gb250U2NhbGluZ1BhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMS0yMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IEV2ZW50VGlsZVByZXZpZXcgZnJvbSBcIi4uL2VsZW1lbnRzL0V2ZW50VGlsZVByZXZpZXdcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBMYXlvdXQgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvZW51bXMvTGF5b3V0XCI7XG5pbXBvcnQgeyBNYXRyaXhDbGllbnRQZWcgfSBmcm9tIFwiLi4vLi4vLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTZXR0aW5nc1N1YnNlY3Rpb24gZnJvbSBcIi4vc2hhcmVkL1NldHRpbmdzU3Vic2VjdGlvblwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCIuLi9lbGVtZW50cy9GaWVsZFwiO1xuaW1wb3J0IHsgRm9udFdhdGNoZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3Mvd2F0Y2hlcnMvRm9udFdhdGNoZXJcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7fVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBicm93c2VyRm9udFNpemU6IG51bWJlcjtcbiAgICAvLyBTdHJpbmcgZGlzcGxheWluZyB0aGUgY3VycmVudCBzZWxlY3RlZCBmb250U2l6ZS5cbiAgICAvLyBOZWVkcyB0byBiZSBzdHJpbmcgZm9yIHRoaW5ncyBsaWtlICcxLicgd2l0aG91dFxuICAgIC8vIHRyYWlsaW5nIDBzLlxuICAgIGZvbnRTaXplRGVsdGE6IG51bWJlcjtcbiAgICB1c2VDdXN0b21Gb250U2l6ZTogYm9vbGVhbjtcbiAgICBsYXlvdXQ6IExheW91dDtcbiAgICAvLyBVc2VyIHByb2ZpbGUgZGF0YSBmb3IgdGhlIG1lc3NhZ2UgcHJldmlld1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICBhdmF0YXJVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvbnRTY2FsaW5nUGFuZWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1FU1NBR0VfUFJFVklFV19URVhUID0gX3QoXCJjb21tb258cHJldmlld19tZXNzYWdlXCIpO1xuICAgIC8qKlxuICAgICAqIEZvbnQgc2l6ZXMgYXZhaWxhYmxlIChpbiBweClcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpemVzID0gWzksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzAsIDMyLCAzNCwgMzZdO1xuICAgIHByaXZhdGUgbGF5b3V0V2F0Y2hlclJlZj86IHN0cmluZztcbiAgICBwcml2YXRlIHVubW91bnRlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBmb250U2l6ZURlbHRhOiBTZXR0aW5nc1N0b3JlLmdldFZhbHVlPG51bWJlcj4oXCJmb250U2l6ZURlbHRhXCIsIG51bGwpLFxuICAgICAgICAgICAgYnJvd3NlckZvbnRTaXplOiBGb250V2F0Y2hlci5nZXRCcm93c2VyRGVmYXVsdEZvbnRTaXplKCksXG4gICAgICAgICAgICB1c2VDdXN0b21Gb250U2l6ZTogU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcInVzZUN1c3RvbUZvbnRTaXplXCIpLFxuICAgICAgICAgICAgbGF5b3V0OiBTZXR0aW5nc1N0b3JlLmdldFZhbHVlKFwibGF5b3V0XCIpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjb21wb25lbnREaWRNb3VudCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gRmV0Y2ggdGhlIGN1cnJlbnQgdXNlciBwcm9maWxlIGZvciB0aGUgbWVzc2FnZSBwcmV2aWV3XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCk7XG4gICAgICAgIGNvbnN0IHVzZXJJZCA9IGNsaWVudC5nZXRTYWZlVXNlcklkKCk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVJbmZvID0gYXdhaXQgY2xpZW50LmdldFByb2ZpbGVJbmZvKHVzZXJJZCk7XG4gICAgICAgIHRoaXMubGF5b3V0V2F0Y2hlclJlZiA9IFNldHRpbmdzU3RvcmUud2F0Y2hTZXR0aW5nKFwibGF5b3V0XCIsIG51bGwsICgpID0+IHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgbGF5b3V0IGZvciB0aGUgcHJldmlldyB3aW5kb3cgYWNjb3JkaW5nIHRvIHRoZSB1c2VyIHNlbGVjdGlvblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBTZXR0aW5nc1N0b3JlLmdldFZhbHVlKFwibGF5b3V0XCIpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUubGF5b3V0ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBsYXlvdXQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMudW5tb3VudGVkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogcHJvZmlsZUluZm8uZGlzcGxheW5hbWUsXG4gICAgICAgICAgICBhdmF0YXJVcmw6IHByb2ZpbGVJbmZvLmF2YXRhcl91cmwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bm1vdW50ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5sYXlvdXRXYXRjaGVyUmVmKSB7XG4gICAgICAgICAgICBTZXR0aW5nc1N0b3JlLnVud2F0Y2hTZXR0aW5nKHRoaXMubGF5b3V0V2F0Y2hlclJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlIHRoZSBuZXcgZm9udCBzaXplXG4gICAgICogQHBhcmFtIGRlbHRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkZvbnRTaXplQ2hhbmdlZCA9IGFzeW5jIChkZWx0YTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZERlbHRhID0gcGFyc2VJbnQoZGVsdGEsIDEwKSB8fCAwO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9udFNpemVEZWx0YTogcGFyc2VkRGVsdGEgfSk7XG4gICAgICAgIGF3YWl0IFNldHRpbmdzU3RvcmUuc2V0VmFsdWUoXCJmb250U2l6ZURlbHRhXCIsIG51bGwsIFNldHRpbmdMZXZlbC5ERVZJQ0UsIHBhcnNlZERlbHRhKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzZWxlY3RlZCBmb250IHNpemUgYW5kIHRoZSBicm93c2VyIGZvbnQgc2l6ZVxuICAgICAqIEBwYXJhbSBmb250U2l6ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcHV0ZURlbHRhRm9udFNpemUgPSAoZm9udFNpemU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiBmb250U2l6ZSAtIHRoaXMuc3RhdGUuYnJvd3NlckZvbnRTaXplO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U2V0dGluZ3NTdWJzZWN0aW9uXG4gICAgICAgICAgICAgICAgaGVhZGluZz17X3QoXCJzZXR0aW5nc3xhcHBlYXJhbmNlfGZvbnRfc2l6ZVwiKX1cbiAgICAgICAgICAgICAgICBzdHJldGNoQ29udGVudFxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibXhfRm9udFNjYWxpbmdQYW5lbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Gb250U2NhbGluZ1BhbmVsX0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e190KFwic2V0dGluZ3N8YXBwZWFyYW5jZXxmb250X3NpemVcIil9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZvbnRTaXplRGVsdGEudG9TdHJpbmcoKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB0aGlzLm9uRm9udFNpemVDaGFuZ2VkKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnNpemVzLm1hcCgoc2l6ZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e3NpemV9IHZhbHVlPXt0aGlzLmNvbXB1dGVEZWx0YUZvbnRTaXplKHNpemUpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2l6ZSA9PT0gdGhpcy5zdGF0ZS5icm93c2VyRm9udFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdChcInNldHRpbmdzfGFwcGVhcmFuY2V8Zm9udF9zaXplX2RlZmF1bHRcIiwgeyBmb250U2l6ZTogc2l6ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GaWVsZD5cbiAgICAgICAgICAgICAgICA8RXZlbnRUaWxlUHJldmlld1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Gb250U2NhbGluZ1BhbmVsX3ByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXt0aGlzLk1FU1NBR0VfUFJFVklFV19URVhUfVxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQ9e3RoaXMuc3RhdGUubGF5b3V0fVxuICAgICAgICAgICAgICAgICAgICB1c2VySWQ9e3RoaXMuc3RhdGUudXNlcklkfVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT17dGhpcy5zdGF0ZS5kaXNwbGF5TmFtZX1cbiAgICAgICAgICAgICAgICAgICAgYXZhdGFyVXJsPXt0aGlzLnN0YXRlLmF2YXRhclVybH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TZXR0aW5n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