UNPKG

tc-ui-toolkit

Version:

React components used to develop tools for the desktop app translationCore

210 lines (176 loc) 19.9 kB
"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=