{"version":3,"sources":["webpack:///./node_modules/@heroicons/vue/solid/esm/CheckCircleIcon.js","webpack:///./src/views/Project/FormProject.vue","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./src/views/Project/FormProject.vue?f199"],"names":["render","_ctx","_cache","xmlns","viewBox","fill","d","class","_createElementVNode","stroke-linecap","stroke-linejoin","stroke-width","_createElementBlock","_hoisted_1","_createVNode","_component_TransitionFade","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","$setup","locale","state","Langs","selected","lang","_component_Form","onSubmit","$options","validation-schema","_hoisted_9","_hoisted_10","_component_Field","type","name","id","Name","_component_ErrorMessage","as","message","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","Company","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_multiselect","options","Utilities","timezones","searchable","placeholder","canDeselect","canClear","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_component_router_link","to","params","Projects","idRoute","_hoisted_27","loading","_hoisted_28","_component_Loader","text","_hoisted_29","_hoisted_30","_hoisted_31","Auth","user","_hoisted_32","_hoisted_33","_hoisted_34","label","trackBy","valueProp","_hoisted_35","onClick","disabled","_hoisted_37","_hoisted_38","_hoisted_39","_component_CheckCircleIcon","aria-hidden","_hoisted_40","_hoisted_41","isCallable","fn","isNullOrUndefined","value","undefined","isObject","obj","Array","isArray","isIndex","Number","toNumber","n","parseFloat","isNaN","RULES","resolveRule","FormContextKey","Symbol","FieldContextKey","IS_ABSENT","isClient","window","isLocator","__locatorRef","isYupValidator","validate","hasCheckedAttr","isContainerValue","isEmptyContainer","length","Object","keys","isNotNestedPath","path","test","isNativeMultiSelect","el","isNativeSelect","multiple","tagName","isNativeMultiSelectNode","tag","attrs","hasTruthyBindingValue","includes","shouldHaveValueBinding","isFormSubmitEvent","evt","isEvent","target","Event","srcElement","isPropPresent","prop","isEqual","a","b","constructor","i","Map","size","entries","has","get","isFile","lastModified","Set","ArrayBuffer","isView","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call","key","File","val","klona","enumerable","set","configurable","writable","defineProperty","x","k","list","tmp","str","create","__proto__","forEach","add","Date","buffer","slice","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyNames","cleanupNonNestedPath","replace","getFromPath","object","fallback","resolvedValue","split","filter","Boolean","reduce","acc","propKey","setInPath","unset","splice","unsetPath","pathValues","map","_","idx","join","keysOf","record","injectWithSelf","symbol","def","vm","provides","warn","resolveNextCheckboxValue","currentValue","checkedValue","uncheckedValue","newVal","findIndex","v","push","throttle","func","limit","inThrottle","lastResult","args","context","this","setTimeout","apply","debounceAsync","inner","ms","timer","resolves","clearTimeout","result","r","Promise","resolve","applyModelModifiers","modifiers","number","withLatest","onDone","latestRun","async","pending","computedDeep","baseRef","newValue","deep","normalizeChildren","slotProps","slots","default","_a","_b","getBoundValue","hasValueBinding","_value","normalizeEventValue","input","files","from","opt","selectedOption","find","normalizeRules","rules","_$$isNormalized","prev","curr","normalizeParams","buildParams","rule","parsedRule","parseRule","provided","mapValueToLocator","createLocator","locator","crossTable","extractLocators","DEFAULT_CONFIG","generateMessage","field","bails","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","currentConfig","assign","getConfig","shouldBail","formData","values","_validate","errors","valid","validateFieldWithYup","ctx","form","pipeline","isValid","_generateFieldError","normalizedContext","rulesKeys","_test","error","validator","opts","abortEarly","then","catch","err","Error","fillTargetValues","fieldCtx","normalize","param","validateYupSchema","schema","errorObjects","results","messages","validateObjectSchema","paths","validations","_c","fieldResult","names","bailsMap","isAllValid","validationResults","all","ID_COUNTER","useFieldState","init","initialValue","setInitialValue","_useFieldValue","modelValue","errorMessage","setErrors","_useFieldErrors","meta","_useFieldMeta","MAX_SAFE_INTEGER","setState","touched","modelRef","resolveInitialValue","initialValues","stageInitialValue","setFieldValue","validated","dirty","immediate","flush","normalizeErrors","errorBag","setFieldErrorBag","API","sendInspectorState","INSPECTOR_ID","sendInspectorTree","useField","useCheckboxField","_useField","validateOnMount","validateOnValueUpdate","controlled","keepValueOnUnmount","modelPropName","syncVModel","controlForm","normalizeOptions","injectedForm","markedForRemoval","useVModel","handleChange","handleBlur","normalizedRules","rulesValue","extractRuleFromSchema","validateCurrentValue","mode","validateSchema","validateWithStateMutation","validateValidStateOnly","validate$1","e","shouldValidate","setTouched","isTouched","unwatchValue","lastWatchedValue","watchValue","oldVal","validateFn","resetField","setValue","handleReset","oldValue","register","unregister","dependencies","rulesVal","deps","dep","depAcc","depName","depValue","oldDeps","defaults","standalone","fieldName","patchCheckboxApi","checked","checkedVal","handleCheckboxChange","propName","emitName","props","getCurrentModelValue","emit","propValue","modelModifiers","FieldImpl","inheritAttrs","String","required","Function","keepValue","validateField","onChangeHandler","handleInput","onInputHandler","fieldProps","resolveValidationTriggers","baseOnBlur","onBlur","baseOnInput","onInput","baseOnChange","onChange","resolveTag","expose","reset","children","_d","Field","FORM_COUNTER","useForm","formId","controlledModelPaths","RESET_LOCK","fieldsByPath","isSubmitting","submitCount","fieldArrays","formValues","setErrorBag","useErrorBag","initialErrors","bag","getFirstFieldAtPath","fieldOrGroup","fieldExists","fieldNames","fieldBailsMap","keepValuesOnUnmount","originalInitialValues","setInitialValues","useFormInitialValues","useFormMeta","controlledValues","validationSchema","debouncedSilentValidation","_validateSchema","debouncedValidation","formResult","fieldsById","formCtx","currentErrorsPaths","validation","setFieldError","applyFieldMutation","f","wasValidated","some","makeSubmissionFactory","onlyControlled","onValidationError","preventDefault","stopPropagation","setFieldTouched","setValues","resetForm","returnVal","handleSubmitImpl","handleSubmit","withControlled","registerField","unregisterField","unsetInitialValue","setFieldInitialValue","useFieldModel","isFieldGroup","mutation","mutateAllFields","fields","force","fieldInstance","clonedValue","createModel","newValues","insertFieldAtPath","rawField","fieldPath","fieldAtPath","removeFieldFromPath","newPath","oldPath","initialErrorMessage","isGroup","shouldKeepValue","currentGroupValue","isSameGroup","valueIdx","every","updateOriginal","schemaValue","submitForm","submit","initialTouched","currentValues","MERGE_STRATEGIES","isDirty","calculateFlags","flat","flag","mergeMethod","providedValues","updateFields","wasTouched","normalizeErrorItem","FormImpl","onInvalidSubmit","keepValues","handleFormReset","onReset","handleScopedSlotSubmit","onSuccess","formAttrs","novalidate","Form","useFieldArray","arrayPath","noOp","noOpApi","remove","swap","insert","update","prepend","move","alreadyExists","entryCounter","initFields","createEntry","updateEntryFlags","fieldsLength","entry","isFirst","isLast","pathName","pathValue","normalizedPathValue","indexA","indexB","newFields","temp","tempEntry","arr","unshift","oldIdx","newIdx","movedItem","movedValue","fieldArrayCtx","ErrorMessageImpl","role","ErrorMessage","components","TransitionFade","Multiselect","Loader","CheckCircleIcon","data","projectSchema","yup","company","newProject","show","showInvite","showCreate","storeError","storeErrorMessage","storeOK","timeZoneSelect","projectSelected","projectOptions","projectId","successInvite","setup","t","useI18n","getInvitationForUser","methods","is_active","dataJson","timezone","$store","dispatch","res","status","$toast","console","log","errorKey","$router","axiosClient","option","project","is_pending","response","__exports__"],"mappings":"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","file":"js/chunk-2e629660.8c52293d.js","sourcesContent":["import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","\n\n\n","/**\n * vee-validate v4.7.3\n * (c) 2022 Abdelrahman Awad\n * @license MIT\n */\nimport { getCurrentInstance, inject, warn as warn$1, ref, watch, unref, computed, reactive, onUnmounted, nextTick, onMounted, provide, isRef, onBeforeUnmount, defineComponent, toRef, resolveDynamicComponent, h, watchEffect, markRaw } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nconst isObject = (obj) => obj !== null && !!obj && typeof obj === 'object' && !Array.isArray(obj);\r\nfunction isIndex(value) {\r\n return Number(value) >= 0;\r\n}\r\nfunction toNumber(value) {\r\n const n = parseFloat(value);\r\n return isNaN(n) ? value : n;\r\n}\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\nconst FormContextKey = Symbol('vee-validate-form');\r\nconst FieldContextKey = Symbol('vee-validate-field-instance');\r\nconst IS_ABSENT = Symbol('Default empty value');\n\nconst isClient = typeof window !== 'undefined';\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\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 isContainerValue(value) {\r\n return isObject(value) || Array.isArray(value);\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}\r\n/**\r\n * Checks if an element is a native HTML5 multi-select input element\r\n */\r\nfunction isNativeMultiSelect(el) {\r\n return isNativeSelect(el) && el.multiple;\r\n}\r\n/**\r\n * Checks if an element is a native HTML5 select input element\r\n */\r\nfunction isNativeSelect(el) {\r\n return el.tagName === 'SELECT';\r\n}\r\n/**\r\n * Checks if a tag name with attrs object will render a native multi-select element\r\n */\r\nfunction isNativeMultiSelectNode(tag, attrs) {\r\n // The falsy value array is the values that Vue won't add the `multiple` prop if it has one of these values\r\n const hasTruthyBindingValue = ![false, null, undefined, 0].includes(attrs.multiple) && !Number.isNaN(attrs.multiple);\r\n return tag === 'select' && 'multiple' in attrs && hasTruthyBindingValue;\r\n}\r\n/**\r\n * Checks if a node should have a `:value` binding or not\r\n *\r\n * These nodes should not have a value binding\r\n * For files, because they are not reactive\r\n * For multi-selects because the value binding will reset the value\r\n */\r\nfunction shouldHaveValueBinding(tag, attrs) {\r\n return !isNativeMultiSelectNode(tag, attrs) && attrs.type !== 'file' && !hasCheckedAttr(attrs.type);\r\n}\r\nfunction isFormSubmitEvent(evt) {\r\n return isEvent(evt) && evt.target && 'submit' in evt.target;\r\n}\r\nfunction 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 and Cypress #3161\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 isPropPresent(obj, prop) {\r\n return prop in obj && obj[prop] !== IS_ABSENT;\r\n}\r\n/**\r\n * Compares if two values are the same borrowed from:\r\n * https://github.com/epoberezkin/fast-deep-equal\r\n * We added a case for file matching since `Object.keys` doesn't work with Files.\r\n * */\r\nfunction isEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n if (a.constructor !== b.constructor)\r\n return false;\r\n // eslint-disable-next-line no-var\r\n var length, i, keys;\r\n if (Array.isArray(a)) {\r\n length = a.length;\r\n // eslint-disable-next-line eqeqeq\r\n if (length != b.length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (!isEqual(a[i], b[i]))\r\n return false;\r\n return true;\r\n }\r\n if (a instanceof Map && b instanceof Map) {\r\n if (a.size !== b.size)\r\n return false;\r\n for (i of a.entries())\r\n if (!b.has(i[0]))\r\n return false;\r\n for (i of a.entries())\r\n if (!isEqual(i[1], b.get(i[0])))\r\n return false;\r\n return true;\r\n }\r\n // We added this part for file comparison, arguably a little naive but should work for most cases.\r\n // #3911\r\n if (isFile(a) && isFile(b)) {\r\n if (a.size !== b.size)\r\n return false;\r\n if (a.name !== b.name)\r\n return false;\r\n if (a.lastModified !== b.lastModified)\r\n return false;\r\n if (a.type !== b.type)\r\n return false;\r\n return true;\r\n }\r\n if (a instanceof Set && b instanceof Set) {\r\n if (a.size !== b.size)\r\n return false;\r\n for (i of a.entries())\r\n if (!b.has(i[0]))\r\n return false;\r\n return true;\r\n }\r\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\r\n length = a.length;\r\n // eslint-disable-next-line eqeqeq\r\n if (length != b.length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (a[i] !== b[i])\r\n return false;\r\n return true;\r\n }\r\n if (a.constructor === RegExp)\r\n return a.source === b.source && a.flags === b.flags;\r\n if (a.valueOf !== Object.prototype.valueOf)\r\n return a.valueOf() === b.valueOf();\r\n if (a.toString !== Object.prototype.toString)\r\n return a.toString() === b.toString();\r\n keys = Object.keys(a);\r\n length = keys.length;\r\n if (length !== Object.keys(b).length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\r\n return false;\r\n for (i = length; i-- !== 0;) {\r\n // eslint-disable-next-line no-var\r\n var key = keys[i];\r\n if (!isEqual(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n // true if both NaN, false otherwise\r\n // eslint-disable-next-line no-self-compare\r\n return a !== a && b !== b;\r\n}\r\nfunction isFile(a) {\r\n if (!isClient) {\r\n return false;\r\n }\r\n return a instanceof File;\r\n}\n\nfunction set(obj, key, val) {\n\tif (typeof val.value === 'object') val.value = klona(val.value);\n\tif (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n\t\tObject.defineProperty(obj, key, val);\n\t} else obj[key] = val.value;\n}\n\nfunction klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar i=0, k, list, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\ttmp = Object.create(x.__proto__ || null);\n\t} else if (str === '[object Array]') {\n\t\ttmp = Array(x.length);\n\t} else if (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t} else if (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t} else if (str === '[object Date]') {\n\t\ttmp = new Date(+x);\n\t} else if (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t} else if (str === '[object DataView]') {\n\t\ttmp = new x.constructor( klona(x.buffer) );\n\t} else if (str === '[object ArrayBuffer]') {\n\t\ttmp = x.slice(0);\n\t} else if (str.slice(-6) === 'Array]') {\n\t\t// ArrayBuffer.isView(x)\n\t\t// ~> `new` bcuz `Buffer.slice` => ref\n\t\ttmp = new x.constructor(x);\n\t}\n\n\tif (tmp) {\n\t\tfor (list=Object.getOwnPropertySymbols(x); i < list.length; i++) {\n\t\t\tset(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n\t\t}\n\n\t\tfor (i=0, list=Object.getOwnPropertyNames(x); i < list.length; i++) {\n\t\t\tif (Object.hasOwnProperty.call(tmp, k=list[i]) && tmp[k] === x[k]) continue;\n\t\t\tset(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n\t\t}\n\t}\n\n\treturn tmp || x;\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\nfunction getFromPath(object, path, fallback) {\r\n if (!object) {\r\n return fallback;\r\n }\r\n if (isNotNestedPath(path)) {\r\n return object[cleanupNonNestedPath(path)];\r\n }\r\n const resolvedValue = (path || '')\r\n .split(/\\.|\\[(\\d+)\\]/)\r\n .filter(Boolean)\r\n .reduce((acc, propKey) => {\r\n if (isContainerValue(acc) && propKey in acc) {\r\n return acc[propKey];\r\n }\r\n return fallback;\r\n }, object);\r\n return resolvedValue;\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) || isNullOrUndefined(acc[keys[i]])) {\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 if (isObject(object)) {\r\n delete object[key];\r\n }\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) || isNullOrUndefined(acc[keys[i]])) {\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 (vm === null || vm === void 0 ? void 0 : vm.provides[symbol]) || inject(symbol, def);\r\n}\r\nfunction warn(message) {\r\n warn$1(`[vee-validate]: ${message}`);\r\n}\r\n/**\r\n * Ensures we deal with a singular field value\r\n */\r\nfunction normalizeField(field) {\r\n if (Array.isArray(field)) {\r\n return field[0];\r\n }\r\n return field;\r\n}\r\nfunction resolveNextCheckboxValue(currentValue, checkedValue, uncheckedValue) {\r\n if (Array.isArray(currentValue)) {\r\n const newVal = [...currentValue];\r\n // Use isEqual since checked object values can possibly fail the equality check #3883\r\n const idx = newVal.findIndex(v => isEqual(v, checkedValue));\r\n idx >= 0 ? newVal.splice(idx, 1) : newVal.push(checkedValue);\r\n return newVal;\r\n }\r\n return isEqual(currentValue, checkedValue) ? uncheckedValue : checkedValue;\r\n}\r\n/**\r\n * Creates a throttled function that only invokes the provided function (`func`) at most once per within a given number of milliseconds\r\n * (`limit`)\r\n */\r\nfunction throttle(func, limit) {\r\n let inThrottle;\r\n let lastResult;\r\n return function (...args) {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const context = this;\r\n if (!inThrottle) {\r\n inThrottle = true;\r\n setTimeout(() => (inThrottle = false), limit);\r\n lastResult = func.apply(context, args);\r\n }\r\n return lastResult;\r\n };\r\n}\r\nfunction debounceAsync(inner, ms = 0) {\r\n let timer = null;\r\n let resolves = [];\r\n return function (...args) {\r\n // Run the function after a certain amount of time\r\n if (timer) {\r\n window.clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(() => {\r\n // Get the result of the inner function, then apply it to the resolve function of\r\n // each promise that has been created since the last time the inner function was run\r\n const result = inner(...args);\r\n resolves.forEach(r => r(result));\r\n resolves = [];\r\n }, ms);\r\n return new Promise(resolve => resolves.push(resolve));\r\n };\r\n}\r\nfunction applyModelModifiers(value, modifiers) {\r\n if (!isObject(modifiers)) {\r\n return value;\r\n }\r\n if (modifiers.number) {\r\n return toNumber(value);\r\n }\r\n return value;\r\n}\r\nfunction withLatest(fn, onDone) {\r\n let latestRun;\r\n return async function runLatest(...args) {\r\n const pending = fn(...args);\r\n latestRun = pending;\r\n const result = await pending;\r\n if (pending !== latestRun) {\r\n return result;\r\n }\r\n latestRun = undefined;\r\n onDone(result, args);\r\n return result;\r\n };\r\n}\r\nfunction computedDeep({ get, set }) {\r\n const baseRef = ref(klona(get()));\r\n watch(get, newValue => {\r\n if (isEqual(newValue, baseRef.value)) {\r\n return;\r\n }\r\n baseRef.value = klona(newValue);\r\n }, {\r\n deep: true,\r\n });\r\n watch(baseRef, newValue => {\r\n if (isEqual(newValue, get())) {\r\n return;\r\n }\r\n set(klona(newValue));\r\n }, {\r\n deep: true,\r\n });\r\n return baseRef;\r\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst normalizeChildren = (tag, context, slotProps) => {\r\n if (!context.slots.default) {\r\n return context.slots.default;\r\n }\r\n if (typeof tag === 'string' || !tag) {\r\n return context.slots.default(slotProps());\r\n }\r\n return {\r\n default: () => { var _a, _b; return (_b = (_a = context.slots).default) === null || _b === void 0 ? void 0 : _b.call(_a, slotProps()); },\r\n };\r\n};\r\n/**\r\n * Vue adds a `_value` prop at the moment on the input elements to store the REAL value on them, real values are different than the `value` attribute\r\n * as they do not get casted to strings unlike `el.value` which preserves user-code behavior\r\n */\r\nfunction getBoundValue(el) {\r\n if (hasValueBinding(el)) {\r\n return el._value;\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * Vue adds a `_value` prop at the moment on the input elements to store the REAL value on them, real values are different than the `value` attribute\r\n * as they do not get casted to strings unlike `el.value` which preserves user-code behavior\r\n */\r\nfunction hasValueBinding(el) {\r\n return '_value' in el;\r\n}\n\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) && hasValueBinding(input)) {\r\n return getBoundValue(input);\r\n }\r\n if (input.type === 'file' && input.files) {\r\n const files = Array.from(input.files);\r\n return input.multiple ? files : files[0];\r\n }\r\n if (isNativeMultiSelect(input)) {\r\n return Array.from(input.options)\r\n .filter(opt => opt.selected && !opt.disabled)\r\n .map(getBoundValue);\r\n }\r\n // makes sure we get the actual `option` bound value\r\n // #3440\r\n if (isNativeSelect(input)) {\r\n const selectedOption = Array.from(input.options).find(opt => opt.selected);\r\n return selectedOption ? getBoundValue(selectedOption) : input.value;\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 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 // 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 // #3073\r\n if (provided instanceof RegExp) {\r\n return [provided];\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 = getFromPath(crossTable, value) || 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 keysOf(params)\r\n .filter(key => isLocator(params[key]))\r\n .map(key => params[key]);\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,\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 valid: !errors.length,\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(value, field.rules, { bails: field.bails });\r\n }\r\n // if a generic function or chain of generic functions\r\n if (isCallable(field.rules) || Array.isArray(field.rules)) {\r\n const ctx = {\r\n field: field.name,\r\n form: field.formData,\r\n value: value,\r\n };\r\n // Normalize the pipeline\r\n const pipeline = Array.isArray(field.rules) ? field.rules : [field.rules];\r\n const length = pipeline.length;\r\n const errors = [];\r\n for (let i = 0; i < length; i++) {\r\n const rule = pipeline[i];\r\n const result = await rule(value, ctx);\r\n const isValid = typeof result !== 'string' && result;\r\n if (isValid) {\r\n continue;\r\n }\r\n const message = typeof result === 'string' ? result : _generateFieldError(ctx);\r\n errors.push(message);\r\n if (field.bails) {\r\n return {\r\n errors,\r\n };\r\n }\r\n }\r\n return {\r\n errors,\r\n };\r\n }\r\n const normalizedContext = Object.assign(Object.assign({}, field), { rules: normalizeRules(field.rules) });\r\n const errors = [];\r\n const rulesKeys = Object.keys(normalizedContext.rules);\r\n const length = rulesKeys.length;\r\n for (let i = 0; i < length; i++) {\r\n const rule = rulesKeys[i];\r\n const result = await _test(normalizedContext, value, {\r\n name: rule,\r\n params: normalizedContext.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(value, validator, opts) {\r\n var _a;\r\n const errors = await validator\r\n .validate(value, {\r\n abortEarly: (_a = opts.bails) !== null && _a !== void 0 ? _a : true,\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: Object.assign(Object.assign({}, rule), { params }),\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}\r\nasync function validateYupSchema(schema, values) {\r\n const errorObjects = await schema\r\n .validate(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 results = {};\r\n const errors = {};\r\n for (const error of errorObjects) {\r\n const messages = error.errors;\r\n results[error.path] = { valid: !messages.length, errors: messages };\r\n if (messages.length) {\r\n errors[error.path] = messages[0];\r\n }\r\n }\r\n return {\r\n valid: !errorObjects.length,\r\n results,\r\n errors,\r\n };\r\n}\r\nasync function validateObjectSchema(schema, values, opts) {\r\n const paths = keysOf(schema);\r\n const validations = paths.map(async (path) => {\r\n var _a, _b, _c;\r\n const fieldResult = await validate(getFromPath(values, path), schema[path], {\r\n name: ((_a = opts === null || opts === void 0 ? void 0 : opts.names) === null || _a === void 0 ? void 0 : _a[path]) || path,\r\n values: values,\r\n bails: (_c = (_b = opts === null || opts === void 0 ? void 0 : opts.bailsMap) === null || _b === void 0 ? void 0 : _b[path]) !== null && _c !== void 0 ? _c : true,\r\n });\r\n return Object.assign(Object.assign({}, fieldResult), { path });\r\n });\r\n let isAllValid = true;\r\n const validationResults = await Promise.all(validations);\r\n const results = {};\r\n const errors = {};\r\n for (const result of validationResults) {\r\n results[result.path] = {\r\n valid: result.valid,\r\n errors: result.errors,\r\n };\r\n if (!result.valid) {\r\n isAllValid = false;\r\n errors[result.path] = result.errors[0];\r\n }\r\n }\r\n return {\r\n valid: isAllValid,\r\n results,\r\n errors,\r\n };\r\n}\n\nlet ID_COUNTER = 0;\r\nfunction useFieldState(path, init) {\r\n const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, init.form);\r\n const { errorMessage, errors, setErrors } = _useFieldErrors(path, init.form);\r\n const meta = _useFieldMeta(value, initialValue, errors);\r\n const id = ID_COUNTER >= Number.MAX_SAFE_INTEGER ? 0 : ++ID_COUNTER;\r\n function setState(state) {\r\n var _a;\r\n if ('value' in state) {\r\n value.value = state.value;\r\n }\r\n if ('errors' in state) {\r\n setErrors(state.errors);\r\n }\r\n if ('touched' in state) {\r\n meta.touched = (_a = state.touched) !== null && _a !== void 0 ? _a : meta.touched;\r\n }\r\n if ('initialValue' in state) {\r\n setInitialValue(state.initialValue);\r\n }\r\n }\r\n return {\r\n id,\r\n path,\r\n value,\r\n initialValue,\r\n meta,\r\n errors,\r\n errorMessage,\r\n setState,\r\n };\r\n}\r\n/**\r\n * Creates the field value and resolves the initial value\r\n */\r\nfunction _useFieldValue(path, modelValue, form) {\r\n const modelRef = ref(unref(modelValue));\r\n function resolveInitialValue() {\r\n if (!form) {\r\n return unref(modelRef);\r\n }\r\n return getFromPath(form.meta.value.initialValues, unref(path), unref(modelRef));\r\n }\r\n function setInitialValue(value) {\r\n if (!form) {\r\n modelRef.value = value;\r\n return;\r\n }\r\n form.stageInitialValue(unref(path), value, true);\r\n }\r\n const initialValue = computed(resolveInitialValue);\r\n // if no form is associated, use a regular ref.\r\n if (!form) {\r\n const value = ref(resolveInitialValue());\r\n return {\r\n value,\r\n initialValue,\r\n setInitialValue,\r\n };\r\n }\r\n // to set the initial value, first check if there is a current value, if there is then use it.\r\n // otherwise use the configured initial value if it exists.\r\n // prioritize model value over form values\r\n // #3429\r\n const currentValue = modelValue ? unref(modelValue) : getFromPath(form.values, unref(path), unref(initialValue));\r\n form.stageInitialValue(unref(path), currentValue, true);\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 {\r\n value,\r\n initialValue,\r\n setInitialValue,\r\n };\r\n}\r\n/**\r\n * Creates meta flags state and some associated effects with them\r\n */\r\nfunction _useFieldMeta(currentValue, initialValue, errors) {\r\n const meta = reactive({\r\n touched: false,\r\n pending: false,\r\n valid: true,\r\n validated: !!unref(errors).length,\r\n initialValue: computed(() => unref(initialValue)),\r\n dirty: computed(() => {\r\n return !isEqual(unref(currentValue), unref(initialValue));\r\n }),\r\n });\r\n watch(errors, value => {\r\n meta.valid = !value.length;\r\n }, {\r\n immediate: true,\r\n flush: 'sync',\r\n });\r\n return meta;\r\n}\r\n/**\r\n * Creates the error message state for the field state\r\n */\r\nfunction _useFieldErrors(path, form) {\r\n function normalizeErrors(messages) {\r\n if (!messages) {\r\n return [];\r\n }\r\n return Array.isArray(messages) ? messages : [messages];\r\n }\r\n if (!form) {\r\n const errors = ref([]);\r\n return {\r\n errors,\r\n errorMessage: computed(() => errors.value[0]),\r\n setErrors: (messages) => {\r\n errors.value = normalizeErrors(messages);\r\n },\r\n };\r\n }\r\n const errors = computed(() => form.errorBag.value[unref(path)] || []);\r\n return {\r\n errors,\r\n errorMessage: computed(() => errors.value[0]),\r\n setErrors: (messages) => {\r\n form.setFieldErrorBag(unref(path), normalizeErrors(messages));\r\n },\r\n };\r\n}\n\nfunction installDevtoolsPlugin(app) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n setupDevtoolsPlugin({\r\n id: 'vee-validate-devtools-plugin',\r\n label: 'VeeValidate Plugin',\r\n packageName: 'vee-validate',\r\n homepage: 'https://vee-validate.logaretm.com/v4',\r\n app,\r\n logo: 'https://vee-validate.logaretm.com/v4/logo.png',\r\n }, setupApiHooks);\r\n }\r\n}\r\nconst DEVTOOLS_FORMS = {};\r\nconst DEVTOOLS_FIELDS = {};\r\nlet API;\r\nconst refreshInspector = throttle(() => {\r\n setTimeout(async () => {\r\n await nextTick();\r\n API === null || API === void 0 ? void 0 : API.sendInspectorState(INSPECTOR_ID);\r\n API === null || API === void 0 ? void 0 : API.sendInspectorTree(INSPECTOR_ID);\r\n }, 100);\r\n}, 100);\r\nfunction registerFormWithDevTools(form) {\r\n const vm = getCurrentInstance();\r\n if (!API) {\r\n const app = vm === null || vm === void 0 ? void 0 : vm.appContext.app;\r\n if (!app) {\r\n return;\r\n }\r\n installDevtoolsPlugin(app);\r\n }\r\n DEVTOOLS_FORMS[form.formId] = Object.assign({}, form);\r\n DEVTOOLS_FORMS[form.formId]._vm = vm;\r\n onUnmounted(() => {\r\n delete DEVTOOLS_FORMS[form.formId];\r\n refreshInspector();\r\n });\r\n refreshInspector();\r\n}\r\nfunction registerSingleFieldWithDevtools(field) {\r\n const vm = getCurrentInstance();\r\n if (!API) {\r\n const app = vm === null || vm === void 0 ? void 0 : vm.appContext.app;\r\n if (!app) {\r\n return;\r\n }\r\n installDevtoolsPlugin(app);\r\n }\r\n DEVTOOLS_FIELDS[field.id] = Object.assign({}, field);\r\n DEVTOOLS_FIELDS[field.id]._vm = vm;\r\n onUnmounted(() => {\r\n delete DEVTOOLS_FIELDS[field.id];\r\n refreshInspector();\r\n });\r\n refreshInspector();\r\n}\r\nconst INSPECTOR_ID = 'vee-validate-inspector';\r\nconst COLORS = {\r\n error: 0xbd4b4b,\r\n success: 0x06d77b,\r\n unknown: 0x54436b,\r\n white: 0xffffff,\r\n black: 0x000000,\r\n blue: 0x035397,\r\n purple: 0xb980f0,\r\n orange: 0xf5a962,\r\n gray: 0xbbbfca,\r\n};\r\nlet SELECTED_NODE = null;\r\nfunction setupApiHooks(api) {\r\n API = api;\r\n api.addInspector({\r\n id: INSPECTOR_ID,\r\n icon: 'rule',\r\n label: 'vee-validate',\r\n noSelectionText: 'Select a vee-validate node to inspect',\r\n actions: [\r\n {\r\n icon: 'done_outline',\r\n tooltip: 'Validate selected item',\r\n action: async () => {\r\n if (!SELECTED_NODE) {\r\n console.error('There is not a valid selected vee-validate node or component');\r\n return;\r\n }\r\n const result = await SELECTED_NODE.validate();\r\n console.log(result);\r\n },\r\n },\r\n {\r\n icon: 'delete_sweep',\r\n tooltip: 'Clear validation state of the selected item',\r\n action: () => {\r\n if (!SELECTED_NODE) {\r\n console.error('There is not a valid selected vee-validate node or component');\r\n return;\r\n }\r\n if ('id' in SELECTED_NODE) {\r\n SELECTED_NODE.resetField();\r\n return;\r\n }\r\n SELECTED_NODE.resetForm();\r\n },\r\n },\r\n ],\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.inspectorId !== INSPECTOR_ID) {\r\n return;\r\n }\r\n const forms = Object.values(DEVTOOLS_FORMS);\r\n const fields = Object.values(DEVTOOLS_FIELDS);\r\n payload.rootNodes = [\r\n ...forms.map(mapFormForDevtoolsInspector),\r\n ...fields.map(field => mapFieldForDevtoolsInspector(field)),\r\n ];\r\n });\r\n api.on.getInspectorState((payload, ctx) => {\r\n if (payload.inspectorId !== INSPECTOR_ID || ctx.currentTab !== `custom-inspector:${INSPECTOR_ID}`) {\r\n return;\r\n }\r\n const { form, field, type } = decodeNodeId(payload.nodeId);\r\n if (form && type === 'form') {\r\n payload.state = buildFormState(form);\r\n SELECTED_NODE = form;\r\n return;\r\n }\r\n if (field && type === 'field') {\r\n payload.state = buildFieldState(field);\r\n SELECTED_NODE = field;\r\n return;\r\n }\r\n SELECTED_NODE = null;\r\n });\r\n}\r\nfunction mapFormForDevtoolsInspector(form) {\r\n const { textColor, bgColor } = getTagTheme(form);\r\n const formTreeNodes = {};\r\n Object.values(form.fieldsByPath.value).forEach(field => {\r\n const fieldInstance = Array.isArray(field) ? field[0] : field;\r\n if (!fieldInstance) {\r\n return;\r\n }\r\n setInPath(formTreeNodes, unref(fieldInstance.name), mapFieldForDevtoolsInspector(fieldInstance, form));\r\n });\r\n function buildFormTree(tree, path = []) {\r\n const key = [...path].pop();\r\n if ('id' in tree) {\r\n return Object.assign(Object.assign({}, tree), { label: key || tree.label });\r\n }\r\n if (isObject(tree)) {\r\n return {\r\n id: `${path.join('.')}`,\r\n label: key || '',\r\n children: Object.keys(tree).map(key => buildFormTree(tree[key], [...path, key])),\r\n };\r\n }\r\n if (Array.isArray(tree)) {\r\n return {\r\n id: `${path.join('.')}`,\r\n label: `${key}[]`,\r\n children: tree.map((c, idx) => buildFormTree(c, [...path, String(idx)])),\r\n };\r\n }\r\n return { id: '', label: '', children: [] };\r\n }\r\n const { children } = buildFormTree(formTreeNodes);\r\n return {\r\n id: encodeNodeId(form),\r\n label: 'Form',\r\n children,\r\n tags: [\r\n {\r\n label: 'Form',\r\n textColor,\r\n backgroundColor: bgColor,\r\n },\r\n {\r\n label: `${Object.keys(form.fieldsByPath.value).length} fields`,\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.unknown,\r\n },\r\n ],\r\n };\r\n}\r\nfunction mapFieldForDevtoolsInspector(field, form) {\r\n const fieldInstance = normalizeField(field);\r\n const { textColor, bgColor } = getTagTheme(fieldInstance);\r\n const isGroup = Array.isArray(field) && field.length > 1;\r\n return {\r\n id: encodeNodeId(form, fieldInstance, !isGroup),\r\n label: unref(fieldInstance.name),\r\n children: Array.isArray(field) ? field.map(fieldItem => mapFieldForDevtoolsInspector(fieldItem, form)) : undefined,\r\n tags: [\r\n isGroup\r\n ? undefined\r\n : {\r\n label: 'Field',\r\n textColor,\r\n backgroundColor: bgColor,\r\n },\r\n !form\r\n ? {\r\n label: 'Standalone',\r\n textColor: COLORS.black,\r\n backgroundColor: COLORS.gray,\r\n }\r\n : undefined,\r\n !isGroup && fieldInstance.type === 'checkbox'\r\n ? {\r\n label: 'Checkbox',\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.blue,\r\n }\r\n : undefined,\r\n !isGroup && fieldInstance.type === 'radio'\r\n ? {\r\n label: 'Radio',\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.purple,\r\n }\r\n : undefined,\r\n isGroup\r\n ? {\r\n label: 'Group',\r\n textColor: COLORS.black,\r\n backgroundColor: COLORS.orange,\r\n }\r\n : undefined,\r\n ].filter(Boolean),\r\n };\r\n}\r\nfunction encodeNodeId(form, field, encodeIndex = true) {\r\n const fieldPath = form ? unref(field === null || field === void 0 ? void 0 : field.name) : field === null || field === void 0 ? void 0 : field.id;\r\n const fieldGroup = fieldPath ? form === null || form === void 0 ? void 0 : form.fieldsByPath.value[fieldPath] : undefined;\r\n let idx;\r\n if (encodeIndex && field && Array.isArray(fieldGroup)) {\r\n idx = fieldGroup.indexOf(field);\r\n }\r\n const idObject = { f: form === null || form === void 0 ? void 0 : form.formId, ff: fieldPath, idx, type: field ? 'field' : 'form' };\r\n return btoa(JSON.stringify(idObject));\r\n}\r\nfunction decodeNodeId(nodeId) {\r\n try {\r\n const idObject = JSON.parse(atob(nodeId));\r\n const form = DEVTOOLS_FORMS[idObject.f];\r\n if (!form && idObject.ff) {\r\n const field = DEVTOOLS_FIELDS[idObject.ff];\r\n if (!field) {\r\n return {};\r\n }\r\n return {\r\n type: idObject.type,\r\n field,\r\n };\r\n }\r\n if (!form) {\r\n return {};\r\n }\r\n const fieldGroup = form.fieldsByPath.value[idObject.ff];\r\n return {\r\n type: idObject.type,\r\n form,\r\n field: Array.isArray(fieldGroup) ? fieldGroup[idObject.idx || 0] : fieldGroup,\r\n };\r\n }\r\n catch (err) {\r\n // console.error(`Devtools: [vee-validate] Failed to parse node id ${nodeId}`);\r\n }\r\n return {};\r\n}\r\nfunction buildFieldState(field) {\r\n const { errors, meta, value } = field;\r\n return {\r\n 'Field state': [\r\n { key: 'errors', value: errors.value },\r\n {\r\n key: 'initialValue',\r\n value: meta.initialValue,\r\n },\r\n {\r\n key: 'currentValue',\r\n value: value.value,\r\n },\r\n {\r\n key: 'touched',\r\n value: meta.touched,\r\n },\r\n {\r\n key: 'dirty',\r\n value: meta.dirty,\r\n },\r\n {\r\n key: 'valid',\r\n value: meta.valid,\r\n },\r\n ],\r\n };\r\n}\r\nfunction buildFormState(form) {\r\n const { errorBag, meta, values, isSubmitting, submitCount } = form;\r\n return {\r\n 'Form state': [\r\n {\r\n key: 'submitCount',\r\n value: submitCount.value,\r\n },\r\n {\r\n key: 'isSubmitting',\r\n value: isSubmitting.value,\r\n },\r\n {\r\n key: 'touched',\r\n value: meta.value.touched,\r\n },\r\n {\r\n key: 'dirty',\r\n value: meta.value.dirty,\r\n },\r\n {\r\n key: 'valid',\r\n value: meta.value.valid,\r\n },\r\n {\r\n key: 'initialValues',\r\n value: meta.value.initialValues,\r\n },\r\n {\r\n key: 'currentValues',\r\n value: values,\r\n },\r\n {\r\n key: 'errors',\r\n value: keysOf(errorBag.value).reduce((acc, key) => {\r\n var _a;\r\n const message = (_a = errorBag.value[key]) === null || _a === void 0 ? void 0 : _a[0];\r\n if (message) {\r\n acc[key] = message;\r\n }\r\n return acc;\r\n }, {}),\r\n },\r\n ],\r\n };\r\n}\r\n/**\r\n * Resolves the tag color based on the form state\r\n */\r\nfunction getTagTheme(fieldOrForm) {\r\n // const fallbackColors = {\r\n // bgColor: COLORS.unknown,\r\n // textColor: COLORS.white,\r\n // };\r\n const isValid = 'id' in fieldOrForm ? fieldOrForm.meta.valid : fieldOrForm.meta.value.valid;\r\n return {\r\n bgColor: isValid ? COLORS.success : COLORS.error,\r\n textColor: isValid ? COLORS.black : COLORS.white,\r\n };\r\n}\n\n/**\r\n * Creates a field composite.\r\n */\r\nfunction useField(name, rules, opts) {\r\n if (hasCheckedAttr(opts === null || opts === void 0 ? void 0 : opts.type)) {\r\n return useCheckboxField(name, rules, opts);\r\n }\r\n return _useField(name, rules, opts);\r\n}\r\nfunction _useField(name, rules, opts) {\r\n const { initialValue: modelValue, validateOnMount, bails, type, checkedValue, label, validateOnValueUpdate, uncheckedValue, controlled, keepValueOnUnmount, modelPropName, syncVModel, form: controlForm, } = normalizeOptions(unref(name), opts);\r\n const injectedForm = controlled ? injectWithSelf(FormContextKey) : undefined;\r\n const form = controlForm || injectedForm;\r\n // a flag indicating if the field is about to be removed/unmounted.\r\n let markedForRemoval = false;\r\n const { id, value, initialValue, meta, setState, errors, errorMessage } = useFieldState(name, {\r\n modelValue,\r\n form,\r\n });\r\n if (syncVModel) {\r\n useVModel({ value, prop: modelPropName, handleChange });\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 const normalizedRules = computed(() => {\r\n let rulesValue = unref(rules);\r\n const schema = unref(form === null || form === void 0 ? void 0 : form.schema);\r\n if (schema && !isYupValidator(schema)) {\r\n rulesValue = extractRuleFromSchema(schema, unref(name)) || rulesValue;\r\n }\r\n if (isYupValidator(rulesValue) || isCallable(rulesValue) || Array.isArray(rulesValue)) {\r\n return rulesValue;\r\n }\r\n return normalizeRules(rulesValue);\r\n });\r\n async function validateCurrentValue(mode) {\r\n var _a, _b;\r\n if (form === null || form === void 0 ? void 0 : form.validateSchema) {\r\n return (_a = (await form.validateSchema(mode)).results[unref(name)]) !== null && _a !== void 0 ? _a : { valid: true, errors: [] };\r\n }\r\n return validate(value.value, normalizedRules.value, {\r\n name: unref(label) || unref(name),\r\n values: (_b = form === null || form === void 0 ? void 0 : form.values) !== null && _b !== void 0 ? _b : {},\r\n bails,\r\n });\r\n }\r\n const validateWithStateMutation = withLatest(async () => {\r\n meta.pending = true;\r\n meta.validated = true;\r\n return validateCurrentValue('validated-only');\r\n }, result => {\r\n if (markedForRemoval) {\r\n result.valid = true;\r\n result.errors = [];\r\n }\r\n setState({ errors: result.errors });\r\n meta.pending = false;\r\n return result;\r\n });\r\n const validateValidStateOnly = withLatest(async () => {\r\n return validateCurrentValue('silent');\r\n }, result => {\r\n if (markedForRemoval) {\r\n result.valid = true;\r\n }\r\n meta.valid = result.valid;\r\n return result;\r\n });\r\n function validate$1(opts) {\r\n if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {\r\n return validateValidStateOnly();\r\n }\r\n return validateWithStateMutation();\r\n }\r\n // Common input/change event handler\r\n function handleChange(e, shouldValidate = true) {\r\n const newValue = normalizeEventValue(e);\r\n value.value = newValue;\r\n if (!validateOnValueUpdate && shouldValidate) {\r\n validateWithStateMutation();\r\n }\r\n }\r\n // Runs the initial validation\r\n onMounted(() => {\r\n if (validateOnMount) {\r\n return validateWithStateMutation();\r\n }\r\n // validate self initially if no form was handling this\r\n // forms should have their own initial silent validation run to make things more efficient\r\n if (!form || !form.validateSchema) {\r\n validateValidStateOnly();\r\n }\r\n });\r\n function setTouched(isTouched) {\r\n meta.touched = isTouched;\r\n }\r\n let unwatchValue;\r\n let lastWatchedValue = klona(value.value);\r\n function watchValue() {\r\n unwatchValue = watch(value, (val, oldVal) => {\r\n if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {\r\n return;\r\n }\r\n const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;\r\n validateFn();\r\n lastWatchedValue = klona(val);\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n watchValue();\r\n function resetField(state) {\r\n var _a;\r\n unwatchValue === null || unwatchValue === void 0 ? void 0 : unwatchValue();\r\n const newValue = state && 'value' in state ? state.value : initialValue.value;\r\n setState({\r\n value: klona(newValue),\r\n initialValue: klona(newValue),\r\n touched: (_a = state === null || state === void 0 ? void 0 : state.touched) !== null && _a !== void 0 ? _a : false,\r\n errors: (state === null || state === void 0 ? void 0 : state.errors) || [],\r\n });\r\n meta.pending = false;\r\n meta.validated = false;\r\n validateValidStateOnly();\r\n // need to watch at next tick to avoid triggering the value watcher\r\n nextTick(() => {\r\n watchValue();\r\n });\r\n }\r\n function setValue(newValue) {\r\n value.value = newValue;\r\n }\r\n function setErrors(errors) {\r\n setState({ errors: Array.isArray(errors) ? errors : [errors] });\r\n }\r\n const field = {\r\n id,\r\n name,\r\n label,\r\n value,\r\n meta,\r\n errors,\r\n errorMessage,\r\n type,\r\n checkedValue,\r\n uncheckedValue,\r\n bails,\r\n keepValueOnUnmount,\r\n resetField,\r\n handleReset: () => resetField(),\r\n validate: validate$1,\r\n handleChange,\r\n handleBlur,\r\n setState,\r\n setTouched,\r\n setErrors,\r\n setValue,\r\n };\r\n provide(FieldContextKey, field);\r\n if (isRef(rules) && typeof unref(rules) !== 'function') {\r\n watch(rules, (value, oldValue) => {\r\n if (isEqual(value, oldValue)) {\r\n return;\r\n }\r\n meta.validated ? validateWithStateMutation() : validateValidStateOnly();\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n field._vm = getCurrentInstance();\r\n watch(() => (Object.assign(Object.assign({ errors: errors.value }, meta), { value: value.value })), refreshInspector, {\r\n deep: true,\r\n });\r\n if (!form) {\r\n registerSingleFieldWithDevtools(field);\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 markedForRemoval = true;\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) || isYupValidator(rulesVal) || Array.isArray(rulesVal)) {\r\n return {};\r\n }\r\n return Object.keys(rulesVal).reduce((acc, rule) => {\r\n const deps = extractLocators(rulesVal[rule])\r\n .map((dep) => dep.__locatorRef)\r\n .reduce((depAcc, depName) => {\r\n const depValue = getFromPath(form.values, depName) || form.values[depName];\r\n if (depValue !== undefined) {\r\n depAcc[depName] = depValue;\r\n }\r\n return depAcc;\r\n }, {});\r\n Object.assign(acc, deps);\r\n return acc;\r\n }, {});\r\n });\r\n // Adds a watcher that runs the validation whenever field dependencies change\r\n watch(dependencies, (deps, oldDeps) => {\r\n // Skip if no dependencies or if the field wasn't manipulated\r\n if (!Object.keys(deps).length) {\r\n return;\r\n }\r\n const shouldValidate = !isEqual(deps, oldDeps);\r\n if (shouldValidate) {\r\n meta.validated ? validateWithStateMutation() : validateValidStateOnly();\r\n }\r\n });\r\n return field;\r\n}\r\n/**\r\n * Normalizes partial field options to include the full options\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 label: name,\r\n validateOnValueUpdate: true,\r\n keepValueOnUnmount: undefined,\r\n modelPropName: 'modelValue',\r\n syncVModel: true,\r\n controlled: true,\r\n });\r\n if (!opts) {\r\n return defaults();\r\n }\r\n // TODO: Deprecate this in next major release\r\n const checkedValue = 'valueProp' in opts ? opts.valueProp : opts.checkedValue;\r\n const controlled = 'standalone' in opts ? !opts.standalone : opts.controlled;\r\n return Object.assign(Object.assign(Object.assign({}, defaults()), (opts || {})), { controlled: controlled !== null && controlled !== void 0 ? controlled : true, checkedValue });\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\nfunction useCheckboxField(name, rules, opts) {\r\n const form = !(opts === null || opts === void 0 ? void 0 : opts.standalone) ? injectWithSelf(FormContextKey) : undefined;\r\n const checkedValue = opts === null || opts === void 0 ? void 0 : opts.checkedValue;\r\n const uncheckedValue = opts === null || opts === void 0 ? void 0 : opts.uncheckedValue;\r\n function patchCheckboxApi(field) {\r\n const handleChange = field.handleChange;\r\n const checked = computed(() => {\r\n const currentValue = unref(field.value);\r\n const checkedVal = unref(checkedValue);\r\n return Array.isArray(currentValue)\r\n ? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0\r\n : isEqual(checkedVal, currentValue);\r\n });\r\n function handleCheckboxChange(e, shouldValidate = true) {\r\n var _a;\r\n if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {\r\n if (shouldValidate) {\r\n field.validate();\r\n }\r\n return;\r\n }\r\n let newValue = normalizeEventValue(e);\r\n // Single checkbox field without a form to toggle it's value\r\n if (!form) {\r\n newValue = resolveNextCheckboxValue(unref(field.value), unref(checkedValue), unref(uncheckedValue));\r\n }\r\n handleChange(newValue, shouldValidate);\r\n }\r\n return Object.assign(Object.assign({}, field), { checked,\r\n checkedValue,\r\n uncheckedValue, handleChange: handleCheckboxChange });\r\n }\r\n return patchCheckboxApi(_useField(name, rules, opts));\r\n}\r\nfunction useVModel({ prop, value, handleChange }) {\r\n const vm = getCurrentInstance();\r\n /* istanbul ignore next */\r\n if (!vm) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn('Failed to setup model events because `useField` was not called in setup.');\r\n }\r\n return;\r\n }\r\n const propName = prop || 'modelValue';\r\n const emitName = `update:${propName}`;\r\n // Component doesn't have a model prop setup (must be defined on the props)\r\n if (!(propName in vm.props)) {\r\n return;\r\n }\r\n watch(value, newValue => {\r\n if (isEqual(newValue, getCurrentModelValue(vm, propName))) {\r\n return;\r\n }\r\n vm.emit(emitName, newValue);\r\n });\r\n watch(() => getCurrentModelValue(vm, propName), propValue => {\r\n if (propValue === IS_ABSENT && value.value === undefined) {\r\n return;\r\n }\r\n const newValue = propValue === IS_ABSENT ? undefined : propValue;\r\n if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {\r\n return;\r\n }\r\n handleChange(newValue);\r\n });\r\n}\r\nfunction getCurrentModelValue(vm, propName) {\r\n return vm.props[propName];\r\n}\n\nconst FieldImpl = 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: undefined,\r\n },\r\n validateOnMount: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n validateOnBlur: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnChange: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnInput: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnModelUpdate: {\r\n type: Boolean,\r\n default: undefined,\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 uncheckedValue: {\r\n type: null,\r\n default: undefined,\r\n },\r\n modelValue: {\r\n type: null,\r\n default: IS_ABSENT,\r\n },\r\n modelModifiers: {\r\n type: null,\r\n default: () => ({}),\r\n },\r\n 'onUpdate:modelValue': {\r\n type: null,\r\n default: undefined,\r\n },\r\n standalone: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n keepValue: {\r\n type: Boolean,\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 uncheckedValue = toRef(props, 'uncheckedValue');\r\n const keepValue = toRef(props, 'keepValue');\r\n const { errors, value, errorMessage, validate: validateField, handleChange, handleBlur, setTouched, resetField, handleReset, meta, checked, setErrors, } = useField(name, rules, {\r\n validateOnMount: props.validateOnMount,\r\n bails: props.bails,\r\n standalone: props.standalone,\r\n type: ctx.attrs.type,\r\n initialValue: resolveInitialValue(props, ctx),\r\n // Only for checkboxes and radio buttons\r\n checkedValue: ctx.attrs.value,\r\n uncheckedValue,\r\n label,\r\n validateOnValueUpdate: false,\r\n keepValueOnUnmount: keepValue,\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 = function handleChangeWithModel(e, shouldValidate = true) {\r\n handleChange(e, shouldValidate);\r\n ctx.emit('update:modelValue', value.value);\r\n };\r\n const handleInput = (e) => {\r\n if (!hasCheckedAttr(ctx.attrs.type)) {\r\n value.value = normalizeEventValue(e);\r\n }\r\n };\r\n const onInputHandler = function handleInputWithModel(e) {\r\n handleInput(e);\r\n ctx.emit('update:modelValue', value.value);\r\n };\r\n const fieldProps = computed(() => {\r\n const { validateOnInput, validateOnChange, validateOnBlur, validateOnModelUpdate } = resolveValidationTriggers(props);\r\n const baseOnBlur = [handleBlur, ctx.attrs.onBlur, validateOnBlur ? validateField : undefined].filter(Boolean);\r\n const baseOnInput = [(e) => onChangeHandler(e, validateOnInput), ctx.attrs.onInput].filter(Boolean);\r\n const baseOnChange = [(e) => onChangeHandler(e, validateOnChange), ctx.attrs.onChange].filter(Boolean);\r\n const attrs = {\r\n name: props.name,\r\n onBlur: baseOnBlur,\r\n onInput: baseOnInput,\r\n onChange: baseOnChange,\r\n };\r\n attrs['onUpdate:modelValue'] = e => onChangeHandler(e, validateOnModelUpdate);\r\n if (hasCheckedAttr(ctx.attrs.type) && checked) {\r\n attrs.checked = checked.value;\r\n }\r\n const tag = resolveTag(props, ctx);\r\n if (shouldHaveValueBinding(tag, ctx.attrs)) {\r\n attrs.value = value.value;\r\n }\r\n return attrs;\r\n });\r\n function slotProps() {\r\n return {\r\n field: fieldProps.value,\r\n value: value.value,\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 setTouched,\r\n setErrors,\r\n };\r\n }\r\n ctx.expose({\r\n setErrors,\r\n setTouched,\r\n reset: resetField,\r\n validate: validateField,\r\n handleChange,\r\n });\r\n return () => {\r\n const tag = resolveDynamicComponent(resolveTag(props, ctx));\r\n const children = normalizeChildren(tag, ctx, slotProps);\r\n if (tag) {\r\n return h(tag, Object.assign(Object.assign({}, ctx.attrs), fieldProps.value), 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}\r\nfunction resolveValidationTriggers(props) {\r\n var _a, _b, _c, _d;\r\n const { validateOnInput, validateOnChange, validateOnBlur, validateOnModelUpdate } = getConfig();\r\n return {\r\n validateOnInput: (_a = props.validateOnInput) !== null && _a !== void 0 ? _a : validateOnInput,\r\n validateOnChange: (_b = props.validateOnChange) !== null && _b !== void 0 ? _b : validateOnChange,\r\n validateOnBlur: (_c = props.validateOnBlur) !== null && _c !== void 0 ? _c : validateOnBlur,\r\n validateOnModelUpdate: (_d = props.validateOnModelUpdate) !== null && _d !== void 0 ? _d : validateOnModelUpdate,\r\n };\r\n}\r\nfunction resolveInitialValue(props, ctx) {\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 if (!hasCheckedAttr(ctx.attrs.type)) {\r\n return isPropPresent(props, 'modelValue') ? props.modelValue : ctx.attrs.value;\r\n }\r\n return isPropPresent(props, 'modelValue') ? props.modelValue : undefined;\r\n}\r\nconst Field = FieldImpl;\n\nlet FORM_COUNTER = 0;\r\nfunction useForm(opts) {\r\n var _a;\r\n const formId = FORM_COUNTER++;\r\n const controlledModelPaths = new Set();\r\n // Prevents fields from double resetting their values, which causes checkboxes to toggle their initial value\r\n // TODO: This won't be needed if we centralize all the state inside the `form` for form inputs\r\n let RESET_LOCK = false;\r\n // A lookup containing fields or field groups\r\n const fieldsByPath = ref({});\r\n // If the form is currently submitting\r\n const isSubmitting = ref(false);\r\n // The number of times the user tried to submit the form\r\n const submitCount = ref(0);\r\n // field arrays managed by this form\r\n const fieldArrays = [];\r\n // a private ref for all form values\r\n const formValues = reactive(klona(unref(opts === null || opts === void 0 ? void 0 : opts.initialValues) || {}));\r\n // the source of errors for the form fields\r\n const { errorBag, setErrorBag, setFieldErrorBag } = useErrorBag(opts === null || opts === void 0 ? void 0 : opts.initialErrors);\r\n // Gets the first error of each field\r\n const errors = computed(() => {\r\n return keysOf(errorBag.value).reduce((acc, key) => {\r\n const bag = errorBag.value[key];\r\n if (bag && bag.length) {\r\n acc[key] = bag[0];\r\n }\r\n return acc;\r\n }, {});\r\n });\r\n function getFirstFieldAtPath(path) {\r\n const fieldOrGroup = fieldsByPath.value[path];\r\n return Array.isArray(fieldOrGroup) ? fieldOrGroup[0] : fieldOrGroup;\r\n }\r\n function fieldExists(path) {\r\n return !!fieldsByPath.value[path];\r\n }\r\n /**\r\n * Holds a computed reference to all fields names and labels\r\n */\r\n const fieldNames = computed(() => {\r\n return keysOf(fieldsByPath.value).reduce((names, path) => {\r\n const field = getFirstFieldAtPath(path);\r\n if (field) {\r\n names[path] = unref(field.label || field.name) || '';\r\n }\r\n return names;\r\n }, {});\r\n });\r\n const fieldBailsMap = computed(() => {\r\n return keysOf(fieldsByPath.value).reduce((map, path) => {\r\n var _a;\r\n const field = getFirstFieldAtPath(path);\r\n if (field) {\r\n map[path] = (_a = field.bails) !== null && _a !== void 0 ? _a : true;\r\n }\r\n return map;\r\n }, {});\r\n });\r\n // mutable non-reactive reference to initial errors\r\n // we need this to process initial errors then unset them\r\n const initialErrors = Object.assign({}, ((opts === null || opts === void 0 ? void 0 : opts.initialErrors) || {}));\r\n const keepValuesOnUnmount = (_a = opts === null || opts === void 0 ? void 0 : opts.keepValuesOnUnmount) !== null && _a !== void 0 ? _a : false;\r\n // initial form values\r\n const { initialValues, originalInitialValues, setInitialValues } = useFormInitialValues(fieldsByPath, formValues, opts === null || opts === void 0 ? void 0 : opts.initialValues);\r\n // form meta aggregations\r\n const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);\r\n const controlledValues = computed(() => {\r\n return [...controlledModelPaths, ...keysOf(fieldsByPath.value)].reduce((acc, path) => {\r\n const value = getFromPath(formValues, path);\r\n setInPath(acc, path, value);\r\n return acc;\r\n }, {});\r\n });\r\n const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;\r\n /**\r\n * Batches validation runs in 5ms batches\r\n * Must have two distinct batch queues to make sure they don't override each other settings #3783\r\n */\r\n const debouncedSilentValidation = debounceAsync(_validateSchema, 5);\r\n const debouncedValidation = debounceAsync(_validateSchema, 5);\r\n const validateSchema = withLatest(async (mode) => {\r\n return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();\r\n }, (formResult, [mode]) => {\r\n // fields by id lookup\r\n const fieldsById = formCtx.fieldsByPath.value || {};\r\n // errors fields names, we need it to also check if custom errors are updated\r\n const currentErrorsPaths = keysOf(formCtx.errorBag.value);\r\n // collect all the keys from the schema and all fields\r\n // this ensures we have a complete keymap of all the fields\r\n const paths = [\r\n ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),\r\n ];\r\n // aggregates the paths into a single result object while applying the results on the fields\r\n return paths.reduce((validation, path) => {\r\n const field = fieldsById[path];\r\n const messages = (formResult.results[path] || { errors: [] }).errors;\r\n const fieldResult = {\r\n errors: messages,\r\n valid: !messages.length,\r\n };\r\n validation.results[path] = fieldResult;\r\n if (!fieldResult.valid) {\r\n validation.errors[path] = fieldResult.errors[0];\r\n }\r\n // field not rendered\r\n if (!field) {\r\n setFieldError(path, messages);\r\n return validation;\r\n }\r\n // always update the valid flag regardless of the mode\r\n applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));\r\n if (mode === 'silent') {\r\n return validation;\r\n }\r\n const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;\r\n if (mode === 'validated-only' && !wasValidated) {\r\n return validation;\r\n }\r\n applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));\r\n return validation;\r\n }, { valid: formResult.valid, results: {}, errors: {} });\r\n });\r\n function makeSubmissionFactory(onlyControlled) {\r\n return function submitHandlerFactory(fn, onValidationError) {\r\n return function submissionHandler(e) {\r\n if (e instanceof Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n // Touch all fields\r\n setTouched(keysOf(fieldsByPath.value).reduce((acc, field) => {\r\n acc[field] = true;\r\n return acc;\r\n }, {}));\r\n isSubmitting.value = true;\r\n submitCount.value++;\r\n return validate()\r\n .then(result => {\r\n const values = klona(formValues);\r\n if (result.valid && typeof fn === 'function') {\r\n const controlled = klona(controlledValues.value);\r\n return fn(onlyControlled ? controlled : values, {\r\n evt: e,\r\n controlledValues: controlled,\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 if (!result.valid && typeof onValidationError === 'function') {\r\n onValidationError({\r\n values,\r\n evt: e,\r\n errors: result.errors,\r\n results: result.results,\r\n });\r\n }\r\n })\r\n .then(returnVal => {\r\n isSubmitting.value = false;\r\n return returnVal;\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 }\r\n const handleSubmitImpl = makeSubmissionFactory(false);\r\n const handleSubmit = handleSubmitImpl;\r\n handleSubmit.withControlled = makeSubmissionFactory(true);\r\n const formCtx = {\r\n formId,\r\n fieldsByPath,\r\n values: formValues,\r\n controlledValues,\r\n errorBag,\r\n errors,\r\n schema,\r\n submitCount,\r\n meta,\r\n isSubmitting,\r\n fieldArrays,\r\n keepValuesOnUnmount,\r\n validateSchema: unref(schema) ? validateSchema : undefined,\r\n validate,\r\n register: registerField,\r\n unregister: unregisterField,\r\n setFieldErrorBag,\r\n validateField,\r\n setFieldValue,\r\n setValues,\r\n setErrors,\r\n setFieldError,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n handleSubmit,\r\n stageInitialValue,\r\n unsetInitialValue,\r\n setFieldInitialValue,\r\n useFieldModel,\r\n };\r\n function isFieldGroup(fieldOrGroup) {\r\n return Array.isArray(fieldOrGroup);\r\n }\r\n function applyFieldMutation(fieldOrGroup, mutation) {\r\n if (Array.isArray(fieldOrGroup)) {\r\n return fieldOrGroup.forEach(mutation);\r\n }\r\n return mutation(fieldOrGroup);\r\n }\r\n function mutateAllFields(mutation) {\r\n Object.values(fieldsByPath.value).forEach(field => {\r\n if (!field) {\r\n return;\r\n }\r\n // avoid resetting the field values, because they should've been reset already.\r\n applyFieldMutation(field, mutation);\r\n });\r\n }\r\n /**\r\n * Manually sets an error message on a specific field\r\n */\r\n function setFieldError(field, message) {\r\n setFieldErrorBag(field, 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 setErrorBag(fields);\r\n }\r\n /**\r\n * Sets a single field value\r\n */\r\n function setFieldValue(field, value, { force } = { force: false }) {\r\n var _a;\r\n const fieldInstance = fieldsByPath.value[field];\r\n const clonedValue = klona(value);\r\n // field wasn't found, create a virtual field as a placeholder\r\n if (!fieldInstance) {\r\n setInPath(formValues, field, clonedValue);\r\n return;\r\n }\r\n if (isFieldGroup(fieldInstance) && ((_a = fieldInstance[0]) === null || _a === void 0 ? void 0 : _a.type) === 'checkbox' && !Array.isArray(value)) {\r\n // Multiple checkboxes, and only one of them got updated\r\n const newValue = klona(resolveNextCheckboxValue(getFromPath(formValues, field) || [], value, undefined));\r\n setInPath(formValues, field, newValue);\r\n return;\r\n }\r\n let newValue = clonedValue;\r\n // Single Checkbox: toggles the field value unless the field is being reset then force it\r\n if (!isFieldGroup(fieldInstance) && fieldInstance.type === 'checkbox' && !force && !RESET_LOCK) {\r\n newValue = klona(resolveNextCheckboxValue(getFromPath(formValues, field), value, unref(fieldInstance.uncheckedValue)));\r\n }\r\n setInPath(formValues, field, newValue);\r\n }\r\n /**\r\n * Sets multiple fields values\r\n */\r\n function setValues(fields) {\r\n // clean up old values\r\n keysOf(formValues).forEach(key => {\r\n delete formValues[key];\r\n });\r\n // set up new values\r\n keysOf(fields).forEach(path => {\r\n setFieldValue(path, fields[path]);\r\n });\r\n // regenerate the arrays when the form values change\r\n fieldArrays.forEach(f => f && f.reset());\r\n }\r\n function createModel(path) {\r\n const { value } = _useFieldValue(path, undefined, formCtx);\r\n watch(value, () => {\r\n if (!fieldExists(unref(path))) {\r\n validate({ mode: 'validated-only' });\r\n }\r\n }, {\r\n deep: true,\r\n });\r\n controlledModelPaths.add(unref(path));\r\n return value;\r\n }\r\n function useFieldModel(path) {\r\n if (!Array.isArray(path)) {\r\n return createModel(path);\r\n }\r\n return path.map(createModel);\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 = fieldsByPath.value[field];\r\n if (fieldInstance) {\r\n applyFieldMutation(fieldInstance, f => f.setTouched(isTouched));\r\n }\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 * Resets all fields\r\n */\r\n function resetForm(state) {\r\n RESET_LOCK = true;\r\n // Reset all field states first\r\n mutateAllFields(f => f.resetField());\r\n // reset values\r\n const newValues = (state === null || state === void 0 ? void 0 : state.values) ? state.values : originalInitialValues.value;\r\n setInitialValues(newValues);\r\n setValues(newValues);\r\n if (state === null || state === void 0 ? void 0 : state.touched) {\r\n setTouched(state.touched);\r\n }\r\n setErrors((state === null || state === void 0 ? void 0 : state.errors) || {});\r\n submitCount.value = (state === null || state === void 0 ? void 0 : state.submitCount) || 0;\r\n nextTick(() => {\r\n RESET_LOCK = false;\r\n });\r\n }\r\n function insertFieldAtPath(field, path) {\r\n const rawField = markRaw(field);\r\n const fieldPath = path;\r\n // first field at that path\r\n if (!fieldsByPath.value[fieldPath]) {\r\n fieldsByPath.value[fieldPath] = rawField;\r\n return;\r\n }\r\n const fieldAtPath = fieldsByPath.value[fieldPath];\r\n if (fieldAtPath && !Array.isArray(fieldAtPath)) {\r\n fieldsByPath.value[fieldPath] = [fieldAtPath];\r\n }\r\n // add the new array to that path\r\n fieldsByPath.value[fieldPath] = [...fieldsByPath.value[fieldPath], rawField];\r\n }\r\n function removeFieldFromPath(field, path) {\r\n const fieldPath = path;\r\n const fieldAtPath = fieldsByPath.value[fieldPath];\r\n if (!fieldAtPath) {\r\n return;\r\n }\r\n // same field at path\r\n if (!isFieldGroup(fieldAtPath) && field.id === fieldAtPath.id) {\r\n delete fieldsByPath.value[fieldPath];\r\n return;\r\n }\r\n if (isFieldGroup(fieldAtPath)) {\r\n const idx = fieldAtPath.findIndex(f => f.id === field.id);\r\n if (idx === -1) {\r\n return;\r\n }\r\n fieldAtPath.splice(idx, 1);\r\n if (!fieldAtPath.length) {\r\n delete fieldsByPath.value[fieldPath];\r\n }\r\n }\r\n }\r\n function registerField(field) {\r\n const fieldPath = unref(field.name);\r\n insertFieldAtPath(field, fieldPath);\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, async (newPath, oldPath) => {\r\n // cache the value\r\n await nextTick();\r\n removeFieldFromPath(field, oldPath);\r\n insertFieldAtPath(field, newPath);\r\n // re-validate if either path had errors before\r\n if (errors.value[oldPath] || errors.value[newPath]) {\r\n // clear up both paths errors\r\n setFieldError(oldPath, undefined);\r\n validateField(newPath);\r\n }\r\n // clean up the old path if no other field is sharing that name\r\n // #3325\r\n await nextTick();\r\n if (!fieldExists(oldPath)) {\r\n unsetPath(formValues, oldPath);\r\n }\r\n });\r\n }\r\n // if field already had errors (initial errors) that's not user-set, validate it again to ensure state is correct\r\n // the difference being that `initialErrors` will contain the error message while other errors (pre-validated schema) won't have them as initial errors\r\n // #3342\r\n const initialErrorMessage = unref(field.errorMessage);\r\n if (initialErrorMessage && (initialErrors === null || initialErrors === void 0 ? void 0 : initialErrors[fieldPath]) !== initialErrorMessage) {\r\n validateField(fieldPath);\r\n }\r\n // marks the initial error as \"consumed\" so it won't be matched later with same non-initial error\r\n delete initialErrors[fieldPath];\r\n }\r\n function unregisterField(field) {\r\n const fieldName = unref(field.name);\r\n const fieldInstance = fieldsByPath.value[fieldName];\r\n const isGroup = !!fieldInstance && isFieldGroup(fieldInstance);\r\n removeFieldFromPath(field, fieldName);\r\n // clears a field error on unmounted\r\n // we wait till next tick to make sure if the field is completely removed and doesn't have any siblings like checkboxes\r\n nextTick(() => {\r\n var _a;\r\n const shouldKeepValue = (_a = unref(field.keepValueOnUnmount)) !== null && _a !== void 0 ? _a : unref(keepValuesOnUnmount);\r\n const currentGroupValue = getFromPath(formValues, fieldName);\r\n // The boolean here is we check if the field still belongs to the same control group with that name\r\n // if another group claimed the name, we should avoid handling it since it is no longer the same group\r\n // this happens with `v-for` over some checkboxes and field arrays.\r\n // also if the group no longer exist we can assume this group was the last one that controlled it\r\n const isSameGroup = isGroup && (fieldInstance === fieldsByPath.value[fieldName] || !fieldsByPath.value[fieldName]);\r\n // group field that still has a dangling value, the field may exist or not after it was removed.\r\n // This used to be handled in the useField composable but the form has better context on when it should/not happen.\r\n // if it does belong to it that means the group still exists\r\n // #3844\r\n if (isSameGroup && !shouldKeepValue) {\r\n if (Array.isArray(currentGroupValue)) {\r\n const valueIdx = currentGroupValue.findIndex(i => isEqual(i, unref(field.checkedValue)));\r\n if (valueIdx > -1) {\r\n const newVal = [...currentGroupValue];\r\n newVal.splice(valueIdx, 1);\r\n setFieldValue(fieldName, newVal, { force: true });\r\n }\r\n }\r\n else if (currentGroupValue === unref(field.checkedValue)) {\r\n // Remove field if it is a group but does not have an array value, like for radio inputs #3963\r\n unsetPath(formValues, fieldName);\r\n }\r\n }\r\n // Field was removed entirely, we should unset its path\r\n // #3384\r\n if (!fieldExists(fieldName)) {\r\n setFieldError(fieldName, undefined);\r\n // Checks if the field was configured to be unset during unmount or not\r\n // Checks both the form-level config and field-level one\r\n // Field has the priority if it is set, otherwise it goes to the form settings\r\n if (shouldKeepValue) {\r\n return;\r\n }\r\n // Don't apply emptyContainer check unless the current group value is an array\r\n if (isGroup && Array.isArray(currentGroupValue) && !isEmptyContainer(currentGroupValue)) {\r\n return;\r\n }\r\n unsetPath(formValues, fieldName);\r\n }\r\n });\r\n }\r\n async function validate(opts) {\r\n const mode = (opts === null || opts === void 0 ? void 0 : opts.mode) || 'force';\r\n if (mode === 'force') {\r\n mutateAllFields(f => (f.meta.validated = true));\r\n }\r\n if (formCtx.validateSchema) {\r\n return formCtx.validateSchema(mode);\r\n }\r\n // No schema, each field is responsible to validate itself\r\n const validations = await Promise.all(Object.values(fieldsByPath.value).map(field => {\r\n const fieldInstance = Array.isArray(field) ? field[0] : field;\r\n if (!fieldInstance) {\r\n return Promise.resolve({ key: '', valid: true, errors: [] });\r\n }\r\n return fieldInstance.validate(opts).then((result) => {\r\n return {\r\n key: unref(fieldInstance.name),\r\n valid: result.valid,\r\n errors: result.errors,\r\n };\r\n });\r\n }));\r\n const results = {};\r\n const errors = {};\r\n for (const validation of validations) {\r\n results[validation.key] = {\r\n valid: validation.valid,\r\n errors: validation.errors,\r\n };\r\n if (validation.errors.length) {\r\n errors[validation.key] = validation.errors[0];\r\n }\r\n }\r\n return {\r\n valid: validations.every(r => r.valid),\r\n results,\r\n errors,\r\n };\r\n }\r\n async function validateField(field) {\r\n const fieldInstance = fieldsByPath.value[field];\r\n if (!fieldInstance) {\r\n warn$1(`field with name ${field} was not found`);\r\n return Promise.resolve({ errors: [], valid: true });\r\n }\r\n if (Array.isArray(fieldInstance)) {\r\n return fieldInstance.map(f => f.validate())[0];\r\n }\r\n return fieldInstance.validate();\r\n }\r\n function unsetInitialValue(path) {\r\n unsetPath(initialValues.value, path);\r\n }\r\n /**\r\n * Sneaky function to set initial field values\r\n */\r\n function stageInitialValue(path, value, updateOriginal = false) {\r\n setInPath(formValues, path, value);\r\n setFieldInitialValue(path, value);\r\n if (updateOriginal && !(opts === null || opts === void 0 ? void 0 : opts.initialValues)) {\r\n setInPath(originalInitialValues.value, path, klona(value));\r\n }\r\n }\r\n function setFieldInitialValue(path, value) {\r\n setInPath(initialValues.value, path, klona(value));\r\n }\r\n async function _validateSchema() {\r\n const schemaValue = unref(schema);\r\n if (!schemaValue) {\r\n return { valid: true, results: {}, errors: {} };\r\n }\r\n const formResult = isYupValidator(schemaValue)\r\n ? await validateYupSchema(schemaValue, formValues)\r\n : await validateObjectSchema(schemaValue, formValues, {\r\n names: fieldNames.value,\r\n bailsMap: fieldBailsMap.value,\r\n });\r\n return formResult;\r\n }\r\n const submitForm = handleSubmit((_, { evt }) => {\r\n if (isFormSubmitEvent(evt)) {\r\n evt.target.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.initialTouched) {\r\n setTouched(opts.initialTouched);\r\n }\r\n // if validate on mount was enabled\r\n if (opts === null || opts === void 0 ? void 0 : opts.validateOnMount) {\r\n validate();\r\n return;\r\n }\r\n // otherwise run initial silent validation through schema if available\r\n // the useField should skip their own silent validation if a yup schema is present\r\n if (formCtx.validateSchema) {\r\n formCtx.validateSchema('silent');\r\n }\r\n });\r\n if (isRef(schema)) {\r\n watch(schema, () => {\r\n var _a;\r\n (_a = formCtx.validateSchema) === null || _a === void 0 ? void 0 : _a.call(formCtx, 'validated-only');\r\n });\r\n }\r\n // Provide injections\r\n provide(FormContextKey, formCtx);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n registerFormWithDevTools(formCtx);\r\n watch(() => (Object.assign(Object.assign({ errors: errorBag.value }, meta.value), { values: formValues, isSubmitting: isSubmitting.value, submitCount: submitCount.value })), refreshInspector, {\r\n deep: true,\r\n });\r\n }\r\n return Object.assign(Object.assign({}, formCtx), { handleReset: () => resetForm(), submitForm });\r\n}\r\n/**\r\n * Manages form meta aggregation\r\n */\r\nfunction useFormMeta(fieldsByPath, currentValues, initialValues, errors) {\r\n const MERGE_STRATEGIES = {\r\n touched: 'some',\r\n pending: 'some',\r\n valid: 'every',\r\n };\r\n const isDirty = computed(() => {\r\n return !isEqual(currentValues, unref(initialValues));\r\n });\r\n function calculateFlags() {\r\n const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);\r\n return keysOf(MERGE_STRATEGIES).reduce((acc, flag) => {\r\n const mergeMethod = MERGE_STRATEGIES[flag];\r\n acc[flag] = fields[mergeMethod](field => field.meta[flag]);\r\n return acc;\r\n }, {});\r\n }\r\n const flags = reactive(calculateFlags());\r\n watchEffect(() => {\r\n const value = calculateFlags();\r\n flags.touched = value.touched;\r\n flags.valid = value.valid;\r\n flags.pending = value.pending;\r\n });\r\n return computed(() => {\r\n return Object.assign(Object.assign({ initialValues: unref(initialValues) }, flags), { valid: flags.valid && !keysOf(errors.value).length, dirty: isDirty.value });\r\n });\r\n}\r\n/**\r\n * Manages the initial values prop\r\n */\r\nfunction useFormInitialValues(fields, formValues, providedValues) {\r\n // these are the mutable initial values as the fields are mounted/unmounted\r\n const initialValues = ref(klona(unref(providedValues)) || {});\r\n // these are the original initial value as provided by the user initially, they don't keep track of conditional fields\r\n // this is important because some conditional fields will overwrite the initial values for other fields who had the same name\r\n // like array fields, any push/insert operation will overwrite the initial values because they \"create new fields\"\r\n // so these are the values that the reset function should use\r\n // these only change when the user explicitly chanegs the initial values or when the user resets them with new values.\r\n const originalInitialValues = ref(klona(unref(providedValues)) || {});\r\n function setInitialValues(values, updateFields = false) {\r\n initialValues.value = klona(values);\r\n originalInitialValues.value = klona(values);\r\n if (!updateFields) {\r\n return;\r\n }\r\n // update the pristine non-touched fields\r\n // those are excluded 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 // if the user API is taking too much time before user interaction they should consider disabling or hiding their inputs until the values are ready\r\n keysOf(fields.value).forEach(fieldPath => {\r\n const field = fields.value[fieldPath];\r\n const wasTouched = Array.isArray(field) ? field.some(f => f.meta.touched) : field === null || field === void 0 ? void 0 : field.meta.touched;\r\n if (!field || wasTouched) {\r\n return;\r\n }\r\n const newValue = getFromPath(initialValues.value, fieldPath);\r\n setInPath(formValues, fieldPath, klona(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 return {\r\n initialValues,\r\n originalInitialValues,\r\n setInitialValues,\r\n };\r\n}\r\nfunction useErrorBag(initialErrors) {\r\n const errorBag = ref({});\r\n function normalizeErrorItem(message) {\r\n return Array.isArray(message) ? message : message ? [message] : [];\r\n }\r\n /**\r\n * Manually sets an error message on a specific field\r\n */\r\n function setFieldErrorBag(field, message) {\r\n if (!message) {\r\n delete errorBag.value[field];\r\n return;\r\n }\r\n errorBag.value[field] = normalizeErrorItem(message);\r\n }\r\n /**\r\n * Sets errors for the fields specified in the object\r\n */\r\n function setErrorBag(fields) {\r\n errorBag.value = keysOf(fields).reduce((acc, key) => {\r\n const message = fields[key];\r\n if (message) {\r\n acc[key] = normalizeErrorItem(message);\r\n }\r\n return acc;\r\n }, {});\r\n }\r\n if (initialErrors) {\r\n setErrorBag(initialErrors);\r\n }\r\n return {\r\n errorBag,\r\n setErrorBag,\r\n setFieldErrorBag,\r\n };\r\n}\n\nconst FormImpl = 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 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 onSubmit: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n onInvalidSubmit: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n keepValues: {\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 validationSchema = toRef(props, 'validationSchema');\r\n const keepValues = toRef(props, 'keepValues');\r\n const { errors, values, meta, isSubmitting, submitCount, controlledValues, validate, validateField, handleReset, resetForm, handleSubmit, setErrors, setFieldError, setFieldValue, setValues, setFieldTouched, setTouched, } = useForm({\r\n validationSchema: validationSchema.value ? validationSchema : undefined,\r\n initialValues,\r\n initialErrors: props.initialErrors,\r\n initialTouched: props.initialTouched,\r\n validateOnMount: props.validateOnMount,\r\n keepValuesOnUnmount: keepValues,\r\n });\r\n const submitForm = handleSubmit((_, { evt }) => {\r\n if (isFormSubmitEvent(evt)) {\r\n evt.target.submit();\r\n }\r\n }, props.onInvalidSubmit);\r\n const onSubmit = props.onSubmit ? handleSubmit(props.onSubmit, props.onInvalidSubmit) : submitForm;\r\n function handleFormReset(e) {\r\n if (isEvent(e)) {\r\n // Prevent default form reset behavior\r\n e.preventDefault();\r\n }\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, props.onInvalidSubmit)(evt);\r\n }\r\n function slotProps() {\r\n return {\r\n meta: meta.value,\r\n errors: errors.value,\r\n values: values,\r\n isSubmitting: isSubmitting.value,\r\n submitCount: submitCount.value,\r\n controlledValues: controlledValues.value,\r\n validate,\r\n validateField,\r\n handleSubmit: handleScopedSlotSubmit,\r\n handleReset,\r\n submitForm,\r\n setErrors,\r\n setFieldError,\r\n setFieldValue,\r\n setValues,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n };\r\n }\r\n // expose these functions and methods as part of public API\r\n ctx.expose({\r\n setFieldError,\r\n setErrors,\r\n setFieldValue,\r\n setValues,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n validate,\r\n validateField,\r\n });\r\n return function renderForm() {\r\n // avoid resolving the form component as itself\r\n const tag = props.as === 'form' ? props.as : resolveDynamicComponent(props.as);\r\n const children = normalizeChildren(tag, ctx, slotProps);\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(tag, Object.assign(Object.assign(Object.assign({}, formAttrs), ctx.attrs), { onSubmit, onReset: handleFormReset }), children);\r\n };\r\n },\r\n});\r\nconst Form = FormImpl;\n\nfunction useFieldArray(arrayPath) {\r\n const form = injectWithSelf(FormContextKey, undefined);\r\n const fields = ref([]);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n const noOp = () => { };\r\n const noOpApi = {\r\n fields,\r\n remove: noOp,\r\n push: noOp,\r\n swap: noOp,\r\n insert: noOp,\r\n update: noOp,\r\n replace: noOp,\r\n prepend: noOp,\r\n move: noOp,\r\n };\r\n if (!form) {\r\n warn('FieldArray requires being a child of `
` or `useForm` being called before it. Array fields may not work correctly');\r\n return noOpApi;\r\n }\r\n if (!unref(arrayPath)) {\r\n warn('FieldArray requires a field path to be provided, did you forget to pass the `name` prop?');\r\n return noOpApi;\r\n }\r\n const alreadyExists = form.fieldArrays.find(a => unref(a.path) === unref(arrayPath));\r\n if (alreadyExists) {\r\n return alreadyExists;\r\n }\r\n let entryCounter = 0;\r\n function initFields() {\r\n const currentValues = getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(arrayPath), []) || [];\r\n fields.value = currentValues.map(createEntry);\r\n updateEntryFlags();\r\n }\r\n initFields();\r\n function updateEntryFlags() {\r\n const fieldsLength = fields.value.length;\r\n for (let i = 0; i < fieldsLength; i++) {\r\n const entry = fields.value[i];\r\n entry.isFirst = i === 0;\r\n entry.isLast = i === fieldsLength - 1;\r\n }\r\n }\r\n function createEntry(value) {\r\n const key = entryCounter++;\r\n const entry = {\r\n key,\r\n value: computedDeep({\r\n get() {\r\n const currentValues = getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(arrayPath), []) || [];\r\n const idx = fields.value.findIndex(e => e.key === key);\r\n return idx === -1 ? value : currentValues[idx];\r\n },\r\n set(value) {\r\n const idx = fields.value.findIndex(e => e.key === key);\r\n if (idx === -1) {\r\n warn(`Attempting to update a non-existent array item`);\r\n return;\r\n }\r\n update(idx, value);\r\n },\r\n }),\r\n isFirst: false,\r\n isLast: false,\r\n };\r\n return entry;\r\n }\r\n function remove(idx) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!pathValue || !Array.isArray(pathValue)) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n newValue.splice(idx, 1);\r\n form === null || form === void 0 ? void 0 : form.unsetInitialValue(pathName + `[${idx}]`);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.splice(idx, 1);\r\n updateEntryFlags();\r\n }\r\n function push(value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const normalizedPathValue = isNullOrUndefined(pathValue) ? [] : pathValue;\r\n if (!Array.isArray(normalizedPathValue)) {\r\n return;\r\n }\r\n const newValue = [...normalizedPathValue];\r\n newValue.push(value);\r\n form === null || form === void 0 ? void 0 : form.stageInitialValue(pathName + `[${newValue.length - 1}]`, value);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.push(createEntry(value));\r\n updateEntryFlags();\r\n }\r\n function swap(indexA, indexB) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || !(indexA in pathValue) || !(indexB in pathValue)) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n const newFields = [...fields.value];\r\n // the old switcheroo\r\n const temp = newValue[indexA];\r\n newValue[indexA] = newValue[indexB];\r\n newValue[indexB] = temp;\r\n const tempEntry = newFields[indexA];\r\n newFields[indexA] = newFields[indexB];\r\n newFields[indexB] = tempEntry;\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n function insert(idx, value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || pathValue.length < idx) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n const newFields = [...fields.value];\r\n newValue.splice(idx, 0, value);\r\n newFields.splice(idx, 0, createEntry(value));\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n function replace(arr) {\r\n const pathName = unref(arrayPath);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, arr);\r\n initFields();\r\n }\r\n function update(idx, value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || pathValue.length - 1 < idx) {\r\n return;\r\n }\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(`${pathName}[${idx}]`, value);\r\n form === null || form === void 0 ? void 0 : form.validate({ mode: 'validated-only' });\r\n }\r\n function prepend(value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const normalizedPathValue = isNullOrUndefined(pathValue) ? [] : pathValue;\r\n if (!Array.isArray(normalizedPathValue)) {\r\n return;\r\n }\r\n const newValue = [value, ...normalizedPathValue];\r\n form === null || form === void 0 ? void 0 : form.stageInitialValue(pathName + `[${newValue.length - 1}]`, value);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.unshift(createEntry(value));\r\n updateEntryFlags();\r\n }\r\n function move(oldIdx, newIdx) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const newValue = isNullOrUndefined(pathValue) ? [] : [...pathValue];\r\n if (!Array.isArray(pathValue) || !(oldIdx in pathValue) || !(newIdx in pathValue)) {\r\n return;\r\n }\r\n const newFields = [...fields.value];\r\n const movedItem = newFields[oldIdx];\r\n newFields.splice(oldIdx, 1);\r\n newFields.splice(newIdx, 0, movedItem);\r\n const movedValue = newValue[oldIdx];\r\n newValue.splice(oldIdx, 1);\r\n newValue.splice(newIdx, 0, movedValue);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n const fieldArrayCtx = {\r\n fields,\r\n remove,\r\n push,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n };\r\n form.fieldArrays.push(Object.assign({ path: arrayPath, reset: initFields }, fieldArrayCtx));\r\n onBeforeUnmount(() => {\r\n const idx = form.fieldArrays.findIndex(i => unref(i.path) === unref(arrayPath));\r\n if (idx >= 0) {\r\n form.fieldArrays.splice(idx, 1);\r\n }\r\n });\r\n return fieldArrayCtx;\r\n}\n\nconst FieldArrayImpl = defineComponent({\r\n name: 'FieldArray',\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const { push, remove, swap, insert, replace, update, prepend, move, fields } = useFieldArray(toRef(props, 'name'));\r\n function slotProps() {\r\n return {\r\n fields: fields.value,\r\n push,\r\n remove,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n };\r\n }\r\n ctx.expose({\r\n push,\r\n remove,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n });\r\n return () => {\r\n const children = normalizeChildren(undefined, ctx, slotProps);\r\n return children;\r\n };\r\n },\r\n});\r\nconst FieldArray = FieldArrayImpl;\n\nconst ErrorMessageImpl = defineComponent({\r\n name: 'ErrorMessage',\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 form = inject(FormContextKey, undefined);\r\n const message = computed(() => {\r\n return form === null || form === void 0 ? void 0 : form.errors.value[props.name];\r\n });\r\n function slotProps() {\r\n return {\r\n message: message.value,\r\n };\r\n }\r\n return () => {\r\n // Renders nothing if there are no messages\r\n if (!message.value) {\r\n return undefined;\r\n }\r\n const tag = (props.as ? resolveDynamicComponent(props.as) : props.as);\r\n const children = normalizeChildren(tag, ctx, slotProps);\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 && (Array.isArray(children) || !children) && (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 ((Array.isArray(children) || !children) && !(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});\r\nconst ErrorMessage = ErrorMessageImpl;\n\nfunction useResetForm() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return function resetForm(state) {\r\n if (!form) {\r\n return;\r\n }\r\n return form.resetForm(state);\r\n };\r\n}\n\n/**\r\n * If a field is dirty or not\r\n */\r\nfunction useIsFieldDirty(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.dirty;\r\n });\r\n}\n\n/**\r\n * If a field is touched or not\r\n */\r\nfunction useIsFieldTouched(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.touched;\r\n });\r\n}\n\n/**\r\n * If a field is validated and is valid\r\n */\r\nfunction useIsFieldValid(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.valid;\r\n });\r\n}\n\n/**\r\n * If the form is submitting or not\r\n */\r\nfunction useIsSubmitting() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.isSubmitting.value) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * Validates a single field\r\n */\r\nfunction useValidateField(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return function validateField() {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return Promise.resolve({\r\n errors: [],\r\n valid: true,\r\n });\r\n }\r\n return field.validate();\r\n };\r\n}\n\n/**\r\n * If the form is dirty or not\r\n */\r\nfunction useIsFormDirty() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.dirty) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * If the form is touched or not\r\n */\r\nfunction useIsFormTouched() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.touched) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * If the form has been validated and is valid\r\n */\r\nfunction useIsFormValid() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.valid) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * Validate multiple fields\r\n */\r\nfunction useValidateForm() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return function validateField() {\r\n if (!form) {\r\n return Promise.resolve({ results: {}, errors: {}, valid: true });\r\n }\r\n return form.validate();\r\n };\r\n}\n\n/**\r\n * The number of form's submission count\r\n */\r\nfunction useSubmitCount() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.submitCount.value) !== null && _a !== void 0 ? _a : 0;\r\n });\r\n}\n\n/**\r\n * Gives access to a field's current value\r\n */\r\nfunction useFieldValue(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n // We don't want to use self injected context as it doesn't make sense\r\n const field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n return getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(path));\r\n }\r\n return unref(field === null || field === void 0 ? void 0 : field.value);\r\n });\r\n}\n\n/**\r\n * Gives access to a form's values\r\n */\r\nfunction useFormValues() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n return (form === null || form === void 0 ? void 0 : form.values) || {};\r\n });\r\n}\n\n/**\r\n * Gives access to all form errors\r\n */\r\nfunction useFormErrors() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n return ((form === null || form === void 0 ? void 0 : form.errors.value) || {});\r\n });\r\n}\n\n/**\r\n * Gives access to a single field error\r\n */\r\nfunction useFieldError(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n // We don't want to use self injected context as it doesn't make sense\r\n const field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n return form === null || form === void 0 ? void 0 : form.errors.value[unref(path)];\r\n }\r\n return field === null || field === void 0 ? void 0 : field.errorMessage.value;\r\n });\r\n}\n\nfunction useSubmitForm(cb) {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n const onSubmit = form ? form.handleSubmit(cb) : undefined;\r\n return function submitForm(e) {\r\n if (!onSubmit) {\r\n return;\r\n }\r\n return onSubmit(e);\r\n };\r\n}\n\nexport { ErrorMessage, Field, FieldArray, FieldContextKey, Form, FormContextKey, IS_ABSENT, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };\n","import { render } from \"./FormProject.vue?vue&type=template&id=44d41a9a\"\nimport script from \"./FormProject.vue?vue&type=script&lang=js\"\nexport * from \"./FormProject.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/codebuild/output/src2070425128/src/dataloop_front/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}