UNPKG

tc-ui-toolkit

Version:

React components used to develop tools for the desktop app translationCore

245 lines (229 loc) 30.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactContainerDimensions = _interopRequireDefault(require("react-container-dimensions")); var _utils = require("../helpers/utils"); var _Verse = _interopRequireDefault(require("../Verse")); var _ThreeDotMenu = _interopRequireDefault(require("../ThreeDotMenu")); require("./Pane.styles.css"); // constants var PANECHAR = 9; /** * create content for title container with selected overall justification * @param {boolean} isLTR - justification to use, if true do LTR * @param {string} headingText * @param {string} localizedDescription * @param {string} fontClass * @param {string} fullTitle * @return {*} */ function getTitleContainerContent(isLTR, headingText, localizedDescription, fontClass, fullTitle) { var styles = { textAlign: isLTR ? 'left' : 'right' }; var paneTitleClassName = fontClass ? "pane-title-text ".concat(fontClass) : 'pane-title-text'; var headingClassName = fullTitle || headingText.length > 21 ? "".concat(paneTitleClassName, " hint--bottom hint--medium") : paneTitleClassName; var paneSubtitleClassName = fontClass ? "pane-subtitle-text hint--bottom hint--medium ".concat(fontClass) : "pane-subtitle-text hint--bottom hint--medium"; return /*#__PURE__*/_react["default"].createElement("div", { className: "pane-title-container-content", style: styles }, /*#__PURE__*/_react["default"].createElement("span", { style: { lineHeight: 1, padding: fontClass.includes('Awami') ? '0px 0px 6px' : '0px' }, className: headingClassName, "aria-label": fullTitle || headingText }, headingText.length > 21 ? headingText.slice(0, 21) + '...' : headingText), /*#__PURE__*/_react["default"].createElement(_reactContainerDimensions["default"], null, function (_ref) { var width = _ref.width; return /*#__PURE__*/_react["default"].createElement("span", { className: paneSubtitleClassName, style: { lineHeight: fontClass && fontClass.includes('Awami') ? 1 : 2, textAlign: isLTR ? 'left' : 'right' }, "aria-label": fullTitle || localizedDescription }, localizedDescription.length > width / PANECHAR ? localizedDescription.slice(0, Math.round(width / PANECHAR)) + '...' : localizedDescription); })); } /** * create title container content with selected justification * @param {boolean} isLTR - justification to use * @param {string} headingText * @param {string} localizedDescription * @param {function} clickToRemoveResourceLabel * @param {number} index * @param {function} removePane * @return {*} */ function TitleContainer(_ref2) { var font = _ref2.font, index = _ref2.index, isLTR = _ref2.isLTR, fontSize = _ref2.fontSize, isHebrew = _ref2.isHebrew, fontClass = _ref2.fontClass, removePane = _ref2.removePane, headingText = _ref2.headingText, isTargetBible = _ref2.isTargetBible, selectFontLabel = _ref2.selectFontLabel, changePaneFontSize = _ref2.changePaneFontSize, changePaneFontType = _ref2.changePaneFontType, complexScriptFonts = _ref2.complexScriptFonts, removeResourceLabel = _ref2.removeResourceLabel, localizedDescription = _ref2.localizedDescription, clickToRemoveResourceLabel = _ref2.clickToRemoveResourceLabel, addObjectPropertyToManifest = _ref2.addObjectPropertyToManifest, fullTitle = _ref2.fullTitle, viewURL = _ref2.viewURL; if (isLTR) { return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, getTitleContainerContent(isLTR, headingText, localizedDescription, fontClass, fullTitle), /*#__PURE__*/_react["default"].createElement(_ThreeDotMenu["default"], { font: font, index: index, isHebrew: isHebrew, fontSize: fontSize, anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, transformOrigin: { vertical: 'top', horizontal: 'left' }, removePane: removePane, isTargetBible: isTargetBible, selectFontLabel: selectFontLabel, complexScriptFonts: complexScriptFonts, changePaneFontSize: changePaneFontSize, changePaneFontType: changePaneFontType, removeResourceLabel: removeResourceLabel, clickToRemoveResourceLabel: clickToRemoveResourceLabel, addObjectPropertyToManifest: addObjectPropertyToManifest, viewURL: viewURL })); } else { // arrange rtl return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_ThreeDotMenu["default"], { font: font, index: index, fontSize: fontSize, isHebrew: isHebrew, removePane: removePane, isTargetBible: isTargetBible, selectFontLabel: selectFontLabel, changePaneFontSize: changePaneFontSize, changePaneFontType: changePaneFontType, complexScriptFonts: complexScriptFonts, removeResourceLabel: removeResourceLabel, clickToRemoveResourceLabel: clickToRemoveResourceLabel, addObjectPropertyToManifest: addObjectPropertyToManifest, viewURL: viewURL }), getTitleContainerContent(isLTR, headingText, localizedDescription, fontClass, fullTitle)); } } var Pane = function Pane(_ref3) { var font = _ref3.font, index = _ref3.index, verse = _ref3.verse, chapter = _ref3.chapter, bibleId = _ref3.bibleId, fontSize = _ref3.fontSize, fontClass = _ref3.fontClass, direction = _ref3.direction, translate = _ref3.translate, removePane = _ref3.removePane, description = _ref3.description, languageName = _ref3.languageName, verseElements = _ref3.verseElements, isTargetBible = _ref3.isTargetBible, selectFontLabel = _ref3.selectFontLabel, changePaneFontSize = _ref3.changePaneFontSize, changePaneFontType = _ref3.changePaneFontType, complexScriptFonts = _ref3.complexScriptFonts, removeResourceLabel = _ref3.removeResourceLabel, clickToRemoveResourceLabel = _ref3.clickToRemoveResourceLabel, addObjectPropertyToManifest = _ref3.addObjectPropertyToManifest, fullTitle = _ref3.fullTitle, preRelease = _ref3.preRelease; var isLTR_ = (0, _utils.isLTR)(direction); var viewURL = bibleId === 'viewURL'; var headingText = bibleId !== 'targetBible' && !viewURL ? (0, _utils.getTitleWithId)(languageName, bibleId, undefined, preRelease) : languageName || ''; var localizedDescription = (0, _utils.getTranslation)(translate, "pane.".concat(description), description); var verseContainerStyle = fontSize ? { fontSize: "".concat(fontSize, "%") } : {}; var isHebrew = bibleId === 'uhb'; return /*#__PURE__*/_react["default"].createElement("div", { className: "pane-container" }, /*#__PURE__*/_react["default"].createElement("div", { className: isLTR_ ? 'pane-title-container-rtl' : 'pane-title-container-ltr' }, /*#__PURE__*/_react["default"].createElement(TitleContainer, { font: font, index: index, isLTR: isLTR_, isHebrew: isHebrew, fontSize: fontSize, fontClass: fontClass, removePane: removePane, headingText: headingText, isTargetBible: isTargetBible, selectFontLabel: selectFontLabel, complexScriptFonts: complexScriptFonts, changePaneFontSize: changePaneFontSize, changePaneFontType: changePaneFontType, removeResourceLabel: removeResourceLabel, localizedDescription: localizedDescription, clickToRemoveResourceLabel: clickToRemoveResourceLabel, addObjectPropertyToManifest: addObjectPropertyToManifest, fullTitle: fullTitle, viewURL: viewURL })), /*#__PURE__*/_react["default"].createElement("div", { className: isLTR_ ? 'verse-content-container-ltr' : 'verse-content-container-rtl', style: verseContainerStyle }, /*#__PURE__*/_react["default"].createElement(_Verse["default"], { verse: verse, bibleId: bibleId, chapter: chapter, translate: translate, direction: direction, fontClass: fontClass, verseElements: verseElements }))); }; Pane.propTypes = { fontSize: _propTypes["default"].number, fontClass: _propTypes["default"].string, font: _propTypes["default"].string.isRequired, index: _propTypes["default"].number.isRequired, verse: _propTypes["default"].oneOfType(_propTypes["default"].number, _propTypes["default"].string).isRequired, bibleId: _propTypes["default"].string.isRequired, chapter: _propTypes["default"].number.isRequired, translate: _propTypes["default"].func.isRequired, removePane: _propTypes["default"].func.isRequired, direction: _propTypes["default"].string.isRequired, isTargetBible: _propTypes["default"].bool.isRequired, description: _propTypes["default"].string.isRequired, languageName: _propTypes["default"].string.isRequired, selectFontLabel: _propTypes["default"].string.isRequired, changePaneFontSize: _propTypes["default"].func.isRequired, changePaneFontType: _propTypes["default"].func.isRequired, complexScriptFonts: _propTypes["default"].object.isRequired, removeResourceLabel: _propTypes["default"].string.isRequired, addObjectPropertyToManifest: _propTypes["default"].func.isRequired, clickToRemoveResourceLabel: _propTypes["default"].string.isRequired, fullTitle: _propTypes["default"].string, verseElements: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string, _propTypes["default"].array]).isRequired, preRelease: _propTypes["default"].string, viewURL: _propTypes["default"].bool }; Pane.defaultProps = { verseElements: [] }; var _default = Pane; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9TY3JpcHR1cmVQYW5lL1BhbmUvaW5kZXguanMiXSwibmFtZXMiOlsiUEFORUNIQVIiLCJnZXRUaXRsZUNvbnRhaW5lckNvbnRlbnQiLCJpc0xUUiIsImhlYWRpbmdUZXh0IiwibG9jYWxpemVkRGVzY3JpcHRpb24iLCJmb250Q2xhc3MiLCJmdWxsVGl0bGUiLCJzdHlsZXMiLCJ0ZXh0QWxpZ24iLCJwYW5lVGl0bGVDbGFzc05hbWUiLCJoZWFkaW5nQ2xhc3NOYW1lIiwibGVuZ3RoIiwicGFuZVN1YnRpdGxlQ2xhc3NOYW1lIiwibGluZUhlaWdodCIsInBhZGRpbmciLCJpbmNsdWRlcyIsInNsaWNlIiwid2lkdGgiLCJNYXRoIiwicm91bmQiLCJUaXRsZUNvbnRhaW5lciIsImZvbnQiLCJpbmRleCIsImZvbnRTaXplIiwiaXNIZWJyZXciLCJyZW1vdmVQYW5lIiwiaXNUYXJnZXRCaWJsZSIsInNlbGVjdEZvbnRMYWJlbCIsImNoYW5nZVBhbmVGb250U2l6ZSIsImNoYW5nZVBhbmVGb250VHlwZSIsImNvbXBsZXhTY3JpcHRGb250cyIsInJlbW92ZVJlc291cmNlTGFiZWwiLCJjbGlja1RvUmVtb3ZlUmVzb3VyY2VMYWJlbCIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsInZpZXdVUkwiLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJQYW5lIiwidmVyc2UiLCJjaGFwdGVyIiwiYmlibGVJZCIsImRpcmVjdGlvbiIsInRyYW5zbGF0ZSIsImRlc2NyaXB0aW9uIiwibGFuZ3VhZ2VOYW1lIiwidmVyc2VFbGVtZW50cyIsInByZVJlbGVhc2UiLCJpc0xUUl8iLCJ1bmRlZmluZWQiLCJ2ZXJzZUNvbnRhaW5lclN0eWxlIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9uZU9mVHlwZSIsImZ1bmMiLCJib29sIiwib2JqZWN0IiwiZWxlbWVudCIsImFycmF5IiwiZGVmYXVsdFBy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LFVBcEI5QjtBQXFCZmhELEVBQUFBLFNBQVMsRUFBRTZDLHNCQUFVRSxNQXJCTjtBQXNCZlIsRUFBQUEsYUFBYSxFQUFFTSxzQkFBVUksU0FBVixDQUFvQixDQUNqQ0osc0JBQVVRLE9BRHVCLEVBRWpDUixzQkFBVUUsTUFGdUIsRUFHakNGLHNCQUFVUyxLQUh1QixDQUFwQixFQUlaTixVQTFCWTtBQTJCZlIsRUFBQUEsVUFBVSxFQUFFSyxzQkFBVUUsTUEzQlA7QUE0QmZuQixFQUFBQSxPQUFPLEVBQUVpQixzQkFBVU07QUE1QkosQ0FBakI7QUErQkFwQixJQUFJLENBQUN3QixZQUFMLEdBQW9CO0FBQUVoQixFQUFBQSxhQUFhLEVBQUU7QUFBakIsQ0FBcEI7ZUFFZVIsSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IENvbnRhaW5lckRpbWVuc2lvbnMgZnJvbSAncmVhY3QtY29udGFpbmVyLWRpbWVuc2lvbnMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0bGVXaXRoSWQsIGdldFRyYW5zbGF0aW9uLCBpc0xUUixcbn0gZnJvbSAnLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgVmVyc2UgZnJvbSAnLi4vVmVyc2UnO1xuaW1wb3J0IFRocmVlRG90TWVudSBmcm9tICcuLi9UaHJlZURvdE1lbnUnO1xuaW1wb3J0ICcuL1BhbmUuc3R5bGVzLmNzcyc7XG4vLyBjb25zdGFudHNcbmNvbnN0IFBBTkVDSEFSID0gOTtcblxuLyoqXG4gKiBjcmVhdGUgY29udGVudCBmb3IgdGl0bGUgY29udGFpbmVyIHdpdGggc2VsZWN0ZWQgb3ZlcmFsbCBqdXN0aWZpY2F0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzTFRSIC0ganVzdGlmaWNhdGlvbiB0byB1c2UsIGlmIHRydWUgZG8gTFRSXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGluZ1RleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGl6ZWREZXNjcmlwdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IGZvbnRDbGFzc1xuICogQHBhcmFtIHtzdHJpbmd9IGZ1bGxUaXRsZVxuICogQHJldHVybiB7Kn1cbiAqL1xuZnVuY3Rpb24gZ2V0VGl0bGVDb250YWluZXJDb250ZW50KGlzTFRSLCBoZWFkaW5nVGV4dCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIGZvbnRDbGFzcywgZnVsbFRpdGxlKSB7XG4gIGNvbnN0IHN0eWxlcyA9IHsgdGV4dEFsaWduOiBpc0xUUiA/ICdsZWZ0JyA6ICdyaWdodCcgfTtcbiAgY29uc3QgcGFuZVRpdGxlQ2xhc3NOYW1lID0gZm9udENsYXNzID8gYHBhbmUtdGl0bGUtdGV4dCAke2ZvbnRDbGFzc31gIDogJ3BhbmUtdGl0bGUtdGV4dCc7XG4gIGNvbnN0IGhlYWRpbmdDbGFzc05hbWUgPSBmdWxsVGl0bGUgfHwgaGVhZGluZ1RleHQubGVuZ3RoID4gMjEgPyBgJHtwYW5lVGl0bGVDbGFzc05hbWV9IGhpbnQtLWJvdHRvbSBoaW50LS1tZWRpdW1gIDogcGFuZVRpdGxlQ2xhc3NOYW1lO1xuICBjb25zdCBwYW5lU3VidGl0bGVDbGFzc05hbWUgPSBmb250Q2xhc3MgPyBgcGFuZS1zdWJ0aXRsZS10ZXh0IGhpbnQtLWJvdHRvbSBoaW50LS1tZWRpdW0gJHtmb250Q2xhc3N9YCA6IGBwYW5lLXN1YnRpdGxlLXRleHQgaGludC0tYm90dG9tIGhpbnQtLW1lZGl1bWA7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmUtdGl0bGUtY29udGFpbmVyLWNvbnRlbnRcIiBzdHlsZT17c3R5bGVzfT5cbiAgICAgIDxzcGFuXG4gICAgICAgIHN0eWxlPXt7IGxpbmVIZWlnaHQ6IDEsIHBhZGRpbmc6IGZvbnRDbGFzcy5pbmNsdWRlcygnQXdhbWknKSA/ICcwcHggMHB4IDZweCcgOiAnMHB4JyB9fVxuICAgICAgICBjbGFzc05hbWU9e2hlYWRpbmdDbGFzc05hbWV9XG4gICAgICAgIGFyaWEtbGFiZWw9e2Z1bGxUaXRsZSB8fCBoZWFkaW5nVGV4dH0+XG4gICAgICAgIHtoZWFkaW5nVGV4dC5sZW5ndGggPiAyMSA/IGhlYWRpbmdUZXh0LnNsaWNlKDAsIDIxKSArICcuLi4nIDogaGVhZGluZ1RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICA8Q29udGFpbmVyRGltZW5zaW9ucz5cbiAgICAgICAge1xuICAgICAgICAgICh7IHdpZHRoIH0pID0+IChcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17cGFuZVN1YnRpdGxlQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICBzdHlsZT17eyBsaW5lSGVpZ2h0OiBmb250Q2xhc3MgJiYgZm9udENsYXNzLmluY2x1ZGVzKCdBd2FtaScpID8gMSA6IDIsIHRleHRBbGlnbjogaXNMVFIgPyAnbGVmdCcgOiAncmlnaHQnIH19XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2Z1bGxUaXRsZSB8fCBsb2NhbGl6ZWREZXNjcmlwdGlvbn0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsb2NhbGl6ZWREZXNjcmlwdGlvbi5sZW5ndGggPiB3aWR0aCAvIFBBTkVDSEFSID9cbiAgICAgICAgICAgICAgICAgIGxvY2FsaXplZERlc2NyaXB0aW9uLnNsaWNlKDAsIE1hdGgucm91bmQod2lkdGggLyBQQU5FQ0hBUikpICsgJy4uLicgOlxuICAgICAgICAgICAgICAgICAgbG9jYWxpemVkRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgPC9Db250YWluZXJEaW1lbnNpb25zPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vKipcbiAqIGNyZWF0ZSB0aXRsZSBjb250YWluZXIgY29udGVudCB3aXRoIHNlbGVjdGVkIGp1c3RpZmljYXRpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMVFIgLSBqdXN0aWZpY2F0aW9uIHRvIHVzZVxuICogQHBhcmFtIHtzdHJpbmd9IGhlYWRpbmdUZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxpemVkRGVzY3JpcHRpb25cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlbW92ZVBhbmVcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIFRpdGxlQ29udGFpbmVyKHtcbiAgZm9udCxcbiAgaW5kZXgsXG4gIGlzTFRSLFxuICBmb250U2l6ZSxcbiAgaXNIZWJyZXcsXG4gIGZvbnRDbGFzcyxcbiAgcmVtb3ZlUGFuZSxcbiAgaGVhZGluZ1RleHQsXG4gIGlzVGFyZ2V0QmlibGUsXG4gIHNlbGVjdEZvbnRMYWJlbCxcbiAgY2hhbmdlUGFuZUZvbnRTaXplLFxuICBjaGFuZ2VQYW5lRm9udFR5cGUsXG4gIGNvbXBsZXhTY3JpcHRGb250cyxcbiAgcmVtb3ZlUmVzb3VyY2VMYWJlbCxcbiAgbG9jYWxpemVkRGVzY3JpcHRpb24sXG4gIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsLFxuICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QsXG4gIGZ1bGxUaXRsZSxcbiAgdmlld1VSTCxcbn0pIHtcbiAgaWYgKGlzTFRSKSB7XG4gICAgcmV0dXJuIDw+XG4gICAgICB7Z2V0VGl0bGVDb250YWluZXJDb250ZW50KGlzTFRSLCBoZWFkaW5nVGV4dCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIGZvbnRDbGFzcywgZnVsbFRpdGxlKX1cbiAgICAgIDxUaHJlZURvdE1lbnVcbiAgICAgICAgZm9udD17Zm9udH1cbiAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICBpc0hlYnJldz17aXNIZWJyZXd9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgYW5jaG9yT3JpZ2luPXt7XG4gICAgICAgICAgdmVydGljYWw6ICdib3R0b20nLFxuICAgICAgICAgIGhvcml6b250YWw6ICdsZWZ0JyxcbiAgICAgICAgfX1cbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luPXt7XG4gICAgICAgICAgdmVydGljYWw6ICd0b3AnLFxuICAgICAgICAgIGhvcml6b250YWw6ICdsZWZ0JyxcbiAgICAgICAgfX1cbiAgICAgICAgcmVtb3ZlUGFuZT17cmVtb3ZlUGFuZX1cbiAgICAgICAgaXNUYXJnZXRCaWJsZT17aXNUYXJnZXRCaWJsZX1cbiAgICAgICAgc2VsZWN0Rm9udExhYmVsPXtzZWxlY3RGb250TGFiZWx9XG4gICAgICAgIGNvbXBsZXhTY3JpcHRGb250cz17Y29tcGxleFNjcmlwdEZvbnRzfVxuICAgICAgICBjaGFuZ2VQYW5lRm9udFNpemU9e2NoYW5nZVBhbmVGb250U2l6ZX1cbiAgICAgICAgY2hhbmdlUGFuZUZvbnRUeXBlPXtjaGFuZ2VQYW5lRm9udFR5cGV9XG4gICAgICAgIHJlbW92ZVJlc291cmNlTGFiZWw9e3JlbW92ZVJlc291cmNlTGFiZWx9XG4gICAgICAgIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsPXtjbGlja1RvUmVtb3ZlUmVzb3VyY2VMYWJlbH1cbiAgICAgICAgYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0PXthZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3R9XG4gICAgICAgIHZpZXdVUkw9e3ZpZXdVUkx9XG4gICAgICAvPlxuICAgIDwvPjtcbiAgfSBlbHNlIHsgLy8gYXJyYW5nZSBydGxcbiAgICByZXR1cm4gPD5cbiAgICAgIDxUaHJlZURvdE1lbnVcbiAgICAgICAgZm9udD17Zm9udH1cbiAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGlzSGVicmV3PXtpc0hlYnJld31cbiAgICAgICAgcmVtb3ZlUGFuZT17cmVtb3ZlUGFuZX1cbiAgICAgICAgaXNUYXJnZXRCaWJsZT17aXNUYXJnZXRCaWJsZX1cbiAgICAgICAgc2VsZWN0Rm9udExhYmVsPXtzZWxlY3RGb250TGFiZWx9XG4gICAgICAgIGNoYW5nZVBhbmVGb250U2l6ZT17Y2hhbmdlUGFuZUZvbnRTaXplfVxuICAgICAgICBjaGFuZ2VQYW5lRm9udFR5cGU9e2NoYW5nZVBhbmVGb250VHlwZX1cbiAgICAgICAgY29tcGxleFNjcmlwdEZvbnRzPXtjb21wbGV4U2NyaXB0Rm9udHN9XG4gICAgICAgIHJlbW92ZVJlc291cmNlTGFiZWw9e3JlbW92ZVJlc291cmNlTGFiZWx9XG4gICAgICAgIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsPXtjbGlja1RvUmVtb3ZlUmVzb3VyY2VMYWJlbH1cbiAgICAgICAgYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0PXthZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3R9XG4gICAgICAgIHZpZXdVUkw9e3ZpZXdVUkx9XG4gICAgICAvPlxuICAgICAge2dldFRpdGxlQ29udGFpbmVyQ29udGVudChpc0xUUiwgaGVhZGluZ1RleHQsIGxvY2FsaXplZERlc2NyaXB0aW9uLCBmb250Q2xhc3MsIGZ1bGxUaXRsZSl9XG4gICAgPC8+O1xuICB9XG59XG5cbmNvbnN0IFBhbmUgPSAoe1xuICBmb250LFxuICBpbmRleCxcbiAgdmVyc2UsXG4gIGNoYXB0ZXIsXG4gIGJpYmxlSWQsXG4gIGZvbnRTaXplLFxuICBmb250Q2xhc3MsXG4gIGRpcmVjdGlvbixcbiAgdHJhbnNsYXRlLFxuICByZW1vdmVQYW5lLFxuICBkZXNjcmlwdGlvbixcbiAgbGFuZ3VhZ2VOYW1lLFxuICB2ZXJzZUVsZW1lbnRzLFxuICBpc1RhcmdldEJpYmxlLFxuICBzZWxlY3RGb250TGFiZWwsXG4gIGNoYW5nZVBhbmVGb250U2l6ZSxcbiAgY2hhbmdlUGFuZUZvbnRUeXBlLFxuICBjb21wbGV4U2NyaXB0Rm9udHMsXG4gIHJlbW92ZVJlc291cmNlTGFiZWwsXG4gIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsLFxuICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QsXG4gIGZ1bGxUaXRsZSxcbiAgcHJlUmVsZWFzZSxcbn0pID0+IHtcbiAgY29uc3QgaXNMVFJfID0gaXNMVFIoZGlyZWN0aW9uKTtcbiAgY29uc3Qgdmlld1VSTCA9IGJpYmxlSWQgPT09ICd2aWV3VVJMJztcbiAgY29uc3QgaGVhZGluZ1RleHQgPSAoYmlibGVJZCAhPT0gJ3RhcmdldEJpYmxlJykgJiYgIXZpZXdVUkwgP1xuICAgIGdldFRpdGxlV2l0aElkKGxhbmd1YWdlTmFtZSwgYmlibGVJZCwgdW5kZWZpbmVkLCBwcmVSZWxlYXNlKVxuICAgIDogKGxhbmd1YWdlTmFtZSB8fCAnJyk7XG4gIGNvbnN0IGxvY2FsaXplZERlc2NyaXB0aW9uID0gZ2V0VHJhbnNsYXRpb24odHJhbnNsYXRlLCBgcGFuZS4ke2Rlc2NyaXB0aW9ufWAsIGRlc2NyaXB0aW9uKTtcbiAgY29uc3QgdmVyc2VDb250YWluZXJTdHlsZSA9IGZvbnRTaXplID8geyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfSA6IHt9O1xuICBjb25zdCBpc0hlYnJldyA9IChiaWJsZUlkID09PSAndWhiJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmUtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17aXNMVFJfID8gJ3BhbmUtdGl0bGUtY29udGFpbmVyLXJ0bCcgOiAncGFuZS10aXRsZS1jb250YWluZXItbHRyJ30+XG4gICAgICAgIDxUaXRsZUNvbnRhaW5lclxuICAgICAgICAgIGZvbnQ9e2ZvbnR9XG4gICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgIGlzTFRSPXtpc0xUUl99XG4gICAgICAgICAgaXNIZWJyZXc9e2lzSGVicmV3fVxuICAgICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgICBmb250Q2xhc3M9e2ZvbnRDbGFzc31cbiAgICAgICAgICByZW1vdmVQYW5lPXtyZW1vdmVQYW5lfVxuICAgICAgICAgIGhlYWRpbmdUZXh0PXtoZWFkaW5nVGV4dH1cbiAgICAgICAgICBpc1RhcmdldEJpYmxlPXtpc1RhcmdldEJpYmxlfVxuICAgICAgICAgIHNlbGVjdEZvbnRMYWJlbD17c2VsZWN0Rm9udExhYmVsfVxuICAgICAgICAgIGNvbXBsZXhTY3JpcHRGb250cz17Y29tcGxleFNjcmlwdEZvbnRzfVxuICAgICAgICAgIGNoYW5nZVBhbmVGb250U2l6ZT17Y2hhbmdlUGFuZUZvbnRTaXplfVxuICAgICAgICAgIGNoYW5nZVBhbmVGb250VHlwZT17Y2hhbmdlUGFuZUZvbnRUeXBlfVxuICAgICAgICAgIHJlbW92ZVJlc291cmNlTGFiZWw9e3JlbW92ZVJlc291cmNlTGFiZWx9XG4gICAgICAgICAgbG9jYWxpemVkRGVzY3JpcHRpb249e2xvY2FsaXplZERlc2NyaXB0aW9ufVxuICAgICAgICAgIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsPXtjbGlja1RvUmVtb3ZlUmVzb3VyY2VMYWJlbH1cbiAgICAgICAgICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q9e2FkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdH1cbiAgICAgICAgICBmdWxsVGl0bGU9e2Z1bGxUaXRsZX1cbiAgICAgICAgICB2aWV3VVJMPXt2aWV3VVJMfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17aXNMVFJfID8gJ3ZlcnNlLWNvbnRlbnQtY29udGFpbmVyLWx0cicgOiAndmVyc2UtY29udGVudC1jb250YWluZXItcnRsJ30gc3R5bGU9e3ZlcnNlQ29udGFpbmVyU3R5bGV9PlxuICAgICAgICA8VmVyc2VcbiAgICAgICAgICB2ZXJzZT17dmVyc2V9XG4gICAgICAgICAgYmlibGVJZD17YmlibGVJZH1cbiAgICAgICAgICBjaGFwdGVyPXtjaGFwdGVyfVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICAgIGZvbnRDbGFzcz17Zm9udENsYXNzfVxuICAgICAgICAgIHZlcnNlRWxlbWVudHM9e3ZlcnNlRWxlbWVudHN9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblBhbmUucHJvcFR5cGVzID0ge1xuICBmb250U2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgZm9udENsYXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFByb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmcpLmlzUmVxdWlyZWQsXG4gIGJpYmxlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY2hhcHRlcjogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHJlbW92ZVBhbmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGRpcmVjdGlvbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpc1RhcmdldEJpYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBkZXNjcmlwdGlvbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYW5ndWFnZU5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc2VsZWN0Rm9udExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNoYW5nZVBhbmVGb250U2l6ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hhbmdlUGFuZUZvbnRUeXBlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjb21wbGV4U2NyaXB0Rm9udHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcmVtb3ZlUmVzb3VyY2VMYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNsaWNrVG9SZW1vdmVSZXNvdXJjZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZ1bGxUaXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmVyc2VFbGVtZW50czogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmVsZW1lbnQsXG4gICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICBQcm9wVHlwZXMuYXJyYXksXG4gIF0pLmlzUmVxdWlyZWQsXG4gIHByZVJlbGVhc2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZpZXdVUkw6IFByb3BUeXBlcy5ib29sLFxufTtcblxuUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlRWxlbWVudHM6IFtdIH07XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmU7XG4iXX0=