UNPKG

tc-ui-toolkit

Version:

React components used to develop tools for the desktop app translationCore

222 lines (182 loc) 23.8 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); 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 _react = _interopRequireWildcard(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _propTypes = _interopRequireDefault(require("prop-types")); require("./ChapterView.styles.css"); var _utils = require("../../helpers/utils"); var _VerseEditor = _interopRequireDefault(require("../../../VerseEditor")); var _verseHelpers = require("../../helpers/verseHelpers"); var _VerseRow = _interopRequireDefault(require("./VerseRow")); 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 ChapterView = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ChapterView, _Component); var _super = _createSuper(ChapterView); function ChapterView() { (0, _classCallCheck2["default"])(this, ChapterView); return _super.apply(this, arguments); } (0, _createClass2["default"])(ChapterView, [{ key: "componentDidMount", value: function componentDidMount() { var _this$props$contextId = this.props.contextId.reference, chapter = _this$props$contextId.chapter, verse = _this$props$contextId.verse; var verseReference = ChapterView.makeRefKey(chapter, verse); var currentVerse = this.verseRefs[verseReference]; var element = _reactDom["default"].findDOMNode(currentVerse); if (element) { element.scrollIntoView(); } } /** * Generates a key to use for verse ref's * @param chapter * @param verse * @return {string} */ }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.verseRefs = {}; } }, { key: "render", value: function render() { var _this = this; var _this$props = this.props, bibles = _this$props.bibles, contextId = _this$props.contextId, translate = _this$props.translate, selections = _this$props.selections, showPopover = _this$props.showPopover, getLexiconData = _this$props.getLexiconData, handleEditorSubmit = _this$props.handleEditorSubmit, handleEditorCancel = _this$props.handleEditorCancel, currentPaneSettings = _this$props.currentPaneSettings, projectDetailsReducer = _this$props.projectDetailsReducer, handleEditTargetVerse = _this$props.handleEditTargetVerse, showTargetUsfm = _this$props.showTargetUsfm; var _contextId$reference = contextId.reference, chapter = _contextId$reference.chapter, verse = _contextId$reference.verse; var languageID = 'en'; var bookID = 'ult'; var bible = (0, _verseHelpers.getBibleElement)(bibles, languageID, bookID); var verseNumbers = Object.keys(bible[chapter]); var projectManifest = projectDetailsReducer.manifest; var targetLanguageFont = projectManifest.projectFont || ''; this.verseRefs = {}; var verseRows = []; if (verseNumbers.length > 0) { var frontIdx = verseNumbers.indexOf('front'); if (frontIdx > 0) { // move front to top of verse list if not there var front = verseNumbers[frontIdx]; verseNumbers.splice(frontIdx); verseNumbers.unshift(front); } var _loop = function _loop(i, len) { var verseNumber = verseNumbers[i]; var _getVerseDataFromBibl = (0, _verseHelpers.getVerseDataFromBible)(bible, chapter, verse), verseLabel = _getVerseDataFromBibl.verseLabel; var refKey = ChapterView.makeRefKey(chapter, verseNumber); verseRows.push( /*#__PURE__*/_react["default"].createElement(_VerseRow["default"], { key: verseNumber.toString(), verse: verseLabel || verse, bibles: bibles, chapter: chapter, translate: translate, contextId: contextId, selections: selections, showPopover: showPopover, getLexiconData: getLexiconData, currentVerseNumber: verseNumber, targetLanguageFont: targetLanguageFont, currentPaneSettings: currentPaneSettings, onEditTargetVerse: handleEditTargetVerse, evenVerse: i % 2 === 0, ref: function ref(node) { return _this.verseRefs[refKey] = node; }, showTargetUsfm: showTargetUsfm })); }; for (var i = 0, len = verseNumbers.length; i < len; i++) { _loop(i, len); } } var editVerse = this.props.editVerse; var openEditor = editVerse !== null; var verseTitle = ''; var verseText = ''; var fontSizePercent = 100; // default font size var direction = projectManifest.target_language && projectManifest.target_language.direction || 'ltr'; if (openEditor) { var bookName = projectManifest.target_language.book.name; if (bookName === null) { console.warn('The localized book name could not be found. This is likely a bug in tC.'); bookName = projectManifest.project.name; } var refStr = (0, _utils.getReferenceStr)(editVerse.chapter, editVerse.verse); verseTitle = (0, _utils.getTitleStr)(bookName, refStr, direction); verseText = editVerse.verseText; var targetConfig = currentPaneSettings.find(function (pane) { return pane.languageId === 'targetLanguage'; }); if (targetConfig) { fontSizePercent = targetConfig.fontSize; } } return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", { className: "verse-row-container" }, verseRows), /*#__PURE__*/_react["default"].createElement(_VerseEditor["default"], { open: openEditor, translate: translate, verseText: verseText, verseTitle: verseTitle, onSubmit: handleEditorSubmit, onCancel: handleEditorCancel, targetLanguageFont: targetLanguageFont, targetLanguageFontSize: "".concat(fontSizePercent, "%"), direction: direction })); } }], [{ key: "makeRefKey", value: function makeRefKey(chapter, verse) { return "c".concat(chapter.toString(), "v").concat(verse.toString()); } }]); return ChapterView; }(_react.Component); ChapterView.propTypes = { contextId: _propTypes["default"].object.isRequired, currentPaneSettings: _propTypes["default"].array.isRequired, editTargetVerse: _propTypes["default"].func.isRequired, projectDetailsReducer: _propTypes["default"].object.isRequired, translate: _propTypes["default"].func.isRequired, bibles: _propTypes["default"].object.isRequired, selections: _propTypes["default"].array.isRequired, getLexiconData: _propTypes["default"].func.isRequired, showPopover: _propTypes["default"].func.isRequired, editVerse: _propTypes["default"].object, handleEditTargetVerse: _propTypes["default"].func.isRequired, handleEditorSubmit: _propTypes["default"].func.isRequired, handleEditorCancel: _propTypes["default"].func.isRequired, showTargetUsfm: _propTypes["default"].bool }; var _default = ChapterView; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9TY3JpcHR1cmVQYW5lL0V4cGFuZGVkU2NyaXB0dXJlUGFuZU1vZGFsL0NoYXB0ZXJWaWV3L2luZGV4LmpzIl0sIm5hbWVzIjpbIkNoYXB0ZXJWaWV3IiwicHJvcHMiLCJjb250ZXh0SWQiLCJyZWZlcmVuY2UiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm1ha2VSZWZLZXkiLCJjdXJyZW50VmVyc2UiLCJ2ZXJzZVJlZnMiLCJlbGVtZW50IiwiUmVhY3RET00iLCJmaW5kRE9NTm9kZSIsInNjcm9sbEludG9WaWV3IiwiYmlibGVzIiwidHJhbnNsYXRlIiwic2VsZWN0aW9ucyIsInNob3dQb3BvdmVyIiwiZ2V0TGV4aWNvbkRhdGEiLCJoYW5kbGVFZGl0b3JTdWJtaXQiLCJoYW5kbGVFZGl0b3JDYW5jZWwiLCJjdXJyZW50UGFuZVNldHRpbmdzIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwiaGFuZGxlRWRpdFRhcmdldFZlcnNlIiwic2hvd1RhcmdldFVzZm0iLCJsYW5ndWFnZUlEIiwiYm9va0lEIiwiYmlibGUiLCJ2ZXJzZU51bWJlcnMiLCJPYmplY3QiLCJrZXlzIiwicHJvamVjdE1hbmlmZXN0IiwibWFuaWZlc3QiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsInZlcnNlUm93cyIsImxlbmd0aCIsImZyb250SWR4IiwiaW5kZXhPZiIsImZyb250Iiwic3BsaWNlIiwidW5zaGlmdCIsImkiLCJsZW4iLCJ2ZXJzZU51bWJlciIsInZlcnNlTGFiZWwiLCJyZWZLZXkiLCJwdXNoIiwidG9TdHJpbmciLCJub2RlIiwiZWRpdFZlcnNlIiwib3BlbkVkaXRvciIsInZlcnNlVGl0bGUiLCJ2ZXJzZVRleHQiLCJmb250U2l6ZVBlcmNlbnQiLCJkaXJlY3Rpb24iLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJib29rTmFtZSIsImJvb2siLCJuYW1lIiwiY29uc29sZSIsIndhcm4iLCJwcm9qZWN0IiwicmVmU3RyIiwidGFyZ2V0Q29uZmlnIiwiZmluZCIsInBhbmUiLCJsYW5ndWFnZUlkIiwiZm9udFNpemUiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiYXJyYXkiLCJlZGl0VGFyZ2V0VmVyc2UiLCJmdW5jIiwiYm9vbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztJQUVNQSxXOzs7Ozs7Ozs7Ozs7d0NBQ2dCO0FBQUEsa0NBQ08sS0FBS0MsS0FBTCxDQUFXQyxTQUFYLENBQXFCQyxTQUQ1QjtBQUFBLFVBQ1pDLE9BRFkseUJBQ1pBLE9BRFk7QUFBQSxVQUNIQyxLQURHLHlCQUNIQSxLQURHO0FBRWxCLFVBQUlDLGNBQWMsR0FBR04sV0FBVyxDQUFDTyxVQUFaLENBQXVCSCxPQUF2QixFQUFnQ0MsS0FBaEMsQ0FBckI7QUFDQSxVQUFJRyxZQUFZLEdBQUcsS0FBS0MsU0FBTCxDQUFlSCxjQUFmLENBQW5COztBQUNBLFVBQUlJLE9BQU8sR0FBR0MscUJBQVNDLFdBQVQsQ0FBcUJKLFlBQXJCLENBQWQ7O0FBRUEsVUFBSUUsT0FBSixFQUFhO0FBQ1hBLFFBQUFBLE9BQU8sQ0FBQ0csY0FBUjtBQUNEO0FBQ0Y7QUFFRDs7Ozs7Ozs7OzJDQVV1QjtBQUNyQixXQUFLSixTQUFMLEdBQWlCLEVBQWpCO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLHdCQWNILEtBQUtSLEtBZEY7QUFBQSxVQUVMYSxNQUZLLGVBRUxBLE1BRks7QUFBQSxVQUdMWixTQUhLLGVBR0xBLFNBSEs7QUFBQSxVQUlMYSxTQUpLLGVBSUxBLFNBSks7QUFBQSxVQUtMQyxVQUxLLGVBS0xBLFVBTEs7QUFBQSxVQU1MQyxXQU5LLGVBTUxBLFdBTks7QUFBQSxVQU9MQyxjQVBLLGVBT0xBLGNBUEs7QUFBQSxVQVFMQyxrQkFSSyxlQVFMQSxrQkFSSztBQUFBLFVBU0xDLGtCQVRL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QUFBLGNBQWMsRUFBRXFELHNCQUFVSyxJQUFWLENBQWVILFVBUlQ7QUFTdEJ4RCxFQUFBQSxXQUFXLEVBQUVzRCxzQkFBVUssSUFBVixDQUFlSCxVQVROO0FBVXRCdkIsRUFBQUEsU0FBUyxFQUFFcUIsc0JBQVVDLE1BVkM7QUFXdEJqRCxFQUFBQSxxQkFBcUIsRUFBRWdELHNCQUFVSyxJQUFWLENBQWVILFVBWGhCO0FBWXRCdEQsRUFBQUEsa0JBQWtCLEVBQUVvRCxzQkFBVUssSUFBVixDQUFlSCxVQVpiO0FBYXRCckQsRUFBQUEsa0JBQWtCLEVBQUVtRCxzQkFBVUssSUFBVixDQUFlSCxVQWJiO0FBY3RCakQsRUFBQUEsY0FBYyxFQUFFK0Msc0JBQVVNO0FBZEosQ0FBeEI7ZUFpQmU3RSxXIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tc3RyaW5nLXJlZnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWZpbmQtZG9tLW5vZGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJldHVybi1hc3NpZ24gKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmltcG9ydCAnLi9DaGFwdGVyVmlldy5zdHlsZXMuY3NzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgZ2V0UmVmZXJlbmNlU3RyLCBnZXRUaXRsZVN0ciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IFZlcnNlRWRpdG9yRGlhbG9nIGZyb20gJy4uLy4uLy4uL1ZlcnNlRWRpdG9yJztcbmltcG9ydCB7IGdldEJpYmxlRWxlbWVudCwgZ2V0VmVyc2VEYXRhRnJvbUJpYmxlIH0gZnJvbSAnLi4vLi4vaGVscGVycy92ZXJzZUhlbHBlcnMnO1xuaW1wb3J0IFZlcnNlUm93IGZyb20gJy4vVmVyc2VSb3cnO1xuXG5jbGFzcyBDaGFwdGVyVmlldyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGxldCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSB0aGlzLnByb3BzLmNvbnRleHRJZC5yZWZlcmVuY2U7XG4gICAgbGV0IHZlcnNlUmVmZXJlbmNlID0gQ2hhcHRlclZpZXcubWFrZVJlZktleShjaGFwdGVyLCB2ZXJzZSk7XG4gICAgbGV0IGN1cnJlbnRWZXJzZSA9IHRoaXMudmVyc2VSZWZzW3ZlcnNlUmVmZXJlbmNlXTtcbiAgICBsZXQgZWxlbWVudCA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKGN1cnJlbnRWZXJzZSk7XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBrZXkgdG8gdXNlIGZvciB2ZXJzZSByZWYnc1xuICAgKiBAcGFyYW0gY2hhcHRlclxuICAgKiBAcGFyYW0gdmVyc2VcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIG1ha2VSZWZLZXkoY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gYGMke2NoYXB0ZXIudG9TdHJpbmcoKX12JHt2ZXJzZS50b1N0cmluZygpfWA7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnZlcnNlUmVmcyA9IHt9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGJpYmxlcyxcbiAgICAgIGNvbnRleHRJZCxcbiAgICAgIHRyYW5zbGF0ZSxcbiAgICAgIHNlbGVjdGlvbnMsXG4gICAgICBzaG93UG9wb3ZlcixcbiAgICAgIGdldExleGljb25EYXRhLFxuICAgICAgaGFuZGxlRWRpdG9yU3VibWl0LFxuICAgICAgaGFuZGxlRWRpdG9yQ2FuY2VsLFxuICAgICAgY3VycmVudFBhbmVTZXR0aW5ncyxcbiAgICAgIHByb2plY3REZXRhaWxzUmVkdWNlcixcbiAgICAgIGhhbmRsZUVkaXRUYXJnZXRWZXJzZSxcbiAgICAgIHNob3dUYXJnZXRVc2ZtLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gY29udGV4dElkLnJlZmVyZW5jZTtcbiAgICBjb25zdCBsYW5ndWFnZUlEID0gJ2VuJztcbiAgICBjb25zdCBib29rSUQgPSAndWx0JztcbiAgICBjb25zdCBiaWJsZSA9IGdldEJpYmxlRWxlbWVudChiaWJsZXMsIGxhbmd1YWdlSUQsIGJvb2tJRCk7XG4gICAgY29uc3QgdmVyc2VOdW1iZXJzID0gT2JqZWN0LmtleXMoYmlibGVbY2hhcHRlcl0pO1xuICAgIGNvbnN0IHsgbWFuaWZlc3Q6IHByb2plY3RNYW5pZmVzdCB9ID0gcHJvamVjdERldGFpbHNSZWR1Y2VyO1xuICAgIGNvbnN0IHRhcmdldExhbmd1YWdlRm9udCA9IHByb2plY3RNYW5pZmVzdC5wcm9qZWN0Rm9udCB8fCAnJztcbiAgICB0aGlzLnZlcnNlUmVmcyA9IHt9O1xuICAgIGxldCB2ZXJzZVJvd3MgPSBbXTtcblxuICAgIGlmICh2ZXJzZU51bWJlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZnJvbnRJZHggPSB2ZXJzZU51bWJlcnMuaW5kZXhPZignZnJvbnQnKTtcblxuICAgICAgaWYgKGZyb250SWR4ID4gMCkgeyAvLyBtb3ZlIGZyb250IHRvIHRvcCBvZiB2ZXJzZSBsaXN0IGlmIG5vdCB0aGVyZVxuICAgICAgICBjb25zdCBmcm9udCA9IHZlcnNlTnVtYmVyc1tmcm9udElkeF07XG4gICAgICAgIHZlcnNlTnVtYmVycy5zcGxpY2UoZnJvbnRJZHgpO1xuICAgICAgICB2ZXJzZU51bWJlcnMudW5zaGlmdChmcm9udCk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB2ZXJzZU51bWJlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgdmVyc2VOdW1iZXIgPSB2ZXJzZU51bWJlcnNbaV07XG4gICAgICAgIGNvbnN0IHsgdmVyc2VMYWJlbCB9ID0gZ2V0VmVyc2VEYXRhRnJvbUJpYmxlKGJpYmxlLCBjaGFwdGVyLCB2ZXJzZSk7XG4gICAgICAgIGNvbnN0IHJlZktleSA9IENoYXB0ZXJWaWV3Lm1ha2VSZWZLZXkoY2hhcHRlciwgdmVyc2VOdW1iZXIpO1xuXG4gICAgICAgIHZlcnNlUm93cy5wdXNoKFxuICAgICAgICAgIDxWZXJzZVJvd1xuICAgICAgICAgICAga2V5PXt2ZXJzZU51bWJlci50b1N0cmluZygpfVxuICAgICAgICAgICAgdmVyc2U9e3ZlcnNlTGFiZWwgfHwgdmVyc2V9XG4gICAgICAgICAgICBiaWJsZXM9e2JpYmxlc31cbiAgICAgICAgICAgIGNoYXB0ZXI9e2NoYXB0ZXJ9XG4gICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgIGNvbnRleHRJZD17Y29udGV4dElkfVxuICAgICAgICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgICAgICAgIHNob3dQb3BvdmVyPXtzaG93UG9wb3Zlcn1cbiAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgICAgIGN1cnJlbnRWZXJzZU51bWJlcj17dmVyc2VOdW1iZXJ9XG4gICAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnQ9e3RhcmdldExhbmd1YWdlRm9udH1cbiAgICAgICAgICAgIGN1cnJlbnRQYW5lU2V0dGluZ3M9e2N1cnJlbnRQYW5lU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkVkaXRUYXJnZXRWZXJzZT17aGFuZGxlRWRpdFRhcmdldFZlcnNlfVxuICAgICAgICAgICAgZXZlblZlcnNlPXtpICUgMiA9PT0gMH1cbiAgICAgICAgICAgIHJlZj17bm9kZSA9PiB0aGlzLnZlcnNlUmVmc1tyZWZLZXldID0gbm9kZX1cbiAgICAgICAgICAgIHNob3dUYXJnZXRVc2ZtPXtzaG93VGFyZ2V0VXNmbX1cbiAgICAgICAgICAvPixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB7IGVkaXRWZXJzZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBvcGVuRWRpdG9yID0gZWRpdFZlcnNlICE9PSBudWxsO1xuICAgIGxldCB2ZXJzZVRpdGxlID0gJyc7XG4gICAgbGV0IHZlcnNlVGV4dCA9ICcnO1xuICAgIGxldCBmb250U2l6ZVBlcmNlbnQgPSAxMDA7IC8vIGRlZmF1bHQgZm9udCBzaXplXG4gICAgY29uc3QgZGlyZWN0aW9uID0gcHJvamVjdE1hbmlmZXN0LnRhcmdldF9sYW5ndWFnZSAmJiBwcm9qZWN0TWFuaWZlc3QudGFyZ2V0X2xhbmd1YWdlLmRpcmVjdGlvbiB8fCAnbHRyJztcblxuICAgIGlmIChvcGVuRWRpdG9yKSB7XG4gICAgICBsZXQgYm9va05hbWUgPSBwcm9qZWN0TWFuaWZlc3QudGFyZ2V0X2xhbmd1YWdlLmJvb2submFtZTtcblxuICAgICAgaWYgKGJvb2tOYW1lID09PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIGxvY2FsaXplZCBib29rIG5hbWUgY291bGQgbm90IGJlIGZvdW5kLiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiB0Qy4nKTtcbiAgICAgICAgYm9va05hbWUgPSBwcm9qZWN0TWFuaWZlc3QucHJvamVjdC5uYW1lO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWZTdHIgPSBnZXRSZWZlcmVuY2VTdHIoZWRpdFZlcnNlLmNoYXB0ZXIsIGVkaXRWZXJzZS52ZXJzZSk7XG4gICAgICB2ZXJzZVRpdGxlID0gZ2V0VGl0bGVTdHIoYm9va05hbWUsIHJlZlN0ciwgZGlyZWN0aW9uKTtcbiAgICAgIHZlcnNlVGV4dCA9IGVkaXRWZXJzZS52ZXJzZVRleHQ7XG4gICAgICBjb25zdCB0YXJnZXRDb25maWcgPSBjdXJyZW50UGFuZVNldHRpbmdzLmZpbmQocGFuZSA9PiAocGFuZS5sYW5ndWFnZUlkID09PSAndGFyZ2V0TGFuZ3VhZ2UnKSk7XG5cbiAgICAgIGlmICh0YXJnZXRDb25maWcpIHtcbiAgICAgICAgZm9udFNpemVQZXJjZW50ID0gdGFyZ2V0Q29uZmlnLmZvbnRTaXplO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInZlcnNlLXJvdy1jb250YWluZXJcIj5cbiAgICAgICAgICB7dmVyc2VSb3dzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPFZlcnNlRWRpdG9yRGlhbG9nXG4gICAgICAgICAgb3Blbj17b3BlbkVkaXRvcn1cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICB2ZXJzZVRleHQ9e3ZlcnNlVGV4dH1cbiAgICAgICAgICB2ZXJzZVRpdGxlPXt2ZXJzZVRpdGxlfVxuICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVFZGl0b3JTdWJtaXR9XG4gICAgICAgICAgb25DYW5jZWw9e2hhbmRsZUVkaXRvckNhbmNlbH1cbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnQ9e3RhcmdldExhbmd1YWdlRm9udH1cbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnRTaXplPXtgJHtmb250U2l6ZVBlcmNlbnR9JWB9XG4gICAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbkNoYXB0ZXJWaWV3LnByb3BUeXBlcyA9IHtcbiAgY29udGV4dElkOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGN1cnJlbnRQYW5lU2V0dGluZ3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBlZGl0VGFyZ2V0VmVyc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHByb2plY3REZXRhaWxzUmVkdWNlcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGJpYmxlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzZWxlY3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dQb3BvdmVyOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlZGl0VmVyc2U6IFByb3BUeXBlcy5vYmplY3QsXG4gIGhhbmRsZUVkaXRUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaGFuZGxlRWRpdG9yU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBoYW5kbGVFZGl0b3JDYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dUYXJnZXRVc2ZtOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXB0ZXJWaWV3O1xuIl19