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>
219 lines (218 loc) • 38.9 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 _input = _interopRequireDefault(require("../input"));
var _icon = _interopRequireDefault(require("../icon"));
require("./style");
var _core = require("./core");
var _excluded = ["className", "defaultValue", "disabled", "max", "min", "onBlur", "onChange", "onFocus", "onKeyDown", "precision", "step", "value"],
_excluded2 = ["leftElement", "rightElement"],
_excluded3 = ["leftElement", "rightElement"];
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; }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
var prefix = "adui-numeric-input";
var NumericInput = (0, _react.forwardRef)(function (_ref, ref) {
var className = _ref.className,
defaultValue = _ref.defaultValue,
disabled = _ref.disabled,
max = _ref.max,
min = _ref.min,
onBlur = _ref.onBlur,
onChange = _ref.onChange,
onFocus = _ref.onFocus,
onKeyDown = _ref.onKeyDown,
precisionProp = _ref.precision,
step = _ref.step,
valueProp = _ref.value,
otherProps = _objectWithoutProperties(_ref, _excluded);
var precision = precisionProp === undefined ? (0, _core.getDecimalNumber)(step || 1) : precisionProp;
var _useState = (0, _react.useState)(function () {
var valueState = valueProp !== null ? valueProp : defaultValue;
if (typeof valueState !== "number") {
valueState = "";
}
return valueState;
}),
_useState2 = _slicedToArray(_useState, 2),
value = _useState2[0],
setValue = _useState2[1];
var _useState3 = (0, _react.useState)(typeof value === "number" ? value.toFixed(precision) : ""),
_useState4 = _slicedToArray(_useState3, 2),
inputValue = _useState4[0],
setInputValue = _useState4[1];
var inputRef = (0, _react.useRef)(null);
if (valueProp !== null && value !== valueProp) {
var _inputRef$current;
setValue(typeof valueProp === "number" ? valueProp : "");
if (document.activeElement !== ((_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.input)) {
setInputValue(typeof valueProp === "number" ? valueProp.toFixed(precision) : "");
}
}
(0, _react.useImperativeHandle)(ref, function () {
return {
current: inputRef.current
};
});
var handleValueStepChange = function handleValueStepChange(type, stp, inputVal) {
var val = (0, _core.stringToNumber)(inputVal);
var decimal = (0, _core.getDecimalNumber)(stp);
if (type === "plus") {
return (val * Math.pow(10, decimal) + stp * Math.pow(10, decimal)) / Math.pow(10, decimal);
}
return (val * Math.pow(10, decimal) - stp * Math.pow(10, decimal)) / Math.pow(10, decimal);
};
var handleButtonClick = function handleButtonClick(type) {
var valueStepChanged = handleValueStepChange(type, step || 1, inputValue);
if (min !== undefined && valueStepChanged < min) {
valueStepChanged = min;
} else if (max !== undefined && valueStepChanged > max) {
valueStepChanged = max;
}
if (valueProp === null) {
setValue(valueStepChanged);
setInputValue(valueStepChanged.toFixed(precision));
}
if (onChange) {
onChange(valueStepChanged);
}
};
var handleInputChange = function handleInputChange(_ref2) {
var val = _ref2.target.value;
if ((0, _core.isLegal)(step || 1, val, min, max)) {
if (valueProp === null) {
setValue((0, _core.stringToNumber)(val));
}
if (onChange) {
onChange((0, _core.stringToNumber)(val));
}
}
if (valueProp === null) {
setInputValue(val);
}
};
var handleInputBlur = function handleInputBlur(e) {
var val = e.target.value;
if (typeof value !== "number") {
setInputValue("");
} else {
var valueFixed = value.toFixed(precision);
if (!(0, _core.isLegal)(step || 1, val, min, max) || val !== valueFixed) {
setInputValue(valueFixed);
}
}
if (onBlur) {
onBlur(e);
}
};
var handleMouseDown = function handleMouseDown(type) {
handleButtonClick(type);
setTimeout(function () {
if (inputRef.current && document.activeElement !== inputRef.current.input) {
var input = inputRef.current.input;
var end = input.value.length;
input.setSelectionRange(end, end);
input.focus();
}
}, 100);
};
var handleKeyDown = function handleKeyDown(e) {
var key = e.key;
if (key === "ArrowUp") {
e.preventDefault();
e.stopPropagation();
handleButtonClick("plus");
}
if (key === "ArrowDown") {
e.preventDefault();
e.stopPropagation();
handleButtonClick("minus");
}
};
return _react["default"].createElement(_input["default"], _extends({
className: (0, _classnames["default"])(className, "".concat(prefix), _defineProperty({}, "".concat(prefix, "-disabled"), disabled)),
cleaveOptions: {
numeral: true,
numeralDecimalScale: precision,
delimiter: ""
},
disabled: disabled,
onChange: handleInputChange,
onBlur: handleInputBlur,
onKeyDown: handleKeyDown,
value: inputValue,
ref: inputRef,
rightElement: _react["default"].createElement("div", {
className: "".concat(prefix, "-buttons")
}, _react["default"].createElement("div", {
className: "".concat(prefix, "-button"),
onClick: function onClick() {
return handleMouseDown("plus");
},
role: "none"
}, _react["default"].createElement(_icon["default"], {
icon: "arrow-up",
interactive: !disabled,
size: 12
})), _react["default"].createElement("div", {
className: "".concat(prefix, "-button"),
onClick: function onClick() {
return handleMouseDown("minus");
},
role: "none"
}, _react["default"].createElement(_icon["default"], {
icon: "arrow-down",
interactive: !disabled,
size: 12
})))
}, otherProps));
});
NumericInput.displayName = "NumericInput";
NumericInput.propTypes = {
defaultValue: _propTypes["default"].number,
max: _propTypes["default"].number,
min: _propTypes["default"].number,
onChange: _propTypes["default"].func,
precision: _propTypes["default"].number,
step: _propTypes["default"].number,
value: _propTypes["default"].number
};
NumericInput.defaultProps = {
defaultValue: null,
max: undefined,
min: undefined,
onChange: function onChange() {},
precision: undefined,
step: 1,
value: null
};
var MemoNumericInput = (0, _react.memo)(NumericInput, function (_ref3, _ref4) {
var leftElementNext = _ref4.leftElement,
rightElementNext = _ref4.rightElement,
nextProps = _objectWithoutProperties(_ref4, _excluded2);
var leftElement = _ref3.leftElement,
rightElement = _ref3.rightElement,
prevProps = _objectWithoutProperties(_ref3, _excluded3);
return JSON.stringify(prevProps) === JSON.stringify(nextProps);
});
MemoNumericInput.displayName = "NumericInput";
var _default = exports["default"] = MemoNumericInput;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX2lucHV0IiwiX2ljb24iLCJfY29yZSIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibCIsIml0ZXJhdG9yIiwiZiIsIm8iLCJuZXh0IiwiZG9uZSIsInB1c2giLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByZWZpeCIsIk51bWVyaWNJbnB1dCIsImZvcndhcmRSZWYiLCJfcmVmIiwicmVmIiwiY2xhc3NOYW1lIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJtYXgiLCJtaW4iLCJvbkJsdXIiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbktleURvd24iLCJwcmVjaXNpb25Qcm9wIiwicHJlY2lzaW9uIiwic3RlcCIsInZhbHVlUHJvcCIsIm90aGVyUHJvcHMiLCJ1bmRlZmluZWQiLCJnZXREZWNpbWFsTnVtYmVyIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJ2YWx1ZVN0YXRlIiwiX3VzZVN0YXRlMiIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsInRvRml4ZWQiLCJfdXNlU3RhdGU0IiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJpbnB1dFJlZiIsInVzZVJlZiIsIl9pbnB1dFJlZiRjdXJyZW50IiwiZG9jdW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiY3VycmVudCIsImlucHV0IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImhhbmRsZVZhbHVlU3RlcENoYW5nZSIsInR5cGUiLCJzdHAiLCJpbnB1dFZhbCIsInZhbCIsInN0cmluZ1RvTnVtYmVyIiwiZGVjaW1hbCIsIk1hdGgiLCJwb3ciLCJoYW5kbGVCdXR0b25DbGljayIsInZhbHVlU3RlcENoYW5nZWQiLCJoYW5kbGVJbnB1dENoYW5nZSIsIl9yZWYyIiwidGFyZ2V0IiwiaXNMZWdhbCIsImhhbmRsZUlucHV0Qmx1ciIsInZhbHVlRml4ZWQiLCJoYW5kbGVNb3VzZURvd24iLCJzZXRUaW1lb3V0IiwiZW5kIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJmb2N1cyIsImhhbmRsZUtleURvd24iLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWVzIiwiY29uY2F0IiwiY2xlYXZlT3B0aW9ucyIsIm51bWVyYWwiLCJudW1lcmFsRGVjaW1hbFNjYWxlIiwiZGVsaW1pdGVyIiwicmlnaHRFbGVtZW50Iiwib25DbGljayIsInJvbGUiLCJpY29uIiwiaW50ZXJhY3RpdmUiLCJzaXplIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwiTWVtb051bWVyaWNJbnB1dCIsIm1lbW8iLCJfcmVmMyIsIl9yZWY0IiwibGVmdEVsZW1lbnROZXh0IiwibGVmdEVsZW1lbnQiLCJyaWdodEVsZW1lbnROZXh0IiwibmV4dFByb3BzIiwicHJldlByb3BzIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvbnVtZXJpYy1pbnB1dC9OdW1lcmljSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBmb3J3YXJkUmVmLFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICBtZW1vLFxufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgSW5wdXQsIHsgSUlucHV0UHJvcHMsIElJbnB1dFJlZiB9IGZyb20gXCIuLi9pbnB1dFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vaWNvblwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcbmltcG9ydCB7IGlzTGVnYWwsIHN0cmluZ1RvTnVtYmVyLCBnZXREZWNpbWFsTnVtYmVyIH0gZnJvbSBcIi4vY29yZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1udW1lcmljLWlucHV0XCJcblxuZXhwb3J0IGludGVyZmFjZSBJTnVtZXJpY0lucHV0UHJvcHNcbiAgZXh0ZW5kcyBPbWl0PElJbnB1dFByb3BzLCBcImRlZmF1bHRWYWx1ZVwiIHwgXCJvbkNoYW5nZVwiIHwgXCJ2YWx1ZVwiPiB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog6buY6K6k55qE5Yid5aeL5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDorr7nva7mnIDlpKflgLxcbiAgICovXG4gIG1heD86IG51bWJlclxuICAvKipcbiAgICog6K6+572u5pyA5bCP5YC8XG4gICAqL1xuICBtaW4/OiBudW1iZXJcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86ICh2YWx1ZT86IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICog6K6+572u57K+5bqmXG4gICAqL1xuICBwcmVjaXNpb24/OiBudW1iZXJcbiAgLyoqXG4gICAqIOiuvue9ruWinuWKoOeahOW5heW6plxuICAgKi9cbiAgc3RlcD86IG51bWJlclxuICAvKipcbiAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAqL1xuICB2YWx1ZT86IG51bWJlciB8IG51bGxcbn1cblxuLyoqXG4gKiDmlbDlrZfovpPlhaXmoYbjgIJcbiAqL1xuY29uc3QgTnVtZXJpY0lucHV0OiBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICBJTnVtZXJpY0lucHV0UHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPGFueT5cbj4gPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBtYXgsXG4gICAgICBtaW4sXG4gICAgICBvbkJsdXIsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbktleURvd24sXG4gICAgICBwcmVjaXNpb246IHByZWNpc2lvblByb3AsXG4gICAgICBzdGVwLFxuICAgICAgdmFsdWU6IHZhbHVlUHJvcCxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJTnVtZXJpY0lucHV0UHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IHByZWNpc2lvbiA9XG4gICAgICBwcmVjaXNpb25Qcm9wID09PSB1bmRlZmluZWQgPyBnZXREZWNpbWFsTnVtYmVyKHN0ZXAgfHwgMSkgOiBwcmVjaXNpb25Qcm9wXG5cbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPG51bWJlciB8IHN0cmluZz4oKCkgPT4ge1xuICAgICAgbGV0IHZhbHVlU3RhdGU6IFJlYWN0LlJlYWN0VGV4dCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgICB2YWx1ZVByb3AgIT09IG51bGwgPyB2YWx1ZVByb3AgOiBkZWZhdWx0VmFsdWVcbiAgICAgIGlmICh0eXBlb2YgdmFsdWVTdGF0ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICB2YWx1ZVN0YXRlID0gXCJcIlxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlU3RhdGVcbiAgICB9KVxuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oXG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgPyB2YWx1ZS50b0ZpeGVkKHByZWNpc2lvbikgOiBcIlwiXG4gICAgKVxuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPElJbnB1dFJlZj4obnVsbClcblxuICAgIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgICBpZiAodmFsdWVQcm9wICE9PSBudWxsICYmIHZhbHVlICE9PSB2YWx1ZVByb3ApIHtcbiAgICAgIHNldFZhbHVlKHR5cGVvZiB2YWx1ZVByb3AgPT09IFwibnVtYmVyXCIgPyB2YWx1ZVByb3AgOiBcIlwiKVxuICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGlucHV0UmVmLmN1cnJlbnQ/LmlucHV0KSB7XG4gICAgICAgIHNldElucHV0VmFsdWUoXG4gICAgICAgICAgdHlwZW9mIHZhbHVlUHJvcCA9PT0gXCJudW1iZXJcIiA/IHZhbHVlUHJvcC50b0ZpeGVkKHByZWNpc2lvbikgOiBcIlwiXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICAgIGN1cnJlbnQ6IGlucHV0UmVmLmN1cnJlbnQsXG4gICAgfSkpXG5cbiAgICBjb25zdCBoYW5kbGVWYWx1ZVN0ZXBDaGFuZ2UgPSAoXG4gICAgICB0eXBlOiBcInBsdXNcIiB8IFwibWludXNcIixcbiAgICAgIHN0cDogbnVtYmVyLFxuICAgICAgaW5wdXRWYWw/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIC8vIOWwhiBpbnB1dFZhbCDovazmiJDmlbDlrZfvvIzlpoLmnpzmmK/nqbrlrZfnrKbkuLLvvIzliJnorqTkuLrku44gMCDlvIDlp4vliqDlh49cbiAgICAgIGNvbnN0IHZhbCA9IHN0cmluZ1RvTnVtYmVyKGlucHV0VmFsKVxuICAgICAgY29uc3QgZGVjaW1hbCA9IGdldERlY2ltYWxOdW1iZXIoc3RwKVxuICAgICAgaWYgKHR5cGUgPT09IFwicGx1c1wiKSB7XG4gICAgICAgIHJldHVybiAodmFsICogMTAgKiogZGVjaW1hbCArIHN0cCAqIDEwICoqIGRlY2ltYWwpIC8gMTAgKiogZGVjaW1hbFxuICAgICAgfVxuICAgICAgcmV0dXJuICh2YWwgKiAxMCAqKiBkZWNpbWFsIC0gc3RwICogMTAgKiogZGVjaW1hbCkgLyAxMCAqKiBkZWNpbWFsXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQnV0dG9uQ2xpY2sgPSAodHlwZTogXCJwbHVzXCIgfCBcIm1pbnVzXCIpID0+IHtcbiAgICAgIGxldCB2YWx1ZVN0ZXBDaGFuZ2VkID0gaGFuZGxlVmFsdWVTdGVwQ2hhbmdlKHR5cGUsIHN0ZXAgfHwgMSwgaW5wdXRWYWx1ZSlcbiAgICAgIGlmIChtaW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZVN0ZXBDaGFuZ2VkIDwgbWluKSB7XG4gICAgICAgIHZhbHVlU3RlcENoYW5nZWQgPSBtaW5cbiAgICAgIH0gZWxzZSBpZiAobWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWVTdGVwQ2hhbmdlZCA+IG1heCkge1xuICAgICAgICB2YWx1ZVN0ZXBDaGFuZ2VkID0gbWF4XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVQcm9wID09PSBudWxsKSB7XG4gICAgICAgIHNldFZhbHVlKHZhbHVlU3RlcENoYW5nZWQpXG4gICAgICAgIHNldElucHV0VmFsdWUodmFsdWVTdGVwQ2hhbmdlZC50b0ZpeGVkKHByZWNpc2lvbikpXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UodmFsdWVTdGVwQ2hhbmdlZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9ICh7XG4gICAgICB0YXJnZXQ6IHsgdmFsdWU6IHZhbCB9LFxuICAgIH06IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoaXNMZWdhbChzdGVwIHx8IDEsIHZhbCwgbWluLCBtYXgpKSB7XG4gICAgICAgIGlmICh2YWx1ZVByb3AgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRWYWx1ZShzdHJpbmdUb051bWJlcih2YWwpKVxuICAgICAgICB9XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgIG9uQ2hhbmdlKHN0cmluZ1RvTnVtYmVyKHZhbCkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZVByb3AgPT09IG51bGwpIHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZSh2YWwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlSW5wdXRCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlOiB2YWwgfSxcbiAgICAgIH0gPSBlXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHNldElucHV0VmFsdWUoXCJcIilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlRml4ZWQgPSB2YWx1ZS50b0ZpeGVkKHByZWNpc2lvbilcbiAgICAgICAgaWYgKCFpc0xlZ2FsKHN0ZXAgfHwgMSwgdmFsLCBtaW4sIG1heCkgfHwgdmFsICE9PSB2YWx1ZUZpeGVkKSB7XG4gICAgICAgICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZUZpeGVkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob25CbHVyKSB7XG4gICAgICAgIG9uQmx1cihlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9ICh0eXBlOiBcInBsdXNcIiB8IFwibWludXNcIikgPT4ge1xuICAgICAgaGFuZGxlQnV0dG9uQ2xpY2sodHlwZSlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGlucHV0UmVmLmN1cnJlbnQuaW5wdXRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgeyBpbnB1dCB9ID0gaW5wdXRSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGVuZCA9IGlucHV0LnZhbHVlLmxlbmd0aFxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGVuZCwgZW5kKVxuICAgICAgICAgIGlucHV0LmZvY3VzKClcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgeyBrZXkgfSA9IGVcbiAgICAgIGlmIChrZXkgPT09IFwiQXJyb3dVcFwiKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIGhhbmRsZUJ1dHRvbkNsaWNrKFwicGx1c1wiKVxuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBoYW5kbGVCdXR0b25DbGljayhcIm1pbnVzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxJbnB1dFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCBgJHtwcmVmaXh9YCwge1xuICAgICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICB9KX1cbiAgICAgICAgY2xlYXZlT3B0aW9ucz17e1xuICAgICAgICAgIG51bWVyYWw6IHRydWUsXG4gICAgICAgICAgbnVtZXJhbERlY2ltYWxTY2FsZTogcHJlY2lzaW9uLFxuICAgICAgICAgIGRlbGltaXRlcjogXCJcIixcbiAgICAgICAgfX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17aGFuZGxlSW5wdXRCbHVyfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICByaWdodEVsZW1lbnQ9e1xuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWJ1dHRvbnNgfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWJ1dHRvbmB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1vdXNlRG93bihcInBsdXNcIil9XG4gICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb24gaWNvbj1cImFycm93LXVwXCIgaW50ZXJhY3RpdmU9eyFkaXNhYmxlZH0gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWJ1dHRvbmB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1vdXNlRG93bihcIm1pbnVzXCIpfVxuICAgICAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uIGljb249XCJhcnJvdy1kb3duXCIgaW50ZXJhY3RpdmU9eyFkaXNhYmxlZH0gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgIC8+XG4gICAgKVxuICB9XG4pXG5cbk51bWVyaWNJbnB1dC5kaXNwbGF5TmFtZSA9IFwiTnVtZXJpY0lucHV0XCJcblxuTnVtZXJpY0lucHV0LnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOm7mOiupOeahOWIneWni+WAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog6K6+572u5pyA5aSn5YC8XG4gICAqL1xuICBtYXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDorr7nva7mnIDlsI/lgLxcbiAgICovXG4gIG1pbjogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7nsr7luqZcbiAgICovXG4gIHByZWNpc2lvbjogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOWinuWHj+eahOW5heW6plxuICAgKi9cbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOWAvCAtIOWklumDqOaOp+WItlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG59XG5cbk51bWVyaWNJbnB1dC5kZWZhdWx0UHJvcHMgPSB7XG4gIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgbWF4OiB1bmRlZmluZWQsXG4gIG1pbjogdW5kZWZpbmVkLFxuICBvbkNoYW5nZTogKCkgPT4ge30sXG4gIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICBzdGVwOiAxLFxuICB2YWx1ZTogbnVsbCxcbn1cblxuY29uc3QgTWVtb051bWVyaWNJbnB1dCA9IG1lbW8oXG4gIE51bWVyaWNJbnB1dCxcbiAgKFxuICAgIHsgbGVmdEVsZW1lbnQsIHJpZ2h0RWxlbWVudCwgLi4ucHJldlByb3BzIH0sXG4gICAge1xuICAgICAgbGVmdEVsZW1lbnQ6IGxlZnRFbGVtZW50TmV4dCxcbiAgICAgIHJpZ2h0RWxlbWVudDogcmlnaHRFbGVtZW50TmV4dCxcbiAgICAgIC4uLm5leHRQcm9wc1xuICAgIH1cbiAgKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMpID09PSBKU09OLnN0cmluZ2lmeShuZXh0UHJvcHMpXG4pXG5cbk1lbW9OdW1lcmljSW5wdXQuZGlzcGxheU5hbWUgPSBcIk51bWVyaWNJbnB1dFwiXG5cbmV4cG9ydCBkZWZhdWx0IE1lbW9OdW1lcmljSW5wdXRcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFL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
;