matrix-react-sdk
Version:
SDK for matrix.org using React
113 lines (109 loc) • 17.9 kB
JavaScript
"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 _classnames = _interopRequireDefault(require("classnames"));
var _languageHandler = _interopRequireWildcard(require("../../../languageHandler"));
var languageHandler = _languageHandler;
var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore"));
var _Spinner = _interopRequireDefault(require("./Spinner"));
var _Dropdown = _interopRequireDefault(require("./Dropdown"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/*
Copyright 2024 New Vector Ltd.
Copyright 2017 Marcel Radzio (MTRNord)
Copyright 2017 Vector Creations Ltd.
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.labelInTargetLanguage.toUpperCase().includes(query.toUpperCase())) return true;
if (language.label.toUpperCase().includes(query.toUpperCase())) return true;
if (language.value.toUpperCase() === query.toUpperCase()) return true;
return false;
}
class LanguageDropdown extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onSearchChange", search => {
this.setState({
searchQuery: search
});
});
this.state = {
searchQuery: "",
langs: null
};
}
componentDidMount() {
languageHandler.getAllLanguagesWithLabels().then(langs => {
langs.sort(function (a, b) {
if (a.labelInTargetLanguage < b.labelInTargetLanguage) return -1;
if (a.labelInTargetLanguage > b.labelInTargetLanguage) return 1;
return 0;
});
this.setState({
langs
});
}).catch(() => {
this.setState({
langs: [{
value: "en",
label: "English",
labelInTargetLanguage: "English"
}]
});
});
if (!this.props.value) {
// If no value is given, we start with the first country selected,
// but our parent component doesn't know this, therefore we do this.
const language = languageHandler.getUserLanguage();
this.props.onOptionChange(language);
}
}
render() {
if (this.state.langs === null) {
return /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
}
let displayedLanguages;
if (this.state.searchQuery) {
displayedLanguages = this.state.langs.filter(lang => {
return languageMatchesSearchQuery(this.state.searchQuery, lang);
});
} else {
displayedLanguages = this.state.langs;
}
const options = displayedLanguages.map(language => {
return /*#__PURE__*/_react.default.createElement("div", {
key: language.value
}, language.labelInTargetLanguage);
});
// 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: (0, _classnames.default)("mx_LanguageDropdown", this.props.className),
onOptionChange: this.props.onOptionChange,
onSearchChange: this.onSearchChange,
searchEnabled: true,
value: value,
label: (0, _languageHandler._t)("language_dropdown_label"),
disabled: this.props.disabled
}, options);
}
}
exports.default = LanguageDropdown;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwibGFuZ3VhZ2VIYW5kbGVyIiwiX1NldHRpbmdzU3RvcmUiLCJfU3Bpbm5lciIsIl9Ecm9wZG93biIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImxhbmd1YWdlTWF0Y2hlc1NlYXJjaFF1ZXJ5IiwicXVlcnkiLCJsYW5ndWFnZSIsImxhYmVsSW5UYXJnZXRMYW5ndWFnZSIsInRvVXBwZXJDYXNlIiwiaW5jbHVkZXMiLCJsYWJlbCIsInZhbHVlIiwiTGFuZ3VhZ2VEcm9wZG93biIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzZWFyY2giLCJzZXRTdGF0ZSIsInNlYXJjaFF1ZXJ5Iiwic3RhdGUiLCJsYW5ncyIsImNvbXBvbmVudERpZE1vdW50IiwiZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscyIsInRoZW4iLCJzb3J0IiwiYiIsImNhdGNoIiwiZ2V0VXNlckxhbmd1YWdlIiwib25PcHRpb25DaGFuZ2UiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiZGlzcGxheWVkTGFuZ3VhZ2VzIiwiZmlsdGVyIiwibGFuZyIsIm9wdGlvbnMiLCJtYXAiLCJrZXkiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJpZCIsImNsYXNzTmFtZSIsImNsYXNzTmFtZXMiLCJvblNlYXJjaENoYW5nZSIsInNlYXJjaEVuYWJsZWQiLCJfdCIsImRpc2FibGVkIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0xhbmd1YWdlRHJvcGRvd24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE3IE1hcmNlbCBSYWR6aW8gKE1UUk5vcmQpXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZC5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcblxuaW1wb3J0ICogYXMgbGFuZ3VhZ2VIYW5kbGVyIGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuL1NwaW5uZXJcIjtcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9Ecm9wZG93blwiO1xuaW1wb3J0IHsgTm9uRW1wdHlBcnJheSB9IGZyb20gXCIuLi8uLi8uLi9AdHlwZXMvY29tbW9uXCI7XG5cbnR5cGUgTGFuZ3VhZ2VzID0gQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBsYW5ndWFnZUhhbmRsZXIuZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscz4+O1xuXG5mdW5jdGlvbiBsYW5ndWFnZU1hdGNoZXNTZWFyY2hRdWVyeShxdWVyeTogc3RyaW5nLCBsYW5ndWFnZTogTGFuZ3VhZ2VzWzBdKTogYm9vbGVhbiB7XG4gICAgaWYgKGxhbmd1YWdlLmxhYmVsSW5UYXJnZXRMYW5ndWFnZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvVXBwZXJDYXNlKCkpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAobGFuZ3VhZ2UubGFiZWwudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b1VwcGVyQ2FzZSgpKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGxhbmd1YWdlLnZhbHVlLnRvVXBwZXJDYXNlKCkgPT09IHF1ZXJ5LnRvVXBwZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIG9uT3B0aW9uQ2hhbmdlOiAobGFuZ3VhZ2U6IHN0cmluZykgPT4gdm9pZDtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gICAgbGFuZ3M6IExhbmd1YWdlcyB8IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExhbmd1YWdlRHJvcGRvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNlYXJjaFF1ZXJ5OiBcIlwiLFxuICAgICAgICAgICAgbGFuZ3M6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuICAgICAgICBsYW5ndWFnZUhhbmRsZXJcbiAgICAgICAgICAgIC5nZXRBbGxMYW5ndWFnZXNXaXRoTGFiZWxzKClcbiAgICAgICAgICAgIC50aGVuKChsYW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGxhbmdzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGFiZWxJblRhcmdldExhbmd1YWdlIDwgYi5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2UpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGFiZWxJblRhcmdldExhbmd1YWdlID4gYi5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2UpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbGFuZ3MgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkVuZ2xpc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEluVGFyZ2V0TGFuZ3VhZ2U6IFwiRW5nbGlzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWx1ZSkge1xuICAgICAgICAgICAgLy8gSWYgbm8gdmFsdWUgaXMgZ2l2ZW4sIHdlIHN0YXJ0IHdpdGggdGhlIGZpcnN0IGNvdW50cnkgc2VsZWN0ZWQsXG4gICAgICAgICAgICAvLyBidXQgb3VyIHBhcmVudCBjb21wb25lbnQgZG9lc24ndCBrbm93IHRoaXMsIHRoZXJlZm9yZSB3ZSBkbyB0aGlzLlxuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBsYW5ndWFnZUhhbmRsZXIuZ2V0VXNlckxhbmd1YWdlKCk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uT3B0aW9uQ2hhbmdlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hDaGFuZ2UgPSAoc2VhcmNoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogc2VhcmNoLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sYW5ncyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDxTcGlubmVyIC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXllZExhbmd1YWdlczogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBsYW5ndWFnZUhhbmRsZXIuZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscz4+O1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSkge1xuICAgICAgICAgICAgZGlzcGxheWVkTGFuZ3VhZ2VzID0gdGhpcy5zdGF0ZS5sYW5ncy5maWx0ZXIoKGxhbmcpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkodGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSwgbGFuZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpc3BsYXllZExhbmd1YWdlcyA9IHRoaXMuc3RhdGUubGFuZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlzcGxheWVkTGFuZ3VhZ2VzLm1hcCgobGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17bGFuZ3VhZ2UudmFsdWV9PntsYW5ndWFnZS5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2V9PC9kaXY+O1xuICAgICAgICB9KSBhcyBOb25FbXB0eUFycmF5PFJlYWN0RWxlbWVudCAmIHsga2V5OiBzdHJpbmcgfT47XG5cbiAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZSBoZXJlIHRvbywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gaGFuZGxlIG51bGwgLyB1bmRlZmluZWRcbiAgICAgICAgLy8gdmFsdWVzIGJldHdlZW4gbW91bnRpbmcgYW5kIHRoZSBpbml0aWFsIHZhbHVlIHByb3BhZ2F0aW5nXG4gICAgICAgIGxldCBsYW5ndWFnZSA9IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWU8c3RyaW5nIHwgdW5kZWZpbmVkPihcImxhbmd1YWdlXCIsIG51bGwsIC8qZXhjbHVkZURlZmF1bHQ6Ki8gdHJ1ZSk7XG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSB8fCBsYW5ndWFnZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhbmd1YWdlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2U7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWUgfHwgbGFuZ3VhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICAgICAgaWQ9XCJteF9MYW5ndWFnZURyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJteF9MYW5ndWFnZURyb3Bkb3duXCIsIHRoaXMucHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgICBvbk9wdGlvbkNoYW5nZT17dGhpcy5wcm9wcy5vbk9wdGlvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBvblNlYXJjaENoYW5nZT17dGhpcy5vblNlYXJjaENoYW5nZX1cbiAgICAgICAgICAgICAgICBzZWFyY2hFbmFibGVkPXt0cnVlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJsYW5ndWFnZV9kcm9wZG93bl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7b3B0aW9uc31cbiAgICAgICAgICAgIDwvRHJvcGRvd24+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVNBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBNEQsSUFBQUksZUFBQSxHQUFBRixnQkFBQTtBQUM1RCxJQUFBRyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxRQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFBa0MsU0FBQVEseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEs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