UNPKG

react-lightning-design-components

Version:

Salesforce Lightning Design System components built with React 16

227 lines (185 loc) 24.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _Button = require('./Button'); var _Button2 = _interopRequireDefault(_Button); var _Input = require('./Input'); var _Input2 = _interopRequireDefault(_Input); var _Icon = require('./Icon'); var _Icon2 = _interopRequireDefault(_Icon); var _util = require('./util'); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var SearchButtonField = function (_React$Component) { (0, _inherits3.default)(SearchButtonField, _React$Component); function SearchButtonField(props) { (0, _classCallCheck3.default)(this, SearchButtonField); var _this = (0, _possibleConstructorReturn3.default)(this, (SearchButtonField.__proto__ || (0, _getPrototypeOf2.default)(SearchButtonField)).call(this, props)); _this.state = { expanded: !!props.value, collapsing: false, value: props.value || '' }; _this.expandField = _this.expandField.bind(_this); _this.collapseField = _this.collapseField.bind(_this); _this.onCancelClick = _this.onCancelClick.bind(_this); _this.onChange = _this.onChange.bind(_this); _this.onKeyDown = _this.onKeyDown.bind(_this); _this.onClick = _this.onClick.bind(_this); _this.inputRef = _this.inputRef.bind(_this); _this.closeSearchIconRef = _this.closeSearchIconRef.bind(_this); (0, _util.registerStyle)('search-button-field', [['.search-button-field-container', '{ position: relative; display: flex; justify-content: flex-end; width: 100%; }'], ['.search-button-field-input', '{ position: absolute; top:0; right: 0; opacity: 0; ' + 'max-width: 0; transition: max-width 500ms ease-in-out 300ms,' + ' opacity 300ms ease-in-out 300ms; }'], ['.search-button-field-input.expanded', '{ max-width: 100%; opacity: 1; }'], ['.search-button-field-input.expanded.collapsing', '{ max-width: 0; opacity: 0;' + 'transition: max-width 500ms ease-in-out, opacity 200ms ease-in-out 300ms;}'], ['.search-button-field-btn', '{ background-color: white; opacity: 1; transition: opacity 300ms ease-in-out; }'], ['.search-button-field-btn:hover', '{ background-color: #f4f6f9; }'], ['.search-button-field-btn.expanded', '{ background-color: white; opacity: 0; cursor: default; }'], ['.search-button-field-btn.expanded.collapsing', '{ opacity: 1; transition: opacity 300ms ease-in-out 700ms; }'], ['.search-button-field-cancel-container', '{ position: relative; display: flex; justify-content: center;' + 'align-items: center; height: 32px; width: 32px; }'], ['.search-button-field-cancel', '{ background-color: #9faab5; border-radius: 50%;' + 'width: 13px; height: 13px; padding: 2px; z-index: 0;' + 'opacity: 0; transition: opacity 300ms ease-in-out 300ms; }'], ['.search-button-field-cancel.expanded', '{ opacity: 1; right: 8px; z-index: 1;}'], ['.search-button-field-cancel.expanded:hover', '{ background-color: #1589ee; cursor: pointer; }'], ['.search-button-field-cancel.expanded:hover:active', '{ background-color: #54698d; cursor: pointer; }'], ['.search-button-field-cancel.expanded.collapsing', '{ opacity: 0; transition: opacity 300ms ease-in-out; }']]); return _this; } (0, _createClass3.default)(SearchButtonField, [{ key: 'onCancelClick', value: function onCancelClick() { var shouldRaiseOnChangeEventWithoutValue = this.props.onChange && this.state.value; if (shouldRaiseOnChangeEventWithoutValue) { this.props.onChange(); } this.collapseField(); if (this.props.onCancel) this.props.onCancel(); if (this.props.onClosed) this.props.onClosed(); } }, { key: 'onChange', value: function onChange(event) { this.setState({ value: event.target.value }); if (this.props.onChange) this.props.onChange(event); } }, { key: 'onKeyDown', value: function onKeyDown(event) { var _props = this.props, closeOnEscape = _props.closeOnEscape, onEnter = _props.onEnter; if (event.keyCode === 13 && onEnter) { onEnter(event); } else if (closeOnEscape && event.keyCode === 27) { this.onCancelClick(); } } }, { key: 'onClick', value: function onClick() { this.expandField(); if (this.props.onClick) this.props.onClick(); } }, { key: 'expandField', value: function expandField() { this.setState({ expanded: true }); _reactDom2.default.findDOMNode(this.input).focus(); if (this.props.onExpand) this.props.onExpand(); } }, { key: 'collapseField', value: function collapseField() { var _this2 = this; this.setState({ collapsing: true, value: '' }); setTimeout(function () { _this2.setState({ collapsing: false, expanded: false }); if (_this2.props.onCollapse) _this2.props.onCollapse(); }, 500); } }, { key: 'inputRef', value: function inputRef(ref) { this.input = ref; } }, { key: 'closeSearchIconRef', value: function closeSearchIconRef(ref) { this.closeSearchIcon = ref; } }, { key: 'renderSearchButton', value: function renderSearchButton() { var expanded = this.state.expanded; var _props2 = this.props, searchButtonTitle = _props2.searchButtonTitle, renderButton = _props2.renderButton; var buttonProps = { type: 'icon-border', icon: 'search', className: (0, _classnames2.default)('search-button-field-btn', this.state.expanded ? 'expanded' : '', this.state.collapsing ? 'collapsing' : ''), onClick: this.onClick, title: searchButtonTitle, tabIndex: !expanded ? 0 : -1 }; return renderButton ? renderButton(buttonProps) : _react2.default.createElement(_Button2.default, buttonProps); } }, { key: 'render', value: function render() { var expanded = this.state.expanded; return _react2.default.createElement( 'div', { className: 'search-button-field-container' }, _react2.default.createElement(_Input2.default, { placeholder: this.props.placeholder, onChange: this.onChange, value: this.state.value, onKeyDown: this.onKeyDown, ref: this.inputRef, tabIndex: expanded ? 0 : -1, className: (0, _classnames2.default)('search-button-field-input', this.state.expanded ? 'expanded' : '', this.state.collapsing ? 'collapsing' : '') }), _react2.default.createElement( 'div', { className: 'search-button-field-cancel-container' }, _react2.default.createElement(_Icon2.default, { ref: this.closeSearchIconRef, category: 'action', icon: 'reject', size: 'x-small', className: (0, _classnames2.default)('search-button-field-cancel', this.state.expanded ? 'expanded' : '', this.state.collapsing ? 'collapsing' : ''), onClick: this.onCancelClick }) ), this.renderSearchButton(), this.props.children ); } }]); return SearchButtonField; }(_react2.default.Component); exports.default = SearchButtonField; SearchButtonField.propTypes = { placeholder: _propTypes2.default.string, onCancel: _propTypes2.default.func, onClosed: _propTypes2.default.func, onChange: _propTypes2.default.func, onEnter: _propTypes2.default.func, onClick: _propTypes2.default.func, onExpand: _propTypes2.default.func, onCollapse: _propTypes2.default.func, searchButtonTitle: _propTypes2.default.string, children: _propTypes2.default.node, value: _propTypes2.default.string, renderButton: _propTypes2.default.func, closeOnEscape: _propTypes2.default.bool }; SearchButtonField.defaultProps = { placeholder: 'Search this feed' }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL1NlYXJjaEJ1dHRvbkZpZWxkLmpzIl0sIm5hbWVzIjpbIlNlYXJjaEJ1dHRvbkZpZWxkIiwicHJvcHMiLCJzdGF0ZSIsImV4cGFuZGVkIiwidmFsdWUiLCJjb2xsYXBzaW5nIiwiZXhwYW5kRmllbGQiLCJiaW5kIiwiY29sbGFwc2VGaWVsZCIsIm9uQ2FuY2VsQ2xpY2siLCJvbkNoYW5nZSIsIm9uS2V5RG93biIsIm9uQ2xpY2siLCJpbnB1dFJlZiIsImNsb3NlU2VhcmNoSWNvblJlZiIsInNob3VsZFJhaXNlT25DaGFuZ2VFdmVudFdpdGhvdXRWYWx1ZSIsIm9uQ2FuY2VsIiwib25DbG9zZWQiLCJldmVudCIsInNldFN0YXRlIiwidGFyZ2V0IiwiY2xvc2VPbkVzY2FwZSIsIm9uRW50ZXIiLCJrZXlDb2RlIiwiZmluZERPTU5vZGUiLCJpbnB1dCIsImZvY3VzIiwib25FeHBhbmQiLCJzZXRUaW1lb3V0Iiwib25Db2xsYXBzZSIsInJlZiIsImNsb3NlU2VhcmNoSWNvbiIsInNlYXJjaEJ1dHRvblRpdGxlIiwicmVuZGVyQnV0dG9uIiwiYnV0dG9uUHJvcHMiLCJ0eXBlIiwiaWNvbiIsImNsYXNzTmFtZSIsInRpdGxlIiwidGFiSW5kZXgiLCJwbGFjZWhvbGRlciIsInJlbmRlclNlYXJjaEJ1dHRvbiIsImNoaWxkcmVuIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiZnVuYyIsIm5vZGUiLCJib29sIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7Ozs7SUFFcUJBLGlCOzs7QUFDbkIsNkJBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSw0SkFDWEEsS0FEVzs7QUFFakIsVUFBS0MsS0FBTCxHQUFhO0FBQ1hDLGdCQUFVLENBQUMsQ0FBQ0YsTUFBTUcs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M0MsaUI7OztBQW1NckJBLGtCQUFrQjRDLFNBQWxCLEdBQThCO0FBQzVCSixlQUFhLG9CQUFVSyxNQURLO0FBRTVCN0IsWUFBVSxvQkFBVThCLElBRlE7QUFHNUI3QixZQUFVLG9CQUFVNkIsSUFIUTtBQUk1QnBDLFlBQVUsb0JBQVVvQyxJQUpRO0FBSzVCeEIsV0FBUyxvQkFBVXdCLElBTFM7QUFNNUJsQyxXQUFTLG9CQUFVa0MsSUFOUztBQU81Qm5CLFlBQVUsb0JBQVVtQixJQVBRO0FBUTVCakIsY0FBWSxvQkFBVWlCLElBUk07QUFTNUJkLHFCQUFtQixvQkFBVWEsTUFURDtBQVU1QkgsWUFBVSxvQkFBVUssSUFWUTtBQVc1QjNDLFNBQU8sb0JBQVV5QyxNQVhXO0FBWTVCWixnQkFBYyxvQkFBVWEsSUFaSTtBQWE1QnpCLGlCQUFlLG9CQUFVMkI7QUFiRyxDQUE5Qjs7QUFnQkFoRCxrQkFBa0JpRCxZQUFsQixHQUFpQztBQUMvQlQsZUFBYTtBQURrQixDQUFqQyIsImZpbGUiOiJTZWFyY2hCdXR0b25GaWVsZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IElucHV0IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcbmltcG9ydCB7IHJlZ2lzdGVyU3R5bGUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2hCdXR0b25GaWVsZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBleHBhbmRlZDogISFwcm9wcy52YWx1ZSxcbiAgICAgIGNvbGxhcHNpbmc6IGZhbHNlLFxuICAgICAgdmFsdWU6IHByb3BzLnZhbHVlIHx8ICcnLFxuICAgIH07XG4gICAgdGhpcy5leHBhbmRGaWVsZCA9IHRoaXMuZXhwYW5kRmllbGQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNvbGxhcHNlRmllbGQgPSB0aGlzLmNvbGxhcHNlRmllbGQuYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uQ2FuY2VsQ2xpY2sgPSB0aGlzLm9uQ2FuY2VsQ2xpY2suYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMub25LZXlEb3duID0gdGhpcy5vbktleURvd24uYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcbiAgICB0aGlzLmlucHV0UmVmID0gdGhpcy5pbnB1dFJlZi5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY2xvc2VTZWFyY2hJY29uUmVmID0gdGhpcy5jbG9zZVNlYXJjaEljb25SZWYuYmluZCh0aGlzKTtcblxuICAgIHJlZ2lzdGVyU3R5bGUoJ3NlYXJjaC1idXR0b24tZmllbGQnLCBbXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1jb250YWluZXInLFxuICAgICAgICAneyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IHdpZHRoOiAxMDAlOyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1pbnB1dCcsXG4gICAgICAgICd7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OiAwOyBvcGFjaXR5OiAwOyAnICtcbiAgICAgICAgJ21heC13aWR0aDogMDsgdHJhbnNpdGlvbjogbWF4LXdpZHRoIDUwMG1zIGVhc2UtaW4tb3V0IDMwMG1zLCcgK1xuICAgICAgICAnIG9wYWNpdHkgMzAwbXMgZWFzZS1pbi1vdXQgMzAwbXM7IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zZWFyY2gtYnV0dG9uLWZpZWxkLWlucHV0LmV4cGFuZGVkJyxcbiAgICAgICAgJ3sgbWF4LXdpZHRoOiAxMDAlOyBvcGFjaXR5OiAxOyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1pbnB1dC5leHBhbmRlZC5jb2xsYXBzaW5nJyxcbiAgICAgICAgJ3sgbWF4LXdpZHRoOiAwOyBvcGFjaXR5OiAwOycgK1xuICAgICAgICAndHJhbnNpdGlvbjogbWF4LXdpZHRoIDUwMG1zIGVhc2UtaW4tb3V0LCBvcGFjaXR5IDIwMG1zIGVhc2UtaW4tb3V0IDMwMG1zO30nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zZWFyY2gtYnV0dG9uLWZpZWxkLWJ0bicsXG4gICAgICAgICd7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBvcGFjaXR5OiAxOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGVhc2UtaW4tb3V0OyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1idG46aG92ZXInLFxuICAgICAgICAneyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNmY5OyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1idG4uZXhwYW5kZWQnLFxuICAgICAgICAneyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgb3BhY2l0eTogMDsgY3Vyc29yOiBkZWZhdWx0OyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1idG4uZXhwYW5kZWQuY29sbGFwc2luZycsXG4gICAgICAgICd7IG9wYWNpdHk6IDE7IHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgZWFzZS1pbi1vdXQgNzAwbXM7IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zZWFyY2gtYnV0dG9uLWZpZWxkLWNhbmNlbC1jb250YWluZXInLFxuICAgICAgICAneyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOycgK1xuICAgICAgICAnYWxpZ24taXRlbXM6IGNlbnRlcjsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogMzJweDsgfScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnLnNlYXJjaC1idXR0b24tZmllbGQtY2FuY2VsJyxcbiAgICAgICAgJ3sgYmFja2dyb3VuZC1jb2xvcjogIzlmYWFiNTsgYm9yZGVyLXJhZGl1czogNTAlOycgK1xuICAgICAgICAnd2lkdGg6IDEzcHg7IGhlaWdodDogMTNweDsgcGFkZGluZzogMnB4OyB6LWluZGV4OiAwOycgK1xuICAgICAgICAnb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBlYXNlLWluLW91dCAzMDBtczsgfScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnLnNlYXJjaC1idXR0b24tZmllbGQtY2FuY2VsLmV4cGFuZGVkJyxcbiAgICAgICAgJ3sgb3BhY2l0eTogMTsgcmlnaHQ6IDhweDsgei1pbmRleDogMTt9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2VhcmNoLWJ1dHRvbi1maWVsZC1jYW5jZWwuZXhwYW5kZWQ6aG92ZXInLFxuICAgICAgICAneyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU4OWVlOyBjdXJzb3I6IHBvaW50ZXI7IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zZWFyY2gtYnV0dG9uLWZpZWxkLWNhbmNlbC5leHBhbmRlZDpob3ZlcjphY3RpdmUnLFxuICAgICAgICAneyBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2OThkOyBjdXJzb3I6IHBvaW50ZXI7IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zZWFyY2gtYnV0dG9uLWZpZWxkLWNhbmNlbC5leHBhbmRlZC5jb2xsYXBzaW5nJyxcbiAgICAgICAgJ3sgb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBlYXNlLWluLW91dDsgfScsXG4gICAgICBdLFxuICAgIF0pO1xuICB9XG5cbiAgb25DYW5jZWxDbGljaygpIHtcbiAgICBjb25zdCBzaG91bGRSYWlzZU9uQ2hhbmdlRXZlbnRXaXRob3V0VmFsdWUgPSAodGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnN0YXRlLnZhbHVlKTtcbiAgICBpZiAoc2hvdWxkUmFpc2VPbkNoYW5nZUV2ZW50V2l0aG91dFZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCk7XG4gICAgfVxuICAgIHRoaXMuY29sbGFwc2VGaWVsZCgpO1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XG4gICAgaWYgKHRoaXMucHJvcHMub25DbG9zZWQpIHRoaXMucHJvcHMub25DbG9zZWQoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBldmVudC50YXJnZXQudmFsdWUgfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgY29uc3QgeyBjbG9zZU9uRXNjYXBlLCBvbkVudGVyIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMyAmJiBvbkVudGVyKSB7XG4gICAgICBvbkVudGVyKGV2ZW50KTtcbiAgICB9IGVsc2UgaWYgKGNsb3NlT25Fc2NhcGUgJiYgZXZlbnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgIHRoaXMub25DYW5jZWxDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy5leHBhbmRGaWVsZCgpO1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHRoaXMucHJvcHMub25DbGljaygpO1xuICB9XG5cbiAgZXhwYW5kRmllbGQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGV4cGFuZGVkOiB0cnVlIH0pO1xuICAgIFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMuaW5wdXQpLmZvY3VzKCk7XG4gICAgaWYgKHRoaXMucHJvcHMub25FeHBhbmQpIHRoaXMucHJvcHMub25FeHBhbmQoKTtcbiAgfVxuXG4gIGNvbGxhcHNlRmllbGQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGNvbGxhcHNpbmc6IHRydWUsIHZhbHVlOiAnJyB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xsYXBzaW5nOiBmYWxzZSwgZXhwYW5kZWQ6IGZhbHNlIH0pO1xuICAgICAgaWYgKHRoaXMucHJvcHMub25Db2xsYXBzZSkgdGhpcy5wcm9wcy5vbkNvbGxhcHNlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIGlucHV0UmVmKHJlZikge1xuICAgIHRoaXMuaW5wdXQgPSByZWY7XG4gIH1cblxuICBjbG9zZVNlYXJjaEljb25SZWYocmVmKSB7XG4gICAgdGhpcy5jbG9zZVNlYXJjaEljb24gPSByZWY7XG4gIH1cblxuICByZW5kZXJTZWFyY2hCdXR0b24oKSB7XG4gICAgY29uc3QgeyBleHBhbmRlZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHNlYXJjaEJ1dHRvblRpdGxlLCByZW5kZXJCdXR0b24gfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgYnV0dG9uUHJvcHMgPSB7XG4gICAgICB0eXBlOiAnaWNvbi1ib3JkZXInLFxuICAgICAgaWNvbjogJ3NlYXJjaCcsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoXG4gICAgICAgICdzZWFyY2gtYnV0dG9uLWZpZWxkLWJ0bicsXG4gICAgICAgIHRoaXMuc3RhdGUuZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJycsXG4gICAgICAgIHRoaXMuc3RhdGUuY29sbGFwc2luZyA/ICdjb2xsYXBzaW5nJyA6ICcnXG4gICAgICApLFxuICAgICAgb25DbGljazogdGhpcy5vbkNsaWNrLFxuICAgICAgdGl0bGU6IHNlYXJjaEJ1dHRvblRpdGxlLFxuICAgICAgdGFiSW5kZXg6ICFleHBhbmRlZCA/IDAgOiAtMSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlbmRlckJ1dHRvbiA/IHJlbmRlckJ1dHRvbihidXR0b25Qcm9wcykgOiA8QnV0dG9uIHsuLi5idXR0b25Qcm9wc30gLz47XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBleHBhbmRlZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9J3NlYXJjaC1idXR0b24tZmllbGQtY29udGFpbmVyJz5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XG4gICAgICAgICAgb25LZXlEb3duPXt0aGlzLm9uS2V5RG93bn1cbiAgICAgICAgICByZWY9e3RoaXMuaW5wdXRSZWZ9XG4gICAgICAgICAgdGFiSW5kZXg9e2V4cGFuZGVkID8gMCA6IC0xfVxuICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAnc2VhcmNoLWJ1dHRvbi1maWVsZC1pbnB1dCcsXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJycsXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29sbGFwc2luZyA/ICdjb2xsYXBzaW5nJyA6ICcnXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3NlYXJjaC1idXR0b24tZmllbGQtY2FuY2VsLWNvbnRhaW5lcid9PlxuICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICByZWY9e3RoaXMuY2xvc2VTZWFyY2hJY29uUmVmfVxuICAgICAgICAgICAgY2F0ZWdvcnk9J2FjdGlvbidcbiAgICAgICAgICAgIGljb249J3JlamVjdCdcbiAgICAgICAgICAgIHNpemU9J3gtc21hbGwnXG4gICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzZWFyY2gtYnV0dG9uLWZpZWxkLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnJyxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmNvbGxhcHNpbmcgPyAnY29sbGFwc2luZycgOiAnJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uQ2FuY2VsQ2xpY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHt0aGlzLnJlbmRlclNlYXJjaEJ1dHRvbigpfVxuICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5TZWFyY2hCdXR0b25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNhbmNlbDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRXhwYW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Db2xsYXBzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNlYXJjaEJ1dHRvblRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICByZW5kZXJCdXR0b246IFByb3BUeXBlcy5mdW5jLFxuICBjbG9zZU9uRXNjYXBlOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cblNlYXJjaEJ1dHRvbkZpZWxkLmRlZmF1bHRQcm9wcyA9IHtcbiAgcGxhY2Vob2xkZXI6ICdTZWFyY2ggdGhpcyBmZWVkJyxcbn07XG4iXX0=