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