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>
946 lines (788 loc) • 110 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var _excluded = ["children", "value", "popover", "popoverProps", "title"],
_excluded2 = ["autoClearSearchValue", "bottomContent", "children", "className", "filterTreeNode", "getPopupContainer", "intent", "maxTagCount", "multiple", "onDropdownVisibleChange", "placeholder", "rightIcon", "resultRender", "resultVisible", "sameValueEnabled", "selectAll", "showCheckedStrategy", "topContent", "treeData"];
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
import * as React from "react";
import RcTreeSelect, { SHOW_ALL, SHOW_PARENT, SHOW_CHILD, TreeNode } from "rc-tree-select";
import PropTypes from "prop-types";
import shallowEqual from "shallowequal";
import classNames from "classnames";
import toArray from "rc-util/lib/Children/toArray";
import omit from "../_util/omit";
import { ConfigContext } from "../config-provider";
import Checkbox from "../checkbox";
import Icon from "../icon";
import Popover from "../popover";
import Portal from "../portal";
import Spinner from "../spinner";
import "./style";
var prefix = "adui-tree-select";
var sameValueSplitter = "__@@__";
var noop = function noop() {};
var strategies = {
"show-all": SHOW_ALL,
"show-child": SHOW_CHILD,
"show-parent": SHOW_PARENT
};
var isArrayIncludes = function isArrayIncludes(a1, a2) {
if (!Array.isArray(a1) || !Array.isArray(a2)) {
return false;
}
return a2.every(function (o) {
return a1.includes(o);
});
};
var TreeSelect = function (_React$Component) {
_inherits(TreeSelect, _React$Component);
var _super = _createSuper(TreeSelect);
function TreeSelect(props) {
var _this;
_classCallCheck(this, TreeSelect);
_this = _super.call(this, props);
_this.select = void 0;
_this.portal = void 0;
_this.wrapper = void 0;
_this.treeData = void 0;
_this.treeValueAll = void 0;
_this.treeValueFlatten = [];
_this.shouldComponentUpdate = function (nextProps, nextState) {
return !shallowEqual(_this.props, nextProps) || !shallowEqual(_this.state, nextState);
};
_this.saveSelect = function (node) {
_this.select = node;
};
_this.saveWrapper = function (node) {
_this.wrapper = node;
};
_this.renderSwitcherIcon = function (_ref) {
var isLeaf = _ref.isLeaf,
loading = _ref.loading;
if (loading) {
return React.createElement(Spinner, {
size: "mini",
className: "".concat(prefix, "-tree-switcher-icon")
});
}
if (isLeaf) {
return null;
}
return React.createElement(Icon, {
icon: "triangle-right",
className: "".concat(prefix, "-tree-switcher-icon")
});
};
_this.handleVisibleChange = function (visible) {
setTimeout(function () {
_this.forceUpdate(function () {
var _this$props = _this.props,
bottomContent = _this$props.bottomContent,
topContent = _this$props.topContent;
var _this$state = _this.state,
hash = _this$state.hash,
bottomContentPortalTarget = _this$state.bottomContentPortalTarget,
topContentPortalTarget = _this$state.topContentPortalTarget;
if (visible && (topContent && !topContentPortalTarget || bottomContent && !bottomContentPortalTarget)) {
var dropdown = document.querySelector(".".concat(prefix, "-dropdown_").concat(hash));
if (dropdown) {
if (topContent && !topContentPortalTarget) {
var el = document.createElement("div");
el.onmousedown = function (e) {
e.preventDefault();
e.stopImmediatePropagation();
};
dropdown.insertBefore(el, dropdown.children[0]);
_this.setState({
topContentPortalTarget: el
});
}
if (bottomContent && !bottomContentPortalTarget) {
var _el = document.createElement("div");
_el.onmousedown = function (e) {
e.preventDefault();
e.stopImmediatePropagation();
};
dropdown.appendChild(_el);
_this.setState({
bottomContentPortalTarget: _el
});
}
}
}
});
}, 0);
};
_this.handleChange = function (value, titleList) {
var valueParam = [];
var _this$props2 = _this.props,
disabled = _this$props2.disabled,
multiple = _this$props2.multiple,
onChange = _this$props2.onChange,
valueProp = _this$props2.value,
sameValueEnabled = _this$props2.sameValueEnabled;
var valueState = _this.state.value;
if (!disabled) {
if (sameValueEnabled) {
value === null || value === void 0 ? void 0 : value.forEach(function (v) {
var splited = "".concat(v).split(sameValueSplitter);
var val = splited[splited.length - 1];
var _value$filter = value.filter(function (o) {
return "".concat(o).endsWith("".concat(sameValueSplitter).concat(val));
}),
length = _value$filter.length;
if (length === _this.treeValueFlatten.filter(function (o) {
return "".concat(o).endsWith("".concat(sameValueSplitter).concat(val));
}).length) {
valueParam.push(val);
} else if (!(valueState !== null && valueState !== void 0 && valueState.includes(val))) {
valueParam.push(val);
}
});
} else if (value) {
valueParam = value;
}
if (multiple) {
valueParam = _toConsumableArray(new Set(valueParam));
}
if (valueProp === null) {
_this.setState({
value: valueParam
});
}
if (onChange) {
onChange(valueParam, titleList);
}
}
};
_this.getFilteredTreeData = function (searchValue) {
var filterTreeNode = _this.props.filterTreeNode;
if (!searchValue || filterTreeNode === false) {
return _this.treeData;
}
var filterOptionFunc;
if (typeof filterTreeNode === "function") {
filterOptionFunc = filterTreeNode;
} else {
filterOptionFunc = _this.filterTreeNode;
}
var dig = function dig(list) {
var keepAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
return list.map(function (dataNode) {
var children = dataNode.children;
var match = keepAll || filterOptionFunc && filterOptionFunc(searchValue, dataNode);
var childList = dig(children || [], match);
if (match || childList.length) {
return _objectSpread(_objectSpread({}, dataNode), {}, {
children: childList
});
}
return null;
}).filter(function (node) {
return node;
});
};
return dig(_this.treeData);
};
_this.handleSearch = function (val) {
var onSearch = _this.props.onSearch;
if (onSearch) {
onSearch(val, _this.getFilteredTreeData(val));
setTimeout(function () {
_this.forceUpdate();
}, 0);
}
};
_this.filterTreeNode = function (input, treeNode) {
var filterCaseSensitive = _this.props.filterCaseSensitive;
var key = treeNode.key,
title = treeNode.title,
value = treeNode.value,
dataTitle = treeNode.dataTitle;
if (!key || !value) {
return false;
}
if (!filterCaseSensitive) {
return String(dataTitle || title).toLocaleLowerCase().includes(input.toLocaleLowerCase());
}
return String(dataTitle || title).includes(input);
};
_this.getMaxTagCount = function () {
var maxTagCount = _this.props.maxTagCount;
var value = _this.state.value;
if (!maxTagCount || !value || value.length <= maxTagCount) {
return null;
}
return 0;
};
_this.handleSelectAll = function () {
var _this$props3 = _this.props,
valueProp = _this$props3.value,
onChange = _this$props3.onChange;
var value = _this.state.value;
if (isArrayIncludes(value || [], _this.treeValueAll)) {
if (valueProp === null) {
_this.setState({
value: []
});
}
if (onChange) {
onChange([], []);
}
} else {
if (valueProp === null) {
_this.setState({
value: _this.treeValueAll
});
}
if (onChange) {
onChange(_this.treeValueAll, []);
}
}
};
_this.getMaxTagPlaceholder = function (nodes) {
var _nodes$;
if (!_this.select) {
return null;
}
var _this$props4 = _this.props,
onChange = _this$props4.onChange,
resultRender = _this$props4.resultRender,
value = _this$props4.value,
disabledProp = _this$props4.disabled;
if (resultRender) {
return resultRender(nodes);
}
var length = nodes.length;
var placeholderText = React.createElement(React.Fragment, null, React.createElement("span", {
style: {
display: "inline-block",
verticalAlign: "top",
maxWidth: "calc(100% - 53px)",
overflow: "hidden",
textOverflow: "ellipsis",
whiteSpace: "nowrap"
}
}, (_nodes$ = nodes[0]) === null || _nodes$ === void 0 ? void 0 : _nodes$.label), React.createElement("span", {
style: {
display: "inline-block",
verticalAlign: "top"
}
}, "\u7B49 ", length, " \u4E2A"));
return React.createElement(Popover, {
visible: disabledProp ? false : undefined,
alignEdge: false,
placement: "top",
popup: React.createElement("div", {
role: "none",
className: "".concat(prefix, "-max-popover-item-wrapper"),
onMouseDown: function onMouseDown(e) {
return e.stopPropagation();
}
}, nodes.map(function (_ref2, i) {
var key = _ref2.key,
disabled = _ref2.disabled,
label = _ref2.label;
return React.createElement("div", {
className: "".concat(prefix, "-max-popover-item"),
key: key
}, React.createElement("span", null, label), !disabled && React.createElement(Icon, {
icon: "cancel",
onClick: function onClick() {
var vals = nodes.map(function (o) {
return o.value;
});
vals.splice(i, 1);
if (value === null) {
_this.setState({
value: vals
});
}
var labels = nodes.map(function (o) {
return o.label;
});
labels.splice(i, 1);
if (onChange) {
onChange(vals, labels);
}
}
}));
})),
popupClassName: "".concat(prefix, "-maxPopover")
}, React.createElement("div", {
className: "".concat(prefix, "-maxPlaceholder"),
role: "none",
onClick: function onClick(e) {
return e.stopPropagation();
}
}, placeholderText, React.createElement(Icon, {
icon: "cancel",
size: 14,
onClick: function onClick() {
if (!disabledProp) {
if (value === null) {
_this.setState({
value: []
});
}
if (onChange) {
onChange([], []);
}
}
}
})));
};
_this.convertChildrenToData = function (nodes) {
return toArray(nodes).map(function (node) {
if (!React.isValidElement(node) || !node.type) {
return null;
}
var _ref3 = node,
key = _ref3.key,
_ref3$props = _ref3.props,
children = _ref3$props.children,
value = _ref3$props.value,
popover = _ref3$props.popover,
popoverProps = _ref3$props.popoverProps,
title = _ref3$props.title,
restProps = _objectWithoutProperties(_ref3$props, _excluded);
var data = _objectSpread({
key: key,
value: value,
dataTitle: title,
title: popover ? React.createElement(React.Fragment, null, React.createElement("div", {
className: "".concat(prefix, "-pop-trigger")
}, title), React.createElement(Popover, _extends({
popup: popover,
placement: "right"
}, popoverProps), React.createElement("div", {
className: "".concat(prefix, "-pop-trigger-placeholder")
}))) : title
}, restProps);
var childData = _this.convertChildrenToData(children);
if (childData.length) {
data.children = childData;
}
return data;
}).filter(function (data) {
return data;
});
};
_this.convertTreeData = function (dataNodeParam) {
var _dataNode$, _dataNode$2;
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var sameValueEnabled = _this.props.sameValueEnabled;
if (!dataNodeParam) {
return undefined;
}
var dataNode = _toConsumableArray(dataNodeParam);
var valueState = _this.state.value;
var isAllSelected = isArrayIncludes(valueState || [], _this.treeValueAll);
var indeterminate = !isAllSelected && !!(valueState !== null && valueState !== void 0 && valueState.length);
if (((_dataNode$ = dataNode[0]) === null || _dataNode$ === void 0 ? void 0 : _dataNode$.key) === "".concat(prefix, "-tree-treenode-all")) {
return dataNode;
}
if (sameValueEnabled && !((_dataNode$2 = dataNode[0]) !== null && _dataNode$2 !== void 0 && _dataNode$2.dataTitle)) {
_this.treeValueFlatten = [];
}
var selectAll = options.selectAll;
var process = function process(node, parentValue) {
node.forEach(function (o) {
var children = o.children,
key = o.key,
title = o.title,
dataChildren = o.dataChildren,
dataTitle = o.dataTitle,
value = o.value,
popover = o.popover,
_o$popoverProps = o.popoverProps,
popoverProps = _o$popoverProps === void 0 ? {} : _o$popoverProps;
if (dataTitle && dataChildren) {
return;
}
if (title) {
o.dataTitle = title;
}
if (children !== null && children !== void 0 && children.length) {
o.dataChildren = 1;
}
if (key === undefined) {
o.key = value;
} else if (value === undefined) {
o.value = key;
}
if (sameValueEnabled) {
var newVal = "".concat(parentValue ? "".concat(parentValue).concat(sameValueSplitter) : "").concat(value);
o.key = newVal;
o.value = newVal;
if (!_this.treeValueFlatten.includes(newVal)) {
_this.treeValueFlatten.push(newVal);
}
}
if (popover) {
o.title = React.createElement(React.Fragment, null, React.createElement("div", {
className: "".concat(prefix, "-pop-trigger")
}, title), React.createElement(Popover, _extends({
popup: popover,
placement: "right"
}, popoverProps), React.createElement("div", {
className: "".concat(prefix, "-pop-trigger-placeholder")
})));
}
if (children) {
process(children, o.value);
}
});
};
process(dataNode);
if (selectAll) {
dataNode.unshift({
title: React.createElement("div", {
role: "none",
className: "".concat(prefix, "-tree-treenode-all-inner"),
onClick: _this.handleSelectAll
}, "\u5168\u9009", React.createElement(Checkbox, {
size: "medium",
checked: isAllSelected,
indeterminate: indeterminate
})),
className: "".concat(prefix, "-tree-treenode-all"),
key: "".concat(prefix, "-tree-treenode-all"),
value: "".concat(prefix, "-tree-treenode-all"),
checkable: false,
disableCheckbox: true
});
}
return dataNode;
};
_this.listenInputChange = function (e) {
var onSearchEnter = _this.props.onSearchEnter;
var value = e.target.value,
key = e.key;
if (key === "Backspace" && value === "") {
e.stopPropagation();
}
setTimeout(function () {
if (key === "Enter" && onSearchEnter) {
onSearchEnter(e);
}
}, 0);
};
_this.componentDidMount = function () {
var _this$wrapper;
var input = (_this$wrapper = _this.wrapper) === null || _this$wrapper === void 0 ? void 0 : _this$wrapper.querySelector("input");
var _this$props5 = _this.props,
maxTagCount = _this$props5.maxTagCount,
placeholder = _this$props5.placeholder,
resultVisible = _this$props5.resultVisible;
var value = _this.state.value;
if (input) {
input.addEventListener("keydown", _this.listenInputChange, false);
}
if (maxTagCount !== null && value) {
_this.forceUpdate();
}
if (!resultVisible && _this.wrapper) {
if (input) {
input.placeholder = placeholder;
}
}
};
_this.componentDidUpdate = function () {
var _this$props6 = _this.props,
resultVisible = _this$props6.resultVisible,
placeholder = _this$props6.placeholder;
if (!resultVisible) {
setTimeout(function () {
var _this$wrapper2;
window.dispatchEvent(new Event("resize"));
var input = (_this$wrapper2 = _this.wrapper) === null || _this$wrapper2 === void 0 ? void 0 : _this$wrapper2.querySelector("input");
if (input) {
input.placeholder = placeholder;
}
}, 0);
}
};
var _value = props.value,
defaultValue = props.defaultValue;
var _valueState = _value !== null ? _value : defaultValue;
_this.state = {
hash: Math.random().toString(36).substring(3, 8),
value: _valueState
};
return _this;
}
_createClass(TreeSelect, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props7 = this.props,
autoClearSearchValue = _this$props7.autoClearSearchValue,
bottomContent = _this$props7.bottomContent,
children = _this$props7.children,
className = _this$props7.className,
filterTreeNode = _this$props7.filterTreeNode,
getPopupContainer = _this$props7.getPopupContainer,
intent = _this$props7.intent,
maxTagCount = _this$props7.maxTagCount,
multiple = _this$props7.multiple,
_onDropdownVisibleChange = _this$props7.onDropdownVisibleChange,
placeholder = _this$props7.placeholder,
rightIcon = _this$props7.rightIcon,
resultRender = _this$props7.resultRender,
resultVisible = _this$props7.resultVisible,
sameValueEnabled = _this$props7.sameValueEnabled,
selectAll = _this$props7.selectAll,
showCheckedStrategy = _this$props7.showCheckedStrategy,
topContent = _this$props7.topContent,
treeData = _this$props7.treeData,
otherProps = _objectWithoutProperties(_this$props7, _excluded2);
var restProps = omit(otherProps, ["filterCaseSensitive", "onChange", "onSearch", "onSearchEnter", "defaultValue", "value"]);
var _this$state2 = this.state,
hash = _this$state2.hash,
bottomContentPortalTarget = _this$state2.bottomContentPortalTarget,
topContentPortalTarget = _this$state2.topContentPortalTarget,
value = _this$state2.value;
var classSet = classNames(className, "".concat(prefix, "-").concat(intent), _defineProperty({}, "".concat(prefix, "_resultHidden"), !resultVisible));
var checkbox = multiple;
if (multiple) {
checkbox = React.createElement("div", null, React.createElement("svg", {
width: "12",
height: "10",
className: "".concat(prefix, "-tree-checkbox-indeterminateSvg")
}, React.createElement("rect", {
x: "1",
y: "4",
width: "10",
height: "2",
rx: ".5",
fill: "#fff",
fillRule: "evenodd"
})), React.createElement("svg", {
width: "12",
height: "10",
className: "".concat(prefix, "-tree-checkbox-checkedSvg")
}, React.createElement("path", {
d: "M.618 5.827a.463.463 0 0 1-.02-.675l.804-.804a.52.52 0 0 1 .716-.01L4.75 6.75l4.922-5.625a.513.513 0 0 1 .707-.06l.742.62a.478.478 0 0 1 .044.687l-6.08 6.756a.506.506 0 0 1-.703.045L.618 5.827z",
fillRule: "evenodd"
})));
}
if (value !== null) {
restProps.value = value;
}
if (sameValueEnabled) {
var trueValue = [];
if (restProps.value) {
restProps.value.forEach(function (o) {
_this2.treeValueFlatten.forEach(function (p) {
var splited = p.split(sameValueSplitter);
if (splited[splited.length - 1] === o) {
trueValue.push(p);
}
});
});
}
restProps.value = trueValue;
}
if (maxTagCount !== null) {
var count = this.getMaxTagCount();
if (count !== null) {
restProps.maxTagCount = count;
}
}
if (resultRender) {
restProps.maxTagCount = 0;
}
var treeDataFinal = this.convertTreeData(treeData || this.convertChildrenToData(children), {
selectAll: selectAll
}) || [];
this.treeData = treeDataFinal;
if (showCheckedStrategy === "show-parent") {
this.treeValueAll = treeDataFinal.map(function (_ref4) {
var val = _ref4.value,
disabled = _ref4.disabled,
disableCheckbox = _ref4.disableCheckbox,
checkable = _ref4.checkable;
if (val !== undefined && !disabled && !disableCheckbox && checkable !== false) {
return val;
}
return undefined;
}).filter(function (o) {
return Boolean(o) || o === 0;
});
} else {
var treeValueAll = [];
var getAllValue = function getAllValue(data) {
data.forEach(function (_ref5) {
var val = _ref5.value,
disabled = _ref5.disabled,
disableCheckbox = _ref5.disableCheckbox,
checkable = _ref5.checkable,
child = _ref5.children;
if (val !== undefined && !disabled && !disableCheckbox && checkable !== false) {
if (showCheckedStrategy === "show-all" || !child) {
treeValueAll.push(val);
} else {
getAllValue(child);
}
}
});
};
getAllValue(treeDataFinal);
this.treeValueAll = treeValueAll.filter(function (o) {
return Boolean(o) || o === 0;
});
}
var multiLevel = treeDataFinal.some(function (o) {
var _o$children;
return (_o$children = o.children) === null || _o$children === void 0 ? void 0 : _o$children.length;
});
return React.createElement(ConfigContext.Consumer, null, function (_ref6) {
var _classNames2, _classNames3;
var getPopupContainerContext = _ref6.getPopupContainer;
return React.createElement("div", {
className: classNames("".concat(prefix, "-wrapper ").concat(prefix, "-wrapper_").concat(hash), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefix, "-wrapper-maxTag"), _this2.getMaxTagCount() !== null), _defineProperty(_classNames2, "".concat(prefix, "-wrapper-resultRender"), !!resultRender), _classNames2)),
ref: _this2.saveWrapper
}, topContent && topContentPortalTarget && React.createElement(Portal, {
container: topContentPortalTarget
}, topContent), bottomContent && bottomContentPortalTarget && React.createElement(Portal, {
container: bottomContentPortalTarget
}, bottomContent), React.createElement(RcTreeSelect, _extends({
autoClearSearchValue: resultVisible ? autoClearSearchValue : false,
className: classSet,
dropdownClassName: classNames("".concat(prefix, "-dropdown_").concat(hash), (_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefix, "-dropdown-multiple"), multiple), _defineProperty(_classNames3, "".concat(prefix, "-dropdown-single"), !multiple), _defineProperty(_classNames3, "".concat(prefix, "-dropdown-all"), selectAll), _defineProperty(_classNames3, "".concat(prefix, "-dropdown-single-level"), !multiLevel), _classNames3)),
filterTreeNode: filterTreeNode || _this2.filterTreeNode,
getPopupContainer: getPopupContainer || getPopupContainerContext,
inputIcon: React.createElement(Icon, {
icon: "triangle-down"
}),
maxTagPlaceholder: _this2.getMaxTagPlaceholder,
notFoundContent: React.createElement(React.Fragment, null, React.createElement(Icon, {
icon: "file-outlined",
color: "var(--transparent-gray-600)",
style: {
marginRight: "4px"
}
}), "\u65E0\u5339\u914D\u9879"),
onChange: _this2.handleChange,
onSearch: _this2.handleSearch,
placeholder: placeholder,
prefixCls: prefix,
ref: _this2.saveSelect,
removeIcon: React.createElement(Icon, {
icon: "cancel",
interactive: true,
size: 16
}),
showCheckedStrategy: showCheckedStrategy && strategies[showCheckedStrategy],
showSearch: multiple,
switcherIcon: _this2.renderSwitcherIcon,
transitionName: "slide-up",
treeCheckable: checkbox,
treeNodeFilterProp: "title",
listItemHeight: 32,
listHeight: 280,
treeData: treeDataFinal,
onDropdownVisibleChange: function onDropdownVisibleChange(visible) {
if (!visible) {
_this2.handleSearch("");
}
_this2.handleVisibleChange(visible);
if (_onDropdownVisibleChange) {
_onDropdownVisibleChange(visible);
}
}
}, restProps)), !!rightIcon && multiple && React.createElement(Icon, {
icon: rightIcon,
className: "".concat(prefix, "-icon")
}));
});
}
}]);
return TreeSelect;
}(React.Component);
TreeSelect.propTypes = {
autoClearSearchValue: PropTypes.bool,
bottomContent: PropTypes.node,
className: PropTypes.string,
defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
disabled: PropTypes.bool,
filterTreeNode: PropTypes.any,
filterCaseSensitive: PropTypes.bool,
getPopupContainer: PropTypes.func,
intent: PropTypes.oneOf(["normal", "primary", "success", "warning", "danger"]),
maxTagCount: PropTypes.number,
multiple: PropTypes.bool,
onChange: PropTypes.func,
onDropdownVisibleChange: PropTypes.func,
onSearch: PropTypes.func,
onSearchEnter: PropTypes.func,
placeholder: PropTypes.string,
resultRender: PropTypes.func,
resultVisible: PropTypes.bool,
rightIcon: PropTypes.string,
sameValueEnabled: PropTypes.bool,
selectAll: PropTypes.bool,
showCheckedStrategy: PropTypes.oneOf(["show-all", "show-parent", "show-child"]),
topContent: PropTypes.node,
treeData: PropTypes.array,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.array])
};
TreeSelect.defaultProps = {
autoClearSearchValue: false,
bottomContent: undefined,
className: undefined,
defaultValue: null,
disabled: false,
filterTreeNode: undefined,
filterCaseSensitive: false,
getPopupContainer: null,
intent: "normal",
maxTagCount: null,
multiple: true,
onChange: noop,
onDropdownVisibleChange: noop,
onSearch: noop,
onSearchEnter: noop,
placeholder: "请选择",
resultRender: null,
resultVisible: true,
rightIcon: "list",
sameValueEnabled: false,
selectAll: false,
showCheckedStrategy: "show-parent",
topContent: undefined,
treeData: undefined,
value: null
};
TreeSelect.getDerivedStateFromProps = function (_ref7) {
var value = _ref7.value;
if (value !== null) {
return {
value: value
};
}
return null;
};
TreeSelect.TreeNode = TreeNode;
export default TreeSelect;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJjVHJlZVNlbGVjdCIsIlNIT1dfQUxMIiwiU0hPV19QQVJFTlQiLCJTSE9XX0NISUxEIiwiVHJlZU5vZGUiLCJQcm9wVHlwZXMiLCJzaGFsbG93RXF1YWwiLCJjbGFzc05hbWVzIiwidG9BcnJheSIsIm9taXQiLCJDb25maWdDb250ZXh0IiwiQ2hlY2tib3giLCJJY29uIiwiUG9wb3ZlciIsIlBvcnRhbCIsIlNwaW5uZXIiLCJwcmVmaXgiLCJzYW1lVmFsdWVTcGxpdHRlciIsIm5vb3AiLCJzdHJhdGVnaWVzIiwiaXNBcnJheUluY2x1ZGVzIiwiYTEiLCJhMiIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwibyIsImluY2x1ZGVzIiwiVHJlZVNlbGVjdCIsInByb3BzIiwic2VsZWN0IiwicG9ydGFsIiwid3JhcHBlciIsInRyZWVEYXRhIiwidHJlZVZhbHVlQWxsIiwidHJlZVZhbHVlRmxhdHRlbiIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIm5leHRQcm9wcyIsIm5leHRTdGF0ZSIsInN0YXRlIiwic2F2ZVNlbGVjdCIsIm5vZGUiLCJzYXZlV3JhcHBlciIsInJlbmRlclN3aXRjaGVySWNvbiIsImlzTGVhZiIsImxvYWRpbmciLCJoYW5kbGVWaXNpYmxlQ2hhbmdlIiwidmlzaWJsZSIsInNldFRpbWVvdXQiLCJmb3JjZVVwZGF0ZSIsImJvdHRvbUNvbnRlbnQiLCJ0b3BDb250ZW50IiwiaGFzaCIsImJvdHRvbUNvbnRlbnRQb3J0YWxUYXJnZXQiLCJ0b3BDb250ZW50UG9ydGFsVGFyZ2V0IiwiZHJvcGRvd24iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJvbm1vdXNlZG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImluc2VydEJlZm9yZSIsImNoaWxkcmVuIiwic2V0U3RhdGUiLCJhcHBlbmRDaGlsZCIsImhhbmRsZUNoYW5nZSIsInZhbHVlIiwidGl0bGVMaXN0IiwidmFsdWVQYXJhbSIsImRpc2FibGVkIiwibXVsdGlwbGUiLCJvbkNoYW5nZSIsInZhbHVlUHJvcCIsInNhbWVWYWx1ZUVuYWJsZWQiLCJ2YWx1ZVN0YXRlIiwiZm9yRWFjaCIsInYiLCJzcGxpdGVkIiwic3BsaXQiLCJ2YWwiLCJsZW5ndGgiLCJmaWx0ZXIiLCJlbmRzV2l0aCIsInB1c2giLCJTZXQiLCJnZXRGaWx0ZXJlZFRyZWVEYXRhIiwic2VhcmNoVmFsdWUiLCJmaWx0ZXJUcmVlTm9kZSIsImZpbHRlck9wdGlvbkZ1bmMiLCJkaWciLCJsaXN0Iiwia2VlcEFsbCIsIm1hcCIsImRhdGFOb2RlIiwibWF0Y2giLCJjaGlsZExpc3QiLCJoYW5kbGVTZWFyY2giLCJvblNlYXJjaCIsImlucHV0IiwidHJlZU5vZGUiLCJmaWx0ZXJDYXNlU2Vuc2l0aXZlIiwia2V5IiwidGl0bGUiLCJkYXRhVGl0bGUiLCJTdHJpbmciLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsImdldE1heFRhZ0NvdW50IiwibWF4VGFnQ291bnQiLCJoYW5kbGVTZWxlY3RBbGwiLCJnZXRNYXhUYWdQbGFjZWhvbGRlciIsIm5vZGVzIiwicmVzdWx0UmVuZGVyIiwiZGlzYWJsZWRQcm9wIiwicGxhY2Vob2xkZXJUZXh0IiwiZGlzcGxheSIsInZlcnRpY2FsQWxpZ24iLCJtYXhXaWR0aCIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsImxhYmVsIiwidW5kZWZpbmVkIiwic3RvcFByb3BhZ2F0aW9uIiwiaSIsInZhbHMiLCJzcGxpY2UiLCJsYWJlbHMiLCJjb252ZXJ0Q2hpbGRyZW5Ub0RhdGEiLCJpc1ZhbGlkRWxlbWVudCIsInR5cGUiLCJwb3BvdmVyIiwicG9wb3ZlclByb3BzIiwicmVzdFByb3BzIiwiZGF0YSIsImNoaWxkRGF0YSIsImNvbnZlcnRUcmVlRGF0YSIsImRhdGFOb2RlUGFyYW0iLCJvcHRpb25zIiwiaXNBbGxTZWxlY3RlZCIsImluZGV0ZXJtaW5hdGUiLCJzZWxlY3RBbGwiLCJwcm9jZXNzIiwicGFyZW50VmFsdWUiLCJkYXRhQ2hpbGRyZW4iLCJuZXdWYWwiLCJ1bnNoaWZ0IiwiY2xhc3NOYW1lIiwiY2hlY2thYmxlIiwiZGlzYWJsZUNoZWNrYm94IiwibGlzdGVuSW5wdXRDaGFuZ2UiLCJvblNlYXJjaEVudGVyIiwidGFyZ2V0IiwiY29tcG9uZW50RGlkTW91bnQiLCJwbGFjZWhvbGRlciIsInJlc3VsdFZpc2libGUiLCJhZGRFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwid2luZG93IiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwiZGVmYXVsdFZhbHVlIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic3Vic3RyaW5nIiwiYXV0b0NsZWFyU2VhcmNoVmFsdWUiLCJnZXRQb3B1cENvbnRhaW5lciIsImludGVudCIsIm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlIiwicmlnaHRJY29uIiwic2hvd0NoZWNrZWRTdHJhdGVneSIsIm90aGVyUHJvcHMiLCJjbGFzc1NldCIsImNoZWNrYm94IiwidHJ1ZVZhbHVlIiwicCIsImNvdW50IiwidHJlZURhdGFGaW5hbCIsIkJvb2xlYW4iLCJnZXRBbGxWYWx1ZSIsImNoaWxkIiwibXVsdGlMZXZlbCIsInNvbWUiLCJnZXRQb3B1cENvbnRhaW5lckNvbnRleHQiLCJtYXJnaW5SaWdodCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJvbmVPZlR5cGUiLCJhcnJheSIsImFueSIsImZ1bmMiLCJvbmVPZiIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdHJlZS1zZWxlY3QvVHJlZVNlbGVjdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFJjVHJlZVNlbGVjdCwge1xuICBTSE9XX0FMTCxcbiAgU0hPV19QQVJFTlQsXG4gIFNIT1dfQ0hJTEQsXG4gIFRyZWVOb2RlLFxufSBmcm9tIFwicmMtdHJlZS1zZWxlY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gXCJzaGFsbG93ZXF1YWxcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHRvQXJyYXkgZnJvbSBcInJjLXV0aWwvbGliL0NoaWxkcmVuL3RvQXJyYXlcIlxuaW1wb3J0IG9taXQgZnJvbSBcIi4uL191dGlsL29taXRcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IENoZWNrYm94IGZyb20gXCIuLi9jaGVja2JveFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vaWNvblwiXG5pbXBvcnQgUG9wb3ZlciwgeyBJUG9wb3ZlclByb3BzIH0gZnJvbSBcIi4uL3BvcG92ZXJcIlxuaW1wb3J0IFBvcnRhbCBmcm9tIFwiLi4vcG9ydGFsXCJcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuLi9zcGlubmVyXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktdHJlZS1zZWxlY3RcIlxuY29uc3Qgc2FtZVZhbHVlU3BsaXR0ZXIgPSBcIl9fQEBfX1wiXG5jb25zdCBub29wID0gKCkgPT4ge31cblxuY29uc3Qgc3RyYXRlZ2llcyA9IHtcbiAgXCJzaG93LWFsbFwiOiBTSE9XX0FMTCxcbiAgXCJzaG93LWNoaWxkXCI6IFNIT1dfQ0hJTEQsXG4gIFwic2hvdy1wYXJlbnRcIjogU0hPV19QQVJFTlQsXG59XG5cbi8qKlxuICogYTEg5piv5ZCm5YyF5ZCrIGEyXG4gKi9cbmNvbnN0IGlzQXJyYXlJbmNsdWRlcyA9IChcbiAgYTE6IFJlYWN0LlJlYWN0VGV4dFtdLFxuICBhMjogUmVhY3QuUmVhY3RUZXh0W11cbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYTEpIHx8ICFBcnJheS5pc0FycmF5KGEyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGEyLmV2ZXJ5KChvKSA9PiBhMS5pbmNsdWRlcyhvKSlcbn1cblxuZXhwb3J0IHR5cGUgVHJlZU5vZGVWYWx1ZSA9IFJlYWN0LlJlYWN0VGV4dFtdIHwgbnVsbFxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlTm9kZSB7XG4gIHZhbHVlOiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBkaXNhYmxlZDogYm9vbGVhblxufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhTm9kZSB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICB2YWx1ZT86IFJlYWN0LlJlYWN0VGV4dFxuICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZVxuICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICBrZXk/OiBSZWFjdC5SZWFjdFRleHRcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGRpc2FibGVDaGVja2JveD86IGJvb2xlYW5cbiAgY2hlY2thYmxlPzogYm9vbGVhblxuICBwb3BvdmVyPzogUmVhY3QuUmVhY3ROb2RlXG4gIHBvcG92ZXJQcm9wcz86IElQb3BvdmVyUHJvcHNcbiAgY2hpbGRyZW4/OiBEYXRhTm9kZVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU9wdGlvblR5cGUge1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgY2hlY2thYmxlPzogYm9vbGVhblxuICBkaXNhYmxlQ2hlY2tib3g/OiBib29sZWFuXG4gIGNoaWxkcmVuPzogQmFzZU9wdGlvblR5cGVbXVxuICBbbmFtZTogc3RyaW5nXTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdE9wdGlvblR5cGUgZXh0ZW5kcyBCYXNlT3B0aW9uVHlwZSB7XG4gIHZhbHVlPzogUmVhY3QuUmVhY3RUZXh0XG4gIHRpdGxlPzogUmVhY3QuUmVhY3ROb2RlXG4gIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlXG4gIGtleT86IFJlYWN0LktleVxuICBjaGlsZHJlbj86IERlZmF1bHRPcHRpb25UeXBlW11cbn1cblxuZXhwb3J0IHR5cGUgVHJlZURhdGEgPSBEYXRhTm9kZVtdIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWVTZWxlY3RQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBhdXRvQ2xlYXJTZWFyY2hWYWx1ZT86IGJvb2xlYW5cbiAgYm90dG9tQ29udGVudD86IFJlYWN0LlJlYWN0Tm9kZVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGVmYXVsdFZhbHVlPzogVHJlZU5vZGVWYWx1ZVxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgZmlsdGVyVHJlZU5vZGU/OlxuICAgIHwgYm9vbGVhblxuICAgIHwgKChpbnB1dFZhbHVlOiBzdHJpbmcsIHRyZWVOb2RlOiBEZWZhdWx0T3B0aW9uVHlwZSkgPT4gYm9vbGVhbilcbiAgZmlsdGVyQ2FzZVNlbnNpdGl2ZT86IGJvb2xlYW5cbiAgZ2V0UG9wdXBDb250YWluZXI/OiBudWxsIHwgKChub2RlOiBIVE1MRWxlbWVudCkgPT4gSFRNTEVsZW1lbnQpXG4gIGludGVudD86IFwibm9ybWFsXCIgfCBcInByaW1hcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG4gIG1heFRhZ0NvdW50PzogbnVsbCB8IG51bWJlclxuICBtdWx0aXBsZT86IGJvb2xlYW5cbiAgb25DaGFuZ2U/OiAodmFsdWU6IFRyZWVOb2RlVmFsdWUsIHRpdGxlTGlzdDogUmVhY3QuUmVhY3ROb2RlW10pID0+IHZvaWRcbiAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U/OiAodmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZFxuICBvblNlYXJjaEVudGVyPzogKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWRcbiAgb25TZWFyY2g/OiAodmFsdWU6IHN0cmluZywgbm9kZXM6IERhdGFOb2RlW10pID0+IHZvaWRcbiAgcmVzdWx0UmVuZGVyPzogbnVsbCB8ICgodmFsdWVzOiBJVHJlZU5vZGVbXSkgPT4gSlNYLkVsZW1lbnQpXG4gIHJlc3VsdFZpc2libGU/OiBib29sZWFuXG4gIHNhbWVWYWx1ZUVuYWJsZWQ/OiBib29sZWFuXG4gIHNlbGVjdEFsbD86IGJvb2xlYW5cbiAgc2hvd0NoZWNrZWRTdHJhdGVneT86IFwic2hvdy1hbGxcIiB8IFwic2hvdy1jaGlsZFwiIHwgXCJzaG93LXBhcmVudFwiXG4gIHRvcENvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGVcbiAgdHJlZURhdGE/OiBUcmVlRGF0YVxuICB2YWx1ZT86IFRyZWVOb2RlVmFsdWVcbn1cblxudHlwZSBHZXRGdW5jVHlwZTxUPiA9IFQgZXh0ZW5kcyBib29sZWFuID8gbmV2ZXIgOiBUXG50eXBlIEZpbHRlckZuID0gR2V0RnVuY1R5cGU8SVRyZWVTZWxlY3RQcm9wc1tcImZpbHRlclRyZWVOb2RlXCJdPlxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlU2VsZWN0U3RhdGUge1xuICBoYXNoOiBzdHJpbmdcbiAgYm90dG9tQ29udGVudFBvcnRhbFRhcmdldD86IEhUTUxEaXZFbGVtZW50XG4gIHRvcENvbnRlbnRQb3J0YWxUYXJnZXQ/OiBIVE1MRGl2RWxlbWVudFxuICB2YWx1ZT86IFRyZWVOb2RlVmFsdWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZU5vZGVQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgY2hlY2thYmxlPzogYm9vbGVhblxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgZGlzYWJsZUNoZWNrYm94PzogYm9vbGVhblxuICB0aXRsZT86IHN0cmluZyB8IFJlYWN0LlJlYWN0Tm9kZVxuICBrZXk/OiBzdHJpbmdcbiAgZXZlbnRLZXk/OiBzdHJpbmdcbiAgaXNMZWFmPzogYm9vbGVhblxuICBjaGVja2VkPzogYm9vbGVhblxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgbG9hZGluZz86IGJvb2xlYW5cbiAgc2VsZWN0ZWQ/OiBib29sZWFuXG4gIHNlbGVjdGFibGU/OiBib29sZWFuXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59XG5cbi8qKlxuICog5qCR5b2i6YCJ5oupXG4gKi9cbmNsYXNzIFRyZWVTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVRyZWVTZWxlY3RQcm9wcywgSVRyZWVTZWxlY3RTdGF0ZT4ge1xuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiDlgLzooqvpgInmi6nlkI7vvIzmmK/lkKbpnIDopoHmuIXnqbrmkJzntKLmoYZcbiAgICAgKi9cbiAgICBhdXRvQ2xlYXJTZWFyY2hWYWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5LiL5ouJ5qGG5bqV6YOo5pi+56S655qE6Ieq5a6a5LmJ5YWD57SgXG4gICAgICovXG4gICAgYm90dG9tQ29udGVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqXG4gICAgICog6ZmE5Yqg57G75ZCNXG4gICAgICovXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOm7mOiupOmAieS4reeahCBrZXlcbiAgICAgKi9cbiAgICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheV0pLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmoJHoioLngrnov4fmu6Tlh73mlbBcbiAgICAgKi9cbiAgICBmaWx0ZXJUcmVlTm9kZTogUHJvcFR5cGVzLmFueSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblvIDlkK/lpKflsI/lhpnmlY/mhJ/mkJzntKLvvIzpu5jorqTkuLogZmFsc2VcbiAgICAgKi9cbiAgICBmaWx0ZXJDYXNlU2Vuc2l0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDmjIflrprlvLnlh7rlsYLnmoTniLbnuqfvvIzpu5jorqTkuLogZG9jdW1lbnQuYm9keVxuICAgICAqL1xuICAgIGdldFBvcHVwQ29udGFpbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDnsbvlnotcbiAgICAgKi9cbiAgICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcIm5vcm1hbFwiLFxuICAgICAgXCJwcmltYXJ5XCIsXG4gICAgICBcInN1Y2Nlc3NcIixcbiAgICAgIFwid2FybmluZ1wiLFxuICAgICAgXCJkYW5nZXJcIixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDmnIDlpJrmmL7npLrlpJrlsJHkuKogdGFn77yM5aaC5p6c6LaF6L+H5LqG5YiZ5Lul5pS26LW355qE5b2i5byP5Ye6546wXG4gICAgICovXG4gICAgbWF4VGFnQ291bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJ5qih5byPXG4gICAgICovXG4gICAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluaXtueahOWbnuiwg++8jOWPguaVsDogdmFsdWVcbiAgICAgKi9cbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5LiL5ouJIHZpc2libGUg5Y+Y5YyW5pe255qE5Zue6LCD77yM5Y+C5pWwOiBib29sZWFuXG4gICAgICovXG4gICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOaQnOe0ouaXtueahOWbnuiwg++8jOWPguaVsDogdmFsdWVcbiAgICAgKi9cbiAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5pCc57Si5Zue6L2m5pe255qE5Zue6LCD77yM5Y+C5pWwOiBlXG4gICAgICovXG4gICAgb25TZWFyY2hFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog6K6+572u6L6T5YWl5qGG55qE6buY6K6k5YaF5a65XG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog6K6+572u6Ieq5a6a5LmJ55qE57uT5p6c5riy5p+TXG4gICAgICovXG4gICAgcmVzdWx0UmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYblhoXnmoTmoIfnrb7mmK/lkKbmmL7npLrvvIzmraQgUHJvcCDnlKjkuo7mg7PopoHlsIbnu5PmnpzljLrlsZXnpLrlnKjliKvnmoTlnLDmlrnnmoTpnIDmsYJcbiAgICAgKi9cbiAgICByZXN1bHRWaXNpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiDlrprliLbmoJHlvaLpgInmi6nlmajnmoRpY29uXG4gICAgICovXG4gICAgcmlnaHRJY29uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWFgeiuuOebuOWQjOWAvO+8jOS9v+eUqOaDheWGte+8muWmguWQjOS4gOS4quS6uuWPr+iDveWtmOWcqOS6juS4pOS4que7hOe7h+aetuaehOS4re+8jOWmguaenOS9v+eUqOatpCBQcm9w77yM6K+35ZCM5pe25L2/55SoIHJlc3VsdFZpc2libGU9e2ZhbHNlfVxuICAgICAqL1xuICAgIHNhbWVWYWx1ZUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8gOWQr+WFqOmAieWKn+iDvVxuICAgICAqL1xuICAgIHNlbGVjdEFsbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5a6a5LmJ6YCJ5Lit6aG55Zue5aGr55qE5pa55byP77yaXG4gICAgICogMS4gc2hvdy1hbGzvvJrmmL7npLrljIXmi6zniLboioLngrnnmoTmiYDmnInpgInkuK3oioLngrnvvJtcbiAgICAgKiAyLiBzaG93LXBhcmVudO+8muWPquaYvuekuueItuiKgueCue+8m1xuICAgICAqIDMuIHNob3ctY2hpbGTvvJrlj6rmmL7npLrlrZDoioLngrnjgILpu5jorqTlgLzvvJpzaG93LXBhcmVudFxuICAgICAqL1xuICAgIHNob3dDaGVja2VkU3RyYXRlZ3k6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcInNob3ctYWxsXCIsXG4gICAgICBcInNob3ctcGFyZW50XCIsXG4gICAgICBcInNob3ctY2hpbGRcIixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDkuIvmi4nmoYbpobbpg6jmmL7npLrnmoToh6rlrprkuYnlhYPntKBcbiAgICAgKi9cbiAgICB0b3BDb250ZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiB0cmVlTm9kZXMg5pWw5o2u77yM5qC85byP5Y+C54WnIGludGVyZmFjZSBEYXRhTm9kZVxuICAgICAqL1xuICAgIHRyZWVEYXRhOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgLyoqXG4gICAgICog5aSW6YOo5o6n5Yi277ya6YCJ5Lit55qEIGtleVxuICAgICAqL1xuICAgIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYXJyYXldKSxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJVHJlZVNlbGVjdFByb3BzID0ge1xuICAgIGF1dG9DbGVhclNlYXJjaFZhbHVlOiBmYWxzZSxcbiAgICBib3R0b21Db250ZW50OiB1bmRlZmluZWQsXG4gICAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBmaWx0ZXJUcmVlTm9kZTogdW5kZWZpbmVkLFxuICAgIGZpbHRlckNhc2VTZW5zaXRpdmU6IGZhbHNlLFxuICAgIGdldFBvcHVwQ29udGFpbmVyOiBudWxsLFxuICAgIGludGVudDogXCJub3JtYWxcIixcbiAgICBtYXhUYWdDb3VudDogbnVsbCxcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBvbkNoYW5nZTogbm9vcCxcbiAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZTogbm9vcCxcbiAgICBvblNlYXJjaDogbm9vcCxcbiAgICBvblNlYXJjaEVudGVyOiBub29wLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxuICAgIHJlc3VsdFJlbmRlcjogbnVsbCxcbiAgICByZXN1bHRWaXNpYmxlOiB0cnVlLFxuICAgIHJpZ2h0SWNvbjogXCJsaXN0XCIsXG4gICAgc2FtZVZhbHVlRW5hYmxlZDogZmFsc2UsXG4gICAgc2VsZWN0QWxsOiBmYWxzZSxcbiAgICBzaG93Q2hlY2tlZFN0cmF0ZWd5OiBcInNob3ctcGFyZW50XCIsXG4gICAgdG9wQ29udGVudDogdW5kZWZpbmVkLFxuICAgIHRyZWVEYXRhOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IG51bGwsXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9ICh7IHZhbHVlIH06IElUcmVlU2VsZWN0UHJvcHMpID0+IHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBUcmVlTm9kZTogdHlwZW9mIFRyZWVOb2RlID0gVHJlZU5vZGVcblxuICBwdWJsaWMgc2VsZWN0OiB0eXB