UNPKG

rr-table

Version:

Responsive and customizable React Table

270 lines (218 loc) 26.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _v = _interopRequireDefault(require("uuid/v4")); var _Cell = _interopRequireDefault(require("../Cell")); var _utils = require("../../utils"); var _colorPalette = require("../../config/styles/colorPalette"); require("../../config/styles/default.css"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { 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 _templateObject() { var data = _taggedTemplateLiteral(["\n background-color: ", ";\n box-sizing: border-box;\n color: ", ";\n cursor: ", ";\n display: flex;\n flex-wrap: nowrap;\n height: ", ";\n justify-content: space-evenly;\n width: 100%;\n\n transition: all 0.2s ease;\n\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } /** Styles */ var Wrapper = _styledComponents.default.div(_templateObject(), function (_ref) { var backgroundColor = _ref.backgroundColor, selected = _ref.selected, selectedRowColor = _ref.selectedRowColor; return selected ? selectedRowColor || _colorPalette.primary : backgroundColor; }, function (_ref2) { var selected = _ref2.selected, defaultTextColor = _ref2.defaultTextColor, selectedTextColor = _ref2.selectedTextColor; return selected ? selectedTextColor || 'white' : defaultTextColor; }, function (_ref3) { var clickable = _ref3.clickable; return clickable ? 'pointer' : 'normal'; }, function (_ref4) { var rowHeight = _ref4.rowHeight; return rowHeight; }, function (_ref5) { var rowFeedback = _ref5.rowFeedback, selected = _ref5.selected, clickable = _ref5.clickable, hoveredRowColor = _ref5.hoveredRowColor; return rowFeedback && !selected && clickable && (hoveredRowColor || _colorPalette.lightGrey); }, function (_ref6) { var selected = _ref6.selected, selectedTextColor = _ref6.selectedTextColor, hoveredTextColor = _ref6.hoveredTextColor; return selected ? selectedTextColor : hoveredTextColor || 'inherit'; }); /** Component */ var Row = function Row(_ref7) { var breakpoints = _ref7.breakpoints, cellPadding = _ref7.cellPadding, center = _ref7.center, children = _ref7.children, colWidths = _ref7.colWidths, colored = _ref7.colored, data = _ref7.data, emptyCellContent = _ref7.emptyCellContent, fontSize = _ref7.fontSize, id = _ref7.id, items = _ref7.items, lineClamp = _ref7.lineClamp, lineHeight = _ref7.lineHeight, onClick = _ref7.onClick, onSort = _ref7.onSort, priorities = _ref7.priorities, rowColor = _ref7.rowColor, rowFeedback = _ref7.rowFeedback, rowHeight = _ref7.rowHeight, selected = _ref7.selected, sort = _ref7.sort, style = _ref7.style, textColor = _ref7.textColor; var setBackgroundColor = function setBackgroundColor() { if (typeof colored === 'string') { return colored; } if (colored === true) { return _colorPalette.grey; } if (typeof rowColor === 'string') { return rowColor; } if (_typeof(rowColor) === 'object') { return rowColor.default; } return 'transparent'; }; var handleClick = function handleClick() { if (typeof onClick === 'function') { return onClick({ breakpoints: breakpoints, data: data, id: id, items: items, priorities: priorities }); } return null; }; var defineDefaultTextColor = function defineDefaultTextColor() { if (typeof textColor === 'string') { return textColor; } if (_typeof(textColor) === 'object') { return textColor.default; } return 'inherit'; }; return _react.default.createElement(Wrapper, { backgroundColor: setBackgroundColor(), clickable: typeof onClick === 'function', defaultTextColor: defineDefaultTextColor(), hoveredRowColor: _typeof(rowColor) === 'object' && rowColor.hovered, hoveredTextColor: _typeof(textColor) === 'object' && textColor.hovered, onClick: handleClick, rowFeedback: rowFeedback, rowHeight: rowHeight, selected: selected, selectedRowColor: _typeof(rowColor) === 'object' && rowColor.selected, selectedTextColor: _typeof(textColor) === 'object' && textColor.selected, style: style }, children || items.map(function (item, i) { var cellId = (0, _v.default)(); var columnWidth = colWidths && colWidths[i]; var width = (0, _utils.defineColWidth)(columnWidth); return _react.default.createElement(_Cell.default, { breakpoints: breakpoints, center: center, data: item, emptyCellContent: emptyCellContent, fontSize: fontSize, id: cellId, key: cellId, lineClamp: lineClamp, lineHeight: lineHeight, onSort: onSort, padding: cellPadding, priority: priorities && priorities[i], sort: sort // textColor={textColor} , width: width }); })); }; /** PropTypes */ Row.propTypes = { /** List of media queries breakpoints */ breakpoints: _propTypes.default.arrayOf(_propTypes.default.number), /** Center the text in the cell */ center: _propTypes.default.bool, /** Cell Padding */ cellPadding: _propTypes.default.string, children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]), // TODO /** List of columns widths */ colWidths: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), /** Color one line out of two (set to true or set color) */ colored: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]), /** Data as an object */ data: _propTypes.default.object, /** Text or Component to display when cell is empty */ emptyCellContent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]), /** Text font-size */ fontSize: _propTypes.default.string, /** Row id */ id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired, /** List of the data */ items: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.node, _propTypes.default.shape({ title: _propTypes.default.string.isRequired, sortingKey: _propTypes.default.string })])), /** Number of lines before ellipsis */ lineClamp: _propTypes.default.number, /** Height of a line */ lineHeight: _propTypes.default.number, /** List of column display priorities */ priorities: _propTypes.default.arrayOf(_propTypes.default.number), /** Colors of the row */ rowColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({ default: _propTypes.default.string.isRequired, hovered: _propTypes.default.string, selected: _propTypes.default.string.isRequired })]), /** user feedback */ rowFeedback: _propTypes.default.bool, /** Height of the Row */ rowHeight: _propTypes.default.string, /** row is selected */ selected: _propTypes.default.bool, /** On row click custom func */ onClick: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.bool]), /** sorting function */ onSort: _propTypes.default.func, /** sorting object */ sort: _propTypes.default.shape({ sortingKey: _propTypes.default.string, order: _propTypes.default.oneOf(['ASC', 'DESC']) }), /** Custom Row style */ style: _propTypes.default.object, /** Colors of the displayed text */ textColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({ default: _propTypes.default.string.isRequired, hovered: _propTypes.default.string, selected: _propTypes.default.string.isRequired })]) }; Row.defaultProps = { rowHeight: '4em' }; var _default = Row; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1Jvdy9pbmRleC5qc3giXSwibmFtZXMiOlsiV3JhcHBlciIsInN0eWxlZCIsImRpdiIsImJhY2tncm91bmRDb2xvciIsInNlbGVjdGVkIiwic2VsZWN0ZWRSb3dDb2xvciIsInByaW1hcnkiLCJkZWZhdWx0VGV4dENvbG9yIiwic2VsZWN0ZWRUZXh0Q29sb3IiLCJjbGlja2FibGUiLCJyb3dIZWlnaHQiLCJyb3dGZWVkYmFjayIsImhvdmVyZWRSb3dDb2xvciIsImxpZ2h0R3JleSIsImhvdmVyZWRUZXh0Q29sb3IiLCJSb3ciLCJicmVha3BvaW50cyIsImNlbGxQYWRkaW5nIiwiY2VudGVyIiwiY2hpbGRyZW4iLCJjb2xXaWR0aHMiLCJjb2xvcmVkIiwiZGF0YSIsImVtcHR5Q2VsbENvbnRlbnQiLCJmb250U2l6ZSIsImlkIiwiaXRlbXMiLCJsaW5lQ2xhbXAiLCJsaW5lSGVpZ2h0Iiwib25DbGljayIsIm9uU29ydCIsInByaW9yaXRpZXMiLCJyb3dDb2xvciIsInNvcnQiLCJzdHlsZSIsInRleHRDb2xvciIsInNldEJhY2tncm91bmRDb2xvciIsImdyZXkiLCJkZWZhdWx0IiwiaGFuZGxlQ2xpY2siLCJkZWZpbmVEZWZhdWx0VGV4dENvbG9yIiwiaG92ZXJlZCIsIm1hcCIsIml0ZW0iLCJpIiwiY2VsbElkIiwiY29sdW1uV2lkdGgiLCJ3aWR0aCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJudW1iZXIiLCJib29sIiwic3RyaW5nIiwib25lT2ZUeXBlIiwibm9kZSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic2hhcGUiLCJ0aXRsZSIsInNvcnRpbmdLZXkiLCJvcmRlciIsIm9uZU9mIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0Es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QUFVVSxLQUFWLENBQWdCO0FBQ3BCRSxJQUFBQSxVQUFVLEVBQUVaLG1CQUFVSSxNQURGO0FBRXBCUyxJQUFBQSxLQUFLLEVBQUViLG1CQUFVYyxLQUFWLENBQWdCLENBQUMsS0FBRCxFQUFRLE1BQVIsQ0FBaEI7QUFGYSxHQUFoQixDQTNEUTs7QUErRGQ7QUFDQTdCLEVBQUFBLEtBQUssRUFBRWUsbUJBQVVPLE1BaEVIOztBQWlFZDtBQUNBckIsRUFBQUEsU0FBUyxFQUFFYyxtQkFBVUssU0FBVixDQUFvQixDQUM3QkwsbUJBQVVJLE1BRG1CLEVBRTdCSixtQkFBVVUsS0FBVixDQUFnQjtBQUNkckIsSUFBQUEsT0FBTyxFQUFFVyxtQkFBVUksTUFBVixDQUFpQkssVUFEWjtBQUVkakIsSUFBQUEsT0FBTyxFQUFFUSxtQkFBVUksTUFGTDtBQUdkakQsSUFBQUEsUUFBUSxFQUFFNkMsbUJBQVVJLE1BQVYsQ0FBaUJLO0FBSGIsR0FBaEIsQ0FGNkIsQ0FBcEI7QUFsRUcsQ0FBaEI7QUE0RUEzQyxHQUFHLENBQUNpRCxZQUFKLEdBQW1CO0FBQ2pCdEQsRUFBQUEsU0FBUyxFQUFFO0FBRE0sQ0FBbkI7ZUFJZUssRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgdXVpZHY0IGZyb20gJ3V1aWQvdjQnO1xuXG5pbXBvcnQgQ2VsbCBmcm9tICdjb21wb25lbnRzL0NlbGwnO1xuXG5pbXBvcnQgeyBkZWZpbmVDb2xXaWR0aCB9IGZyb20gJ3V0aWxzJztcbmltcG9ydCB7IGdyZXksIHByaW1hcnksIGxpZ2h0R3JleSB9IGZyb20gJ2NvbmZpZy9zdHlsZXMvY29sb3JQYWxldHRlJztcbmltcG9ydCAnY29uZmlnL3N0eWxlcy9kZWZhdWx0LmNzcyc7XG5cbi8qKiBTdHlsZXMgKi9cbmNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IGJhY2tncm91bmRDb2xvciwgc2VsZWN0ZWQsIHNlbGVjdGVkUm93Q29sb3IgfSkgPT4gKHNlbGVjdGVkID8gc2VsZWN0ZWRSb3dDb2xvciB8fCBwcmltYXJ5IDogYmFja2dyb3VuZENvbG9yKX07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGNvbG9yOiAkeyh7IHNlbGVjdGVkLCBkZWZhdWx0VGV4dENvbG9yLCBzZWxlY3RlZFRleHRDb2xvciB9KSA9PiAoc2VsZWN0ZWQgPyBzZWxlY3RlZFRleHRDb2xvciB8fCAnd2hpdGUnIDogZGVmYXVsdFRleHRDb2xvcil9O1xuICBjdXJzb3I6ICR7KHsgY2xpY2thYmxlIH0pID0+IChjbGlja2FibGUgPyAncG9pbnRlcicgOiAnbm9ybWFsJyl9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgaGVpZ2h0OiAkeyh7IHJvd0hlaWdodCB9KSA9PiByb3dIZWlnaHR9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7XG4gICAgcm93RmVlZGJhY2ssIHNlbGVjdGVkLCBjbGlja2FibGUsIGhvdmVyZWRSb3dDb2xvcixcbiAgfSkgPT4gcm93RmVlZGJhY2sgJiYgIXNlbGVjdGVkICYmIGNsaWNrYWJsZSAmJiAoaG92ZXJlZFJvd0NvbG9yIHx8IGxpZ2h0R3JleSl9O1xuICAgIGNvbG9yOiAkeyh7IHNlbGVjdGVkLCBzZWxlY3RlZFRleHRDb2xvciwgaG92ZXJlZFRleHRDb2xvciB9KSA9PiAoc2VsZWN0ZWQgPyBzZWxlY3RlZFRleHRDb2xvciA6IGhvdmVyZWRUZXh0Q29sb3IgfHwgJ2luaGVyaXQnKX07XG4gIH1cbmA7XG5cbi8qKiBDb21wb25lbnQgKi9cbmNvbnN0IFJvdyA9ICh7XG4gIGJyZWFrcG9pbnRzLFxuICBjZWxsUGFkZGluZyxcbiAgY2VudGVyLFxuICBjaGlsZHJlbixcbiAgY29sV2lkdGhzLFxuICBjb2xvcmVkLFxuICBkYXRhLFxuICBlbXB0eUNlbGxDb250ZW50LFxuICBmb250U2l6ZSxcbiAgaWQsXG4gIGl0ZW1zLFxuICBsaW5lQ2xhbXAsXG4gIGxpbmVIZWlnaHQsXG4gIG9uQ2xpY2ssXG4gIG9uU29ydCxcbiAgcHJpb3JpdGllcyxcbiAgcm93Q29sb3IsXG4gIHJvd0ZlZWRiYWNrLFxuICByb3dIZWlnaHQsXG4gIHNlbGVjdGVkLFxuICBzb3J0LFxuICBzdHlsZSxcbiAgdGV4dENvbG9yLFxufSkgPT4ge1xuICBjb25zdCBzZXRCYWNrZ3JvdW5kQ29sb3IgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb2xvcmVkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvbG9yZWQ7XG4gICAgfVxuICAgIGlmIChjb2xvcmVkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZ3JleTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByb3dDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByb3dDb2xvcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByb3dDb2xvciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiByb3dDb2xvci5kZWZhdWx0O1xuICAgIH1cblxuICAgIHJldHVybiAndHJhbnNwYXJlbnQnO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG9uQ2xpY2soe1xuICAgICAgICBicmVha3BvaW50cyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgaWQsXG4gICAgICAgIGl0ZW1zLFxuICAgICAgICBwcmlvcml0aWVzLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IGRlZmluZURlZmF1bHRUZXh0Q29sb3IgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB0ZXh0Q29sb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGV4dENvbG9yO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRleHRDb2xvciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0ZXh0Q29sb3IuZGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuICdpbmhlcml0JztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxXcmFwcGVyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I9e3NldEJhY2tncm91bmRDb2xvcigpfVxuICAgICAgY2xpY2thYmxlPXt0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJ31cbiAgICAgIGRlZmF1bHRUZXh0Q29sb3I9e2RlZmluZURlZmF1bHRUZXh0Q29sb3IoKX1cbiAgICAgIGhvdmVyZWRSb3dDb2xvcj17dHlwZW9mIHJvd0NvbG9yID09PSAnb2JqZWN0JyAmJiByb3dDb2xvci5ob3ZlcmVkfVxuICAgICAgaG92ZXJlZFRleHRDb2xvcj17dHlwZW9mIHRleHRDb2xvciA9PT0gJ29iamVjdCcgJiYgdGV4dENvbG9yLmhvdmVyZWR9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIHJvd0ZlZWRiYWNrPXtyb3dGZWVkYmFja31cbiAgICAgIHJvd0hlaWdodD17cm93SGVpZ2h0fVxuICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgc2VsZWN0ZWRSb3dDb2xvcj17dHlwZW9mIHJvd0NvbG9yID09PSAnb2JqZWN0JyAmJiByb3dDb2xvci5zZWxlY3RlZH1cbiAgICAgIHNlbGVjdGVkVGV4dENvbG9yPXt0eXBlb2YgdGV4dENvbG9yID09PSAnb2JqZWN0JyAmJiB0ZXh0Q29sb3Iuc2VsZWN0ZWR9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAge2NoaWxkcmVuXG4gICAgICAgIHx8IGl0ZW1zLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNlbGxJZCA9IHV1aWR2NCgpO1xuICAgICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY29sV2lkdGhzICYmIGNvbFdpZHRoc1tpXTtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGRlZmluZUNvbFdpZHRoKGNvbHVtbldpZHRoKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENlbGxcbiAgICAgICAgICAgICAgYnJlYWtwb2ludHM9e2JyZWFrcG9pbnRzfVxuICAgICAgICAgICAgICBjZW50ZXI9e2NlbnRlcn1cbiAgICAgICAgICAgICAgZGF0YT17aXRlbX1cbiAgICAgICAgICAgICAgZW1wdHlDZWxsQ29udGVudD17ZW1wdHlDZWxsQ29udGVudH1cbiAgICAgICAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICAgICAgICBpZD17Y2VsbElkfVxuICAgICAgICAgICAgICBrZXk9e2NlbGxJZH1cbiAgICAgICAgICAgICAgbGluZUNsYW1wPXtsaW5lQ2xhbXB9XG4gICAgICAgICAgICAgIGxpbmVIZWlnaHQ9e2xpbmVIZWlnaHR9XG4gICAgICAgICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICAgICAgICBwYWRkaW5nPXtjZWxsUGFkZGluZ31cbiAgICAgICAgICAgICAgcHJpb3JpdHk9e3ByaW9yaXRpZXMgJiYgcHJpb3JpdGllc1tpXX1cbiAgICAgICAgICAgICAgc29ydD17c29ydH1cbiAgICAgICAgICAgICAgLy8gdGV4dENvbG9yPXt0ZXh0Q29sb3J9XG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgPC9XcmFwcGVyPlxuICApO1xufTtcblxuLyoqIFByb3BUeXBlcyAqL1xuUm93LnByb3BUeXBlcyA9IHtcbiAgLyoqIExpc3Qgb2YgbWVkaWEgcXVlcmllcyBicmVha3BvaW50cyAqL1xuICBicmVha3BvaW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gIC8qKiBDZW50ZXIgdGhlIHRleHQgaW4gdGhlIGNlbGwgKi9cbiAgY2VudGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIENlbGwgUGFkZGluZyAqL1xuICBjZWxsUGFkZGluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ub2RlLCBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSldKSwgLy8gVE9ET1xuICAvKiogTGlzdCBvZiBjb2x1bW5zIHdpZHRocyAqL1xuICBjb2xXaWR0aHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSksXG4gIC8qKiBDb2xvciBvbmUgbGluZSBvdXQgb2YgdHdvIChzZXQgdG8gdHJ1ZSBvciBzZXQgY29sb3IpICovXG4gIGNvbG9yZWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ib29sLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKiBEYXRhIGFzIGFuIG9iamVjdCAqL1xuICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogVGV4dCBvciBDb21wb25lbnQgdG8gZGlzcGxheSB3aGVuIGNlbGwgaXMgZW1wdHkgKi9cbiAgZW1wdHlDZWxsQ29udGVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqIFRleHQgZm9udC1zaXplICovXG4gIGZvbnRTaXplOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogUm93IGlkICovXG4gIGlkOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSkuaXNSZXF1aXJlZCxcbiAgLyoqIExpc3Qgb2YgdGhlIGRhdGEgKi9cbiAgaXRlbXM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMubm9kZSxcbiAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIHNvcnRpbmdLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB9KSxcbiAgICBdKSxcbiAgKSxcbiAgLyoqIE51bWJlciBvZiBsaW5lcyBiZWZvcmUgZWxsaXBzaXMgKi9cbiAgbGluZUNsYW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKiogSGVpZ2h0IG9mIGEgbGluZSAqL1xuICBsaW5lSGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKiBMaXN0IG9mIGNvbHVtbiBkaXNwbGF5IHByaW9yaXRpZXMgKi9cbiAgcHJpb3JpdGllczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gIC8qKiBDb2xvcnMgb2YgdGhlIHJvdyAqL1xuICByb3dDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZGVmYXVsdDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgaG92ZXJlZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHNlbGVjdGVkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgfSksXG4gIF0pLFxuICAvKiogdXNlciBmZWVkYmFjayAqL1xuICByb3dGZWVkYmFjazogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBIZWlnaHQgb2YgdGhlIFJvdyAqL1xuICByb3dIZWlnaHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiByb3cgaXMgc2VsZWN0ZWQgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKiogT24gcm93IGNsaWNrIGN1c3RvbSBmdW5jICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuYm9vbF0pLFxuICAvKiogc29ydGluZyBmdW5jdGlvbiAqL1xuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogc29ydGluZyBvYmplY3QgKi9cbiAgc29ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBzb3J0aW5nS2V5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZGVyOiBQcm9wVHlwZXMub25lT2YoWydBU0MnLCAnREVTQyddKSxcbiAgfSksXG4gIC8qKiBDdXN0b20gUm93IHN0eWxlICovXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogQ29sb3JzIG9mIHRoZSBkaXNwbGF5ZWQgdGV4dCAqL1xuICB0ZXh0Q29sb3I6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGRlZmF1bHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGhvdmVyZWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBzZWxlY3RlZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH0pLFxuICBdKSxcbn07XG5cblJvdy5kZWZhdWx0UHJvcHMgPSB7XG4gIHJvd0hlaWdodDogJzRlbScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSb3c7XG4iXX0=