tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
210 lines (176 loc) • 19.9 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 _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
var _styles = require("@material-ui/core/styles");
var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
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 actionsEnabled = _ref.actionsEnabled,
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: !actionsEnabled,
onClick: onPrimaryClick
}, primaryLabel);
var secondaryButton = /*#__PURE__*/_react["default"].createElement("button", {
className: "btn-second",
disabled: !actionsEnabled,
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,
actionsEnabled = _this$props.actionsEnabled,
title = _this$props.title,
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,
classes = _this$props.classes;
var dialogActions = actions ? actions : makeDialogActions({
actionsEnabled: actionsEnabled,
primaryLabel: primaryLabel,
secondaryLabel: secondaryLabel,
onPrimaryClick: onSubmit,
onSecondaryClick: onClose
});
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
open: open,
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, actionsEnabled ? /*#__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,
secondaryLabel: _propTypes["default"].any,
primaryLabel: _propTypes["default"].any,
actionsEnabled: _propTypes["default"].bool,
open: _propTypes["default"].bool,
onClose: _propTypes["default"].func,
onSubmit: _propTypes["default"].func,
children: _propTypes["default"].any,
classes: _propTypes["default"].object
};
BaseDialog.defaultProps = {
actionsEnabled: true,
modal: false
};
var _default = (0, _styles.withStyles)(styles)(BaseDialog);
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WZXJzZUVkaXRvci9CYXNlRGlhbG9nLmpzIl0sIm5hbWVzIjpbIlBhcGVyQ29tcG9uZW50IiwicHJvcHMiLCJtYWtlRGlhbG9nQWN0aW9ucyIsImFjdGlvbnNFbmFibGVkIiwicHJpbWFyeUxhYmVsIiwic2Vjb25kYXJ5TGFiZWwiLCJvblByaW1hcnlDbGljayIsIm9uU2Vjb25kYXJ5Q2xpY2siLCJoYXNQcmltYXJ5TGFiZWwiLCJCb29sZWFuIiwiaGFzU2Vjb25kYXJ5TGFiZWwiLCJoYXNQcmltYXJ5Q2FsbGJhY2siLCJoYXNTZWNvbmRhcnlDYWxsYmFjayIsImFjdGlvbnMiLCJwcmltYXJ5QnV0dG9uIiwic2Vjb25kYXJ5QnV0dG9uIiwicHVzaCIsInN0eWxlcyIsImFjdGlvblJvb3QiLCJwYWRkaW5nIiwicGFwZXJSb290IiwibWFyZ2luIiwiQmFzZURpYWxvZyIsImVycm9yIiwiaW5mbyIsImNvbnNvbGUiLCJ3YXJuIiwidGl0bGUiLCJvbkNsb3NlIiwib25TdWJtaXQiLCJvcGVuIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiZGlhbG9nQWN0aW9ucyIsImNsYXNzTmFtZSIsImNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsIndpZHRoIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwiY3Vyc29yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJtb2RhbCIsIlByb3BUeXBlcyIsImJvb2wiLCJhcnJheSIsImFueSIsImZ1bmMiLCJvYmplY3QiLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxTQUFTQSxjQUFULENBQXdCQyxLQUF4QixFQUErQjtBQUM3QjtBQUNBLHNCQUNFLGdDQUFDLDBCQUFEO0FBQVcsSUFBQSxNQUFNLEVBQUM7QUFBbEIsa0JBQ0UsZ0NBQUMsaUJB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SztBQVFyQm5CLEVBQUFBLE9BQU8sRUFBRWtCLHNCQUFVSSxJQVJFO0FBU3JCckIsRUFBQUEsUUFBUSxFQUFFaUIsc0JBQVVJLElBVEM7QUFVckJuQixFQUFBQSxRQUFRLEVBQUVlLHNCQUFVRyxHQVZDO0FBV3JCakIsRUFBQUEsT0FBTyxFQUFFYyxzQkFBVUs7QUFYRSxDQUF2QjtBQWNBN0IsVUFBVSxDQUFDOEIsWUFBWCxHQUEwQjtBQUN4QmpELEVBQUFBLGNBQWMsRUFBRSxJQURRO0FBRXhCMEMsRUFBQUEsS0FBSyxFQUFFO0FBRmlCLENBQTFCOztlQUtlLHdCQUFXNUIsTUFBWCxFQUFtQkssVUFBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IERpYWxvZyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9EaWFsb2cnO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ1RpdGxlJztcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0FjdGlvbnMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvUGFwZXInO1xuaW1wb3J0IERyYWdnYWJsZSBmcm9tICdyZWFjdC1kcmFnZ2FibGUnO1xuXG5mdW5jdGlvbiBQYXBlckNvbXBvbmVudChwcm9wcykge1xuICAvLyBjb21wb25lbnQgd2lsbCBvbmx5IGJlIGRyYWdnYWJsZSBieSBlbGVtZW50IHdpdGggdGhlIGNsYXNzTmFtZSBpbiB0aGUgaGFuZGxlIHByb3BcbiAgcmV0dXJuIChcbiAgICA8RHJhZ2dhYmxlIGhhbmRsZT1cIi5CYXNlRGlhbG9nLWRyYWdnYWJsZS1oYW5kbGVcIj5cbiAgICAgIDxQYXBlciB7Li4ucHJvcHN9IGVsZXZhdGlvbj17Mn0gLz5cbiAgICA8L0RyYWdnYWJsZT5cbiAgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGRpYWxvZyBhY3Rpb25zXG4gKiBAcGFyYW0ge2Jvb2x9IGFjdGlvbnNFbmFibGVkIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGFjdGlvbiBidXR0b25zXG4gKiBAcGFyYW0geyp9IHByaW1hcnlMYWJlbCB0aGUgdGl0bGUgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0geyp9IHNlY29uZGFyeUxhYmVsIHRoZSB0aXRsZSBvZiB0aGUgc2Vjb25kYXJ5IGJ1dHRvblxuICogQHBhcmFtIHtmdW5jfSBvblByaW1hcnlDbGljayB0aGUgY2xpY2sgY2FsbGJhY2sgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0ge2Z1bmN9IG9uU2Vjb25kYXJ5Q2xpY2sgdGhlIGNsaWNrIGNhbGxiYWNrIG9mIHRoZSBzZWNvbmRhcnkgYnV0dG9uXG4gKiBAcmV0dXJuIHsqfVxuICovXG5jb25zdCBtYWtlRGlhbG9nQWN0aW9ucyA9ICh7XG4gIGFjdGlvbnNFbmFibGVkLCBwcmltYXJ5TGFiZWwsIHNlY29uZGFyeUxhYmVsLCBvblByaW1hcnlDbGljaywgb25TZWNvbmRhcnlDbGljayxcbn0pID0+IHtcbiAgY29uc3QgaGFzUHJpbWFyeUxhYmVsID0gQm9vbGVhbihwcmltYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNTZWNvbmRhcnlMYWJlbCA9IEJvb2xlYW4oc2Vjb25kYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNQcmltYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uUHJpbWFyeUNsaWNrKTtcbiAgY29uc3QgaGFzU2Vjb25kYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uU2Vjb25kYXJ5Q2xpY2spO1xuICBjb25zdCBhY3Rpb25zID0gW107XG5cbiAgY29uc3QgcHJpbWFyeUJ1dHRvbiA9IChcbiAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltZVwiXG4gICAgICBkaXNhYmxlZD17IWFjdGlvbnNFbmFibGVkfVxuICAgICAgb25DbGljaz17b25QcmltYXJ5Q2xpY2t9PlxuICAgICAge3ByaW1hcnlMYWJlbH1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbiAgY29uc3Qgc2Vjb25kYXJ5QnV0dG9uID0gKFxuICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuLXNlY29uZFwiXG4gICAgICBkaXNhYmxlZD17IWFjdGlvbnNFbmFibGVkfVxuICAgICAgb25DbGljaz17b25TZWNvbmRhcnlDbGlja30+XG4gICAgICB7c2Vjb25kYXJ5TGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG5cbiAgaWYgKGhhc1NlY29uZGFyeUxhYmVsICYmIGhhc1NlY29uZGFyeUNhbGxiYWNrKSB7XG4gICAgYWN0aW9ucy5wdXNoKHNlY29uZGFyeUJ1dHRvbik7XG4gIH1cblxuICBpZiAoaGFzUHJpbWFyeUxhYmVsICYmIGhhc1ByaW1hcnlDYWxsYmFjaykge1xuICAgIGFjdGlvbnMucHVzaChwcmltYXJ5QnV0dG9uKTtcbiAgfVxuICByZXR1cm4gYWN0aW9ucztcbn07XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYWN0aW9uUm9vdDogeyBwYWRkaW5nOiAwIH0sXG4gIHBhcGVyUm9vdDogeyBtYXJnaW46ICcwcHgnIH0sXG59O1xuXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgZGlhbG9nLlxuICogWW91IGNvdWxkIHVzZSB0aGlzIHRvIGRpc3BsYXkgc2ltcGxlIGluZm9ybWF0aW9uLFxuICogb3IgeW91IGNvdWxkIGNyZWF0ZSBhIG5ldyBjb21wb25lbnQgdGhhdCB3cmFwcyB0aGlzIGNvbXBvbmVudFxuICogd2l0aCBzb21lIGN1c3RvbSBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBjbGFzc1xuICogQHByb3BlcnR5IHtib29sfSBbbW9kYWxdIC0gY29udHJvbHMgd2hldGhlciB0aGlzIGRpYWxvZyBpcyBtb2RhbFxuICogQHByb3BlcnR5IHtPYmplY3RbXX0gW2FjdGlvbnNdIC0gYSBjdXN0b20gbGlzdCBvZiBhY3Rpb25zLiBUaGlzIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZWNvbmRhcnkgYW5kIHByaW1hcnkgYWN0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Kn0gW3RpdGxlXSAtIHRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nXG4gKiBAcHJvcGVydHkgeyp9IFtzZWNvbmRhcnlMYWJlbF0gLSB0aGUgbGFiZWwgb2YgdGhlIHNlY29uZGFyeSBhY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Kn0gW3ByaW1hcnlMYWJlbF0gLSB0aGUgbGFiZWwgb2YgdGhlIHByaW1hcnkgYWN0aW9uXG4gKiBAcHJvcGVydHkge2Jvb2x9IFthY3Rpb25zRW5hYmxlZF0gLSBjb250cm9scyB3aGV0aGVyIHRoZSBhY3Rpb25zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge2Jvb2x9IFtvcGVuXSAtIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBpcyBvcGVuXG4gKiBAcHJvcGVydHkge2Z1bmN9IFtvbkNsb3NlXSAtIGNhbGxiYWNrIHdoZW4gdGhlIHNlY29uZGFyeSBidXR0b24gaXMgdHJpZ2dlcmVkLiBPdmVycmlkZGVuIGJ5IGBhY3Rpb25zYFxuICogQHByb3BlcnR5IHtmdW5jfSBbb25TdWJtaXRdIC0gY2FsbGJhY2sgd2hlbiB0aGUgcHJpbWFyeSBidXR0b24gaXMgdHJpZ2dlcmVkLiBPdmVycmlkZGVuIGJ5IGBhY3Rpb25zYFxuICovXG5jbGFzcyBCYXNlRGlhbG9nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGluZm8pIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICBjb25zb2xlLndhcm4oaW5mbyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYWN0aW9uc0VuYWJsZWQsXG4gICAgICB0aXRsZSxcbiAgICAgIHNlY29uZGFyeUxhYmVsLFxuICAgICAgcHJpbWFyeUxhYmVsLFxuICAgICAgb25DbG9zZSxcbiAgICAgIG9uU3VibWl0LFxuICAgICAgb3BlbixcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIGNsYXNzZXMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsZXQgZGlhbG9nQWN0aW9ucyA9IGFjdGlvbnMgPyBhY3Rpb25zIDogbWFrZURpYWxvZ0FjdGlvbnMoe1xuICAgICAgYWN0aW9uc0VuYWJsZWQsXG4gICAgICBwcmltYXJ5TGFiZWwsXG4gICAgICBzZWNvbmRhcnlMYWJlbCxcbiAgICAgIG9uUHJpbWFyeUNsaWNrOiBvblN1Ym1pdCxcbiAgICAgIG9uU2Vjb25kYXJ5Q2xpY2s6IG9uQ2xvc2UsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1xuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBmdWxsV2lkdGg9e3RydWV9XG4gICAgICAgIFBhcGVyQ29tcG9uZW50PXtQYXBlckNvbXBvbmVudH1cbiAgICAgICAgUGFwZXJQcm9wcz17eyBjbGFzc05hbWU6IGNsYXNzZXMucGFwZXJSb290IH19XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT17YGRyYWdnYWJsZS0ke3RpdGxlfS1kaWFsb2dgfVxuICAgICAgPlxuICAgICAgICA8RGlhbG9nVGl0bGVcbiAgICAgICAgICBkaXNhYmxlVHlwb2dyYXBoeT17dHJ1ZX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJCYXNlRGlhbG9nLWRyYWdnYWJsZS1oYW5kbGVcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBjb2xvcjogJ3ZhcigtLXJldmVyc2UtY29sb3IpJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWFjY2VudC1jb2xvci1kYXJrKScsXG4gICAgICAgICAgICBwYWRkaW5nOiAnMTVweCcsXG4gICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAyMixcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgIGN1cnNvcjogJ21vdmUnLFxuICAgICAgICAgIH19PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7IGFjdGlvbnNFbmFibGVkID9cbiAgICAgICAgICA8RGlhbG9nQWN0aW9ucyBkaXNhYmxlU3BhY2luZz17dHJ1ZX0+XG4gICAgICAgICAgICB7ZGlhbG9nQWN0aW9uc31cbiAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+IDogJyd9XG4gICAgICA8L0RpYWxvZz5cbiAgICApO1xuICB9XG59XG5cbkJhc2VEaWFsb2cucHJvcFR5cGVzID0ge1xuICBtb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGFjdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgdGl0bGU6IFByb3BUeXBlcy5hbnksXG4gIHNlY29uZGFyeUxhYmVsOiBQcm9wVHlwZXMuYW55LFxuICBwcmltYXJ5TGFiZWw6IFByb3BUeXBlcy5hbnksXG4gIGFjdGlvbnNFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuYW55LFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuQmFzZURpYWxvZy5kZWZhdWx0UHJvcHMgPSB7XG4gIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICBtb2RhbDogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoQmFzZURpYWxvZyk7XG4iXX0=