liyu-pc-base 1.0.428 → 1.0.430
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FieldRender-BrWvVr7V.js +2 -0
- package/dist/{FieldRender-hLpdh_DL.js → FieldRender-DX_3D1eR.js} +2 -2
- package/dist/{FieldRender-hLpdh_DL.js.map → FieldRender-DX_3D1eR.js.map} +1 -1
- package/dist/{FieldRender2-DCAjMwxW.js → FieldRender2-BQSvLYKn.js} +5 -5
- package/dist/{FieldRender2-DCAjMwxW.js.map → FieldRender2-BQSvLYKn.js.map} +1 -1
- package/dist/FormRender3-BQw-IS_M.js +2 -0
- package/dist/{FormRender3-CzmP7i8j.js → FormRender3-D6C2qJy8.js} +3 -3
- package/dist/{FormRender3-CzmP7i8j.js.map → FormRender3-D6C2qJy8.js.map} +1 -1
- package/dist/RemoteModal-B3Vw7EPw.js +2 -0
- package/dist/{RemoteModal-zIzBpMGh.js → RemoteModal-jn_BF1Qc.js} +1 -1
- package/dist/{RemoteModal-zIzBpMGh.js.map → RemoteModal-jn_BF1Qc.js.map} +1 -1
- package/dist/{RemoteSelectPro-C5us7J6j.js → RemoteSelectPro-ChIbw_Ht.js} +3 -3
- package/dist/{RemoteSelectPro-C5us7J6j.js.map → RemoteSelectPro-ChIbw_Ht.js.map} +1 -1
- package/dist/SearchRender-DFPI72Xt.js +2 -0
- package/dist/{SearchRender-CRnkU1Il.js → SearchRender-e3xeNBz-.js} +1 -1
- package/dist/{SearchRender-CRnkU1Il.js.map → SearchRender-e3xeNBz-.js.map} +1 -1
- package/dist/{TinymceEditor-JkSd04Xt.js → TinymceEditor-Da1VLyy-.js} +2 -2
- package/dist/{TinymceEditor-JkSd04Xt.js.map → TinymceEditor-Da1VLyy-.js.map} +1 -1
- package/dist/components/index.js +9 -9
- package/dist/{function-Docd8g2Z.js → function-CCxDERgN.js} +2 -2
- package/dist/function-CCxDERgN.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/{tableModal-nYnSSLnY.js → tableModal-CEdsjOPz.js} +1 -1
- package/dist/{tableModal-nYnSSLnY.js.map → tableModal-CEdsjOPz.js.map} +1 -1
- package/dist/tablePro-BNSE6jv8.js +2 -0
- package/dist/{tablePro-SvO83snm.js → tablePro-Cz8hKqFc.js} +4 -4
- package/dist/{tablePro-SvO83snm.js.map → tablePro-Cz8hKqFc.js.map} +1 -1
- package/dist/utils/function.js +1 -1
- package/dist/utils/hooks/useFetchData.js +1 -1
- package/package.json +1 -1
- package/dist/FieldRender-F8Rjh519.js +0 -2
- package/dist/FormRender3-nT08P4Po.js +0 -2
- package/dist/RemoteModal-CcQhH0aZ.js +0 -2
- package/dist/SearchRender-uP1cHCCb.js +0 -2
- package/dist/function-Docd8g2Z.js.map +0 -1
- package/dist/tablePro-GmNyuog8.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteModal-zIzBpMGh.js","names":["_extends","RawAsyncValidator","_extends","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","COMPARE_PARTIAL_FLAG","symbolTag","symbolProto","COMPARE_PARTIAL_FLAG","hasOwnProperty","objectTag","hasOwnProperty","getTag","FUNC_ERROR_TEXT","INFINITY","isObject","nativeMin","nativeMax","isObject","_extends"],"sources":["../node_modules/async-validator/dist-web/index.js","../node_modules/ant-design-vue/es/form/utils/valueUtil.js","../node_modules/ant-design-vue/es/form/utils/messages.js","../node_modules/ant-design-vue/es/form/utils/validateUtil.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_baseFindIndex.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/isEqual.js","../node_modules/ant-design-vue/es/form/utils/asyncUtil.js","../node_modules/lodash-es/_baseIsNaN.js","../node_modules/lodash-es/_strictIndexOf.js","../node_modules/lodash-es/_baseIndexOf.js","../node_modules/lodash-es/_arrayIncludes.js","../node_modules/lodash-es/_arrayIncludesWith.js","../node_modules/lodash-es/_baseIntersection.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/_castArrayLikeObject.js","../node_modules/lodash-es/intersection.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/last.js","../node_modules/lodash-es/_baseSlice.js","../node_modules/lodash-es/_parent.js","../node_modules/lodash-es/_baseUnset.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_customOmitClone.js","../node_modules/lodash-es/_isFlattenable.js","../node_modules/lodash-es/_baseFlatten.js","../node_modules/lodash-es/flatten.js","../node_modules/lodash-es/_flatRest.js","../node_modules/lodash-es/omit.js","../node_modules/ant-design-vue/es/form/useForm.js","../src/components/FormRender/RemoteModal/configs/sys/api-url.ts","../src/components/FormRender/RemoteModal/index.ts","../src/components/FormRender/RemoteModal/RemoteModal.vue","../src/components/FormRender/RemoteModal/RemoteModal.vue"],"sourcesContent":["function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var i = 0;\n var len = args.length;\n\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n break;\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return template;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n\n return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n\n function AsyncValidationError(errors, fields) {\n var _this;\n\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n\n _pending[\"catch\"](function (e) {\n return e;\n });\n\n return _pending;\n }\n\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\n\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n var v = value;\n\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n\n v = v[path[i]];\n }\n\n return v;\n}\n\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n\n return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = (function () {\n if (urlReg) {\n return urlReg;\n }\n\n var word = '[a-fA-F\\\\d:]';\n\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n});\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n\n if (!key) {\n return false;\n }\n\n if (arr) {\n val = value.length;\n }\n\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\n\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'string');\n\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'array');\n\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, ruleType);\n\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n }\n\n callback(errors);\n};\n\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\n\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n\n var _proto = Schema.prototype;\n\n _proto.define = function define(rules) {\n var _this = this;\n\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n\n return this._messages;\n };\n\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n\n if (o === void 0) {\n o = {};\n }\n\n if (oc === void 0) {\n oc = function oc() {};\n }\n\n var source = source_;\n var options = o;\n var callback = oc;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n\n return Promise.resolve(source);\n }\n\n function complete(results) {\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n\n if (options.messages) {\n var messages$1 = this.messages();\n\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n\n value = source[z] = rule.transform(value);\n }\n\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n\n rule.validator = _this2.getValidationMethod(rule);\n\n if (!rule.validator) {\n return;\n }\n\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n\n var errorList = Array.isArray(e) ? e : [e];\n\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n\n var filledErrors = errorList.map(complementError(rule, source));\n\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n\n return doIt(filledErrors);\n }\n\n var fieldsSchema = {};\n\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n var res;\n\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n\n cb(error.message);\n }\n\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n\n return rule.type || 'string';\n };\n\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n\n return validators[this.getType(rule)] || undefined;\n };\n\n return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n\n validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { toArray } from './typeUtil';\nimport get from '../../vc-util/get';\nimport set from '../../vc-util/set';\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function getValue(store, namePath) {\n const value = get(store, namePath);\n return value;\n}\nexport function setValue(store, namePath, value) {\n let removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n const newStore = set(store, namePath, value, removeIfUndefined);\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(path => matchNamePath(path, namePath));\n}\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\nfunction internalSetValues(store, values) {\n const newStore = Array.isArray(store) ? [...store] : _extends({}, store);\n if (!values) {\n return newStore;\n }\n Object.keys(values).forEach(key => {\n const prevValue = newStore[key];\n const value = values[key];\n // If both are object (but target is not array), we use recursion to set deep value\n const recursive = isObject(prevValue) && isObject(value);\n newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : value;\n });\n return newStore;\n}\nexport function setValues(store) {\n for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n restValues[_key - 1] = arguments[_key];\n }\n return restValues.reduce((current, newStore) => internalSetValues(current, newStore), store);\n}\nexport function cloneByNamePathList(store, namePathList) {\n let newStore = {};\n namePathList.forEach(namePath => {\n const value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n return namePath.every((nameUnit, i) => changedNamePath[i] === nameUnit);\n}","const typeTemplate = \"'${name}' is not a valid ${type}\";\nexport const defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport RawAsyncValidator from 'async-validator';\nimport { cloneVNode } from 'vue';\nimport { warning } from '../../vc-util/warning';\nimport { setValues } from './valueUtil';\nimport { defaultValidateMessages } from './messages';\nimport { isValidElement } from '../../_util/props-util';\n// Remove incorrect original ts define\nconst AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, str => {\n const key = str.slice(2, -1);\n return kv[key];\n });\n}\nfunction validateRule(name, value, rule, options, messageVariables) {\n return __awaiter(this, void 0, void 0, function* () {\n const cloneRule = _extends({}, rule);\n // Bug of `async-validator`\n delete cloneRule.ruleIndex;\n delete cloneRule.trigger;\n // We should special handle array validate\n let subRuleField = null;\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n const validator = new AsyncValidator({\n [name]: [cloneRule]\n });\n const messages = setValues({}, defaultValidateMessages, options.validateMessages);\n validator.messages(messages);\n let result = [];\n try {\n yield Promise.resolve(validator.validate({\n [name]: value\n }, _extends({}, options)));\n } catch (errObj) {\n if (errObj.errors) {\n result = errObj.errors.map((_ref, index) => {\n let {\n message\n } = _ref;\n return (\n // Wrap VueNode with `key`\n isValidElement(message) ? cloneVNode(message, {\n key: `error_${index}`\n }) : message\n );\n });\n } else {\n console.error(errObj);\n result = [messages.default()];\n }\n }\n if (!result.length && subRuleField) {\n const subResults = yield Promise.all(value.map((subValue, i) => validateRule(`${name}.${i}`, subValue, subRuleField, options, messageVariables)));\n return subResults.reduce((prev, errors) => [...prev, ...errors], []);\n }\n // Replace message with variables\n const kv = _extends(_extends(_extends({}, rule), {\n name,\n enum: (rule.enum || []).join(', ')\n }), messageVariables);\n const fillVariableResult = result.map(error => {\n if (typeof error === 'string') {\n return replaceMessage(error, kv);\n }\n return error;\n });\n return fillVariableResult;\n });\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n const name = namePath.join('.');\n // Fill rule with context\n const filledRules = rules.map((currentRule, ruleIndex) => {\n const originValidatorFunc = currentRule.validator;\n const cloneRule = _extends(_extends({}, currentRule), {\n ruleIndex\n });\n // Replace validator if needed\n if (originValidatorFunc) {\n cloneRule.validator = (rule, val, callback) => {\n let hasPromise = false;\n // Wrap callback only accept when promise not provided\n const wrappedCallback = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(() => {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n if (!hasPromise) {\n callback(...args);\n }\n });\n };\n // Get promise\n const promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n if (hasPromise) {\n promise.then(() => {\n callback();\n }).catch(err => {\n callback(err || ' ');\n });\n }\n };\n }\n return cloneRule;\n }).sort((_ref2, _ref3) => {\n let {\n warningOnly: w1,\n ruleIndex: i1\n } = _ref2;\n let {\n warningOnly: w2,\n ruleIndex: i2\n } = _ref3;\n if (!!w1 === !!w2) {\n // Let keep origin order\n return i1 - i2;\n }\n if (w1) {\n return 1;\n }\n return -1;\n });\n // Do validate rules\n let summaryPromise;\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n /* eslint-disable no-await-in-loop */\n for (let i = 0; i < filledRules.length; i += 1) {\n const rule = filledRules[i];\n const errors = yield validateRule(name, value, rule, options, messageVariables);\n if (errors.length) {\n reject([{\n errors,\n rule\n }]);\n return;\n }\n }\n /* eslint-enable */\n resolve([]);\n }));\n } else {\n // >>>>> Validate by parallel\n const rulePromises = filledRules.map(rule => validateRule(name, value, rule, options, messageVariables).then(errors => ({\n errors,\n rule\n })));\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(errors => {\n // Always change to rejection for Field to catch\n return Promise.reject(errors);\n });\n }\n // Internal catch error to avoid console error log.\n summaryPromise.catch(e => e);\n return summaryPromise;\n}\nfunction finishOnAllFailed(rulePromises) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.all(rulePromises).then(errorsList => {\n const errors = [].concat(...errorsList);\n return errors;\n });\n });\n}\nfunction finishOnFirstFailed(rulePromises) {\n return __awaiter(this, void 0, void 0, function* () {\n let count = 0;\n return new Promise(resolve => {\n rulePromises.forEach(promise => {\n promise.then(ruleError => {\n if (ruleError.errors.length) {\n resolve([ruleError]);\n }\n count += 1;\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n });\n });\n}","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","export function allPromiseFinish(promiseList) {\n let hasError = false;\n let count = promiseList.length;\n const results = [];\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n return new Promise((resolve, reject) => {\n promiseList.forEach((promise, index) => {\n promise.catch(e => {\n hasError = true;\n return e;\n }).then(result => {\n count -= 1;\n results[index] = result;\n if (count > 0) {\n return;\n }\n if (hasError) {\n reject(results);\n }\n resolve(results);\n });\n });\n });\n}","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseIntersection;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n","import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nexport default intersection;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { reactive, watch, nextTick, unref, shallowRef, toRaw, ref } from 'vue';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport intersection from 'lodash-es/intersection';\nimport isEqual from 'lodash-es/isEqual';\nimport debounce from 'lodash-es/debounce';\nimport omit from 'lodash-es/omit';\nimport { validateRules } from './utils/validateUtil';\nimport { defaultValidateMessages } from './utils/messages';\nimport { allPromiseFinish } from './utils/asyncUtil';\nfunction isRequired(rules) {\n let isRequired = false;\n if (rules && rules.length) {\n rules.every(rule => {\n if (rule.required) {\n isRequired = true;\n return false;\n }\n return true;\n });\n }\n return isRequired;\n}\nfunction toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\nfunction getPropByPath(obj, path, strict) {\n let tempObj = obj;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n path = path.replace(/^\\./, '');\n const keyArr = path.split('.');\n let i = 0;\n for (let len = keyArr.length; i < len - 1; ++i) {\n if (!tempObj && !strict) break;\n const key = keyArr[i];\n if (key in tempObj) {\n tempObj = tempObj[key];\n } else {\n if (strict) {\n throw new Error('please transfer a valid name path to validate!');\n }\n break;\n }\n }\n return {\n o: tempObj,\n k: keyArr[i],\n v: tempObj ? tempObj[keyArr[i]] : null,\n isValid: tempObj && keyArr[i] in tempObj\n };\n}\nfunction useForm(modelRef) {\n let rulesRef = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ref({});\n let options = arguments.length > 2 ? arguments[2] : undefined;\n const initialModel = cloneDeep(unref(modelRef));\n const validateInfos = reactive({});\n const rulesKeys = shallowRef([]);\n const resetFields = newValues => {\n _extends(unref(modelRef), _extends(_extends({}, cloneDeep(initialModel)), newValues));\n nextTick(() => {\n Object.keys(validateInfos).forEach(key => {\n validateInfos[key] = {\n autoLink: false,\n required: isRequired(unref(rulesRef)[key])\n };\n });\n });\n };\n const filterRules = function () {\n let rules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let trigger = arguments.length > 1 ? arguments[1] : undefined;\n if (!trigger.length) {\n return rules;\n } else {\n return rules.filter(rule => {\n const triggerList = toArray(rule.trigger || 'change');\n return intersection(triggerList, trigger).length;\n });\n }\n };\n let lastValidatePromise = null;\n const validateFields = function (names) {\n let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let strict = arguments.length > 2 ? arguments[2] : undefined;\n // Collect result in promise list\n const promiseList = [];\n const values = {};\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n const prop = getPropByPath(unref(modelRef), name, strict);\n if (!prop.isValid) continue;\n values[name] = prop.v;\n const rules = filterRules(unref(rulesRef)[name], toArray(option && option.trigger));\n if (rules.length) {\n promiseList.push(validateField(name, prop.v, rules, option || {}).then(() => ({\n name,\n errors: [],\n warnings: []\n })).catch(ruleErrors => {\n const mergedErrors = [];\n const mergedWarnings = [];\n ruleErrors.forEach(_ref => {\n let {\n rule: {\n warningOnly\n },\n errors\n } = _ref;\n if (warningOnly) {\n mergedWarnings.push(...errors);\n } else {\n mergedErrors.push(...errors);\n }\n });\n if (mergedErrors.length) {\n return Promise.reject({\n name,\n errors: mergedErrors,\n warnings: mergedWarnings\n });\n }\n return {\n name,\n errors: mergedErrors,\n warnings: mergedWarnings\n };\n }));\n }\n }\n const summaryPromise = allPromiseFinish(promiseList);\n lastValidatePromise = summaryPromise;\n const returnPromise = summaryPromise.then(() => {\n if (lastValidatePromise === summaryPromise) {\n return Promise.resolve(values);\n }\n return Promise.reject([]);\n }).catch(results => {\n const errorList = results.filter(result => result && result.errors.length);\n return errorList.length ? Promise.reject({\n values,\n errorFields: errorList,\n outOfDate: lastValidatePromise !== summaryPromise\n }) : Promise.resolve(values);\n });\n // Do not throw in console\n returnPromise.catch(e => e);\n return returnPromise;\n };\n const validateField = function (name, value, rules) {\n let option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const promise = validateRules([name], value, rules, _extends({\n validateMessages: defaultValidateMessages\n }, option), !!option.validateFirst);\n if (!validateInfos[name]) {\n return promise.catch(e => e);\n }\n validateInfos[name].validateStatus = 'validating';\n promise.catch(e => e).then(function () {\n let results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var _a;\n if (validateInfos[name].validateStatus === 'validating') {\n const res = results.filter(result => result && result.errors.length);\n validateInfos[name].validateStatus = res.length ? 'error' : 'success';\n validateInfos[name].help = res.length ? res.map(r => r.errors) : null;\n (_a = options === null || options === void 0 ? void 0 : options.onValidate) === null || _a === void 0 ? void 0 : _a.call(options, name, !res.length, res.length ? toRaw(validateInfos[name].help[0]) : null);\n }\n });\n return promise;\n };\n const validate = (names, option) => {\n let keys = [];\n let strict = true;\n if (!names) {\n strict = false;\n keys = rulesKeys.value;\n } else if (Array.isArray(names)) {\n keys = names;\n } else {\n keys = [names];\n }\n const promises = validateFields(keys, option || {}, strict);\n // Do not throw in console\n promises.catch(e => e);\n return promises;\n };\n const clearValidate = names => {\n let keys = [];\n if (!names) {\n keys = rulesKeys.value;\n } else if (Array.isArray(names)) {\n keys = names;\n } else {\n keys = [names];\n }\n keys.forEach(key => {\n validateInfos[key] && _extends(validateInfos[key], {\n validateStatus: '',\n help: null\n });\n });\n };\n const mergeValidateInfo = items => {\n const info = {\n autoLink: false\n };\n const help = [];\n const infos = Array.isArray(items) ? items : [items];\n for (let i = 0; i < infos.length; i++) {\n const arg = infos[i];\n if ((arg === null || arg === void 0 ? void 0 : arg.validateStatus) === 'error') {\n info.validateStatus = 'error';\n arg.help && help.push(arg.help);\n }\n info.required = info.required || (arg === null || arg === void 0 ? void 0 : arg.required);\n }\n info.help = help;\n return info;\n };\n let oldModel = initialModel;\n let isFirstTime = true;\n const modelFn = model => {\n const names = [];\n rulesKeys.value.forEach(key => {\n const prop = getPropByPath(model, key, false);\n const oldProp = getPropByPath(oldModel, key, false);\n const isFirstValidation = isFirstTime && (options === null || options === void 0 ? void 0 : options.immediate) && prop.isValid;\n if (isFirstValidation || !isEqual(prop.v, oldProp.v)) {\n names.push(key);\n }\n });\n validate(names, {\n trigger: 'change'\n });\n isFirstTime = false;\n oldModel = cloneDeep(toRaw(model));\n };\n const debounceOptions = options === null || options === void 0 ? void 0 : options.debounce;\n let first = true;\n watch(rulesRef, () => {\n rulesKeys.value = rulesRef ? Object.keys(unref(rulesRef)) : [];\n if (!first && options && options.validateOnRuleChange) {\n validate();\n }\n first = false;\n }, {\n deep: true,\n immediate: true\n });\n watch(rulesKeys, () => {\n const newValidateInfos = {};\n rulesKeys.value.forEach(key => {\n newValidateInfos[key] = _extends({}, validateInfos[key], {\n autoLink: false,\n required: isRequired(unref(rulesRef)[key])\n });\n delete validateInfos[key];\n });\n for (const key in validateInfos) {\n if (Object.prototype.hasOwnProperty.call(validateInfos, key)) {\n delete validateInfos[key];\n }\n }\n _extends(validateInfos, newValidateInfos);\n }, {\n immediate: true\n });\n watch(modelRef, debounceOptions && debounceOptions.wait ? debounce(modelFn, debounceOptions.wait, omit(debounceOptions, ['wait'])) : modelFn, {\n immediate: options && !!options.immediate,\n deep: true\n });\n return {\n modelRef,\n rulesRef,\n initialModel,\n validateInfos,\n resetFields,\n validate,\n validateField,\n mergeValidateInfo,\n clearValidate\n };\n}\nexport default useForm;","import { reactive } from 'vue';\n\ninterface SearchConfig {\n rules: any;\n fields: any;\n settings: any;\n model: any;\n}\n\nexport default () => {\n const apiurl_config: SearchConfig = {\n settings: {\n name: '表单名称',\n labelAlign: 'right',\n layout: 'inline',\n },\n fields: [\n {\n type: 'input',\n name: 'name',\n label: '接口名称',\n disabled: false,\n allowClear: true,\n inputType: 'text',\n maxlength: 100,\n defaultValue: '',\n placeholder: '请填写接口名称',\n },\n {\n type: 'input',\n name: 'url',\n label: '绝对路径url',\n disabled: false,\n allowClear: true,\n inputType: 'text',\n maxlength: 100,\n defaultValue: '',\n placeholder: '绝对路径url',\n },\n ],\n rules: reactive({\n name: [],\n }),\n model: {},\n };\n const apiurl_columns = [\n {\n title: '接口名称',\n dataIndex: 'name',\n },\n {\n title: 'url',\n dataIndex: 'url',\n },\n ];\n const apiurl_ConfigOptions = {\n is_active: [\n { name: '全部', value: '' },\n { name: '正常', value: true },\n { name: '作废', value: false },\n ],\n };\n return {\n searchConfig: apiurl_config,\n searchConfigOptions: apiurl_ConfigOptions,\n getData: '/permission/query_apiurl_list',\n columns: apiurl_columns,\n };\n};\n","import { useGlobMap } from 'liyu-pc-base/init-plugin';\nconst res_components: { [key: string]: any } = {};\nconst init = () => {\n if (Object.keys(res_components).length > 0) {\n return;\n }\n const allComponents: any = import.meta.glob(\n 'liyu-pc-base/components/FormRender/RemoteModal/configs/*/*.ts',\n {\n eager: true,\n },\n );\n const customComponents = useGlobMap('remoteModal');\n Object.assign(allComponents, customComponents);\n Object.keys(allComponents).forEach(full_file_name => {\n const file_name_list = full_file_name.split('/');\n const file_name = file_name_list[file_name_list.length - 1].replace('.ts', '');\n res_components[file_name] = allComponents[full_file_name].default;\n });\n};\n\nexport default (modalType: string) => {\n init();\n if (res_components[modalType] == undefined) {\n console.error('没有组件:' + modalType);\n }\n return {\n ...res_components[modalType](),\n };\n};\n","<template>\n <div>\n <a-input-group compact>\n <a-select\n :mode=\"field.mode == 'default' ? null : field.mode\"\n size=\"small\"\n :dropdownMatchSelectWidth=\"false\"\n :maskClosable=\"false\"\n v-model:value=\"modalRef.selectedRows\"\n :show-search=\"!!field.show_search\"\n style=\"width: 66%; min-width: 150px\"\n :disabled=\"field.disabled\"\n :placeholder=\"placeholder\"\n :default-value=\"field.defaultValue\"\n :allow-clear=\"field.allowClear\"\n :maxTagCount=\"field.maxTagCount\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"option in datasource\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n <a-button\n :disabled=\"field.disabled\"\n size=\"small\"\n style=\"width: 24%\"\n type=\"primary\"\n @click=\"openModal\"\n >\n 选择\n </a-button>\n </a-input-group>\n <a-modal\n :title=\"field.title\"\n width=\"900px\"\n :open=\"modalRef.open\"\n :confirmLoading=\"loading\"\n centered\n @ok=\"handleSubmit\"\n @cancel=\"\n () => {\n modalRef.open = false;\n }\n \"\n >\n <search-render\n v-if=\"searchConfig\"\n :form=\"searchConfig\"\n :model=\"search_modelRef\"\n :options=\"searchConfigOptions\"\n :validateInfos=\"searchValidateInfos\"\n @search=\"search\"\n />\n <a-table\n bordered\n size=\"small\"\n :loading=\"state.loading\"\n :scroll=\"{ y: 400, x: columnState.tableWidth }\"\n :row-selection=\"rowSelection\"\n :columns=\"dynamicColumns\"\n row-key=\"id\"\n :data-source=\"state.dataSource\"\n :pagination=\"{\n current: state.current,\n pageSize: state.pageSize,\n total: state.total,\n showSizeChanger: true,\n showQuickJumper: true,\n pageSizeOptions: ['10', '20', '50', '200', '1000', '3000', '10000', '50000', '100000'],\n }\"\n @change=\"handleTableChange\"\n >\n <template\n v-for=\"item in slotList\"\n v-slot:[item.slotName]=\"{ index, text, record }\"\n :key=\"item.slotName\"\n >\n <span v-if=\"item.slotName === 'index'\">\n {{ index + 1 + state.pageSize * (state.current - 1) }}\n </span>\n <span v-if=\"item.type === 'custom'\">\n {{ item['field_' + text] }}\n </span>\n <span v-if=\"item.type === 'custom1'\">\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n </span>\n <span v-if=\"item.type === 'datetime'\">\n {{ getDateTime(text) }}\n </span>\n <span v-if=\"item.type === 'date'\">\n {{ getDate(text) }}\n </span>\n <span v-if=\"item.type === 'full_date'\">\n {{ getFullDate(text) }}\n </span>\n <span v-if=\"item.type === 'time'\">\n {{ getTime(text) }}\n </span>\n <a-button\n size=\"small\"\n v-if=\"item.type === 'attributetable'\"\n type=\"link\"\n @click=\"item.cb(text, record)\"\n >\n 查看属性\n </a-button>\n <a-tag\n :color=\"item.color ? item.color(record) : 'green'\"\n v-if=\"item.type === 'tag'\"\n >\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n <span v-else>\n {{ text }}\n </span>\n </a-tag>\n <a-tag\n color=\"green\"\n v-if=\"text && item.type === 'boolean'\"\n >\n {{ item.name1 }}\n </a-tag>\n <a-tag\n color=\"red\"\n v-if=\"!text && item.type === 'boolean'\"\n >\n {{ item.name2 }}\n </a-tag>\n <template v-if=\"item.type === 'list'\">\n <a-tag\n color=\"#87d068\"\n v-for=\"obj in text\"\n :key=\"obj.id\"\n style=\"margin-bottom: 1px\"\n >\n {{ obj.name }}\n </a-tag>\n </template>\n </template>\n </a-table>\n </a-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\nimport { useFetchData } from '../../../utils/hooks/useFetchData';\nimport { useForm } from 'ant-design-vue/es/form';\nimport getFormConfig from 'liyu-pc-base/components/FormRender/RemoteModal/index';\nimport { useTableDynamicColumns } from '../../../utils/hooks/useTableColumn';\nimport { getDate, getDateTime, getFullDate, getTime } from '../../../utils/function';\nimport { useUserStore } from '../../../init-plugin';\nimport { getApiData } from '../../../api/api-model';\n\n// type Key = ColumnProps['key'];\n\n// interface DataType {\n// id: number;\n// key: Key;\n// name: string;\n// }\n\nexport default defineComponent({\n name: 'RemoteModal',\n props: {\n field: {\n type: Object,\n required: true,\n },\n modalType: {\n type: String,\n required: true,\n default: () => '',\n },\n value: {\n type: [Array, String, Number],\n required: false,\n default: () => [],\n },\n init_model: {\n type: Object,\n default: () => {},\n },\n field_status: {\n type: Object,\n default: () => {},\n },\n placeholder: {\n type: String,\n default: () => '',\n },\n watch: {\n type: Array,\n default: () => [],\n },\n formModel: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['update:value', 'update:label'],\n setup(props, { emit }) {\n const loading = ref(false);\n const { searchConfig, searchConfigOptions, getData, columns, slotList } = getFormConfig(\n props.modalType,\n );\n const search_modelRef = reactive({\n ...searchConfig.model,\n is_active: true,\n ...props.init_model,\n });\n\n for (const field of searchConfig.fields) {\n if (props.field_status && props.field_status.hasOwnProperty(field.name)) {\n if (props.field_status[field.name] == 0) {\n field.disabled = true;\n field.hidden = false;\n } else if (props.field_status[field.name] == 1) {\n field.disabled = false;\n field.hidden = true;\n } else {\n field.disabled = false;\n field.hidden = false;\n }\n }\n }\n\n const old_obj: { [key: string]: any } = {};\n onMounted(() => {\n if (props.watch) {\n for (const k of props.watch) {\n if (props.formModel) {\n old_obj[k as string] = props.formModel[k as string];\n }\n }\n }\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n search_modelRef[k as string] = props.formModel[k as string];\n watch(\n () => props.formModel[k as string],\n () => {\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n if (old_obj[k as string] != props.formModel[k as string]) {\n search_modelRef[k as string] = props.formModel[k as string];\n }\n }\n }\n },\n { immediate: true },\n );\n }\n }\n });\n\n const { state: columnState, dynamicColumns } = useTableDynamicColumns(\n columns as TableColumn[],\n {\n checkAll: false,\n needRowIndex: false,\n },\n );\n const get_value_key = () => {\n return props.field.valueKey ? (props.field.valueKey as string) : 'id';\n };\n const get_label_key = () => {\n return props.field.labelKey ? (props.field.labelKey as string) : 'name';\n };\n const datasource = computed(() => {\n return modalRef.datasource.map(item => {\n if (props.field.labelKeyList) {\n const label = [];\n for (const key of props.field.labelKeyList) {\n label.push(item[key as string]);\n }\n return {\n value: item[get_value_key()],\n label: label.join(props.field.labelSpace),\n };\n } else {\n return {\n value: item[get_value_key()],\n label: item[get_label_key()],\n };\n }\n });\n });\n const modalRef = reactive({\n open: false,\n selectedRows: new Array<number>(),\n selectedRowsKey: new Array<number>(),\n selectedRowsTotal: new Array<any>(),\n datasource: new Array<any>(),\n datasource_keys: new Array<any>(),\n });\n\n const rowSelection = {\n type:\n props.field.mode == 'default'\n ? 'radio'\n : props.field.mode == 'multiple'\n ? 'checkbox'\n : 'checkbox',\n columnWidth: '30px',\n selectedRowKeys: modalRef.selectedRowsKey,\n onChange: (selectedRowKeys: any, selectedRows: any) => {\n // modalRef.selectedRowsKey.length = 0;\n const remove_key: Array<number> = modalRef.selectedRowsKey.filter(\n item => selectedRowKeys.indexOf(Number(item)) == -1,\n );\n modalRef.selectedRowsTotal = modalRef.selectedRowsTotal.filter(\n item => remove_key.indexOf(item.id) == -1,\n );\n selectedRows.forEach((item: any) => {\n if (modalRef.selectedRowsKey.indexOf(item.id) == -1) {\n modalRef.selectedRowsTotal.push(item);\n }\n });\n\n modalRef.selectedRowsKey.length = 0;\n selectedRows.forEach((item: any) => {\n modalRef.selectedRowsKey.push(item.id);\n\n // modalRef.datasource.push(item);\n });\n },\n onSelect: (record: any, selected: any) => {\n if (props.field.mode == 'multiple') {\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n } else {\n modalRef.datasource_keys = modalRef.datasource_keys.filter(item => item !== record.id);\n modalRef.datasource = modalRef.datasource.filter(item => item.id !== record.id);\n }\n } else {\n modalRef.datasource_keys.length = 0;\n modalRef.datasource.length = 0;\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n }\n }\n },\n };\n\n const {\n reload,\n setPageInfo,\n context: state,\n } = useFetchData(getData, {\n current: 1,\n pageSize: 20,\n tableSize: 'middle', // 'default' | 'middle' | 'small'\n stripe: true,\n requestParams: {\n ...search_modelRef,\n },\n });\n watch(\n () => state.dataSource,\n () => {\n const total_ids: Array<number> = modalRef.selectedRowsTotal.map(item => item.id);\n state.dataSource.map((item: any) => {\n if (total_ids.indexOf(item.id) > -1) {\n modalRef.selectedRowsKey.push(item.id);\n }\n });\n },\n );\n const init = () => {\n modalRef.datasource.length = 0;\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n modalRef.datasource_keys.length = 0;\n let list: any[] = [];\n if (props.value instanceof Array) {\n if (props.value.length > 0) {\n list = props.value as Array<number>;\n }\n } else if (typeof props.value == 'string') {\n (props.value as string).split(',').map((item: any) => {\n list.push(Number(item));\n });\n } else {\n if (props.value) {\n list.push(props.value);\n }\n }\n if (list.length > 0) {\n const tmp_ids: any[] = [];\n const tmp_item_ids: any[] = [];\n modalRef.datasource.map(item => tmp_item_ids.push(item.id));\n list.map(item => {\n if (modalRef.selectedRows.indexOf(Number(item)) == -1) {\n modalRef.selectedRows.push(Number(item));\n modalRef.selectedRowsKey.push(Number(item));\n }\n if (tmp_item_ids.indexOf(item) == -1) {\n tmp_ids.push(item);\n }\n });\n if (tmp_ids.length > 0) {\n getApiData(\n { current: 1, ...search_modelRef, pageSize: 2000, ids: tmp_ids.join(',') },\n getData,\n ).then(function (res: ReponseData<any>) {\n res.data.forEach(item => {\n if (list.indexOf(item.id) >= 0) {\n modalRef.datasource.push(item);\n modalRef.selectedRowsTotal.push(item);\n modalRef.datasource_keys.push(item.id);\n }\n });\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n const selectItems: any = datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:label', '');\n }\n } else {\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n });\n }\n } else {\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n }\n };\n init();\n\n watch(\n () => props.value,\n () => {\n init();\n },\n );\n\n const handleTableChange = (\n { current, pageSize }: Pagination,\n filters: TableFilters,\n sorter: TableColumnSortOrder,\n ) => {\n console.log(sorter);\n setPageInfo({\n current,\n pageSize,\n ...filters,\n ...search_modelRef,\n });\n\n reload();\n };\n\n const { validateInfos: searchValidateInfos } = useForm(search_modelRef, searchConfig.rules);\n\n const search = () => {\n setPageInfo({\n current: 1,\n ...search_modelRef,\n });\n reload();\n };\n\n const openModal = () => {\n modalRef.open = true;\n const remove_ids: Array<number> = modalRef.datasource\n .filter(item => modalRef.selectedRows.indexOf(item.id) == -1)\n .map(item => item.id);\n remove_ids.forEach(item => {\n if (modalRef.selectedRowsKey.indexOf(item) != -1) {\n modalRef.selectedRowsKey.splice(modalRef.selectedRowsKey.indexOf(item), 1);\n }\n });\n\n const remove_total: Array<any> = modalRef.selectedRowsTotal.filter(\n item => modalRef.selectedRows.indexOf(item.id) == -1,\n );\n remove_total.forEach(item => {\n if (modalRef.selectedRowsTotal.indexOf(item) != -1) {\n modalRef.selectedRowsTotal.splice(modalRef.selectedRowsTotal.indexOf(item), 1);\n }\n });\n };\n\n const handleSubmit = (e: Event) => {\n e.preventDefault();\n modalRef.open = false;\n if (modalRef.selectedRows == undefined) {\n modalRef.selectedRows = new Array<number>();\n }\n modalRef.selectedRows.length = 0;\n modalRef.datasource.map(item =>\n modalRef.selectedRows.push(\n item[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n ),\n );\n // modalRef.datasource.length = 0;\n // modalRef.selectedRowsTotal.map(item => modalRef.datasource.push(item));\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n emit('update:value', modalRef.selectedRows[0]);\n const selectItems: any = datasource.value\n .filter((item: any) => {\n return modalRef.selectedRows == item.value;\n })\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:value', null);\n emit('update:label', '');\n }\n } else {\n emit('update:value', modalRef.selectedRows);\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n };\n const handleChange = (value: any) => {\n if (props.field.mode == 'default') {\n if (value == undefined) {\n modalRef.selectedRows = new Array<number>();\n } else {\n modalRef.selectedRows = [value];\n }\n } else {\n modalRef.selectedRows = value;\n }\n emit('update:value', value);\n };\n return {\n props,\n modalRef,\n datasource,\n state,\n loading,\n getDateTime,\n getDate,\n getFullDate,\n getTime,\n search,\n openModal,\n handleSubmit,\n handleChange,\n handleTableChange,\n rowSelection,\n searchValidateInfos,\n search_modelRef,\n searchConfig,\n searchConfigOptions,\n columnState,\n dynamicColumns,\n slotList,\n };\n },\n\n data() {\n return {\n model: this.value,\n };\n },\n});\n</script>\n","<template>\n <div>\n <a-input-group compact>\n <a-select\n :mode=\"field.mode == 'default' ? null : field.mode\"\n size=\"small\"\n :dropdownMatchSelectWidth=\"false\"\n :maskClosable=\"false\"\n v-model:value=\"modalRef.selectedRows\"\n :show-search=\"!!field.show_search\"\n style=\"width: 66%; min-width: 150px\"\n :disabled=\"field.disabled\"\n :placeholder=\"placeholder\"\n :default-value=\"field.defaultValue\"\n :allow-clear=\"field.allowClear\"\n :maxTagCount=\"field.maxTagCount\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"option in datasource\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n <a-button\n :disabled=\"field.disabled\"\n size=\"small\"\n style=\"width: 24%\"\n type=\"primary\"\n @click=\"openModal\"\n >\n 选择\n </a-button>\n </a-input-group>\n <a-modal\n :title=\"field.title\"\n width=\"900px\"\n :open=\"modalRef.open\"\n :confirmLoading=\"loading\"\n centered\n @ok=\"handleSubmit\"\n @cancel=\"\n () => {\n modalRef.open = false;\n }\n \"\n >\n <search-render\n v-if=\"searchConfig\"\n :form=\"searchConfig\"\n :model=\"search_modelRef\"\n :options=\"searchConfigOptions\"\n :validateInfos=\"searchValidateInfos\"\n @search=\"search\"\n />\n <a-table\n bordered\n size=\"small\"\n :loading=\"state.loading\"\n :scroll=\"{ y: 400, x: columnState.tableWidth }\"\n :row-selection=\"rowSelection\"\n :columns=\"dynamicColumns\"\n row-key=\"id\"\n :data-source=\"state.dataSource\"\n :pagination=\"{\n current: state.current,\n pageSize: state.pageSize,\n total: state.total,\n showSizeChanger: true,\n showQuickJumper: true,\n pageSizeOptions: ['10', '20', '50', '200', '1000', '3000', '10000', '50000', '100000'],\n }\"\n @change=\"handleTableChange\"\n >\n <template\n v-for=\"item in slotList\"\n v-slot:[item.slotName]=\"{ index, text, record }\"\n :key=\"item.slotName\"\n >\n <span v-if=\"item.slotName === 'index'\">\n {{ index + 1 + state.pageSize * (state.current - 1) }}\n </span>\n <span v-if=\"item.type === 'custom'\">\n {{ item['field_' + text] }}\n </span>\n <span v-if=\"item.type === 'custom1'\">\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n </span>\n <span v-if=\"item.type === 'datetime'\">\n {{ getDateTime(text) }}\n </span>\n <span v-if=\"item.type === 'date'\">\n {{ getDate(text) }}\n </span>\n <span v-if=\"item.type === 'full_date'\">\n {{ getFullDate(text) }}\n </span>\n <span v-if=\"item.type === 'time'\">\n {{ getTime(text) }}\n </span>\n <a-button\n size=\"small\"\n v-if=\"item.type === 'attributetable'\"\n type=\"link\"\n @click=\"item.cb(text, record)\"\n >\n 查看属性\n </a-button>\n <a-tag\n :color=\"item.color ? item.color(record) : 'green'\"\n v-if=\"item.type === 'tag'\"\n >\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n <span v-else>\n {{ text }}\n </span>\n </a-tag>\n <a-tag\n color=\"green\"\n v-if=\"text && item.type === 'boolean'\"\n >\n {{ item.name1 }}\n </a-tag>\n <a-tag\n color=\"red\"\n v-if=\"!text && item.type === 'boolean'\"\n >\n {{ item.name2 }}\n </a-tag>\n <template v-if=\"item.type === 'list'\">\n <a-tag\n color=\"#87d068\"\n v-for=\"obj in text\"\n :key=\"obj.id\"\n style=\"margin-bottom: 1px\"\n >\n {{ obj.name }}\n </a-tag>\n </template>\n </template>\n </a-table>\n </a-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\nimport { useFetchData } from '../../../utils/hooks/useFetchData';\nimport { useForm } from 'ant-design-vue/es/form';\nimport getFormConfig from 'liyu-pc-base/components/FormRender/RemoteModal/index';\nimport { useTableDynamicColumns } from '../../../utils/hooks/useTableColumn';\nimport { getDate, getDateTime, getFullDate, getTime } from '../../../utils/function';\nimport { useUserStore } from '../../../init-plugin';\nimport { getApiData } from '../../../api/api-model';\n\n// type Key = ColumnProps['key'];\n\n// interface DataType {\n// id: number;\n// key: Key;\n// name: string;\n// }\n\nexport default defineComponent({\n name: 'RemoteModal',\n props: {\n field: {\n type: Object,\n required: true,\n },\n modalType: {\n type: String,\n required: true,\n default: () => '',\n },\n value: {\n type: [Array, String, Number],\n required: false,\n default: () => [],\n },\n init_model: {\n type: Object,\n default: () => {},\n },\n field_status: {\n type: Object,\n default: () => {},\n },\n placeholder: {\n type: String,\n default: () => '',\n },\n watch: {\n type: Array,\n default: () => [],\n },\n formModel: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['update:value', 'update:label'],\n setup(props, { emit }) {\n const loading = ref(false);\n const { searchConfig, searchConfigOptions, getData, columns, slotList } = getFormConfig(\n props.modalType,\n );\n const search_modelRef = reactive({\n ...searchConfig.model,\n is_active: true,\n ...props.init_model,\n });\n\n for (const field of searchConfig.fields) {\n if (props.field_status && props.field_status.hasOwnProperty(field.name)) {\n if (props.field_status[field.name] == 0) {\n field.disabled = true;\n field.hidden = false;\n } else if (props.field_status[field.name] == 1) {\n field.disabled = false;\n field.hidden = true;\n } else {\n field.disabled = false;\n field.hidden = false;\n }\n }\n }\n\n const old_obj: { [key: string]: any } = {};\n onMounted(() => {\n if (props.watch) {\n for (const k of props.watch) {\n if (props.formModel) {\n old_obj[k as string] = props.formModel[k as string];\n }\n }\n }\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n search_modelRef[k as string] = props.formModel[k as string];\n watch(\n () => props.formModel[k as string],\n () => {\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n if (old_obj[k as string] != props.formModel[k as string]) {\n search_modelRef[k as string] = props.formModel[k as string];\n }\n }\n }\n },\n { immediate: true },\n );\n }\n }\n });\n\n const { state: columnState, dynamicColumns } = useTableDynamicColumns(\n columns as TableColumn[],\n {\n checkAll: false,\n needRowIndex: false,\n },\n );\n const get_value_key = () => {\n return props.field.valueKey ? (props.field.valueKey as string) : 'id';\n };\n const get_label_key = () => {\n return props.field.labelKey ? (props.field.labelKey as string) : 'name';\n };\n const datasource = computed(() => {\n return modalRef.datasource.map(item => {\n if (props.field.labelKeyList) {\n const label = [];\n for (const key of props.field.labelKeyList) {\n label.push(item[key as string]);\n }\n return {\n value: item[get_value_key()],\n label: label.join(props.field.labelSpace),\n };\n } else {\n return {\n value: item[get_value_key()],\n label: item[get_label_key()],\n };\n }\n });\n });\n const modalRef = reactive({\n open: false,\n selectedRows: new Array<number>(),\n selectedRowsKey: new Array<number>(),\n selectedRowsTotal: new Array<any>(),\n datasource: new Array<any>(),\n datasource_keys: new Array<any>(),\n });\n\n const rowSelection = {\n type:\n props.field.mode == 'default'\n ? 'radio'\n : props.field.mode == 'multiple'\n ? 'checkbox'\n : 'checkbox',\n columnWidth: '30px',\n selectedRowKeys: modalRef.selectedRowsKey,\n onChange: (selectedRowKeys: any, selectedRows: any) => {\n // modalRef.selectedRowsKey.length = 0;\n const remove_key: Array<number> = modalRef.selectedRowsKey.filter(\n item => selectedRowKeys.indexOf(Number(item)) == -1,\n );\n modalRef.selectedRowsTotal = modalRef.selectedRowsTotal.filter(\n item => remove_key.indexOf(item.id) == -1,\n );\n selectedRows.forEach((item: any) => {\n if (modalRef.selectedRowsKey.indexOf(item.id) == -1) {\n modalRef.selectedRowsTotal.push(item);\n }\n });\n\n modalRef.selectedRowsKey.length = 0;\n selectedRows.forEach((item: any) => {\n modalRef.selectedRowsKey.push(item.id);\n\n // modalRef.datasource.push(item);\n });\n },\n onSelect: (record: any, selected: any) => {\n if (props.field.mode == 'multiple') {\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n } else {\n modalRef.datasource_keys = modalRef.datasource_keys.filter(item => item !== record.id);\n modalRef.datasource = modalRef.datasource.filter(item => item.id !== record.id);\n }\n } else {\n modalRef.datasource_keys.length = 0;\n modalRef.datasource.length = 0;\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n }\n }\n },\n };\n\n const {\n reload,\n setPageInfo,\n context: state,\n } = useFetchData(getData, {\n current: 1,\n pageSize: 20,\n tableSize: 'middle', // 'default' | 'middle' | 'small'\n stripe: true,\n requestParams: {\n ...search_modelRef,\n },\n });\n watch(\n () => state.dataSource,\n () => {\n const total_ids: Array<number> = modalRef.selectedRowsTotal.map(item => item.id);\n state.dataSource.map((item: any) => {\n if (total_ids.indexOf(item.id) > -1) {\n modalRef.selectedRowsKey.push(item.id);\n }\n });\n },\n );\n const init = () => {\n modalRef.datasource.length = 0;\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n modalRef.datasource_keys.length = 0;\n let list: any[] = [];\n if (props.value instanceof Array) {\n if (props.value.length > 0) {\n list = props.value as Array<number>;\n }\n } else if (typeof props.value == 'string') {\n (props.value as string).split(',').map((item: any) => {\n list.push(Number(item));\n });\n } else {\n if (props.value) {\n list.push(props.value);\n }\n }\n if (list.length > 0) {\n const tmp_ids: any[] = [];\n const tmp_item_ids: any[] = [];\n modalRef.datasource.map(item => tmp_item_ids.push(item.id));\n list.map(item => {\n if (modalRef.selectedRows.indexOf(Number(item)) == -1) {\n modalRef.selectedRows.push(Number(item));\n modalRef.selectedRowsKey.push(Number(item));\n }\n if (tmp_item_ids.indexOf(item) == -1) {\n tmp_ids.push(item);\n }\n });\n if (tmp_ids.length > 0) {\n getApiData(\n { current: 1, ...search_modelRef, pageSize: 2000, ids: tmp_ids.join(',') },\n getData,\n ).then(function (res: ReponseData<any>) {\n res.data.forEach(item => {\n if (list.indexOf(item.id) >= 0) {\n modalRef.datasource.push(item);\n modalRef.selectedRowsTotal.push(item);\n modalRef.datasource_keys.push(item.id);\n }\n });\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n const selectItems: any = datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:label', '');\n }\n } else {\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n });\n }\n } else {\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n }\n };\n init();\n\n watch(\n () => props.value,\n () => {\n init();\n },\n );\n\n const handleTableChange = (\n { current, pageSize }: Pagination,\n filters: TableFilters,\n sorter: TableColumnSortOrder,\n ) => {\n console.log(sorter);\n setPageInfo({\n current,\n pageSize,\n ...filters,\n ...search_modelRef,\n });\n\n reload();\n };\n\n const { validateInfos: searchValidateInfos } = useForm(search_modelRef, searchConfig.rules);\n\n const search = () => {\n setPageInfo({\n current: 1,\n ...search_modelRef,\n });\n reload();\n };\n\n const openModal = () => {\n modalRef.open = true;\n const remove_ids: Array<number> = modalRef.datasource\n .filter(item => modalRef.selectedRows.indexOf(item.id) == -1)\n .map(item => item.id);\n remove_ids.forEach(item => {\n if (modalRef.selectedRowsKey.indexOf(item) != -1) {\n modalRef.selectedRowsKey.splice(modalRef.selectedRowsKey.indexOf(item), 1);\n }\n });\n\n const remove_total: Array<any> = modalRef.selectedRowsTotal.filter(\n item => modalRef.selectedRows.indexOf(item.id) == -1,\n );\n remove_total.forEach(item => {\n if (modalRef.selectedRowsTotal.indexOf(item) != -1) {\n modalRef.selectedRowsTotal.splice(modalRef.selectedRowsTotal.indexOf(item), 1);\n }\n });\n };\n\n const handleSubmit = (e: Event) => {\n e.preventDefault();\n modalRef.open = false;\n if (modalRef.selectedRows == undefined) {\n modalRef.selectedRows = new Array<number>();\n }\n modalRef.selectedRows.length = 0;\n modalRef.datasource.map(item =>\n modalRef.selectedRows.push(\n item[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n ),\n );\n // modalRef.datasource.length = 0;\n // modalRef.selectedRowsTotal.map(item => modalRef.datasource.push(item));\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n emit('update:value', modalRef.selectedRows[0]);\n const selectItems: any = datasource.value\n .filter((item: any) => {\n return modalRef.selectedRows == item.value;\n })\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:value', null);\n emit('update:label', '');\n }\n } else {\n emit('update:value', modalRef.selectedRows);\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n };\n const handleChange = (value: any) => {\n if (props.field.mode == 'default') {\n if (value == undefined) {\n modalRef.selectedRows = new Array<number>();\n } else {\n modalRef.selectedRows = [value];\n }\n } else {\n modalRef.selectedRows = value;\n }\n emit('update:value', value);\n };\n return {\n props,\n modalRef,\n datasource,\n state,\n loading,\n getDateTime,\n getDate,\n getFullDate,\n getTime,\n search,\n openModal,\n handleSubmit,\n handleChange,\n handleTableChange,\n rowSelection,\n searchValidateInfos,\n search_modelRef,\n searchConfig,\n searchConfigOptions,\n columnState,\n dynamicColumns,\n slotList,\n };\n },\n\n data() {\n return {\n model: this.value,\n };\n },\n});\n</script>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemoteModal-jn_BF1Qc.js","names":["_extends","RawAsyncValidator","_extends","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","COMPARE_PARTIAL_FLAG","symbolTag","symbolProto","COMPARE_PARTIAL_FLAG","hasOwnProperty","objectTag","hasOwnProperty","getTag","FUNC_ERROR_TEXT","INFINITY","isObject","nativeMin","nativeMax","isObject","_extends"],"sources":["../node_modules/async-validator/dist-web/index.js","../node_modules/ant-design-vue/es/form/utils/valueUtil.js","../node_modules/ant-design-vue/es/form/utils/messages.js","../node_modules/ant-design-vue/es/form/utils/validateUtil.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_baseFindIndex.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/isEqual.js","../node_modules/ant-design-vue/es/form/utils/asyncUtil.js","../node_modules/lodash-es/_baseIsNaN.js","../node_modules/lodash-es/_strictIndexOf.js","../node_modules/lodash-es/_baseIndexOf.js","../node_modules/lodash-es/_arrayIncludes.js","../node_modules/lodash-es/_arrayIncludesWith.js","../node_modules/lodash-es/_baseIntersection.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/_castArrayLikeObject.js","../node_modules/lodash-es/intersection.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/last.js","../node_modules/lodash-es/_baseSlice.js","../node_modules/lodash-es/_parent.js","../node_modules/lodash-es/_baseUnset.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_customOmitClone.js","../node_modules/lodash-es/_isFlattenable.js","../node_modules/lodash-es/_baseFlatten.js","../node_modules/lodash-es/flatten.js","../node_modules/lodash-es/_flatRest.js","../node_modules/lodash-es/omit.js","../node_modules/ant-design-vue/es/form/useForm.js","../src/components/FormRender/RemoteModal/configs/sys/api-url.ts","../src/components/FormRender/RemoteModal/index.ts","../src/components/FormRender/RemoteModal/RemoteModal.vue","../src/components/FormRender/RemoteModal/RemoteModal.vue"],"sourcesContent":["function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format(template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var i = 0;\n var len = args.length;\n\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n\n if (typeof template === 'string') {\n var str = template.replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n break;\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return template;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n\n return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors || []);\n total++;\n\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k] || []);\n });\n return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n\n function AsyncValidationError(errors, fields) {\n var _this;\n\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n };\n\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n\n _pending[\"catch\"](function (e) {\n return e;\n });\n\n return _pending;\n }\n\n var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n }\n };\n\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\n\nfunction isErrorObj(obj) {\n return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n var v = value;\n\n for (var i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n\n v = v[path[i]];\n }\n\n return v;\n}\n\nfunction complementError(rule, source) {\n return function (oe) {\n var fieldValue;\n\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[oe.field || rule.fullField];\n }\n\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue: fieldValue,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n\n return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\n// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nvar getUrlRegex = (function () {\n if (urlReg) {\n return urlReg;\n }\n\n var word = '[a-fA-F\\\\d:]';\n\n var b = function b(options) {\n return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\" + word + \")|(?<=\" + word + \")(?=\\\\s|$))\" : '';\n };\n\n var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n var v6seg = '[a-fA-F\\\\d]{1,4}';\n var v6 = (\"\\n(?:\\n(?:\" + v6seg + \":){7}(?:\" + v6seg + \"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\\n(?:\" + v6seg + \":){6}(?:\" + v4 + \"|:\" + v6seg + \"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\\n(?:\" + v6seg + \":){5}(?::\" + v4 + \"|(?::\" + v6seg + \"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\\n(?:\" + v6seg + \":){4}(?:(?::\" + v6seg + \"){0,1}:\" + v4 + \"|(?::\" + v6seg + \"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\\n(?:\" + v6seg + \":){3}(?:(?::\" + v6seg + \"){0,2}:\" + v4 + \"|(?::\" + v6seg + \"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){2}(?:(?::\" + v6seg + \"){0,3}:\" + v4 + \"|(?::\" + v6seg + \"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\\n(?:\" + v6seg + \":){1}(?:(?::\" + v6seg + \"){0,4}:\" + v4 + \"|(?::\" + v6seg + \"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\\n(?::(?:(?::\" + v6seg + \"){0,5}:\" + v4 + \"|(?::\" + v6seg + \"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\\n\").replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim(); // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n\n var v46Exact = new RegExp(\"(?:^\" + v4 + \"$)|(?:^\" + v6 + \"$)\");\n var v4exact = new RegExp(\"^\" + v4 + \"$\");\n var v6exact = new RegExp(\"^\" + v6 + \"$\");\n\n var ip = function ip(options) {\n return options && options.exact ? v46Exact : new RegExp(\"(?:\" + b(options) + v4 + b(options) + \")|(?:\" + b(options) + v6 + b(options) + \")\", 'g');\n };\n\n ip.v4 = function (options) {\n return options && options.exact ? v4exact : new RegExp(\"\" + b(options) + v4 + b(options), 'g');\n };\n\n ip.v6 = function (options) {\n return options && options.exact ? v6exact : new RegExp(\"\" + b(options) + v6 + b(options), 'g');\n };\n\n var protocol = \"(?:(?:[a-z]+:)?//)\";\n var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n var ipv4 = ip.v4().source;\n var ipv6 = ip.v6().source;\n var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n var port = '(?::\\\\d{2,5})?';\n var path = '(?:[/?#][^\\\\s\"]*)?';\n var regex = \"(?:\" + protocol + \"|www\\\\.)\" + auth + \"(?:localhost|\" + ipv4 + \"|\" + ipv6 + \"|\" + host + domain + tld + \")\" + port + path;\n urlReg = new RegExp(\"(?:^\" + regex + \"$)\", 'i');\n return urlReg;\n});\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n },\n url: function url(value) {\n return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern$2.hex);\n }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required$1(rule, value, source, errors, options);\n return;\n }\n\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n\n if (!key) {\n return false;\n }\n\n if (arr) {\n val = value.length;\n }\n\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n if (rule[ENUM$1].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n};\n\nvar rules = {\n required: required$1,\n whitespace: whitespace,\n type: type$1,\n range: range,\n \"enum\": enumerable$1,\n pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'string');\n\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'array');\n\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n\n callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, ruleType);\n\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n }\n\n callback(errors);\n};\n\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable,\n pattern: pattern,\n date: date,\n url: type,\n hex: type,\n email: type,\n required: required,\n any: any\n};\n\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n // ========================= Static =========================\n // ======================== Instance ========================\n function Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n }\n\n var _proto = Schema.prototype;\n\n _proto.define = function define(rules) {\n var _this = this;\n\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n\n this.rules = {};\n Object.keys(rules).forEach(function (name) {\n var item = rules[name];\n _this.rules[name] = Array.isArray(item) ? item : [item];\n });\n };\n\n _proto.messages = function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n\n return this._messages;\n };\n\n _proto.validate = function validate(source_, o, oc) {\n var _this2 = this;\n\n if (o === void 0) {\n o = {};\n }\n\n if (oc === void 0) {\n oc = function oc() {};\n }\n\n var source = source_;\n var options = o;\n var callback = oc;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n\n return Promise.resolve(source);\n }\n\n function complete(results) {\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n callback(errors, fields);\n }\n }\n\n if (options.messages) {\n var messages$1 = this.messages();\n\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n var arr = _this2.rules[z];\n var value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n\n value = source[z] = rule.transform(value);\n }\n\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n } // Fill validator. Skip if nothing need to validate\n\n\n rule.validator = _this2.getValidationMethod(rule);\n\n if (!rule.validator) {\n return;\n }\n\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this2.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n\n function addFullField(key, schema) {\n return _extends({}, schema, {\n fullField: rule.fullField + \".\" + key,\n fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n });\n }\n\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n\n var errorList = Array.isArray(e) ? e : [e];\n\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n } // Fill error info\n\n\n var filledErrors = errorList.map(complementError(rule, source));\n\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = [].concat(rule.message).map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n\n return doIt(filledErrors);\n }\n\n var fieldsSchema = {};\n\n if (rule.defaultField) {\n Object.keys(data.value).map(function (key) {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n\n fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n var paredFieldsSchema = {};\n Object.keys(fieldsSchema).forEach(function (field) {\n var fieldSchema = fieldsSchema[field];\n var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n });\n var schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n\n if (filledErrors && filledErrors.length) {\n finalErrors.push.apply(finalErrors, filledErrors);\n }\n\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n var res;\n\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error == null ? void 0 : console.error(error); // rethrow to report error\n\n if (!options.suppressValidatorError) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n\n cb(error.message);\n }\n\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n }, source);\n };\n\n _proto.getType = function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n\n return rule.type || 'string';\n };\n\n _proto.getValidationMethod = function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n\n return validators[this.getType(rule)] || undefined;\n };\n\n return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n\n validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { toArray } from './typeUtil';\nimport get from '../../vc-util/get';\nimport set from '../../vc-util/set';\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function getValue(store, namePath) {\n const value = get(store, namePath);\n return value;\n}\nexport function setValue(store, namePath, value) {\n let removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n const newStore = set(store, namePath, value, removeIfUndefined);\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(path => matchNamePath(path, namePath));\n}\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\nfunction internalSetValues(store, values) {\n const newStore = Array.isArray(store) ? [...store] : _extends({}, store);\n if (!values) {\n return newStore;\n }\n Object.keys(values).forEach(key => {\n const prevValue = newStore[key];\n const value = values[key];\n // If both are object (but target is not array), we use recursion to set deep value\n const recursive = isObject(prevValue) && isObject(value);\n newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : value;\n });\n return newStore;\n}\nexport function setValues(store) {\n for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n restValues[_key - 1] = arguments[_key];\n }\n return restValues.reduce((current, newStore) => internalSetValues(current, newStore), store);\n}\nexport function cloneByNamePathList(store, namePathList) {\n let newStore = {};\n namePathList.forEach(namePath => {\n const value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n return namePath.every((nameUnit, i) => changedNamePath[i] === nameUnit);\n}","const typeTemplate = \"'${name}' is not a valid ${type}\";\nexport const defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport RawAsyncValidator from 'async-validator';\nimport { cloneVNode } from 'vue';\nimport { warning } from '../../vc-util/warning';\nimport { setValues } from './valueUtil';\nimport { defaultValidateMessages } from './messages';\nimport { isValidElement } from '../../_util/props-util';\n// Remove incorrect original ts define\nconst AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, str => {\n const key = str.slice(2, -1);\n return kv[key];\n });\n}\nfunction validateRule(name, value, rule, options, messageVariables) {\n return __awaiter(this, void 0, void 0, function* () {\n const cloneRule = _extends({}, rule);\n // Bug of `async-validator`\n delete cloneRule.ruleIndex;\n delete cloneRule.trigger;\n // We should special handle array validate\n let subRuleField = null;\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n const validator = new AsyncValidator({\n [name]: [cloneRule]\n });\n const messages = setValues({}, defaultValidateMessages, options.validateMessages);\n validator.messages(messages);\n let result = [];\n try {\n yield Promise.resolve(validator.validate({\n [name]: value\n }, _extends({}, options)));\n } catch (errObj) {\n if (errObj.errors) {\n result = errObj.errors.map((_ref, index) => {\n let {\n message\n } = _ref;\n return (\n // Wrap VueNode with `key`\n isValidElement(message) ? cloneVNode(message, {\n key: `error_${index}`\n }) : message\n );\n });\n } else {\n console.error(errObj);\n result = [messages.default()];\n }\n }\n if (!result.length && subRuleField) {\n const subResults = yield Promise.all(value.map((subValue, i) => validateRule(`${name}.${i}`, subValue, subRuleField, options, messageVariables)));\n return subResults.reduce((prev, errors) => [...prev, ...errors], []);\n }\n // Replace message with variables\n const kv = _extends(_extends(_extends({}, rule), {\n name,\n enum: (rule.enum || []).join(', ')\n }), messageVariables);\n const fillVariableResult = result.map(error => {\n if (typeof error === 'string') {\n return replaceMessage(error, kv);\n }\n return error;\n });\n return fillVariableResult;\n });\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n const name = namePath.join('.');\n // Fill rule with context\n const filledRules = rules.map((currentRule, ruleIndex) => {\n const originValidatorFunc = currentRule.validator;\n const cloneRule = _extends(_extends({}, currentRule), {\n ruleIndex\n });\n // Replace validator if needed\n if (originValidatorFunc) {\n cloneRule.validator = (rule, val, callback) => {\n let hasPromise = false;\n // Wrap callback only accept when promise not provided\n const wrappedCallback = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(() => {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n if (!hasPromise) {\n callback(...args);\n }\n });\n };\n // Get promise\n const promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n if (hasPromise) {\n promise.then(() => {\n callback();\n }).catch(err => {\n callback(err || ' ');\n });\n }\n };\n }\n return cloneRule;\n }).sort((_ref2, _ref3) => {\n let {\n warningOnly: w1,\n ruleIndex: i1\n } = _ref2;\n let {\n warningOnly: w2,\n ruleIndex: i2\n } = _ref3;\n if (!!w1 === !!w2) {\n // Let keep origin order\n return i1 - i2;\n }\n if (w1) {\n return 1;\n }\n return -1;\n });\n // Do validate rules\n let summaryPromise;\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n /* eslint-disable no-await-in-loop */\n for (let i = 0; i < filledRules.length; i += 1) {\n const rule = filledRules[i];\n const errors = yield validateRule(name, value, rule, options, messageVariables);\n if (errors.length) {\n reject([{\n errors,\n rule\n }]);\n return;\n }\n }\n /* eslint-enable */\n resolve([]);\n }));\n } else {\n // >>>>> Validate by parallel\n const rulePromises = filledRules.map(rule => validateRule(name, value, rule, options, messageVariables).then(errors => ({\n errors,\n rule\n })));\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(errors => {\n // Always change to rejection for Field to catch\n return Promise.reject(errors);\n });\n }\n // Internal catch error to avoid console error log.\n summaryPromise.catch(e => e);\n return summaryPromise;\n}\nfunction finishOnAllFailed(rulePromises) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.all(rulePromises).then(errorsList => {\n const errors = [].concat(...errorsList);\n return errors;\n });\n });\n}\nfunction finishOnFirstFailed(rulePromises) {\n return __awaiter(this, void 0, void 0, function* () {\n let count = 0;\n return new Promise(resolve => {\n rulePromises.forEach(promise => {\n promise.then(ruleError => {\n if (ruleError.errors.length) {\n resolve([ruleError]);\n }\n count += 1;\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n });\n });\n}","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","export function allPromiseFinish(promiseList) {\n let hasError = false;\n let count = promiseList.length;\n const results = [];\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n return new Promise((resolve, reject) => {\n promiseList.forEach((promise, index) => {\n promise.catch(e => {\n hasError = true;\n return e;\n }).then(result => {\n count -= 1;\n results[index] = result;\n if (count > 0) {\n return;\n }\n if (hasError) {\n reject(results);\n }\n resolve(results);\n });\n });\n });\n}","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseIntersection;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n","import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nexport default intersection;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { reactive, watch, nextTick, unref, shallowRef, toRaw, ref } from 'vue';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport intersection from 'lodash-es/intersection';\nimport isEqual from 'lodash-es/isEqual';\nimport debounce from 'lodash-es/debounce';\nimport omit from 'lodash-es/omit';\nimport { validateRules } from './utils/validateUtil';\nimport { defaultValidateMessages } from './utils/messages';\nimport { allPromiseFinish } from './utils/asyncUtil';\nfunction isRequired(rules) {\n let isRequired = false;\n if (rules && rules.length) {\n rules.every(rule => {\n if (rule.required) {\n isRequired = true;\n return false;\n }\n return true;\n });\n }\n return isRequired;\n}\nfunction toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\nfunction getPropByPath(obj, path, strict) {\n let tempObj = obj;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n path = path.replace(/^\\./, '');\n const keyArr = path.split('.');\n let i = 0;\n for (let len = keyArr.length; i < len - 1; ++i) {\n if (!tempObj && !strict) break;\n const key = keyArr[i];\n if (key in tempObj) {\n tempObj = tempObj[key];\n } else {\n if (strict) {\n throw new Error('please transfer a valid name path to validate!');\n }\n break;\n }\n }\n return {\n o: tempObj,\n k: keyArr[i],\n v: tempObj ? tempObj[keyArr[i]] : null,\n isValid: tempObj && keyArr[i] in tempObj\n };\n}\nfunction useForm(modelRef) {\n let rulesRef = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ref({});\n let options = arguments.length > 2 ? arguments[2] : undefined;\n const initialModel = cloneDeep(unref(modelRef));\n const validateInfos = reactive({});\n const rulesKeys = shallowRef([]);\n const resetFields = newValues => {\n _extends(unref(modelRef), _extends(_extends({}, cloneDeep(initialModel)), newValues));\n nextTick(() => {\n Object.keys(validateInfos).forEach(key => {\n validateInfos[key] = {\n autoLink: false,\n required: isRequired(unref(rulesRef)[key])\n };\n });\n });\n };\n const filterRules = function () {\n let rules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let trigger = arguments.length > 1 ? arguments[1] : undefined;\n if (!trigger.length) {\n return rules;\n } else {\n return rules.filter(rule => {\n const triggerList = toArray(rule.trigger || 'change');\n return intersection(triggerList, trigger).length;\n });\n }\n };\n let lastValidatePromise = null;\n const validateFields = function (names) {\n let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let strict = arguments.length > 2 ? arguments[2] : undefined;\n // Collect result in promise list\n const promiseList = [];\n const values = {};\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n const prop = getPropByPath(unref(modelRef), name, strict);\n if (!prop.isValid) continue;\n values[name] = prop.v;\n const rules = filterRules(unref(rulesRef)[name], toArray(option && option.trigger));\n if (rules.length) {\n promiseList.push(validateField(name, prop.v, rules, option || {}).then(() => ({\n name,\n errors: [],\n warnings: []\n })).catch(ruleErrors => {\n const mergedErrors = [];\n const mergedWarnings = [];\n ruleErrors.forEach(_ref => {\n let {\n rule: {\n warningOnly\n },\n errors\n } = _ref;\n if (warningOnly) {\n mergedWarnings.push(...errors);\n } else {\n mergedErrors.push(...errors);\n }\n });\n if (mergedErrors.length) {\n return Promise.reject({\n name,\n errors: mergedErrors,\n warnings: mergedWarnings\n });\n }\n return {\n name,\n errors: mergedErrors,\n warnings: mergedWarnings\n };\n }));\n }\n }\n const summaryPromise = allPromiseFinish(promiseList);\n lastValidatePromise = summaryPromise;\n const returnPromise = summaryPromise.then(() => {\n if (lastValidatePromise === summaryPromise) {\n return Promise.resolve(values);\n }\n return Promise.reject([]);\n }).catch(results => {\n const errorList = results.filter(result => result && result.errors.length);\n return errorList.length ? Promise.reject({\n values,\n errorFields: errorList,\n outOfDate: lastValidatePromise !== summaryPromise\n }) : Promise.resolve(values);\n });\n // Do not throw in console\n returnPromise.catch(e => e);\n return returnPromise;\n };\n const validateField = function (name, value, rules) {\n let option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const promise = validateRules([name], value, rules, _extends({\n validateMessages: defaultValidateMessages\n }, option), !!option.validateFirst);\n if (!validateInfos[name]) {\n return promise.catch(e => e);\n }\n validateInfos[name].validateStatus = 'validating';\n promise.catch(e => e).then(function () {\n let results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var _a;\n if (validateInfos[name].validateStatus === 'validating') {\n const res = results.filter(result => result && result.errors.length);\n validateInfos[name].validateStatus = res.length ? 'error' : 'success';\n validateInfos[name].help = res.length ? res.map(r => r.errors) : null;\n (_a = options === null || options === void 0 ? void 0 : options.onValidate) === null || _a === void 0 ? void 0 : _a.call(options, name, !res.length, res.length ? toRaw(validateInfos[name].help[0]) : null);\n }\n });\n return promise;\n };\n const validate = (names, option) => {\n let keys = [];\n let strict = true;\n if (!names) {\n strict = false;\n keys = rulesKeys.value;\n } else if (Array.isArray(names)) {\n keys = names;\n } else {\n keys = [names];\n }\n const promises = validateFields(keys, option || {}, strict);\n // Do not throw in console\n promises.catch(e => e);\n return promises;\n };\n const clearValidate = names => {\n let keys = [];\n if (!names) {\n keys = rulesKeys.value;\n } else if (Array.isArray(names)) {\n keys = names;\n } else {\n keys = [names];\n }\n keys.forEach(key => {\n validateInfos[key] && _extends(validateInfos[key], {\n validateStatus: '',\n help: null\n });\n });\n };\n const mergeValidateInfo = items => {\n const info = {\n autoLink: false\n };\n const help = [];\n const infos = Array.isArray(items) ? items : [items];\n for (let i = 0; i < infos.length; i++) {\n const arg = infos[i];\n if ((arg === null || arg === void 0 ? void 0 : arg.validateStatus) === 'error') {\n info.validateStatus = 'error';\n arg.help && help.push(arg.help);\n }\n info.required = info.required || (arg === null || arg === void 0 ? void 0 : arg.required);\n }\n info.help = help;\n return info;\n };\n let oldModel = initialModel;\n let isFirstTime = true;\n const modelFn = model => {\n const names = [];\n rulesKeys.value.forEach(key => {\n const prop = getPropByPath(model, key, false);\n const oldProp = getPropByPath(oldModel, key, false);\n const isFirstValidation = isFirstTime && (options === null || options === void 0 ? void 0 : options.immediate) && prop.isValid;\n if (isFirstValidation || !isEqual(prop.v, oldProp.v)) {\n names.push(key);\n }\n });\n validate(names, {\n trigger: 'change'\n });\n isFirstTime = false;\n oldModel = cloneDeep(toRaw(model));\n };\n const debounceOptions = options === null || options === void 0 ? void 0 : options.debounce;\n let first = true;\n watch(rulesRef, () => {\n rulesKeys.value = rulesRef ? Object.keys(unref(rulesRef)) : [];\n if (!first && options && options.validateOnRuleChange) {\n validate();\n }\n first = false;\n }, {\n deep: true,\n immediate: true\n });\n watch(rulesKeys, () => {\n const newValidateInfos = {};\n rulesKeys.value.forEach(key => {\n newValidateInfos[key] = _extends({}, validateInfos[key], {\n autoLink: false,\n required: isRequired(unref(rulesRef)[key])\n });\n delete validateInfos[key];\n });\n for (const key in validateInfos) {\n if (Object.prototype.hasOwnProperty.call(validateInfos, key)) {\n delete validateInfos[key];\n }\n }\n _extends(validateInfos, newValidateInfos);\n }, {\n immediate: true\n });\n watch(modelRef, debounceOptions && debounceOptions.wait ? debounce(modelFn, debounceOptions.wait, omit(debounceOptions, ['wait'])) : modelFn, {\n immediate: options && !!options.immediate,\n deep: true\n });\n return {\n modelRef,\n rulesRef,\n initialModel,\n validateInfos,\n resetFields,\n validate,\n validateField,\n mergeValidateInfo,\n clearValidate\n };\n}\nexport default useForm;","import { reactive } from 'vue';\n\ninterface SearchConfig {\n rules: any;\n fields: any;\n settings: any;\n model: any;\n}\n\nexport default () => {\n const apiurl_config: SearchConfig = {\n settings: {\n name: '表单名称',\n labelAlign: 'right',\n layout: 'inline',\n },\n fields: [\n {\n type: 'input',\n name: 'name',\n label: '接口名称',\n disabled: false,\n allowClear: true,\n inputType: 'text',\n maxlength: 100,\n defaultValue: '',\n placeholder: '请填写接口名称',\n },\n {\n type: 'input',\n name: 'url',\n label: '绝对路径url',\n disabled: false,\n allowClear: true,\n inputType: 'text',\n maxlength: 100,\n defaultValue: '',\n placeholder: '绝对路径url',\n },\n ],\n rules: reactive({\n name: [],\n }),\n model: {},\n };\n const apiurl_columns = [\n {\n title: '接口名称',\n dataIndex: 'name',\n },\n {\n title: 'url',\n dataIndex: 'url',\n },\n ];\n const apiurl_ConfigOptions = {\n is_active: [\n { name: '全部', value: '' },\n { name: '正常', value: true },\n { name: '作废', value: false },\n ],\n };\n return {\n searchConfig: apiurl_config,\n searchConfigOptions: apiurl_ConfigOptions,\n getData: '/permission/query_apiurl_list',\n columns: apiurl_columns,\n };\n};\n","import { useGlobMap } from 'liyu-pc-base/init-plugin';\nconst res_components: { [key: string]: any } = {};\nconst init = () => {\n if (Object.keys(res_components).length > 0) {\n return;\n }\n const allComponents: any = import.meta.glob(\n 'liyu-pc-base/components/FormRender/RemoteModal/configs/*/*.ts',\n {\n eager: true,\n },\n );\n const customComponents = useGlobMap('remoteModal');\n Object.assign(allComponents, customComponents);\n Object.keys(allComponents).forEach(full_file_name => {\n const file_name_list = full_file_name.split('/');\n const file_name = file_name_list[file_name_list.length - 1].replace('.ts', '');\n res_components[file_name] = allComponents[full_file_name].default;\n });\n};\n\nexport default (modalType: string) => {\n init();\n if (res_components[modalType] == undefined) {\n console.error('没有组件:' + modalType);\n }\n return {\n ...res_components[modalType](),\n };\n};\n","<template>\n <div>\n <a-input-group compact>\n <a-select\n :mode=\"field.mode == 'default' ? null : field.mode\"\n size=\"small\"\n :dropdownMatchSelectWidth=\"false\"\n :maskClosable=\"false\"\n v-model:value=\"modalRef.selectedRows\"\n :show-search=\"!!field.show_search\"\n style=\"width: 66%; min-width: 150px\"\n :disabled=\"field.disabled\"\n :placeholder=\"placeholder\"\n :default-value=\"field.defaultValue\"\n :allow-clear=\"field.allowClear\"\n :maxTagCount=\"field.maxTagCount\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"option in datasource\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n <a-button\n :disabled=\"field.disabled\"\n size=\"small\"\n style=\"width: 24%\"\n type=\"primary\"\n @click=\"openModal\"\n >\n 选择\n </a-button>\n </a-input-group>\n <a-modal\n :title=\"field.title\"\n width=\"900px\"\n :open=\"modalRef.open\"\n :confirmLoading=\"loading\"\n centered\n @ok=\"handleSubmit\"\n @cancel=\"\n () => {\n modalRef.open = false;\n }\n \"\n >\n <search-render\n v-if=\"searchConfig\"\n :form=\"searchConfig\"\n :model=\"search_modelRef\"\n :options=\"searchConfigOptions\"\n :validateInfos=\"searchValidateInfos\"\n @search=\"search\"\n />\n <a-table\n bordered\n size=\"small\"\n :loading=\"state.loading\"\n :scroll=\"{ y: 400, x: columnState.tableWidth }\"\n :row-selection=\"rowSelection\"\n :columns=\"dynamicColumns\"\n row-key=\"id\"\n :data-source=\"state.dataSource\"\n :pagination=\"{\n current: state.current,\n pageSize: state.pageSize,\n total: state.total,\n showSizeChanger: true,\n showQuickJumper: true,\n pageSizeOptions: ['10', '20', '50', '200', '1000', '3000', '10000', '50000', '100000'],\n }\"\n @change=\"handleTableChange\"\n >\n <template\n v-for=\"item in slotList\"\n v-slot:[item.slotName]=\"{ index, text, record }\"\n :key=\"item.slotName\"\n >\n <span v-if=\"item.slotName === 'index'\">\n {{ index + 1 + state.pageSize * (state.current - 1) }}\n </span>\n <span v-if=\"item.type === 'custom'\">\n {{ item['field_' + text] }}\n </span>\n <span v-if=\"item.type === 'custom1'\">\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n </span>\n <span v-if=\"item.type === 'datetime'\">\n {{ getDateTime(text) }}\n </span>\n <span v-if=\"item.type === 'date'\">\n {{ getDate(text) }}\n </span>\n <span v-if=\"item.type === 'full_date'\">\n {{ getFullDate(text) }}\n </span>\n <span v-if=\"item.type === 'time'\">\n {{ getTime(text) }}\n </span>\n <a-button\n size=\"small\"\n v-if=\"item.type === 'attributetable'\"\n type=\"link\"\n @click=\"item.cb(text, record)\"\n >\n 查看属性\n </a-button>\n <a-tag\n :color=\"item.color ? item.color(record) : 'green'\"\n v-if=\"item.type === 'tag'\"\n >\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n <span v-else>\n {{ text }}\n </span>\n </a-tag>\n <a-tag\n color=\"green\"\n v-if=\"text && item.type === 'boolean'\"\n >\n {{ item.name1 }}\n </a-tag>\n <a-tag\n color=\"red\"\n v-if=\"!text && item.type === 'boolean'\"\n >\n {{ item.name2 }}\n </a-tag>\n <template v-if=\"item.type === 'list'\">\n <a-tag\n color=\"#87d068\"\n v-for=\"obj in text\"\n :key=\"obj.id\"\n style=\"margin-bottom: 1px\"\n >\n {{ obj.name }}\n </a-tag>\n </template>\n </template>\n </a-table>\n </a-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\nimport { useFetchData } from '../../../utils/hooks/useFetchData';\nimport { useForm } from 'ant-design-vue/es/form';\nimport getFormConfig from 'liyu-pc-base/components/FormRender/RemoteModal/index';\nimport { useTableDynamicColumns } from '../../../utils/hooks/useTableColumn';\nimport { getDate, getDateTime, getFullDate, getTime } from '../../../utils/function';\nimport { useUserStore } from '../../../init-plugin';\nimport { getApiData } from '../../../api/api-model';\n\n// type Key = ColumnProps['key'];\n\n// interface DataType {\n// id: number;\n// key: Key;\n// name: string;\n// }\n\nexport default defineComponent({\n name: 'RemoteModal',\n props: {\n field: {\n type: Object,\n required: true,\n },\n modalType: {\n type: String,\n required: true,\n default: () => '',\n },\n value: {\n type: [Array, String, Number],\n required: false,\n default: () => [],\n },\n init_model: {\n type: Object,\n default: () => {},\n },\n field_status: {\n type: Object,\n default: () => {},\n },\n placeholder: {\n type: String,\n default: () => '',\n },\n watch: {\n type: Array,\n default: () => [],\n },\n formModel: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['update:value', 'update:label'],\n setup(props, { emit }) {\n const loading = ref(false);\n const { searchConfig, searchConfigOptions, getData, columns, slotList } = getFormConfig(\n props.modalType,\n );\n const search_modelRef = reactive({\n ...searchConfig.model,\n is_active: true,\n ...props.init_model,\n });\n\n for (const field of searchConfig.fields) {\n if (props.field_status && props.field_status.hasOwnProperty(field.name)) {\n if (props.field_status[field.name] == 0) {\n field.disabled = true;\n field.hidden = false;\n } else if (props.field_status[field.name] == 1) {\n field.disabled = false;\n field.hidden = true;\n } else {\n field.disabled = false;\n field.hidden = false;\n }\n }\n }\n\n const old_obj: { [key: string]: any } = {};\n onMounted(() => {\n if (props.watch) {\n for (const k of props.watch) {\n if (props.formModel) {\n old_obj[k as string] = props.formModel[k as string];\n }\n }\n }\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n search_modelRef[k as string] = props.formModel[k as string];\n watch(\n () => props.formModel[k as string],\n () => {\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n if (old_obj[k as string] != props.formModel[k as string]) {\n search_modelRef[k as string] = props.formModel[k as string];\n }\n }\n }\n },\n { immediate: true },\n );\n }\n }\n });\n\n const { state: columnState, dynamicColumns } = useTableDynamicColumns(\n columns as TableColumn[],\n {\n checkAll: false,\n needRowIndex: false,\n },\n );\n const get_value_key = () => {\n return props.field.valueKey ? (props.field.valueKey as string) : 'id';\n };\n const get_label_key = () => {\n return props.field.labelKey ? (props.field.labelKey as string) : 'name';\n };\n const datasource = computed(() => {\n return modalRef.datasource.map(item => {\n if (props.field.labelKeyList) {\n const label = [];\n for (const key of props.field.labelKeyList) {\n label.push(item[key as string]);\n }\n return {\n value: item[get_value_key()],\n label: label.join(props.field.labelSpace),\n };\n } else {\n return {\n value: item[get_value_key()],\n label: item[get_label_key()],\n };\n }\n });\n });\n const modalRef = reactive({\n open: false,\n selectedRows: new Array<number>(),\n selectedRowsKey: new Array<number>(),\n selectedRowsTotal: new Array<any>(),\n datasource: new Array<any>(),\n datasource_keys: new Array<any>(),\n });\n\n const rowSelection = {\n type:\n props.field.mode == 'default'\n ? 'radio'\n : props.field.mode == 'multiple'\n ? 'checkbox'\n : 'checkbox',\n columnWidth: '30px',\n selectedRowKeys: modalRef.selectedRowsKey,\n onChange: (selectedRowKeys: any, selectedRows: any) => {\n // modalRef.selectedRowsKey.length = 0;\n const remove_key: Array<number> = modalRef.selectedRowsKey.filter(\n item => selectedRowKeys.indexOf(Number(item)) == -1,\n );\n modalRef.selectedRowsTotal = modalRef.selectedRowsTotal.filter(\n item => remove_key.indexOf(item.id) == -1,\n );\n selectedRows.forEach((item: any) => {\n if (modalRef.selectedRowsKey.indexOf(item.id) == -1) {\n modalRef.selectedRowsTotal.push(item);\n }\n });\n\n modalRef.selectedRowsKey.length = 0;\n selectedRows.forEach((item: any) => {\n modalRef.selectedRowsKey.push(item.id);\n\n // modalRef.datasource.push(item);\n });\n },\n onSelect: (record: any, selected: any) => {\n if (props.field.mode == 'multiple') {\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n } else {\n modalRef.datasource_keys = modalRef.datasource_keys.filter(item => item !== record.id);\n modalRef.datasource = modalRef.datasource.filter(item => item.id !== record.id);\n }\n } else {\n modalRef.datasource_keys.length = 0;\n modalRef.datasource.length = 0;\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n }\n }\n },\n };\n\n const {\n reload,\n setPageInfo,\n context: state,\n } = useFetchData(getData, {\n current: 1,\n pageSize: 20,\n tableSize: 'middle', // 'default' | 'middle' | 'small'\n stripe: true,\n requestParams: {\n ...search_modelRef,\n },\n });\n watch(\n () => state.dataSource,\n () => {\n const total_ids: Array<number> = modalRef.selectedRowsTotal.map(item => item.id);\n state.dataSource.map((item: any) => {\n if (total_ids.indexOf(item.id) > -1) {\n modalRef.selectedRowsKey.push(item.id);\n }\n });\n },\n );\n const init = () => {\n modalRef.datasource.length = 0;\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n modalRef.datasource_keys.length = 0;\n let list: any[] = [];\n if (props.value instanceof Array) {\n if (props.value.length > 0) {\n list = props.value as Array<number>;\n }\n } else if (typeof props.value == 'string') {\n (props.value as string).split(',').map((item: any) => {\n list.push(Number(item));\n });\n } else {\n if (props.value) {\n list.push(props.value);\n }\n }\n if (list.length > 0) {\n const tmp_ids: any[] = [];\n const tmp_item_ids: any[] = [];\n modalRef.datasource.map(item => tmp_item_ids.push(item.id));\n list.map(item => {\n if (modalRef.selectedRows.indexOf(Number(item)) == -1) {\n modalRef.selectedRows.push(Number(item));\n modalRef.selectedRowsKey.push(Number(item));\n }\n if (tmp_item_ids.indexOf(item) == -1) {\n tmp_ids.push(item);\n }\n });\n if (tmp_ids.length > 0) {\n getApiData(\n { current: 1, ...search_modelRef, pageSize: 2000, ids: tmp_ids.join(',') },\n getData,\n ).then(function (res: ReponseData<any>) {\n res.data.forEach(item => {\n if (list.indexOf(item.id) >= 0) {\n modalRef.datasource.push(item);\n modalRef.selectedRowsTotal.push(item);\n modalRef.datasource_keys.push(item.id);\n }\n });\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n const selectItems: any = datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:label', '');\n }\n } else {\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n });\n }\n } else {\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n }\n };\n init();\n\n watch(\n () => props.value,\n () => {\n init();\n },\n );\n\n const handleTableChange = (\n { current, pageSize }: Pagination,\n filters: TableFilters,\n sorter: TableColumnSortOrder,\n ) => {\n console.log(sorter);\n setPageInfo({\n current,\n pageSize,\n ...filters,\n ...search_modelRef,\n });\n\n reload();\n };\n\n const { validateInfos: searchValidateInfos } = useForm(search_modelRef, searchConfig.rules);\n\n const search = () => {\n setPageInfo({\n current: 1,\n ...search_modelRef,\n });\n reload();\n };\n\n const openModal = () => {\n modalRef.open = true;\n const remove_ids: Array<number> = modalRef.datasource\n .filter(item => modalRef.selectedRows.indexOf(item.id) == -1)\n .map(item => item.id);\n remove_ids.forEach(item => {\n if (modalRef.selectedRowsKey.indexOf(item) != -1) {\n modalRef.selectedRowsKey.splice(modalRef.selectedRowsKey.indexOf(item), 1);\n }\n });\n\n const remove_total: Array<any> = modalRef.selectedRowsTotal.filter(\n item => modalRef.selectedRows.indexOf(item.id) == -1,\n );\n remove_total.forEach(item => {\n if (modalRef.selectedRowsTotal.indexOf(item) != -1) {\n modalRef.selectedRowsTotal.splice(modalRef.selectedRowsTotal.indexOf(item), 1);\n }\n });\n };\n\n const handleSubmit = (e: Event) => {\n e.preventDefault();\n modalRef.open = false;\n if (modalRef.selectedRows == undefined) {\n modalRef.selectedRows = new Array<number>();\n }\n modalRef.selectedRows.length = 0;\n modalRef.datasource.map(item =>\n modalRef.selectedRows.push(\n item[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n ),\n );\n // modalRef.datasource.length = 0;\n // modalRef.selectedRowsTotal.map(item => modalRef.datasource.push(item));\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n emit('update:value', modalRef.selectedRows[0]);\n const selectItems: any = datasource.value\n .filter((item: any) => {\n return modalRef.selectedRows == item.value;\n })\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:value', null);\n emit('update:label', '');\n }\n } else {\n emit('update:value', modalRef.selectedRows);\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n };\n const handleChange = (value: any) => {\n if (props.field.mode == 'default') {\n if (value == undefined) {\n modalRef.selectedRows = new Array<number>();\n } else {\n modalRef.selectedRows = [value];\n }\n } else {\n modalRef.selectedRows = value;\n }\n emit('update:value', value);\n };\n return {\n props,\n modalRef,\n datasource,\n state,\n loading,\n getDateTime,\n getDate,\n getFullDate,\n getTime,\n search,\n openModal,\n handleSubmit,\n handleChange,\n handleTableChange,\n rowSelection,\n searchValidateInfos,\n search_modelRef,\n searchConfig,\n searchConfigOptions,\n columnState,\n dynamicColumns,\n slotList,\n };\n },\n\n data() {\n return {\n model: this.value,\n };\n },\n});\n</script>\n","<template>\n <div>\n <a-input-group compact>\n <a-select\n :mode=\"field.mode == 'default' ? null : field.mode\"\n size=\"small\"\n :dropdownMatchSelectWidth=\"false\"\n :maskClosable=\"false\"\n v-model:value=\"modalRef.selectedRows\"\n :show-search=\"!!field.show_search\"\n style=\"width: 66%; min-width: 150px\"\n :disabled=\"field.disabled\"\n :placeholder=\"placeholder\"\n :default-value=\"field.defaultValue\"\n :allow-clear=\"field.allowClear\"\n :maxTagCount=\"field.maxTagCount\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"option in datasource\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n <a-button\n :disabled=\"field.disabled\"\n size=\"small\"\n style=\"width: 24%\"\n type=\"primary\"\n @click=\"openModal\"\n >\n 选择\n </a-button>\n </a-input-group>\n <a-modal\n :title=\"field.title\"\n width=\"900px\"\n :open=\"modalRef.open\"\n :confirmLoading=\"loading\"\n centered\n @ok=\"handleSubmit\"\n @cancel=\"\n () => {\n modalRef.open = false;\n }\n \"\n >\n <search-render\n v-if=\"searchConfig\"\n :form=\"searchConfig\"\n :model=\"search_modelRef\"\n :options=\"searchConfigOptions\"\n :validateInfos=\"searchValidateInfos\"\n @search=\"search\"\n />\n <a-table\n bordered\n size=\"small\"\n :loading=\"state.loading\"\n :scroll=\"{ y: 400, x: columnState.tableWidth }\"\n :row-selection=\"rowSelection\"\n :columns=\"dynamicColumns\"\n row-key=\"id\"\n :data-source=\"state.dataSource\"\n :pagination=\"{\n current: state.current,\n pageSize: state.pageSize,\n total: state.total,\n showSizeChanger: true,\n showQuickJumper: true,\n pageSizeOptions: ['10', '20', '50', '200', '1000', '3000', '10000', '50000', '100000'],\n }\"\n @change=\"handleTableChange\"\n >\n <template\n v-for=\"item in slotList\"\n v-slot:[item.slotName]=\"{ index, text, record }\"\n :key=\"item.slotName\"\n >\n <span v-if=\"item.slotName === 'index'\">\n {{ index + 1 + state.pageSize * (state.current - 1) }}\n </span>\n <span v-if=\"item.type === 'custom'\">\n {{ item['field_' + text] }}\n </span>\n <span v-if=\"item.type === 'custom1'\">\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n </span>\n <span v-if=\"item.type === 'datetime'\">\n {{ getDateTime(text) }}\n </span>\n <span v-if=\"item.type === 'date'\">\n {{ getDate(text) }}\n </span>\n <span v-if=\"item.type === 'full_date'\">\n {{ getFullDate(text) }}\n </span>\n <span v-if=\"item.type === 'time'\">\n {{ getTime(text) }}\n </span>\n <a-button\n size=\"small\"\n v-if=\"item.type === 'attributetable'\"\n type=\"link\"\n @click=\"item.cb(text, record)\"\n >\n 查看属性\n </a-button>\n <a-tag\n :color=\"item.color ? item.color(record) : 'green'\"\n v-if=\"item.type === 'tag'\"\n >\n <span v-if=\"item.content\">\n {{ item.content(record) }}\n </span>\n <span v-else>\n {{ text }}\n </span>\n </a-tag>\n <a-tag\n color=\"green\"\n v-if=\"text && item.type === 'boolean'\"\n >\n {{ item.name1 }}\n </a-tag>\n <a-tag\n color=\"red\"\n v-if=\"!text && item.type === 'boolean'\"\n >\n {{ item.name2 }}\n </a-tag>\n <template v-if=\"item.type === 'list'\">\n <a-tag\n color=\"#87d068\"\n v-for=\"obj in text\"\n :key=\"obj.id\"\n style=\"margin-bottom: 1px\"\n >\n {{ obj.name }}\n </a-tag>\n </template>\n </template>\n </a-table>\n </a-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\nimport { useFetchData } from '../../../utils/hooks/useFetchData';\nimport { useForm } from 'ant-design-vue/es/form';\nimport getFormConfig from 'liyu-pc-base/components/FormRender/RemoteModal/index';\nimport { useTableDynamicColumns } from '../../../utils/hooks/useTableColumn';\nimport { getDate, getDateTime, getFullDate, getTime } from '../../../utils/function';\nimport { useUserStore } from '../../../init-plugin';\nimport { getApiData } from '../../../api/api-model';\n\n// type Key = ColumnProps['key'];\n\n// interface DataType {\n// id: number;\n// key: Key;\n// name: string;\n// }\n\nexport default defineComponent({\n name: 'RemoteModal',\n props: {\n field: {\n type: Object,\n required: true,\n },\n modalType: {\n type: String,\n required: true,\n default: () => '',\n },\n value: {\n type: [Array, String, Number],\n required: false,\n default: () => [],\n },\n init_model: {\n type: Object,\n default: () => {},\n },\n field_status: {\n type: Object,\n default: () => {},\n },\n placeholder: {\n type: String,\n default: () => '',\n },\n watch: {\n type: Array,\n default: () => [],\n },\n formModel: {\n type: Object,\n required: false,\n default: () => {},\n },\n },\n emits: ['update:value', 'update:label'],\n setup(props, { emit }) {\n const loading = ref(false);\n const { searchConfig, searchConfigOptions, getData, columns, slotList } = getFormConfig(\n props.modalType,\n );\n const search_modelRef = reactive({\n ...searchConfig.model,\n is_active: true,\n ...props.init_model,\n });\n\n for (const field of searchConfig.fields) {\n if (props.field_status && props.field_status.hasOwnProperty(field.name)) {\n if (props.field_status[field.name] == 0) {\n field.disabled = true;\n field.hidden = false;\n } else if (props.field_status[field.name] == 1) {\n field.disabled = false;\n field.hidden = true;\n } else {\n field.disabled = false;\n field.hidden = false;\n }\n }\n }\n\n const old_obj: { [key: string]: any } = {};\n onMounted(() => {\n if (props.watch) {\n for (const k of props.watch) {\n if (props.formModel) {\n old_obj[k as string] = props.formModel[k as string];\n }\n }\n }\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n search_modelRef[k as string] = props.formModel[k as string];\n watch(\n () => props.formModel[k as string],\n () => {\n if (props.watch && props.formModel) {\n for (const k of props.watch) {\n if (old_obj[k as string] != props.formModel[k as string]) {\n search_modelRef[k as string] = props.formModel[k as string];\n }\n }\n }\n },\n { immediate: true },\n );\n }\n }\n });\n\n const { state: columnState, dynamicColumns } = useTableDynamicColumns(\n columns as TableColumn[],\n {\n checkAll: false,\n needRowIndex: false,\n },\n );\n const get_value_key = () => {\n return props.field.valueKey ? (props.field.valueKey as string) : 'id';\n };\n const get_label_key = () => {\n return props.field.labelKey ? (props.field.labelKey as string) : 'name';\n };\n const datasource = computed(() => {\n return modalRef.datasource.map(item => {\n if (props.field.labelKeyList) {\n const label = [];\n for (const key of props.field.labelKeyList) {\n label.push(item[key as string]);\n }\n return {\n value: item[get_value_key()],\n label: label.join(props.field.labelSpace),\n };\n } else {\n return {\n value: item[get_value_key()],\n label: item[get_label_key()],\n };\n }\n });\n });\n const modalRef = reactive({\n open: false,\n selectedRows: new Array<number>(),\n selectedRowsKey: new Array<number>(),\n selectedRowsTotal: new Array<any>(),\n datasource: new Array<any>(),\n datasource_keys: new Array<any>(),\n });\n\n const rowSelection = {\n type:\n props.field.mode == 'default'\n ? 'radio'\n : props.field.mode == 'multiple'\n ? 'checkbox'\n : 'checkbox',\n columnWidth: '30px',\n selectedRowKeys: modalRef.selectedRowsKey,\n onChange: (selectedRowKeys: any, selectedRows: any) => {\n // modalRef.selectedRowsKey.length = 0;\n const remove_key: Array<number> = modalRef.selectedRowsKey.filter(\n item => selectedRowKeys.indexOf(Number(item)) == -1,\n );\n modalRef.selectedRowsTotal = modalRef.selectedRowsTotal.filter(\n item => remove_key.indexOf(item.id) == -1,\n );\n selectedRows.forEach((item: any) => {\n if (modalRef.selectedRowsKey.indexOf(item.id) == -1) {\n modalRef.selectedRowsTotal.push(item);\n }\n });\n\n modalRef.selectedRowsKey.length = 0;\n selectedRows.forEach((item: any) => {\n modalRef.selectedRowsKey.push(item.id);\n\n // modalRef.datasource.push(item);\n });\n },\n onSelect: (record: any, selected: any) => {\n if (props.field.mode == 'multiple') {\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n } else {\n modalRef.datasource_keys = modalRef.datasource_keys.filter(item => item !== record.id);\n modalRef.datasource = modalRef.datasource.filter(item => item.id !== record.id);\n }\n } else {\n modalRef.datasource_keys.length = 0;\n modalRef.datasource.length = 0;\n if (selected) {\n if (\n modalRef.datasource_keys.indexOf(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'] == -1,\n )\n ) {\n modalRef.datasource_keys.push(\n record[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n );\n modalRef.datasource.push(record);\n }\n }\n }\n },\n };\n\n const {\n reload,\n setPageInfo,\n context: state,\n } = useFetchData(getData, {\n current: 1,\n pageSize: 20,\n tableSize: 'middle', // 'default' | 'middle' | 'small'\n stripe: true,\n requestParams: {\n ...search_modelRef,\n },\n });\n watch(\n () => state.dataSource,\n () => {\n const total_ids: Array<number> = modalRef.selectedRowsTotal.map(item => item.id);\n state.dataSource.map((item: any) => {\n if (total_ids.indexOf(item.id) > -1) {\n modalRef.selectedRowsKey.push(item.id);\n }\n });\n },\n );\n const init = () => {\n modalRef.datasource.length = 0;\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n modalRef.datasource_keys.length = 0;\n let list: any[] = [];\n if (props.value instanceof Array) {\n if (props.value.length > 0) {\n list = props.value as Array<number>;\n }\n } else if (typeof props.value == 'string') {\n (props.value as string).split(',').map((item: any) => {\n list.push(Number(item));\n });\n } else {\n if (props.value) {\n list.push(props.value);\n }\n }\n if (list.length > 0) {\n const tmp_ids: any[] = [];\n const tmp_item_ids: any[] = [];\n modalRef.datasource.map(item => tmp_item_ids.push(item.id));\n list.map(item => {\n if (modalRef.selectedRows.indexOf(Number(item)) == -1) {\n modalRef.selectedRows.push(Number(item));\n modalRef.selectedRowsKey.push(Number(item));\n }\n if (tmp_item_ids.indexOf(item) == -1) {\n tmp_ids.push(item);\n }\n });\n if (tmp_ids.length > 0) {\n getApiData(\n { current: 1, ...search_modelRef, pageSize: 2000, ids: tmp_ids.join(',') },\n getData,\n ).then(function (res: ReponseData<any>) {\n res.data.forEach(item => {\n if (list.indexOf(item.id) >= 0) {\n modalRef.datasource.push(item);\n modalRef.selectedRowsTotal.push(item);\n modalRef.datasource_keys.push(item.id);\n }\n });\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n const selectItems: any = datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:label', '');\n }\n } else {\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n });\n }\n } else {\n modalRef.selectedRows.length = 0;\n modalRef.selectedRowsKey.length = 0;\n modalRef.selectedRowsTotal.length = 0;\n }\n };\n init();\n\n watch(\n () => props.value,\n () => {\n init();\n },\n );\n\n const handleTableChange = (\n { current, pageSize }: Pagination,\n filters: TableFilters,\n sorter: TableColumnSortOrder,\n ) => {\n console.log(sorter);\n setPageInfo({\n current,\n pageSize,\n ...filters,\n ...search_modelRef,\n });\n\n reload();\n };\n\n const { validateInfos: searchValidateInfos } = useForm(search_modelRef, searchConfig.rules);\n\n const search = () => {\n setPageInfo({\n current: 1,\n ...search_modelRef,\n });\n reload();\n };\n\n const openModal = () => {\n modalRef.open = true;\n const remove_ids: Array<number> = modalRef.datasource\n .filter(item => modalRef.selectedRows.indexOf(item.id) == -1)\n .map(item => item.id);\n remove_ids.forEach(item => {\n if (modalRef.selectedRowsKey.indexOf(item) != -1) {\n modalRef.selectedRowsKey.splice(modalRef.selectedRowsKey.indexOf(item), 1);\n }\n });\n\n const remove_total: Array<any> = modalRef.selectedRowsTotal.filter(\n item => modalRef.selectedRows.indexOf(item.id) == -1,\n );\n remove_total.forEach(item => {\n if (modalRef.selectedRowsTotal.indexOf(item) != -1) {\n modalRef.selectedRowsTotal.splice(modalRef.selectedRowsTotal.indexOf(item), 1);\n }\n });\n };\n\n const handleSubmit = (e: Event) => {\n e.preventDefault();\n modalRef.open = false;\n if (modalRef.selectedRows == undefined) {\n modalRef.selectedRows = new Array<number>();\n }\n modalRef.selectedRows.length = 0;\n modalRef.datasource.map(item =>\n modalRef.selectedRows.push(\n item[props.field.valueKey ? (props.field.valueKey as string) : 'id'],\n ),\n );\n // modalRef.datasource.length = 0;\n // modalRef.selectedRowsTotal.map(item => modalRef.datasource.push(item));\n if (props.field.mode == 'default') {\n if (modalRef.selectedRows.length == 1) {\n emit('update:value', modalRef.selectedRows[0]);\n const selectItems: any = datasource.value\n .filter((item: any) => {\n return modalRef.selectedRows == item.value;\n })\n .map((item: any) => item.label);\n emit('update:label', selectItems.length > 0 ? selectItems[0] : '');\n } else {\n emit('update:value', null);\n emit('update:label', '');\n }\n } else {\n emit('update:value', modalRef.selectedRows);\n emit(\n 'update:label',\n datasource.value\n .filter((item: any) => modalRef.selectedRows.includes(item.value))\n .map((item: any) => item.label),\n );\n }\n };\n const handleChange = (value: any) => {\n if (props.field.mode == 'default') {\n if (value == undefined) {\n modalRef.selectedRows = new Array<number>();\n } else {\n modalRef.selectedRows = [value];\n }\n } else {\n modalRef.selectedRows = value;\n }\n emit('update:value', value);\n };\n return {\n props,\n modalRef,\n datasource,\n state,\n loading,\n getDateTime,\n getDate,\n getFullDate,\n getTime,\n search,\n openModal,\n handleSubmit,\n handleChange,\n handleTableChange,\n rowSelection,\n searchValidateInfos,\n search_modelRef,\n searchConfig,\n searchConfigOptions,\n columnState,\n dynamicColumns,\n slotList,\n };\n },\n\n data() {\n return {\n model: this.value,\n };\n },\n});\n</script>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],"mappings":"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"}
|