@tanstack/form-core 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{cjs/FieldApi.js → lib/FieldApi.cjs} +80 -113
- package/build/lib/FieldApi.cjs.map +1 -0
- package/build/lib/FieldApi.d.ts +112 -0
- package/build/lib/FieldApi.d.ts.map +1 -0
- package/build/lib/FieldApi.js +305 -0
- package/build/lib/FieldApi.js.map +1 -0
- package/build/lib/FieldApi.legacy.cjs +307 -0
- package/build/lib/FieldApi.legacy.cjs.map +1 -0
- package/build/lib/FieldApi.legacy.js +305 -0
- package/build/lib/FieldApi.legacy.js.map +1 -0
- package/build/{cjs/FormApi.js → lib/FormApi.cjs} +66 -78
- package/build/lib/FormApi.cjs.map +1 -0
- package/build/{types → lib}/FormApi.d.ts +3 -2
- package/build/lib/FormApi.d.ts.map +1 -0
- package/build/lib/FormApi.js +246 -0
- package/build/lib/FormApi.js.map +1 -0
- package/build/lib/FormApi.legacy.cjs +248 -0
- package/build/lib/FormApi.legacy.cjs.map +1 -0
- package/build/lib/FormApi.legacy.js +246 -0
- package/build/lib/FormApi.legacy.js.map +1 -0
- package/build/{cjs/_virtual/_rollupPluginBabelHelpers.js → lib/_virtual/_rollupPluginBabelHelpers.cjs} +18 -45
- package/build/lib/_virtual/_rollupPluginBabelHelpers.cjs.map +1 -0
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js +56 -0
- package/build/{cjs → lib}/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/build/lib/_virtual/_rollupPluginBabelHelpers.legacy.cjs +65 -0
- package/build/lib/_virtual/_rollupPluginBabelHelpers.legacy.cjs.map +1 -0
- package/build/lib/_virtual/_rollupPluginBabelHelpers.legacy.js +56 -0
- package/build/lib/_virtual/_rollupPluginBabelHelpers.legacy.js.map +1 -0
- package/build/lib/index.cjs +14 -0
- package/build/lib/index.cjs.map +1 -0
- package/build/{types → lib}/index.d.ts +1 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +4 -0
- package/build/{cjs → lib}/index.js.map +1 -1
- package/build/lib/index.legacy.cjs +14 -0
- package/build/lib/index.legacy.cjs.map +1 -0
- package/build/lib/index.legacy.js +4 -0
- package/build/lib/index.legacy.js.map +1 -0
- package/build/lib/tests/FieldApi.spec.d.ts +2 -0
- package/build/lib/tests/FieldApi.spec.d.ts.map +1 -0
- package/build/lib/tests/FieldApi.test-d.d.ts +2 -0
- package/build/lib/tests/FieldApi.test-d.d.ts.map +1 -0
- package/build/lib/tests/FormApi.spec.d.ts +2 -0
- package/build/lib/tests/FormApi.spec.d.ts.map +1 -0
- package/build/{cjs/utils.js → lib/utils.cjs} +18 -27
- package/build/lib/utils.cjs.map +1 -0
- package/build/{types → lib}/utils.d.ts +10 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +77 -0
- package/build/lib/utils.js.map +1 -0
- package/build/lib/utils.legacy.cjs +81 -0
- package/build/lib/utils.legacy.cjs.map +1 -0
- package/build/lib/utils.legacy.js +77 -0
- package/build/lib/utils.legacy.js.map +1 -0
- package/package.json +22 -9
- package/src/FieldApi.ts +101 -46
- package/src/FormApi.ts +34 -14
- package/src/tests/FieldApi.spec.ts +169 -0
- package/src/tests/FieldApi.test-d.ts +41 -0
- package/src/tests/FormApi.spec.ts +216 -0
- package/src/utils.ts +10 -1
- package/build/cjs/FieldApi.js.map +0 -1
- package/build/cjs/FormApi.js.map +0 -1
- package/build/cjs/index.js +0 -26
- package/build/cjs/utils.js.map +0 -1
- package/build/esm/index.js +0 -716
- package/build/esm/index.js.map +0 -1
- package/build/stats-html.html +0 -2689
- package/build/stats-react.json +0 -196
- package/build/types/FieldApi.d.ts +0 -85
- package/build/types/tests/test.test.d.ts +0 -0
- package/build/umd/index.development.js +0 -779
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -22
- package/build/umd/index.production.js.map +0 -1
- package/src/tests/test.test.tsx +0 -5
package/build/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/utils.ts","../../src/FormApi.ts","../../src/FieldApi.ts"],"sourcesContent":["export type UpdaterFn<TInput, TOutput = TInput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput = TInput> =\n | TOutput\n | UpdaterFn<TInput, TOutput>\n\nexport function functionalUpdate<TInput, TOutput = TInput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as UpdaterFn<TInput, TOutput>)(input)\n : updater\n}\n\nexport function getBy(obj: any, path: any) {\n const pathArray = makePathArray(path)\n const pathObj = pathArray\n return pathObj.reduce((current: any, pathPart: any) => {\n if (typeof current !== 'undefined') {\n return current[pathPart]\n }\n return undefined\n }, obj)\n}\n\nexport function setBy(obj: any, _path: any, updater: Updater<any>) {\n const path = makePathArray(_path)\n\n function doSet(parent?: any): any {\n if (!path.length) {\n return functionalUpdate(updater, parent)\n }\n\n const key = path.shift()\n\n if (typeof key === 'string') {\n if (typeof parent === 'object') {\n return {\n ...parent,\n [key]: doSet(parent[key]),\n }\n }\n return {\n [key]: doSet(),\n }\n }\n\n if (typeof key === 'number') {\n if (Array.isArray(parent)) {\n const prefix = parent.slice(0, key)\n return [\n ...(prefix.length ? prefix : new Array(key)),\n doSet(parent[key]),\n ...parent.slice(key + 1),\n ]\n }\n return [...new Array(key), doSet()]\n }\n\n throw new Error('Uh oh!')\n }\n\n return doSet(obj)\n}\n\nconst reFindNumbers0 = /^(\\d*)$/gm\nconst reFindNumbers1 = /\\.(\\d*)\\./gm\nconst reFindNumbers2 = /^(\\d*)\\./gm\nconst reFindNumbers3 = /\\.(\\d*$)/gm\nconst reFindMultiplePeriods = /\\.{2,}/gm\n\nconst intPrefix = '__int__'\nconst intReplace = `${intPrefix}$1`\n\nfunction makePathArray(str: string) {\n if (typeof str !== 'string') {\n throw new Error()\n }\n\n return str\n .replace('[', '.')\n .replace(']', '')\n .replace(reFindNumbers0, intReplace)\n .replace(reFindNumbers1, `.${intReplace}.`)\n .replace(reFindNumbers2, `${intReplace}.`)\n .replace(reFindNumbers3, `.${intReplace}`)\n .replace(reFindMultiplePeriods, '.')\n .split('.')\n .map((d) => {\n if (d.indexOf(intPrefix) === 0) {\n return parseInt(d.substring(intPrefix.length), 10)\n }\n return d\n })\n}\n\nexport type RequiredByKey<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T> = unknown extends T\n ? keyof T\n : object extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>\n : T extends any[]\n ? DeepKeys<T[number]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T>\n : never\n\ntype DeepKeysPrefix<T, TPrefix> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix]> & string}`\n : never\n\nexport type DeepValue<T, TProp> = T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\ntype Narrowable = string | number | bigint | boolean\n\ntype NarrowRaw<A> =\n | (A extends [] ? [] : never)\n | (A extends Narrowable ? A : never)\n | {\n [K in keyof A]: A[K] extends Function ? A[K] : NarrowRaw<A[K]>\n }\n\nexport type Narrow<A> = Try<A, [], NarrowRaw<A>>\n\ntype Try<A1, A2, Catch = never> = A1 extends A2 ? A1 : Catch\n","import { Store } from '@tanstack/store'\n//\nimport type { DeepKeys, DeepValue, Updater } from './utils'\nimport { functionalUpdate, getBy, setBy } from './utils'\nimport type { FieldApi, FieldMeta, ValidationCause } from './FieldApi'\n\nexport interface Register {\n // FormSubmitEvent\n}\n\nexport type FormSubmitEvent = Register extends {\n FormSubmitEvent: infer E\n}\n ? E\n : Event\n\nexport type FormOptions<TData> = {\n defaultValues?: TData\n defaultState?: Partial<FormState<TData>>\n asyncDebounceMs?: number\n onMount?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onMountAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onMountAsyncDebounceMs?: number\n onChange?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onChangeAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onChangeAsyncDebounceMs?: number\n onBlur?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onBlurAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onBlurAsyncDebounceMs?: number\n onSubmit?: (values: TData, formApi: FormApi<TData>) => any | Promise<any>\n onSubmitInvalid?: (values: TData, formApi: FormApi<TData>) => void\n}\n\nexport type FieldInfo<TFormData> = {\n instances: Record<string, FieldApi<any, TFormData>>\n} & ValidationMeta\n\nexport type ValidationMeta = {\n validationCount?: number\n validationAsyncCount?: number\n validationPromise?: Promise<ValidationError>\n validationResolve?: (error: ValidationError) => void\n validationReject?: (error: unknown) => void\n}\n\nexport type ValidationError = undefined | false | null | string\n\nexport type FormState<TData> = {\n values: TData\n // Form Validation\n isFormValidating: boolean\n formValidationCount: number\n isFormValid: boolean\n formError?: ValidationError\n // Fields\n fieldMeta: Record<DeepKeys<TData>, FieldMeta>\n isFieldsValidating: boolean\n isFieldsValid: boolean\n isSubmitting: boolean\n // General\n isTouched: boolean\n isSubmitted: boolean\n isValidating: boolean\n isValid: boolean\n canSubmit: boolean\n submissionAttempts: number\n}\n\nfunction getDefaultFormState<TData>(\n defaultState: Partial<FormState<TData>>,\n): FormState<TData> {\n return {\n values: {} as any,\n fieldMeta: {} as any,\n canSubmit: true,\n isFieldsValid: false,\n isFieldsValidating: false,\n isFormValid: false,\n isFormValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isTouched: false,\n isValid: false,\n isValidating: false,\n submissionAttempts: 0,\n formValidationCount: 0,\n ...defaultState,\n }\n}\n\nexport class FormApi<TFormData> {\n // // This carries the context for nested fields\n options: FormOptions<TFormData> = {}\n store!: Store<FormState<TFormData>>\n // Do not use __state directly, as it is not reactive.\n // Please use form.useStore() utility to subscribe to state\n state!: FormState<TFormData>\n fieldInfo: Record<DeepKeys<TFormData>, FieldInfo<TFormData>> = {} as any\n fieldName?: string\n validationMeta: ValidationMeta = {}\n\n constructor(opts?: FormOptions<TFormData>) {\n this.store = new Store<FormState<TFormData>>(\n getDefaultFormState({\n ...opts?.defaultState,\n values: opts?.defaultValues ?? opts?.defaultState?.values,\n isFormValid: true,\n }),\n {\n onUpdate: () => {\n let { state } = this.store\n // Computed state\n const fieldMetaValues = Object.values(state.fieldMeta) as (\n | FieldMeta\n | undefined\n )[]\n\n const isFieldsValidating = fieldMetaValues.some(\n (field) => field?.isValidating,\n )\n\n const isFieldsValid = !fieldMetaValues.some((field) => field?.error)\n\n const isTouched = fieldMetaValues.some((field) => field?.isTouched)\n\n const isValidating = isFieldsValidating || state.isFormValidating\n const isFormValid = !state.formError\n const isValid = isFieldsValid && isFormValid\n const canSubmit =\n (state.submissionAttempts === 0 && !isTouched) ||\n (!isValidating && !state.isSubmitting && isValid)\n\n state = {\n ...state,\n isFieldsValidating,\n isFieldsValid,\n isFormValid,\n isValid,\n canSubmit,\n isTouched,\n }\n\n this.store.state = state\n this.state = state\n },\n },\n )\n\n this.state = this.store.state\n\n this.update(opts || {})\n }\n\n update = (options?: FormOptions<TFormData>) => {\n if (!options) return\n\n this.store.batch(() => {\n if (\n options.defaultState &&\n options.defaultState !== this.options.defaultState\n ) {\n this.store.setState((prev) => ({\n ...prev,\n ...options.defaultState,\n }))\n }\n\n if (options.defaultValues !== this.options.defaultValues) {\n this.store.setState(() => getDefaultFormState(options.defaultValues!))\n }\n })\n\n this.options = options\n }\n\n reset = () =>\n this.store.setState(() => getDefaultFormState(this.options.defaultValues!))\n\n validateAllFields = async (cause: ValidationCause) => {\n const fieldValidationPromises: Promise<ValidationError>[] = [] as any\n\n this.store.batch(() => {\n void (Object.values(this.fieldInfo) as FieldInfo<any>[]).forEach(\n (field) => {\n Object.values(field.instances).forEach((instance) => {\n // If any fields are not touched\n if (!instance.state.meta.isTouched) {\n // Mark them as touched\n instance.setMeta((prev) => ({ ...prev, isTouched: true }))\n // Validate the field\n fieldValidationPromises.push(\n Promise.resolve().then(() => instance.validate(cause)),\n )\n }\n })\n },\n )\n })\n\n return Promise.all(fieldValidationPromises)\n }\n\n // validateForm = async () => {}\n\n handleSubmit = async (e: FormSubmitEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n // Check to see that the form and all fields have been touched\n // If they have not, touch them all and run validation\n // Run form validation\n // Submit the form\n\n this.store.setState((old) => ({\n ...old,\n // Submittion attempts mark the form as not submitted\n isSubmitted: false,\n // Count submission attempts\n submissionAttempts: old.submissionAttempts + 1,\n }))\n\n // Don't let invalid forms submit\n if (!this.state.canSubmit) return\n\n this.store.setState((d) => ({ ...d, isSubmitting: true }))\n\n const done = () => {\n this.store.setState((prev) => ({ ...prev, isSubmitting: false }))\n }\n\n // Validate all fields\n await this.validateAllFields('submit')\n\n // Fields are invalid, do not submit\n if (!this.state.isFieldsValid) {\n done()\n this.options.onSubmitInvalid?.(this.state.values, this)\n return\n }\n\n // Run validation for the form\n // await this.validateForm()\n\n if (!this.state.isValid) {\n done()\n this.options.onSubmitInvalid?.(this.state.values, this)\n return\n }\n\n try {\n // Run the submit code\n await this.options.onSubmit?.(this.state.values, this)\n\n this.store.batch(() => {\n this.store.setState((prev) => ({ ...prev, isSubmitted: true }))\n done()\n })\n } catch (err) {\n done()\n throw err\n }\n }\n\n getFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): DeepValue<TFormData, TField> => getBy(this.state.values, field)\n\n getFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): FieldMeta => {\n return this.state.fieldMeta[field]\n }\n\n getFieldInfo = <TField extends DeepKeys<TFormData>>(field: TField) => {\n return (this.fieldInfo[field] ||= {\n instances: {},\n })\n }\n\n setFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<FieldMeta>,\n ) => {\n this.store.setState((prev) => {\n return {\n ...prev,\n fieldMeta: {\n ...prev.fieldMeta,\n [field]: functionalUpdate(updater, prev.fieldMeta[field]),\n },\n }\n })\n }\n\n setFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<DeepValue<TFormData, TField>>,\n opts?: { touch?: boolean },\n ) => {\n const touch = opts?.touch\n\n this.store.batch(() => {\n if (touch) {\n this.setFieldMeta(field, (prev) => ({\n ...prev,\n isTouched: true,\n }))\n }\n\n this.store.setState((prev) => {\n return {\n ...prev,\n values: setBy(prev.values, field, updater),\n }\n })\n })\n }\n\n pushFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n return this.setFieldValue(\n field,\n (prev) => [...(Array.isArray(prev) ? prev : []), value] as any,\n opts,\n )\n }\n\n insertFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n return (prev as DeepValue<TFormData, TField>[]).map((d, i) =>\n i === index ? value : d,\n ) as any\n },\n opts,\n )\n }\n\n removeFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n return (prev as DeepValue<TFormData, TField>[]).filter(\n (_d, i) => i !== index,\n ) as any\n },\n opts,\n )\n }\n\n swapFieldValues = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index1: number,\n index2: number,\n ) => {\n this.setFieldValue(field, (prev: any) => {\n const prev1 = prev[index1]!\n const prev2 = prev[index2]!\n return setBy(setBy(prev, [index1], prev2), [index2], prev1)\n })\n }\n}\n","//\nimport type { DeepKeys, DeepValue, RequiredByKey, Updater } from './utils'\nimport type { FormApi, ValidationError } from './FormApi'\nimport { Store } from '@tanstack/store'\n\nexport type ValidationCause = 'change' | 'blur' | 'submit'\n\ntype ValidateFn<TData, TFormData> = (\n value: TData,\n fieldApi: FieldApi<TData, TFormData>,\n) => ValidationError\n\ntype ValidateAsyncFn<TData, TFormData> = (\n value: TData,\n fieldApi: FieldApi<TData, TFormData>,\n) => ValidationError | Promise<ValidationError>\n\nexport interface FieldOptions<TData, TFormData> {\n name: unknown extends TFormData ? string : DeepKeys<TFormData>\n index?: TData extends any[] ? number : never\n defaultValue?: TData\n asyncDebounceMs?: number\n asyncAlways?: boolean\n onMount?: (formApi: FieldApi<TData, TFormData>) => void\n onChange?: ValidateFn<TData, TFormData>\n onChangeAsync?: ValidateAsyncFn<TData, TFormData>\n onChangeAsyncDebounceMs?: number\n onBlur?: ValidateFn<TData, TFormData>\n onBlurAsync?: ValidateAsyncFn<TData, TFormData>\n onBlurAsyncDebounceMs?: number\n onSubmitAsync?: ValidateAsyncFn<TData, TFormData>\n defaultMeta?: Partial<FieldMeta>\n}\n\nexport type FieldApiOptions<TData, TFormData> = FieldOptions<\n TData,\n TFormData\n> & {\n form: FormApi<TFormData>\n}\n\nexport type FieldMeta = {\n isTouched: boolean\n touchedError?: ValidationError\n error?: ValidationError\n isValidating: boolean\n}\n\nexport type UserChangeProps<TData> = {\n onChange?: (updater: Updater<TData>) => void\n onBlur?: (event: any) => void\n}\n\nexport type UserInputProps = {\n onChange?: (event: any) => void\n onBlur?: (event: any) => void\n}\n\nexport type ChangeProps<TData> = {\n value: TData\n onChange: (value: TData) => void\n onBlur: (event: any) => void\n}\n\nexport type InputProps = {\n value: string\n onChange: (event: any) => void\n onBlur: (event: any) => void\n}\n\nlet uid = 0\n\nexport type FieldState<TData> = {\n value: TData\n meta: FieldMeta\n}\n\nexport class FieldApi<TData, TFormData> {\n uid: number\n form: FormApi<TFormData>\n name!: DeepKeys<TFormData>\n store!: Store<FieldState<TData>>\n state!: FieldState<TData>\n #prevState!: FieldState<TData>\n options: FieldOptions<TData, TFormData> = {} as any\n\n constructor(opts: FieldApiOptions<TData, TFormData>) {\n this.form = opts.form\n this.uid = uid++\n // Support field prefixing from FieldScope\n // let fieldPrefix = ''\n // if (this.form.fieldName) {\n // fieldPrefix = `${this.form.fieldName}.`\n // }\n\n this.name = opts.name as any\n\n this.store = new Store<FieldState<TData>>(\n {\n value: this.getValue(),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n meta: this.getMeta() ?? {\n isValidating: false,\n isTouched: false,\n ...this.options.defaultMeta,\n },\n },\n {\n onUpdate: () => {\n const state = this.store.state\n\n state.meta.touchedError = state.meta.isTouched\n ? state.meta.error\n : undefined\n\n if (state.value !== this.#prevState.value) {\n this.validate('change', state.value)\n }\n\n this.#prevState = state\n this.state = state\n },\n },\n )\n\n this.state = this.store.state\n this.#prevState = this.state\n this.update(opts)\n }\n\n mount = () => {\n const info = this.getInfo()\n info.instances[this.uid] = this\n\n const unsubscribe = this.form.store.subscribe(() => {\n this.store.batch(() => {\n const nextValue = this.getValue()\n const nextMeta = this.getMeta()\n\n if (nextValue !== this.state.value) {\n this.store.setState((prev) => ({ ...prev, value: nextValue }))\n }\n\n if (nextMeta !== this.state.meta) {\n this.store.setState((prev) => ({ ...prev, meta: nextMeta }))\n }\n })\n })\n\n this.options.onMount?.(this)\n\n return () => {\n unsubscribe()\n delete info.instances[this.uid]\n if (!Object.keys(info.instances).length) {\n delete this.form.fieldInfo[this.name]\n }\n }\n }\n\n update = (opts: FieldApiOptions<TData, TFormData>) => {\n this.options = {\n asyncDebounceMs: this.form.options.asyncDebounceMs ?? 0,\n onChangeAsyncDebounceMs: this.form.options.onChangeAsyncDebounceMs ?? 0,\n onBlurAsyncDebounceMs: this.form.options.onBlurAsyncDebounceMs ?? 0,\n ...opts,\n }\n\n // Default Value\n if (\n this.state.value === undefined &&\n this.options.defaultValue !== undefined\n ) {\n this.setValue(this.options.defaultValue)\n }\n\n // Default Meta\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.getMeta() === undefined) {\n this.setMeta(this.state.meta)\n }\n }\n\n getValue = (): TData => {\n return this.form.getFieldValue(this.name)\n }\n setValue = (\n updater: Updater<TData>,\n options?: { touch?: boolean; notify?: boolean },\n ) => this.form.setFieldValue(this.name, updater as any, options)\n\n getMeta = (): FieldMeta => this.form.getFieldMeta(this.name)\n setMeta = (updater: Updater<FieldMeta>) =>\n this.form.setFieldMeta(this.name, updater)\n\n getInfo = () => this.form.getFieldInfo(this.name)\n\n pushValue = (value: TData extends any[] ? TData[number] : never) =>\n this.form.pushFieldValue(this.name, value as any)\n insertValue = (index: number, value: TData) =>\n this.form.insertFieldValue(this.name, index, value as any)\n removeValue = (index: number) => this.form.removeFieldValue(this.name, index)\n swapValues = (aIndex: number, bIndex: number) =>\n this.form.swapFieldValues(this.name, aIndex, bIndex)\n\n getSubField = <TName extends DeepKeys<TData>>(name: TName) =>\n new FieldApi<DeepValue<TData, TName>, TFormData>({\n name: `${this.name}.${name}` as any,\n form: this.form,\n })\n\n validateSync = async (value = this.state.value, cause: ValidationCause) => {\n const { onChange, onBlur } = this.options\n const validate =\n cause === 'submit' ? undefined : cause === 'change' ? onChange : onBlur\n\n if (!validate) return\n\n // Use the validationCount for all field instances to\n // track freshness of the validation\n const validationCount = (this.getInfo().validationCount || 0) + 1\n this.getInfo().validationCount = validationCount\n const error = normalizeError(validate(value, this))\n\n if (this.state.meta.error !== error) {\n this.setMeta((prev) => ({\n ...prev,\n error,\n }))\n }\n\n // If a sync error is encountered, cancel any async validation\n if (this.state.meta.error) {\n this.cancelValidateAsync()\n }\n }\n\n #leaseValidateAsync = () => {\n const count = (this.getInfo().validationAsyncCount || 0) + 1\n this.getInfo().validationAsyncCount = count\n return count\n }\n\n cancelValidateAsync = () => {\n // Lease a new validation count to ignore any pending validations\n this.#leaseValidateAsync()\n // Cancel any pending validation state\n this.setMeta((prev) => ({\n ...prev,\n isValidating: false,\n }))\n }\n\n validateAsync = async (value = this.state.value, cause: ValidationCause) => {\n const {\n onChangeAsync,\n onBlurAsync,\n onSubmitAsync,\n asyncDebounceMs,\n onBlurAsyncDebounceMs,\n onChangeAsyncDebounceMs,\n } = this.options\n\n const validate =\n cause === 'change'\n ? onChangeAsync\n : cause === 'submit'\n ? onSubmitAsync\n : onBlurAsync\n\n if (!validate) return\n\n const debounceMs =\n cause === 'submit'\n ? 0\n : (cause === 'change'\n ? onChangeAsyncDebounceMs\n : onBlurAsyncDebounceMs) ??\n asyncDebounceMs ??\n 500\n\n if (this.state.meta.isValidating !== true)\n this.setMeta((prev) => ({ ...prev, isValidating: true }))\n\n // Use the validationCount for all field instances to\n // track freshness of the validation\n const validationAsyncCount = this.#leaseValidateAsync()\n\n const checkLatest = () =>\n validationAsyncCount === this.getInfo().validationAsyncCount\n\n if (!this.getInfo().validationPromise) {\n this.getInfo().validationPromise = new Promise((resolve, reject) => {\n this.getInfo().validationResolve = resolve\n this.getInfo().validationReject = reject\n })\n }\n\n if (debounceMs > 0) {\n await new Promise((r) => setTimeout(r, debounceMs))\n }\n\n // Only kick off validation if this validation is the latest attempt\n if (checkLatest()) {\n try {\n const rawError = await validate(value, this)\n\n if (checkLatest()) {\n const error = normalizeError(rawError)\n this.setMeta((prev) => ({\n ...prev,\n isValidating: false,\n error,\n }))\n this.getInfo().validationResolve?.(error)\n }\n } catch (error) {\n if (checkLatest()) {\n this.getInfo().validationReject?.(error)\n throw error\n }\n } finally {\n if (checkLatest()) {\n this.setMeta((prev) => ({ ...prev, isValidating: false }))\n delete this.getInfo().validationPromise\n }\n }\n }\n\n // Always return the latest validation promise to the caller\n return this.getInfo().validationPromise\n }\n\n validate = (\n cause: ValidationCause,\n value?: TData,\n ): ValidationError | Promise<ValidationError> => {\n // If the field is pristine and validatePristine is false, do not validate\n if (!this.state.meta.isTouched) return\n\n // Attempt to sync validate first\n this.validateSync(value, cause)\n\n // If there is an error, return it, do not attempt async validation\n if (this.state.meta.error) {\n if (!this.options.asyncAlways) {\n return this.state.meta.error\n }\n }\n\n // No error? Attempt async validation\n return this.validateAsync(value, cause)\n }\n\n getChangeProps = <T extends UserChangeProps<any>>(\n props: T = {} as T,\n ): ChangeProps<TData> & Omit<T, keyof ChangeProps<TData>> => {\n return {\n ...props,\n value: this.state.value,\n onChange: (value) => {\n this.setValue(value)\n props.onChange?.(value)\n },\n onBlur: (e) => {\n const prevTouched = this.state.meta.isTouched\n this.setMeta((prev) => ({ ...prev, isTouched: true }))\n if (!prevTouched) {\n this.validate('change')\n }\n this.validate('blur')\n },\n } as ChangeProps<TData> & Omit<T, keyof ChangeProps<TData>>\n }\n\n getInputProps = <T extends UserInputProps>(\n props: T = {} as T,\n ): InputProps & Omit<T, keyof InputProps> => {\n return {\n ...props,\n value: String(this.state.value),\n onChange: (e) => {\n this.setValue(e.target.value)\n props.onChange?.(e.target.value)\n },\n onBlur: this.getChangeProps(props).onBlur,\n }\n }\n}\n\nfunction normalizeError(rawError?: ValidationError) {\n if (rawError) {\n if (typeof rawError !== 'string') {\n return 'Invalid Form Values'\n }\n\n return rawError\n }\n\n return undefined\n}\n"],"names":["functionalUpdate","updater","input","getBy","obj","path","pathArray","makePathArray","pathObj","reduce","current","pathPart","undefined","setBy","_path","doSet","parent","length","key","shift","Array","isArray","prefix","slice","Error","reFindNumbers0","reFindNumbers1","reFindNumbers2","reFindNumbers3","reFindMultiplePeriods","intPrefix","intReplace","str","replace","split","map","d","indexOf","parseInt","substring","getDefaultFormState","defaultState","values","fieldMeta","canSubmit","isFieldsValid","isFieldsValidating","isFormValid","isFormValidating","isSubmitted","isSubmitting","isTouched","isValid","isValidating","submissionAttempts","formValidationCount","FormApi","constructor","opts","options","store","batch","setState","prev","defaultValues","cause","fieldValidationPromises","Object","fieldInfo","forEach","field","instances","instance","state","meta","setMeta","push","Promise","resolve","then","validate","all","e","preventDefault","stopPropagation","old","done","validateAllFields","onSubmitInvalid","onSubmit","err","touch","setFieldMeta","value","setFieldValue","index","i","filter","_d","index1","index2","prev1","prev2","Store","onUpdate","fieldMetaValues","some","error","formError","update","uid","FieldApi","info","getInfo","unsubscribe","form","subscribe","nextValue","getValue","nextMeta","getMeta","onMount","keys","name","asyncDebounceMs","onChangeAsyncDebounceMs","onBlurAsyncDebounceMs","defaultValue","setValue","getFieldValue","getFieldMeta","getFieldInfo","pushFieldValue","insertFieldValue","removeFieldValue","aIndex","bIndex","swapFieldValues","onChange","onBlur","validationCount","normalizeError","cancelValidateAsync","count","validationAsyncCount","onChangeAsync","onBlurAsync","onSubmitAsync","debounceMs","checkLatest","validationPromise","reject","validationResolve","validationReject","r","setTimeout","rawError","validateSync","asyncAlways","validateAsync","props","prevTouched","String","target","getChangeProps","defaultMeta","touchedError"],"mappings":"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"}
|