UNPKG

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>

429 lines (368 loc) 73 kB
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 = ["autoComplete", "autoFocus", "className", "cleaveOptions", "contentJustify", "countHanzi", "defaultValue", "disabled", "id", "inputClassName", "inputStyle", "intent", "leftElement", "limit", "name", "onBlur", "onChange", "onFocus", "onKeyDown", "onPressEnter", "placeholder", "required", "rightElement", "size", "style", "theme", "type", "value"]; 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 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 _regeneratorRuntime() { "use strict"; _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(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 _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 _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 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; } import React, { forwardRef, useContext, useImperativeHandle, useRef, useState, useLayoutEffect } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import Cleave from "cleave.js/react"; import warning from "../_util/warning"; import { ConfigContext, getComputedSize } from "../config-provider"; import Textarea from "./Textarea"; import "./style"; var prefix = "adui-input"; var Input = forwardRef(function (_ref, ref) { var _cleaveRef$current, _classNames, _classNames2, _classNames3; var autoComplete = _ref.autoComplete, autoFocus = _ref.autoFocus, className = _ref.className, cleaveOptions = _ref.cleaveOptions, contentJustify = _ref.contentJustify, countHanzi = _ref.countHanzi, defaultValue = _ref.defaultValue, disabled = _ref.disabled, id = _ref.id, inputClassName = _ref.inputClassName, inputStyle = _ref.inputStyle, intent = _ref.intent, leftElement = _ref.leftElement, limit = _ref.limit, name = _ref.name, onBlur = _ref.onBlur, onChange = _ref.onChange, onFocus = _ref.onFocus, onKeyDown = _ref.onKeyDown, onPressEnter = _ref.onPressEnter, placeholder = _ref.placeholder, required = _ref.required, rightElement = _ref.rightElement, sizeProp = _ref.size, style = _ref.style, theme = _ref.theme, type = _ref.type, value = _ref.value, otherProps = _objectWithoutProperties(_ref, _excluded); var _useState = useState(null), _useState2 = _slicedToArray(_useState, 2), leftElementWidth = _useState2[0], setLeftElementWidth = _useState2[1]; var _useState3 = useState(null), _useState4 = _slicedToArray(_useState3, 2), rightElementWidth = _useState4[0], setRightElementWidth = _useState4[1]; var inputRef = useRef(null); var wrapperElementRef = useRef(null); var leftElementRef = useRef(null); var rightElementRef = useRef(null); var justifyElementRef = useRef(null); var cleaveRef = useRef(null); var inputElement = (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) || (cleaveRef === null || cleaveRef === void 0 ? void 0 : (_cleaveRef$current = cleaveRef.current) === null || _cleaveRef$current === void 0 ? void 0 : _cleaveRef$current.element); var _useContext = useContext(ConfigContext), sizeContext = _useContext.size; var size = getComputedSize(sizeProp, sizeContext); var syncCleave = function syncCleave() { if (cleaveRef !== null && cleaveRef !== void 0 && cleaveRef.current) { var _cleaveRef$current2 = cleaveRef.current, element = _cleaveRef$current2.element, state = _cleaveRef$current2.state, properties = _cleaveRef$current2.properties; var lastInputValue = cleaveRef.current.lastInputValue; if (lastInputValue !== value) { lastInputValue = value; } if (state.value !== value) { state.value = value; } if (properties.result !== value) { properties.result = value; } if (element && element.value !== value && value) { var pos = element.selectionStart; element.value = value; Promise.resolve().then(function () { element.setSelectionRange(pos, pos); }); } } }; var handleChange = function handleChange(e) { if (!disabled && onChange) { var val = e.target.value.replace(/\u0008|\u0009|\u000A|\u000B|\u000C|\u000D|\u00A0|\u2028|\u2029|\uFEFF/g, ""); onChange(e, val); } }; var handleKeyDown = function handleKeyDown(e) { if (e.key === "Enter" && onPressEnter) { onPressEnter(e); } if (onKeyDown) { onKeyDown(e); } }; var handleBlur = function handleBlur(e) { syncCleave(); if (onBlur) { onBlur(e); } }; var handleFocus = function handleFocus(e) { if (onFocus) { onFocus(e); } }; var handleAttachedElementClick = function handleAttachedElementClick(position) { if (position === "left" && leftElement && leftElement.type && leftElement.type.name === "Icon") { inputElement.focus(); inputElement.select(); } if (position === "right" && rightElement && rightElement.type && rightElement.type.name === "Icon") { inputElement.focus(); inputElement.select(); } }; var fixControlledValue = function fixControlledValue(val) { if (typeof val === "undefined" || val === null) { return ""; } return val; }; var updateElementsWidth = function () { var _ref2 = _asyncToGenerator(_regeneratorRuntime().mark(function _callee() { var clientWidth, _clientWidth, scrollWidth; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return new Promise(function (resolve) { return setTimeout(resolve, 0); }); case 2: if (leftElementRef !== null && leftElementRef !== void 0 && leftElementRef.current) { clientWidth = leftElementRef.current.clientWidth; if (Math.abs(clientWidth - (leftElementWidth || 0)) > 2) { setLeftElementWidth(clientWidth); } } else if (leftElementWidth) { setLeftElementWidth(null); } if (rightElementRef !== null && rightElementRef !== void 0 && rightElementRef.current) { _clientWidth = rightElementRef.current.clientWidth; if (Math.abs(_clientWidth - (rightElementWidth || 0)) > 2) { setRightElementWidth(_clientWidth); } } else if (rightElementWidth) { setRightElementWidth(null); } if (justifyElementRef !== null && justifyElementRef !== void 0 && justifyElementRef.current) { scrollWidth = justifyElementRef.current.scrollWidth; if (wrapperElementRef.current && Math.ceil(scrollWidth) !== wrapperElementRef.current.clientWidth) { wrapperElementRef.current.style.width = "".concat(Math.ceil(scrollWidth), "px"); } } case 5: case "end": return _context.stop(); } } }, _callee); })); return function updateElementsWidth() { return _ref2.apply(this, arguments); }; }(); var getFormatStrLeng = function getFormatStrLeng(str) { var len = str.length; var realLength = 0; var charCode = -1; for (var i = 0; i < len; i += 1) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) { realLength += 0.5; } else { realLength += 1; } } return Math.ceil(realLength); }; useLayoutEffect(function () { updateElementsWidth(); syncCleave(); }); useImperativeHandle(ref, function () { var _cleaveRef$current3; var realRef = (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) || (cleaveRef === null || cleaveRef === void 0 ? void 0 : (_cleaveRef$current3 = cleaveRef.current) === null || _cleaveRef$current3 === void 0 ? void 0 : _cleaveRef$current3.element); return { cleave: cleaveRef === null || cleaveRef === void 0 ? void 0 : cleaveRef.current, input: realRef, leftElement: leftElementRef === null || leftElementRef === void 0 ? void 0 : leftElementRef.current, rightElement: rightElementRef === null || rightElementRef === void 0 ? void 0 : rightElementRef.current, updateElementsWidth: updateElementsWidth, handleChange: handleChange, handleKeyDown: handleKeyDown, handleBlur: handleBlur, handleFocus: handleFocus, handleAttachedElementClick: handleAttachedElementClick, focus: function focus() { return realRef.focus(); }, blur: function blur() { return realRef.blur(); } }; }); var inputProps = { autoComplete: autoComplete, autoFocus: autoFocus, className: classNames("".concat(prefix, "-base"), inputClassName), disabled: disabled, id: id, name: name, onBlur: handleBlur, onChange: handleChange, onFocus: handleFocus, onKeyDown: handleKeyDown, placeholder: placeholder, ref: inputRef, required: required, style: _objectSpread({ paddingLeft: leftElementWidth ? "".concat(leftElementWidth, "px") : undefined, paddingRight: rightElementWidth ? "".concat(rightElementWidth, "px") : undefined }, inputStyle), type: type }; var cleaveInputProps = _objectSpread({}, inputProps); if (value !== null) { inputProps.value = fixControlledValue(value); } else { inputProps.defaultValue = fixControlledValue(defaultValue); } cleaveInputProps.value = value || defaultValue || ""; var input = !cleaveOptions || Object.keys(cleaveOptions).length === 0 ? React.createElement("input", inputProps) : React.createElement(Cleave, _extends({ options: cleaveOptions }, cleaveInputProps, { ref: cleaveRef })); var length; if (limit) { warning(!rightElement, "Input", "不允许同时使用 prop `limit` 与 prop `rightElement`"); if (value) { length = countHanzi ? getFormatStrLeng(value) : value.length; } else { warning(value !== null, "Input", "如果要使用 limit Prop,必须从外部控制 value。"); length = 0; } } if (contentJustify) { warning(value !== null, "Input", "如果使用 contentJusfity Prop,必须从外部控制 value。"); } var classSet = classNames(className, "".concat(prefix, "-wrapper"), "".concat(prefix, "-").concat(size), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-").concat(theme), theme), _defineProperty(_classNames, "".concat(prefix, "-disabled"), disabled), _defineProperty(_classNames, "".concat(prefix, "-limited"), limit), _defineProperty(_classNames, "".concat(prefix, "-limited_digit-over-2"), limit && limit.toString().length > 2), _defineProperty(_classNames, "".concat(prefix, "-normal"), intent === "normal"), _defineProperty(_classNames, "".concat(prefix, "-primary"), intent === "primary"), _defineProperty(_classNames, "".concat(prefix, "-success"), intent === "success"), _defineProperty(_classNames, "".concat(prefix, "-warning"), intent === "warning"), _defineProperty(_classNames, "".concat(prefix, "-danger"), intent === "danger" || length && limit && length > limit), _classNames)); var leftType = leftElement && leftElement.type ? leftElement.type.type : ""; var rightType = rightElement && rightElement.type ? rightElement.type.type : ""; return React.createElement("div", _extends({ ref: wrapperElementRef, className: classSet, style: style }, otherProps), !!leftElement && React.createElement("div", { ref: leftElementRef, onClick: function onClick() { return handleAttachedElementClick("left"); }, role: "none", className: classNames("".concat(prefix, "-left"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefix, "-left_button"), leftType === "Button"), _defineProperty(_classNames2, "".concat(prefix, "-left_icon"), leftType === "Icon"), _defineProperty(_classNames2, "".concat(prefix, "-left_select"), leftType === "Select"), _classNames2)) }, leftElement), input, !!rightElement && React.createElement("div", { ref: rightElementRef, onClick: function onClick() { return handleAttachedElementClick("right"); }, role: "none", className: classNames("".concat(prefix, "-right"), (_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefix, "-right_button"), rightType === "Button"), _defineProperty(_classNames3, "".concat(prefix, "-right_icon"), rightType === "Icon"), _defineProperty(_classNames3, "".concat(prefix, "-right_select"), rightType === "Select"), _classNames3)) }, rightElement), limit && React.createElement("div", { className: "".concat(prefix, "-limit") }, React.createElement("span", null, "".concat(length, "/").concat(limit))), contentJustify && React.createElement("div", { className: "".concat(prefix, "-justify"), ref: justifyElementRef, style: { paddingLeft: leftElementWidth ? "".concat(leftElementWidth, "px") : undefined, paddingRight: rightElementWidth ? "".concat(rightElementWidth, "px") : undefined, minWidth: style === null || style === void 0 ? void 0 : style.minWidth } }, fixControlledValue(value))); }); Input.Textarea = Textarea; Input.displayName = "Input"; Input.propTypes = { autoComplete: PropTypes.oneOf(["on", "off"]), autoFocus: PropTypes.bool, className: PropTypes.string, cleaveOptions: PropTypes.object, contentJustify: PropTypes.bool, countHanzi: PropTypes.bool, defaultValue: PropTypes.string, disabled: PropTypes.bool, id: PropTypes.string, inputClassName: PropTypes.string, inputStyle: PropTypes.object, intent: PropTypes.oneOf(["normal", "primary", "success", "warning", "danger"]), leftElement: PropTypes.any, limit: PropTypes.number, name: PropTypes.string, onBlur: PropTypes.func, onChange: PropTypes.func, onFocus: PropTypes.func, onKeyDown: PropTypes.func, onPressEnter: PropTypes.func, placeholder: PropTypes.string, required: PropTypes.bool, rightElement: PropTypes.any, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), style: PropTypes.object, theme: PropTypes.oneOf([null, "light"]), type: PropTypes.string, value: PropTypes.string }; Input.defaultProps = { autoComplete: "off", autoFocus: false, className: undefined, cleaveOptions: {}, contentJustify: false, countHanzi: true, defaultValue: null, disabled: false, id: null, intent: "normal", inputClassName: undefined, inputStyle: {}, leftElement: undefined, limit: null, name: null, onBlur: function onBlur() {}, onChange: function onChange() {}, onFocus: function onFocus() {}, onKeyDown: function onKeyDown() {}, onPressEnter: function onPressEnter() {}, placeholder: "请输入", required: false, rightElement: undefined, size: "small", style: {}, theme: null, type: null, value: null }; export default Input; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VDb250ZXh0IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlTGF5b3V0RWZmZWN0IiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsIkNsZWF2ZSIsIndhcm5pbmciLCJDb25maWdDb250ZXh0IiwiZ2V0Q29tcHV0ZWRTaXplIiwiVGV4dGFyZWEiLCJwcmVmaXgiLCJJbnB1dCIsInJlZiIsImF1dG9Db21wbGV0ZSIsImF1dG9Gb2N1cyIsImNsYXNzTmFtZSIsImNsZWF2ZU9wdGlvbnMiLCJjb250ZW50SnVzdGlmeSIsImNvdW50SGFuemkiLCJkZWZhdWx0VmFsdWUiLCJkaXNhYmxlZCIsImlkIiwiaW5wdXRDbGFzc05hbWUiLCJpbnB1dFN0eWxlIiwiaW50ZW50IiwibGVmdEVsZW1lbnQiLCJsaW1pdCIsIm5hbWUiLCJvbkJsdXIiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbktleURvd24iLCJvblByZXNzRW50ZXIiLCJwbGFjZWhvbGRlciIsInJlcXVpcmVkIiwicmlnaHRFbGVtZW50Iiwic2l6ZVByb3AiLCJzaXplIiwic3R5bGUiLCJ0aGVtZSIsInR5cGUiLCJ2YWx1ZSIsIm90aGVyUHJvcHMiLCJsZWZ0RWxlbWVudFdpZHRoIiwic2V0TGVmdEVsZW1lbnRXaWR0aCIsInJpZ2h0RWxlbWVudFdpZHRoIiwic2V0UmlnaHRFbGVtZW50V2lkdGgiLCJpbnB1dFJlZiIsIndyYXBwZXJFbGVtZW50UmVmIiwibGVmdEVsZW1lbnRSZWYiLCJyaWdodEVsZW1lbnRSZWYiLCJqdXN0aWZ5RWxlbWVudFJlZiIsImNsZWF2ZVJlZiIsImlucHV0RWxlbWVudCIsImN1cnJlbnQiLCJlbGVtZW50Iiwic2l6ZUNvbnRleHQiLCJzeW5jQ2xlYXZlIiwic3RhdGUiLCJwcm9wZXJ0aWVzIiwibGFzdElucHV0VmFsdWUiLCJyZXN1bHQiLCJwb3MiLCJzZWxlY3Rpb25TdGFydCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInNldFNlbGVjdGlvblJhbmdlIiwiaGFuZGxlQ2hhbmdlIiwiZSIsInZhbCIsInRhcmdldCIsInJlcGxhY2UiLCJoYW5kbGVLZXlEb3duIiwia2V5IiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2siLCJwb3NpdGlvbiIsImZvY3VzIiwic2VsZWN0IiwiZml4Q29udHJvbGxlZFZhbHVlIiwidXBkYXRlRWxlbWVudHNXaWR0aCIsInNldFRpbWVvdXQiLCJjbGllbnRXaWR0aCIsIk1hdGgiLCJhYnMiLCJzY3JvbGxXaWR0aCIsImNlaWwiLCJ3aWR0aCIsImdldEZvcm1hdFN0ckxlbmciLCJzdHIiLCJsZW4iLCJsZW5ndGgiLCJyZWFsTGVuZ3RoIiwiY2hhckNvZGUiLCJpIiwiY2hhckNvZGVBdCIsInJlYWxSZWYiLCJjbGVhdmUiLCJpbnB1dCIsImJsdXIiLCJpbnB1dFByb3BzIiwicGFkZGluZ0xlZnQiLCJ1bmRlZmluZWQiLCJwYWRkaW5nUmlnaHQiLCJjbGVhdmVJbnB1dFByb3BzIiwiT2JqZWN0Iiwia2V5cyIsImNsYXNzU2V0IiwidG9TdHJpbmciLCJsZWZ0VHlwZSIsInJpZ2h0VHlwZSIsIm1pbldpZHRoIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJvbmVPZiIsImJvb2wiLCJzdHJpbmciLCJvYmplY3QiLCJhbnkiLCJudW1iZXIiLCJmdW5jIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9pbnB1dC9JbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIGZvcndhcmRSZWYsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHVzZUxheW91dEVmZmVjdCxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENsZWF2ZSBmcm9tIFwiY2xlYXZlLmpzL3JlYWN0XCJcbmltcG9ydCB3YXJuaW5nIGZyb20gXCIuLi9fdXRpbC93YXJuaW5nXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IFRleHRhcmVhIGZyb20gXCIuL1RleHRhcmVhXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktaW5wdXRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvQ29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZT86IFwib25cIiB8IFwib2ZmXCJcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhblxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOWunueOsOaJi+acuuWPt+OAgeaXpeacn+OAgeaVsOWtl+WPiuiHquWumuS5ieagvOW8j++8jOWPr+afpeeci1vnpLrkvotdKGh0dHA6Ly93eGFkLmRlc2lnbi9hZHVpL2NvbXBvbmVudHMvaW5wdXQp44CCXG4gICAqL1xuICBjbGVhdmVPcHRpb25zPzogb2JqZWN0XG4gIC8qKlxuICAgKiDlrr3luqbmmK/lkKbkuI7lhoXlrrnlrr3luqblr7npvZBcbiAgICovXG4gIGNvbnRlbnRKdXN0aWZ5PzogYm9vbGVhblxuICAvKipcbiAgICog5piv5ZCm5oyJ54Wn5LiA5Liq5rGJ5a2X566XIDIg5a2X5pWw55qE5pa55byP6ZmQ5Yi26ZW/5bqmXG4gICAqL1xuICBjb3VudEhhbnppPzogYm9vbGVhblxuICAvKipcbiAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5L2c55So5YiwIGlucHV0IOWFg+e0oOeahOexu+WQjVxuICAgKi9cbiAgaW5wdXRDbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOS9nOeUqOWIsCBpbnB1dCDlhYPntKDnmoTmoLflvI9cbiAgICovXG4gIGlucHV0U3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiDovpPlhaXmoYbnmoQgaWRcbiAgICovXG4gIGlkPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog57G75Z6LXG4gICAqL1xuICBpbnRlbnQ/OiBcIm5vcm1hbFwiIHwgXCJwcmltYXJ5XCIgfCBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJkYW5nZXJcIlxuICAvKipcbiAgICog5YmN572u5YWD57SgXG4gICAqL1xuICBsZWZ0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIC8qKlxuICAgKiDpmZDliLbplb/luqZcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gbmFtZVxuICAgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIGJsdXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQmx1cj86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDlgLzmlLnlj5jml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4sIHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkXG4gIC8qKlxuICAgKiBmb2N1cyDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25Gb2N1cz86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbktleURvd24/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICogZW50ZXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uUHJlc3NFbnRlcj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBwbGFjZWhvbGRlclxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIHJlcXVpcmVkXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWQjue9ruWFg+e0oFxuICAgKi9cbiAgcmlnaHRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6ZmE5Yqg5qC35byPXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU/OiBudWxsIHwgXCJsaWdodFwiXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSB0eXBlXG4gICAqL1xuICB0eXBlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAqL1xuICB2YWx1ZT86IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRSZWYge1xuICBjbGVhdmU6IGFueVxuICBpbnB1dDogSFRNTElucHV0RWxlbWVudFxuICBsZWZ0RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsXG4gIHJpZ2h0RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsXG4gIHVwZGF0ZUVsZW1lbnRzV2lkdGg6ICgpID0+IHZvaWRcbiAgaGFuZGxlQ2hhbmdlOiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlS2V5RG93bjogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlQmx1cjogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrOiAocG9zaXRpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSA9PiB2b2lkXG4gIGZvY3VzOiAoKSA9PiB2b2lkXG4gIGJsdXI6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRcbiAgZXh0ZW5kcyBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICAgIElJbnB1dFByb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxJSW5wdXRSZWY+XG4gID4ge1xuICBUZXh0YXJlYTogdHlwZW9mIFRleHRhcmVhXG59XG5cbi8qKlxuICog6L6T5YWl5qGG55So5LqO5paH5pys6L6T5YWl55qE5Yy65Z+f77yM5Y+v57uT5ZCI5Zu+5qCH44CB5oyJ6ZKu44CB6YCJ5oup5Zmo562J57uE5Lu25L2/55So44CCXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IElucHV0OiBJSW5wdXQgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgYXV0b0NvbXBsZXRlLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2xlYXZlT3B0aW9ucyxcbiAgICAgIGNvbnRlbnRKdXN0aWZ5LFxuICAgICAgY291bnRIYW56aSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBpbnB1dENsYXNzTmFtZSxcbiAgICAgIGlucHV0U3R5bGUsXG4gICAgICBpbnRlbnQsXG4gICAgICBsZWZ0RWxlbWVudCxcbiAgICAgIGxpbWl0LFxuICAgICAgbmFtZSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUHJlc3NFbnRlcixcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICByaWdodEVsZW1lbnQsXG4gICAgICBzaXplOiBzaXplUHJvcCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhlbWUsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSUlucHV0UHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IFtsZWZ0RWxlbWVudFdpZHRoLCBzZXRMZWZ0RWxlbWVudFdpZHRoXSA9IHVzZVN0YXRlPG51bGwgfCBudW1iZXI+KFxuICAgICAgbnVsbFxuICAgIClcbiAgICBjb25zdCBbcmlnaHRFbGVtZW50V2lkdGgsIHNldFJpZ2h0RWxlbWVudFdpZHRoXSA9IHVzZVN0YXRlPG51bGwgfCBudW1iZXI+KFxuICAgICAgbnVsbFxuICAgIClcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gICAgY29uc3Qgd3JhcHBlckVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgbGVmdEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgcmlnaHRFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IGp1c3RpZnlFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IGNsZWF2ZVJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG5cbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBpbnB1dFJlZj8uY3VycmVudCB8fCBjbGVhdmVSZWY/LmN1cnJlbnQ/LmVsZW1lbnRcblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IHNpemUgPSBnZXRDb21wdXRlZFNpemUoc2l6ZVByb3AsIHNpemVDb250ZXh0KVxuXG4gICAgY29uc3Qgc3luY0NsZWF2ZSA9ICgpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICog5L+u5aSNIGNsZWF2ZS4xLjQuNyBidWc6XG4gICAgICAgKi9cbiAgICAgIGlmIChjbGVhdmVSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBlbGVtZW50LCBzdGF0ZSwgcHJvcGVydGllcyB9ID0gY2xlYXZlUmVmLmN1cnJlbnRcbiAgICAgICAgbGV0IHsgbGFzdElucHV0VmFsdWUgfSA9IGNsZWF2ZVJlZi5jdXJyZW50XG4gICAgICAgIGlmIChsYXN0SW5wdXRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICBsYXN0SW5wdXRWYWx1ZSA9IHZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gdmFsdWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydGllcy5yZXN1bHQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgcHJvcGVydGllcy5yZXN1bHQgPSB2YWx1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQudmFsdWUgIT09IHZhbHVlICYmIHZhbHVlKSB7XG4gICAgICAgICAgLy8g5L+d5a2Y5YWJ5qCH5L2N572u562J5ZCO57ut5oGi5aSNXG4gICAgICAgICAgY29uc3QgcG9zID0gZWxlbWVudC5zZWxlY3Rpb25TdGFydFxuXG4gICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHZhbHVlXG5cbiAgICAgICAgICAvLyDnroDljZXnrYnlvoXkuIDkuKptaWNyb3Rhc2vvvIzlkKbliJnml6Dms5Xorr7nva7lhYnmoIfkvY3nva5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvY29yZS1qcy9pbnRlcm5hbHMvbWljcm90YXNrLmpzI0xMNDZDNjEtTDQ2QzYxXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCwgbWF4LWxlbiAqL1xuICAgICAgICAvLyAwOCBCYWNrc3BhY2UsIDA5IFRhYiwgMEEg5o2i6KGM56ymLCAwQiDlnoLnm7TliLbooajnrKYsIDBDIOaNoumhtSwgMEQg5Zue6L2mLCBBMCDkuI3pl7Tmlq3nqbrmoLwsXG4gICAgICAgIC8vIDIwMjgvMjAyOSDliIbpmpTnrKYsIEZFZmYg5a2X6IqC6aG65bqP5qCH6K6w44CCXG4gICAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgL1xcdTAwMDh8XFx1MDAwOXxcXHUwMDBBfFxcdTAwMEJ8XFx1MDAwQ3xcXHUwMDBEfFxcdTAwQTB8XFx1MjAyOHxcXHUyMDI5fFxcdUZFRkYvZyxcbiAgICAgICAgICBcIlwiXG4gICAgICAgIClcbiAgICAgICAgb25DaGFuZ2UoZSwgdmFsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgJiYgb25QcmVzc0VudGVyKSB7XG4gICAgICAgIG9uUHJlc3NFbnRlcihlKVxuICAgICAgfVxuICAgICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgICBvbktleURvd24oZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHN5bmNDbGVhdmUoKVxuICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICBvbkJsdXIoZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAob25Gb2N1cykge1xuICAgICAgICBvbkZvY3VzKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2sgPSAocG9zaXRpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHBvc2l0aW9uID09PSBcImxlZnRcIiAmJlxuICAgICAgICBsZWZ0RWxlbWVudCAmJlxuICAgICAgICBsZWZ0RWxlbWVudC50eXBlICYmXG4gICAgICAgIGxlZnRFbGVtZW50LnR5cGUubmFtZSA9PT0gXCJJY29uXCJcbiAgICAgICkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKVxuICAgICAgICBpbnB1dEVsZW1lbnQuc2VsZWN0KClcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgcG9zaXRpb24gPT09IFwicmlnaHRcIiAmJlxuICAgICAgICByaWdodEVsZW1lbnQgJiZcbiAgICAgICAgcmlnaHRFbGVtZW50LnR5cGUgJiZcbiAgICAgICAgcmlnaHRFbGVtZW50LnR5cGUubmFtZSA9PT0gXCJJY29uXCJcbiAgICAgICkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKVxuICAgICAgICBpbnB1dEVsZW1lbnQuc2VsZWN0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaXhDb250cm9sbGVkVmFsdWUgPSAodmFsPzogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIlwiXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlRWxlbWVudHNXaWR0aCA9IGFzeW5jICgpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICog6L+Z5Liq5pa55rOV5Lya5ZyoIGRpZFVwZGF0ZSDlkowgZGlkTW91bnQg5pe25Y67IHNldFN0YXRlXG4gICAgICAgKiDkuIDlrpropoHpgb/lhY3pgKDmiJDlvqrnjq/jgIJcbiAgICAgICAqL1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpXG4gICAgICBpZiAobGVmdEVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gbGVmdEVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgICAgaWYgKE1hdGguYWJzKGNsaWVudFdpZHRoIC0gKGxlZnRFbGVtZW50V2lkdGggfHwgMCkpID4gMikge1xuICAgICAgICAgIHNldExlZnRFbGVtZW50V2lkdGgoY2xpZW50V2lkdGgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGVmdEVsZW1lbnRXaWR0aCkge1xuICAgICAgICBzZXRMZWZ0RWxlbWVudFdpZHRoKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodEVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gcmlnaHRFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgICAgaWYgKE1hdGguYWJzKGNsaWVudFdpZHRoIC0gKHJpZ2h0RWxlbWVudFdpZHRoIHx8IDApKSA+IDIpIHtcbiAgICAgICAgICBzZXRSaWdodEVsZW1lbnRXaWR0aChjbGllbnRXaWR0aClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodEVsZW1lbnRXaWR0aCkge1xuICAgICAgICBzZXRSaWdodEVsZW1lbnRXaWR0aChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoanVzdGlmeUVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxXaWR0aCB9ID0ganVzdGlmeUVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICBpZiAoXG4gICAgICAgICAgd3JhcHBlckVsZW1lbnRSZWYuY3VycmVudCAmJlxuICAgICAgICAgIE1hdGguY2VpbChzY3JvbGxXaWR0aCkgIT09IHdyYXBwZXJFbGVtZW50UmVmLmN1cnJlbnQuY2xpZW50V2lkdGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgd3JhcHBlckVsZW1lbnRSZWYuY3VycmVudC5zdHlsZS53aWR0aCA9IGAke01hdGguY2VpbChzY3JvbGxXaWR0aCl9cHhgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRGb3JtYXRTdHJMZW5nID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgICBsZXQgcmVhbExlbmd0aCA9IDBcbiAgICAgIGxldCBjaGFyQ29kZSA9IC0xXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICAgICAgaWYgKGNoYXJDb2RlID49IDAgJiYgY2hhckNvZGUgPD0gMTI4KSB7XG4gICAgICAgICAgcmVhbExlbmd0aCArPSAwLjVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWFsTGVuZ3RoICs9IDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguY2VpbChyZWFsTGVuZ3RoKVxuICAgIH1cblxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICB1cGRhdGVFbGVtZW50c1dpZHRoKClcbiAgICAgIHN5bmNDbGVhdmUoKVxuICAgIH0pXG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVhbFJlZiA9IGlucHV0UmVmPy5jdXJyZW50IHx8IGNsZWF2ZVJlZj8uY3VycmVudD8uZWxlbWVudFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXZlOiBjbGVhdmVSZWY/LmN1cnJlbnQsXG4gICAgICAgIGlucHV0OiByZWFsUmVmLFxuICAgICAgICBsZWZ0RWxlbWVudDogbGVmdEVsZW1lbnRSZWY/LmN1cnJlbnQsXG4gICAgICAgIHJpZ2h0RWxlbWVudDogcmlnaHRFbGVtZW50UmVmPy5jdXJyZW50LFxuICAgICAgICB1cGRhdGVFbGVtZW50c1dpZHRoLFxuICAgICAgICBoYW5kbGVDaGFuZ2UsXG4gICAgICAgIGhhbmRsZUtleURvd24sXG4gICAgICAgIGhhbmRsZUJsdXIsXG4gICAgICAgIGhhbmRsZUZvY3VzLFxuICAgICAgICBoYW5kbGVBdHRhY2hlZEVsZW1lbnRDbGljayxcbiAgICAgICAgZm9jdXM6ICgpID0+IHJlYWxSZWYuZm9jdXMoKSxcbiAgICAgICAgYmx1cjogKCkgPT4gcmVhbFJlZi5ibHVyKCksXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IGlucHV0UHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgICBhdXRvQ29tcGxldGUsXG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoYCR7cHJlZml4fS1iYXNlYCwgaW5wdXRDbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLFxuICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHBhZGRpbmdMZWZ0OiBsZWZ0RWxlbWVudFdpZHRoID8gYCR7bGVmdEVsZW1lbnRXaWR0aH1weGAgOiB1bmRlZmluZWQsXG4gICAgICAgIHBhZGRpbmdSaWdodDogcmlnaHRFbGVtZW50V2lkdGggPyBgJHtyaWdodEVsZW1lbnRXaWR0aH1weGAgOiB1bmRlZmluZWQsXG4gICAgICAgIC4uLmlucHV0U3R5bGUsXG4gICAgICB9LFxuICAgICAgdHlwZSxcbiAgICB9XG5cbiAgICBjb25zdCBjbGVhdmVJbnB1dFByb3BzID0geyAuLi5pbnB1dFByb3BzIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaW5wdXRQcm9wcy52YWx1ZSA9IGZpeENvbnRyb2xsZWRWYWx1ZSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRQcm9wcy5kZWZhdWx0VmFsdWUgPSBmaXhDb250cm9sbGVkVmFsdWUoZGVmYXVsdFZhbHVlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsZWF2ZSDkuI3mjqXmlLbljp/nlJ/nmoQgZGVmYXVsdFZhbHVl77yM5b+F6aG75Lyg5YWlIHZhbHVlIHByb3Ag5p2l5a6e546wIGRlZmF1bHRWYWx1ZSDnmoTkvZznlKhcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vbm9zaXIvY2xlYXZlLmpzL2Jsb2IvbWFzdGVyL2RvYy9yZWFjdGpzLWNvbXBvbmVudC11c2FnZS5tZCNob3ctdG8tcGFzcy1kZWZhdWx0LXZhbHVlXG4gICAgICovXG4gICAgY2xlYXZlSW5wdXRQcm9wcy52YWx1ZSA9IHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSB8fCBcIlwiXG5cbiAgICBjb25zdCBpbnB1dCA9XG4gICAgICAhY2xlYXZlT3B0aW9ucyB8fCBPYmplY3Qua2V5cyhjbGVhdmVPcHRpb25zKS5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgIDxpbnB1dCB7Li4uaW5wdXRQcm9wc30gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxDbGVhdmUgb3B0aW9ucz17Y2xlYXZlT3B0aW9uc30gey4uLmNsZWF2ZUlucHV0UHJvcHN9IHJlZj17Y2xlYXZlUmVmfSAvPlxuICAgICAgKVxuXG4gICAgbGV0IGxlbmd0aFxuICAgIGlmIChsaW1pdCkge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIXJpZ2h0RWxlbWVudCxcbiAgICAgICAgXCJJbnB1dFwiLFxuICAgICAgICBcIuS4jeWFgeiuuOWQjOaXtuS9v+eUqCBwcm9wIGBsaW1pdGAg5LiOIHByb3AgYHJpZ2h0RWxlbWVudGBcIlxuICAgICAgKVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGxlbmd0aCA9IGNvdW50SGFuemkgPyBnZXRGb3JtYXRTdHJMZW5nKHZhbHVlKSA6IHZhbHVlLmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB2YWx1ZSAhPT0gbnVsbCxcbiAgICAgICAgICBcIklucHV0XCIsXG4gICAgICAgICAgXCLlpoLmnpzopoHkvb/nlKggbGltaXQgUHJvcO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiXG4gICAgICAgIClcbiAgICAgICAgbGVuZ3RoID0gMFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29udGVudEp1c3RpZnkpIHtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgIHZhbHVlICE9PSBudWxsLFxuICAgICAgICBcIklucHV0XCIsXG4gICAgICAgIFwi5aaC5p6c5L2/55SoIGNvbnRlbnRKdXNmaXR5IFByb3DvvIzlv4Xpobvku47lpJbpg6jmjqfliLYgdmFsdWXjgIJcIlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0td3JhcHBlcmAsXG4gICAgICBgJHtwcmVmaXh9LSR7c2l6ZX1gLFxuICAgICAge1xuICAgICAgICBbYCR7cHJlZml4fS0ke3RoZW1lfWBdOiB0aGVtZSxcbiAgICAgICAgW2Ake3ByZWZpeH0tZGlzYWJsZWRgXTogZGlzYWJsZWQsXG4gICAgICAgIFtgJHtwcmVmaXh9LWxpbWl0ZWRgXTogbGltaXQsXG4gICAgICAgIFtgJHtwcmVmaXh9LWxpbWl0ZWRfZGlnaXQtb3Zlci0yYF06XG4gICAgICAgICAgbGltaXQgJiYgbGltaXQudG9TdHJpbmcoKS5sZW5ndGggPiAyLFxuICAgICAgICBbYCR7cHJlZml4fS1ub3JtYWxgXTogaW50ZW50ID09PSBcIm5vcm1hbFwiLFxuICAgICAgICBbYCR7cHJlZml4fS1wcmltYXJ5YF06IGludGVudCA9PT0gXCJwcmltYXJ