adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
207 lines (206 loc) • 37.4 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _icon = _interopRequireDefault(require("../icon"));
var _popover = _interopRequireDefault(require("../popover"));
var _checkbox = _interopRequireDefault(require("../checkbox"));
var _radio = _interopRequireDefault(require("../radio"));
require("./style");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
var prefix = "adui-table";
var getFilteredValue = function getFilteredValue(val) {
if (val === null || val === undefined || val.length === 0) {
return ["all"];
}
return val;
};
var TableFilter = function TableFilter(_ref) {
var filterSearchable = _ref.filterSearchable,
filterSearchPlaceholder = _ref.filterSearchPlaceholder,
filterSearchCaseSensitive = _ref.filterSearchCaseSensitive,
filterSearchFunc = _ref.filterSearchFunc,
filteredValueProp = _ref.filteredValue,
filterMultiple = _ref.filterMultiple,
filterPopoverProps = _ref.filterPopoverProps,
filterVisible = _ref.filterVisible,
filtersProp = _ref.filters,
onFilter = _ref.onFilter,
onFilterVisibleChange = _ref.onFilterVisibleChange,
title = _ref.title,
sortableAndFilterable = _ref.sortableAndFilterable;
if (!filtersProp) {
return null;
}
var _useState = (0, _react.useState)(getFilteredValue(filteredValueProp)),
_useState2 = _slicedToArray(_useState, 2),
filteredValue = _useState2[0],
setFilteredValue = _useState2[1];
var _useState3 = (0, _react.useState)(filterVisible || false),
_useState4 = _slicedToArray(_useState3, 2),
visible = _useState4[0],
setVisible = _useState4[1];
var _useState5 = (0, _react.useState)(""),
_useState6 = _slicedToArray(_useState5, 2),
searchValue = _useState6[0],
setSearchValue = _useState6[1];
if (filteredValueProp !== null && filteredValueProp !== undefined && JSON.stringify(filteredValue) !== JSON.stringify(getFilteredValue(filteredValueProp))) {
setFilteredValue(getFilteredValue(filteredValueProp));
}
if (typeof filterVisible === "boolean" && visible !== filterVisible) {
setVisible(filterVisible);
}
var handleChange = function handleChange(filteredValueParam) {
var newValue = filterMultiple && filteredValueParam ? filteredValueParam : [filteredValueParam];
if (newValue.includes("all")) {
newValue.splice(newValue.indexOf("all"), 1);
}
if (filteredValueProp === null) {
setFilteredValue(getFilteredValue(newValue));
}
if (onFilter) {
if (filteredValueParam === "all") {
onFilter([]);
} else {
onFilter(newValue);
}
}
if (!filterMultiple) {
setTimeout(function () {
if (onFilterVisibleChange) {
onFilterVisibleChange(false);
}
setVisible(false);
}, 100);
}
};
var popup;
if (filterSearchable) {
popup = _react["default"].createElement("div", null, _react["default"].createElement("div", {
className: "".concat(prefix, "-filter-search")
}, _react["default"].createElement("input", {
value: searchValue,
placeholder: filterSearchPlaceholder,
onChange: function onChange(e) {
var value = e.target.value;
setSearchValue(value);
}
}), _react["default"].createElement(_icon["default"], {
icon: "search",
className: "".concat(prefix, "-filter-icon")
})));
}
var filters = searchValue ? filtersProp.filter(function (o) {
var text = o.text;
if (filterSearchFunc) {
return filterSearchFunc(searchValue, o);
}
if (!filterSearchCaseSensitive) {
return String(text).toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
}
return String(text).includes(searchValue);
}) : filtersProp;
if (filterMultiple) {
popup = _react["default"].createElement(_react["default"].Fragment, null, popup, !filters.length ? _react["default"].createElement("div", {
className: "".concat(prefix, "-filter-no")
}, "\u65E0\u5339\u914D\u7ED3\u679C") : _react["default"].createElement(_checkbox["default"].Group, {
className: "".concat(prefix, "-filterList"),
defaultValue: ["all"],
value: filteredValue,
onChange: handleChange
}, filters.map(function (item) {
return _react["default"].createElement(_checkbox["default"], {
key: item.value,
value: item.value
}, item.text);
})));
} else {
popup = _react["default"].createElement(_react["default"].Fragment, null, popup, !filters.length ? _react["default"].createElement("div", {
className: "".concat(prefix, "-filter-no")
}, "\u65E0\u5339\u914D\u7ED3\u679C") : _react["default"].createElement(_radio["default"].Group, {
className: "".concat(prefix, "-filterList"),
defaultValue: "all",
value: filteredValue ? filteredValue[0] : null,
onChange: handleChange
}, _react["default"].createElement(_radio["default"], {
value: "all"
}, "\u5168\u90E8"), filters.map(function (item) {
return _react["default"].createElement(_radio["default"], {
key: item.value,
value: item.value
}, item.text);
})));
}
return _react["default"].createElement(_popover["default"], _extends({
arrowed: false,
visible: visible,
onVisibleChange: function onVisibleChange(bool) {
if (typeof filterVisible !== "boolean") {
setVisible(bool);
}
if (onFilterVisibleChange) {
onFilterVisibleChange(bool);
}
},
popup: popup,
trigger: "click",
placement: "bottomLeft"
}, filterPopoverProps), _react["default"].createElement("div", {
"data-value": filteredValue,
role: "columnheader",
className: (0, _classnames["default"])("".concat(prefix, "-filter"), _defineProperty({}, "".concat(prefix, "-filtered"), filteredValue && (filteredValue.length > 1 || filteredValue[0] !== "all")))
}, !sortableAndFilterable ? title : null, _react["default"].createElement(_icon["default"], {
icon: "filter-outlined"
}), !sortableAndFilterable && _react["default"].createElement("div", {
className: "".concat(prefix, "-clickholder")
})));
};
TableFilter.propTypes = {
filterMultiple: _propTypes["default"].bool,
filterSearchable: _propTypes["default"].bool,
filterSearchCaseSensitive: _propTypes["default"].bool,
filterSearchPlaceholder: _propTypes["default"].string,
filterSearchFunc: _propTypes["default"].func,
filterPopoverProps: _propTypes["default"].object,
filteredValue: _propTypes["default"].array,
filters: _propTypes["default"].any,
filterVisible: _propTypes["default"].bool,
onFilter: _propTypes["default"].func,
onFilterVisibleChange: _propTypes["default"].func,
title: _propTypes["default"].node,
sortableAndFilterable: _propTypes["default"].bool
};
TableFilter.defaultProps = {
filterMultiple: false,
filterSearchable: false,
filterSearchCaseSensitive: false,
filterSearchPlaceholder: "在筛选项中搜索",
filterSearchFunc: undefined,
filterPopoverProps: {},
filteredValue: null,
filterVisible: null,
filters: null,
onFilter: null,
onFilterVisibleChange: null,
title: null,
sortableAndFilterable: false
};
var _default = exports["default"] = TableFilter;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX2ljb24iLCJfcG9wb3ZlciIsIl9jaGVja2JveCIsIl9yYWRpbyIsImUiLCJfX2VzTW9kdWxlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsInIiLCJ0IiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5IiwiX2RlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImwiLCJpdGVyYXRvciIsImYiLCJvIiwibmV4dCIsImRvbmUiLCJwdXNoIiwiaXNBcnJheSIsInByZWZpeCIsImdldEZpbHRlcmVkVmFsdWUiLCJ2YWwiLCJ1bmRlZmluZWQiLCJUYWJsZUZpbHRlciIsIl9yZWYiLCJmaWx0ZXJTZWFyY2hhYmxlIiwiZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXIiLCJmaWx0ZXJTZWFyY2hDYXNlU2Vuc2l0aXZlIiwiZmlsdGVyU2VhcmNoRnVuYyIsImZpbHRlcmVkVmFsdWVQcm9wIiwiZmlsdGVyZWRWYWx1ZSIsImZpbHRlck11bHRpcGxlIiwiZmlsdGVyUG9wb3ZlclByb3BzIiwiZmlsdGVyVmlzaWJsZSIsImZpbHRlcnNQcm9wIiwiZmlsdGVycyIsIm9uRmlsdGVyIiwib25GaWx0ZXJWaXNpYmxlQ2hhbmdlIiwidGl0bGUiLCJzb3J0YWJsZUFuZEZpbHRlcmFibGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJzZXRGaWx0ZXJlZFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJoYW5kbGVDaGFuZ2UiLCJmaWx0ZXJlZFZhbHVlUGFyYW0iLCJuZXdWYWx1ZSIsImluY2x1ZGVzIiwic3BsaWNlIiwiaW5kZXhPZiIsInNldFRpbWVvdXQiLCJwb3B1cCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb25jYXQiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwidGFyZ2V0IiwiaWNvbiIsImZpbHRlciIsInRleHQiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsIkZyYWdtZW50IiwiR3JvdXAiLCJkZWZhdWx0VmFsdWUiLCJtYXAiLCJpdGVtIiwia2V5IiwiYXJyb3dlZCIsIm9uVmlzaWJsZUNoYW5nZSIsImJvb2wiLCJ0cmlnZ2VyIiwicGxhY2VtZW50Iiwicm9sZSIsImNsYXNzTmFtZXMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwib2JqZWN0IiwiYXJyYXkiLCJhbnkiLCJub2RlIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy90YWJsZS9UYWJsZUZpbHRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFBvcG92ZXIsIHsgSVBvcG92ZXJQcm9wcyB9IGZyb20gXCIuLi9wb3BvdmVyXCJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi4vY2hlY2tib3hcIlxuaW1wb3J0IFJhZGlvIGZyb20gXCIuLi9yYWRpb1wiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXRhYmxlXCJcbmNvbnN0IGdldEZpbHRlcmVkVmFsdWUgPSAodmFsPzogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtcImFsbFwiXVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVGaWx0ZXJQcm9wcyB7XG4gIGZpbHRlcmVkVmFsdWU/OiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbFxuICBmaWx0ZXJNdWx0aXBsZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoYWJsZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZmlsdGVyU2VhcmNoRnVuYz86IChcbiAgICBpbnB1dDogc3RyaW5nLFxuICAgIGl0ZW06IHsgdGV4dDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1cbiAgKSA9PiBib29sZWFuXG4gIGZpbHRlclBvcG92ZXJQcm9wcz86IElQb3BvdmVyUHJvcHNcbiAgZmlsdGVycz86IEFycmF5PHsgdGV4dDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwgbnVsbFxuICBmaWx0ZXJWaXNpYmxlPzogYm9vbGVhbiB8IG51bGxcbiAgb25GaWx0ZXI/OiAoKHZhbHVlOiAoc3RyaW5nIHwgbnVtYmVyKVtdKSA9PiB2b2lkKSB8IG51bGxcbiAgb25GaWx0ZXJWaXNpYmxlQ2hhbmdlPzogKCh2aXNpYmxlOiBib29sZWFuKSA9PiB2b2lkKSB8IG51bGxcbiAgdGl0bGU/OiBSZWFjdC5SZWFjdE5vZGVcbiAgc29ydGFibGVBbmRGaWx0ZXJhYmxlPzogYm9vbGVhblxufVxuXG4vKipcbiAqIOihqOagvOetm+mAiVxuICovXG5jb25zdCBUYWJsZUZpbHRlcjogUmVhY3QuRkM8SVRhYmxlRmlsdGVyUHJvcHM+ID0gKHtcbiAgZmlsdGVyU2VhcmNoYWJsZSxcbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXIsXG4gIGZpbHRlclNlYXJjaENhc2VTZW5zaXRpdmUsXG4gIGZpbHRlclNlYXJjaEZ1bmMsXG4gIGZpbHRlcmVkVmFsdWU6IGZpbHRlcmVkVmFsdWVQcm9wLFxuICBmaWx0ZXJNdWx0aXBsZSxcbiAgZmlsdGVyUG9wb3ZlclByb3BzLFxuICBmaWx0ZXJWaXNpYmxlLFxuICBmaWx0ZXJzOiBmaWx0ZXJzUHJvcCxcbiAgb25GaWx0ZXIsXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZSxcbiAgdGl0bGUsXG4gIHNvcnRhYmxlQW5kRmlsdGVyYWJsZSxcbn06IElUYWJsZUZpbHRlclByb3BzKSA9PiB7XG4gIGlmICghZmlsdGVyc1Byb3ApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IFtmaWx0ZXJlZFZhbHVlLCBzZXRGaWx0ZXJlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGdldEZpbHRlcmVkVmFsdWUoZmlsdGVyZWRWYWx1ZVByb3ApXG4gIClcbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmlsdGVyVmlzaWJsZSB8fCBmYWxzZSlcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKVxuXG4gIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgaWYgKFxuICAgIGZpbHRlcmVkVmFsdWVQcm9wICE9PSBudWxsICYmXG4gICAgZmlsdGVyZWRWYWx1ZVByb3AgIT09IHVuZGVmaW5lZCAmJlxuICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkVmFsdWUpICE9PVxuICAgICAgSlNPTi5zdHJpbmdpZnkoZ2V0RmlsdGVyZWRWYWx1ZShmaWx0ZXJlZFZhbHVlUHJvcCkpXG4gICkge1xuICAgIHNldEZpbHRlcmVkVmFsdWUoZ2V0RmlsdGVyZWRWYWx1ZShmaWx0ZXJlZFZhbHVlUHJvcCkpXG4gIH1cblxuICBpZiAodHlwZW9mIGZpbHRlclZpc2libGUgPT09IFwiYm9vbGVhblwiICYmIHZpc2libGUgIT09IGZpbHRlclZpc2libGUpIHtcbiAgICBzZXRWaXNpYmxlKGZpbHRlclZpc2libGUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXG4gICAgZmlsdGVyZWRWYWx1ZVBhcmFtOiAoc3RyaW5nIHwgbnVtYmVyKSB8IChzdHJpbmcgfCBudW1iZXIpW11cbiAgKSA9PiB7XG4gICAgY29uc3QgbmV3VmFsdWU6IGFueSA9XG4gICAgICBmaWx0ZXJNdWx0aXBsZSAmJiBmaWx0ZXJlZFZhbHVlUGFyYW1cbiAgICAgICAgPyBmaWx0ZXJlZFZhbHVlUGFyYW1cbiAgICAgICAgOiBbZmlsdGVyZWRWYWx1ZVBhcmFtXVxuICAgIGlmIChuZXdWYWx1ZS5pbmNsdWRlcyhcImFsbFwiKSkge1xuICAgICAgbmV3VmFsdWUuc3BsaWNlKG5ld1ZhbHVlLmluZGV4T2YoXCJhbGxcIiksIDEpXG4gICAgfVxuICAgIGlmIChmaWx0ZXJlZFZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgc2V0RmlsdGVyZWRWYWx1ZShnZXRGaWx0ZXJlZFZhbHVlKG5ld1ZhbHVlKSlcbiAgICB9XG4gICAgaWYgKG9uRmlsdGVyKSB7XG4gICAgICBpZiAoZmlsdGVyZWRWYWx1ZVBhcmFtID09PSBcImFsbFwiKSB7XG4gICAgICAgIG9uRmlsdGVyKFtdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25GaWx0ZXIobmV3VmFsdWUpXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZmlsdGVyTXVsdGlwbGUpIHtcbiAgICAgIC8vIOW7tui/n+aYr+S4uuS6huiuqeeKtuaAgeeahOWPmOWMluWcqOinhuinieS4iuWFiOiiq+aOpeWPl1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChvbkZpbHRlclZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICBvbkZpbHRlclZpc2libGVDaGFuZ2UoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgc2V0VmlzaWJsZShmYWxzZSlcbiAgICAgIH0sIDEwMClcbiAgICB9XG4gIH1cblxuICBsZXQgcG9wdXBcblxuICBpZiAoZmlsdGVyU2VhcmNoYWJsZSkge1xuICAgIHBvcHVwID0gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLXNlYXJjaGB9PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ZpbHRlclNlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGUudGFyZ2V0XG4gICAgICAgICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxJY29uIGljb249XCJzZWFyY2hcIiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLWljb25gfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnMgPSBzZWFyY2hWYWx1ZVxuICAgID8gZmlsdGVyc1Byb3AuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdGV4dCB9ID0gb1xuICAgICAgICBpZiAoZmlsdGVyU2VhcmNoRnVuYykge1xuICAgICAgICAgIHJldHVybiBmaWx0ZXJTZWFyY2hGdW5jKHNlYXJjaFZhbHVlLCBvKVxuICAgICAgICB9XG4gICAgICAgIGlmICghZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodGV4dClcbiAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKHRleHQpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKVxuICAgICAgfSlcbiAgICA6IGZpbHRlcnNQcm9wXG5cbiAgaWYgKGZpbHRlck11bHRpcGxlKSB7XG4gICAgcG9wdXAgPSAoXG4gICAgICA8PlxuICAgICAgICB7cG9wdXB9XG4gICAgICAgIHshZmlsdGVycy5sZW5ndGggPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLW5vYH0+5peg5Yy56YWN57uT5p6cPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPENoZWNrYm94Lkdyb3VwXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyTGlzdGB9XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e1tcImFsbFwiXX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZmlsdGVycy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgPENoZWNrYm94IGtleT17aXRlbS52YWx1ZX0gdmFsdWU9e2l0ZW0udmFsdWV9PlxuICAgICAgICAgICAgICAgIHtpdGVtLnRleHR9XG4gICAgICAgICAgICAgIDwvQ2hlY2tib3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0NoZWNrYm94Lkdyb3VwPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHBvcHVwID0gKFxuICAgICAgPD5cbiAgICAgICAge3BvcHVwfVxuICAgICAgICB7IWZpbHRlcnMubGVuZ3RoID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWZpbHRlci1ub2B9PuaXoOWMuemFjee7k+aenDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSYWRpby5Hcm91cFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWZpbHRlckxpc3RgfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPVwiYWxsXCJcbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJlZFZhbHVlID8gZmlsdGVyZWRWYWx1ZVswXSA6IG51bGx9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSYWRpbyB2YWx1ZT1cImFsbFwiPuWFqOmDqDwvUmFkaW8+XG4gICAgICAgICAgICB7ZmlsdGVycy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgPFJhZGlvIGtleT17aXRlbS52YWx1ZX0gdmFsdWU9e2l0ZW0udmFsdWV9PlxuICAgICAgICAgICAgICAgIHtpdGVtLnRleHR9XG4gICAgICAgICAgICAgIDwvUmFkaW8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvLkdyb3VwPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlclxuICAgICAgYXJyb3dlZD17ZmFsc2V9XG4gICAgICB2aXNpYmxlPXt2aXNpYmxlfVxuICAgICAgb25WaXNpYmxlQ2hhbmdlPXsoYm9vbCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZpbHRlclZpc2libGUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgc2V0VmlzaWJsZShib29sKVxuICAgICAgICB9XG4gICAgICAgIGlmIChvbkZpbHRlclZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICBvbkZpbHRlclZpc2libGVDaGFuZ2UoYm9vbClcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIHBvcHVwPXtwb3B1cH1cbiAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21MZWZ0XCJcbiAgICAgIHsuLi5maWx0ZXJQb3BvdmVyUHJvcHN9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBkYXRhLXZhbHVlPXtmaWx0ZXJlZFZhbHVlfVxuICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGAke3ByZWZpeH0tZmlsdGVyYCwge1xuICAgICAgICAgIFtgJHtwcmVmaXh9LWZpbHRlcmVkYF06XG4gICAgICAgICAgICBmaWx0ZXJlZFZhbHVlICYmXG4gICAgICAgICAgICAoZmlsdGVyZWRWYWx1ZS5sZW5ndGggPiAxIHx8IGZpbHRlcmVkVmFsdWVbMF0gIT09IFwiYWxsXCIpLFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgeyFzb3J0YWJsZUFuZEZpbHRlcmFibGUgPyB0aXRsZSA6IG51bGx9XG4gICAgICAgIDxJY29uIGljb249XCJmaWx0ZXItb3V0bGluZWRcIiAvPlxuICAgICAgICB7IXNvcnRhYmxlQW5kRmlsdGVyYWJsZSAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1jbGlja2hvbGRlcmB9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9Qb3BvdmVyPlxuICApXG59XG5cblRhYmxlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOaYr+WQpuWkmumAiVxuICAgKi9cbiAgZmlsdGVyTXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog562b6YCJ5piv5ZCm5pSv5oyB5pCc57SiXG4gICAqL1xuICBmaWx0ZXJTZWFyY2hhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOetm+mAieaQnOe0ouW8gOWQr+Wkp+Wwj+WGmeaVj+aEn+aQnOe0ou+8jOm7mOiupOS4uiBmYWxzZVxuICAgKi9cbiAgZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDnrZvpgInmkJzntKIgcGxhY2Vob2xkZXJcbiAgICovXG4gIGZpbHRlclNlYXJjaFBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog562b6YCJ5pCc57Si55qE6Ieq5a6a5LmJIGZ1bmN0aW9uXG4gICAqL1xuICBmaWx0ZXJTZWFyY2hGdW5jOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOetm+mAiSBQb3BvdmVyIHByb3Bz77yM5Lya5bCG5q2k5a+56LGh6YCP5Lyg57uZIDxQb3BvdmVyIC8+XG4gICAqL1xuICBmaWx0ZXJQb3BvdmVyUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiDlj6/ku6Xku47lpJbpg6jkvKDlhaXnrZvpgInnmoTlgLzvvIxudWxsLCBbXSwg6YO95Lya6K+G5Yir5Li65pyq562b6YCJ54q25oCBXG4gICAqL1xuICBmaWx0ZXJlZFZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIC8qKlxuICAgKiDnrZvpgInpobnvvIzmoLzlvI/vvJpbeyB0ZXh0OiBcIuaci+WPi+WciOW5v+WRilwiLCB2YWx1ZTogJzInIH1dXG4gICAqL1xuICBmaWx0ZXJzOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICog5LuO5aSW6YOo5o6n5Yi2IGZpbHRlciBQb3BvdmVyIOeahOaYvuekulxuICAgKi9cbiAgZmlsdGVyVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDnrZvpgInml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog562b6YCJIHBvcHVwIHZpc2libGUg5Y+Y5YyW5pe255qEIGhhbmRsZXLvvIzlj4LmlbAgKGJvb2wsIGNvbClcbiAgICovXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiB0aXRsZVxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogc29ydGFibGVBbmRGaWx0ZXJhYmxlPzogYm9vbGVhblxuICAgKi9cbiAgc29ydGFibGVBbmRGaWx0ZXJhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbn1cblxuVGFibGVGaWx0ZXIuZGVmYXVsdFByb3BzID0ge1xuICBmaWx0ZXJNdWx0aXBsZTogZmFsc2UsXG4gIGZpbHRlclNlYXJjaGFibGU6IGZhbHNlLFxuICBmaWx0ZXJTZWFyY2hDYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXI6IFwi5Zyo562b6YCJ6aG55Lit5pCc57SiXCIsXG4gIGZpbHRlclNlYXJjaEZ1bmM6IHVuZGVmaW5lZCxcbiAgZmlsdGVyUG9wb3ZlclByb3BzOiB7fSxcbiAgZmlsdGVyZWRWYWx1ZTogbnVsbCxcbiAgZmlsdGVyVmlzaWJsZTogbnVsbCxcbiAgZmlsdGVyczogbnVsbCxcbiAgb25GaWx0ZXI6IG51bGwsXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZTogbnVsbCxcbiAgdGl0bGU6IG51bGwsXG4gIHNvcnRhYmxlQW5kRmlsdGVyYWJsZTogZmFsc2UsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlRmlsdGVyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9B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
;