react-lightning-design-components
Version:
Salesforce Lightning Design System components built with React 16
217 lines (177 loc) • 21.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Row = exports.Col = undefined;
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
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 _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
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 Grid = function Grid(_ref) {
var className = _ref.className,
frame = _ref.frame,
children = _ref.children,
props = (0, _objectWithoutProperties3.default)(_ref, ['className', 'frame', 'children']);
var gridClassNames = (0, _classnames2.default)(className, 'slds-grid', 'slds-grid--vertical', frame ? 'slds-grid--frame' : null);
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: gridClassNames }, props),
children
);
};
function adjustCols(colNum, large) {
if (colNum > 6) {
return large ? 12 : 6;
}
return colNum;
}
var Col = function Col(props) {
var className = props.className,
padded = props.padded,
align = props.align,
noFlex = props.noFlex,
order = props.order,
orderSmall = props.orderSmall,
orderMedium = props.orderMedium,
orderLarge = props.orderLarge,
cols = props.cols,
colsSmall = props.colsSmall,
colsMedium = props.colsMedium,
colsLarge = props.colsLarge,
totalCols = props.totalCols,
totalColsSmall = props.totalColsSmall,
totalColsMedium = props.totalColsMedium,
totalColsLarge = props.totalColsLarge,
children = props.children,
pprops = (0, _objectWithoutProperties3.default)(props, ['className', 'padded', 'align', 'noFlex', 'order', 'orderSmall', 'orderMedium', 'orderLarge', 'cols', 'colsSmall', 'colsMedium', 'colsLarge', 'totalCols', 'totalColsSmall', 'totalColsMedium', 'totalColsLarge', 'children']);
var rowClassNames = (0, _classnames2.default)(className, padded ? 'slds-col--padded' + (/^(medium|large)$/.test(padded) ? '-' + padded : '') : 'slds-col', align ? 'slds-align-' + align : null, noFlex ? 'slds-no-flex' : null, order ? 'slds-order--' + order : null, orderSmall ? 'slds-small-order--' + orderSmall : null, orderMedium ? 'slds-medium-order--' + orderMedium : null, orderLarge ? 'slds-large-order--' + orderLarge : null, cols && totalCols ? 'slds-size--' + cols + '-of-' + adjustCols(totalCols, true) : null, colsSmall && totalColsSmall ? 'slds-small-size--' + colsSmall + '-of-' + adjustCols(totalColsSmall) : null, colsMedium && totalColsMedium ? 'slds-medium-size--' + colsMedium + '-of-' + adjustCols(totalColsMedium) : null, colsLarge && totalColsMedium ? 'slds-large-size--' + colsLarge + '-of-' + adjustCols(totalColsLarge, true) : null);
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: rowClassNames }, pprops),
children
);
};
exports.Col = Col;
var COL_ALIGNS = ['top', 'medium', 'bottom'];
Col.propTypes = {
className: _propTypes2.default.string,
padded: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),
align: _propTypes2.default.oneOf(COL_ALIGNS),
noFlex: _propTypes2.default.bool,
order: _propTypes2.default.number,
orderSmall: _propTypes2.default.number,
orderMedium: _propTypes2.default.number,
orderLarge: _propTypes2.default.number,
nowrap: _propTypes2.default.bool,
cols: _propTypes2.default.number,
colsSmall: _propTypes2.default.number,
colsMedium: _propTypes2.default.number,
colsLarge: _propTypes2.default.number,
totalCols: _propTypes2.default.number,
totalColsSmall: _propTypes2.default.number,
totalColsMedium: _propTypes2.default.number,
totalColsLarge: _propTypes2.default.number,
children: _propTypes2.default.node
};
Grid.propTypes = {
className: _propTypes2.default.string,
frame: _propTypes2.default.bool,
children: _propTypes2.default.node
};
var Row = exports.Row = function (_Component) {
(0, _inherits3.default)(Row, _Component);
function Row() {
(0, _classCallCheck3.default)(this, Row);
return (0, _possibleConstructorReturn3.default)(this, (Row.__proto__ || (0, _getPrototypeOf2.default)(Row)).apply(this, arguments));
}
(0, _createClass3.default)(Row, [{
key: 'renderColumn',
value: function renderColumn(colProps, child) {
if (child.type !== _react2.default.createElement(Col, null).type) {
return _react2.default.createElement(
Col,
colProps,
child
);
}
/* eslint-disable no-param-reassign */
var childProps = (0, _keys2.default)(colProps).reduce(function (cprops, key) {
cprops[key] = child.props[key] || colProps[key];
return cprops;
}, {});
return _react2.default.cloneElement(child, childProps);
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
className = _props.className,
align = _props.align,
nowrap = _props.nowrap,
nowrapSmall = _props.nowrapSmall,
nowrapMedium = _props.nowrapMedium,
nowrapLarge = _props.nowrapLarge,
cols = _props.cols,
colsSmall = _props.colsSmall,
colsMedium = _props.colsMedium,
colsLarge = _props.colsLarge,
children = _props.children,
props = (0, _objectWithoutProperties3.default)(_props, ['className', 'align', 'nowrap', 'nowrapSmall', 'nowrapMedium', 'nowrapLarge', 'cols', 'colsSmall', 'colsMedium', 'colsLarge', 'children']);
var rowClassNames = (0, _classnames2.default)(className, 'slds-grid', align ? 'slds-grid--align-' + align : null, nowrap ? 'slds-nowrap' : 'slds-wrap', nowrapSmall ? 'slds-nowrap--small' : null, nowrapMedium ? 'slds-nowrap--medium' : null, nowrapLarge ? 'slds-nowrap--large' : null);
var totalCols = cols || function () {
var cnt = 0;
_react2.default.Children.forEach(children, function (child) {
cnt += child.props.cols || 1;
});
return cnt;
}();
var colProps = {
totalCols: totalCols,
totalColsSmall: colsSmall || totalCols,
totalColsMedium: colsMedium || totalCols,
totalColsLarge: colsLarge || totalCols
};
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: rowClassNames }, props),
_react2.default.Children.map(children, this.renderColumn.bind(this, colProps))
);
}
}]);
return Row;
}(_react.Component);
var ROW_ALIGNS = ['center', 'space', 'spread'];
Row.propTypes = {
className: _propTypes2.default.string,
align: _propTypes2.default.oneOf(ROW_ALIGNS),
nowrap: _propTypes2.default.bool,
nowrapSmall: _propTypes2.default.bool,
nowrapMedium: _propTypes2.default.bool,
nowrapLarge: _propTypes2.default.bool,
cols: _propTypes2.default.number,
colsSmall: _propTypes2.default.number,
colsMedium: _propTypes2.default.number,
colsLarge: _propTypes2.default.number,
children: _propTypes2.default.node
};
exports.default = Grid;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL0dyaWQuanMiXSwibmFtZXMiOlsiR3JpZCIsImNsYXNzTmFtZSIsImZyYW1lIiwiY2hpbGRyZW4iLCJwcm9wcyIsImdyaWRDbGFzc05hbWVzIiwiYWRqdXN0Q29scyIsImNvbE51bSIsImxhcmdlIiwiQ29sIiwicGFkZGVkIiwiYWxpZ24iLCJub0ZsZXgiLCJvcmRlciIsIm9yZGVyU21hbGwiLCJvcmRlck1lZGl1bSIsIm9yZGVyTGFyZ2UiLCJjb2xzIiwiY29sc1NtYWxsIiwiY29sc01lZGl1bSIsImNvbHNMYXJnZSIsInRvdGFsQ29scyIsInRvdGFsQ29sc1NtYWxsIiwidG90YWxDb2xzTWVkaXVtIiwidG90YWxDb2xzTGFyZ2UiLCJwcHJvcHMiLCJyb3dDbGFzc05hbWVzIiwidGVzdCIsIkNPTF9BTElHTlMiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJvbmVPZlR5cGUiLCJib29sIiwib25lT2YiLCJudW1iZXIiLCJub3dyYXAiLCJub2RlIiwiUm93IiwiY29sUHJvcHMiLCJjaGlsZCIsInR5cGUiLCJjaGlsZFByb3BzIiwicmVkdWNlIiwiY3Byb3BzIiwia2V5IiwiY2xvbmVFbGVtZW50Iiwibm93cmFwU21hbGwiLCJub3dyYXBNZWRpdW0iLCJub3dyYXBMYXJnZSIsImNudCIsIkNoaWxkcmVuIiwiZm9yRWFjaCIsIm1hcCIsInJlbmRlckNvbHVtbiIsImJpbmQiLCJST1dfQUxJR05TIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLE9BQU8sU0FBUEEsSUFBTyxPQUE4QztBQUFBLE1BQTNDQyxTQUEyQyxRQUEzQ0EsU0FBMkM7QUFBQSxNQUFoQ0MsS0FBZ0MsUUFBaENBLEtBQWdDO0FBQUEsTUFBekJDLFFBQXlCLFFBQXpCQSxRQUF5QjtBQUFBLE1BQVpDLEtBQVk7O0FBQ3pELE1BQU1DLGlCQUFpQiwwQkFDckJKLFNBRHFCLEVBQ1YsV0FEVSxFQUNHLHFCQURILEVBRXJCQyxRQUFRLGtCQUFSLEdBQTZCLElBRlIsQ0FBdkI7QUFJQSxTQUNFO0FBQUE7QUFBQSw2QkFBSyxXQUFZRyxjQUFqQixJQUF1Q0QsS0FBdkM7QUFDSUQ7QUFESixHQURGO0FBS0QsQ0FWRDs7QUFZQSxTQUFTRyxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsS0FBNUIsRUFBbUM7QUFDakMsTUFBSUQsU0FBUyxDQUFiLEVBQWdCO0FBQ2QsV0FBT0MsUUFBUSxFQUFSLEdBQWEsQ0FBcEI7QUFDRDtBQUNELFNBQU9ELE1BQVA7QUFDRDs7QUFFTSxJQUFNRSxNQUFNLFNBQU5BLEdBQU0sQ0FBQ0wsS0FBRCxFQUFXO0FBQUEsTUFFMUJILFNBRjBCLEdBT3hCRyxLQVB3QixDQUUxQkgsU0FGMEI7QUFBQSxNQUVmUyxNQUZlLEdBT3hCTixLQVB3QixDQUVmTSxNQUZlO0FBQUEsTUFFUEMsS0FGTyxHQU94QlAsS0FQd0IsQ0FFUE8sS0FGTztBQUFBLE1BRUFDLE1BRkEsR0FPeEJSLEtBUHdCLENBRUFRLE1BRkE7QUFBQSxNQUcxQkMsS0FIMEIsR0FPeEJULEtBUHdCLENBRzFCUyxLQUgwQjtBQUFBLE1BR25CQyxVQUhtQixHQU94QlYsS0FQd0IsQ0FHbkJVLFVBSG1CO0FBQUEsTUFHUEMsV0FITyxHQU94QlgsS0FQd0IsQ0FHUFcsV0FITztBQUFBLE1BR01DLFVBSE4sR0FPeEJaLEtBUHdCLENBR01ZLFVBSE47QUFBQSxNQUkxQkMsSUFKMEIsR0FPeEJiLEtBUHdCLENBSTFCYSxJQUowQjtBQUFBLE1BSXBCQyxTQUpvQixHQU94QmQsS0FQd0IsQ0FJcEJjLFNBSm9CO0FBQUEsTUFJVEMsVUFKUyxHQU94QmYsS0FQd0IsQ0FJVGUsVUFKUztBQUFBLE1BSUdDLFNBSkgsR0FPeEJoQixLQVB3QixDQUlHZ0IsU0FKSDtBQUFBLE1BSzFCQyxTQUwwQixHQU94QmpCLEtBUHdCLENBSzFCaUIsU0FMMEI7QUFBQSxNQUtmQyxjQUxlLEdBT3hCbEIsS0FQd0IsQ0FLZmtCLGNBTGU7QUFBQSxNQUtDQyxlQUxELEdBT3hCbkIsS0FQd0IsQ0FLQ21CLGVBTEQ7QUFBQSxNQUtrQkMsY0FMbEIsR0FPeEJwQixLQVB3QixDQUtrQm9CLGNBTGxCO0FBQUEsTUFNMUJyQixRQU4wQixHQU94QkMsS0FQd0IsQ0FNMUJELFFBTjBCO0FBQUEsTUFNYnNCLE1BTmEsMENBT3hCckIsS0FQd0I7O0FBUTVCLE1BQU1zQixnQkFBZ0IsMEJBQ3BCekIsU0FEb0IsRUFFcEJTLCtCQUNxQixtQkFBbUJpQixJQUFuQixDQUF3QmpCLE1BQXhCLFVBQXNDQSxNQUF0QyxHQUFpRCxFQUR0RSxJQUVFLFVBSmtCLEVBS3BCQyx3QkFBc0JBLEtBQXRCLEdBQWdDLElBTFosRUFNcEJDLFNBQVMsY0FBVCxHQUEwQixJQU5OLEVBT3BCQyx5QkFBdUJBLEtBQXZCLEdBQWlDLElBUGIsRUFRcEJDLG9DQUFrQ0EsVUFBbEMsR0FBaUQsSUFSN0IsRUFTcEJDLHNDQUFvQ0EsV0FBcEMsR0FBb0QsSUFUaEMsRUFVcEJDLG9DQUFrQ0EsVUFBbEMsR0FBaUQsSUFWN0IsRUFXcEJDLFFBQVFJLFNBQVIsbUJBQWtDSixJQUFsQyxZQUE2Q1gsV0FBV2UsU0FBWCxFQUFzQixJQUF0QixDQUE3QyxHQUE2RSxJQVh6RCxFQVlwQkgsYUFBYUksY0FBYix5QkFDc0JKLFNBRHRCLFlBQ3NDWixXQUFXZ0IsY0FBWCxDQUR0QyxHQUNxRSxJQWJqRCxFQWNwQkgsY0FBY0ksZUFBZCwwQkFDdUJKLFVBRHZCLFlBQ3dDYixXQUFXaUIsZUFBWCxDQUR4QyxHQUN3RSxJQWZwRCxFQWdCcEJILGFBQWFHLGVBQWIseUJBQ3NCSCxTQUR0QixZQUNzQ2QsV0FBV2tCLGNBQVgsRUFBMkIsSUFBM0IsQ0FEdEMsR0FDMkUsSUFqQnZELENBQXRCO0FBbUJBLFNBQ0U7QUFBQTtBQUFBLDZCQUFLLFdBQVlFLGFBQWpCLElBQXNDRCxNQUF0QztBQUNJdEI7QUFESixHQURGO0FBS0QsQ0FoQ007OztBQWtDUCxJQUFNeUIsYUFBYSxDQUNqQixLQURpQixFQUVqQixRQUZpQixFQUdqQixRQUhpQixDQUFuQjs7QUFNQW5CLElBQUlvQixTQUFKLEdBQWdCO0FBQ2Q1QixhQUFXLG9CQUFVNkIsTUFEUDtBQUVkcEIsVUFBUSxvQkFBVXFCLFNBQVYsQ0FBb0IsQ0FDMUIsb0JBQVVDLElBRGdCLEVBRTFCLG9CQUFVRixNQUZnQixDQUFwQixDQUZNO0FBTWRuQixTQUFPLG9CQUFVc0IsS0FBVixDQUFnQkwsVUFBaEIsQ0FOTztBQU9kaEIsVUFBUSxvQkFBVW9CLElBUEo7QUFRZG5CLFNBQU8sb0JBQVVxQixNQVJIO0FBU2RwQixjQUFZLG9CQUFVb0IsTUFUUjtBQVVkbkIsZUFBYSxvQkFBVW1CLE1BVlQ7QUFXZGxCLGNBQVksb0JBQVVrQixNQVhSO0FBWWRDLFVBQVEsb0JBQVVILElBWko7QUFhZGYsUUFBTSxvQkFBVWlCLE1BYkY7QUFjZGhCLGFBQVcsb0JBQVVnQixNQWRQO0FBZWRmLGNBQVksb0JBQVVlLE1BZlI7QUFnQmRkLGFBQVcsb0JBQVVjLE1BaEJQO0FBaUJkYixhQUFXLG9CQUFVYSxNQWpCUDtBQWtCZFosa0JBQWdCLG9CQUFVWSxNQWxCWjtBQW1CZFgsbUJBQWlCLG9CQUFVVyxNQW5CYjtBQW9CZFYsa0JBQWdCLG9CQUFVVSxNQXBCWjtBQXFCZC9CLFlBQVUsb0JBQVVpQztBQXJCTixDQUFoQjs7QUF3QkFwQyxLQUFLNkIsU0FBTCxHQUFpQjtBQUNmNUIsYUFBVyxvQkFBVTZCLE1BRE47QUFFZjVCLFNBQU8sb0JBQVU4QixJQUZGO0FBR2Y3QixZQUFVLG9CQUFVaUM7QUFITCxDQUFqQjs7SUFNYUMsRyxXQUFBQSxHOzs7Ozs7Ozs7O2lDQUNFQyxRLEVBQVVDLEssRUFBTztBQUM1QixVQUFJQSxNQUFNQyxJQUFOLEtBQWdCLDhCQUFDLEdBQUQsT0FBRCxDQUFVQSxJQUE3QixFQUFtQztBQUNqQyxlQUFPO0FBQUMsYUFBRDtBQUFVRixrQkFBVjtBQUF1QkM7QUFBdkIsU0FBUDtBQUNEOztBQUVEO0FBQ0EsVUFBTUUsYUFBYSxvQkFBWUgsUUFBWixFQUFzQkksTUFBdEIsQ0FBNkIsVUFBQ0MsTUFBRCxFQUFTQyxHQUFULEVBQWlCO0FBQy9ERCxlQUFPQyxHQUFQLElBQWNMLE1BQU1uQyxLQUFOLENBQVl3QyxHQUFaLEtBQW9CTixTQUFTTSxHQUFULENBQWxDO0FBQ0EsZUFBT0QsTUFBUDtBQUNELE9BSGtCLEVBR2hCLEVBSGdCLENBQW5CO0FBSUEsYUFBTyxnQkFBTUUsWUFBTixDQUFtQk4sS0FBbkIsRUFBMEJFLFVBQTFCLENBQVA7QUFDRDs7OzZCQUVRO0FBQUEsbUJBS0gsS0FBS3JDLEtBTEY7QUFBQSxVQUVMSCxTQUZLLFVBRUxBLFNBRks7QUFBQSxVQUVNVSxLQUZOLFVBRU1BLEtBRk47QUFBQSxVQUVhd0IsTUFGYixVQUVhQSxNQUZiO0FBQUEsVUFFcUJXLFdBRnJCLFVBRXFCQSxXQUZyQjtBQUFBLFVBRWtDQyxZQUZsQyxVQUVrQ0EsWUFGbEM7QUFBQSxVQUVnREMsV0FGaEQsVUFFZ0RBLFdBRmhEO0FBQUEsVUFHTC9CLElBSEssVUFHTEEsSUFISztBQUFBLFVBR0NDLFNBSEQsVUFHQ0EsU0FIRDtBQUFBLFVBR1lDLFVBSFosVUFHWUEsVUFIWjtBQUFBLFVBR3dCQyxTQUh4QixVQUd3QkEsU0FIeEI7QUFBQSxVQUlMakIsUUFKSyxVQUlMQSxRQUpLO0FBQUEsVUFJUUMsS0FKUjs7QUFNUCxVQUFNc0IsZ0JBQWdCLDBCQUNwQnpCLFNBRG9CLEVBQ1QsV0FEUyxFQUVwQlUsOEJBQTRCQSxLQUE1QixHQUFzQyxJQUZsQixFQUdwQndCLFNBQVMsYUFBVCxHQUF5QixXQUhMLEVBSXBCVyxjQUFjLG9CQUFkLEdBQXFDLElBSmpCLEVBS3BCQyxlQUFlLHFCQUFmLEdBQXVDLElBTG5CLEVBTXBCQyxjQUFjLG9CQUFkLEdBQXFDLElBTmpCLENBQXRCO0FBUUEsVUFBTTNCLFlBQVlKLFFBQVMsWUFBTTtBQUMvQixZQUFJZ0MsTUFBTSxDQUFWO0FBQ0Esd0JBQU1DLFFBQU4sQ0FBZUMsT0FBZixDQUF1QmhELFFBQXZCLEVBQWlDLFVBQUNvQyxLQUFELEVBQVc7QUFDMUNVLGlCQUFPVixNQUFNbkMsS0FBTixDQUFZYSxJQUFaLElBQW9CLENBQTNCO0FBQ0QsU0FGRDtBQUdBLGVBQU9nQyxHQUFQO0FBQ0QsT0FOeUIsRUFBMUI7QUFPQSxVQUFNWCxXQUFXO0FBQ2ZqQiw0QkFEZTtBQUVmQyx3QkFBZ0JKLGFBQWFHLFNBRmQ7QUFHZkUseUJBQWlCSixjQUFjRSxTQUhoQjtBQUlmRyx3QkFBZ0JKLGFBQWFDO0FBSmQsT0FBakI7QUFNQSxhQUNFO0FBQUE7QUFBQSxpQ0FBSyxXQUFZSyxhQUFqQixJQUFzQ3RCLEtBQXRDO0FBQ0ksd0JBQU04QyxRQUFOLENBQWVFLEdBQWYsQ0FBbUJqRCxRQUFuQixFQUE2QixLQUFLa0QsWUFBTCxDQUFrQkMsSUFBbEIsQ0FBdUIsSUFBdkIsRUFBNkJoQixRQUE3QixDQUE3QjtBQURKLE9BREY7QUFLRDs7Ozs7QUFHSCxJQUFNaUIsYUFBYSxDQUNqQixRQURpQixFQUVqQixPQUZpQixFQUdqQixRQUhpQixDQUFuQjs7QUFNQWxCLElBQUlSLFNBQUosR0FBZ0I7QUFDZDVCLGFBQVcsb0JBQVU2QixNQURQO0FBRWRuQixTQUFPLG9CQUFVc0IsS0FBVixDQUFnQnNCLFVBQWhCLENBRk87QUFHZHBCLFVBQVEsb0JBQVVILElBSEo7QUFJZGMsZUFBYSxvQkFBVWQsSUFKVDtBQUtkZSxnQkFBYyxvQkFBVWYsSUFMVjtBQU1kZ0IsZUFBYSxvQkFBVWhCLElBTlQ7QUFPZGYsUUFBTSxvQkFBVWlCLE1BUEY7QUFRZGhCLGFBQVcsb0JBQVVnQixNQVJQO0FBU2RmLGNBQVksb0JBQVVlLE1BVFI7QUFVZGQsYUFBVyxvQkFBVWMsTUFWUDtBQVdkL0IsWUFBVSxvQkFBVWlDO0FBWE4sQ0FBaEI7O2tCQWVlcEMsSSIsImZpbGUiOiJHcmlkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuY29uc3QgR3JpZCA9ICh7IGNsYXNzTmFtZSwgZnJhbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IGdyaWRDbGFzc05hbWVzID0gY2xhc3NuYW1lcyhcbiAgICBjbGFzc05hbWUsICdzbGRzLWdyaWQnLCAnc2xkcy1ncmlkLS12ZXJ0aWNhbCcsXG4gICAgZnJhbWUgPyAnc2xkcy1ncmlkLS1mcmFtZScgOiBudWxsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9eyBncmlkQ2xhc3NOYW1lcyB9IHsgLi4ucHJvcHMgfT5cbiAgICAgIHsgY2hpbGRyZW4gfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZnVuY3Rpb24gYWRqdXN0Q29scyhjb2xOdW0sIGxhcmdlKSB7XG4gIGlmIChjb2xOdW0gPiA2KSB7XG4gICAgcmV0dXJuIGxhcmdlID8gMTIgOiA2O1xuICB9XG4gIHJldHVybiBjb2xOdW07XG59XG5cbmV4cG9ydCBjb25zdCBDb2wgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzTmFtZSwgcGFkZGVkLCBhbGlnbiwgbm9GbGV4LFxuICAgIG9yZGVyLCBvcmRlclNtYWxsLCBvcmRlck1lZGl1bSwgb3JkZXJMYXJnZSxcbiAgICBjb2xzLCBjb2xzU21hbGwsIGNvbHNNZWRpdW0sIGNvbHNMYXJnZSxcbiAgICB0b3RhbENvbHMsIHRvdGFsQ29sc1NtYWxsLCB0b3RhbENvbHNNZWRpdW0sIHRvdGFsQ29sc0xhcmdlLFxuICAgIGNoaWxkcmVuLCAuLi5wcHJvcHMsXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgcm93Q2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoXG4gICAgY2xhc3NOYW1lLFxuICAgIHBhZGRlZCA/XG4gICAgICBgc2xkcy1jb2wtLXBhZGRlZCR7L14obWVkaXVtfGxhcmdlKSQvLnRlc3QocGFkZGVkKSA/IGAtJHtwYWRkZWR9YCA6ICcnfWAgOlxuICAgICAgJ3NsZHMtY29sJyxcbiAgICBhbGlnbiA/IGBzbGRzLWFsaWduLSR7YWxpZ259YCA6IG51bGwsXG4gICAgbm9GbGV4ID8gJ3NsZHMtbm8tZmxleCcgOiBudWxsLFxuICAgIG9yZGVyID8gYHNsZHMtb3JkZXItLSR7b3JkZXJ9YCA6IG51bGwsXG4gICAgb3JkZXJTbWFsbCA/IGBzbGRzLXNtYWxsLW9yZGVyLS0ke29yZGVyU21hbGx9YCA6IG51bGwsXG4gICAgb3JkZXJNZWRpdW0gPyBgc2xkcy1tZWRpdW0tb3JkZXItLSR7b3JkZXJNZWRpdW19YCA6IG51bGwsXG4gICAgb3JkZXJMYXJnZSA/IGBzbGRzLWxhcmdlLW9yZGVyLS0ke29yZGVyTGFyZ2V9YCA6IG51bGwsXG4gICAgY29scyAmJiB0b3RhbENvbHMgPyBgc2xkcy1zaXplLS0ke2NvbHN9LW9mLSR7YWRqdXN0Q29scyh0b3RhbENvbHMsIHRydWUpfWAgOiBudWxsLFxuICAgIGNvbHNTbWFsbCAmJiB0b3RhbENvbHNTbWFsbCA/XG4gICAgICBgc2xkcy1zbWFsbC1zaXplLS0ke2NvbHNTbWFsbH0tb2YtJHthZGp1c3RDb2xzKHRvdGFsQ29sc1NtYWxsKX1gIDogbnVsbCxcbiAgICBjb2xzTWVkaXVtICYmIHRvdGFsQ29sc01lZGl1bSA/XG4gICAgICBgc2xkcy1tZWRpdW0tc2l6ZS0tJHtjb2xzTWVkaXVtfS1vZi0ke2FkanVzdENvbHModG90YWxDb2xzTWVkaXVtKX1gIDogbnVsbCxcbiAgICBjb2xzTGFyZ2UgJiYgdG90YWxDb2xzTWVkaXVtID9cbiAgICAgIGBzbGRzLWxhcmdlLXNpemUtLSR7Y29sc0xhcmdlfS1vZi0ke2FkanVzdENvbHModG90YWxDb2xzTGFyZ2UsIHRydWUpfWAgOiBudWxsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9eyByb3dDbGFzc05hbWVzIH0geyAuLi5wcHJvcHMgfT5cbiAgICAgIHsgY2hpbGRyZW4gfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgQ09MX0FMSUdOUyA9IFtcbiAgJ3RvcCcsXG4gICdtZWRpdW0nLFxuICAnYm90dG9tJyxcbl07XG5cbkNvbC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcGFkZGVkOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICBdKSxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihDT0xfQUxJR05TKSxcbiAgbm9GbGV4OiBQcm9wVHlwZXMuYm9vbCxcbiAgb3JkZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVyU21hbGw6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVyTWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlckxhcmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBub3dyYXA6IFByb3BUeXBlcy5ib29sLFxuICBjb2xzOiBQcm9wVHlwZXMubnVtYmVyLFxuICBjb2xzU21hbGw6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNvbHNNZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gIGNvbHNMYXJnZTogUHJvcFR5cGVzLm51bWJlcixcbiAgdG90YWxDb2xzOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0b3RhbENvbHNTbWFsbDogUHJvcFR5cGVzLm51bWJlcixcbiAgdG90YWxDb2xzTWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0b3RhbENvbHNMYXJnZTogUHJvcFR5cGVzLm51bWJlcixcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuR3JpZC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZnJhbWU6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgY2xhc3MgUm93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcmVuZGVyQ29sdW1uKGNvbFByb3BzLCBjaGlsZCkge1xuICAgIGlmIChjaGlsZC50eXBlICE9PSAoPENvbCAvPikudHlwZSkge1xuICAgICAgcmV0dXJuIDxDb2wgeyAuLi5jb2xQcm9wcyB9PnsgY2hpbGQgfTwvQ29sPjtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuICAgIGNvbnN0IGNoaWxkUHJvcHMgPSBPYmplY3Qua2V5cyhjb2xQcm9wcykucmVkdWNlKChjcHJvcHMsIGtleSkgPT4ge1xuICAgICAgY3Byb3BzW2tleV0gPSBjaGlsZC5wcm9wc1trZXldIHx8IGNvbFByb3BzW2tleV07XG4gICAgICByZXR1cm4gY3Byb3BzO1xuICAgIH0sIHt9KTtcbiAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBjaGlsZFByb3BzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsIGFsaWduLCBub3dyYXAsIG5vd3JhcFNtYWxsLCBub3dyYXBNZWRpdW0sIG5vd3JhcExhcmdlLFxuICAgICAgY29scywgY29sc1NtYWxsLCBjb2xzTWVkaXVtLCBjb2xzTGFyZ2UsXG4gICAgICBjaGlsZHJlbiwgLi4ucHJvcHMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgcm93Q2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoXG4gICAgICBjbGFzc05hbWUsICdzbGRzLWdyaWQnLFxuICAgICAgYWxpZ24gPyBgc2xkcy1ncmlkLS1hbGlnbi0ke2FsaWdufWAgOiBudWxsLFxuICAgICAgbm93cmFwID8gJ3NsZHMtbm93cmFwJyA6ICdzbGRzLXdyYXAnLFxuICAgICAgbm93cmFwU21hbGwgPyAnc2xkcy1ub3dyYXAtLXNtYWxsJyA6IG51bGwsXG4gICAgICBub3dyYXBNZWRpdW0gPyAnc2xkcy1ub3dyYXAtLW1lZGl1bScgOiBudWxsLFxuICAgICAgbm93cmFwTGFyZ2UgPyAnc2xkcy1ub3dyYXAtLWxhcmdlJyA6IG51bGxcbiAgICApO1xuICAgIGNvbnN0IHRvdGFsQ29scyA9IGNvbHMgfHwgKCgpID0+IHtcbiAgICAgIGxldCBjbnQgPSAwO1xuICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgKGNoaWxkKSA9PiB7XG4gICAgICAgIGNudCArPSBjaGlsZC5wcm9wcy5jb2xzIHx8IDE7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjbnQ7XG4gICAgfSkoKTtcbiAgICBjb25zdCBjb2xQcm9wcyA9IHtcbiAgICAgIHRvdGFsQ29scyxcbiAgICAgIHRvdGFsQ29sc1NtYWxsOiBjb2xzU21hbGwgfHwgdG90YWxDb2xzLFxuICAgICAgdG90YWxDb2xzTWVkaXVtOiBjb2xzTWVkaXVtIHx8IHRvdGFsQ29scyxcbiAgICAgIHRvdGFsQ29sc0xhcmdlOiBjb2xzTGFyZ2UgfHwgdG90YWxDb2xzLFxuICAgIH07XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgcm93Q2xhc3NOYW1lcyB9IHsgLi4ucHJvcHMgfT5cbiAgICAgICAgeyBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIHRoaXMucmVuZGVyQ29sdW1uLmJpbmQodGhpcywgY29sUHJvcHMpKSB9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFJPV19BTElHTlMgPSBbXG4gICdjZW50ZXInLFxuICAnc3BhY2UnLFxuICAnc3ByZWFkJyxcbl07XG5cblJvdy5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihST1dfQUxJR05TKSxcbiAgbm93cmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgbm93cmFwU21hbGw6IFByb3BUeXBlcy5ib29sLFxuICBub3dyYXBNZWRpdW06IFByb3BUeXBlcy5ib29sLFxuICBub3dyYXBMYXJnZTogUHJvcFR5cGVzLmJvb2wsXG4gIGNvbHM6IFByb3BUeXBlcy5udW1iZXIsXG4gIGNvbHNTbWFsbDogUHJvcFR5cGVzLm51bWJlcixcbiAgY29sc01lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgY29sc0xhcmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5cbmV4cG9ydCBkZWZhdWx0IEdyaWQ7XG4iXX0=