UNPKG

matrix-react-sdk

Version:
87 lines (69 loc) 8.76 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.FontWatcher = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _dispatcher = _interopRequireDefault(require("../../dispatcher/dispatcher")); var _SettingsStore = _interopRequireDefault(require("../SettingsStore")); var _units = require("../../utils/units"); var _actions = require("../../dispatcher/actions"); var _SettingLevel = require("../SettingLevel"); /* Copyright 2020 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ class FontWatcher /*:: implements IWatcher*/ { // Externally we tell the user the font is size 15. Internally we use 10. constructor() { (0, _defineProperty2.default)(this, "dispatcherRef", void 0); (0, _defineProperty2.default)(this, "onAction", payload => { if (payload.action === _actions.Action.UpdateFontSize) { this.setRootFontSize(payload.size); } else if (payload.action === _actions.Action.UpdateSystemFont) { this.setSystemFont(payload); } }); (0, _defineProperty2.default)(this, "setRootFontSize", size => { const fontSize = Math.max(Math.min(FontWatcher.MAX_SIZE, size), FontWatcher.MIN_SIZE); if (fontSize !== size) { _SettingsStore.default.setValue("baseFontSize", null, _SettingLevel.SettingLevel.DEVICE, fontSize); } document.querySelector(":root").style.fontSize = (0, _units.toPx)(fontSize); }); (0, _defineProperty2.default)(this, "setSystemFont", ({ useSystemFont, font }) => { document.body.style.fontFamily = useSystemFont ? font : ""; }); this.dispatcherRef = null; } start() { this.setRootFontSize(_SettingsStore.default.getValue("baseFontSize")); this.setSystemFont({ useSystemFont: _SettingsStore.default.getValue("useSystemFont"), font: _SettingsStore.default.getValue("systemFont") }); this.dispatcherRef = _dispatcher.default.register(this.onAction); } stop() { _dispatcher.default.unregister(this.dispatcherRef); } } exports.FontWatcher = FontWatcher; (0, _defineProperty2.default)(FontWatcher, "MIN_SIZE", 8); (0, _defineProperty2.default)(FontWatcher, "MAX_SIZE", 15); (0, _defineProperty2.default)(FontWatcher, "SIZE_DIFF", 5); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXR0aW5ncy93YXRjaGVycy9Gb250V2F0Y2hlci50cyJdLCJuYW1lcyI6WyJGb250V2F0Y2hlciIsImNvbnN0cnVjdG9yIiwicGF5bG9hZCIsImFjdGlvbiIsIkFjdGlvbiIsIlVwZGF0ZUZvbnRTaXplIiwic2V0Um9vdEZvbnRTaXplIiwic2l6ZSIsIlVwZGF0ZVN5c3RlbUZvbnQiLCJzZXRTeXN0ZW1Gb250IiwiZm9udFNpemUiLCJNYXRoIiwibWF4IiwibWluIiwiTUFYX1NJWkUiLCJNSU5fU0laRSIsIlNldHRpbmdzU3RvcmUiLCJzZXRWYWx1ZSIsIlNldHRpbmdMZXZlbCIsIkRFVklDRSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0eWxlIiwidXNlU3lzdGVtRm9udCIsImZvbnQiLCJib2R5IiwiZm9udEZhbWlseSIsImRpc3BhdGNoZXJSZWYiLCJzdGFydCIsImdldFZhbHVlIiwiZGlzIiwicmVnaXN0ZXIiLCJvbkFjdGlvbiIsInN0b3AiLCJ1bnJlZ2lzdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWdCQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU08sTUFBTUE7QUFBTjtBQUFzQztBQUd6QztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFBQTtBQUFBLG9EQWlCTUMsT0FBRCxJQUFhO0FBQzVCLFVBQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQkMsZ0JBQU9DLGNBQTlCLEVBQThDO0FBQzFDLGFBQUtDLGVBQUwsQ0FBcUJKLE9BQU8sQ0FBQ0ssSUFBN0I7QUFDSCxPQUZELE1BRU8sSUFBSUwsT0FBTyxDQUFDQyxNQUFSLEtBQW1CQyxnQkFBT0ksZ0JBQTlCLEVBQWdEO0FBQ25ELGFBQUtDLGFBQUwsQ0FBbUJQLE9BQW5CO0FBQ0g7QUFDSixLQXZCYTtBQUFBLDJEQXlCYUssSUFBRCxJQUFVO0FBQ2hDLFlBQU1HLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLENBQVNELElBQUksQ0FBQ0UsR0FBTCxDQUFTYixXQUFXLENBQUNjLFFBQXJCLEVBQStCUCxJQUEvQixDQUFULEVBQStDUCxXQUFXLENBQUNlLFFBQTNELENBQWpCOztBQUVBLFVBQUlMLFFBQVEsS0FBS0gsSUFBakIsRUFBdUI7QUFDbkJTLCtCQUFjQyxRQUFkLENBQXVCLGNBQXZCLEVBQXVDLElBQXZDLEVBQTZDQywyQkFBYUMsTUFBMUQsRUFBa0VULFFBQWxFO0FBQ0g7O0FBQ2FVLE1BQUFBLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixPQUF2QixDQUFkLENBQStDQyxLQUEvQyxDQUFxRFosUUFBckQsR0FBZ0UsaUJBQUtBLFFBQUwsQ0FBaEU7QUFDSCxLQWhDYTtBQUFBLHlEQWtDVSxDQUFDO0FBQUNhLE1BQUFBLGFBQUQ7QUFBZ0JDLE1BQUFBO0FBQWhCLEtBQUQsS0FBMkI7QUFDL0NKLE1BQUFBLFFBQVEsQ0FBQ0ssSUFBVCxDQUFjSCxLQUFkLENBQW9CSSxVQUFwQixHQUFpQ0gsYUFBYSxHQUFHQyxJQUFILEdBQVUsRUFBeEQ7QUFDSCxLQXBDYTtBQUNWLFNBQUtHLGFBQUwsR0FBcUIsSUFBckI7QUFDSDs7QUFFTUMsRUFBQUEsS0FBUCxHQUFlO0FBQ1gsU0FBS3RCLGVBQUwsQ0FBcUJVLHVCQUFjYSxRQUFkLENBQXVCLGNBQXZCLENBQXJCO0FBQ0EsU0FBS3BCLGFBQUwsQ0FBbUI7QUFDZmMsTUFBQUEsYUFBYSxFQUFFUCx1QkFBY2EsUUFBZCxDQUF1QixlQUF2QixDQURBO0FBRWZMLE1BQUFBLElBQUksRUFBRVIsdUJBQWNhLFFBQWQsQ0FBdUIsWUFBdkI7QUFGUyxLQUFuQjtBQUlBLFNBQUtGLGFBQUwsR0FBcUJHLG9CQUFJQyxRQUFKLENBQWEsS0FBS0MsUUFBbEIsQ0FBckI7QUFDSDs7QUFFTUMsRUFBQUEsSUFBUCxHQUFjO0FBQ1ZILHdCQUFJSSxVQUFKLENBQWUsS0FBS1AsYUFBcEI7QUFDSDs7QUF2QndDOzs7OEJBQWhDM0IsVyxjQUN5QixDOzhCQUR6QkEsVyxjQUV5QixFOzhCQUZ6QkEsVyxlQUkwQixDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IGRpcyBmcm9tICcuLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXInO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSAnLi4vU2V0dGluZ3NTdG9yZSc7XG5pbXBvcnQgSVdhdGNoZXIgZnJvbSBcIi4vV2F0Y2hlclwiO1xuaW1wb3J0IHsgdG9QeCB9IGZyb20gJy4uLy4uL3V0aWxzL3VuaXRzJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL2Rpc3BhdGNoZXIvYWN0aW9ucyc7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vU2V0dGluZ0xldmVsXCI7XG5cbmV4cG9ydCBjbGFzcyBGb250V2F0Y2hlciBpbXBsZW1lbnRzIElXYXRjaGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1JTl9TSVpFID0gODtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BWF9TSVpFID0gMTU7XG4gICAgLy8gRXh0ZXJuYWxseSB3ZSB0ZWxsIHRoZSB1c2VyIHRoZSBmb250IGlzIHNpemUgMTUuIEludGVybmFsbHkgd2UgdXNlIDEwLlxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0laRV9ESUZGID0gNTtcblxuICAgIHByaXZhdGUgZGlzcGF0Y2hlclJlZjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlclJlZiA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0KCkge1xuICAgICAgICB0aGlzLnNldFJvb3RGb250U2l6ZShTZXR0aW5nc1N0b3JlLmdldFZhbHVlKFwiYmFzZUZvbnRTaXplXCIpKTtcbiAgICAgICAgdGhpcy5zZXRTeXN0ZW1Gb250KHtcbiAgICAgICAgICAgIHVzZVN5c3RlbUZvbnQ6IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJ1c2VTeXN0ZW1Gb250XCIpLFxuICAgICAgICAgICAgZm9udDogU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcInN5c3RlbUZvbnRcIiksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXJSZWYgPSBkaXMucmVnaXN0ZXIodGhpcy5vbkFjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3AoKSB7XG4gICAgICAgIGRpcy51bnJlZ2lzdGVyKHRoaXMuZGlzcGF0Y2hlclJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFjdGlvbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gQWN0aW9uLlVwZGF0ZUZvbnRTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNldFJvb3RGb250U2l6ZShwYXlsb2FkLnNpemUpO1xuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQuYWN0aW9uID09PSBBY3Rpb24uVXBkYXRlU3lzdGVtRm9udCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTeXN0ZW1Gb250KHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0Um9vdEZvbnRTaXplID0gKHNpemUpID0+IHtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBNYXRoLm1heChNYXRoLm1pbihGb250V2F0Y2hlci5NQVhfU0laRSwgc2l6ZSksIEZvbnRXYXRjaGVyLk1JTl9TSVpFKTtcblxuICAgICAgICBpZiAoZm9udFNpemUgIT09IHNpemUpIHtcbiAgICAgICAgICAgIFNldHRpbmdzU3RvcmUuc2V0VmFsdWUoXCJiYXNlRm9udFNpemVcIiwgbnVsbCwgU2V0dGluZ0xldmVsLkRFVklDRSwgZm9udFNpemUpO1xuICAgICAgICB9XG4gICAgICAgICg8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIjpyb290XCIpKS5zdHlsZS5mb250U2l6ZSA9IHRvUHgoZm9udFNpemUpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldFN5c3RlbUZvbnQgPSAoe3VzZVN5c3RlbUZvbnQsIGZvbnR9KSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuZm9udEZhbWlseSA9IHVzZVN5c3RlbUZvbnQgPyBmb250IDogXCJcIjtcbiAgICB9O1xufVxuIl19