matrix-react-sdk
Version:
SDK for matrix.org using React
99 lines (96 loc) • 14.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.ExistingSpellCheckLanguage = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _SpellCheckLanguagesDropdown = _interopRequireDefault(require("../../../components/views/elements/SpellCheckLanguagesDropdown"));
var _AccessibleButton = _interopRequireDefault(require("../../../components/views/elements/AccessibleButton"));
var _languageHandler = require("../../../languageHandler");
/*
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.
*/
class ExistingSpellCheckLanguage extends _react.default.Component {
constructor(...args) {
super(...args);
(0, _defineProperty2.default)(this, "onRemove", e => {
e.stopPropagation();
e.preventDefault();
return this.props.onRemoved(this.props.language);
});
}
render() {
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_ExistingSpellCheckLanguage"
}, /*#__PURE__*/_react.default.createElement("span", {
className: "mx_ExistingSpellCheckLanguage_language"
}, this.props.label ?? this.props.language), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.onRemove,
kind: "danger_sm"
}, (0, _languageHandler._t)("action|remove")));
}
}
exports.ExistingSpellCheckLanguage = ExistingSpellCheckLanguage;
class SpellCheckLanguages extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onRemoved", language => {
const languages = this.props.languages.filter(e => e !== language);
this.props.onLanguagesChange(languages);
});
(0, _defineProperty2.default)(this, "onAddClick", e => {
e.stopPropagation();
e.preventDefault();
const language = this.state.newLanguage;
this.setState({
newLanguage: ""
});
if (!language) return;
if (this.props.languages.includes(language)) return;
this.props.languages.push(language);
this.props.onLanguagesChange(this.props.languages);
});
(0, _defineProperty2.default)(this, "onNewLanguageChange", language => {
if (this.state.newLanguage === language) return;
this.setState({
newLanguage: language
});
});
this.state = {
newLanguage: ""
};
}
render() {
const intl = new Intl.DisplayNames([(0, _languageHandler.getUserLanguage)()], {
type: "language",
style: "short"
});
const existingSpellCheckLanguages = this.props.languages.map(e => {
return /*#__PURE__*/_react.default.createElement(ExistingSpellCheckLanguage, {
language: e,
label: intl.of(e),
onRemoved: this.onRemoved,
key: e
});
});
const addButton = /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.onAddClick,
kind: "primary"
}, (0, _languageHandler._t)("action|add"));
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, existingSpellCheckLanguages, /*#__PURE__*/_react.default.createElement("form", {
onSubmit: this.onAddClick,
noValidate: true
}, /*#__PURE__*/_react.default.createElement(_SpellCheckLanguagesDropdown.default, {
className: "mx_GeneralUserSettingsTab_spellCheckLanguageInput",
value: this.state.newLanguage,
onOptionChange: this.onNewLanguageChange
}), addButton));
}
}
exports.default = SpellCheckLanguages;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9TcGVsbENoZWNrTGFuZ3VhZ2VzRHJvcGRvd24iLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9sYW5ndWFnZUhhbmRsZXIiLCJFeGlzdGluZ1NwZWxsQ2hlY2tMYW5ndWFnZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJwcm9wcyIsIm9uUmVtb3ZlZCIsImxhbmd1YWdlIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImxhYmVsIiwib25DbGljayIsIm9uUmVtb3ZlIiwia2luZCIsIl90IiwiZXhwb3J0cyIsIlNwZWxsQ2hlY2tMYW5ndWFnZXMiLCJsYW5ndWFnZXMiLCJmaWx0ZXIiLCJvbkxhbmd1YWdlc0NoYW5nZSIsInN0YXRlIiwibmV3TGFuZ3VhZ2UiLCJzZXRTdGF0ZSIsImluY2x1ZGVzIiwicHVzaCIsImludGwiLCJJbnRsIiwiRGlzcGxheU5hbWVzIiwiZ2V0VXNlckxhbmd1YWdlIiwidHlwZSIsInN0eWxlIiwiZXhpc3RpbmdTcGVsbENoZWNrTGFuZ3VhZ2VzIiwibWFwIiwib2YiLCJrZXkiLCJhZGRCdXR0b24iLCJvbkFkZENsaWNrIiwiRnJhZ21lbnQiLCJvblN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJ2YWx1ZSIsIm9uT3B0aW9uQ2hhbmdlIiwib25OZXdMYW5ndWFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL1NwZWxsQ2hlY2tTZXR0aW5ncy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBTcGVsbENoZWNrTGFuZ3VhZ2VzRHJvcGRvd24gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvU3BlbGxDaGVja0xhbmd1YWdlc0Ryb3Bkb3duXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiwgeyBCdXR0b25FdmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCB7IF90LCBnZXRVc2VyTGFuZ3VhZ2UgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5cbmludGVyZmFjZSBFeGlzdGluZ1NwZWxsQ2hlY2tMYW5ndWFnZUlQcm9wcyB7XG4gICAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgdG8gcmVuZGVyIG9uIHRoZSBjb21wb25lbnQuIElmIG5vdCBwcm92aWRlZCwgdGhlIGxhbmd1YWdlIGNvZGUgd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG9uUmVtb3ZlZChsYW5ndWFnZTogc3RyaW5nKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIFNwZWxsQ2hlY2tMYW5ndWFnZXNJUHJvcHMge1xuICAgIGxhbmd1YWdlczogQXJyYXk8c3RyaW5nPjtcbiAgICBvbkxhbmd1YWdlc0NoYW5nZShsYW5ndWFnZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgU3BlbGxDaGVja0xhbmd1YWdlc0lTdGF0ZSB7XG4gICAgbmV3TGFuZ3VhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEV4aXN0aW5nU3BlbGxDaGVja0xhbmd1YWdlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PEV4aXN0aW5nU3BlbGxDaGVja0xhbmd1YWdlSVByb3BzPiB7XG4gICAgcHJpdmF0ZSBvblJlbW92ZSA9IChlOiBCdXR0b25FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25SZW1vdmVkKHRoaXMucHJvcHMubGFuZ3VhZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0V4aXN0aW5nU3BlbGxDaGVja0xhbmd1YWdlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfRXhpc3RpbmdTcGVsbENoZWNrTGFuZ3VhZ2VfbGFuZ3VhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMubGFiZWwgPz8gdGhpcy5wcm9wcy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17dGhpcy5vblJlbW92ZX0ga2luZD1cImRhbmdlcl9zbVwiPlxuICAgICAgICAgICAgICAgICAgICB7X3QoXCJhY3Rpb258cmVtb3ZlXCIpfVxuICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3BlbGxDaGVja0xhbmd1YWdlcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxTcGVsbENoZWNrTGFuZ3VhZ2VzSVByb3BzLCBTcGVsbENoZWNrTGFuZ3VhZ2VzSVN0YXRlPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBTcGVsbENoZWNrTGFuZ3VhZ2VzSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG5ld0xhbmd1YWdlOiBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgb25SZW1vdmVkID0gKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gdGhpcy5wcm9wcy5sYW5ndWFnZXMuZmlsdGVyKChlKSA9PiBlICE9PSBsYW5ndWFnZSk7XG4gICAgICAgIHRoaXMucHJvcHMub25MYW5ndWFnZXNDaGFuZ2UobGFuZ3VhZ2VzKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkFkZENsaWNrID0gKGU6IEJ1dHRvbkV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuc3RhdGUubmV3TGFuZ3VhZ2U7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBuZXdMYW5ndWFnZTogXCJcIiB9KTtcblxuICAgICAgICBpZiAoIWxhbmd1YWdlKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmxhbmd1YWdlcy5pbmNsdWRlcyhsYW5ndWFnZSkpIHJldHVybjtcblxuICAgICAgICB0aGlzLnByb3BzLmxhbmd1YWdlcy5wdXNoKGxhbmd1YWdlKTtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkxhbmd1YWdlc0NoYW5nZSh0aGlzLnByb3BzLmxhbmd1YWdlcyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25OZXdMYW5ndWFnZUNoYW5nZSA9IChsYW5ndWFnZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLm5ld0xhbmd1YWdlID09PSBsYW5ndWFnZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbmV3TGFuZ3VhZ2U6IGxhbmd1YWdlIH0pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IGludGwgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoW2dldFVzZXJMYW5ndWFnZSgpXSwgeyB0eXBlOiBcImxhbmd1YWdlXCIsIHN0eWxlOiBcInNob3J0XCIgfSk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nU3BlbGxDaGVja0xhbmd1YWdlcyA9IHRoaXMucHJvcHMubGFuZ3VhZ2VzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxFeGlzdGluZ1NwZWxsQ2hlY2tMYW5ndWFnZSBsYW5ndWFnZT17ZX0gbGFiZWw9e2ludGwub2YoZSl9IG9uUmVtb3ZlZD17dGhpcy5vblJlbW92ZWR9IGtleT17ZX0gLz47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFkZEJ1dHRvbiA9IChcbiAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIG9uQ2xpY2s9e3RoaXMub25BZGRDbGlja30ga2luZD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICB7X3QoXCJhY3Rpb258YWRkXCIpfVxuICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIHtleGlzdGluZ1NwZWxsQ2hlY2tMYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMub25BZGRDbGlja30gbm9WYWxpZGF0ZT17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgICAgIDxTcGVsbENoZWNrTGFuZ3VhZ2VzRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0dlbmVyYWxVc2VyU2V0dGluZ3NUYWJfc3BlbGxDaGVja0xhbmd1YWdlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUubmV3TGFuZ3VhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk9wdGlvbkNoYW5nZT17dGhpcy5vbk5ld0xhbmd1YWdlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7YWRkQnV0dG9ufVxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyw0QkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUEwQk8sTUFBTUksMEJBQTBCLFNBQVNDLGNBQUssQ0FBQ0MsU0FBUyxDQUFtQztFQUFBQyxZQUFBLEdBQUFDLElBQUE7SUFBQSxTQUFBQSxJQUFBO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSxvQkFDMUVDLENBQWMsSUFBVztNQUN6Q0EsQ0FBQyxDQUFDQyxlQUFlLENBQUMsQ0FBQztNQUNuQkQsQ0FBQyxDQUFDRSxjQUFjLENBQUMsQ0FBQztNQUVsQixPQUFPLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDRCxLQUFLLENBQUNFLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0VBQUE7RUFFTUMsTUFBTUEsQ0FBQSxFQUFvQjtJQUM3QixvQkFDSW5CLE1BQUEsQ0FBQVksT0FBQSxDQUFBUSxhQUFBO01BQUtDLFNBQVMsRUFBQztJQUErQixnQkFDMUNyQixNQUFBLENBQUFZLE9BQUEsQ0FBQVEsYUFBQTtNQUFNQyxTQUFTLEVBQUM7SUFBd0MsR0FDbkQsSUFB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