@tanstack/form-core 0.0.6 → 0.0.8
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 +11 -9
- package/build/cjs/FieldApi.js.map +1 -1
- package/build/cjs/FormApi.js +3 -1
- package/build/cjs/FormApi.js.map +1 -1
- package/build/cjs/utils.js +9 -7
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +23 -17
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +50 -50
- package/build/types/FieldApi.d.ts +2 -1
- package/build/types/FormApi.d.ts +2 -2
- package/build/types/utils.d.ts +7 -1
- package/build/umd/index.development.js +23 -17
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/FieldApi.ts +12 -8
- package/src/FormApi.ts +5 -2
- package/src/utils.ts +27 -10
|
@@ -67,10 +67,6 @@
|
|
|
67
67
|
return typeof updater === 'function' ? updater(input) : updater;
|
|
68
68
|
}
|
|
69
69
|
function getBy(obj, path) {
|
|
70
|
-
if (!path) {
|
|
71
|
-
throw new Error('A path string is required to use getBy');
|
|
72
|
-
}
|
|
73
|
-
|
|
74
70
|
const pathArray = makePathArray(path);
|
|
75
71
|
const pathObj = pathArray;
|
|
76
72
|
return pathObj.reduce((current, pathPart) => {
|
|
@@ -122,11 +118,17 @@
|
|
|
122
118
|
const reFindNumbers2 = /^(\d*)\./gm;
|
|
123
119
|
const reFindNumbers3 = /\.(\d*$)/gm;
|
|
124
120
|
const reFindMultiplePeriods = /\.{2,}/gm;
|
|
121
|
+
const intPrefix = '__int__';
|
|
122
|
+
const intReplace = intPrefix + "$1";
|
|
125
123
|
|
|
126
124
|
function makePathArray(str) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
125
|
+
if (typeof str !== 'string') {
|
|
126
|
+
throw new Error();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return str.replace('[', '.').replace(']', '').replace(reFindNumbers0, intReplace).replace(reFindNumbers1, "." + intReplace + ".").replace(reFindNumbers2, intReplace + ".").replace(reFindNumbers3, "." + intReplace).replace(reFindMultiplePeriods, '.').split('.').map(d => {
|
|
130
|
+
if (d.indexOf(intPrefix) === 0) {
|
|
131
|
+
return parseInt(d.substring(intPrefix.length), 10);
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
return d;
|
|
@@ -163,6 +165,7 @@
|
|
|
163
165
|
this.validationMeta = {};
|
|
164
166
|
|
|
165
167
|
this.update = options => {
|
|
168
|
+
if (!options) return;
|
|
166
169
|
this.store.batch(() => {
|
|
167
170
|
if (options.defaultState && options.defaultState !== this.options.defaultState) {
|
|
168
171
|
this.store.setState(prev => ({ ...prev,
|
|
@@ -378,7 +381,7 @@
|
|
|
378
381
|
}, opts);
|
|
379
382
|
};
|
|
380
383
|
|
|
381
|
-
this.
|
|
384
|
+
this.removeFieldValue = (field, index, opts) => {
|
|
382
385
|
this.setFieldValue(field, prev => {
|
|
383
386
|
// invariant( // TODO: bring in invariant
|
|
384
387
|
// Array.isArray(prev),
|
|
@@ -422,6 +425,7 @@
|
|
|
422
425
|
|
|
423
426
|
this.store.state = next;
|
|
424
427
|
this.state = next;
|
|
428
|
+
console.log(this.state);
|
|
425
429
|
}
|
|
426
430
|
});
|
|
427
431
|
this.state = this.store.state;
|
|
@@ -516,7 +520,9 @@
|
|
|
516
520
|
}
|
|
517
521
|
};
|
|
518
522
|
|
|
519
|
-
this.getValue = () =>
|
|
523
|
+
this.getValue = () => {
|
|
524
|
+
return this.form.getFieldValue(this.name);
|
|
525
|
+
};
|
|
520
526
|
|
|
521
527
|
this.setValue = (updater, options) => this.form.setFieldValue(this.name, updater, options);
|
|
522
528
|
|
|
@@ -530,7 +536,7 @@
|
|
|
530
536
|
|
|
531
537
|
this.insertValue = (index, value) => this.form.insertFieldValue(this.name, index, value);
|
|
532
538
|
|
|
533
|
-
this.removeValue = index => this.form.
|
|
539
|
+
this.removeValue = index => this.form.removeFieldValue(this.name, index);
|
|
534
540
|
|
|
535
541
|
this.swapValues = (aIndex, bIndex) => this.form.swapFieldValues(this.name, aIndex, bIndex);
|
|
536
542
|
|
|
@@ -715,14 +721,12 @@
|
|
|
715
721
|
|
|
716
722
|
this.form = _opts.form;
|
|
717
723
|
this.uid = uid++; // Support field prefixing from FieldScope
|
|
724
|
+
// let fieldPrefix = ''
|
|
725
|
+
// if (this.form.fieldName) {
|
|
726
|
+
// fieldPrefix = `${this.form.fieldName}.`
|
|
727
|
+
// }
|
|
718
728
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
if (this.form.fieldName) {
|
|
722
|
-
fieldPrefix = this.form.fieldName + ".";
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
this.name = fieldPrefix + _opts.name;
|
|
729
|
+
this.name = _opts.name;
|
|
726
730
|
this.store = new Store({
|
|
727
731
|
value: this.getValue(),
|
|
728
732
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
@@ -741,6 +745,8 @@
|
|
|
741
745
|
if (next.value !== prevState.value) {
|
|
742
746
|
this.validate('change', next.value);
|
|
743
747
|
}
|
|
748
|
+
|
|
749
|
+
console.log(this);
|
|
744
750
|
}
|
|
745
751
|
});
|
|
746
752
|
this.state = this.store.state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../../../node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js","../../src/utils.ts","../../src/FormApi.ts","../../src/FieldApi.ts"],"sourcesContent":["/**\n * store\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nclass Store {\n listeners = new Set();\n batching = false;\n queue = [];\n constructor(initialState, options) {\n this.state = initialState;\n this.options = options;\n }\n subscribe = listener => {\n this.listeners.add(listener);\n const unsub = this.options?.onSubscribe?.(listener, this);\n return () => {\n this.listeners.delete(listener);\n unsub?.();\n };\n };\n setState = updater => {\n const previous = this.state;\n this.state = this.options?.updateFn ? this.options.updateFn(previous)(updater) : updater(previous);\n if (this.state === previous) return;\n this.options?.onUpdate?.(this.state, previous);\n this.queue.push(() => {\n this.listeners.forEach(listener => listener(this.state, previous));\n });\n this.#flush();\n };\n #flush = () => {\n if (this.batching) return;\n this.queue.forEach(cb => cb());\n this.queue = [];\n };\n batch = cb => {\n this.batching = true;\n cb();\n this.batching = false;\n this.#flush();\n };\n}\n\nexport { Store };\n//# sourceMappingURL=index.js.map\n","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 if (!path) {\n throw new Error('A path string is required to use getBy')\n }\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\nfunction makePathArray(str: string) {\n return str\n .replace('[', '.')\n .replace(']', '')\n .replace(reFindNumbers0, '__int__$1')\n .replace(reFindNumbers1, '.__int__$1.')\n .replace(reFindNumbers2, '__int__$1.')\n .replace(reFindNumbers3, '.__int__$1')\n .replace(reFindMultiplePeriods, '.')\n .split('.')\n .map((d) => {\n if (d.indexOf('__int__') === 0) {\n return parseInt(d.substring('__int__'.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 ? never & 'Dynamic length array indexing is not supported'\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","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 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 spliceFieldValue = <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 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 = (fieldPrefix + 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 => this.form.getFieldValue(this.name)\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) =>\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.spliceFieldValue(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","Error","pathArray","makePathArray","pathObj","reduce","current","pathPart","undefined","setBy","_path","doSet","parent","length","key","shift","Array","isArray","prefix","slice","reFindNumbers0","reFindNumbers1","reFindNumbers2","reFindNumbers3","reFindMultiplePeriods","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","spliceFieldValue","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","fieldPrefix","fieldName","defaultMeta","touchedError","prevState","change","blur","submit"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.development.js","sources":["../../../../node_modules/.pnpm/@tanstack+store@0.0.1-beta.84/node_modules/@tanstack/store/build/esm/index.js","../../src/utils.ts","../../src/FormApi.ts","../../src/FieldApi.ts"],"sourcesContent":["/**\n * store\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nclass Store {\n listeners = new Set();\n batching = false;\n queue = [];\n constructor(initialState, options) {\n this.state = initialState;\n this.options = options;\n }\n subscribe = listener => {\n this.listeners.add(listener);\n const unsub = this.options?.onSubscribe?.(listener, this);\n return () => {\n this.listeners.delete(listener);\n unsub?.();\n };\n };\n setState = updater => {\n const previous = this.state;\n this.state = this.options?.updateFn ? this.options.updateFn(previous)(updater) : updater(previous);\n if (this.state === previous) return;\n this.options?.onUpdate?.(this.state, previous);\n this.queue.push(() => {\n this.listeners.forEach(listener => listener(this.state, previous));\n });\n this.#flush();\n };\n #flush = () => {\n if (this.batching) return;\n this.queue.forEach(cb => cb());\n this.queue = [];\n };\n batch = cb => {\n this.batching = true;\n cb();\n this.batching = false;\n this.#flush();\n };\n}\n\nexport { Store };\n//# sourceMappingURL=index.js.map\n","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 console.log(this.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((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 console.log(this)\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","console","log","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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"}
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
* LICENSE.md file in the root directory of this source tree.
|
|
19
19
|
*
|
|
20
20
|
* @license MIT
|
|
21
|
-
*/class e{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{this.batching=!0,t(),this.batching=!1,this.#t()}}function i(t,e){return"function"==typeof t?t(e):t}function s(t,e){if(!e)throw new Error("A path string is required to use getBy");return u(e).reduce(((t,e)=>{if(void 0!==t)return t[e]}),t)}function a(t,e,s){const a=u(e);return function t(e){if(!a.length)return i(s,e);const n=a.shift();if("string"==typeof n)return"object"==typeof e?{...e,[n]:t(e[n])}:{[n]:t()};if("number"==typeof n){if(Array.isArray(e)){const i=e.slice(0,n);return[...i.length?i:new Array(n),t(e[n]),...e.slice(n+1)]}return[...new Array(n),t()]}throw new Error("Uh oh!")}(t)}const n=/^(\d*)$/gm,o=/\.(\d*)\./gm,l=/^(\d*)\./gm,h=/\.(\d*$)/gm,r=/\.{2,}/gm;function u(t){return t.replace("[",".").replace("]","").replace(n,"__int__$1").replace(o,".__int__$1.").replace(l,"__int__$1.").replace(h,".__int__$1").replace(r,".").split(".").map((t=>0===t.indexOf("__int__")?parseInt(t.substring("__int__".length),10):t))}function d(t){return{values:{},fieldMeta:{},canSubmit:!0,isFieldsValid:!1,isFieldsValidating:!1,isFormValid:!1,isFormValidating:!1,isSubmitted:!1,isSubmitting:!1,isTouched:!1,isValid:!1,isValidating:!1,submissionAttempts:0,formValidationCount:0,...t}}var c=0;function f(t){return"__private_"+c+++"_"+t}function v(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError("attempted to use private field on non-instance");return t}let m=0;var p=f("updateStore"),g=f("leaseValidateAsync");class V{constructor(t){var i;this.options={},this.mount=()=>{const t=this.getInfo();t.instances[this.uid]=this;const e=this.form.store.subscribe((()=>{v(this,p)[p]()}));return()=>{e(),delete t.instances[this.uid],Object.keys(t.instances).length||delete this.form.fieldInfo[this.name]}},Object.defineProperty(this,p,{writable:!0,value:()=>{this.store.batch((()=>{const t=this.getValue(),e=this.getMeta();t!==this.state.value&&this.store.setState((e=>({...e,value:t}))),e!==this.state.meta&&this.store.setState((t=>({...t,meta:e})))}))}}),this.update=t=>{var e,i,s,a;this.options={validatePristine:null!=(e=this.form.options.defaultValidatePristine)&&e,validateOn:null!=(i=this.form.options.defaultValidateOn)?i:"change",validateAsyncOn:null!=(s=this.form.options.defaultValidateAsyncOn)?s:"blur",validateAsyncDebounceMs:null!=(a=this.form.options.defaultValidateAsyncDebounceMs)?a:0,...t},void 0===this.state.value&&void 0!==this.options.defaultValue&&this.setValue(this.options.defaultValue),void 0===this.getMeta()&&this.setMeta(this.state.meta)},this.getValue=()=>this.form.getFieldValue(this.name),this.setValue=(t,e)=>this.form.setFieldValue(this.name,t,e),this.getMeta=()=>this.form.getFieldMeta(this.name),this.setMeta=t=>this.form.setFieldMeta(this.name,t),this.getInfo=()=>this.form.getFieldInfo(this.name),this.pushValue=t=>this.form.pushFieldValue(this.name,t),this.insertValue=(t,e)=>this.form.insertFieldValue(this.name,t,e),this.removeValue=t=>this.form.spliceFieldValue(this.name,t),this.swapValues=(t,e)=>this.form.swapFieldValues(this.name,t,e),this.getSubField=t=>new V({name:this.name+"."+t,form:this.form}),this.validateSync=async(t=this.state.value)=>{const{validate:e}=this.options;if(!e)return;const i=(this.getInfo().validationCount||0)+1;this.getInfo().validationCount=i;const s=y(e(t,this));this.state.meta.error!==s&&this.setMeta((t=>({...t,error:s}))),this.state.meta.error&&this.cancelValidateAsync()},Object.defineProperty(this,g,{writable:!0,value:()=>{const t=(this.getInfo().validationAsyncCount||0)+1;return this.getInfo().validationAsyncCount=t,t}}),this.cancelValidateAsync=()=>{v(this,g)[g](),this.setMeta((t=>({...t,isValidating:!1})))},this.validateAsync=async(t=this.state.value)=>{const{validateAsync:e,validateAsyncDebounceMs:i}=this.options;if(!e)return;!0!==this.state.meta.isValidating&&this.setMeta((t=>({...t,isValidating:!0})));const s=v(this,g)[g](),a=()=>s===this.getInfo().validationAsyncCount;if(this.getInfo().validationPromise||(this.getInfo().validationPromise=new Promise(((t,e)=>{this.getInfo().validationResolve=t,this.getInfo().validationReject=e}))),i>0&&await new Promise((t=>setTimeout(t,i))),a())try{const i=await e(t,this);if(a()){var n,o;const t=y(i);this.setMeta((e=>({...e,isValidating:!1,error:t}))),null==(n=(o=this.getInfo()).validationResolve)||n.call(o,t)}}catch(t){var l,h;if(a())throw null==(l=(h=this.getInfo()).validationReject)||l.call(h,t),t}finally{a()&&(this.setMeta((t=>({...t,isValidating:!1}))),delete this.getInfo().validationPromise)}return this.getInfo().validationPromise},this.shouldValidate=(t,e)=>{const{validateOn:i,validateAsyncOn:s}=this.options,a=function(t){return t?b[t]:3}(e);return Object.keys(b).some((e=>t?s:i===e&&a>=b[e]))},this.validate=async(t,e)=>{if(this.options.validatePristine||this.state.meta.isTouched)return this.shouldValidate(!1,t)&&this.validateSync(e),this.state.meta.error?this.state.meta.error:this.shouldValidate(!0,t)?this.validateAsync(e):void 0},this.getChangeProps=(t={})=>({...t,value:this.state.value,onChange:e=>{this.setValue(e),null==t.onChange||t.onChange(e)},onBlur:e=>{this.setMeta((t=>({...t,isTouched:!0}))),this.validate("blur"),null==t.onBlur||t.onBlur(e)}}),this.getInputProps=(t={})=>({...t,value:String(this.state.value),onChange:e=>{this.setValue(e.target.value),null==t.onChange||t.onChange(e.target.value)},onBlur:this.getChangeProps(t).onBlur}),this.form=t.form,this.uid=m++;let s="";this.form.fieldName&&(s=this.form.fieldName+"."),this.name=s+t.name,this.store=new e({value:this.getValue(),meta:null!=(i=this.getMeta())?i:{isValidating:!1,isTouched:!1,...this.options.defaultMeta}},{onUpdate:t=>{t.meta.touchedError=t.meta.isTouched?t.meta.error:void 0;const e=this.state;this.state=t,t.value!==e.value&&this.validate("change",t.value)}}),this.state=this.store.state,this.update(t)}}const b={change:0,blur:1,submit:2};function y(t){if(t)return"string"!=typeof t?"Invalid Form Values":t}t.FieldApi=V,t.FormApi=class{constructor(t){var n,o;this.options={},this.fieldInfo={},this.validationMeta={},this.update=t=>{this.store.batch((()=>{t.defaultState&&t.defaultState!==this.options.defaultState&&this.store.setState((e=>({...e,...t.defaultState}))),t.defaultValues!==this.options.defaultValues&&this.store.setState((e=>({...e,values:t.defaultValues})))})),this.options=t},this.reset=()=>this.store.setState((()=>d(this.options.defaultValues))),this.validateAllFields=async()=>{const t=[];return this.store.batch((()=>{Object.values(this.fieldInfo).forEach((e=>{Object.values(e.instances).forEach((e=>{e.state.meta.isTouched||(e.setMeta((t=>({...t,isTouched:!0}))),e.options.validate&&t.push(e.validate()))}))}))})),Promise.all(t)},this.validateForm=async()=>{const{validate:t}=this.options;if(!t)return;this.store.setState((t=>({...t,isValidating:!0,formValidationCount:t.formValidationCount+1})));const e=this.state.formValidationCount,i=()=>e===this.state.formValidationCount;this.validationMeta.validationPromise||(this.validationMeta.validationPromise=new Promise(((t,e)=>{this.validationMeta.validationResolve=t,this.validationMeta.validationReject=e})));return(async()=>{try{const a=await t(this.state.values,this);var e,s;if(i())this.store.setState((t=>({...t,isValidating:!1,error:a?"string"==typeof a?a:"Invalid Form Values":null}))),null==(e=(s=this.validationMeta).validationResolve)||e.call(s,a)}catch(t){var a,n;if(i())null==(a=(n=this.validationMeta).validationReject)||a.call(n,t)}finally{delete this.validationMeta.validationPromise}})(),this.validationMeta.validationPromise},this.handleSubmit=async t=>{if(t.preventDefault(),t.stopPropagation(),this.store.setState((t=>({...t,isSubmitted:!1,submissionAttempts:t.submissionAttempts+1}))),!this.state.canSubmit)return;this.store.setState((t=>({...t,isSubmitting:!0})));const e=()=>{this.store.setState((t=>({...t,isSubmitting:!1})))};var i,s,a,n;if(await this.validateAllFields(),!this.state.isFieldsValid)return e(),void(null==(i=(s=this.options).onInvalidSubmit)||i.call(s,this.state.values,this));if(await this.validateForm(),!this.state.isValid)return e(),void(null==(a=(n=this.options).onInvalidSubmit)||a.call(n,this.state.values,this));try{var o,l;await(null==(o=(l=this.options).onSubmit)?void 0:o.call(l,this.state.values,this)),this.store.batch((()=>{this.store.setState((t=>({...t,isSubmitted:!0}))),e()}))}catch(t){throw e(),t}},this.getFieldValue=t=>s(this.state.values,t),this.getFieldMeta=t=>this.state.fieldMeta[t],this.getFieldInfo=t=>{var e;return(e=this.fieldInfo)[t]||(e[t]={instances:{}})},this.setFieldMeta=(t,e)=>{this.store.setState((s=>({...s,fieldMeta:{...s.fieldMeta,[t]:i(e,s.fieldMeta[t])}})))},this.setFieldValue=(t,e,i)=>{var s;const n=null==(s=null==i?void 0:i.touch)||s;this.store.batch((()=>{this.store.setState((i=>({...i,values:a(i.values,t,e)}))),n&&this.setFieldMeta(t,(t=>({...t,isTouched:!0})))}))},this.pushFieldValue=(t,e,i)=>this.setFieldValue(t,(t=>[...Array.isArray(t)?t:[],e]),i),this.insertFieldValue=(t,e,i,s)=>{this.setFieldValue(t,(t=>t.map(((t,s)=>s===e?i:t))),s)},this.spliceFieldValue=(t,e,i)=>{this.setFieldValue(t,(t=>t.filter(((t,i)=>i!==e))),i)},this.swapFieldValues=(t,e,i)=>{this.setFieldValue(t,(t=>{const s=t[e],n=t[i];return a(a(t,[e],n),[i],s)}))},this.store=new e(d({...null==t?void 0:t.defaultState,values:null!=(n=null==t?void 0:t.defaultValues)?n:null==t||null==(o=t.defaultState)?void 0:o.values,isFormValid:!(null!=t&&t.validate)}),{onUpdate:t=>{const e=Object.values(t.fieldMeta),i=e.some((t=>null==t?void 0:t.isValidating)),s=!e.some((t=>null==t?void 0:t.error)),a=e.some((t=>null==t?void 0:t.isTouched)),n=i||t.isFormValidating,o=!t.formError,l=s&&o,h=0===t.submissionAttempts&&!a||!n&&!t.isSubmitting&&l;t={...t,isFieldsValidating:i,isFieldsValid:s,isFormValid:o,isValid:l,canSubmit:h,isTouched:a},this.store.state=t,this.state=t}}),this.state=this.store.state,this.update(t||{})}},t.functionalUpdate=i,t.getBy=s,t.setBy=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
21
|
+
*/class e{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{this.batching=!0,t(),this.batching=!1,this.#t()}}function i(t,e){return"function"==typeof t?t(e):t}function s(t,e){return c(e).reduce(((t,e)=>{if(void 0!==t)return t[e]}),t)}function a(t,e,s){const a=c(e);return function t(e){if(!a.length)return i(s,e);const n=a.shift();if("string"==typeof n)return"object"==typeof e?{...e,[n]:t(e[n])}:{[n]:t()};if("number"==typeof n){if(Array.isArray(e)){const i=e.slice(0,n);return[...i.length?i:new Array(n),t(e[n]),...e.slice(n+1)]}return[...new Array(n),t()]}throw new Error("Uh oh!")}(t)}const n=/^(\d*)$/gm,o=/\.(\d*)\./gm,l=/^(\d*)\./gm,h=/\.(\d*$)/gm,r=/\.{2,}/gm,u="__int__",d="__int__$1";function c(t){if("string"!=typeof t)throw new Error;return t.replace("[",".").replace("]","").replace(n,d).replace(o,".__int__$1.").replace(l,"__int__$1.").replace(h,".__int__$1").replace(r,".").split(".").map((t=>0===t.indexOf(u)?parseInt(t.substring(u.length),10):t))}function f(t){return{values:{},fieldMeta:{},canSubmit:!0,isFieldsValid:!1,isFieldsValidating:!1,isFormValid:!1,isFormValidating:!1,isSubmitted:!1,isSubmitting:!1,isTouched:!1,isValid:!1,isValidating:!1,submissionAttempts:0,formValidationCount:0,...t}}var v=0;function m(t){return"__private_"+v+++"_"+t}function p(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError("attempted to use private field on non-instance");return t}let g=0;var V=m("updateStore"),b=m("leaseValidateAsync");class y{constructor(t){var i;this.options={},this.mount=()=>{const t=this.getInfo();t.instances[this.uid]=this;const e=this.form.store.subscribe((()=>{p(this,V)[V]()}));return()=>{e(),delete t.instances[this.uid],Object.keys(t.instances).length||delete this.form.fieldInfo[this.name]}},Object.defineProperty(this,V,{writable:!0,value:()=>{this.store.batch((()=>{const t=this.getValue(),e=this.getMeta();t!==this.state.value&&this.store.setState((e=>({...e,value:t}))),e!==this.state.meta&&this.store.setState((t=>({...t,meta:e})))}))}}),this.update=t=>{var e,i,s,a;this.options={validatePristine:null!=(e=this.form.options.defaultValidatePristine)&&e,validateOn:null!=(i=this.form.options.defaultValidateOn)?i:"change",validateAsyncOn:null!=(s=this.form.options.defaultValidateAsyncOn)?s:"blur",validateAsyncDebounceMs:null!=(a=this.form.options.defaultValidateAsyncDebounceMs)?a:0,...t},void 0===this.state.value&&void 0!==this.options.defaultValue&&this.setValue(this.options.defaultValue),void 0===this.getMeta()&&this.setMeta(this.state.meta)},this.getValue=()=>this.form.getFieldValue(this.name),this.setValue=(t,e)=>this.form.setFieldValue(this.name,t,e),this.getMeta=()=>this.form.getFieldMeta(this.name),this.setMeta=t=>this.form.setFieldMeta(this.name,t),this.getInfo=()=>this.form.getFieldInfo(this.name),this.pushValue=t=>this.form.pushFieldValue(this.name,t),this.insertValue=(t,e)=>this.form.insertFieldValue(this.name,t,e),this.removeValue=t=>this.form.removeFieldValue(this.name,t),this.swapValues=(t,e)=>this.form.swapFieldValues(this.name,t,e),this.getSubField=t=>new y({name:this.name+"."+t,form:this.form}),this.validateSync=async(t=this.state.value)=>{const{validate:e}=this.options;if(!e)return;const i=(this.getInfo().validationCount||0)+1;this.getInfo().validationCount=i;const s=S(e(t,this));this.state.meta.error!==s&&this.setMeta((t=>({...t,error:s}))),this.state.meta.error&&this.cancelValidateAsync()},Object.defineProperty(this,b,{writable:!0,value:()=>{const t=(this.getInfo().validationAsyncCount||0)+1;return this.getInfo().validationAsyncCount=t,t}}),this.cancelValidateAsync=()=>{p(this,b)[b](),this.setMeta((t=>({...t,isValidating:!1})))},this.validateAsync=async(t=this.state.value)=>{const{validateAsync:e,validateAsyncDebounceMs:i}=this.options;if(!e)return;!0!==this.state.meta.isValidating&&this.setMeta((t=>({...t,isValidating:!0})));const s=p(this,b)[b](),a=()=>s===this.getInfo().validationAsyncCount;if(this.getInfo().validationPromise||(this.getInfo().validationPromise=new Promise(((t,e)=>{this.getInfo().validationResolve=t,this.getInfo().validationReject=e}))),i>0&&await new Promise((t=>setTimeout(t,i))),a())try{const i=await e(t,this);if(a()){var n,o;const t=S(i);this.setMeta((e=>({...e,isValidating:!1,error:t}))),null==(n=(o=this.getInfo()).validationResolve)||n.call(o,t)}}catch(t){var l,h;if(a())throw null==(l=(h=this.getInfo()).validationReject)||l.call(h,t),t}finally{a()&&(this.setMeta((t=>({...t,isValidating:!1}))),delete this.getInfo().validationPromise)}return this.getInfo().validationPromise},this.shouldValidate=(t,e)=>{const{validateOn:i,validateAsyncOn:s}=this.options,a=function(t){return t?F[t]:3}(e);return Object.keys(F).some((e=>t?s:i===e&&a>=F[e]))},this.validate=async(t,e)=>{if(this.options.validatePristine||this.state.meta.isTouched)return this.shouldValidate(!1,t)&&this.validateSync(e),this.state.meta.error?this.state.meta.error:this.shouldValidate(!0,t)?this.validateAsync(e):void 0},this.getChangeProps=(t={})=>({...t,value:this.state.value,onChange:e=>{this.setValue(e),null==t.onChange||t.onChange(e)},onBlur:e=>{this.setMeta((t=>({...t,isTouched:!0}))),this.validate("blur"),null==t.onBlur||t.onBlur(e)}}),this.getInputProps=(t={})=>({...t,value:String(this.state.value),onChange:e=>{this.setValue(e.target.value),null==t.onChange||t.onChange(e.target.value)},onBlur:this.getChangeProps(t).onBlur}),this.form=t.form,this.uid=g++,this.name=t.name,this.store=new e({value:this.getValue(),meta:null!=(i=this.getMeta())?i:{isValidating:!1,isTouched:!1,...this.options.defaultMeta}},{onUpdate:t=>{t.meta.touchedError=t.meta.isTouched?t.meta.error:void 0;const e=this.state;this.state=t,t.value!==e.value&&this.validate("change",t.value),console.log(this)}}),this.state=this.store.state,this.update(t)}}const F={change:0,blur:1,submit:2};function S(t){if(t)return"string"!=typeof t?"Invalid Form Values":t}t.FieldApi=y,t.FormApi=class{constructor(t){var n,o;this.options={},this.fieldInfo={},this.validationMeta={},this.update=t=>{t&&(this.store.batch((()=>{t.defaultState&&t.defaultState!==this.options.defaultState&&this.store.setState((e=>({...e,...t.defaultState}))),t.defaultValues!==this.options.defaultValues&&this.store.setState((e=>({...e,values:t.defaultValues})))})),this.options=t)},this.reset=()=>this.store.setState((()=>f(this.options.defaultValues))),this.validateAllFields=async()=>{const t=[];return this.store.batch((()=>{Object.values(this.fieldInfo).forEach((e=>{Object.values(e.instances).forEach((e=>{e.state.meta.isTouched||(e.setMeta((t=>({...t,isTouched:!0}))),e.options.validate&&t.push(e.validate()))}))}))})),Promise.all(t)},this.validateForm=async()=>{const{validate:t}=this.options;if(!t)return;this.store.setState((t=>({...t,isValidating:!0,formValidationCount:t.formValidationCount+1})));const e=this.state.formValidationCount,i=()=>e===this.state.formValidationCount;this.validationMeta.validationPromise||(this.validationMeta.validationPromise=new Promise(((t,e)=>{this.validationMeta.validationResolve=t,this.validationMeta.validationReject=e})));return(async()=>{try{const a=await t(this.state.values,this);var e,s;if(i())this.store.setState((t=>({...t,isValidating:!1,error:a?"string"==typeof a?a:"Invalid Form Values":null}))),null==(e=(s=this.validationMeta).validationResolve)||e.call(s,a)}catch(t){var a,n;if(i())null==(a=(n=this.validationMeta).validationReject)||a.call(n,t)}finally{delete this.validationMeta.validationPromise}})(),this.validationMeta.validationPromise},this.handleSubmit=async t=>{if(t.preventDefault(),t.stopPropagation(),this.store.setState((t=>({...t,isSubmitted:!1,submissionAttempts:t.submissionAttempts+1}))),!this.state.canSubmit)return;this.store.setState((t=>({...t,isSubmitting:!0})));const e=()=>{this.store.setState((t=>({...t,isSubmitting:!1})))};var i,s,a,n;if(await this.validateAllFields(),!this.state.isFieldsValid)return e(),void(null==(i=(s=this.options).onInvalidSubmit)||i.call(s,this.state.values,this));if(await this.validateForm(),!this.state.isValid)return e(),void(null==(a=(n=this.options).onInvalidSubmit)||a.call(n,this.state.values,this));try{var o,l;await(null==(o=(l=this.options).onSubmit)?void 0:o.call(l,this.state.values,this)),this.store.batch((()=>{this.store.setState((t=>({...t,isSubmitted:!0}))),e()}))}catch(t){throw e(),t}},this.getFieldValue=t=>s(this.state.values,t),this.getFieldMeta=t=>this.state.fieldMeta[t],this.getFieldInfo=t=>{var e;return(e=this.fieldInfo)[t]||(e[t]={instances:{}})},this.setFieldMeta=(t,e)=>{this.store.setState((s=>({...s,fieldMeta:{...s.fieldMeta,[t]:i(e,s.fieldMeta[t])}})))},this.setFieldValue=(t,e,i)=>{var s;const n=null==(s=null==i?void 0:i.touch)||s;this.store.batch((()=>{this.store.setState((i=>({...i,values:a(i.values,t,e)}))),n&&this.setFieldMeta(t,(t=>({...t,isTouched:!0})))}))},this.pushFieldValue=(t,e,i)=>this.setFieldValue(t,(t=>[...Array.isArray(t)?t:[],e]),i),this.insertFieldValue=(t,e,i,s)=>{this.setFieldValue(t,(t=>t.map(((t,s)=>s===e?i:t))),s)},this.removeFieldValue=(t,e,i)=>{this.setFieldValue(t,(t=>t.filter(((t,i)=>i!==e))),i)},this.swapFieldValues=(t,e,i)=>{this.setFieldValue(t,(t=>{const s=t[e],n=t[i];return a(a(t,[e],n),[i],s)}))},this.store=new e(f({...null==t?void 0:t.defaultState,values:null!=(n=null==t?void 0:t.defaultValues)?n:null==t||null==(o=t.defaultState)?void 0:o.values,isFormValid:!(null!=t&&t.validate)}),{onUpdate:t=>{const e=Object.values(t.fieldMeta),i=e.some((t=>null==t?void 0:t.isValidating)),s=!e.some((t=>null==t?void 0:t.error)),a=e.some((t=>null==t?void 0:t.isTouched)),n=i||t.isFormValidating,o=!t.formError,l=s&&o,h=0===t.submissionAttempts&&!a||!n&&!t.isSubmitting&&l;t={...t,isFieldsValidating:i,isFieldsValid:s,isFormValid:o,isValid:l,canSubmit:h,isTouched:a},this.store.state=t,this.state=t,console.log(this.state)}}),this.state=this.store.state,this.update(t||{})}},t.functionalUpdate=i,t.getBy=s,t.setBy=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
22
22
|
//# sourceMappingURL=index.production.js.map
|