focus-components-v3
Version:
Focus web components to build applications (based on Material Design)
170 lines (129 loc) • 16 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _dec, _class; //dependencies
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _i18next = require('i18next');
var _i18next2 = _interopRequireDefault(_i18next);
var _material = require('../behaviours/material');
var _material2 = _interopRequireDefault(_material);
var _inputComponent = require('../behaviours/input-component');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
var MODE = { isEdit: true };
/**
* Component standing for an HTML input.
*/
var InputText = (_dec = (0, _material2.default)('inputText'), _dec(_class = (0, _inputComponent.InputBehaviour)(_class = function (_PureComponent) {
_inherits(InputText, _PureComponent);
function InputText() {
var _temp, _this, _ret;
_classCallCheck(this, InputText);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _PureComponent.call.apply(_PureComponent, [this].concat(args))), _this), _this.getValue = function () {
var domEl = _reactDom2.default.findDOMNode(_this.refs.htmlInput);
return domEl.value;
}, _this._handleonChange = function (evt) {
var onChange = _this.props.onChange;
var value = evt.target.value;
return onChange(value);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
/**
* Get the dom value of the component.
* @return {object} - The unformated dom value.
*/
InputText.prototype.componentDidUpdate = function componentDidUpdate() {
var valid = this.props.valid;
if (valid) {
// Make sure that the main div does not hold a is-invalid class when there's no error
// MDL keeps the class even if React removes it
this.refs.inputText.classList.remove('is-invalid');
}
};
/**
* Handle the change on the input text, it only propagate the value.
* @param {object} evt - The react DOM event.
* @return {object} - The function onChannge from the props, called.
*/
/**
* @inheritdoc
* @override
*/
InputText.prototype.render = function render() {
var managedProps = this._checkProps(this.props);
var validInputProps = managedProps;
var _props = this.props,
name = _props.name,
placeholder = _props.placeholder,
style = _props.style,
rawInputValue = _props.rawInputValue,
validator = _props.metadata.validator,
error = _props.error,
metadata = _props.metadata,
valid = _props.valid;
_objectDestructuringEmpty(this.props);
var _ref = validator || {},
validatorsOptions = _ref.options;
var pattern = valid ? null : 'hasError'; //add pattern to overide mdl error style when displaying an focus error.
var inputProps = _extends({}, validInputProps, { pattern: pattern }, validatorsOptions);
inputProps.value = rawInputValue === undefined || rawInputValue === null ? '' : this.props.formatter(rawInputValue, MODE);
var cssClass = 'mdl-textfield mdl-js-textfield' + (!valid ? ' is-invalid' : '');
return _react2.default.createElement(
'div',
{ className: cssClass, 'data-focus': 'input-text', ref: 'inputText', style: style },
_react2.default.createElement('input', _extends({ className: 'mdl-textfield__input', ref: 'htmlInput' }, inputProps)),
_react2.default.createElement(
'label',
{ className: 'mdl-textfield__label', htmlFor: name },
_i18next2.default.t(placeholder)
),
!valid && _react2.default.createElement(
'span',
{ className: 'mdl-textfield__error' },
_i18next2.default.t(error)
)
);
};
return InputText;
}(_react.PureComponent)) || _class) || _class);
//Static props.
InputText.displayName = 'InputText';
InputText.propTypes = {
disabled: _react.PropTypes.bool,
error: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.bool]),
name: _react.PropTypes.string.isRequired,
onBlur: _react.PropTypes.func,
onChange: _react.PropTypes.func.isRequired,
onKeyPress: _react.PropTypes.func,
metadata: _react.PropTypes.object,
placeholder: _react.PropTypes.string,
formatter: _react.PropTypes.func,
type: _react.PropTypes.string,
rawInputValue: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]),
valid: _react.PropTypes.bool
};
InputText.defaultProps = {
disabled: false,
metadata: {},
error: 'input.text.error.default',
formatter: _identity2.default,
type: 'text',
valid: true
};
exports.default = InputText;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyLUZSLmpzIl0sIm5hbWVzIjpbIk1PREUiLCJpc0VkaXQiLCJJbnB1dFRleHQiLCJnZXRWYWx1ZSIsImRvbUVsIiwiZmluZERPTU5vZGUiLCJyZWZzIiwiaHRtbElucHV0IiwidmFsdWUiLCJfaGFuZGxlb25DaGFuZ2UiLCJldnQiLCJvbkNoYW5nZSIsInByb3BzIiwidGFyZ2V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwidmFsaWQiLCJpbnB1dFRleHQiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJyZW5kZXIiLCJtYW5hZ2VkUHJvcHMiLCJfY2hlY2tQcm9wcyIsInZhbGlkSW5wdXRQcm9wcyIsIm5hbWUiLCJwbGFjZWhvbGRlciIsInN0eWxlIiwicmF3SW5wdXRWYWx1ZSIsInZhbGlkYXRvciIsIm1ldGFkYXRhIiwiZXJyb3IiLCJ2YWxpZGF0b3JzT3B0aW9ucyIsIm9wdGlvbnMiLCJwYXR0ZXJuIiwiaW5wdXRQcm9wcyIsInVuZGVmaW5lZCIsImZvcm1hdHRlciIsImNzc0NsYXNzIiwidCIsImRpc3BsYXlOYW1lIiwicHJvcFR5cGVzIiwiZGlzYWJsZWQiLCJib29sIiwib25lT2ZUeXBlIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9uQmx1ciIsImZ1bmMiLCJvbktleVByZXNzIiwib2JqZWN0IiwidHlwZSIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7a0JBQUE7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNQSxPQUFPLEVBQUNDLFFBQVEsSUFBVCxFQUFiOztBQUVBOzs7SUFLTUMsUyxXQUZMLHdCQUFZLFdBQVosQztjQUVLQSxTOzthQUFBQSxTOzs7OEJBQUFBLFM7Ozs7Ozt3SkFNRkMsUSxHQUFXLFlBQU07QUFDYixnQkFBTUMsUUFBUSxtQkFBU0MsV0FBVCxDQUFxQixNQUFLQyxJQUFMLENBQVVDLFNBQS9CLENBQWQ7QUFDQSxtQkFBT0gsTUFBTUksS0FBYjtBQUNILFMsUUFjREMsZSxHQUFrQixVQUFDQyxHQUFELEVBQVM7QUFBQSxnQkFDaEJDLFFBRGdCLEdBQ0osTUFBS0MsS0FERCxDQUNoQkQsUUFEZ0I7QUFBQSxnQkFFaEJILEtBRmdCLEdBRVBFLElBQUlHLE1BRkcsQ0FFaEJMLEtBRmdCOztBQUd2QixtQkFBT0csU0FBU0gsS0FBVCxDQUFQO0FBQ0gsUzs7O0FBekJEOzs7Ozs7QUFGRU4sYSxXQVVGWSxrQixpQ0FBcUI7QUFBQSxZQUNWQyxLQURVLEdBQ0QsS0FBS0gsS0FESixDQUNWRyxLQURVOztBQUVqQixZQUFJQSxLQUFKLEVBQVc7QUFDUDtBQUNBO0FBQ0EsaUJBQUtULElBQUwsQ0FBVVUsU0FBVixDQUFvQkMsU0FBcEIsQ0FBOEJDLE1BQTlCLENBQXFDLFlBQXJDO0FBQ0g7QUFDSixLO0FBQ0Q7Ozs7Ozs7QUFVQTs7OztBQTVCRWhCLGEsV0FnQ0ZpQixNLHFCQUFTO0FBQ0wsWUFBTUMsZUFBZSxLQUFLQyxXQUFMLENBQWlCLEtBQUtULEtBQXRCLENBQXJCO0FBQ0EsWUFBTVUsa0JBQWtCRixZQUF4Qjs7QUFGSyxxQkFJOEYsS0FBS1IsS0FKbkc7QUFBQSxZQUlHVyxJQUpILFVBSUdBLElBSkg7QUFBQSxZQUlTQyxXQUpULFVBSVNBLFdBSlQ7QUFBQSxZQUlzQkMsS0FKdEIsVUFJc0JBLEtBSnRCO0FBQUEsWUFJNEJDLGFBSjVCLFVBSTRCQSxhQUo1QjtBQUFBLFlBSXVEQyxTQUp2RCxVQUkyQ0MsUUFKM0MsQ0FJdURELFNBSnZEO0FBQUEsWUFJbUVFLEtBSm5FLFVBSW1FQSxLQUpuRTtBQUFBLFlBSTBFRCxRQUoxRSxVQUkwRUEsUUFKMUU7QUFBQSxZQUlvRmIsS0FKcEYsVUFJb0ZBLEtBSnBGOztBQUFBLGtDQUtNLEtBQUtILEtBTFg7O0FBQUEsbUJBT2dDZSxhQUFhLEVBUDdDO0FBQUEsWUFPV0csaUJBUFgsUUFPRUMsT0FQRjs7QUFRTCxZQUFNQyxVQUFVakIsUUFBUSxJQUFSLEdBQWUsVUFBL0IsQ0FSSyxDQVFzQztBQUMzQyxZQUFNa0IsMEJBQWlCWCxlQUFqQixJQUFrQ1UsZ0JBQWxDLElBQThDRixpQkFBOUMsQ0FBTjtBQUNBRyxtQkFBV3pCLEtBQVgsR0FBbUJrQixrQkFBa0JRLFNBQWxCLElBQStCUixrQkFBa0IsSUFBakQsR0FBd0QsRUFBeEQsR0FBNkQsS0FBS2QsS0FBTCxDQUFXdUIsU0FBWCxDQUFxQlQsYUFBckIsRUFBb0MxQixJQUFwQyxDQUFoRjtBQUNBLFlBQU1vQywrQ0FBNEMsQ0FBQ3JCLEtBQUQsR0FBUyxhQUFULEdBQXlCLEVBQXJFLENBQU47QUFDQSxlQUNJO0FBQUE7QUFBQSxjQUFLLFdBQVdxQixRQUFoQixFQUEwQixjQUFXLFlBQXJDLEVBQWtELEtBQUksV0FBdEQsRUFBa0UsT0FBT1gsS0FBekU7QUFDSSw4REFBTyxXQUFVLHNCQUFqQixFQUF3QyxLQUFJLFdBQTVDLElBQTREUSxVQUE1RCxFQURKO0FBRUk7QUFBQTtBQUFBLGtCQUFPLFdBQVUsc0JBQWpCLEVBQXdDLFNBQVNWLElBQWpEO0FBQXdELGtDQUFRYyxDQUFSLENBQVViLFdBQVY7QUFBeEQsYUFGSjtBQUdLLGFBQUNULEtBQUQsSUFBVTtBQUFBO0FBQUEsa0JBQU0sV0FBVSxzQkFBaEI7QUFBd0Msa0NBQVFzQixDQUFSLENBQVVSLEtBQVY7QUFBeEM7QUFIZixTQURKO0FBT0gsSzs7V0FuREMzQixTOzs7QUFzRE47O0FBQ0FBLFVBQVVvQyxXQUFWLEdBQXdCLFdBQXhCO0FBQ0FwQyxVQUFVcUMsU0FBVixHQUFzQjtBQUNsQkMsY0FBVSxpQkFBVUMsSUFERjtBQUVsQlosV0FBTyxpQkFBVWEsU0FBVixDQUFvQixDQUN2QixpQkFBVUMsTUFEYSxFQUV2QixpQkFBVUYsSUFGYSxDQUFwQixDQUZXO0FBTWxCbEIsVUFBTSxpQkFBVW9CLE1BQVYsQ0FBaUJDLFVBTkw7QUFPbEJDLFlBQVEsaUJBQVVDLElBUEE7QUFRbEJuQyxjQUFVLGlCQUFVbUMsSUFBVixDQUFlRixVQVJQO0FBU2xCRyxnQkFBWSxpQkFBVUQsSUFUSjtBQVVsQmxCLGNBQVUsaUJBQVVvQixNQVZGO0FBV2xCeEIsaUJBQWEsaUJBQVVtQixNQVhMO0FBWWxCUixlQUFXLGlCQUFVVyxJQVpIO0FBYWxCRyxVQUFNLGlCQUFVTixNQWJFO0FBY2xCakIsbUJBQWUsaUJBQVVnQixTQUFWLENBQW9CLENBQy9CLGlCQUFVQyxNQURxQixFQUUvQixpQkFBVU8sTUFGcUIsQ0FBcEIsQ0FkRztBQWtCbEJuQyxXQUFPLGlCQUFVMEI7QUFsQkMsQ0FBdEI7QUFvQkF2QyxVQUFVaUQsWUFBVixHQUF5QjtBQUNyQlgsY0FBVSxLQURXO0FBRXJCWixjQUFVLEVBRlc7QUFHckJDLFdBQU8sMEJBSGM7QUFJckJNLGlDQUpxQjtBQUtyQmMsVUFBTSxNQUxlO0FBTXJCbEMsV0FBTztBQU5jLENBQXpCO2tCQVFlYixTIiwiZmlsZSI6ImZyLUZSLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9kZXBlbmRlbmNpZXNcclxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzLCBQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xyXG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnbG9kYXNoL2lkZW50aXR5JztcclxuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XHJcbmltcG9ydCBNREJlaGF2aW91ciBmcm9tICcuLi9iZWhhdmlvdXJzL21hdGVyaWFsJztcclxuaW1wb3J0IHtJbnB1dEJlaGF2aW91cn0gZnJvbSAnLi4vYmVoYXZpb3Vycy9pbnB1dC1jb21wb25lbnQnO1xyXG5jb25zdCBNT0RFID0ge2lzRWRpdDogdHJ1ZX07XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHN0YW5kaW5nIGZvciBhbiBIVE1MIGlucHV0LlxyXG4gKi9cclxuQE1EQmVoYXZpb3VyKCdpbnB1dFRleHQnKVxyXG5ASW5wdXRCZWhhdmlvdXJcclxuY2xhc3MgSW5wdXRUZXh0IGV4dGVuZHMgUHVyZUNvbXBvbmVudCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGRvbSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICogQHJldHVybiB7b2JqZWN0fSAtIFRoZSB1bmZvcm1hdGVkIGRvbSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZ2V0VmFsdWUgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZG9tRWwgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzLnJlZnMuaHRtbElucHV0KTtcclxuICAgICAgICByZXR1cm4gZG9tRWwudmFsdWU7XHJcbiAgICB9O1xyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHt2YWxpZH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgbWFpbiBkaXYgZG9lcyBub3QgaG9sZCBhIGlzLWludmFsaWQgY2xhc3Mgd2hlbiB0aGVyZSdzIG5vIGVycm9yXHJcbiAgICAgICAgICAgIC8vIE1ETCBrZWVwcyB0aGUgY2xhc3MgZXZlbiBpZiBSZWFjdCByZW1vdmVzIGl0XHJcbiAgICAgICAgICAgIHRoaXMucmVmcy5pbnB1dFRleHQuY2xhc3NMaXN0LnJlbW92ZSgnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlIHRoZSBjaGFuZ2Ugb24gdGhlIGlucHV0IHRleHQsIGl0IG9ubHkgcHJvcGFnYXRlIHRoZSB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSAge29iamVjdH0gZXZ0IC0gVGhlIHJlYWN0IERPTSBldmVudC5cclxuICAgICAqIEByZXR1cm4ge29iamVjdH0gLSBUaGUgZnVuY3Rpb24gb25DaGFubmdlIGZyb20gdGhlIHByb3BzLCBjYWxsZWQuXHJcbiAgICAgKi9cclxuICAgIF9oYW5kbGVvbkNoYW5nZSA9IChldnQpID0+IHtcclxuICAgICAgICBjb25zdCB7b25DaGFuZ2V9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCB7dmFsdWV9ID0gZXZ0LnRhcmdldDtcclxuICAgICAgICByZXR1cm4gb25DaGFuZ2UodmFsdWUpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQGluaGVyaXRkb2NcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgKi9cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBtYW5hZ2VkUHJvcHMgPSB0aGlzLl9jaGVja1Byb3BzKHRoaXMucHJvcHMpO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkSW5wdXRQcm9wcyA9IG1hbmFnZWRQcm9wc1xyXG5cclxuICAgICAgICBjb25zdCB7IG5hbWUsIHBsYWNlaG9sZGVyLCBzdHlsZSxyYXdJbnB1dFZhbHVlLCBtZXRhZGF0YSA6IHt2YWxpZGF0b3J9LCBlcnJvciwgbWV0YWRhdGEsIHZhbGlkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IHt9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICAgICAgY29uc3Qge29wdGlvbnM6IHZhbGlkYXRvcnNPcHRpb25zfSA9IHZhbGlkYXRvciB8fCB7fTtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID0gdmFsaWQgPyBudWxsIDogJ2hhc0Vycm9yJzsgLy9hZGQgcGF0dGVybiB0byBvdmVyaWRlIG1kbCBlcnJvciBzdHlsZSB3aGVuIGRpc3BsYXlpbmcgYW4gZm9jdXMgZXJyb3IuXHJcbiAgICAgICAgY29uc3QgaW5wdXRQcm9wcyA9IHsuLi52YWxpZElucHV0UHJvcHMsIHBhdHRlcm4sIC4uLnZhbGlkYXRvcnNPcHRpb25zfTtcclxuICAgICAgICBpbnB1dFByb3BzLnZhbHVlID0gcmF3SW5wdXRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJhd0lucHV0VmFsdWUgPT09IG51bGwgPyAnJyA6IHRoaXMucHJvcHMuZm9ybWF0dGVyKHJhd0lucHV0VmFsdWUsIE1PREUpXHJcbiAgICAgICAgY29uc3QgY3NzQ2xhc3MgPSBgbWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkJHshdmFsaWQgPyAnIGlzLWludmFsaWQnIDogJyd9YDtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3NzQ2xhc3N9IGRhdGEtZm9jdXM9J2lucHV0LXRleHQnIHJlZj0naW5wdXRUZXh0JyBzdHlsZT17c3R5bGV9PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT0nbWRsLXRleHRmaWVsZF9faW5wdXQnIHJlZj0naHRtbElucHV0JyB7Li4uaW5wdXRQcm9wc30gLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9J21kbC10ZXh0ZmllbGRfX2xhYmVsJyBodG1sRm9yPXtuYW1lfT57aTE4bmV4dC50KHBsYWNlaG9sZGVyKX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgeyF2YWxpZCAmJiA8c3BhbiBjbGFzc05hbWU9J21kbC10ZXh0ZmllbGRfX2Vycm9yJz57aTE4bmV4dC50KGVycm9yKX08L3NwYW4+fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG4vL1N0YXRpYyBwcm9wcy5cclxuSW5wdXRUZXh0LmRpc3BsYXlOYW1lID0gJ0lucHV0VGV4dCc7XHJcbklucHV0VGV4dC5wcm9wVHlwZXMgPSB7XHJcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcbiAgICBlcnJvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXHJcbiAgICAgICAgUHJvcFR5cGVzLnN0cmluZyxcclxuICAgICAgICBQcm9wVHlwZXMuYm9vbFxyXG4gICAgXSksXHJcbiAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXHJcbiAgICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIG1ldGFkYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICBmb3JtYXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcclxuICAgIHJhd0lucHV0VmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xyXG4gICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICAgICAgUHJvcFR5cGVzLm51bWJlclxyXG4gICAgXSksXHJcbiAgICB2YWxpZDogUHJvcFR5cGVzLmJvb2xcclxufTtcclxuSW5wdXRUZXh0LmRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIG1ldGFkYXRhOiB7fSxcclxuICAgIGVycm9yOiAnaW5wdXQudGV4dC5lcnJvci5kZWZhdWx0JyxcclxuICAgIGZvcm1hdHRlcjogaWRlbnRpdHksXHJcbiAgICB0eXBlOiAndGV4dCcsXHJcbiAgICB2YWxpZDogdHJ1ZVxyXG59O1xyXG5leHBvcnQgZGVmYXVsdCBJbnB1dFRleHQ7XHJcbiJdfQ==
;