UNPKG

tc-ui-toolkit

Version:

React components used to develop tools for the desktop app translationCore

200 lines (167 loc) 18.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.updateReasons = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _ReasonCheckbox = _interopRequireDefault(require("./ReasonCheckbox")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var updateReasons = function updateReasons(reason, checked, selectedReasons) { var newReasons = (0, _toConsumableArray2["default"])(selectedReasons); if (checked && !newReasons.includes(reason)) { newReasons.push(reason); } else if (!checked && newReasons.includes(reason)) { var index = newReasons.indexOf(reason); newReasons.splice(index, 1); } return newReasons; }; /** * @callback ReasonScreen~onChange * @param {string[]} newReasons - an array of reasons for editing the verse */ /** * Renders checkboxes to indicate the reason for the change * @property {ReasonScreen~onChange} onChange - callback when the selected reasons change * @property {func} translate - the locale function * @property {string[]} selectedReasons - an array of selected reasons */ exports.updateReasons = updateReasons; var ReasonScreen = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(ReasonScreen, _React$Component); var _super = _createSuper(ReasonScreen); function ReasonScreen(props) { var _this; (0, _classCallCheck2["default"])(this, ReasonScreen); _this = _super.call(this, props); _this._handleCheck = _this._handleCheck.bind((0, _assertThisInitialized2["default"])(_this)); return _this; } /** * Checks if a checkbox is selected * @param {string} reason * @param {bool} checked * @return {boolean} * @private */ (0, _createClass2["default"])(ReasonScreen, [{ key: "_handleCheck", value: function _handleCheck(reason, checked) { var _this$props = this.props, selectedReasons = _this$props.selectedReasons, onChange = _this$props.onChange; var newReasons = updateReasons(reason, checked, selectedReasons); onChange(newReasons); } /** * get reasons as an array, so easy to separate into columns * @param {Function} translate * @param {Object} selectedReasons - selections state * @return {*[]} */ }, { key: "getReasons", value: function getReasons(translate, selectedReasons) { var reasons = [/*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "spelling", label: translate('spelling'), key: 'spelling', onCheck: this._handleCheck, selectedReasons: selectedReasons }), /*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "punctuation", label: translate('punctuation'), key: 'punctuation', onCheck: this._handleCheck, selectedReasons: selectedReasons }), /*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "word_choice", label: translate('word_choice'), key: 'word_choice', onCheck: this._handleCheck, selectedReasons: selectedReasons }), /*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "meaning", label: translate('meaning'), key: 'meaning', onCheck: this._handleCheck, selectedReasons: selectedReasons }), /*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "grammar", label: translate('grammar'), key: 'grammar', onCheck: this._handleCheck, selectedReasons: selectedReasons }), /*#__PURE__*/_react["default"].createElement(_ReasonCheckbox["default"], { reason: "other", label: translate('other'), key: 'other', onCheck: this._handleCheck, selectedReasons: selectedReasons })]; return reasons; } /** * formats layout based on number of columns * @param {int} columns * @param {Array} reasons * @return {*} */ }, { key: "getLayout", value: function getLayout(columns, reasons) { var perColumn = reasons.length / columns; var perColumnInt = Math.floor(perColumn); if (perColumnInt !== perColumn) { perColumn = perColumnInt + 1; // if not whole count } if (columns > 1) { return /*#__PURE__*/_react["default"].createElement("div", { className: "reasons-screen" }, Array(columns).fill(0).map(function (value, index) { // for each column var column = reasons.slice(index * perColumn, perColumn); return /*#__PURE__*/_react["default"].createElement("div", { className: "reasons-screen-column" }, column); })); } // else single column return /*#__PURE__*/_react["default"].createElement("div", { className: "reasons-screen-column" }, reasons); } }, { key: "render", value: function render() { var _this$props2 = this.props, translate = _this$props2.translate, selectedReasons = _this$props2.selectedReasons, columns = _this$props2.columns; var reasons = this.getReasons(translate, selectedReasons); return this.getLayout(columns, reasons); } }]); return ReasonScreen; }(_react["default"].Component); ReasonScreen.propTypes = { onChange: _propTypes["default"].func.isRequired, translate: _propTypes["default"].func.isRequired, selectedReasons: _propTypes["default"].arrayOf(_propTypes["default"].string).isRequired, columns: _propTypes["default"].number.isRequired }; ReasonScreen.defaultProps = { columns: 2 }; var _default = ReasonScreen; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WZXJzZUVkaXRvci9SZWFzb25TY3JlZW4uanMiXSwibmFtZXMiOlsidXBkYXRlUmVhc29ucyIsInJlYXNvbiIsImNoZWNrZWQiLCJzZWxlY3RlZFJlYXNvbnMiLCJuZXdSZWFzb25zIiwiaW5jbHVkZXMiLCJwdXNoIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiUmVhc29uU2NyZWVuIiwicHJvcHMiLCJfaGFuZGxlQ2hlY2siLCJiaW5kIiwib25DaGFuZ2UiLCJ0cmFuc2xhdGUiLCJyZWFzb25zIiwiY29sdW1ucyIsInBlckNvbHVtbiIsImxlbmd0aCIsInBlckNvbHVtbkludCIsIk1hdGgiLCJmbG9vciIsIkFycmF5IiwiZmlsbCIsIm1hcCIsInZhbHVlIiwiY29sdW1uIiwic2xpY2UiLCJnZXRSZWFzb25zIiwiZ2V0TGF5b3V0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJzdHJpbmciLCJudW1iZXIiLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVPLElBQU1BLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQ0MsTUFBRCxFQUFTQyxPQUFULEVBQWtCQyxlQUFsQixFQUFzQztBQUNqRSxNQUFJQyxVQUFVLHVDQUNURCxlQURTLENBQWQ7O0FBSUEsTUFBSUQsT0FBTyxJQUFJLENBQUNFLFVBQVUsQ0FBQ0MsUUFBWCxDQUFvQkosTUFBcEIsQ0FBaEIsRUFBNkM7QUFDM0NHLElBQUFBLFVBQVUsQ0FBQ0UsSUFBWCxDQUFnQkwsTUFBaEI7QUFDRCxHQUZELE1BRU8sSUFBSSxDQUFDQyxPQUFELElBQVlFLFVBQVUsQ0FBQ0MsUUFBWCxDQUFvQkosTUFBcEIsQ0FBaEIsRUFBNkM7QUFDbEQsUUFBTU0sS0FBSyxHQUFHSCxVQUFVLENBQUNJLE9BQVgsQ0FB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QixFQUFvQ0YsVUFIOUI7QUFJdkJuQixFQUFBQSxPQUFPLEVBQUVpQixzQkFBVUssTUFBVixDQUFpQkg7QUFKSCxDQUF6QjtBQU9BMUIsWUFBWSxDQUFDOEIsWUFBYixHQUE0QjtBQUFFdkIsRUFBQUEsT0FBTyxFQUFFO0FBQVgsQ0FBNUI7ZUFFZVAsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1rZXkgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYXNvbkNoZWNrYm94IGZyb20gJy4vUmVhc29uQ2hlY2tib3gnO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUmVhc29ucyA9IChyZWFzb24sIGNoZWNrZWQsIHNlbGVjdGVkUmVhc29ucykgPT4ge1xuICBsZXQgbmV3UmVhc29ucyA9IFtcbiAgICAuLi5zZWxlY3RlZFJlYXNvbnMsXG4gIF07XG5cbiAgaWYgKGNoZWNrZWQgJiYgIW5ld1JlYXNvbnMuaW5jbHVkZXMocmVhc29uKSkge1xuICAgIG5ld1JlYXNvbnMucHVzaChyZWFzb24pO1xuICB9IGVsc2UgaWYgKCFjaGVja2VkICYmIG5ld1JlYXNvbnMuaW5jbHVkZXMocmVhc29uKSkge1xuICAgIGNvbnN0IGluZGV4ID0gbmV3UmVhc29ucy5pbmRleE9mKHJlYXNvbik7XG4gICAgbmV3UmVhc29ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG4gIHJldHVybiBuZXdSZWFzb25zO1xufTtcblxuLyoqXG4gKiBAY2FsbGJhY2sgUmVhc29uU2NyZWVufm9uQ2hhbmdlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBuZXdSZWFzb25zIC0gYW4gYXJyYXkgb2YgcmVhc29ucyBmb3IgZWRpdGluZyB0aGUgdmVyc2VcbiAqL1xuXG4vKipcbiAqIFJlbmRlcnMgY2hlY2tib3hlcyB0byBpbmRpY2F0ZSB0aGUgcmVhc29uIGZvciB0aGUgY2hhbmdlXG4gKiBAcHJvcGVydHkge1JlYXNvblNjcmVlbn5vbkNoYW5nZX0gb25DaGFuZ2UgLSBjYWxsYmFjayB3aGVuIHRoZSBzZWxlY3RlZCByZWFzb25zIGNoYW5nZVxuICogQHByb3BlcnR5IHtmdW5jfSB0cmFuc2xhdGUgLSB0aGUgbG9jYWxlIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBzZWxlY3RlZFJlYXNvbnMgLSBhbiBhcnJheSBvZiBzZWxlY3RlZCByZWFzb25zXG4gKi9cbmNsYXNzIFJlYXNvblNjcmVlbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuX2hhbmRsZUNoZWNrID0gdGhpcy5faGFuZGxlQ2hlY2suYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjaGVja2JveCBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uXG4gICAqIEBwYXJhbSB7Ym9vbH0gY2hlY2tlZFxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2hhbmRsZUNoZWNrKHJlYXNvbiwgY2hlY2tlZCkge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRSZWFzb25zLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBuZXdSZWFzb25zID0gdXBkYXRlUmVhc29ucyhyZWFzb24sIGNoZWNrZWQsIHNlbGVjdGVkUmVhc29ucyk7XG4gICAgb25DaGFuZ2UobmV3UmVhc29ucyk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHJlYXNvbnMgYXMgYW4gYXJyYXksIHNvIGVhc3kgdG8gc2VwYXJhdGUgaW50byBjb2x1bW5zXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zbGF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2VsZWN0ZWRSZWFzb25zIC0gc2VsZWN0aW9ucyBzdGF0ZVxuICAgKiBAcmV0dXJuIHsqW119XG4gICAqL1xuICBnZXRSZWFzb25zKHRyYW5zbGF0ZSwgc2VsZWN0ZWRSZWFzb25zKSB7XG4gICAgY29uc3QgcmVhc29ucyA9IFtcbiAgICAgIDxSZWFzb25DaGVja2JveCByZWFzb249XCJzcGVsbGluZ1wiXG4gICAgICAgIGxhYmVsPXt0cmFuc2xhdGUoJ3NwZWxsaW5nJyl9XG4gICAgICAgIGtleT17J3NwZWxsaW5nJ31cbiAgICAgICAgb25DaGVjaz17dGhpcy5faGFuZGxlQ2hlY2t9XG4gICAgICAgIHNlbGVjdGVkUmVhc29ucz17c2VsZWN0ZWRSZWFzb25zfS8+LFxuICAgICAgPFJlYXNvbkNoZWNrYm94IHJlYXNvbj1cInB1bmN0dWF0aW9uXCJcbiAgICAgICAgbGFiZWw9e3RyYW5zbGF0ZSgncHVuY3R1YXRpb24nKX1cbiAgICAgICAga2V5PXsncHVuY3R1YXRpb24nfVxuICAgICAgICBvbkNoZWNrPXt0aGlzLl9oYW5kbGVDaGVja31cbiAgICAgICAgc2VsZWN0ZWRSZWFzb25zPXtzZWxlY3RlZFJlYXNvbnN9Lz4sXG4gICAgICA8UmVhc29uQ2hlY2tib3ggcmVhc29uPVwid29yZF9jaG9pY2VcIlxuICAgICAgICBsYWJlbD17dHJhbnNsYXRlKCd3b3JkX2Nob2ljZScpfVxuICAgICAgICBrZXk9eyd3b3JkX2Nob2ljZSd9XG4gICAgICAgIG9uQ2hlY2s9e3RoaXMuX2hhbmRsZUNoZWNrfVxuICAgICAgICBzZWxlY3RlZFJlYXNvbnM9e3NlbGVjdGVkUmVhc29uc30vPixcbiAgICAgIDxSZWFzb25DaGVja2JveCByZWFzb249XCJtZWFuaW5nXCJcbiAgICAgICAgbGFiZWw9e3RyYW5zbGF0ZSgnbWVhbmluZycpfVxuICAgICAgICBrZXk9eydtZWFuaW5nJ31cbiAgICAgICAgb25DaGVjaz17dGhpcy5faGFuZGxlQ2hlY2t9XG4gICAgICAgIHNlbGVjdGVkUmVhc29ucz17c2VsZWN0ZWRSZWFzb25zfS8+LFxuICAgICAgPFJlYXNvbkNoZWNrYm94IHJlYXNvbj1cImdyYW1tYXJcIlxuICAgICAgICBsYWJlbD17dHJhbnNsYXRlKCdncmFtbWFyJyl9XG4gICAgICAgIGtleT17J2dyYW1tYXInfVxuICAgICAgICBvbkNoZWNrPXt0aGlzLl9oYW5kbGVDaGVja31cbiAgICAgICAgc2VsZWN0ZWRSZWFzb25zPXtzZWxlY3RlZFJlYXNvbnN9Lz4sXG4gICAgICA8UmVhc29uQ2hlY2tib3ggcmVhc29uPVwib3RoZXJcIlxuICAgICAgICBsYWJlbD17dHJhbnNsYXRlKCdvdGhlcicpfVxuICAgICAgICBrZXk9eydvdGhlcid9XG4gICAgICAgIG9uQ2hlY2s9e3RoaXMuX2hhbmRsZUNoZWNrfVxuICAgICAgICBzZWxlY3RlZFJlYXNvbnM9e3NlbGVjdGVkUmVhc29uc30vPixcbiAgICBdO1xuICAgIHJldHVybiByZWFzb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvcm1hdHMgbGF5b3V0IGJhc2VkIG9uIG51bWJlciBvZiBjb2x1bW5zXG4gICAqIEBwYXJhbSB7aW50fSBjb2x1bW5zXG4gICAqIEBwYXJhbSB7QXJyYXl9IHJlYXNvbnNcbiAgICogQHJldHVybiB7Kn1cbiAgICovXG4gIGdldExheW91dChjb2x1bW5zLCByZWFzb25zKSB7XG4gICAgbGV0IHBlckNvbHVtbiA9IHJlYXNvbnMubGVuZ3RoIC8gY29sdW1ucztcbiAgICBjb25zdCBwZXJDb2x1bW5JbnQgPSBNYXRoLmZsb29yKHBlckNvbHVtbik7XG5cbiAgICBpZiAocGVyQ29sdW1uSW50ICE9PSBwZXJDb2x1bW4pIHtcbiAgICAgIHBlckNvbHVtbiA9IHBlckNvbHVtbkludCArIDE7IC8vIGlmIG5vdCB3aG9sZSBjb3VudFxuICAgIH1cblxuICAgIGlmIChjb2x1bW5zID4gMSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3JlYXNvbnMtc2NyZWVuJz5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBBcnJheShjb2x1bW5zKS5maWxsKDApLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7IC8vIGZvciBlYWNoIGNvbHVtblxuICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSByZWFzb25zLnNsaWNlKGluZGV4ICogcGVyQ29sdW1uLCBwZXJDb2x1bW4pO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdyZWFzb25zLXNjcmVlbi1jb2x1bW4nPlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGVsc2Ugc2luZ2xlIGNvbHVtblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0ncmVhc29ucy1zY3JlZW4tY29sdW1uJz5cbiAgICAgICAge3JlYXNvbnN9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHRyYW5zbGF0ZSwgc2VsZWN0ZWRSZWFzb25zLCBjb2x1bW5zLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHJlYXNvbnMgPSB0aGlzLmdldFJlYXNvbnModHJhbnNsYXRlLCBzZWxlY3RlZFJlYXNvbnMpO1xuICAgIHJldHVybiB0aGlzLmdldExheW91dChjb2x1bW5zLCByZWFzb25zKTtcbiAgfVxufVxuXG5SZWFzb25TY3JlZW4ucHJvcFR5cGVzID0ge1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzZWxlY3RlZFJlYXNvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLmlzUmVxdWlyZWQsXG4gIGNvbHVtbnM6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbn07XG5cblJlYXNvblNjcmVlbi5kZWZhdWx0UHJvcHMgPSB7IGNvbHVtbnM6IDIgfTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc29uU2NyZWVuO1xuIl19