tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
239 lines (203 loc) • 23.5 kB
JavaScript
"use strict";
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
var _styles = require("@material-ui/core/styles");
var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
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; } }
function PaperComponent(props) {
// component will only be draggable by element with the className in the handle prop
return /*#__PURE__*/_react["default"].createElement(_reactDraggable["default"], {
handle: ".BaseDialog-draggable-handle"
}, /*#__PURE__*/_react["default"].createElement(_Paper["default"], (0, _extends2["default"])({}, props, {
elevation: 2
})));
}
/**
* Generates the dialog actions
* @param {bool} actionsEnabled enables/disables the action buttons
* @param {*} primaryLabel the title of the primary button
* @param {*} secondaryLabel the title of the secondary button
* @param {func} onPrimaryClick the click callback of the primary button
* @param {func} onSecondaryClick the click callback of the secondary button
* @return {*}
*/
var makeDialogActions = function makeDialogActions(_ref) {
var primaryActionEnabled = _ref.primaryActionEnabled,
secondaryActionEnabled = _ref.secondaryActionEnabled,
primaryLabel = _ref.primaryLabel,
secondaryLabel = _ref.secondaryLabel,
onPrimaryClick = _ref.onPrimaryClick,
onSecondaryClick = _ref.onSecondaryClick;
var hasPrimaryLabel = Boolean(primaryLabel);
var hasSecondaryLabel = Boolean(secondaryLabel);
var hasPrimaryCallback = Boolean(onPrimaryClick);
var hasSecondaryCallback = Boolean(onSecondaryClick);
var actions = [];
var primaryButton = /*#__PURE__*/_react["default"].createElement("button", {
className: "btn-prime",
disabled: !primaryActionEnabled,
onClick: onPrimaryClick
}, primaryLabel);
var secondaryButton = /*#__PURE__*/_react["default"].createElement("button", {
className: "btn-second",
disabled: !secondaryActionEnabled,
onClick: onSecondaryClick
}, secondaryLabel);
if (hasSecondaryLabel && hasSecondaryCallback) {
actions.push(secondaryButton);
}
if (hasPrimaryLabel && hasPrimaryCallback) {
actions.push(primaryButton);
}
return actions;
};
var styles = {
actionRoot: {
padding: 0
},
paperRoot: {
margin: '0px'
}
};
/**
* Represents a generic dialog.
* You could use this to display simple information,
* or you could create a new component that wraps this component
* with some custom functionality.
*
* @class
* @property {bool} [modal] - controls whether this dialog is modal
* @property {Object[]} [actions] - a custom list of actions. This overrides the default secondary and primary actions.
* @property {*} [title] - the title of the dialog
* @property {*} [secondaryLabel] - the label of the secondary action
* @property {*} [primaryLabel] - the label of the primary action
* @property {bool} [actionsEnabled] - controls whether the actions are enabled or disabled
* @property {bool} [open] - controls whether the dialog is open
* @property {func} [onClose] - callback when the secondary button is triggered. Overridden by `actions`
* @property {func} [onSubmit] - callback when the primary button is triggered. Overridden by `actions`
*/
var BaseDialog = /*#__PURE__*/function (_React$Component) {
(0, _inherits2["default"])(BaseDialog, _React$Component);
var _super = _createSuper(BaseDialog);
function BaseDialog() {
(0, _classCallCheck2["default"])(this, BaseDialog);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(BaseDialog, [{
key: "componentDidCatch",
value: function componentDidCatch(error, info) {
console.error(error);
console.warn(info);
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
key = _this$props.key,
primaryActionEnabled = _this$props.primaryActionEnabled,
secondaryActionEnabled = _this$props.secondaryActionEnabled,
modal = _this$props.modal,
title = _this$props.title,
bodyStyle = _this$props.bodyStyle,
secondaryLabel = _this$props.secondaryLabel,
primaryLabel = _this$props.primaryLabel,
onClose = _this$props.onClose,
onSubmit = _this$props.onSubmit,
open = _this$props.open,
children = _this$props.children,
actions = _this$props.actions,
scrollableContent = _this$props.scrollableContent,
contentStyle = _this$props.contentStyle,
classes = _this$props.classes;
var dialogActions = actions ? actions : makeDialogActions({
primaryActionEnabled: primaryActionEnabled,
secondaryActionEnabled: secondaryActionEnabled,
primaryLabel: primaryLabel,
secondaryLabel: secondaryLabel,
onPrimaryClick: onSubmit,
onSecondaryClick: onClose
});
var isModal = dialogActions.length !== 0;
if (typeof modal !== 'undefined') {
isModal = modal;
}
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
key: key,
open: open,
modal: isModal,
bodyStyle: bodyStyle,
contentStyle: contentStyle,
autoScrollBodyContent: scrollableContent,
onRequestClose: onClose,
actions: dialogActions,
onClose: onClose,
fullWidth: true,
PaperComponent: PaperComponent,
PaperProps: {
className: classes.paperRoot
},
"aria-labelledby": "draggable-".concat(title, "-dialog")
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], {
disableTypography: true,
className: "BaseDialog-draggable-handle",
style: {
color: 'var(--reverse-color)',
backgroundColor: 'var(--accent-color-dark)',
padding: '15px',
display: 'block',
width: '100%',
fontSize: 22,
fontWeight: 400,
cursor: 'move'
}
}, title), children, /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], {
disableSpacing: true
}, dialogActions));
}
}]);
return BaseDialog;
}(_react["default"].Component);
BaseDialog.propTypes = {
modal: _propTypes["default"].bool,
actions: _propTypes["default"].array,
title: _propTypes["default"].any,
key: _propTypes["default"].any,
secondaryLabel: _propTypes["default"].any,
primaryLabel: _propTypes["default"].any,
primaryActionEnabled: _propTypes["default"].bool,
secondaryActionEnabled: _propTypes["default"].bool,
open: _propTypes["default"].bool,
onClose: _propTypes["default"].func,
onSubmit: _propTypes["default"].func,
scrollableContent: _propTypes["default"].bool,
titleStyle: _propTypes["default"].object,
children: _propTypes["default"].any,
bodyStyle: _propTypes["default"].object,
contentStyle: _propTypes["default"].object,
classes: _propTypes["default"].object
};
BaseDialog.defaultProps = {
primaryActionEnabled: true,
secondaryActionEnabled: true,
titleStyle: {},
modal: false
};
var _default = (0, _styles.withStyles)(styles)(BaseDialog);
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db21tZW50c0RpYWxvZy9CYXNlRGlhbG9nLmpzIl0sIm5hbWVzIjpbIlBhcGVyQ29tcG9uZW50IiwicHJvcHMiLCJtYWtlRGlhbG9nQWN0aW9ucyIsInByaW1hcnlBY3Rpb25FbmFibGVkIiwic2Vjb25kYXJ5QWN0aW9uRW5hYmxlZCIsInByaW1hcnlMYWJlbCIsInNlY29uZGFyeUxhYmVsIiwib25QcmltYXJ5Q2xpY2siLCJvblNlY29uZGFyeUNsaWNrIiwiaGFzUHJpbWFyeUxhYmVsIiwiQm9vbGVhbiIsImhhc1NlY29uZGFyeUxhYmVsIiwiaGFzUHJpbWFyeUNhbGxiYWNrIiwiaGFzU2Vjb25kYXJ5Q2FsbGJhY2siLCJhY3Rpb25zIiwicHJpbWFyeUJ1dHRvbiIsInNlY29uZGFyeUJ1dHRvbiIsInB1c2giLCJzdHlsZXMiLCJhY3Rpb25Sb290IiwicGFkZGluZyIsInBhcGVyUm9vdCIsIm1hcmdpbiIsIkJhc2VEaWFsb2ciLCJlcnJvciIsImluZm8iLCJjb25zb2xlIiwid2FybiIsImtleSIsIm1vZGFsIiwidGl0bGUiLCJib2R5U3R5bGUiLCJvbkNsb3NlIiwib25TdWJtaXQiLCJvcGVuIiwiY2hpbGRyZW4iLCJzY3JvbGxhYmxlQ29udGVudCIsImNvbnRlbnRTdHlsZSIsImNsYXNzZXMiLCJkaWFsb2dBY3Rpb25zIiwiaXNNb2RhbCIsImxlbmd0aCIsImNsYXNzTmFtZSIsImNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsIndpZHRoIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwiY3Vyc29yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwiYXJyYXkiLCJhbnkiLCJmdW5jIiwidGl0bGVTdHlsZSIsIm9iamVjdCIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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QVEsRUFBRWtCLHNCQUFVRyxHQWRDO0FBZXJCekIsRUFBQUEsU0FBUyxFQUFFc0Isc0JBQVVNLE1BZkE7QUFnQnJCdEIsRUFBQUEsWUFBWSxFQUFFZ0Isc0JBQVVNLE1BaEJIO0FBaUJyQnJCLEVBQUFBLE9BQU8sRUFBRWUsc0JBQVVNO0FBakJFLENBQXZCO0FBb0JBcEMsVUFBVSxDQUFDcUMsWUFBWCxHQUEwQjtBQUN4QnpELEVBQUFBLG9CQUFvQixFQUFFLElBREU7QUFFeEJDLEVBQUFBLHNCQUFzQixFQUFFLElBRkE7QUFHeEJzRCxFQUFBQSxVQUFVLEVBQUUsRUFIWTtBQUl4QjdCLEVBQUFBLEtBQUssRUFBRTtBQUppQixDQUExQjs7ZUFPZSx3QkFBV1gsTUFBWCxFQUFtQkssVUFBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IERpYWxvZyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9EaWFsb2cnO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ1RpdGxlJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IFBhcGVyIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1BhcGVyJztcbmltcG9ydCBEcmFnZ2FibGUgZnJvbSAncmVhY3QtZHJhZ2dhYmxlJztcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0FjdGlvbnMnO1xuXG5mdW5jdGlvbiBQYXBlckNvbXBvbmVudChwcm9wcykge1xuICAvLyBjb21wb25lbnQgd2lsbCBvbmx5IGJlIGRyYWdnYWJsZSBieSBlbGVtZW50IHdpdGggdGhlIGNsYXNzTmFtZSBpbiB0aGUgaGFuZGxlIHByb3BcbiAgcmV0dXJuIChcbiAgICA8RHJhZ2dhYmxlIGhhbmRsZT1cIi5CYXNlRGlhbG9nLWRyYWdnYWJsZS1oYW5kbGVcIj5cbiAgICAgIDxQYXBlciB7Li4ucHJvcHN9IGVsZXZhdGlvbj17Mn0gLz5cbiAgICA8L0RyYWdnYWJsZT5cbiAgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGRpYWxvZyBhY3Rpb25zXG4gKiBAcGFyYW0ge2Jvb2x9IGFjdGlvbnNFbmFibGVkIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGFjdGlvbiBidXR0b25zXG4gKiBAcGFyYW0geyp9IHByaW1hcnlMYWJlbCB0aGUgdGl0bGUgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0geyp9IHNlY29uZGFyeUxhYmVsIHRoZSB0aXRsZSBvZiB0aGUgc2Vjb25kYXJ5IGJ1dHRvblxuICogQHBhcmFtIHtmdW5jfSBvblByaW1hcnlDbGljayB0aGUgY2xpY2sgY2FsbGJhY2sgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0ge2Z1bmN9IG9uU2Vjb25kYXJ5Q2xpY2sgdGhlIGNsaWNrIGNhbGxiYWNrIG9mIHRoZSBzZWNvbmRhcnkgYnV0dG9uXG4gKiBAcmV0dXJuIHsqfVxuICovXG5jb25zdCBtYWtlRGlhbG9nQWN0aW9ucyA9ICh7XG4gIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkLFxuICBwcmltYXJ5TGFiZWwsXG4gIHNlY29uZGFyeUxhYmVsLFxuICBvblByaW1hcnlDbGljayxcbiAgb25TZWNvbmRhcnlDbGljayxcbn0pID0+IHtcbiAgY29uc3QgaGFzUHJpbWFyeUxhYmVsID0gQm9vbGVhbihwcmltYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNTZWNvbmRhcnlMYWJlbCA9IEJvb2xlYW4oc2Vjb25kYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNQcmltYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uUHJpbWFyeUNsaWNrKTtcbiAgY29uc3QgaGFzU2Vjb25kYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uU2Vjb25kYXJ5Q2xpY2spO1xuICBjb25zdCBhY3Rpb25zID0gW107XG5cbiAgY29uc3QgcHJpbWFyeUJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWVcIlxuICAgICAgZGlzYWJsZWQ9eyFwcmltYXJ5QWN0aW9uRW5hYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uUHJpbWFyeUNsaWNrfVxuICAgID5cbiAgICAgIHtwcmltYXJ5TGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG4gIGNvbnN0IHNlY29uZGFyeUJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJidG4tc2Vjb25kXCJcbiAgICAgIGRpc2FibGVkPXshc2Vjb25kYXJ5QWN0aW9uRW5hYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uU2Vjb25kYXJ5Q2xpY2t9XG4gICAgPlxuICAgICAge3NlY29uZGFyeUxhYmVsfVxuICAgIDwvYnV0dG9uPlxuICApO1xuXG4gIGlmIChoYXNTZWNvbmRhcnlMYWJlbCAmJiBoYXNTZWNvbmRhcnlDYWxsYmFjaykge1xuICAgIGFjdGlvbnMucHVzaChzZWNvbmRhcnlCdXR0b24pO1xuICB9XG5cbiAgaWYgKGhhc1ByaW1hcnlMYWJlbCAmJiBoYXNQcmltYXJ5Q2FsbGJhY2spIHtcbiAgICBhY3Rpb25zLnB1c2gocHJpbWFyeUJ1dHRvbik7XG4gIH1cbiAgcmV0dXJuIGFjdGlvbnM7XG59O1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGFjdGlvblJvb3Q6IHsgcGFkZGluZzogMCB9LFxuICBwYXBlclJvb3Q6IHsgbWFyZ2luOiAnMHB4JyB9LFxufTtcblxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGRpYWxvZy5cbiAqIFlvdSBjb3VsZCB1c2UgdGhpcyB0byBkaXNwbGF5IHNpbXBsZSBpbmZvcm1hdGlvbixcbiAqIG9yIHlvdSBjb3VsZCBjcmVhdGUgYSBuZXcgY29tcG9uZW50IHRoYXQgd3JhcHMgdGhpcyBjb21wb25lbnRcbiAqIHdpdGggc29tZSBjdXN0b20gZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwcm9wZXJ0eSB7Ym9vbH0gW21vZGFsXSAtIGNvbnRyb2xzIHdoZXRoZXIgdGhpcyBkaWFsb2cgaXMgbW9kYWxcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0W119IFthY3Rpb25zXSAtIGEgY3VzdG9tIGxpc3Qgb2YgYWN0aW9ucy4gVGhpcyBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGFjdGlvbnMuXG4gKiBAcHJvcGVydHkgeyp9IFt0aXRsZV0gLSB0aGUgdGl0bGUgb2YgdGhlIGRpYWxvZ1xuICogQHByb3BlcnR5IHsqfSBbc2Vjb25kYXJ5TGFiZWxdIC0gdGhlIGxhYmVsIG9mIHRoZSBzZWNvbmRhcnkgYWN0aW9uXG4gKiBAcHJvcGVydHkgeyp9IFtwcmltYXJ5TGFiZWxdIC0gdGhlIGxhYmVsIG9mIHRoZSBwcmltYXJ5IGFjdGlvblxuICogQHByb3BlcnR5IHtib29sfSBbYWN0aW9uc0VuYWJsZWRdIC0gY29udHJvbHMgd2hldGhlciB0aGUgYWN0aW9ucyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZFxuICogQHByb3BlcnR5IHtib29sfSBbb3Blbl0gLSBjb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgaXMgb3BlblxuICogQHByb3BlcnR5IHtmdW5jfSBbb25DbG9zZV0gLSBjYWxsYmFjayB3aGVuIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGlzIHRyaWdnZXJlZC4gT3ZlcnJpZGRlbiBieSBgYWN0aW9uc2BcbiAqIEBwcm9wZXJ0eSB7ZnVuY30gW29uU3VibWl0XSAtIGNhbGxiYWNrIHdoZW4gdGhlIHByaW1hcnkgYnV0dG9uIGlzIHRyaWdnZXJlZC4gT3ZlcnJpZGRlbiBieSBgYWN0aW9uc2BcbiAqL1xuY2xhc3MgQmFzZURpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbXBvbmVudERpZENhdGNoKGVycm9yLCBpbmZvKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgY29uc29sZS53YXJuKGluZm8pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICAgICAgc2Vjb25kYXJ5QWN0aW9uRW5hYmxlZCxcbiAgICAgIG1vZGFsLFxuICAgICAgdGl0bGUsXG4gICAgICBib2R5U3R5bGUsXG4gICAgICBzZWNvbmRhcnlMYWJlbCxcbiAgICAgIHByaW1hcnlMYWJlbCxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9wZW4sXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGFjdGlvbnMsXG4gICAgICBzY3JvbGxhYmxlQ29udGVudCxcbiAgICAgIGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzZXMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsZXQgZGlhbG9nQWN0aW9ucyA9IGFjdGlvbnNcbiAgICAgID8gYWN0aW9uc1xuICAgICAgOiBtYWtlRGlhbG9nQWN0aW9ucyh7XG4gICAgICAgIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICAgICAgICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkLFxuICAgICAgICBwcmltYXJ5TGFiZWwsXG4gICAgICAgIHNlY29uZGFyeUxhYmVsLFxuICAgICAgICBvblByaW1hcnlDbGljazogb25TdWJtaXQsXG4gICAgICAgIG9uU2Vjb25kYXJ5Q2xpY2s6IG9uQ2xvc2UsXG4gICAgICB9KTtcblxuICAgIGxldCBpc01vZGFsID0gZGlhbG9nQWN0aW9ucy5sZW5ndGggIT09IDA7XG5cbiAgICBpZiAodHlwZW9mIG1vZGFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaXNNb2RhbCA9IG1vZGFsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RGlhbG9nXG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBtb2RhbD17aXNNb2RhbH1cbiAgICAgICAgYm9keVN0eWxlPXtib2R5U3R5bGV9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBhdXRvU2Nyb2xsQm9keUNvbnRlbnQ9e3Njcm9sbGFibGVDb250ZW50fVxuICAgICAgICBvblJlcXVlc3RDbG9zZT17b25DbG9zZX1cbiAgICAgICAgYWN0aW9ucz17ZGlhbG9nQWN0aW9uc31cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZnVsbFdpZHRoPXt0cnVlfVxuICAgICAgICBQYXBlckNvbXBvbmVudD17UGFwZXJDb21wb25lbnR9XG4gICAgICAgIFBhcGVyUHJvcHM9e3sgY2xhc3NOYW1lOiBjbGFzc2VzLnBhcGVyUm9vdCB9fVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2BkcmFnZ2FibGUtJHt0aXRsZX0tZGlhbG9nYH1cbiAgICAgID5cbiAgICAgICAgPERpYWxvZ1RpdGxlXG4gICAgICAgICAgZGlzYWJsZVR5cG9ncmFwaHk9e3RydWV9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiQmFzZURpYWxvZy1kcmFnZ2FibGUtaGFuZGxlXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1yZXZlcnNlLWNvbG9yKScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3ItZGFyayknLFxuICAgICAgICAgICAgcGFkZGluZzogJzE1cHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBmb250U2l6ZTogMjIsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICAgICAgICBjdXJzb3I6ICdtb3ZlJyxcbiAgICAgICAgICB9fT5cbiAgICAgICAgICB7dGl0bGV9XG4gICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPERpYWxvZ0FjdGlvbnMgZGlzYWJsZVNwYWNpbmc9e3RydWV9PlxuICAgICAgICAgIHtkaWFsb2dBY3Rpb25zfVxuICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICA8L0RpYWxvZz5cbiAgICApO1xuICB9XG59XG5cbkJhc2VEaWFsb2cucHJvcFR5cGVzID0ge1xuICBtb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGFjdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgdGl0bGU6IFByb3BUeXBlcy5hbnksXG4gIGtleTogUHJvcFR5cGVzLmFueSxcbiAgc2Vjb25kYXJ5TGFiZWw6IFByb3BUeXBlcy5hbnksXG4gIHByaW1hcnlMYWJlbDogUHJvcFR5cGVzLmFueSxcbiAgcHJpbWFyeUFjdGlvbkVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMsXG4gIHNjcm9sbGFibGVDb250ZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgdGl0bGVTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIGJvZHlTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgY29udGVudFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuQmFzZURpYWxvZy5kZWZhdWx0UHJvcHMgPSB7XG4gIHByaW1hcnlBY3Rpb25FbmFibGVkOiB0cnVlLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkOiB0cnVlLFxuICB0aXRsZVN0eWxlOiB7fSxcbiAgbW9kYWw6IGZhbHNlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKEJhc2VEaWFsb2cpO1xuIl19