@tanstack/form-core 0.0.9 → 0.0.11

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.
@@ -1 +1 @@
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 onSubmit?: (values: TData, formApi: FormApi<TData>) => void\n onInvalidSubmit?: (values: TData, formApi: FormApi<TData>) => void\n validate?: (values: TData, formApi: FormApi<TData>) => Promise<any>\n defaultValidatePristine?: boolean\n defaultValidateOn?: ValidationCause\n defaultValidateAsyncOn?: ValidationCause\n defaultValidateAsyncDebounceMs?: number\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: !opts?.validate,\n }),\n {\n onUpdate: (next) => {\n // Computed state\n const fieldMetaValues = Object.values(next.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 || next.isFormValidating\n const isFormValid = !next.formError\n const isValid = isFieldsValid && isFormValid\n const canSubmit =\n (next.submissionAttempts === 0 && !isTouched) ||\n (!isValidating && !next.isSubmitting && isValid)\n\n next = {\n ...next,\n isFieldsValidating,\n isFieldsValid,\n isFormValid,\n isValid,\n canSubmit,\n isTouched,\n }\n\n // Create a shortcut for the state\n // Write it back to the store\n this.store.state = next\n this.state = next\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((prev) => ({\n ...prev,\n values: options.defaultValues as TFormData,\n }))\n }\n })\n\n this.options = options\n }\n\n reset = () =>\n this.store.setState(() => getDefaultFormState(this.options.defaultValues!))\n\n validateAllFields = async () => {\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 if (instance.options.validate) {\n fieldValidationPromises.push(instance.validate())\n }\n }\n })\n },\n )\n })\n\n return Promise.all(fieldValidationPromises)\n }\n\n validateForm = async () => {\n const { validate } = this.options\n\n if (!validate) {\n return\n }\n\n // Use the formValidationCount for all field instances to\n // track freshness of the validation\n this.store.setState((prev) => ({\n ...prev,\n isValidating: true,\n formValidationCount: prev.formValidationCount + 1,\n }))\n\n const formValidationCount = this.state.formValidationCount\n\n const checkLatest = () =>\n formValidationCount === this.state.formValidationCount\n\n if (!this.validationMeta.validationPromise) {\n this.validationMeta.validationPromise = new Promise((resolve, reject) => {\n this.validationMeta.validationResolve = resolve\n this.validationMeta.validationReject = reject\n })\n }\n\n const doValidation = async () => {\n try {\n const error = await validate(this.state.values, this)\n\n if (checkLatest()) {\n this.store.setState((prev) => ({\n ...prev,\n isValidating: false,\n error: error\n ? typeof error === 'string'\n ? error\n : 'Invalid Form Values'\n : null,\n }))\n\n this.validationMeta.validationResolve?.(error)\n }\n } catch (err) {\n if (checkLatest()) {\n this.validationMeta.validationReject?.(err)\n }\n } finally {\n delete this.validationMeta.validationPromise\n }\n }\n\n doValidation()\n\n return this.validationMeta.validationPromise\n }\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()\n\n // Fields are invalid, do not submit\n if (!this.state.isFieldsValid) {\n done()\n this.options.onInvalidSubmit?.(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.onInvalidSubmit?.(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 ?? true\n\n this.store.batch(() => {\n this.store.setState((prev) => {\n return {\n ...prev,\n values: setBy(prev.values, field, updater),\n }\n })\n\n if (touch) {\n this.setFieldMeta(field, (prev) => ({\n ...prev,\n isTouched: true,\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 // invariant( // TODO: bring in invariant\n // Array.isArray(prev),\n // `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`\n // )\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 // invariant( // TODO: bring in invariant\n // Array.isArray(prev),\n // `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`\n // )\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\nexport interface FieldOptions<TData, TFormData> {\n name: unknown extends TFormData ? string : DeepKeys<TFormData>\n index?: TData extends any[] ? number : never\n defaultValue?: TData\n validate?: (\n value: TData,\n fieldApi: FieldApi<TData, TFormData>,\n ) => ValidationError\n validateAsync?: (\n value: TData,\n fieldApi: FieldApi<TData, TFormData>,\n ) => ValidationError | Promise<ValidationError>\n validatePristine?: boolean // Default: false\n validateOn?: ValidationCause // Default: 'change'\n validateAsyncOn?: ValidationCause // Default: 'blur'\n validateAsyncDebounceMs?: number\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: (updater: Updater<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 options: RequiredByKey<\n FieldOptions<TData, TFormData>,\n | 'validatePristine'\n | 'validateOn'\n | 'validateAsyncOn'\n | 'validateAsyncDebounceMs'\n > = {} 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: (next) => {\n next.meta.touchedError = next.meta.isTouched\n ? next.meta.error\n : undefined\n\n // Do not validate pristine fields\n const prevState = this.state\n this.state = next\n if (next.value !== prevState.value) {\n this.validate('change', next.value)\n }\n },\n },\n )\n\n this.state = this.store.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.#updateStore()\n })\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 #updateStore = () => {\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 update = (opts: FieldApiOptions<TData, TFormData>) => {\n this.options = {\n validatePristine: this.form.options.defaultValidatePristine ?? false,\n validateOn: this.form.options.defaultValidateOn ?? 'change',\n validateAsyncOn: this.form.options.defaultValidateAsyncOn ?? 'blur',\n validateAsyncDebounceMs:\n this.form.options.defaultValidateAsyncDebounceMs ?? 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) => {\n const { validate } = this.options\n\n if (!validate) {\n return\n }\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) => {\n const { validateAsync, validateAsyncDebounceMs } = this.options\n\n if (!validateAsync) {\n return\n }\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 (validateAsyncDebounceMs > 0) {\n await new Promise((r) => setTimeout(r, validateAsyncDebounceMs))\n }\n\n // Only kick off validation if this validation is the latest attempt\n if (checkLatest()) {\n try {\n const rawError = await validateAsync(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 shouldValidate = (isAsync: boolean, cause?: ValidationCause) => {\n const { validateOn, validateAsyncOn } = this.options\n const level = getValidationCauseLevel(cause)\n\n // Must meet *at least* the validation level to validate,\n // e.g. if validateOn is 'change' and validateCause is 'blur',\n // the field will still validate\n return Object.keys(validateCauseLevels).some((d) =>\n isAsync\n ? validateAsyncOn\n : validateOn === d && level >= validateCauseLevels[d],\n )\n }\n\n validate = async (\n cause?: ValidationCause,\n value?: TData,\n ): Promise<ValidationError> => {\n // If the field is pristine and validatePristine is false, do not validate\n if (!this.options.validatePristine && !this.state.meta.isTouched) return\n\n // Attempt to sync validate first\n if (this.shouldValidate(false, cause)) {\n this.validateSync(value)\n }\n\n // If there is an error, return it, do not attempt async validation\n if (this.state.meta.error) {\n return this.state.meta.error\n }\n\n // No error? Attempt async validation\n if (this.shouldValidate(true, cause)) {\n return this.validateAsync(value)\n }\n\n // If there is no sync error or async validation attempt, there is no error\n return undefined\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 this.setMeta((prev) => ({ ...prev, isTouched: true }))\n this.validate('blur')\n props.onBlur?.(e)\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\nconst validateCauseLevels = {\n change: 0,\n blur: 1,\n submit: 2,\n}\n\nfunction getValidationCauseLevel(cause?: ValidationCause) {\n return !cause ? 3 : validateCauseLevels[cause]\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","fieldInfo","validationMeta","update","store","batch","setState","prev","defaultValues","reset","validateAllFields","fieldValidationPromises","Object","forEach","field","instances","instance","state","meta","setMeta","validate","push","Promise","all","validateForm","checkLatest","validationPromise","resolve","reject","validationResolve","validationReject","doValidation","error","err","handleSubmit","e","preventDefault","stopPropagation","old","done","onInvalidSubmit","onSubmit","getFieldValue","getFieldMeta","getFieldInfo","setFieldMeta","setFieldValue","touch","pushFieldValue","value","insertFieldValue","index","i","removeFieldValue","filter","_d","swapFieldValues","index1","index2","prev1","prev2","Store","onUpdate","next","fieldMetaValues","some","formError","uid","FieldApi","mount","info","getInfo","unsubscribe","form","subscribe","keys","name","nextValue","getValue","nextMeta","getMeta","validatePristine","defaultValidatePristine","validateOn","defaultValidateOn","validateAsyncOn","defaultValidateAsyncOn","validateAsyncDebounceMs","defaultValidateAsyncDebounceMs","defaultValue","setValue","pushValue","insertValue","removeValue","swapValues","aIndex","bIndex","getSubField","validateSync","validationCount","normalizeError","cancelValidateAsync","count","validationAsyncCount","validateAsync","r","setTimeout","rawError","shouldValidate","isAsync","cause","level","getValidationCauseLevel","validateCauseLevels","getChangeProps","props","onChange","onBlur","getInputProps","String","target","defaultMeta","touchedError","prevState","change","blur","submit"],"mappings":"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"}
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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"}
@@ -2669,7 +2669,7 @@ var drawChart = (function (exports) {
2669
2669
  </script>
2670
2670
  <script>
2671
2671
  /*<!--*/
2672
- const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.production.js","children":[{"name":"node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js","uid":"766a-1"},{"name":"packages/form-core/src","children":[{"uid":"766a-3","name":"utils.ts"},{"uid":"766a-5","name":"FormApi.ts"},{"uid":"766a-9","name":"FieldApi.ts"},{"uid":"766a-11","name":"index.ts"}]},{"uid":"766a-7","name":"\u0000rollupPluginBabelHelpers.js"}]}],"isRoot":true},"nodeParts":{"766a-1":{"renderedLength":1288,"gzipLength":497,"brotliLength":0,"mainUid":"766a-0"},"766a-3":{"renderedLength":2008,"gzipLength":694,"brotliLength":0,"mainUid":"766a-2"},"766a-5":{"renderedLength":10297,"gzipLength":2316,"brotliLength":0,"mainUid":"766a-4"},"766a-7":{"renderedLength":353,"gzipLength":227,"brotliLength":0,"mainUid":"766a-6"},"766a-9":{"renderedLength":10622,"gzipLength":2522,"brotliLength":0,"mainUid":"766a-8"},"766a-11":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"mainUid":"766a-10"}},"nodeMetas":{"766a-0":{"id":"/node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js","moduleParts":{"index.production.js":"766a-1"},"imported":[],"importedBy":[{"uid":"766a-4"},{"uid":"766a-8"}]},"766a-2":{"id":"/packages/form-core/src/utils.ts","moduleParts":{"index.production.js":"766a-3"},"imported":[],"importedBy":[{"uid":"766a-10"},{"uid":"766a-4"}]},"766a-4":{"id":"/packages/form-core/src/FormApi.ts","moduleParts":{"index.production.js":"766a-5"},"imported":[{"uid":"766a-0"},{"uid":"766a-2"}],"importedBy":[{"uid":"766a-10"}]},"766a-6":{"id":"\u0000rollupPluginBabelHelpers.js","moduleParts":{"index.production.js":"766a-7"},"imported":[],"importedBy":[{"uid":"766a-8"}]},"766a-8":{"id":"/packages/form-core/src/FieldApi.ts","moduleParts":{"index.production.js":"766a-9"},"imported":[{"uid":"766a-6"},{"uid":"766a-0"}],"importedBy":[{"uid":"766a-10"}]},"766a-10":{"id":"/packages/form-core/src/index.ts","moduleParts":{"index.production.js":"766a-11"},"imported":[{"uid":"766a-4"},{"uid":"766a-8"},{"uid":"766a-2"}],"importedBy":[],"isEntry":true}},"env":{"rollup":"2.78.1"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
2672
+ const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.production.js","children":[{"uid":"90cf-1","name":"\u0000rollupPluginBabelHelpers.js"},{"name":"node_modules/.pnpm/@tanstack+store@0.0.1-beta.89/node_modules/@tanstack/store/build/esm/index.js","uid":"90cf-3"},{"name":"packages/form-core/src","children":[{"uid":"90cf-5","name":"utils.ts"},{"uid":"90cf-7","name":"FormApi.ts"},{"uid":"90cf-9","name":"FieldApi.ts"},{"uid":"90cf-11","name":"index.ts"}]}]}],"isRoot":true},"nodeParts":{"90cf-1":{"renderedLength":1793,"gzipLength":535,"brotliLength":0,"mainUid":"90cf-0"},"90cf-3":{"renderedLength":1313,"gzipLength":489,"brotliLength":0,"mainUid":"90cf-2"},"90cf-5":{"renderedLength":2008,"gzipLength":694,"brotliLength":0,"mainUid":"90cf-4"},"90cf-7":{"renderedLength":8246,"gzipLength":1914,"brotliLength":0,"mainUid":"90cf-6"},"90cf-9":{"renderedLength":10854,"gzipLength":2441,"brotliLength":0,"mainUid":"90cf-8"},"90cf-11":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"mainUid":"90cf-10"}},"nodeMetas":{"90cf-0":{"id":"\u0000rollupPluginBabelHelpers.js","moduleParts":{"index.production.js":"90cf-1"},"imported":[],"importedBy":[{"uid":"90cf-6"},{"uid":"90cf-8"}]},"90cf-2":{"id":"/node_modules/.pnpm/@tanstack+store@0.0.1-beta.89/node_modules/@tanstack/store/build/esm/index.js","moduleParts":{"index.production.js":"90cf-3"},"imported":[],"importedBy":[{"uid":"90cf-6"},{"uid":"90cf-8"}]},"90cf-4":{"id":"/packages/form-core/src/utils.ts","moduleParts":{"index.production.js":"90cf-5"},"imported":[],"importedBy":[{"uid":"90cf-10"},{"uid":"90cf-6"}]},"90cf-6":{"id":"/packages/form-core/src/FormApi.ts","moduleParts":{"index.production.js":"90cf-7"},"imported":[{"uid":"90cf-0"},{"uid":"90cf-2"},{"uid":"90cf-4"}],"importedBy":[{"uid":"90cf-10"}]},"90cf-8":{"id":"/packages/form-core/src/FieldApi.ts","moduleParts":{"index.production.js":"90cf-9"},"imported":[{"uid":"90cf-0"},{"uid":"90cf-2"}],"importedBy":[{"uid":"90cf-10"}]},"90cf-10":{"id":"/packages/form-core/src/index.ts","moduleParts":{"index.production.js":"90cf-11"},"imported":[{"uid":"90cf-6"},{"uid":"90cf-8"},{"uid":"90cf-4"}],"importedBy":[],"isEntry":true}},"env":{"rollup":"2.78.1"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
2673
2673
 
2674
2674
  const run = () => {
2675
2675
  const width = window.innerWidth;
@@ -7,33 +7,33 @@
7
7
  "name": "index.production.js",
8
8
  "children": [
9
9
  {
10
- "name": "node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js",
11
- "uid": "766a-13"
10
+ "uid": "90cf-13",
11
+ "name": "\u0000rollupPluginBabelHelpers.js"
12
+ },
13
+ {
14
+ "name": "node_modules/.pnpm/@tanstack+store@0.0.1-beta.89/node_modules/@tanstack/store/build/esm/index.js",
15
+ "uid": "90cf-15"
12
16
  },
13
17
  {
14
18
  "name": "packages/form-core/src",
15
19
  "children": [
16
20
  {
17
- "uid": "766a-15",
21
+ "uid": "90cf-17",
18
22
  "name": "utils.ts"
19
23
  },
20
24
  {
21
- "uid": "766a-17",
25
+ "uid": "90cf-19",
22
26
  "name": "FormApi.ts"
23
27
  },
24
28
  {
25
- "uid": "766a-21",
29
+ "uid": "90cf-21",
26
30
  "name": "FieldApi.ts"
27
31
  },
28
32
  {
29
- "uid": "766a-23",
33
+ "uid": "90cf-23",
30
34
  "name": "index.ts"
31
35
  }
32
36
  ]
33
- },
34
- {
35
- "uid": "766a-19",
36
- "name": "\u0000rollupPluginBabelHelpers.js"
37
37
  }
38
38
  ]
39
39
  }
@@ -41,138 +41,144 @@
41
41
  "isRoot": true
42
42
  },
43
43
  "nodeParts": {
44
- "766a-13": {
45
- "renderedLength": 1288,
46
- "gzipLength": 497,
44
+ "90cf-13": {
45
+ "renderedLength": 1793,
46
+ "gzipLength": 535,
47
47
  "brotliLength": 0,
48
- "mainUid": "766a-12"
48
+ "mainUid": "90cf-12"
49
49
  },
50
- "766a-15": {
51
- "renderedLength": 2008,
52
- "gzipLength": 694,
50
+ "90cf-15": {
51
+ "renderedLength": 1313,
52
+ "gzipLength": 489,
53
53
  "brotliLength": 0,
54
- "mainUid": "766a-14"
54
+ "mainUid": "90cf-14"
55
55
  },
56
- "766a-17": {
57
- "renderedLength": 10297,
58
- "gzipLength": 2316,
56
+ "90cf-17": {
57
+ "renderedLength": 2008,
58
+ "gzipLength": 694,
59
59
  "brotliLength": 0,
60
- "mainUid": "766a-16"
60
+ "mainUid": "90cf-16"
61
61
  },
62
- "766a-19": {
63
- "renderedLength": 353,
64
- "gzipLength": 227,
62
+ "90cf-19": {
63
+ "renderedLength": 8246,
64
+ "gzipLength": 1914,
65
65
  "brotliLength": 0,
66
- "mainUid": "766a-18"
66
+ "mainUid": "90cf-18"
67
67
  },
68
- "766a-21": {
69
- "renderedLength": 10622,
70
- "gzipLength": 2522,
68
+ "90cf-21": {
69
+ "renderedLength": 10854,
70
+ "gzipLength": 2441,
71
71
  "brotliLength": 0,
72
- "mainUid": "766a-20"
72
+ "mainUid": "90cf-20"
73
73
  },
74
- "766a-23": {
74
+ "90cf-23": {
75
75
  "renderedLength": 0,
76
76
  "gzipLength": 0,
77
77
  "brotliLength": 0,
78
- "mainUid": "766a-22"
78
+ "mainUid": "90cf-22"
79
79
  }
80
80
  },
81
81
  "nodeMetas": {
82
- "766a-12": {
83
- "id": "/node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js",
82
+ "90cf-12": {
83
+ "id": "\u0000rollupPluginBabelHelpers.js",
84
84
  "moduleParts": {
85
- "index.production.js": "766a-13"
85
+ "index.production.js": "90cf-13"
86
86
  },
87
87
  "imported": [],
88
88
  "importedBy": [
89
89
  {
90
- "uid": "766a-16"
90
+ "uid": "90cf-18"
91
91
  },
92
92
  {
93
- "uid": "766a-20"
93
+ "uid": "90cf-20"
94
94
  }
95
95
  ]
96
96
  },
97
- "766a-14": {
98
- "id": "/packages/form-core/src/utils.ts",
97
+ "90cf-14": {
98
+ "id": "/node_modules/.pnpm/@tanstack+store@0.0.1-beta.89/node_modules/@tanstack/store/build/esm/index.js",
99
99
  "moduleParts": {
100
- "index.production.js": "766a-15"
100
+ "index.production.js": "90cf-15"
101
101
  },
102
102
  "imported": [],
103
103
  "importedBy": [
104
104
  {
105
- "uid": "766a-22"
105
+ "uid": "90cf-18"
106
106
  },
107
107
  {
108
- "uid": "766a-16"
108
+ "uid": "90cf-20"
109
109
  }
110
110
  ]
111
111
  },
112
- "766a-16": {
113
- "id": "/packages/form-core/src/FormApi.ts",
112
+ "90cf-16": {
113
+ "id": "/packages/form-core/src/utils.ts",
114
114
  "moduleParts": {
115
- "index.production.js": "766a-17"
115
+ "index.production.js": "90cf-17"
116
116
  },
117
- "imported": [
117
+ "imported": [],
118
+ "importedBy": [
118
119
  {
119
- "uid": "766a-12"
120
+ "uid": "90cf-22"
120
121
  },
121
122
  {
122
- "uid": "766a-14"
123
- }
124
- ],
125
- "importedBy": [
126
- {
127
- "uid": "766a-22"
123
+ "uid": "90cf-18"
128
124
  }
129
125
  ]
130
126
  },
131
- "766a-18": {
132
- "id": "\u0000rollupPluginBabelHelpers.js",
127
+ "90cf-18": {
128
+ "id": "/packages/form-core/src/FormApi.ts",
133
129
  "moduleParts": {
134
- "index.production.js": "766a-19"
130
+ "index.production.js": "90cf-19"
135
131
  },
136
- "imported": [],
132
+ "imported": [
133
+ {
134
+ "uid": "90cf-12"
135
+ },
136
+ {
137
+ "uid": "90cf-14"
138
+ },
139
+ {
140
+ "uid": "90cf-16"
141
+ }
142
+ ],
137
143
  "importedBy": [
138
144
  {
139
- "uid": "766a-20"
145
+ "uid": "90cf-22"
140
146
  }
141
147
  ]
142
148
  },
143
- "766a-20": {
149
+ "90cf-20": {
144
150
  "id": "/packages/form-core/src/FieldApi.ts",
145
151
  "moduleParts": {
146
- "index.production.js": "766a-21"
152
+ "index.production.js": "90cf-21"
147
153
  },
148
154
  "imported": [
149
155
  {
150
- "uid": "766a-18"
156
+ "uid": "90cf-12"
151
157
  },
152
158
  {
153
- "uid": "766a-12"
159
+ "uid": "90cf-14"
154
160
  }
155
161
  ],
156
162
  "importedBy": [
157
163
  {
158
- "uid": "766a-22"
164
+ "uid": "90cf-22"
159
165
  }
160
166
  ]
161
167
  },
162
- "766a-22": {
168
+ "90cf-22": {
163
169
  "id": "/packages/form-core/src/index.ts",
164
170
  "moduleParts": {
165
- "index.production.js": "766a-23"
171
+ "index.production.js": "90cf-23"
166
172
  },
167
173
  "imported": [
168
174
  {
169
- "uid": "766a-16"
175
+ "uid": "90cf-18"
170
176
  },
171
177
  {
172
- "uid": "766a-20"
178
+ "uid": "90cf-20"
173
179
  },
174
180
  {
175
- "uid": "766a-14"
181
+ "uid": "90cf-16"
176
182
  }
177
183
  ],
178
184
  "importedBy": [],
@@ -1,17 +1,23 @@
1
- import type { DeepKeys, DeepValue, RequiredByKey, Updater } from './utils';
1
+ import type { DeepKeys, DeepValue, Updater } from './utils';
2
2
  import type { FormApi, ValidationError } from './FormApi';
3
3
  import { Store } from '@tanstack/store';
4
4
  export type ValidationCause = 'change' | 'blur' | 'submit';
5
+ type ValidateFn<TData, TFormData> = (value: TData, fieldApi: FieldApi<TData, TFormData>) => ValidationError;
6
+ type ValidateAsyncFn<TData, TFormData> = (value: TData, fieldApi: FieldApi<TData, TFormData>) => ValidationError | Promise<ValidationError>;
5
7
  export interface FieldOptions<TData, TFormData> {
6
8
  name: unknown extends TFormData ? string : DeepKeys<TFormData>;
7
9
  index?: TData extends any[] ? number : never;
8
10
  defaultValue?: TData;
9
- validate?: (value: TData, fieldApi: FieldApi<TData, TFormData>) => ValidationError;
10
- validateAsync?: (value: TData, fieldApi: FieldApi<TData, TFormData>) => ValidationError | Promise<ValidationError>;
11
- validatePristine?: boolean;
12
- validateOn?: ValidationCause;
13
- validateAsyncOn?: ValidationCause;
14
- validateAsyncDebounceMs?: number;
11
+ asyncDebounceMs?: number;
12
+ asyncAlways?: boolean;
13
+ onMount?: (formApi: FieldApi<TData, TFormData>) => void;
14
+ onChange?: ValidateFn<TData, TFormData>;
15
+ onChangeAsync?: ValidateAsyncFn<TData, TFormData>;
16
+ onChangeAsyncDebounceMs?: number;
17
+ onBlur?: ValidateFn<TData, TFormData>;
18
+ onBlurAsync?: ValidateAsyncFn<TData, TFormData>;
19
+ onBlurAsyncDebounceMs?: number;
20
+ onSubmitAsync?: ValidateAsyncFn<TData, TFormData>;
15
21
  defaultMeta?: Partial<FieldMeta>;
16
22
  }
17
23
  export type FieldApiOptions<TData, TFormData> = FieldOptions<TData, TFormData> & {
@@ -33,7 +39,7 @@ export type UserInputProps = {
33
39
  };
34
40
  export type ChangeProps<TData> = {
35
41
  value: TData;
36
- onChange: (updater: Updater<TData>) => void;
42
+ onChange: (value: TData) => void;
37
43
  onBlur: (event: any) => void;
38
44
  };
39
45
  export type InputProps = {
@@ -52,7 +58,7 @@ export declare class FieldApi<TData, TFormData> {
52
58
  name: DeepKeys<TFormData>;
53
59
  store: Store<FieldState<TData>>;
54
60
  state: FieldState<TData>;
55
- options: RequiredByKey<FieldOptions<TData, TFormData>, 'validatePristine' | 'validateOn' | 'validateAsyncOn' | 'validateAsyncDebounceMs'>;
61
+ options: FieldOptions<TData, TFormData>;
56
62
  constructor(opts: FieldApiOptions<TData, TFormData>);
57
63
  mount: () => () => void;
58
64
  update: (opts: FieldApiOptions<TData, TFormData>) => void;
@@ -69,11 +75,11 @@ export declare class FieldApi<TData, TFormData> {
69
75
  removeValue: (index: number) => void;
70
76
  swapValues: (aIndex: number, bIndex: number) => void;
71
77
  getSubField: <TName extends DeepKeys<TData>>(name: TName) => FieldApi<DeepValue<TData, TName>, TFormData>;
72
- validateSync: (value?: TData) => Promise<void>;
78
+ validateSync: (value: TData | undefined, cause: ValidationCause) => Promise<void>;
73
79
  cancelValidateAsync: () => void;
74
- validateAsync: (value?: TData) => Promise<ValidationError>;
75
- shouldValidate: (isAsync: boolean, cause?: ValidationCause) => boolean;
76
- validate: (cause?: ValidationCause, value?: TData) => Promise<ValidationError>;
80
+ validateAsync: (value: TData | undefined, cause: ValidationCause) => Promise<ValidationError>;
81
+ validate: (cause: ValidationCause, value?: TData) => ValidationError | Promise<ValidationError>;
77
82
  getChangeProps: <T extends UserChangeProps<any>>(props?: T) => ChangeProps<TData> & Omit<T, keyof ChangeProps<TData>>;
78
83
  getInputProps: <T extends UserInputProps>(props?: T) => InputProps & Omit<T, keyof InputProps>;
79
84
  }
85
+ export {};