tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
222 lines (182 loc) • 23.8 kB
JavaScript
"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