UNPKG

rr-table

Version:

Responsive and customizable React Table

282 lines (222 loc) 28.1 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 _utils = require("../../utils"); var _Row = _interopRequireDefault(require("../Row")); var _Head = _interopRequireDefault(require("../Head")); var _EmptyDataRow = _interopRequireDefault(require("../defaults/EmptyDataRow")); require("../../config/styles/default.css"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _templateObject() { var data = _taggedTemplateLiteral(["\n width: 100%;\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 TableWrapper = _styledComponents.default.div(_templateObject()); /** Component */ var Table = function Table(_ref) { var breakpoints = _ref.breakpoints, cellPadding = _ref.cellPadding, center = _ref.center, colWidths = _ref.colWidths, colored = _ref.colored, emptyCellContent = _ref.emptyCellContent, emptyList = _ref.emptyList, fontSize = _ref.fontSize, head = _ref.head, headCell = _ref.headCell, headHeight = _ref.headHeight, isLoading = _ref.isLoading, keys = _ref.keys, lineClamp = _ref.lineClamp, lineHeight = _ref.lineHeight, list = _ref.list, Loader = _ref.loader, onRowClick = _ref.onRowClick, onSort = _ref.onSort, priorities = _ref.priorities, row = _ref.row, rowColor = _ref.rowColor, rowHeight = _ref.rowHeight, selectedRowId = _ref.selectedRowId, separator = _ref.separator, sort = _ref.sort, styles = _ref.styles, textColor = _ref.textColor, titles = _ref.titles; /** Head Component */ var HeadComponent = (0, _utils.defineComponentAsFunction)(head, _Head.default); var propsPassedToHeadComponent = { breakpoints: breakpoints, cellPadding: cellPadding, center: center, colWidths: colWidths, headCell: headCell, headHeight: headHeight, onSort: onSort, priorities: priorities, sortingState: sort, textColor: textColor, titles: titles }; /** Row Component */ var renderRow = function renderRow() { if (isLoading && Loader) { return _react.default.createElement(Loader, null); } if (!list || list.length === 0) { var rowContent = _react.default.createElement(_EmptyDataRow.default, null, "Pas de donn\xE9es disponibles"); if (typeof emptyList === 'function') { rowContent = emptyList(); } else if (_react.default.isValidElement(emptyList)) { rowContent = emptyList; } else if (typeof emptyList === 'string') { rowContent = _react.default.createElement(_EmptyDataRow.default, null, emptyList); } return _react.default.createElement(_Row.default, { id: "no-data", onClick: null }, rowContent); } return list.map(function (data, index) { var id = data.id || (0, _v.default)(); var items = (0, _utils.selectItems)({ data: data, keys: keys, separator: separator }); var rowProps = { data: data, id: id, breakpoints: breakpoints, cellPadding: cellPadding, center: center, colWidths: colWidths, colored: (0, _utils.setBackgroundColor)(index, colored), emptyCellContent: emptyCellContent, fontSize: fontSize, onClick: onRowClick, items: items, key: id, lineClamp: lineClamp, lineHeight: lineHeight, priorities: priorities, rowColor: rowColor, rowFeedback: true, rowHeight: rowHeight, selected: selectedRowId === id, textColor: textColor }; if (row) { return row(_objectSpread({}, rowProps)); } return _react.default.createElement(_Row.default, rowProps); }); }; /** render */ return _react.default.createElement(TableWrapper, { style: styles && styles.table }, HeadComponent(propsPassedToHeadComponent), renderRow()); }; /** Props */ Table.propTypes = { /** List of breakpoints */ breakpoints: _propTypes.default.arrayOf(_propTypes.default.number), /** Cell Padding */ cellPadding: _propTypes.default.string, /** Center the text in the cell */ center: _propTypes.default.bool, /** row background color */ colored: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.shape({ color: _propTypes.default.string, parity: _propTypes.default.oneOfType([_propTypes.default.oneOf(['even', 'odd']), _propTypes.default.number]) })]), /** List of columns widths */ colWidths: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), /** Text or Component to display when cell is empty */ emptyCellContent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]), /** What to display when list is empty */ emptyList: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.node]), /** Text font-size */ fontSize: _propTypes.default.string, /** Render Head Component */ head: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), /** Height of the Head row */ headHeight: _propTypes.default.string, /** Render HeadCell Component */ headCell: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), /** Data is loading */ isLoading: _propTypes.default.bool, /** Keys to display */ keys: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({ display: _propTypes.default.string.isRequired, replace: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]) }), _propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func])), /** Number of lines before ellipsis */ lineClamp: _propTypes.default.number, /** Height of a line */ lineHeight: _propTypes.default.number, /** List of data to display */ list: _propTypes.default.arrayOf(_propTypes.default.object), /** Component to display when data is loading */ loader: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]), /** Custom function on row click (instead of open card) */ onRowClick: _propTypes.default.func, /** List of priorities */ priorities: _propTypes.default.arrayOf(_propTypes.default.number), /** Render Row Component */ row: _propTypes.default.func, /** 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 })]), /** Height of the Row */ rowHeight: _propTypes.default.string, /** Id of the selected Row */ selectedRowId: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]), /** separator to "join" list of string */ separator: _propTypes.default.string, /** sorting function */ onSort: _propTypes.default.func, /** sorting object */ sort: _propTypes.default.shape({ sortingKey: _propTypes.default.string, order: _propTypes.default.oneOf(['ASC', 'DESC']) }), /** Custom styles */ styles: _propTypes.default.shape({ cell: _propTypes.default.object, head: _propTypes.default.object, headCell: _propTypes.default.object, row: _propTypes.default.object, table: _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 })]), /** List of Titles of the columns */ titles: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({ title: _propTypes.default.string.isRequired, sortingKey: _propTypes.default.string })])) }; var _default = Table; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RhYmxlL2luZGV4LmpzeCJdLCJuYW1lcyI6WyJUYWJsZVdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJUYWJsZSIsImJyZWFrcG9pbnRzIiwiY2VsbFBhZGRpbmciLCJjZW50ZXIiLCJjb2xXaWR0aHMiLCJjb2xvcmVkIiwiZW1wdHlDZWxsQ29udGVudCIsImVtcHR5TGlzdCIsImZvbnRTaXplIiwiaGVhZCIsImhlYWRDZWxsIiwiaGVhZEhlaWdodCIsImlzTG9hZGluZyIsImtleXMiLCJsaW5lQ2xhbXAiLCJsaW5lSGVpZ2h0IiwibGlzdCIsIkxvYWRlciIsImxvYWRlciIsIm9uUm93Q2xpY2siLCJvblNvcnQiLCJwcmlvcml0aWVzIiwicm93Iiwicm93Q29sb3IiLCJyb3dIZWlnaHQiLCJzZWxlY3RlZFJvd0lkIiwic2VwYXJhdG9yIiwic29ydCIsInN0eWxlcyIsInRleHRDb2xvciIsInRpdGxlcyIsIkhlYWRDb21wb25lbnQiLCJIZWFkIiwicHJvcHNQYXNzZWRUb0hlYWRDb21wb25lbnQiLCJzb3J0aW5nU3RhdGUiLCJyZW5kZXJSb3ciLCJsZW5ndGgiLCJyb3dDb250ZW50IiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsIm1hcCIsImRhdGEiLCJpbmRleCIsImlkIiwiaXRlbXMiLCJyb3dQcm9wcyIsIm9uQ2xpY2siLCJrZXkiLCJyb3dGZWVkYmFjayIsInNlbGVjdGVkIiwidGFibGUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwibnVtYmVyIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsInNoYXBlIiwiY29sb3IiLCJwYXJpdHkiLCJvbmVPZiIsImZ1bmMiLCJub2RlIiwib2JqZWN0IiwiZGlzcGxheSIsImlzUmVxdWlyZWQiLCJyZXBsYWNlIiwiZGVmYXVsdCIsImhvdmVyZWQiLCJzb3J0aW5nS2V5Iiwib3JkZXIiLCJjZWxsIiwidGl0bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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QUNBcEMsRUFBQUEsTUFBTSxFQUFFc0IsbUJBQVVDLE9BQVYsQ0FDTkQsbUJBQVVLLFNBQVYsQ0FBb0IsQ0FDbEJMLG1CQUFVRyxNQURRLEVBRWxCSCxtQkFBVU0sS0FBVixDQUFnQjtBQUNkZSxJQUFBQSxLQUFLLEVBQUVyQixtQkFBVUcsTUFBVixDQUFpQlcsVUFEVjtBQUVkSSxJQUFBQSxVQUFVLEVBQUVsQixtQkFBVUc7QUFGUixHQUFoQixDQUZrQixDQUFwQixDQURNO0FBakdRLENBQWxCO2VBNEdldkQsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgdXVpZHY0IGZyb20gJ3V1aWQvdjQnO1xuXG5pbXBvcnQgeyBzZXRCYWNrZ3JvdW5kQ29sb3IsIHNlbGVjdEl0ZW1zLCBkZWZpbmVDb21wb25lbnRBc0Z1bmN0aW9uIH0gZnJvbSAndXRpbHMnO1xuaW1wb3J0IFJvdyBmcm9tICdjb21wb25lbnRzL1Jvdyc7XG5pbXBvcnQgSGVhZCBmcm9tICdjb21wb25lbnRzL0hlYWQnO1xuaW1wb3J0IEVtcHR5RGF0YVJvdyBmcm9tICdjb21wb25lbnRzL2RlZmF1bHRzL0VtcHR5RGF0YVJvdyc7XG5pbXBvcnQgJ2NvbmZpZy9zdHlsZXMvZGVmYXVsdC5jc3MnO1xuXG4vKiogU3R5bGVzICovXG5jb25zdCBUYWJsZVdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbmA7XG5cbi8qKiBDb21wb25lbnQgKi9cbmNvbnN0IFRhYmxlID0gKHtcbiAgYnJlYWtwb2ludHMsXG4gIGNlbGxQYWRkaW5nLFxuICBjZW50ZXIsXG4gIGNvbFdpZHRocyxcbiAgY29sb3JlZCxcbiAgZW1wdHlDZWxsQ29udGVudCxcbiAgZW1wdHlMaXN0LFxuICBmb250U2l6ZSxcbiAgaGVhZCxcbiAgaGVhZENlbGwsXG4gIGhlYWRIZWlnaHQsXG4gIGlzTG9hZGluZyxcbiAga2V5cyxcbiAgbGluZUNsYW1wLFxuICBsaW5lSGVpZ2h0LFxuICBsaXN0LFxuICBsb2FkZXI6IExvYWRlcixcbiAgb25Sb3dDbGljayxcbiAgb25Tb3J0LFxuICBwcmlvcml0aWVzLFxuICByb3csXG4gIHJvd0NvbG9yLFxuICByb3dIZWlnaHQsXG4gIHNlbGVjdGVkUm93SWQsXG4gIHNlcGFyYXRvcixcbiAgc29ydCxcbiAgc3R5bGVzLFxuICB0ZXh0Q29sb3IsXG4gIHRpdGxlcyxcbn0pID0+IHtcbiAgLyoqIEhlYWQgQ29tcG9uZW50ICovXG4gIGNvbnN0IEhlYWRDb21wb25lbnQgPSBkZWZpbmVDb21wb25lbnRBc0Z1bmN0aW9uKGhlYWQsIEhlYWQpO1xuXG4gIGNvbnN0IHByb3BzUGFzc2VkVG9IZWFkQ29tcG9uZW50ID0ge1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGNlbGxQYWRkaW5nLFxuICAgIGNlbnRlcixcbiAgICBjb2xXaWR0aHMsXG4gICAgaGVhZENlbGwsXG4gICAgaGVhZEhlaWdodCxcbiAgICBvblNvcnQsXG4gICAgcHJpb3JpdGllcyxcbiAgICBzb3J0aW5nU3RhdGU6IHNvcnQsXG4gICAgdGV4dENvbG9yLFxuICAgIHRpdGxlcyxcbiAgfTtcblxuICAvKiogUm93IENvbXBvbmVudCAqL1xuICBjb25zdCByZW5kZXJSb3cgPSAoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZyAmJiBMb2FkZXIpIHtcbiAgICAgIHJldHVybiA8TG9hZGVyIC8+O1xuICAgIH1cbiAgICBpZiAoIWxpc3QgfHwgbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCByb3dDb250ZW50ID0gPEVtcHR5RGF0YVJvdz5QYXMgZGUgZG9ubsOpZXMgZGlzcG9uaWJsZXM8L0VtcHR5RGF0YVJvdz47XG5cbiAgICAgIGlmICh0eXBlb2YgZW1wdHlMaXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJvd0NvbnRlbnQgPSBlbXB0eUxpc3QoKTtcbiAgICAgIH0gZWxzZSBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoZW1wdHlMaXN0KSkge1xuICAgICAgICByb3dDb250ZW50ID0gZW1wdHlMaXN0O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZW1wdHlMaXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByb3dDb250ZW50ID0gPEVtcHR5RGF0YVJvdz57ZW1wdHlMaXN0fTwvRW1wdHlEYXRhUm93PjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvdyBpZD1cIm5vLWRhdGFcIiBvbkNsaWNrPXtudWxsfT5cbiAgICAgICAgICB7cm93Q29udGVudH1cbiAgICAgICAgPC9Sb3c+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0Lm1hcCgoZGF0YSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gZGF0YS5pZCB8fCB1dWlkdjQoKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhLCBrZXlzLCBzZXBhcmF0b3IgfSk7XG5cbiAgICAgIGNvbnN0IHJvd1Byb3BzID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBpZCxcbiAgICAgICAgYnJlYWtwb2ludHMsXG4gICAgICAgIGNlbGxQYWRkaW5nLFxuICAgICAgICBjZW50ZXIsXG4gICAgICAgIGNvbFdpZHRocyxcbiAgICAgICAgY29sb3JlZDogc2V0QmFja2dyb3VuZENvbG9yKGluZGV4LCBjb2xvcmVkKSxcbiAgICAgICAgZW1wdHlDZWxsQ29udGVudCxcbiAgICAgICAgZm9udFNpemUsXG4gICAgICAgIG9uQ2xpY2s6IG9uUm93Q2xpY2ssXG4gICAgICAgIGl0ZW1zLFxuICAgICAgICBrZXk6IGlkLFxuICAgICAgICBsaW5lQ2xhbXAsXG4gICAgICAgIGxpbmVIZWlnaHQsXG4gICAgICAgIHByaW9yaXRpZXMsXG4gICAgICAgIHJvd0NvbG9yLFxuICAgICAgICByb3dGZWVkYmFjazogdHJ1ZSxcbiAgICAgICAgcm93SGVpZ2h0LFxuICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRSb3dJZCA9PT0gaWQsXG4gICAgICAgIHRleHRDb2xvcixcbiAgICAgIH07XG5cbiAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvdyh7IC4uLnJvd1Byb3BzIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFJvdyB7Li4ucm93UHJvcHN9IC8+O1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKiByZW5kZXIgKi9cbiAgcmV0dXJuIChcbiAgICA8VGFibGVXcmFwcGVyIHN0eWxlPXtzdHlsZXMgJiYgc3R5bGVzLnRhYmxlfT5cbiAgICAgIHtIZWFkQ29tcG9uZW50KHByb3BzUGFzc2VkVG9IZWFkQ29tcG9uZW50KX1cbiAgICAgIHtyZW5kZXJSb3coKX1cbiAgICA8L1RhYmxlV3JhcHBlcj5cbiAgKTtcbn07XG5cbi8qKiBQcm9wcyAqL1xuVGFibGUucHJvcFR5cGVzID0ge1xuICAvKiogTGlzdCBvZiBicmVha3BvaW50cyAqL1xuICBicmVha3BvaW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gIC8qKiBDZWxsIFBhZGRpbmcgKi9cbiAgY2VsbFBhZGRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBDZW50ZXIgdGhlIHRleHQgaW4gdGhlIGNlbGwgKi9cbiAgY2VudGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIHJvdyBiYWNrZ3JvdW5kIGNvbG9yICovXG4gIGNvbG9yZWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5ib29sLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHBhcml0eTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZXZlbicsICdvZGQnXSksIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICB9KSxcbiAgXSksXG4gIC8qKiBMaXN0IG9mIGNvbHVtbnMgd2lkdGhzICovXG4gIGNvbFdpZHRoczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pKSxcbiAgLyoqIFRleHQgb3IgQ29tcG9uZW50IHRvIGRpc3BsYXkgd2hlbiBjZWxsIGlzIGVtcHR5ICovXG4gIGVtcHR5Q2VsbENvbnRlbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gIC8qKiBXaGF0IHRvIGRpc3BsYXkgd2hlbiBsaXN0IGlzIGVtcHR5ICovXG4gIGVtcHR5TGlzdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5ub2RlXSksXG4gIC8qKiBUZXh0IGZvbnQtc2l6ZSAqL1xuICBmb250U2l6ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIFJlbmRlciBIZWFkIENvbXBvbmVudCAqL1xuICBoZWFkOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKiogSGVpZ2h0IG9mIHRoZSBIZWFkIHJvdyAqL1xuICBoZWFkSGVpZ2h0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogUmVuZGVyIEhlYWRDZWxsIENvbXBvbmVudCAqL1xuICBoZWFkQ2VsbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqIERhdGEgaXMgbG9hZGluZyAqL1xuICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKiogS2V5cyB0byBkaXNwbGF5ICovXG4gIGtleXM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGRpc3BsYXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgcmVwbGFjZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyldKSxcbiAgICAgIH0pLFxuICAgICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gICAgICBQcm9wVHlwZXMuZnVuYyxcbiAgICBdKSxcbiAgKSxcbiAgLyoqIE51bWJlciBvZiBsaW5lcyBiZWZvcmUgZWxsaXBzaXMgKi9cbiAgbGluZUNsYW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKiogSGVpZ2h0IG9mIGEgbGluZSAqL1xuICBsaW5lSGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKiogTGlzdCBvZiBkYXRhIHRvIGRpc3BsYXkgKi9cbiAgbGlzdDogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG4gIC8qKiBDb21wb25lbnQgdG8gZGlzcGxheSB3aGVuIGRhdGEgaXMgbG9hZGluZyAqL1xuICBsb2FkZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ub2RlLCBQcm9wVHlwZXMuZnVuY10pLFxuICAvKiogQ3VzdG9tIGZ1bmN0aW9uIG9uIHJvdyBjbGljayAoaW5zdGVhZCBvZiBvcGVuIGNhcmQpICovXG4gIG9uUm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogTGlzdCBvZiBwcmlvcml0aWVzICovXG4gIHByaW9yaXRpZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLFxuICAvKiogUmVuZGVyIFJvdyBDb21wb25lbnQgKi9cbiAgcm93OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIENvbG9ycyBvZiB0aGUgcm93ICovXG4gIHJvd0NvbG9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkZWZhdWx0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBob3ZlcmVkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICB9KSxcbiAgXSksXG4gIC8qKiBIZWlnaHQgb2YgdGhlIFJvdyAqL1xuICByb3dIZWlnaHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBJZCBvZiB0aGUgc2VsZWN0ZWQgUm93ICovXG4gIHNlbGVjdGVkUm93SWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ib29sLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKiBzZXBhcmF0b3IgdG8gXCJqb2luXCIgbGlzdCBvZiBzdHJpbmcgKi9cbiAgc2VwYXJhdG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc29ydGluZyBmdW5jdGlvbiAqL1xuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogc29ydGluZyBvYmplY3QgKi9cbiAgc29ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBzb3J0aW5nS2V5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZGVyOiBQcm9wVHlwZXMub25lT2YoWydBU0MnLCAnREVTQyddKSxcbiAgfSksXG4gIC8qKiBDdXN0b20gc3R5bGVzICovXG4gIHN0eWxlczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjZWxsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhlYWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaGVhZENlbGw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcm93OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRhYmxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICB9KSxcbiAgLyoqIENvbG9ycyBvZiB0aGUgZGlzcGxheWVkIHRleHQgKi9cbiAgdGV4dENvbG9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkZWZhdWx0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBob3ZlcmVkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICB9KSxcbiAgXSksXG4gIC8qKiBMaXN0IG9mIFRpdGxlcyBvZiB0aGUgY29sdW1ucyAqL1xuICB0aXRsZXM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIHNvcnRpbmdLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB9KSxcbiAgICBdKSxcbiAgKSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlO1xuIl19