UNPKG

matrix-react-sdk

Version:
114 lines (110 loc) 15.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _Dropdown = _interopRequireDefault(require("../../views/elements/Dropdown")); var _PlatformPeg = _interopRequireDefault(require("../../../PlatformPeg")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _languageHandler = require("../../../languageHandler"); var _Spinner = _interopRequireDefault(require("./Spinner")); /* Copyright 2024 New Vector Ltd. Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com> SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ function languageMatchesSearchQuery(query, language) { if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; } class SpellCheckLanguagesDropdown extends _react.default.Component { constructor(props) { super(props); this.onSearchChange = this.onSearchChange.bind(this); this.state = { searchQuery: "" }; } componentDidMount() { const plaf = _PlatformPeg.default.get(); if (plaf) { const languageNames = new Intl.DisplayNames([(0, _languageHandler.getUserLanguage)()], { type: "language", style: "short" }); plaf.getAvailableSpellCheckLanguages()?.then(languages => { languages.sort(function (a, b) { if (a < b) return -1; if (a > b) return 1; return 0; }); const langs = []; languages.forEach(language => { langs.push({ label: languageNames.of(language), value: language }); }); this.setState({ languages: langs }); }).catch(e => { this.setState({ languages: [{ value: "en", label: languageNames.of("en") }] }); }); } } onSearchChange(searchQuery) { this.setState({ searchQuery }); } render() { if (!this.state.languages) { return /*#__PURE__*/_react.default.createElement(_Spinner.default, null); } let displayedLanguages; if (this.state.searchQuery) { displayedLanguages = this.state.languages.filter(lang => { return languageMatchesSearchQuery(this.state.searchQuery, lang); }); } else { displayedLanguages = this.state.languages; } const options = displayedLanguages.map(language => { return /*#__PURE__*/_react.default.createElement("div", { key: language.value }, language.label); }); // default value here too, otherwise we need to handle null / undefined; // values between mounting and the initial value propagating let language = _SettingsStore.default.getValue("language", null, /*excludeDefault:*/true); let value; if (language) { value = this.props.value || language; } else { language = navigator.language || navigator.userLanguage; value = this.props.value || language; } return /*#__PURE__*/_react.default.createElement(_Dropdown.default, { id: "mx_LanguageDropdown", className: this.props.className, onOptionChange: this.props.onOptionChange, onSearchChange: this.onSearchChange, searchEnabled: true, value: value, label: (0, _languageHandler._t)("language_dropdown_label"), placeholder: (0, _languageHandler._t)("settings|general|spell_check_locale_placeholder") }, options); } } exports.default = SpellCheckLanguagesDropdown; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Ecm9wZG93biIsIl9QbGF0Zm9ybVBlZyIsIl9TZXR0aW5nc1N0b3JlIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9TcGlubmVyIiwibGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkiLCJxdWVyeSIsImxhbmd1YWdlIiwibGFiZWwiLCJ0b1VwcGVyQ2FzZSIsImluY2x1ZGVzIiwidmFsdWUiLCJTcGVsbENoZWNrTGFuZ3VhZ2VzRHJvcGRvd24iLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJvblNlYXJjaENoYW5nZSIsImJpbmQiLCJzdGF0ZSIsInNlYXJjaFF1ZXJ5IiwiY29tcG9uZW50RGlkTW91bnQiLCJwbGFmIiwiUGxhdGZvcm1QZWciLCJnZXQiLCJsYW5ndWFnZU5hbWVzIiwiSW50bCIsIkRpc3BsYXlOYW1lcyIsImdldFVzZXJMYW5ndWFnZSIsInR5cGUiLCJzdHlsZSIsImdldEF2YWlsYWJsZVNwZWxsQ2hlY2tMYW5ndWFnZXMiLCJ0aGVuIiwibGFuZ3VhZ2VzIiwic29ydCIsImEiLCJiIiwibGFuZ3MiLCJmb3JFYWNoIiwicHVzaCIsIm9mIiwic2V0U3RhdGUiLCJjYXRjaCIsImUiLCJyZW5kZXIiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImRpc3BsYXllZExhbmd1YWdlcyIsImZpbHRlciIsImxhbmciLCJvcHRpb25zIiwibWFwIiwia2V5IiwiU2V0dGluZ3NTdG9yZSIsImdldFZhbHVlIiwibmF2aWdhdG9yIiwidXNlckxhbmd1YWdlIiwiaWQiLCJjbGFzc05hbWUiLCJvbk9wdGlvbkNoYW5nZSIsInNlYXJjaEVuYWJsZWQiLCJfdCIsInBsYWNlaG9sZGVyIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL1NwZWxsQ2hlY2tMYW5ndWFnZXNEcm9wZG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi4vLi4vdmlld3MvZWxlbWVudHMvRHJvcGRvd25cIjtcbmltcG9ydCBQbGF0Zm9ybVBlZyBmcm9tIFwiLi4vLi4vLi4vUGxhdGZvcm1QZWdcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBfdCwgZ2V0VXNlckxhbmd1YWdlIH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4vU3Bpbm5lclwiO1xuaW1wb3J0IHsgTm9uRW1wdHlBcnJheSB9IGZyb20gXCIuLi8uLi8uLi9AdHlwZXMvY29tbW9uXCI7XG5cbnR5cGUgTGFuZ3VhZ2VzID0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZzsgLy8gdHJhbnNsYXRlZFxufVtdO1xuZnVuY3Rpb24gbGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkocXVlcnk6IHN0cmluZywgbGFuZ3VhZ2U6IExhbmd1YWdlc1swXSk6IGJvb2xlYW4ge1xuICAgIGlmIChsYW5ndWFnZS5sYWJlbC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvVXBwZXJDYXNlKCkpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAobGFuZ3VhZ2UudmFsdWUudG9VcHBlckNhc2UoKSA9PT0gcXVlcnkudG9VcHBlckNhc2UoKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5pbnRlcmZhY2UgU3BlbGxDaGVja0xhbmd1YWdlc0Ryb3Bkb3duSVByb3BzIHtcbiAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIG9uT3B0aW9uQ2hhbmdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgU3BlbGxDaGVja0xhbmd1YWdlc0Ryb3Bkb3duSVN0YXRlIHtcbiAgICBzZWFyY2hRdWVyeTogc3RyaW5nO1xuICAgIGxhbmd1YWdlcz86IExhbmd1YWdlcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3BlbGxDaGVja0xhbmd1YWdlc0Ryb3Bkb3duIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICAgIFNwZWxsQ2hlY2tMYW5ndWFnZXNEcm9wZG93bklQcm9wcyxcbiAgICBTcGVsbENoZWNrTGFuZ3VhZ2VzRHJvcGRvd25JU3RhdGVcbj4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogU3BlbGxDaGVja0xhbmd1YWdlc0Ryb3Bkb3duSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5vblNlYXJjaENoYW5nZSA9IHRoaXMub25TZWFyY2hDaGFuZ2UuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc2VhcmNoUXVlcnk6IFwiXCIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwbGFmID0gUGxhdGZvcm1QZWcuZ2V0KCk7XG4gICAgICAgIGlmIChwbGFmKSB7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFtnZXRVc2VyTGFuZ3VhZ2UoKV0sIHsgdHlwZTogXCJsYW5ndWFnZVwiLCBzdHlsZTogXCJzaG9ydFwiIH0pO1xuICAgICAgICAgICAgcGxhZlxuICAgICAgICAgICAgICAgIC5nZXRBdmFpbGFibGVTcGVsbENoZWNrTGFuZ3VhZ2VzKClcbiAgICAgICAgICAgICAgICA/LnRoZW4oKGxhbmd1YWdlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYW5nczogTGFuZ3VhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlcy5mb3JFYWNoKChsYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlTmFtZXMub2YobGFuZ3VhZ2UpISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsYW5ndWFnZXM6IGxhbmdzIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2VOYW1lcy5vZihcImVuXCIpISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlYXJjaFF1ZXJ5IH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmxhbmd1YWdlcykge1xuICAgICAgICAgICAgcmV0dXJuIDxTcGlubmVyIC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXllZExhbmd1YWdlczogTGFuZ3VhZ2VzO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSkge1xuICAgICAgICAgICAgZGlzcGxheWVkTGFuZ3VhZ2VzID0gdGhpcy5zdGF0ZS5sYW5ndWFnZXMuZmlsdGVyKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlTWF0Y2hlc1NlYXJjaFF1ZXJ5KHRoaXMuc3RhdGUuc2VhcmNoUXVlcnksIGxhbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaXNwbGF5ZWRMYW5ndWFnZXMgPSB0aGlzLnN0YXRlLmxhbmd1YWdlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXNwbGF5ZWRMYW5ndWFnZXMubWFwKChsYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtsYW5ndWFnZS52YWx1ZX0+e2xhbmd1YWdlLmxhYmVsfTwvZGl2PjtcbiAgICAgICAgfSkgYXMgTm9uRW1wdHlBcnJheTxSZWFjdEVsZW1lbnQgJiB7IGtleTogc3RyaW5nIH0+O1xuXG4gICAgICAgIC8vIGRlZmF1bHQgdmFsdWUgaGVyZSB0b28sIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGhhbmRsZSBudWxsIC8gdW5kZWZpbmVkO1xuICAgICAgICAvLyB2YWx1ZXMgYmV0d2VlbiBtb3VudGluZyBhbmQgdGhlIGluaXRpYWwgdmFsdWUgcHJvcGFnYXRpbmdcbiAgICAgICAgbGV0IGxhbmd1YWdlID0gU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFwibGFuZ3VhZ2VcIiwgbnVsbCwgLypleGNsdWRlRGVmYXVsdDoqLyB0cnVlKTtcbiAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChsYW5ndWFnZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnByb3BzLnZhbHVlIHx8IGxhbmd1YWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZTtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSB8fCBsYW5ndWFnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RHJvcGRvd25cbiAgICAgICAgICAgICAgICBpZD1cIm14X0xhbmd1YWdlRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgb25PcHRpb25DaGFuZ2U9e3RoaXMucHJvcHMub25PcHRpb25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25TZWFyY2hDaGFuZ2U9e3RoaXMub25TZWFyY2hDaGFuZ2V9XG4gICAgICAgICAgICAgICAgc2VhcmNoRW5hYmxlZD17dHJ1ZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgbGFiZWw9e190KFwibGFuZ3VhZ2VfZHJvcGRvd25fbGFiZWxcIil9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e190KFwic2V0dGluZ3N8Z2VuZXJhbHxzcGVsbF9jaGVja19sb2NhbGVfcGxhY2Vob2xkZXJcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge29wdGlvbnN9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duPlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFlQSxTQUFTTSwwQkFBMEJBLENBQUNDLEtBQWEsRUFBRUMsUUFBc0IsRUFBVztFQUNoRixJQUFJQSxRQUFRLENBQUNDLEtBQUssQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDSixLQUFLLENBQUNHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDM0UsSUFBSUYsUUFBUSxDQUFDSSxLQUFLLENBQUNGLFdBQVcsQ0FBQyxDQUFDLEtBQUtILEtBQUssQ0FBQ0csV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDckUsT0FBTyxLQUFLO0FBQ2hCO0FBYWUsTUFBTUcsMkJBQTJCLFNBQVNDLGNBQUssQ0FBQ0MsU0FBUyxDQUd0RTtFQUNTQyxXQUFXQSxD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