{"version":3,"sources":["webpack:///./src/views/login/components/login-footer.vue","webpack:///./src/views/login/components/login-footer.vue?bed5","webpack:///./src/views/login/components/login-header.vue?2a09","webpack:///./src/views/login/components/login-footer.vue?111a","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./src/utils/vee-validate-schema.js","webpack:///./src/api/user.js","webpack:///./src/views/login/components/login-header.vue","webpack:///./src/views/login/components/login-header.vue?a89b"],"names":["class","name","render","__scopeId","isCallable","fn","isObject","obj","Array","isArray","RULES","resolveRule","id","isLocator","value","__locatorRef","isHTMLTag","tag","includes","isFileInput","type","isYupValidator","validate","hasCheckedAttr","isIndex","Number","isEmptyContainer","length","Object","keys","isNotNestedPath","path","test","cleanupNonNestedPath","replace","getFromPath","object","split","filter","Boolean","reduce","acc","propKey","setInPath","i","unset","key","splice","unsetPath","pathValues","map","_","idx","slice","join","keysOf","record","injectWithSelf","symbol","def","vm","provides","isEvent","evt","Event","srcElement","normalizeEventValue","input","target","_value","files","from","normalizeRules","rules","defineProperty","writable","enumerable","configurable","_$$isNormalized","prev","curr","params","normalizeParams","buildParams","rule","parsedRule","parseRule","provided","mapValueToLocator","createLocator","locator","crossTable","val","extractLocators","normalizeChildren","context","slotProps","slots","default","DEFAULT_CONFIG","generateMessage","field","bails","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","currentConfig","assign","getConfig","async","options","shouldBail","formData","values","result","_validate","errors","validateFieldWithYup","form","isValid","message","_generateFieldError","_test","error","push","abortEarly","then","catch","err","validator","Error","fillTargetValues","ctx","undefined","fieldCtx","normalize","param","FormSymbol","Symbol","FormErrorsSymbol","FormInitialValues","ID_COUNTER","useField","opts","fid","MAX_SAFE_INTEGER","initialValue","validateOnMount","valueProp","label","validateOnValueUpdate","normalizeOptions","meta","handleBlur","handleInput","resetValidationState","setValidationState","checked","useValidationState","initValue","nonYupSchemaRules","extractRuleFromSchema","schema","normalizedRules","validate$1","_a","pending","validateSchema","handleChange","e","_b","dirty","errorMessage","setTouched","isTouched","touched","setDirty","isDirty","unwatchValue","watchValue","deep","resetField","state","handleReset","register","unregister","dependencies","rulesVal","deps","dep","forEach","defaults","formInitialValues","resetMeta","useMeta","useFieldValue","valid","initialMeta","_c","fieldName","newVal","setFieldValue","Field","inheritAttrs","props","as","String","required","Function","validateField","attrs","modelValue","isDuringValueTick","valueTick","onChangeHandler","emit","onInputHandler","baseOnBlur","onBlur","baseOnInput","onInput","baseOnChange","onChange","makeSlotProps","fieldProps","resolveTag","children","useForm","fields","isSubmitting","fieldsById","firstField","formValues","valuesByFid","group","find","f","initialValues","setInitialValues","useFormInitialValues","useFormMeta","setFieldError","fieldInstance","instance","setErrors","oldVal","indexOf","fieldItem","newValue","setValues","setFieldTouched","setFieldDirty","resetForm","registerField","newPath","flush","unregisterField","valueIdx","call","formCtx","validationSchema","shouldMutate","validateYupSchema","results","every","r","Promise","all","immutableFormValues","handleSubmit","preventDefault","stopPropagation","submitForm","submit","initialErrors","initialDirty","initialTouched","MERGE_STRATEGIES","flags","flag","mergeMethod","inner","errorsByPath","aggregatedResult","fieldId","messages","fieldResult","isGroup","some","providedValues","computedInitials","updateFields","isSafeToUpdate","fieldPath","isFieldDirty","Form","onSubmit","handleFormReset","onReset","handleScopedSlotSubmit","onSuccess","this","formAttrs","novalidate","role","account","accountApi","userAccountCheck","data","password","rePassword","mobile","code","isAgree","userAccountLogin","request","userMobileLoginMsg","userMobileLogin","userQQLogin","unionId","source","userQQBindCode","userQQBindLogin","userQQPatchCode","userQQPatchLogin","to"],"mappings":"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","file":"js/chunk-57e8933b.0fbd9065.js","sourcesContent":["\n\n\n\n\n","import { render } from \"./login-footer.vue?vue&type=template&id=17badf56&scoped=true\"\nimport script from \"./login-footer.vue?vue&type=script&lang=js\"\nexport * from \"./login-footer.vue?vue&type=script&lang=js\"\n\nimport \"./login-footer.vue?vue&type=style&index=0&id=17badf56&scoped=true&lang=less\"\nscript.render = render\nscript.__scopeId = \"data-v-17badf56\"\n\nexport default script","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./login-header.vue?vue&type=style&index=0&id=c5a0b528&scoped=true&lang=less\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./login-footer.vue?vue&type=style&index=0&id=17badf56&scoped=true&lang=less\"","/**\n * vee-validate v4.0.3\n * (c) 2020 Abdelrahman Awad\n * @license MIT\n */\nimport { inject, getCurrentInstance, unref, computed, onMounted, isRef, watch, onBeforeUnmount, watchEffect, ref, reactive, defineComponent, toRef, resolveDynamicComponent, nextTick, h, provide } from 'vue';\n\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nconst isObject = (obj) => obj !== null && !!obj && typeof obj === 'object' && !Array.isArray(obj);\n\nconst RULES = {};\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction defineRule(id, validator) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(id, validator);\r\n RULES[id] = validator;\r\n}\r\n/**\r\n * Gets an already defined rule\r\n */\r\nfunction resolveRule(id) {\r\n return RULES[id];\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(id, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n throw new Error(`Extension Error: The validator '${id}' must be a function.`);\r\n}\n\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\r\n/**\r\n * Checks if an tag name is a native HTML tag and not a Vue component\r\n */\r\nfunction isHTMLTag(tag) {\r\n return ['input', 'textarea', 'select'].includes(tag);\r\n}\r\n/**\r\n * Checks if an input is of type file\r\n */\r\nfunction isFileInput(tag, type) {\r\n return isHTMLTag(tag) && type === 'file';\r\n}\r\nfunction isYupValidator(value) {\r\n return !!value && isCallable(value.validate);\r\n}\r\nfunction hasCheckedAttr(type) {\r\n return type === 'checkbox' || type === 'radio';\r\n}\r\nfunction isIndex(value) {\r\n return Number(value) >= 0;\r\n}\r\n/**\r\n * True if the value is an empty object or array\r\n */\r\nfunction isEmptyContainer(value) {\r\n if (Array.isArray(value)) {\r\n return value.length === 0;\r\n }\r\n return isObject(value) && Object.keys(value).length === 0;\r\n}\r\n/**\r\n * Checks if the path opted out of nested fields using `[fieldName]` syntax\r\n */\r\nfunction isNotNestedPath(path) {\r\n return /^\\[.+\\]$/i.test(path);\r\n}\n\nfunction cleanupNonNestedPath(path) {\r\n if (isNotNestedPath(path)) {\r\n return path.replace(/\\[|\\]/gi, '');\r\n }\r\n return path;\r\n}\r\n/**\r\n * Gets a nested property value from an object\r\n */\r\nfunction getFromPath(object, path) {\r\n if (!object) {\r\n return undefined;\r\n }\r\n if (isNotNestedPath(path)) {\r\n return object[cleanupNonNestedPath(path)];\r\n }\r\n return path\r\n .split(/\\.|\\[(\\d+)\\]/)\r\n .filter(Boolean)\r\n .reduce((acc, propKey) => {\r\n if (acc && propKey in acc) {\r\n return acc[propKey];\r\n }\r\n return undefined;\r\n }, object);\r\n}\r\n/**\r\n * Sets a nested property value in a path, creates the path properties if it doesn't exist\r\n */\r\nfunction setInPath(object, path, value) {\r\n if (isNotNestedPath(path)) {\r\n object[cleanupNonNestedPath(path)] = value;\r\n return;\r\n }\r\n const keys = path.split(/\\.|\\[(\\d+)\\]/).filter(Boolean);\r\n let acc = object;\r\n for (let i = 0; i < keys.length; i++) {\r\n // Last key, set it\r\n if (i === keys.length - 1) {\r\n acc[keys[i]] = value;\r\n return;\r\n }\r\n // Key does not exist, create a container for it\r\n if (!(keys[i] in acc)) {\r\n // container can be either an object or an array depending on the next key if it exists\r\n acc[keys[i]] = isIndex(keys[i + 1]) ? [] : {};\r\n }\r\n acc = acc[keys[i]];\r\n }\r\n}\r\nfunction unset(object, key) {\r\n if (Array.isArray(object) && isIndex(key)) {\r\n object.splice(Number(key), 1);\r\n return;\r\n }\r\n delete object[key];\r\n}\r\n/**\r\n * Removes a nested property from object\r\n */\r\nfunction unsetPath(object, path) {\r\n if (isNotNestedPath(path)) {\r\n delete object[cleanupNonNestedPath(path)];\r\n return;\r\n }\r\n const keys = path.split(/\\.|\\[(\\d+)\\]/).filter(Boolean);\r\n let acc = object;\r\n for (let i = 0; i < keys.length; i++) {\r\n // Last key, unset it\r\n if (i === keys.length - 1) {\r\n unset(acc, keys[i]);\r\n break;\r\n }\r\n // Key does not exist, exit\r\n if (!(keys[i] in acc)) {\r\n break;\r\n }\r\n acc = acc[keys[i]];\r\n }\r\n const pathValues = keys.map((_, idx) => {\r\n return getFromPath(object, keys.slice(0, idx).join('.'));\r\n });\r\n for (let i = pathValues.length - 1; i >= 0; i--) {\r\n if (!isEmptyContainer(pathValues[i])) {\r\n continue;\r\n }\r\n if (i === 0) {\r\n unset(object, keys[0]);\r\n continue;\r\n }\r\n unset(pathValues[i - 1], keys[i - 1]);\r\n }\r\n}\r\n/**\r\n * A typed version of Object.keys\r\n */\r\nfunction keysOf(record) {\r\n return Object.keys(record);\r\n}\r\n// Uses same component provide as its own injections\r\n// Due to changes in https://github.com/vuejs/vue-next/pull/2424\r\nfunction injectWithSelf(symbol, def = undefined) {\r\n const vm = getCurrentInstance();\r\n return inject(symbol, (vm === null || vm === void 0 ? void 0 : vm.provides[symbol]) || def);\r\n}\n\nconst isEvent = (evt) => {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n const input = value.target;\r\n // Vue sets the current bound value on `_value` prop\r\n // for checkboxes it it should fetch the value binding type as is (boolean instead of string)\r\n if (hasCheckedAttr(input.type) && '_value' in input) {\r\n return input._value;\r\n }\r\n if (input.type === 'file' && input.files) {\r\n return Array.from(input.files);\r\n }\r\n return input.value;\r\n}\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n const acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false,\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // If its a single validate function or a yup fn, leave as is.\r\n if (isCallable(rules) || isYupValidator(rules)) {\r\n return rules;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce((prev, curr) => {\r\n const params = normalizeParams(rules[curr]);\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n return acc;\r\n }\r\n return rules.split('|').reduce((prev, rule) => {\r\n const parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\n/**\r\n * Normalizes a rule param.\r\n */\r\nfunction normalizeParams(params) {\r\n if (params === true) {\r\n return [];\r\n }\r\n if (Array.isArray(params)) {\r\n return params;\r\n }\r\n if (isObject(params)) {\r\n return params;\r\n }\r\n return [params];\r\n}\r\nfunction buildParams(provided) {\r\n const mapValueToLocator = (value) => {\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n return createLocator(value.slice(1));\r\n }\r\n return value;\r\n };\r\n if (Array.isArray(provided)) {\r\n return provided.map(mapValueToLocator);\r\n }\r\n return Object.keys(provided).reduce((prev, key) => {\r\n prev[key] = mapValueToLocator(provided[key]);\r\n return prev;\r\n }, {});\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nconst parseRule = (rule) => {\r\n let params = [];\r\n const name = rule.split(':')[0];\r\n if (rule.includes(':')) {\r\n params = rule.split(':').slice(1).join(':').split(',');\r\n }\r\n return { name, params };\r\n};\r\nfunction createLocator(value) {\r\n const locator = (crossTable) => {\r\n const val = crossTable[value];\r\n return val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(isLocator);\r\n }\r\n return Object.keys(params)\r\n .filter(key => isLocator(params[key]))\r\n .map(key => params[key]);\r\n}\n\nconst normalizeChildren = (context, slotProps) => {\r\n if (!context.slots.default) {\r\n return context.slots.default;\r\n }\r\n return context.slots.default(slotProps);\r\n};\n\nconst DEFAULT_CONFIG = {\r\n generateMessage: ({ field }) => `${field} is not valid.`,\r\n bails: true,\r\n validateOnBlur: true,\r\n validateOnChange: true,\r\n validateOnInput: false,\r\n validateOnModelUpdate: true,\r\n};\r\nlet currentConfig = Object.assign({}, DEFAULT_CONFIG);\r\nconst getConfig = () => currentConfig;\r\nconst setConfig = (newConf) => {\r\n currentConfig = Object.assign(Object.assign({}, currentConfig), newConf);\r\n};\r\nconst configure = setConfig;\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nasync function validate(value, rules, options = {}) {\r\n const shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n const field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n formData: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n };\r\n const result = await _validate(field, value);\r\n const errors = result.errors;\r\n return {\r\n errors,\r\n };\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nasync function _validate(field, value) {\r\n if (isYupValidator(field.rules)) {\r\n return validateFieldWithYup(field, value);\r\n }\r\n // if a generic function, use it as the pipeline.\r\n if (isCallable(field.rules)) {\r\n const result = await field.rules(value, {\r\n field: field.name,\r\n form: field.formData,\r\n });\r\n const isValid = typeof result !== 'string' && result;\r\n const message = typeof result === 'string'\r\n ? result\r\n : _generateFieldError({\r\n field: field.name,\r\n value,\r\n form: field.formData,\r\n });\r\n return {\r\n errors: !isValid ? [message] : [],\r\n };\r\n }\r\n const errors = [];\r\n const rules = Object.keys(field.rules);\r\n const length = rules.length;\r\n for (let i = 0; i < length; i++) {\r\n const rule = rules[i];\r\n const result = await _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule],\r\n });\r\n if (result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return {\r\n errors,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n errors,\r\n };\r\n}\r\n/**\r\n * Handles yup validation\r\n */\r\nasync function validateFieldWithYup(field, value) {\r\n const errors = await field.rules\r\n .validate(value, {\r\n abortEarly: field.bails,\r\n })\r\n .then(() => [])\r\n .catch((err) => {\r\n // Yup errors have a name prop one them.\r\n // https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\r\n if (err.name === 'ValidationError') {\r\n return err.errors;\r\n }\r\n // re-throw the error so we don't hide it\r\n throw err;\r\n });\r\n return {\r\n errors,\r\n };\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nasync function _test(field, value, rule) {\r\n const validator = resolveRule(rule.name);\r\n if (!validator) {\r\n throw new Error(`No such validator '${rule.name}' exists.`);\r\n }\r\n const params = fillTargetValues(rule.params, field.formData);\r\n const ctx = {\r\n field: field.name,\r\n value,\r\n form: field.formData,\r\n rule,\r\n };\r\n const result = await validator(value, params, ctx);\r\n if (typeof result === 'string') {\r\n return {\r\n error: result,\r\n };\r\n }\r\n return {\r\n error: result ? undefined : _generateFieldError(ctx),\r\n };\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(fieldCtx) {\r\n const message = getConfig().generateMessage;\r\n if (!message) {\r\n return 'Field is invalid';\r\n }\r\n return message(fieldCtx);\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n const normalize = (value) => {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n if (Array.isArray(params)) {\r\n return params.map(normalize);\r\n }\r\n return Object.keys(params).reduce((acc, param) => {\r\n acc[param] = normalize(params[param]);\r\n return acc;\r\n }, {});\r\n}\n\nconst FormSymbol = Symbol('vee-validate-form');\r\nconst FormErrorsSymbol = Symbol('vee-validate-form-errors');\r\nconst FormInitialValues = Symbol('vee-validate-form-initial-values');\n\nlet ID_COUNTER = 0;\r\n/**\r\n * Creates a field composite.\r\n */\r\nfunction useField(name, rules, opts) {\r\n const fid = ID_COUNTER >= Number.MAX_SAFE_INTEGER ? 0 : ++ID_COUNTER;\r\n const { initialValue, validateOnMount, bails, type, valueProp, label, validateOnValueUpdate } = normalizeOptions(unref(name), opts);\r\n const form = injectWithSelf(FormSymbol);\r\n const { meta, errors, handleBlur, handleInput, resetValidationState, setValidationState, value, checked, } = useValidationState({\r\n name,\r\n // make sure to unref initial value because of possible refs passed in\r\n initValue: unref(initialValue),\r\n form,\r\n type,\r\n valueProp,\r\n });\r\n const nonYupSchemaRules = extractRuleFromSchema(form === null || form === void 0 ? void 0 : form.schema, unref(name));\r\n const normalizedRules = computed(() => {\r\n return normalizeRules(nonYupSchemaRules || unref(rules));\r\n });\r\n const validate$1 = async () => {\r\n var _a;\r\n meta.pending = true;\r\n let result;\r\n if (!form || !form.validateSchema) {\r\n result = await validate(value.value, normalizedRules.value, {\r\n name: unref(label) || unref(name),\r\n values: (_a = form === null || form === void 0 ? void 0 : form.values) !== null && _a !== void 0 ? _a : {},\r\n bails,\r\n });\r\n }\r\n else {\r\n result = (await form.validateSchema())[unref(name)];\r\n }\r\n meta.pending = false;\r\n return setValidationState(result);\r\n };\r\n // Common input/change event handler\r\n const handleChange = (e) => {\r\n var _a, _b;\r\n if (checked && checked.value === ((_b = (_a = e) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.checked)) {\r\n return;\r\n }\r\n value.value = normalizeEventValue(e);\r\n meta.dirty = true;\r\n if (!validateOnValueUpdate) {\r\n return validate$1();\r\n }\r\n };\r\n if (validateOnMount) {\r\n onMounted(validate$1);\r\n }\r\n const errorMessage = computed(() => {\r\n return errors.value[0];\r\n });\r\n function setTouched(isTouched) {\r\n meta.touched = isTouched;\r\n }\r\n function setDirty(isDirty) {\r\n meta.dirty = isDirty;\r\n }\r\n let unwatchValue;\r\n function watchValue() {\r\n if (validateOnValueUpdate) {\r\n unwatchValue = watch(value, validate$1, {\r\n deep: true,\r\n });\r\n }\r\n }\r\n watchValue();\r\n function resetField(state) {\r\n unwatchValue === null || unwatchValue === void 0 ? void 0 : unwatchValue();\r\n resetValidationState(state);\r\n watchValue();\r\n }\r\n const field = {\r\n fid,\r\n name,\r\n value: value,\r\n meta,\r\n errors,\r\n errorMessage,\r\n type,\r\n valueProp,\r\n checked,\r\n idx: -1,\r\n resetField,\r\n handleReset: () => resetField(),\r\n validate: validate$1,\r\n handleChange,\r\n handleBlur,\r\n handleInput,\r\n setValidationState,\r\n setTouched,\r\n setDirty,\r\n };\r\n if (isRef(rules) && typeof unref(rules) !== 'function') {\r\n watch(rules, validate$1, {\r\n deep: true,\r\n });\r\n }\r\n // if no associated form return the field API immediately\r\n if (!form) {\r\n return field;\r\n }\r\n // associate the field with the given form\r\n form.register(field);\r\n onBeforeUnmount(() => {\r\n form.unregister(field);\r\n });\r\n // extract cross-field dependencies in a computed prop\r\n const dependencies = computed(() => {\r\n const rulesVal = normalizedRules.value;\r\n // is falsy, a function schema or a yup schema\r\n if (!rulesVal || isCallable(rulesVal) || isCallable(rulesVal.validate)) {\r\n return [];\r\n }\r\n return Object.keys(rulesVal).reduce((acc, rule) => {\r\n const deps = extractLocators(normalizedRules.value[rule]).map((dep) => dep.__locatorRef);\r\n acc.push(...deps);\r\n return acc;\r\n }, []);\r\n });\r\n // Adds a watcher that runs the validation whenever field dependencies change\r\n watchEffect(() => {\r\n // Skip if no dependencies\r\n if (!dependencies.value.length) {\r\n return;\r\n }\r\n // For each dependent field, validate it if it was validated before\r\n dependencies.value.forEach(dep => {\r\n if (dep in form.values && meta.dirty) {\r\n return validate$1();\r\n }\r\n });\r\n });\r\n return field;\r\n}\r\n/**\r\n * Normalizes partial field options to include the full\r\n */\r\nfunction normalizeOptions(name, opts) {\r\n const defaults = () => ({\r\n initialValue: undefined,\r\n validateOnMount: false,\r\n bails: true,\r\n rules: '',\r\n label: name,\r\n validateOnValueUpdate: true,\r\n });\r\n if (!opts) {\r\n return defaults();\r\n }\r\n return Object.assign(Object.assign({}, defaults()), (opts || {}));\r\n}\r\n/**\r\n * Manages the validation state of a field.\r\n */\r\nfunction useValidationState({ name, initValue, form, type, valueProp, }) {\r\n var _a;\r\n const errors = ref([]);\r\n const formInitialValues = injectWithSelf(FormInitialValues, undefined);\r\n const initialValue = (_a = getFromPath(unref(formInitialValues), unref(name))) !== null && _a !== void 0 ? _a : initValue;\r\n const { resetMeta, meta } = useMeta(initialValue);\r\n const value = useFieldValue(initialValue, name, form);\r\n if (hasCheckedAttr(type) && initialValue) {\r\n value.value = initialValue;\r\n }\r\n const checked = hasCheckedAttr(type)\r\n ? computed(() => {\r\n if (Array.isArray(value.value)) {\r\n return value.value.includes(unref(valueProp));\r\n }\r\n return unref(valueProp) === value.value;\r\n })\r\n : undefined;\r\n if (checked === undefined || checked.value) {\r\n // Set the value without triggering the watcher\r\n value.value = initialValue;\r\n }\r\n /**\r\n * Handles common onBlur meta update\r\n */\r\n const handleBlur = () => {\r\n meta.touched = true;\r\n };\r\n /**\r\n * Handles common on blur events\r\n */\r\n const handleInput = (e) => {\r\n // Checkboxes/Radio will emit a `change` event anyway, custom components will use `update:modelValue`\r\n // so this is redundant\r\n if (!hasCheckedAttr(type)) {\r\n value.value = normalizeEventValue(e);\r\n }\r\n meta.dirty = true;\r\n };\r\n // Updates the validation state with the validation result\r\n function setValidationState(result) {\r\n errors.value = result.errors;\r\n meta.valid = !result.errors.length;\r\n return result;\r\n }\r\n // Resets the validation state\r\n function resetValidationState(state) {\r\n var _a;\r\n value.value =\r\n state && 'value' in state ? state.value : (_a = getFromPath(unref(formInitialValues), unref(name))) !== null && _a !== void 0 ? _a : initValue;\r\n errors.value = (state === null || state === void 0 ? void 0 : state.errors) || [];\r\n resetMeta(state);\r\n }\r\n return {\r\n meta,\r\n errors,\r\n setValidationState,\r\n resetValidationState,\r\n handleBlur,\r\n handleInput,\r\n value,\r\n checked,\r\n };\r\n}\r\n/**\r\n * Exposes meta flags state and some associated actions with them.\r\n */\r\nfunction useMeta(initialValue) {\r\n const initialMeta = () => ({\r\n touched: false,\r\n dirty: false,\r\n valid: false,\r\n pending: false,\r\n initialValue,\r\n });\r\n const meta = reactive(initialMeta());\r\n /**\r\n * Resets the flag state\r\n */\r\n function resetMeta(state) {\r\n var _a, _b, _c;\r\n const defaults = initialMeta();\r\n meta.pending = defaults.pending;\r\n meta.touched = (_a = state === null || state === void 0 ? void 0 : state.touched) !== null && _a !== void 0 ? _a : defaults.touched;\r\n meta.dirty = (_b = state === null || state === void 0 ? void 0 : state.dirty) !== null && _b !== void 0 ? _b : defaults.dirty;\r\n meta.initialValue = (_c = state === null || state === void 0 ? void 0 : state.value) !== null && _c !== void 0 ? _c : defaults.initialValue;\r\n }\r\n return {\r\n meta,\r\n resetMeta,\r\n };\r\n}\r\n/**\r\n * Extracts the validation rules from a schema\r\n */\r\nfunction extractRuleFromSchema(schema, fieldName) {\r\n // no schema at all\r\n if (!schema) {\r\n return undefined;\r\n }\r\n // there is a key on the schema object for this field\r\n return schema[fieldName];\r\n}\r\n/**\r\n * Manages the field value\r\n */\r\nfunction useFieldValue(initialValue, path, form) {\r\n // if no form is associated, use a regular ref.\r\n if (!form) {\r\n return ref(initialValue);\r\n }\r\n // set initial value\r\n setInPath(form.values, unref(path), initialValue);\r\n // otherwise use a computed setter that triggers the `setFieldValue`\r\n const value = computed({\r\n get() {\r\n return getFromPath(form.values, unref(path));\r\n },\r\n set(newVal) {\r\n form.setFieldValue(unref(path), newVal);\r\n },\r\n });\r\n return value;\r\n}\n\nconst Field = defineComponent({\r\n name: 'Field',\r\n inheritAttrs: false,\r\n props: {\r\n as: {\r\n type: [String, Object],\r\n default: undefined,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n rules: {\r\n type: [Object, String, Function],\r\n default: null,\r\n },\r\n validateOnMount: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: () => getConfig().bails,\r\n },\r\n label: {\r\n type: String,\r\n default: undefined,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const rules = toRef(props, 'rules');\r\n const name = toRef(props, 'name');\r\n const label = toRef(props, 'label');\r\n const { errors, value, errorMessage, validate: validateField, handleChange, handleBlur, handleInput, setDirty, setTouched, resetField, handleReset, meta, checked, } = useField(name, rules, {\r\n validateOnMount: props.validateOnMount,\r\n bails: props.bails,\r\n type: ctx.attrs.type,\r\n // Gets the initial value either from `value` prop/attr or `v-model` binding (modelValue)\r\n // For checkboxes and radio buttons it will always be the model value not the `value` attribute\r\n initialValue: hasCheckedAttr(ctx.attrs.type)\r\n ? ctx.attrs.modelValue\r\n : 'modelValue' in ctx.attrs\r\n ? ctx.attrs.modelValue\r\n : ctx.attrs.value,\r\n // Only for checkboxes and radio buttons\r\n valueProp: ctx.attrs.value,\r\n label,\r\n validateOnValueUpdate: false,\r\n });\r\n let isDuringValueTick = false;\r\n // Prevents re-render updates that rests value when using v-model (#2941)\r\n function valueTick() {\r\n isDuringValueTick = true;\r\n nextTick(() => {\r\n isDuringValueTick = false;\r\n });\r\n }\r\n // If there is a v-model applied on the component we need to emit the `update:modelValue` whenever the value binding changes\r\n const onChangeHandler = 'modelValue' in ctx.attrs\r\n ? function handleChangeWithModel(e) {\r\n handleChange(e);\r\n ctx.emit('update:modelValue', value.value);\r\n }\r\n : handleChange;\r\n const onInputHandler = 'modelValue' in ctx.attrs\r\n ? function handleChangeWithModel(e) {\r\n handleInput(e);\r\n ctx.emit('update:modelValue', value.value);\r\n }\r\n : handleInput;\r\n const { validateOnInput, validateOnChange, validateOnBlur, validateOnModelUpdate } = getConfig();\r\n const baseOnBlur = [handleBlur, ctx.attrs.onBlur, validateOnBlur ? validateField : undefined].filter(Boolean);\r\n const baseOnInput = [\r\n onInputHandler,\r\n valueTick,\r\n validateOnInput ? onChangeHandler : undefined,\r\n ctx.attrs.onInput,\r\n ].filter(Boolean);\r\n const baseOnChange = [\r\n onInputHandler,\r\n valueTick,\r\n validateOnChange ? onChangeHandler : undefined,\r\n ctx.attrs.onChange,\r\n ].filter(Boolean);\r\n const makeSlotProps = () => {\r\n const fieldProps = {\r\n name: props.name,\r\n onBlur: baseOnBlur,\r\n onInput: baseOnInput,\r\n onChange: baseOnChange,\r\n };\r\n if (validateOnModelUpdate) {\r\n fieldProps['onUpdate:modelValue'] = [onChangeHandler, valueTick];\r\n }\r\n if (hasCheckedAttr(ctx.attrs.type) && checked) {\r\n fieldProps.checked = checked.value;\r\n }\r\n else {\r\n fieldProps.value = value.value;\r\n }\r\n if (isFileInput(resolveTag(props, ctx), ctx.attrs.type)) {\r\n delete fieldProps.value;\r\n }\r\n return {\r\n field: fieldProps,\r\n meta,\r\n errors: errors.value,\r\n errorMessage: errorMessage.value,\r\n validate: validateField,\r\n resetField,\r\n handleChange: onChangeHandler,\r\n handleInput: onInputHandler,\r\n handleReset,\r\n handleBlur,\r\n setDirty,\r\n setTouched,\r\n };\r\n };\r\n return () => {\r\n const tag = resolveDynamicComponent(resolveTag(props, ctx));\r\n const slotProps = makeSlotProps();\r\n // Sync the model value with the inner field value if they mismatch\r\n // a simple string comparison is used here\r\n // make sure to check if the re-render isn't caused by a value update tick\r\n if ('modelValue' in ctx.attrs && String(ctx.attrs.modelValue) !== String(value.value) && !isDuringValueTick) {\r\n nextTick(() => {\r\n handleChange(ctx.attrs.modelValue);\r\n });\r\n }\r\n const children = normalizeChildren(ctx, slotProps);\r\n if (tag) {\r\n return h(tag, Object.assign(Object.assign({}, ctx.attrs), slotProps.field), children);\r\n }\r\n return children;\r\n };\r\n },\r\n});\r\nfunction resolveTag(props, ctx) {\r\n let tag = props.as || '';\r\n if (!props.as && !ctx.slots.default) {\r\n tag = 'input';\r\n }\r\n return tag;\r\n}\n\nfunction useForm(opts) {\r\n // A flat array containing field references\r\n const fields = ref([]);\r\n // If the form is currently submitting\r\n const isSubmitting = ref(false);\r\n // a field map object useful for faster access of fields\r\n const fieldsById = computed(() => {\r\n return fields.value.reduce((acc, field) => {\r\n // if the field was not added before\r\n if (!acc[field.name]) {\r\n acc[field.name] = field;\r\n field.idx = -1;\r\n return acc;\r\n }\r\n // if the same name is detected\r\n if (!Array.isArray(acc[field.name])) {\r\n const firstField = acc[field.name];\r\n firstField.idx = 0;\r\n acc[field.name] = [firstField];\r\n }\r\n field.idx = acc[field.name].length;\r\n acc[field.name].push(field);\r\n return acc;\r\n }, {});\r\n });\r\n // a private ref for all form values\r\n const formValues = reactive({});\r\n // a lookup to keep track of values by their field ids\r\n // this is important because later we need it if fields swap names\r\n const valuesByFid = {};\r\n // an aggregation of field errors in a map object\r\n const errors = computed(() => {\r\n return fields.value.reduce((acc, field) => {\r\n // Check if its a grouped field (checkbox/radio)\r\n let message;\r\n if (Array.isArray(fieldsById.value[field.name])) {\r\n const group = fieldsById.value[field.name];\r\n message = unref((group.find((f) => unref(f.checked)) || field).errorMessage);\r\n }\r\n else {\r\n message = unref(field.errorMessage);\r\n }\r\n if (message) {\r\n acc[field.name] = message;\r\n }\r\n return acc;\r\n }, {});\r\n });\r\n // initial form values\r\n const { initialValues, setInitialValues } = useFormInitialValues(fieldsById, formValues, opts === null || opts === void 0 ? void 0 : opts.initialValues);\r\n // form meta aggregations\r\n const meta = useFormMeta(fields, initialValues);\r\n /**\r\n * Manually sets an error message on a specific field\r\n */\r\n function setFieldError(field, message) {\r\n const fieldInstance = fieldsById.value[field];\r\n if (!fieldInstance) {\r\n return;\r\n }\r\n if (Array.isArray(fieldInstance)) {\r\n fieldInstance.forEach(instance => {\r\n instance.setValidationState({ errors: message ? [message] : [] });\r\n });\r\n return;\r\n }\r\n fieldInstance.setValidationState({ errors: message ? [message] : [] });\r\n }\r\n /**\r\n * Sets errors for the fields specified in the object\r\n */\r\n function setErrors(fields) {\r\n keysOf(fields).forEach(field => {\r\n setFieldError(field, fields[field]);\r\n });\r\n }\r\n /**\r\n * Sets a single field value\r\n */\r\n function setFieldValue(field, value) {\r\n var _a;\r\n const fieldInstance = fieldsById.value[field];\r\n // Multiple checkboxes, and only one of them got updated\r\n if (Array.isArray(fieldInstance) && ((_a = fieldInstance[0]) === null || _a === void 0 ? void 0 : _a.type) === 'checkbox' && !Array.isArray(value)) {\r\n const oldVal = getFromPath(formValues, field);\r\n const newVal = Array.isArray(oldVal) ? [...oldVal] : [];\r\n const idx = newVal.indexOf(value);\r\n idx >= 0 ? newVal.splice(idx, 1) : newVal.push(value);\r\n setInPath(formValues, field, newVal);\r\n fieldInstance.forEach(fieldItem => {\r\n valuesByFid[fieldItem.fid] = newVal;\r\n });\r\n return;\r\n }\r\n let newValue = value;\r\n // Single Checkbox\r\n if ((fieldInstance === null || fieldInstance === void 0 ? void 0 : fieldInstance.type) === 'checkbox') {\r\n newValue = getFromPath(formValues, field) === value ? undefined : value;\r\n }\r\n setInPath(formValues, field, newValue);\r\n if (fieldInstance) {\r\n valuesByFid[fieldInstance.fid] = newValue;\r\n }\r\n }\r\n /**\r\n * Sets multiple fields values\r\n */\r\n function setValues(fields) {\r\n keysOf(fields).forEach(field => {\r\n setFieldValue(field, fields[field]);\r\n });\r\n }\r\n /**\r\n * Sets the touched meta state on a field\r\n */\r\n function setFieldTouched(field, isTouched) {\r\n const fieldInstance = fieldsById.value[field];\r\n if (!fieldInstance) {\r\n return;\r\n }\r\n if (Array.isArray(fieldInstance)) {\r\n fieldInstance.forEach(f => f.setTouched(isTouched));\r\n return;\r\n }\r\n fieldInstance.setTouched(isTouched);\r\n }\r\n /**\r\n * Sets the touched meta state on multiple fields\r\n */\r\n function setTouched(fields) {\r\n keysOf(fields).forEach(field => {\r\n setFieldTouched(field, !!fields[field]);\r\n });\r\n }\r\n /**\r\n * Sets the dirty meta state on a field\r\n */\r\n function setFieldDirty(field, isDirty) {\r\n const fieldInstance = fieldsById.value[field];\r\n if (!fieldInstance) {\r\n return;\r\n }\r\n if (Array.isArray(fieldInstance)) {\r\n fieldInstance.forEach(f => f.setDirty(isDirty));\r\n return;\r\n }\r\n fieldInstance.setDirty(isDirty);\r\n }\r\n /**\r\n * Sets the dirty meta state on multiple fields\r\n */\r\n function setDirty(fields) {\r\n keysOf(fields).forEach(field => {\r\n setFieldDirty(field, !!fields[field]);\r\n });\r\n }\r\n /**\r\n * Resets all fields\r\n */\r\n const resetForm = (state) => {\r\n // set initial values if provided\r\n if (state === null || state === void 0 ? void 0 : state.values) {\r\n setInitialValues(state.values);\r\n }\r\n // Reset all fields state\r\n fields.value.forEach((f) => f.resetField());\r\n // set explicit state afterwards\r\n if (state === null || state === void 0 ? void 0 : state.dirty) {\r\n setDirty(state.dirty);\r\n }\r\n if (state === null || state === void 0 ? void 0 : state.touched) {\r\n setTouched(state.touched);\r\n }\r\n if (state === null || state === void 0 ? void 0 : state.errors) {\r\n setErrors(state.errors);\r\n }\r\n };\r\n function registerField(field) {\r\n fields.value.push(field);\r\n if (isRef(field.name)) {\r\n // ensures when a field's name was already taken that it preserves its same value\r\n // necessary for fields generated by loops\r\n watch(field.name, newPath => {\r\n setFieldValue(newPath, valuesByFid[field.fid]);\r\n }, {\r\n flush: 'post',\r\n });\r\n }\r\n }\r\n function unregisterField(field) {\r\n var _a, _b;\r\n const idx = fields.value.indexOf(field);\r\n if (idx === -1) {\r\n return;\r\n }\r\n fields.value.splice(idx, 1);\r\n const fid = field.fid;\r\n // cleans up the field value from fid lookup\r\n nextTick(() => {\r\n delete valuesByFid[fid];\r\n });\r\n const fieldName = unref(field.name);\r\n // in this case, this is a single field not a group (checkbox or radio)\r\n // so remove the field value key immediately\r\n if (field.idx === -1) {\r\n unsetPath(formValues, fieldName);\r\n return;\r\n }\r\n // otherwise find the actual value in the current array of values and remove it\r\n const valueIdx = (_b = (_a = getFromPath(formValues, fieldName)) === null || _a === void 0 ? void 0 : _a.indexOf) === null || _b === void 0 ? void 0 : _b.call(_a, unref(field.valueProp));\r\n if (valueIdx === undefined) {\r\n unsetPath(formValues, fieldName);\r\n return;\r\n }\r\n if (valueIdx === -1) {\r\n return;\r\n }\r\n if (Array.isArray(formValues[fieldName])) {\r\n unsetPath(formValues, `${fieldName}.${valueIdx}`);\r\n return;\r\n }\r\n unsetPath(formValues, fieldName);\r\n }\r\n const formCtx = {\r\n register: registerField,\r\n unregister: unregisterField,\r\n fields: fieldsById,\r\n values: formValues,\r\n schema: opts === null || opts === void 0 ? void 0 : opts.validationSchema,\r\n validateSchema: isYupValidator(opts === null || opts === void 0 ? void 0 : opts.validationSchema)\r\n ? (shouldMutate = false) => {\r\n return validateYupSchema(formCtx, shouldMutate);\r\n }\r\n : undefined,\r\n setFieldValue,\r\n setValues,\r\n setErrors,\r\n setFieldError,\r\n setFieldTouched,\r\n setTouched,\r\n setFieldDirty,\r\n setDirty,\r\n resetForm,\r\n };\r\n const validate = async () => {\r\n if (formCtx.validateSchema) {\r\n return formCtx.validateSchema(true).then(results => {\r\n return Object.keys(results).every(r => !results[r].errors.length);\r\n });\r\n }\r\n const results = await Promise.all(fields.value.map((f) => {\r\n return f.validate();\r\n }));\r\n return results.every(r => !r.errors.length);\r\n };\r\n const immutableFormValues = computed(() => {\r\n return fields.value.reduce((formData, field) => {\r\n setInPath(formData, field.name, unref(field.value));\r\n return formData;\r\n }, {});\r\n });\r\n const handleSubmit = (fn) => {\r\n return function submissionHandler(e) {\r\n if (e instanceof Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n isSubmitting.value = true;\r\n return validate()\r\n .then(result => {\r\n if (result && typeof fn === 'function') {\r\n return fn(immutableFormValues.value, {\r\n evt: e,\r\n setDirty,\r\n setFieldDirty,\r\n setErrors,\r\n setFieldError,\r\n setTouched,\r\n setFieldTouched,\r\n setValues,\r\n setFieldValue,\r\n resetForm,\r\n });\r\n }\r\n })\r\n .then(() => {\r\n isSubmitting.value = false;\r\n }, err => {\r\n isSubmitting.value = false;\r\n // re-throw the err so it doesn't go silent\r\n throw err;\r\n });\r\n };\r\n };\r\n const submitForm = handleSubmit((_, { evt }) => {\r\n var _a;\r\n if (evt) {\r\n (_a = evt === null || evt === void 0 ? void 0 : evt.target) === null || _a === void 0 ? void 0 : _a.submit();\r\n }\r\n });\r\n // Trigger initial validation\r\n onMounted(() => {\r\n if (opts === null || opts === void 0 ? void 0 : opts.initialErrors) {\r\n setErrors(opts.initialErrors);\r\n }\r\n if (opts === null || opts === void 0 ? void 0 : opts.initialDirty) {\r\n setDirty(opts.initialDirty);\r\n }\r\n if (opts === null || opts === void 0 ? void 0 : opts.initialTouched) {\r\n setTouched(opts.initialTouched);\r\n }\r\n if (opts === null || opts === void 0 ? void 0 : opts.validateOnMount) {\r\n validate();\r\n }\r\n });\r\n // Provide injections\r\n provide(FormSymbol, formCtx);\r\n provide(FormErrorsSymbol, errors);\r\n return {\r\n errors,\r\n meta,\r\n values: formValues,\r\n validate,\r\n isSubmitting,\r\n handleReset: () => resetForm(),\r\n resetForm,\r\n handleSubmit,\r\n submitForm,\r\n setFieldError,\r\n setErrors,\r\n setFieldValue,\r\n setValues,\r\n setFieldTouched,\r\n setTouched,\r\n setFieldDirty,\r\n setDirty,\r\n };\r\n}\r\n/**\r\n * Manages form meta aggregation\r\n */\r\nfunction useFormMeta(fields, initialValues) {\r\n const MERGE_STRATEGIES = {\r\n valid: 'every',\r\n dirty: 'some',\r\n touched: 'some',\r\n pending: 'some',\r\n };\r\n return computed(() => {\r\n const flags = keysOf(MERGE_STRATEGIES).reduce((acc, flag) => {\r\n const mergeMethod = MERGE_STRATEGIES[flag];\r\n acc[flag] = fields.value[mergeMethod](field => field.meta[flag]);\r\n return acc;\r\n }, {});\r\n return Object.assign({ initialValues: unref(initialValues) }, flags);\r\n });\r\n}\r\nasync function validateYupSchema(form, shouldMutate = false) {\r\n const errors = await form.schema\r\n .validate(form.values, { abortEarly: false })\r\n .then(() => [])\r\n .catch((err) => {\r\n // Yup errors have a name prop one them.\r\n // https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\r\n if (err.name !== 'ValidationError') {\r\n throw err;\r\n }\r\n // list of aggregated errors\r\n return err.inner || [];\r\n });\r\n const fields = form.fields.value;\r\n const errorsByPath = errors.reduce((acc, err) => {\r\n acc[err.path] = err;\r\n return acc;\r\n }, {});\r\n // Aggregates the validation result\r\n const aggregatedResult = keysOf(fields).reduce((result, fieldId) => {\r\n const field = fields[fieldId];\r\n const messages = (errorsByPath[fieldId] || { errors: [] }).errors;\r\n const fieldResult = {\r\n errors: messages,\r\n };\r\n result[fieldId] = fieldResult;\r\n const isGroup = Array.isArray(field);\r\n const isDirty = isGroup ? field.some((f) => f.meta.dirty) : field.meta.dirty;\r\n if (!shouldMutate && !isDirty) {\r\n return result;\r\n }\r\n if (isGroup) {\r\n field.forEach((f) => f.setValidationState(fieldResult));\r\n return result;\r\n }\r\n field.setValidationState(fieldResult);\r\n return result;\r\n }, {});\r\n return aggregatedResult;\r\n}\r\n/**\r\n * Manages the initial values prop\r\n */\r\nfunction useFormInitialValues(fields, formValues, providedValues) {\r\n const initialValues = ref(unref(providedValues) || {});\r\n // acts as a read only proxy of the initial values object\r\n const computedInitials = computed(() => {\r\n return initialValues.value;\r\n });\r\n function setInitialValues(values, updateFields = false) {\r\n initialValues.value = Object.assign(Object.assign({}, initialValues.value), values);\r\n if (!updateFields) {\r\n return;\r\n }\r\n // update the pristine (non-dirty and non-touched fields)\r\n // we exclude dirty and untouched fields because it's unlikely you want to change the form values using initial values\r\n // we mostly watch them for API population or newly inserted fields\r\n const isSafeToUpdate = (f) => f.meta.dirty || f.meta.touched;\r\n keysOf(fields.value).forEach(fieldPath => {\r\n const field = fields.value[fieldPath];\r\n const isFieldDirty = Array.isArray(field) ? field.some(isSafeToUpdate) : isSafeToUpdate(field);\r\n if (isFieldDirty) {\r\n return;\r\n }\r\n const newValue = getFromPath(initialValues.value, fieldPath);\r\n setInPath(formValues, fieldPath, newValue);\r\n });\r\n }\r\n if (isRef(providedValues)) {\r\n watch(providedValues, value => {\r\n setInitialValues(value, true);\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n provide(FormInitialValues, computedInitials);\r\n return {\r\n initialValues: computedInitials,\r\n setInitialValues,\r\n };\r\n}\n\nconst Form = defineComponent({\r\n name: 'Form',\r\n inheritAttrs: false,\r\n props: {\r\n as: {\r\n type: String,\r\n default: 'form',\r\n },\r\n validationSchema: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialValues: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialErrors: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialDirty: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialTouched: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n validateOnMount: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const initialValues = toRef(props, 'initialValues');\r\n const { errors, validate, handleReset, resetForm, values, meta, isSubmitting, handleSubmit, submitForm, setErrors, setFieldError, setFieldValue, setValues, setFieldDirty, setDirty, setFieldTouched, setTouched, } = useForm({\r\n validationSchema: props.validationSchema,\r\n initialValues,\r\n initialErrors: props.initialErrors,\r\n initialTouched: props.initialTouched,\r\n initialDirty: props.initialDirty,\r\n validateOnMount: props.validateOnMount,\r\n });\r\n const onSubmit = ctx.attrs.onSubmit ? handleSubmit(ctx.attrs.onSubmit) : submitForm;\r\n function handleFormReset() {\r\n handleReset();\r\n if (typeof ctx.attrs.onReset === 'function') {\r\n ctx.attrs.onReset();\r\n }\r\n }\r\n function handleScopedSlotSubmit(evt, onSubmit) {\r\n const onSuccess = typeof evt === 'function' && !onSubmit ? evt : onSubmit;\r\n return handleSubmit(onSuccess)(evt);\r\n }\r\n return function renderForm() {\r\n // FIXME: Hacky but cute way to expose some stuff to the rendered instance\r\n // getCurrentInstance doesn't work with render fns, it returns the wrong instance\r\n // we want to expose setFieldError and setErrors\r\n if (!('setErrors' in this)) {\r\n this.setFieldError = setFieldError;\r\n this.setErrors = setErrors;\r\n this.setFieldValue = setFieldValue;\r\n this.setValues = setValues;\r\n this.setFieldDirty = setFieldDirty;\r\n this.setDirty = setDirty;\r\n this.setFieldTouched = setFieldTouched;\r\n this.setTouched = setTouched;\r\n this.resetForm = resetForm;\r\n this.validate = validate;\r\n }\r\n const children = normalizeChildren(ctx, {\r\n meta: meta.value,\r\n errors: errors.value,\r\n values: values,\r\n isSubmitting: isSubmitting.value,\r\n validate,\r\n handleSubmit: handleScopedSlotSubmit,\r\n handleReset,\r\n submitForm,\r\n setErrors,\r\n setFieldError,\r\n setFieldValue,\r\n setValues,\r\n setFieldDirty,\r\n setDirty,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n });\r\n if (!props.as) {\r\n return children;\r\n }\r\n // Attributes to add on a native `form` tag\r\n const formAttrs = props.as === 'form'\r\n ? {\r\n // Disables native validation as vee-validate will handle it.\r\n novalidate: true,\r\n }\r\n : {};\r\n return h(\r\n // avoid resolving the form component as itself\r\n props.as === 'form' ? props.as : resolveDynamicComponent(props.as), Object.assign(Object.assign(Object.assign({}, formAttrs), ctx.attrs), { onSubmit, onReset: handleFormReset }), children);\r\n };\r\n },\r\n});\n\nconst ErrorMessage = defineComponent({\r\n props: {\r\n as: {\r\n type: String,\r\n default: undefined,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const errors = inject(FormErrorsSymbol, undefined);\r\n const message = computed(() => {\r\n return errors === null || errors === void 0 ? void 0 : errors.value[props.name];\r\n });\r\n return () => {\r\n const children = normalizeChildren(ctx, {\r\n message: message.value,\r\n });\r\n const tag = (props.as ? resolveDynamicComponent(props.as) : props.as);\r\n const attrs = Object.assign({ role: 'alert' }, ctx.attrs);\r\n // If no tag was specified and there are children\r\n // render the slot as is without wrapping it\r\n if (!tag && (children === null || children === void 0 ? void 0 : children.length)) {\r\n return children;\r\n }\r\n // If no children in slot\r\n // render whatever specified and fallback to a with the message in it's contents\r\n if (!(children === null || children === void 0 ? void 0 : children.length)) {\r\n return h(tag || 'span', attrs, message.value);\r\n }\r\n return h(tag, attrs, children);\r\n };\r\n },\r\n});\n\nexport { ErrorMessage, Field, Form, configure, defineRule, useField, useForm, validate };\n","import { userAccountCheck } from '@/api/user'\n\n// 给vee-validate提供校验规则函数\nexport default {\n // 用户名校验\n account (value) {\n if (!value) return '请输入用户名'\n // 规则:字母开头6-20字符之间\n if (/^demo$/.test(value)) return true\n if (!/^[a-zA-Z]\\w{5,19}$/.test(value)) return '字母开头且6-20个字符'\n return true\n },\n // 用户校验且校验唯一性\n async accountApi (value) {\n if (!value) return '请输入用户名'\n if (!/^[a-zA-Z]\\w{5,19}$/.test(value)) return '字母开头且6-20个字符'\n // 服务器端校验\n const data = await userAccountCheck(value)\n if (data.result.valid) return '用户名已存在'\n return true\n },\n // 密码校验\n password (value) {\n if (!value) return '请输入密码'\n // 规则:密码格式6-24个字符\n if (/^hm#qd@23!$/.test(value)) return true\n if (!/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{6,24}$/.test(value)) return '密码6-24个字符'\n\n return true\n },\n // 密码校验\n rePassword (value, { form }) {\n if (!value) return '请输入密码'\n if (!/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{6,24}$/.test(value)) return '密码6-24个字符'\n // form表单数据对象\n if (value !== form.password) return '需要和密码保持一致'\n return true\n },\n mobile (value) {\n if (!value) return '请输入手机号'\n // 规则:1开头 3-9 之间 9个数字\n if (!/^1[3-9]\\d{9}$/.test(value)) return '手机号格式不对'\n return true\n },\n code (value) {\n if (!value) return '请输入短信验证码'\n // 规则: 6个数字\n if (!/^\\d{6}$/.test(value)) return '短信验证码6个数字'\n return true\n },\n isAgree (value) {\n if (!value) return '请勾选登录协议'\n return true\n }\n}\n","// 用户相关的接口\n\nimport request from '@/utils/request'\n\n/**\n * 帐号密码登录\n * @param {String} account - 帐号\n * @param {String} password - 密码\n * @returns promise\n */\nexport const userAccountLogin = ({ account, password }) => {\n return request('/login', 'post', { account, password })\n}\n\n/**\n * 获取手机号的短信验证码\n * @param {String} mobile - 手机号\n * @returns promise\n */\nexport const userMobileLoginMsg = (mobile) => {\n return request('/login/code', 'get', { mobile })\n}\n\n/**\n * 手机号登录\n * @param {String} mobile - 手机号\n * @param {String} code - 短信验证码,默认123456\n * @returns promise\n */\nexport const userMobileLogin = ({ mobile, code }) => {\n return request('/login/code', 'post', { mobile, code })\n}\n\n/**\n * QQ登录\n * @param {String} unionId - QQ唯一标识,openId\n * @param {String} source - 客户端类型 1 PC\n * @returns\n */\nexport const userQQLogin = (unionId, source = 1) => {\n return request('/login/social', 'post', { unionId, source })\n}\n\n/**\n * 获取QQ绑定的时候短信验证码\n * @param {String} mobile - 手机号\n * @returns promise\n */\nexport const userQQBindCode = (mobile) => {\n return request('/login/social/code', 'get', { mobile })\n}\n\n/**\n * QQ登录-绑定帐号\n * @param {String} unionId - QQ唯一标识,openId\n * @param {String} mobile - 手机号\n * @param {String} code - 验证码\n * @returns\n */\nexport const userQQBindLogin = ({ unionId, mobile, code }) => {\n return request('/login/social/bind', 'post', { unionId, mobile, code })\n}\n\n/**\n * 校验用户是否存在\n * @param {String} account - 帐号\n * @returns promise\n */\nexport const userAccountCheck = (account) => {\n return request('/register/check', 'get', { account })\n}\n\n/**\n * 获取QQ完善信息的时候短信验证码\n * @param {String} mobile - 手机号\n * @returns promise\n */\nexport const userQQPatchCode = (mobile) => {\n return request('/register/code', 'get', { mobile })\n}\n\n/**\n * QQ登录-完善信息\n * @param {String} unionId - QQ唯一标识,openId\n * @param {String} mobile - 手机号\n * @param {String} code - 验证码\n * @param {String} account - 帐号\n * @param {String} password - 密码\n * @returns\n */\nexport const userQQPatchLogin = ({ unionId, mobile, code, account, password }) => {\n return request(`/login/social/${unionId}/complement`, 'post', { unionId, mobile, code, account, password })\n}\n","\n\n\n\n\n","import { render } from \"./login-header.vue?vue&type=template&id=c5a0b528&scoped=true\"\nimport script from \"./login-header.vue?vue&type=script&lang=js\"\nexport * from \"./login-header.vue?vue&type=script&lang=js\"\n\nimport \"./login-header.vue?vue&type=style&index=0&id=c5a0b528&scoped=true&lang=less\"\nscript.render = render\nscript.__scopeId = \"data-v-c5a0b528\"\n\nexport default script"],"sourceRoot":""}