react-lightning-design-components
Version:
Salesforce Lightning Design System components built with React 16
227 lines (185 loc) • 24.8 kB
JavaScript
'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=