UNPKG

skapps-listbox

Version:

Listbox for SKAPPS apps

218 lines (163 loc) 27.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SkpListbox = void 0; var React = _interopRequireWildcard(require("react")); var _skappsDatatools = require("skapps-datatools"); var _skappsStyles = require("skapps-styles"); var _styles = require("@material-ui/core/styles"); var _deepmerge = _interopRequireDefault(require("deepmerge")); var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl")); var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText")); var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem")); var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel")); var _Select = _interopRequireDefault(require("@material-ui/core/Select")); var _skappsHelpertext = require("skapps-helpertext"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var SkpListbox = /*#__PURE__*/function (_React$Component) { _inherits(SkpListbox, _React$Component); var _super = _createSuper(SkpListbox); function SkpListbox(props) { var _this; _classCallCheck(this, SkpListbox); _this = _super.call(this, props); _defineProperty(_assertThisInitialized(_this), "inputLabel", /*#__PURE__*/React.createRef()); _defineProperty(_assertThisInitialized(_this), "componentDidMount", function () { _this.setState({ labelWidth: _this.inputLabel.current.offsetWidth }); }); _defineProperty(_assertThisInitialized(_this), "listboxStyles", (0, _deepmerge["default"])(SkpListbox.defaultProps.config.styles, _this.props.config.styles)); _defineProperty(_assertThisInitialized(_this), "StyledFormControl", (0, _styles.withStyles)({ root: _this.listboxStyles.formcontrol })(_FormControl["default"])); _defineProperty(_assertThisInitialized(_this), "StyledInputLabel", (0, _styles.withStyles)({ root: _this.listboxStyles.inputlabel })(_InputLabel["default"])); _defineProperty(_assertThisInitialized(_this), "StyledFormHelperText", (0, _styles.withStyles)({ root: _this.listboxStyles.formhelpertext })(_FormHelperText["default"])); _defineProperty(_assertThisInitialized(_this), "StyledSelect", (0, _styles.withStyles)({ root: _this.listboxStyles.select })(_Select["default"])); _defineProperty(_assertThisInitialized(_this), "StyledMenuItem", (0, _styles.withStyles)({ root: _this.listboxStyles.menuitem })(_MenuItem["default"])); _defineProperty(_assertThisInitialized(_this), "handleChange", function (e) { _skappsDatatools.TS.logDebug(_skappsDatatools.E.PAGENAME.SKPLISTBOX, "handleChange").addVarStr("SELECTED LISTBOX VALUE:" + e.target.value).log(); _this.setState({ selectedValue: e.target.value }); }); _this.state = { selectableItems: _this.props.config.fieldProps.enumvalues, selectedValue: _this.props.config.fieldProps.value, labelWidth: 0 }; // log debug message _skappsDatatools.TS.logDebug(_skappsDatatools.E.PAGENAME.SKPLISTBOX, "constructor").addVarStr("SELECTEDVALUE:" + _this.state.selectedValue).log(); return _this; } _createClass(SkpListbox, [{ key: "render", value: function render() { var _this$props$config = this.props.config, fp = _this$props$config.fieldProps, fieldPropsFromDatabase = _this$props$config.fieldPropsFromDatabase; _skappsDatatools.TS.logDebug(_skappsDatatools.E.PAGENAME.SKPLISTBOX, "render").addVarStr("SELECTED LISTBOX VALUE:" + this.state.selectedValue).log(); return /*#__PURE__*/React.createElement(this.StyledFormControl, { key: "skplistbox-formcontrol-" + fp.id, margin: "none" }, /*#__PURE__*/React.createElement("div", { style: _skappsStyles.S.DivRowStyle }, /*#__PURE__*/React.createElement(this.StyledInputLabel, { id: "label-" + fp.id, key: "skplistbox-inputlabel-" + fp.id, ref: this.inputLabel, shrink: true, variant: this.props.config.variant, required: fp.required // style={this.props.config.styles.inputlabel} , htmlFor: fp.id }, fieldPropsFromDatabase ? _skappsDatatools.LTS.getDetailLabel(fp) : fp.labelforvalue), /*#__PURE__*/React.createElement(_skappsHelpertext.SkpHelperText, { config: { lblHelperText: fieldPropsFromDatabase ? _skappsDatatools.LTS.getDetailHelperText(fp) : fp.multiflextype, fontSize: _skappsDatatools.C.FONTSIZE.S } })), /*#__PURE__*/React.createElement(this.StyledSelect, { key: "skplistbox-select-" + fp.value, id: "label-" + fp.id, labelWidth: this.state.labelWidth, labelId: fp.id, onChange: this.handleChange, autoWidth: true, variant: this.props.config.variant // style={this.props.config.styles.select} , inputProps: { id: this.state.selectedValue, name: fp.name, value: this.state.selectedValue } }, this.renderSelectOptions())); } }, { key: "renderSelectOptions", value: function renderSelectOptions() { var _this2 = this; if (_skappsDatatools.TS.isEmpty(this.state.selectableItems, _skappsDatatools.D.Enum_FIELDTYPE.ARRAY)) { return null; } return this.state.selectableItems.map(function (ev) { return /*#__PURE__*/React.createElement(_this2.StyledMenuItem, { key: ev.id, value: ev.id }, _this2.props.config.fieldPropsFromDatabase ? _skappsDatatools.LTS.getEnumLabel(_this2.props.config.fieldProps.enumname, ev.id) : ev.label); }); } }]); return SkpListbox; }(React.Component); exports.SkpListbox = SkpListbox; _defineProperty(SkpListbox, "defaultProps", { config: { fieldProps: null, variant: _skappsDatatools.E.MUI_VARIANT.standard, styles: { inputlabel: { fontSize: _skappsDatatools.C.FONTSIZE.M, fontWeight: _skappsDatatools.C.FONTWEIGHT.BOLD }, select: { paddingLeft: _skappsDatatools.C.PADDINGLEFT.TEXTFIELD_INPUT }, menuitem: { //backgroundColor: C.BACKGROUNDCOLOR.TEXTFIELD_INPUTEDITABLE, //new //height: C.HEIGHT.LISTBOX, fontSize: _skappsDatatools.C.FONTSIZE.M }, formcontrol: { minWidth: _skappsDatatools.C.MINWIDTH.TEXTFIELD_FORMCONTROL //marginTop: C.MARGINTOP.ZERO, //marginLeft: C.MARGINLEFT.ZERO, //marginBottom: C.MARGINBOTTOM.TEXTFIELD_FORMCONTROL, //maxWidth: C.MAXWIDTH.FORMCONTROL, } //formhelpertext: { // fontSize: C.FONTSIZE.XS, //}, } } }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta3BMaXN0Ym94LnRzeCJdLCJuYW1lcyI6WyJTa3BMaXN0Ym94IiwicHJvcHMiLCJSZWFjdCIsImNyZWF0ZVJlZiIsInNldFN0YXRlIiwibGFiZWxXaWR0aCIsImlucHV0TGFiZWwiLCJjdXJyZW50Iiwib2Zmc2V0V2lkdGgiLCJkZWZhdWx0UHJvcHMiLCJjb25maWciLCJzdHlsZXMiLCJyb290IiwibGlzdGJveFN0eWxlcyIsImZvcm1jb250cm9sIiwiRm9ybUNvbnRyb2wiLCJpbnB1dGxhYmVsIiwiSW5wdXRMYWJlbCIsImZvcm1oZWxwZXJ0ZXh0IiwiRm9ybUhlbHBlclRleHQiLCJzZWxlY3QiLCJTZWxlY3QiLCJtZW51aXRlbSIsIk1lbnVJdGVtIiwiZSIsIlRTIiwibG9nRGVidWciLCJFIiwiUEFHRU5BTUUiLCJTS1BMSVNUQk9YIiwiYWRkVmFyU3RyIiwidGFyZ2V0IiwidmFsdWUiLCJsb2ciLCJzZWxlY3RlZFZhbHVlIiwic3RhdGUiLCJzZWxlY3RhYmxlSXRlbXMiLCJmaWVsZFByb3BzIiwiZW51bXZhbHVlcyIsImZwIiwiZmllbGRQcm9wc0Zyb21EYXRhYmFzZSIsImlkIiwiUyIsIkRpdlJvd1N0eWxlIiwidmFyaWFudCIsInJlcXVpcmVkIiwiTFRTIiwiZ2V0RGV0YWlsTGFiZWwiLCJsYWJlbGZvcnZhbHVlIiwibGJsSGVscGVyVGV4dCIsImdldERldGFpbEhlbHBlclRleHQiLCJtdWx0aWZsZXh0eXBlIiwiZm9udFNpemUiLCJDIiwiRk9OVFNJWkUiLCJoYW5kbGVDaGFuZ2UiLCJuYW1lIiwicmVuZGVyU2VsZWN0T3B0aW9ucyIsImlzRW1wdHkiLCJEIiwiRW51bV9GSUVMRFRZUEUiLCJBUlJBWSIsIm1hcCIsImV2IiwiZ2V0RW51bUxhYmVsIiwiZW51bW5hbWUiLCJsYWJlbCIsIkNvbXBvbmVudCIsIk1VSV9WQVJJQU5UIiwic3RhbmRhcmQiLCJNIiwiZm9udFdlaWdodCIsIkZPTlRXRUlHSFQiLCJCT0xEIiwicGFkZGluZ0xlZnQiLCJQQURESU5HTEVGVCIsIlRFWFRGSUVMRF9JTlBVVCIsIm1pbldpZHRoIiwiTUlOV0lEVEgiLCJURVhURklFTERfRk9STUNPTlRST0wiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQzs7QUFDRDs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUErQmFBLFU7Ozs7O0FBQ1Qsc0JBQVlDLEtBQVosRUFBa0M7QUFBQTs7QUFBQTs7QUFDOUIsOEJBQU1BLEtBQU47O0FBRDhCLDhFQVVjQyxLQUFLLENBQUNDLFNBQU4sRUFWZDs7QUFBQSx3RUFZZCxZQUFNO0FBQ3RCLFlBQUtDLFFBQUwsQ0FBYztBQUFDQyxRQUFBQSxVQUFVLEVBQUUsTUFBS0MsVUFBTCxDQUFnQkMsT0FBaEIsQ0FBd0JDO0FBQXJDLE9BQWQ7QUFDSCxLQWRpQzs7QUFBQSxvRUFnREgsMkJBQU1SLFVBQVUsQ0FBQ1MsWUFBWCxDQUF3QkMsTUFBeEIsQ0FBK0JDLE1BQXJDLEVBQTZDLE1BQUtWLEtBQUwsQ0FBV1MsTUFBWCxDQUFrQkMsTUFBL0QsQ0FoREc7O0FBQUEsd0VBa0RkLHdCQUFXO0FBQUVDLE1BQUFBLElBQUksRUFBRSxNQUFLQyxhQUFMLENBQW1CQztBQUEzQixLQUFYLEVBQW9EQyx1QkFBcEQsQ0FsRGM7O0FBQUEsdUVBbURmLHdCQUFXO0FBQUVILE1BQUFBLElBQUksRUFBRSxNQUFLQyxhQUFMLENBQW1CRztBQUEzQixLQUFYLEVBQW9EQyxzQkFBcEQsQ0FuRGU7O0FBQUEsMkVBb0RYLHdCQUFXO0FBQUVMLE1BQUFBLElBQUksRUFBRSxNQUFLQyxhQUFMLENBQW1CSztBQUEzQixLQUFYLEVBQXdEQywwQkFBeEQsQ0FwRFc7O0FBQUEsbUVBcURuQix3QkFBVztBQUFFUCxNQUFBQSxJQUFJLEVBQUUsTUFBS0MsYUFBTCxDQUFtQk87QUFBM0IsS0FBWCxFQUFnREMsa0JBQWhELENBckRtQjs7QUFBQSxxRUFzRGpCLHdC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QUNqQ1UsRUFBQUEsTUFBTSxFQUFFO0FBQ0oyQixJQUFBQSxVQUFVLEVBQUUsSUFEUjtBQUVKTyxJQUFBQSxPQUFPLEVBQUVqQixtQkFBRXlDLFdBQUYsQ0FBY0MsUUFGbkI7QUFHSjFELElBQUFBLE1BQU0sRUFBRTtBQUNKSyxNQUFBQSxVQUFVLEVBQUU7QUFDUm9DLFFBQUFBLFFBQVEsRUFBRUMsbUJBQUVDLFFBQUYsQ0FBV2dCLENBRGI7QUFFUkMsUUFBQUEsVUFBVSxFQUFFbEIsbUJBQUVtQixVQUFGLENBQWFDO0FBRmpCLE9BRFI7QUFLSnJELE1BQUFBLE1BQU0sRUFBRTtBQUNKc0QsUUFBQUEsV0FBVyxFQUFFckIsbUJBQUVzQixXQUFGLENBQWNDO0FBRHZCLE9BTEo7QUFRSnRELE1BQUFBLFFBQVEsRUFBRTtBQUNOO0FBQ0E7QUFDQThCLFFBQUFBLFFBQVEsRUFBRUMsbUJBQUVDLFFBQUYsQ0FBV2dCO0FBSGYsT0FSTjtBQWFKeEQsTUFBQUEsV0FBVyxFQUFFO0FBQ1QrRCxRQUFBQSxRQUFRLEVBQUV4QixtQkFBRXlCLFFBQUYsQ0FBV0MscUJBRFosQ0FFVDtBQUNBO0FBQ0E7QUFDQTs7QUFMUyxPQWJULENBb0JKO0FBQ0E7QUFDQTs7QUF0Qkk7QUFISjtBQUR5QixDIiwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFQsIEMsIEQsIEUsIFRTLCBMVFMgfSBmcm9tIFwic2thcHBzLWRhdGF0b29sc1wiO1xyXG5pbXBvcnQgeyBTIH0gZnJvbSBcInNrYXBwcy1zdHlsZXNcIjtcclxuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXNcIjsgXHJcbmltcG9ydCB7IHN0eWxlZCwgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvc3R5bGVzXCI7XHJcbmltcG9ydCBtZXJnZSBmcm9tIFwiZGVlcG1lcmdlXCI7XHJcbmltcG9ydCBGb3JtQ29udHJvbCBmcm9tIFwiQG1hdGVyaWFsLXVpL2NvcmUvRm9ybUNvbnRyb2xcIjtcclxuaW1wb3J0IEZvcm1IZWxwZXJUZXh0IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZS9Gb3JtSGVscGVyVGV4dFwiO1xyXG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcIkBtYXRlcmlhbC11aS9jb3JlL01lbnVJdGVtXCI7XHJcbmltcG9ydCBJbnB1dExhYmVsIGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZS9JbnB1dExhYmVsXCI7XHJcbmltcG9ydCBTZWxlY3QgZnJvbSBcIkBtYXRlcmlhbC11aS9jb3JlL1NlbGVjdFwiO1xyXG5pbXBvcnQgeyBTa3BIZWxwZXJUZXh0IH0gZnJvbSBcInNrYXBwcy1oZWxwZXJ0ZXh0XCI7XHJcblxyXG50eXBlIExpc3Rib3hTdHlsZXMgPSBQYXJ0aWFsPHtcclxuICAgIGlucHV0bGFiZWw6IENTU1Byb3BlcnRpZXM7XHJcbiAgICBmb3JtY29udHJvbDogQ1NTUHJvcGVydGllcztcclxuICAgIGZvcm1oZWxwZXJ0ZXh0OiBDU1NQcm9wZXJ0aWVzO1xyXG4gICAgc2VsZWN0OiBDU1NQcm9wZXJ0aWVzO1xyXG4gICAgbWVudWl0ZW06IENTU1Byb3BlcnRpZXM7XHJcbn0+O1xyXG5cclxuaW50ZXJmYWNlIElQcm9wc0xpc3Rib3gge1xyXG4gICAgY29uZmlnOiBJQ29uZmlnTGlzdGJveDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnTGlzdGJveCB7XHJcbiAgICBmaWVsZFByb3BzOiBELk9iamVjdFByb3BlcnR5O1xyXG4gICAgdmFyaWFudD86IEUuTVVJX1ZBUklBTlQ7IFxyXG4gICAgc3R5bGVzPzogTGlzdGJveFN0eWxlcztcclxuICAgIC8vIGZpZWxkcHJvcHMgY2FuIGRlc2NyaWJlIGEgZGF0YWJhc2UgZmllbGQ6IHRoZW4gdGhleSBhcmUgZmlsbGVkIGJ5IGNhbGxpbmcgVHYuQXBpRGF0YSBtZXRob2RzLlxyXG4gICAgLy8gb3IgdGhleSBjYW4gZGVzY3JpYmUgYSBjbGllbnRzaWRlLW9ubHkgZmllbGQgKGkuZS4gc2VsZWN0Y2FzZSBhbmQgc2VsZWN0ZG9jdHlwZSBmaWVsZCBvbiBcclxuICAgIC8vIHVwbG9hZGRvY3VtZW50KTogdGhlbiBmaWVsZHByb3BzIGFyZSBmaWxsZWQgYnkgaGFuZC4gSW4gbGFzdCBjYXNlIHRoZSBtdWx0aWZsZXh0eXBlIHByb3AgaW4gXHJcbiAgICAvLyBmaWVsZHByb3BzIGNvbnRhaW5zIHRoZSBoZWxwZXJ0ZXh0XHJcbiAgICBmaWVsZFByb3BzRnJvbURhdGFiYXNlPzogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIElTdGF0ZUxpc3Rib3gge1xyXG4gICAgc2VsZWN0YWJsZUl0ZW1zOiBELklkTGFiZWxbXTtcclxuICAgIHNlbGVjdGVkVmFsdWU6IHN0cmluZztcclxuICAgIGxhYmVsV2lkdGg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNrcExpc3Rib3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzTGlzdGJveCwgSVN0YXRlTGlzdGJveD4ge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHM6IElQcm9wc0xpc3Rib3gpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgc2VsZWN0YWJsZUl0ZW1zOiB0aGlzLnByb3BzLmNvbmZpZy5maWVsZFByb3BzLmVudW12YWx1ZXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJvcHMuY29uZmlnLmZpZWxkUHJvcHMudmFsdWUsXHJcbiAgICAgICAgICAgIGxhYmVsV2lkdGg6IDAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxvZyBkZWJ1ZyBtZXNzYWdlXHJcbiAgICAgICAgVFMubG9nRGVidWcoRS5QQUdFTkFNRS5TS1BMSVNUQk9YLCBcImNvbnN0cnVjdG9yXCIpLmFkZFZhclN0cihcIlNFTEVDVEVEVkFMVUU6XCIrdGhpcy5zdGF0ZS5zZWxlY3RlZFZhbHVlKS5sb2coKTtcclxuICAgIH1cclxuICAgIGlucHV0TGFiZWw6IFJlYWN0LlJlZk9iamVjdDxIVE1MTGFiZWxFbGVtZW50PiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MTGFiZWxFbGVtZW50PigpO1xyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xhYmVsV2lkdGg6IHRoaXMuaW5wdXRMYWJlbC5jdXJyZW50Lm9mZnNldFdpZHRofSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IGRlZmF1bHQgcHJvcHNcclxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHM6IElQcm9wc0xpc3Rib3ggPSB7XHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIGZpZWxkUHJvcHM6IG51bGwsXHJcbiAgICAgICAgICAgIHZhcmlhbnQ6IEUuTVVJX1ZBUklBTlQuc3RhbmRhcmQsXHJcbiAgICAgICAgICAgIHN0eWxlczoge1xyXG4gICAgICAgICAgICAgICAgaW5wdXRsYWJlbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBDLkZPTlRTSVpFLk0sXHJcbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogQy5GT05UV0VJR0hULkJPTEQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IEMuUEFERElOR0xFRlQuVEVYVEZJRUxEX0lOUFVULFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1lbnVpdGVtOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9iYWNrZ3JvdW5kQ29sb3I6IEMuQkFDS0dST1VORENPTE9SLlRFWFRGSUVMRF9JTlBVVEVESVRBQkxFLCAvL25ld1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaGVpZ2h0OiBDLkhFSUdIVC5MSVNUQk9YLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBDLkZPTlRTSVpFLk0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZm9ybWNvbnRyb2w6IHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogQy5NSU5XSURUSC5URVhURklFTERfRk9STUNPTlRST0wsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9tYXJnaW5Ub3A6IEMuTUFSR0lOVE9QLlpFUk8sXHJcbiAgICAgICAgICAgICAgICAgICAgLy9tYXJnaW5MZWZ0OiBDLk1BUkdJTkxFRlQuWkVSTyxcclxuICAgICAgICAgICAgICAgICAgICAvL21hcmdpbkJvdHRvbTogQy5NQVJHSU5CT1RUT00uVEVYVEZJRUxEX0ZPUk1DT05UUk9MLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vbWF4V2lkdGg6IEMuTUFYV0lEVEguRk9STUNPTlRST0wsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy9mb3JtaGVscGVydGV4dDoge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgZm9udFNpemU6IEMuRk9OVFNJWkUuWFMsXHJcbiAgICAgICAgICAgICAgICAvL30sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdGJveFN0eWxlczogTGlzdGJveFN0eWxlcyA9IG1lcmdlKFNrcExpc3Rib3guZGVmYXVsdFByb3BzLmNvbmZpZy5zdHlsZXMsIHRoaXMucHJvcHMuY29uZmlnLnN0eWxlcyk7XHJcblxyXG4gICAgU3R5bGVkRm9ybUNvbnRyb2wgPSB3aXRoU3R5bGVzKHsgcm9vdDogdGhpcy5saXN0Ym94U3R5bGVzLmZvcm1jb250cm9sfSkoRm9ybUNvbnRyb2wpO1xyXG4gICAgU3R5bGVkSW5wdXRMYWJlbCA9IHdpdGhTdHlsZXMoeyByb290OiB0aGlzLmxpc3Rib3hTdHlsZXMuaW5wdXRsYWJlbCB9KShJbnB1dExhYmVsKTtcclxuICAgIFN0eWxlZEZvcm1IZWxwZXJUZXh0ID0gd2l0aFN0eWxlcyh7IHJvb3Q6IHRoaXMubGlzdGJveFN0eWxlcy5mb3JtaGVscGVydGV4dCB9KShGb3JtSGVscGVyVGV4dCk7XHJcbiAgICBTdHlsZWRTZWxlY3QgPSB3aXRoU3R5bGVzKHsgcm9vdDogdGhpcy5saXN0Ym94U3R5bGVzLnNlbGVjdCB9KShTZWxlY3QpO1xyXG4gICAgU3R5bGVkTWVudUl0ZW0gPSB3aXRoU3R5bGVzKHsgcm9vdDogdGhpcy5saXN0Ym94U3R5bGVzLm1lbnVpdGVtIH0pKE1lbnVJdGVtKTtcclxuXHJcbiAgICBoYW5kbGVDaGFuZ2UgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgVFMubG9nRGVidWcoRS5QQUdFTkFNRS5TS1BMSVNUQk9YLCBcImhhbmRsZUNoYW5nZVwiKS5hZGRWYXJTdHIoXCJTRUxFQ1RFRCBMSVNUQk9YIFZBTFVFOlwiICsgZS50YXJnZXQudmFsdWUpLmxvZygpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZFZhbHVlOiBlLnRhcmdldC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKTpSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgICAgIGxldCB7ZmllbGRQcm9wczogZnAsIGZpZWxkUHJvcHNGcm9tRGF0YWJhc2V9ID0gdGhpcy5wcm9wcy5jb25maWc7XHJcbiAgICAgICAgVFMubG9nRGVidWcoRS5QQUdFTkFNRS5TS1BMSVNUQk9YLCBcInJlbmRlclwiKVxyXG4gICAgICAgICAgICAuYWRkVmFyU3RyKFwiU0VMRUNURUQgTElTVEJPWCBWQUxVRTpcIiArIHRoaXMuc3RhdGUuc2VsZWN0ZWRWYWx1ZSkubG9nKCk7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPHRoaXMuU3R5bGVkRm9ybUNvbnRyb2wgXHJcbiAgICAgICAgICAgICAgICBrZXk9e1wic2twbGlzdGJveC1mb3JtY29udHJvbC1cIitmcC5pZH1cclxuICAgICAgICAgICAgICAgIG1hcmdpbj1cIm5vbmVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtTLkRpdlJvd1N0eWxlfT5cclxuICAgICAgICAgICAgICAgICAgICA8dGhpcy5TdHlsZWRJbnB1dExhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtcImxhYmVsLVwiICsgZnAuaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17XCJza3BsaXN0Ym94LWlucHV0bGFiZWwtXCIgKyBmcC5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLmlucHV0TGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNocmluaz17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17dGhpcy5wcm9wcy5jb25maWcudmFyaWFudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2ZwLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZT17dGhpcy5wcm9wcy5jb25maWcuc3R5bGVzLmlucHV0bGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9e2ZwLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWVsZFByb3BzRnJvbURhdGFiYXNlP0xUUy5nZXREZXRhaWxMYWJlbChmcCk6ZnAubGFiZWxmb3J2YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RoaXMuU3R5bGVkSW5wdXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8U2twSGVscGVyVGV4dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYmxIZWxwZXJUZXh0OiBmaWVsZFByb3BzRnJvbURhdGFiYXNlP0xUUy5nZXREZXRhaWxIZWxwZXJUZXh0KGZwKTpmcC5tdWx0aWZsZXh0eXBlLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBDLkZPTlRTSVpFLlN9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDx0aGlzLlN0eWxlZFNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgIGtleT17XCJza3BsaXN0Ym94LXNlbGVjdC1cIitmcC52YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICBpZD17XCJsYWJlbC1cIiArIGZwLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsV2lkdGg9e3RoaXMuc3RhdGUubGFiZWxXaWR0aH1cclxuICAgICAgICAgICAgICAgICAgICBsYWJlbElkPXtmcC5pZH1cclxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1dpZHRoPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3RoaXMucHJvcHMuY29uZmlnLnZhcmlhbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3R5bGU9e3RoaXMucHJvcHMuY29uZmlnLnN0eWxlcy5zZWxlY3R9XHJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5zdGF0ZS5zZWxlY3RlZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmcC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zdGF0ZS5zZWxlY3RlZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyU2VsZWN0T3B0aW9ucygpfVxyXG4gICAgICAgICAgICAgICAgPC90aGlzLlN0eWxlZFNlbGVjdD5cclxuICAgICAgICAgICAgICAgIHsvKiA8dGhpcy5TdHlsZWRGb3JtSGVscGVyVGV4dCBcclxuICAgICAgICAgICAgICAgICAgICBrZXk9e1wic2twbGlzdGJveC1oZWxwZXJ0ZXh0LVwiK2ZwLmlkfSBcclxuICAgICAgICAgICAgICAgICAgICAvL3N0eWxlPXt0aGlzLnByb3BzLmNvbmZpZy5zdHlsZXMuZm9ybWhlbHBlcnRleHR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWVsZFByb3BzRnJvbURhdGFiYXNlP0xUUy5nZXREZXRhaWxIZWxwZXJUZXh0KGZwKTpmcC5tdWx0aWZsZXh0eXBlfVxyXG4gICAgICAgICAgICAgICAgPC90aGlzLlN0eWxlZEZvcm1IZWxwZXJUZXh0PiAqL31cclxuICAgICAgICAgICAgPC90aGlzLlN0eWxlZEZvcm1Db250cm9sPlxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJTZWxlY3RPcHRpb25zKCk6UmVhY3QuUmVhY3ROb2RlIHtcclxuICAgICAgICBpZiAoVFMuaXNFbXB0eSh0aGlzLnN0YXRlLnNlbGVjdGFibGVJdGVtcywgRC5FbnVtX0ZJRUxEVFlQRS5BUlJBWSkpe3JldHVybiBudWxsO31cclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RhYmxlSXRlbXMubWFwKChldjogRC5JZExhYmVsKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8dGhpcy5TdHlsZWRNZW51SXRlbSBrZXk9e2V2LmlkfSB2YWx1ZT17ZXYuaWR9PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNvbmZpZy5maWVsZFByb3BzRnJvbURhdGFiYXNlP0xUUy5nZXRFbnVtTGFiZWwodGhpcy5wcm9wcy5jb25maWcuZmllbGRQcm9wcy5lbnVtbmFtZSwgZXYuaWQpOmV2LmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgPC90aGlzLlN0eWxlZE1lbnVJdGVtPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19