matrix-react-sdk
Version:
SDK for matrix.org using React
114 lines (110 loc) • 15.7 kB
JavaScript
"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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