@tanstack/form-core 0.0.1 → 0.0.3
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 +144 -57
- package/build/cjs/FieldApi.js.map +1 -1
- package/build/cjs/FormApi.js.map +1 -1
- package/build/esm/index.js +144 -57
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +46 -46
- package/build/types/FieldApi.d.ts +9 -11
- package/build/types/FormApi.d.ts +7 -3
- package/build/types/index.d.ts +3 -167
- package/build/umd/index.development.js +144 -57
- 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 +157 -71
- package/src/FormApi.ts +7 -3
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
|
|
448
448
|
var _updateStore = /*#__PURE__*/_classPrivateFieldLooseKey("updateStore");
|
|
449
449
|
|
|
450
|
-
var
|
|
450
|
+
var _leaseValidateAsync = /*#__PURE__*/_classPrivateFieldLooseKey("leaseValidateAsync");
|
|
451
451
|
|
|
452
452
|
class FieldApi {
|
|
453
453
|
constructor(_opts) {
|
|
@@ -494,10 +494,13 @@
|
|
|
494
494
|
});
|
|
495
495
|
|
|
496
496
|
this.update = opts => {
|
|
497
|
+
var _this$form$options$de, _this$form$options$de2, _this$form$options$de3, _this$form$options$de4;
|
|
498
|
+
|
|
497
499
|
this.options = {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
500
|
+
validatePristine: (_this$form$options$de = this.form.options.defaultValidatePristine) != null ? _this$form$options$de : false,
|
|
501
|
+
validateOn: (_this$form$options$de2 = this.form.options.defaultValidateOn) != null ? _this$form$options$de2 : 'change',
|
|
502
|
+
validateAsyncOn: (_this$form$options$de3 = this.form.options.defaultValidateAsyncOn) != null ? _this$form$options$de3 : 'blur',
|
|
503
|
+
validateAsyncDebounceMs: (_this$form$options$de4 = this.form.options.defaultValidateAsyncDebounceMs) != null ? _this$form$options$de4 : 0,
|
|
501
504
|
...opts
|
|
502
505
|
}; // Default Value
|
|
503
506
|
|
|
@@ -535,48 +538,91 @@
|
|
|
535
538
|
form: this.form
|
|
536
539
|
});
|
|
537
540
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
541
|
+
this.validateSync = async (value = this.state.value) => {
|
|
542
|
+
const {
|
|
543
|
+
validate
|
|
544
|
+
} = this.options;
|
|
545
|
+
|
|
546
|
+
if (!validate) {
|
|
547
|
+
return;
|
|
548
|
+
} // Use the validationCount for all field instances to
|
|
549
|
+
// track freshness of the validation
|
|
544
550
|
|
|
551
|
+
|
|
552
|
+
const validationCount = (this.getInfo().validationCount || 0) + 1;
|
|
553
|
+
this.getInfo().validationCount = validationCount;
|
|
554
|
+
const error = normalizeError(validate(value, this));
|
|
555
|
+
|
|
556
|
+
if (this.state.meta.error !== error) {
|
|
545
557
|
this.setMeta(prev => ({ ...prev,
|
|
546
|
-
|
|
547
|
-
}));
|
|
548
|
-
|
|
558
|
+
error
|
|
559
|
+
}));
|
|
560
|
+
} // If a sync error is encountered, cancel any async validation
|
|
549
561
|
|
|
550
|
-
const validationCount = (this.getInfo().validationCount || 0) + 1;
|
|
551
|
-
this.getInfo().validationCount = validationCount;
|
|
552
562
|
|
|
553
|
-
|
|
563
|
+
if (this.state.meta.error) {
|
|
564
|
+
this.cancelValidateAsync();
|
|
565
|
+
}
|
|
566
|
+
};
|
|
554
567
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
568
|
+
Object.defineProperty(this, _leaseValidateAsync, {
|
|
569
|
+
writable: true,
|
|
570
|
+
value: () => {
|
|
571
|
+
const count = (this.getInfo().validationAsyncCount || 0) + 1;
|
|
572
|
+
this.getInfo().validationAsyncCount = count;
|
|
573
|
+
return count;
|
|
574
|
+
}
|
|
575
|
+
});
|
|
561
576
|
|
|
562
|
-
|
|
563
|
-
|
|
577
|
+
this.cancelValidateAsync = () => {
|
|
578
|
+
// Lease a new validation count to ignore any pending validations
|
|
579
|
+
_classPrivateFieldLooseBase(this, _leaseValidateAsync)[_leaseValidateAsync](); // Cancel any pending validation state
|
|
564
580
|
|
|
565
|
-
if (checkLatest()) {
|
|
566
|
-
var _this$getInfo$validat, _this$getInfo;
|
|
567
581
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
}
|
|
582
|
+
this.setMeta(prev => ({ ...prev,
|
|
583
|
+
isValidating: false
|
|
584
|
+
}));
|
|
585
|
+
};
|
|
573
586
|
|
|
574
|
-
|
|
575
|
-
|
|
587
|
+
this.validateAsync = async (value = this.state.value) => {
|
|
588
|
+
const {
|
|
589
|
+
validateAsync,
|
|
590
|
+
validateAsyncDebounceMs
|
|
591
|
+
} = this.options;
|
|
576
592
|
|
|
577
|
-
|
|
578
|
-
|
|
593
|
+
if (!validateAsync) {
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
if (this.state.meta.isValidating !== true) this.setMeta(prev => ({ ...prev,
|
|
598
|
+
isValidating: true
|
|
599
|
+
})); // Use the validationCount for all field instances to
|
|
600
|
+
// track freshness of the validation
|
|
601
|
+
|
|
602
|
+
const validationAsyncCount = _classPrivateFieldLooseBase(this, _leaseValidateAsync)[_leaseValidateAsync]();
|
|
603
|
+
|
|
604
|
+
const checkLatest = () => validationAsyncCount === this.getInfo().validationAsyncCount;
|
|
605
|
+
|
|
606
|
+
if (!this.getInfo().validationPromise) {
|
|
607
|
+
this.getInfo().validationPromise = new Promise((resolve, reject) => {
|
|
608
|
+
this.getInfo().validationResolve = resolve;
|
|
609
|
+
this.getInfo().validationReject = reject;
|
|
610
|
+
});
|
|
611
|
+
}
|
|
579
612
|
|
|
613
|
+
if (validateAsyncDebounceMs > 0) {
|
|
614
|
+
await new Promise(r => setTimeout(r, validateAsyncDebounceMs));
|
|
615
|
+
} // Only kick off validation if this validation is the latest attempt
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
if (checkLatest()) {
|
|
619
|
+
try {
|
|
620
|
+
const rawError = await validateAsync(value, this);
|
|
621
|
+
|
|
622
|
+
if (checkLatest()) {
|
|
623
|
+
var _this$getInfo$validat, _this$getInfo;
|
|
624
|
+
|
|
625
|
+
const error = normalizeError(rawError);
|
|
580
626
|
this.setMeta(prev => ({ ...prev,
|
|
581
627
|
isValidating: false,
|
|
582
628
|
error
|
|
@@ -598,14 +644,45 @@
|
|
|
598
644
|
delete this.getInfo().validationPromise;
|
|
599
645
|
}
|
|
600
646
|
}
|
|
647
|
+
} // Always return the latest validation promise to the caller
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
return this.getInfo().validationPromise;
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
this.shouldValidate = (isAsync, cause) => {
|
|
654
|
+
const {
|
|
655
|
+
validateOn,
|
|
656
|
+
validateAsyncOn
|
|
657
|
+
} = this.options;
|
|
658
|
+
const level = getValidationCauseLevel(cause); // Must meet *at least* the validation level to validate,
|
|
659
|
+
// e.g. if validateOn is 'change' and validateCause is 'blur',
|
|
660
|
+
// the field will still validate
|
|
661
|
+
|
|
662
|
+
return Object.keys(validateCauseLevels).some(d => isAsync ? validateAsyncOn : validateOn === d && level >= validateCauseLevels[d]);
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
this.validate = async (cause, value) => {
|
|
666
|
+
// If the field is pristine and validatePristine is false, do not validate
|
|
667
|
+
if (!this.options.validatePristine && !this.state.meta.isTouched) return; // Attempt to sync validate first
|
|
668
|
+
|
|
669
|
+
if (this.shouldValidate(false, cause)) {
|
|
670
|
+
this.validateSync(value);
|
|
671
|
+
} // If there is an error, return it, do not attempt async validation
|
|
601
672
|
|
|
602
|
-
return this.getInfo().validationPromise;
|
|
603
|
-
}
|
|
604
|
-
});
|
|
605
673
|
|
|
606
|
-
|
|
674
|
+
if (this.state.meta.error) {
|
|
675
|
+
return this.state.meta.error;
|
|
676
|
+
} // No error? Attempt async validation
|
|
607
677
|
|
|
608
|
-
|
|
678
|
+
|
|
679
|
+
if (this.shouldValidate(true, cause)) {
|
|
680
|
+
return this.validateAsync(value);
|
|
681
|
+
} // If there is no sync error or async validation attempt, there is no error
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
return undefined;
|
|
685
|
+
};
|
|
609
686
|
|
|
610
687
|
this.getChangeProps = (props = {}) => {
|
|
611
688
|
return { ...props,
|
|
@@ -618,14 +695,7 @@
|
|
|
618
695
|
this.setMeta(prev => ({ ...prev,
|
|
619
696
|
isTouched: true
|
|
620
697
|
}));
|
|
621
|
-
|
|
622
|
-
validateOn
|
|
623
|
-
} = this.options;
|
|
624
|
-
|
|
625
|
-
if (validateOn === 'blur' || validateOn.split('-')[0] === 'blur') {
|
|
626
|
-
this.validate();
|
|
627
|
-
}
|
|
628
|
-
|
|
698
|
+
this.validate('blur');
|
|
629
699
|
props.onBlur == null ? void 0 : props.onBlur(e);
|
|
630
700
|
}
|
|
631
701
|
};
|
|
@@ -664,17 +734,13 @@
|
|
|
664
734
|
onUpdate: next => {
|
|
665
735
|
next.meta.touchedError = next.meta.isTouched ? next.meta.error : undefined; // Do not validate pristine fields
|
|
666
736
|
|
|
667
|
-
|
|
737
|
+
const prevState = this.state;
|
|
738
|
+
this.state = next;
|
|
668
739
|
|
|
669
|
-
if (
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
} catch (err) {
|
|
673
|
-
console.error('An error occurred during validation', err);
|
|
674
|
-
}
|
|
740
|
+
if (next.value !== prevState.value) {
|
|
741
|
+
console.log('change');
|
|
742
|
+
this.validate('change', next.value);
|
|
675
743
|
}
|
|
676
|
-
|
|
677
|
-
this.state = next;
|
|
678
744
|
}
|
|
679
745
|
});
|
|
680
746
|
this.state = this.store.state;
|
|
@@ -682,6 +748,27 @@
|
|
|
682
748
|
}
|
|
683
749
|
|
|
684
750
|
}
|
|
751
|
+
const validateCauseLevels = {
|
|
752
|
+
change: 0,
|
|
753
|
+
blur: 1,
|
|
754
|
+
submit: 2
|
|
755
|
+
};
|
|
756
|
+
|
|
757
|
+
function getValidationCauseLevel(cause) {
|
|
758
|
+
return !cause ? 3 : validateCauseLevels[cause];
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
function normalizeError(rawError) {
|
|
762
|
+
if (rawError) {
|
|
763
|
+
if (typeof rawError !== 'string') {
|
|
764
|
+
return 'Invalid Form Values';
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
return rawError;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
return undefined;
|
|
771
|
+
}
|
|
685
772
|
|
|
686
773
|
exports.FieldApi = FieldApi;
|
|
687
774
|
exports.FormApi = FormApi;
|
|
@@ -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 type { FormEvent } from 'react'\nimport { Store } from '@tanstack/store'\n//\nimport type { DeepKeys, DeepValue, Updater } from './utils'\nimport { functionalUpdate, getBy, setBy } from './utils'\nimport type { FieldApi, FieldMeta } from './FieldApi'\n\nexport type FormOptions<TData> = {\n defaultValues?: TData\n defaultState?: Partial<FormState<TData>>\n onSubmit?: (values: TData, formApi: FormApi<TData>) => Promise<any>\n onInvalidSubmit?: (values: TData, formApi: FormApi<TData>) => void\n validate?: (values: TData, formApi: FormApi<TData>) => Promise<any>\n debugForm?: boolean\n validatePristine?: boolean\n}\n\nexport type FieldInfo<TFormData> = {\n instances: Record<string, FieldApi<any, TFormData>>\n} & ValidationMeta\n\nexport type ValidationMeta = {\n validationCount?: 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\nexport function 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: FormEvent & { __handled?: boolean }) => {\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\ntype ValidateOn = 'change' | 'blur' | 'submit'\n\nexport type FieldOptions<TData, TFormData> = {\n name: unknown extends TFormData ? string : DeepKeys<TFormData>\n defaultValue?: TData\n form?: FormApi<TFormData>\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?: ValidateOn // Default: 'change'\n validateAsyncOn?: ValidateOn // Default: 'blur'\n validateAsyncDebounceMs?: number\n filterValue?: (value: TData) => TData\n defaultMeta?: Partial<FieldMeta>\n change?: boolean\n blur?: boolean\n submit?: boolean\n}\n\nexport type FieldMeta = {\n isTouched: boolean\n touchedError?: ValidationError\n error?: ValidationError\n isValidating: boolean\n}\n\nexport type ChangeProps<TData> = {\n onChange?: (updater: Updater<TData>) => void\n onBlur?: (event: any) => void\n}\n\nexport type InputProps = {\n onChange?: (event: any) => void\n onBlur?: (event: any) => void\n}\n\nexport type FieldApiOptions<TData, TFormData> = RequiredByKey<\n FieldOptions<TData, TFormData>,\n 'form'\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 'validateOn' | 'validateAsyncOn'\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 if (!this.options.validatePristine && !next.meta.isTouched) return\n\n // If validateOn is set to a variation of change, run the validation\n if (\n this.options.validateOn === 'change' ||\n this.options.validateOn.split('-')[0] === 'change'\n ) {\n try {\n this.validate()\n } catch (err) {\n console.error('An error occurred during validation', err)\n }\n }\n\n this.state = next\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 validateOn: 'change',\n validateAsyncOn: 'blur',\n validateAsyncDebounceMs: 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 #validate = async (isAsync: boolean) => {\n if (!this.options.validate) {\n return\n }\n\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 validationCount = (this.getInfo().validationCount || 0) + 1\n\n this.getInfo().validationCount = validationCount\n\n const checkLatest = () => validationCount === this.getInfo().validationCount\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 try {\n const rawError = await this.options.validate(this.state.value, this)\n\n if (checkLatest()) {\n const error = (() => {\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\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 return this.getInfo().validationPromise\n }\n\n validate = () => this.#validate(false)\n validateAsync = () => this.#validate(true)\n\n getChangeProps = <T extends ChangeProps<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\n const { validateOn } = this.options\n\n if (validateOn === 'blur' || validateOn.split('-')[0] === 'blur') {\n this.validate()\n }\n\n props.onBlur?.(e)\n },\n } as ChangeProps<TData> & Omit<T, keyof ChangeProps<TData>>\n }\n\n getInputProps = <T extends InputProps>(\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"],"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","validateOn","validateAsyncOn","validateAsyncDebounceMs","defaultValue","setValue","pushValue","insertValue","removeValue","swapValues","aIndex","bIndex","getSubField","isAsync","validationCount","rawError","validateAsync","getChangeProps","props","onChange","onBlur","getInputProps","String","target","fieldPrefix","fieldName","defaultMeta","touchedError","validatePristine","console"],"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 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 type { FormEvent } from 'react'\nimport { 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 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 debugForm?: boolean\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\nexport function 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: FormEvent & { __handled?: boolean }) => {\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 type FieldOptions<TData, TFormData> = {\n name: unknown extends TFormData ? string : DeepKeys<TFormData>\n defaultValue?: TData\n form?: FormApi<TFormData>\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 FieldMeta = {\n isTouched: boolean\n touchedError?: ValidationError\n error?: ValidationError\n isValidating: boolean\n}\n\nexport type ChangeProps<TData> = {\n onChange?: (updater: Updater<TData>) => void\n onBlur?: (event: any) => void\n}\n\nexport type InputProps = {\n onChange?: (event: any) => void\n onBlur?: (event: any) => void\n}\n\nexport type FieldApiOptions<TData, TFormData> = RequiredByKey<\n FieldOptions<TData, TFormData>,\n 'form'\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 console.log('change')\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 ChangeProps<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 InputProps>(\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","console","log","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("validate");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=>{this.options={validateOn:"change",validateAsyncOn:"blur",validateAsyncDebounceMs: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}),Object.defineProperty(this,g,{writable:!0,value:async t=>{if(!this.options.validate)return;this.setMeta((t=>({...t,isValidating:!0})));const e=(this.getInfo().validationCount||0)+1;this.getInfo().validationCount=e;const i=()=>e===this.getInfo().validationCount;this.getInfo().validationPromise||(this.getInfo().validationPromise=new Promise(((t,e)=>{this.getInfo().validationResolve=t,this.getInfo().validationReject=e})));try{const t=await this.options.validate(this.state.value,this);if(i()){var s,a;const e=(()=>{if(t)return"string"!=typeof t?"Invalid Form Values":t})();this.setMeta((t=>({...t,isValidating:!1,error:e}))),null==(s=(a=this.getInfo()).validationResolve)||s.call(a,e)}}catch(t){var n,o;if(i())throw null==(n=(o=this.getInfo()).validationReject)||n.call(o,t),t}finally{i()&&(this.setMeta((t=>({...t,isValidating:!1}))),delete this.getInfo().validationPromise)}return this.getInfo().validationPromise}}),this.validate=()=>v(this,g)[g](!1),this.validateAsync=()=>v(this,g)[g](!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})));const{validateOn:i}=this.options;"blur"!==i&&"blur"!==i.split("-")[0]||this.validate(),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=>{if(t.meta.touchedError=t.meta.isTouched?t.meta.error:void 0,this.options.validatePristine||t.meta.isTouched){if("change"===this.options.validateOn||"change"===this.options.validateOn.split("-")[0])try{this.validate()}catch(t){console.error("An error occurred during validation",t)}this.state=t}}}),this.state=this.store.state,this.update(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.getDefaultFormState=d,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){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&&(console.log("change"),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.getDefaultFormState=d,t.setBy=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
22
22
|
//# sourceMappingURL=index.production.js.map
|