@strictly/react-form 0.0.17 → 0.0.19

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.
Files changed (38) hide show
  1. package/.out/core/mobx/form_model.d.ts +13 -10
  2. package/.out/core/mobx/form_model.js +103 -137
  3. package/.out/core/mobx/hooks.js +3 -4
  4. package/.out/core/mobx/merge_field_adapters_with_two_way_converter.d.ts +1 -1
  5. package/.out/core/mobx/merge_field_adapters_with_validators.js +5 -1
  6. package/.out/core/mobx/specs/form_model.tests.js +28 -23
  7. package/.out/core/props.d.ts +0 -2
  8. package/.out/mantine/create_fields_view.d.ts +2 -1
  9. package/.out/mantine/hooks.d.ts +6 -5
  10. package/.out/mantine/specs/checkbox_hooks.stories.d.ts +5 -2
  11. package/.out/mantine/specs/checkbox_hooks.stories.js +3 -2
  12. package/.out/mantine/specs/text_input_hooks.stories.d.ts +3 -2
  13. package/.out/mantine/specs/text_input_hooks.stories.js +3 -2
  14. package/.out/mantine/types.d.ts +3 -3
  15. package/.out/tsconfig.tsbuildinfo +1 -1
  16. package/.out/util/partial.d.ts +5 -2
  17. package/.out/util/specs/partial.tests.d.ts +1 -0
  18. package/.out/util/specs/partial.tests.js +8 -0
  19. package/.turbo/turbo-build.log +8 -8
  20. package/.turbo/turbo-check-types.log +1 -1
  21. package/core/mobx/form_model.ts +97 -158
  22. package/core/mobx/hooks.tsx +6 -5
  23. package/core/mobx/merge_field_adapters_with_two_way_converter.ts +2 -1
  24. package/core/mobx/merge_field_adapters_with_validators.ts +1 -1
  25. package/core/mobx/specs/form_model.tests.ts +39 -27
  26. package/core/props.ts +0 -4
  27. package/dist/index.cjs +93 -139
  28. package/dist/index.d.cts +41 -35
  29. package/dist/index.d.ts +41 -35
  30. package/dist/index.js +92 -139
  31. package/mantine/create_fields_view.tsx +8 -4
  32. package/mantine/hooks.tsx +23 -15
  33. package/mantine/specs/checkbox_hooks.stories.tsx +7 -1
  34. package/mantine/specs/text_input_hooks.stories.tsx +8 -1
  35. package/mantine/types.ts +12 -4
  36. package/package.json +1 -1
  37. package/util/partial.tsx +8 -1
  38. package/util/specs/partial.tests.tsx +21 -0
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Maybe, ElementOfArray, StringConcatOf, StringKeyOf as StringKeyOf$1, ExhaustiveArrayOfUnion, FriendlyExhaustiveArrayOfUnion } from '@strictly/base';
2
2
  import { Type, ValueOfType, ReadonlyTypeOfType, FlattenedTypesOfType, ListTypeDef, FlattenedValuesOfType, MobxValueOfType, Accessor, Validator, UnionTypeDef, ValueTypesOfDiscriminatedUnion, LiteralTypeDef } from '@strictly/define';
3
3
  import { ValueOf, SimplifyDeep, ReadonlyDeep, UnionToIntersection, StringKeyOf, Simplify } from 'type-fest';
4
- import { ComponentType, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, DependencyList } from 'react';
4
+ import { ComponentType, RefAttributes, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, Ref, DependencyList } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { CheckboxProps, PillProps, RadioProps, RadioGroupProps, TextInputProps, SelectProps } from '@mantine/core';
7
7
 
@@ -97,20 +97,6 @@ type FormFieldsOfFieldAdapters<ValuePathsToTypePaths extends Readonly<Record<str
97
97
  };
98
98
  type FormFieldOfFieldAdapter<F extends FieldAdapter | undefined> = F extends FieldAdapter<infer _From, infer To, infer E> ? Field<To, E> : never;
99
99
 
100
- type FieldsViewProps<F extends Fields> = {
101
- fields: F;
102
- onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
103
- onFieldFocus?(this: void, key: keyof F): void;
104
- onFieldBlur?(this: void, key: keyof F): void;
105
- onFieldSubmit?(this: void, key: keyof F): boolean | void;
106
- };
107
- type FormMode = 'edit' | 'create';
108
- type FormProps<O> = {
109
- value: O;
110
- onValueChange: (value: O) => void;
111
- mode: FormMode;
112
- };
113
-
114
100
  type FlattenedListTypesOfType<T extends Type> = FlattenedListTypesOfTypes<SimplifyDeep<FlattenedTypesOfType<T, null>>>;
115
101
  type FlattenedListTypesOfTypes<T extends Readonly<Record<string, Type>>> = {
116
102
  [K in keyof T as T[K]['definition'] extends ListTypeDef ? K : never]: T[K];
@@ -126,8 +112,12 @@ type FieldOverride<V = any> = Maybe<V>;
126
112
  type FlattenedFieldOverrides<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
127
113
  -readonly [K in keyof ValuePathsToAdapters]?: FieldOverride<ToOfFieldAdapter<ValuePathsToAdapters[K]>>;
128
114
  };
129
- type FlattenedErrors<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
130
- -readonly [K in keyof ValuePathsToAdapters]?: ErrorOfFieldAdapter<ValuePathsToAdapters[K]>;
115
+ declare enum Validation {
116
+ Changed = 1,
117
+ Always = 2
118
+ }
119
+ type FlattenedValidation<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
120
+ -readonly [K in keyof ValuePathsToAdapters]?: Validation;
131
121
  };
132
122
  type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>, ValuePathsToTypePaths extends Readonly<Record<string, string>>> = keyof TypePathsToAdapters extends ValueOf<ValuePathsToTypePaths> ? {
133
123
  readonly [K in keyof ValuePathsToTypePaths as unknown extends TypePathsToAdapters[ValuePathsToTypePaths[K]] ? never : K]: NonNullable<TypePathsToAdapters[ValuePathsToTypePaths[K]]>;
@@ -135,15 +125,16 @@ type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<
135
125
  type ContextOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>> = UnionToIntersection<{
136
126
  readonly [K in keyof TypePathsToAdapters]: TypePathsToAdapters[K] extends undefined ? undefined : unknown extends ContextOfFieldAdapter<NonNullable<TypePathsToAdapters[K]>> ? never : ContextOfFieldAdapter<NonNullable<TypePathsToAdapters[K]>>;
137
127
  }[keyof TypePathsToAdapters] | {}>;
128
+ type FormMode = 'edit' | 'create';
138
129
  declare abstract class FormModel<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<FlattenedValuesOfType<T, '*'>, ContextType>, ContextType = ContextOf<TypePathsToAdapters>, ValuePathsToAdapters extends ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths> = ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths>> {
139
130
  readonly type: T;
140
- private readonly originalValue;
141
131
  protected readonly adapters: TypePathsToAdapters;
142
132
  protected readonly mode: FormMode;
143
133
  accessor value: MobxValueOfType<T>;
144
134
  accessor fieldOverrides: FlattenedFieldOverrides<ValuePathsToAdapters>;
145
- accessor errors: FlattenedErrors<ValuePathsToAdapters>;
135
+ accessor validation: FlattenedValidation<ValuePathsToAdapters>;
146
136
  private readonly flattenedTypeDefs;
137
+ private readonly originalValues;
147
138
  constructor(type: T, originalValue: ValueOfType<ReadonlyTypeOfType<T>>, adapters: TypePathsToAdapters, mode: FormMode);
148
139
  protected abstract toContext(value: ValueOfType<ReadonlyTypeOfType<T>>, valuePath: keyof ValuePathsToAdapters): ContextType;
149
140
  get forceMutableFields(): boolean;
@@ -156,17 +147,16 @@ declare abstract class FormModel<T extends Type, ValueToTypePaths extends Readon
156
147
  private maybeGetAdapterForValuePath;
157
148
  private getAdapterForValuePath;
158
149
  typePath<K extends keyof ValueToTypePaths>(valuePath: K): ValueToTypePaths[K];
159
- setFieldValueAndValidate<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
160
- setFieldValue<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
150
+ setFieldValue<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>, validation?: Validation | undefined | null): boolean;
161
151
  addListItem<K extends keyof FlattenedListTypesOfType<T>>(valuePath: K, elementValue?: Maybe<ElementOfArray<FlattenedValuesOfType<T>[K]>>, index?: number): void;
162
152
  removeListItem<K extends keyof FlattenedListTypesOfType<T>>(...elementValuePaths: readonly `${K}.${number}`[]): void;
163
153
  private internalSetFieldValue;
164
154
  clearFieldError<K extends keyof ValuePathsToAdapters>(valuePath: K): void;
165
- clearFieldValue<K extends StringKeyOf<ValueToTypePaths>>(valuePath: K): void;
155
+ clearFieldValue<K extends StringKeyOf<ValuePathsToAdapters>>(valuePath: K): void;
166
156
  clearAll(value: ValueOfType<T>): void;
167
157
  isValuePathActive<K extends keyof ValuePathsToAdapters>(valuePath: K): boolean;
168
- validateField<K extends keyof ValuePathsToAdapters>(valuePath: K, ignoreDefaultValue?: boolean): boolean;
169
- validateAll(force?: boolean): boolean;
158
+ validateField<K extends keyof ValuePathsToAdapters>(valuePath: K, validation?: Validation): boolean;
159
+ validateAll(validation?: Validation): boolean;
170
160
  }
171
161
 
172
162
  /**
@@ -208,7 +198,7 @@ type ValuePathsOfFieldAdapters<FieldAdapters extends Readonly<Record<string, Fie
208
198
  type TosOfFieldAdapters<FieldAdapters extends Readonly<Record<string, FieldAdapter>>> = {
209
199
  [K in keyof FieldAdapters]: ToOfFieldAdapter<FieldAdapters[K]>;
210
200
  }[keyof FieldAdapters];
211
- declare function mergeFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context>(fieldAdapters: FieldAdapters, converter: TwoWayFieldConverter<TosOfFieldAdapters<FieldAdapters>, TosOfFieldAdapters<FieldAdapters>, E, ValuePathsOfFieldAdapters<FieldAdapters>, Context>): MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters, E, Context>;
201
+ declare function mergeFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context, P extends ValuePathsOfFieldAdapters<FieldAdapters>>(fieldAdapters: FieldAdapters, converter: TwoWayFieldConverter<TosOfFieldAdapters<FieldAdapters>, TosOfFieldAdapters<FieldAdapters>, E, P, Context>): MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters, E, Context>;
212
202
 
213
203
  type MergedOfFieldAdaptersWithValidators<FieldAdapters extends Readonly<Record<Key, FieldAdapter>>, Validators extends Partial<Readonly<Record<string, Validator>>>, Key extends keyof Validators = keyof Validators> = Simplify<{
214
204
  readonly [K in Key]: MergedOfFieldAdapterWithValidator<FieldAdapters[K], Validators[K]>;
@@ -224,6 +214,18 @@ type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, Type
224
214
  };
225
215
  declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, TypePathsToValuePaths extends Record<TypePath, string>>(subAdapters: SubAdapters, parentTypePath: TypePath): SubFormFieldAdapters<SubAdapters, TypePath, TypePathsToValuePaths[TypePath]>;
226
216
 
217
+ type FieldsViewProps<F extends Fields> = {
218
+ fields: F;
219
+ onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
220
+ onFieldFocus?(this: void, key: keyof F): void;
221
+ onFieldBlur?(this: void, key: keyof F): void;
222
+ onFieldSubmit?(this: void, key: keyof F): boolean | void;
223
+ };
224
+ type FormProps<O> = {
225
+ value: O;
226
+ onValueChange: (value: O) => void;
227
+ };
228
+
227
229
  declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
228
230
  private readonly isNanError;
229
231
  private readonly base;
@@ -312,8 +314,11 @@ type SubFormFields<F extends Fields, P extends keyof F> = P extends string ? {
312
314
  $: F[P];
313
315
  } : never;
314
316
 
317
+ type RefOfProps<P, Fallback = unknown> = P extends RefAttributes<infer R> ? R : Fallback;
315
318
  type PartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = Exclude<keyof CurriedProps, keyof ComponentProps<Component>> extends never ? UnsafePartialComponent<Component, CurriedProps, AdditionalProps> : keyof CurriedProps extends (string | number) ? `unmatched prop: ${Exclude<keyof CurriedProps, keyof ComponentProps<Component>>}` : Exclude<keyof CurriedProps, keyof ComponentProps<Component>>;
316
- type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps>>;
319
+ type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}, R = RefOfProps<ComponentProps<Component>>> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps> & {
320
+ ref?: Ref<R>;
321
+ }>;
317
322
  declare function createSimplePartialComponent<Component extends ComponentType<any>, CurriedProps extends Partial<ComponentProps<Component>>>(Component: Component, curriedProps: CurriedProps): PartialComponent<Component, CurriedProps>;
318
323
  declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
319
324
  declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(Component: Component, curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
@@ -334,11 +339,11 @@ type MantineForm<F extends Fields> = {
334
339
  onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
335
340
  onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
336
341
  };
337
- type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T, [
342
+ type MantineFieldComponent<T, P = T, E = any, R = RefOfProps<P>> = UnsafePartialComponent<ComponentType<P>, T, [
338
343
  E
339
344
  ] extends [never] ? {} : {
340
345
  ErrorRenderer: ErrorRenderer<E>;
341
- }>;
346
+ }, R>;
342
347
 
343
348
  type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
344
349
 
@@ -356,8 +361,9 @@ type FieldViewProps<F extends Fields, K extends keyof F> = {
356
361
  }) => JSX.Element;
357
362
  };
358
363
 
364
+ type SubPathsOf<ValuePath extends string, SubFormValuePath extends string> = SubFormValuePath extends StringConcatOf<ValuePath, infer Postfix> ? `$${Postfix}` : never;
359
365
  type CallbackMapper<ValuePath extends string> = {
360
- <Cb extends (...args: any[]) => any>(cb: Cb): Parameters<Cb> extends [infer SubFormValuePath extends string, ...(infer Rest)] ? SubFormValuePath extends StringConcatOf<ValuePath, infer Postfix> ? (valuePath: `$${Postfix}`, ...rest: Rest) => ReturnType<Cb> : never : never;
366
+ <Cb extends (...args: any[]) => any>(cb: Cb): Parameters<Cb> extends [infer SubFormValuePath extends string, ...(infer Rest)] ? (valuePath: SubPathsOf<ValuePath, SubFormValuePath>, ...rest: Rest) => ReturnType<Cb> : never;
361
367
  };
362
368
  type FieldsView<ValuePath extends string = string, C extends ComponentType<any> = ComponentType<any>> = {
363
369
  Component: C;
@@ -424,12 +430,12 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
424
430
  onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
425
431
  onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
426
432
  constructor(fields: F);
427
- textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>>;
428
- textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>>;
433
+ textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>, HTMLInputElement>;
434
+ textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>, RefOfProps<P, HTMLInputElement>>;
429
435
  valueInput<K extends keyof AllFieldsOfFields<F>, P extends SuppliedValueInputProps<ValueTypeOfField<F[K]>, any>>(valuePath: K, ValueInput: ComponentType<P>): MantineFieldComponent<SuppliedValueInputProps<ValueTypeOfField<F[K]>>, P, ErrorOfField<F[K]>>;
430
- select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>>;
431
- checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>>;
432
- checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>>;
436
+ select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedValueInputProps<ValueTypeOfField<F[K]>>, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>, HTMLSelectElement>;
437
+ checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>, HTMLInputElement>;
438
+ checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>, RefOfProps<P, HTMLInputElement>>;
433
439
  radioGroup<K extends keyof StringFieldsOfFields<F>, P extends RadioGroupProps = RadioGroupProps>(valuePath: K): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
434
440
  radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
435
441
  radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps, ErrorOfField<F[K]>>;
@@ -450,4 +456,4 @@ declare function mergeValidators<Validators1 extends Partial<Readonly<Record<Key
450
456
 
451
457
  declare function Empty(): null;
452
458
 
453
- export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, type ContextOf, type ContextOfFieldAdapter, DefaultErrorRenderer, Empty, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type FlattenedTypePathsToAdaptersOf, type FormFieldsOfFieldAdapters, type FormFieldsOfModel, type FormMode, FormModel, type FormProps, type FromOfFieldAdapter, IntegerToStringConverter, type MergedOfFieldAdaptersWithTwoWayConverter, type MergedOfFieldAdaptersWithValidators, type MergedOfValidator, type MergedOfValidators, NullableToBooleanConverter, type PartialComponent, SelectDiscriminatedUnionConverter, SelectLiteralConverter, SelectStringConverter, type ToOfFieldAdapter, type ToValueOfModelValuePath, TrimmingStringConverter, type TwoWayFieldConverter, type TwoWayFieldConverterWithValueFactory, type UnreliableFieldConversion, UnreliableFieldConversionType, type UnreliableFieldConverter, type UnsafePartialComponent, type ValuePathOfFieldAdapter, type ValuePathsOfModel, type ValuePathsToAdaptersOf, adapter, adapterFromPrototype, adapterFromTwoWayConverter, createPartialComponent, createPartialObserverComponent, createSimplePartialComponent, createUnsafePartialObserverComponent, identityAdapter, listAdapter, mergeAdaptersWithValidators, mergeFieldAdaptersWithTwoWayConverter, mergeValidators, prototypingFieldValueFactory, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
459
+ export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, type ContextOf, type ContextOfFieldAdapter, DefaultErrorRenderer, Empty, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type FlattenedTypePathsToAdaptersOf, type FormFieldsOfFieldAdapters, type FormFieldsOfModel, type FormMode, FormModel, type FormProps, type FromOfFieldAdapter, IntegerToStringConverter, type MergedOfFieldAdaptersWithTwoWayConverter, type MergedOfFieldAdaptersWithValidators, type MergedOfValidator, type MergedOfValidators, NullableToBooleanConverter, type PartialComponent, type RefOfProps, SelectDiscriminatedUnionConverter, SelectLiteralConverter, SelectStringConverter, type ToOfFieldAdapter, type ToValueOfModelValuePath, TrimmingStringConverter, type TwoWayFieldConverter, type TwoWayFieldConverterWithValueFactory, type UnreliableFieldConversion, UnreliableFieldConversionType, type UnreliableFieldConverter, type UnsafePartialComponent, Validation, type ValuePathOfFieldAdapter, type ValuePathsOfModel, type ValuePathsToAdaptersOf, adapter, adapterFromPrototype, adapterFromTwoWayConverter, createPartialComponent, createPartialObserverComponent, createSimplePartialComponent, createUnsafePartialObserverComponent, identityAdapter, listAdapter, mergeAdaptersWithValidators, mergeFieldAdaptersWithTwoWayConverter, mergeValidators, prototypingFieldValueFactory, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Maybe, ElementOfArray, StringConcatOf, StringKeyOf as StringKeyOf$1, ExhaustiveArrayOfUnion, FriendlyExhaustiveArrayOfUnion } from '@strictly/base';
2
2
  import { Type, ValueOfType, ReadonlyTypeOfType, FlattenedTypesOfType, ListTypeDef, FlattenedValuesOfType, MobxValueOfType, Accessor, Validator, UnionTypeDef, ValueTypesOfDiscriminatedUnion, LiteralTypeDef } from '@strictly/define';
3
3
  import { ValueOf, SimplifyDeep, ReadonlyDeep, UnionToIntersection, StringKeyOf, Simplify } from 'type-fest';
4
- import { ComponentType, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, DependencyList } from 'react';
4
+ import { ComponentType, RefAttributes, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, Ref, DependencyList } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { CheckboxProps, PillProps, RadioProps, RadioGroupProps, TextInputProps, SelectProps } from '@mantine/core';
7
7
 
@@ -97,20 +97,6 @@ type FormFieldsOfFieldAdapters<ValuePathsToTypePaths extends Readonly<Record<str
97
97
  };
98
98
  type FormFieldOfFieldAdapter<F extends FieldAdapter | undefined> = F extends FieldAdapter<infer _From, infer To, infer E> ? Field<To, E> : never;
99
99
 
100
- type FieldsViewProps<F extends Fields> = {
101
- fields: F;
102
- onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
103
- onFieldFocus?(this: void, key: keyof F): void;
104
- onFieldBlur?(this: void, key: keyof F): void;
105
- onFieldSubmit?(this: void, key: keyof F): boolean | void;
106
- };
107
- type FormMode = 'edit' | 'create';
108
- type FormProps<O> = {
109
- value: O;
110
- onValueChange: (value: O) => void;
111
- mode: FormMode;
112
- };
113
-
114
100
  type FlattenedListTypesOfType<T extends Type> = FlattenedListTypesOfTypes<SimplifyDeep<FlattenedTypesOfType<T, null>>>;
115
101
  type FlattenedListTypesOfTypes<T extends Readonly<Record<string, Type>>> = {
116
102
  [K in keyof T as T[K]['definition'] extends ListTypeDef ? K : never]: T[K];
@@ -126,8 +112,12 @@ type FieldOverride<V = any> = Maybe<V>;
126
112
  type FlattenedFieldOverrides<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
127
113
  -readonly [K in keyof ValuePathsToAdapters]?: FieldOverride<ToOfFieldAdapter<ValuePathsToAdapters[K]>>;
128
114
  };
129
- type FlattenedErrors<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
130
- -readonly [K in keyof ValuePathsToAdapters]?: ErrorOfFieldAdapter<ValuePathsToAdapters[K]>;
115
+ declare enum Validation {
116
+ Changed = 1,
117
+ Always = 2
118
+ }
119
+ type FlattenedValidation<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
120
+ -readonly [K in keyof ValuePathsToAdapters]?: Validation;
131
121
  };
132
122
  type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>, ValuePathsToTypePaths extends Readonly<Record<string, string>>> = keyof TypePathsToAdapters extends ValueOf<ValuePathsToTypePaths> ? {
133
123
  readonly [K in keyof ValuePathsToTypePaths as unknown extends TypePathsToAdapters[ValuePathsToTypePaths[K]] ? never : K]: NonNullable<TypePathsToAdapters[ValuePathsToTypePaths[K]]>;
@@ -135,15 +125,16 @@ type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<
135
125
  type ContextOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>> = UnionToIntersection<{
136
126
  readonly [K in keyof TypePathsToAdapters]: TypePathsToAdapters[K] extends undefined ? undefined : unknown extends ContextOfFieldAdapter<NonNullable<TypePathsToAdapters[K]>> ? never : ContextOfFieldAdapter<NonNullable<TypePathsToAdapters[K]>>;
137
127
  }[keyof TypePathsToAdapters] | {}>;
128
+ type FormMode = 'edit' | 'create';
138
129
  declare abstract class FormModel<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<FlattenedValuesOfType<T, '*'>, ContextType>, ContextType = ContextOf<TypePathsToAdapters>, ValuePathsToAdapters extends ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths> = ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths>> {
139
130
  readonly type: T;
140
- private readonly originalValue;
141
131
  protected readonly adapters: TypePathsToAdapters;
142
132
  protected readonly mode: FormMode;
143
133
  accessor value: MobxValueOfType<T>;
144
134
  accessor fieldOverrides: FlattenedFieldOverrides<ValuePathsToAdapters>;
145
- accessor errors: FlattenedErrors<ValuePathsToAdapters>;
135
+ accessor validation: FlattenedValidation<ValuePathsToAdapters>;
146
136
  private readonly flattenedTypeDefs;
137
+ private readonly originalValues;
147
138
  constructor(type: T, originalValue: ValueOfType<ReadonlyTypeOfType<T>>, adapters: TypePathsToAdapters, mode: FormMode);
148
139
  protected abstract toContext(value: ValueOfType<ReadonlyTypeOfType<T>>, valuePath: keyof ValuePathsToAdapters): ContextType;
149
140
  get forceMutableFields(): boolean;
@@ -156,17 +147,16 @@ declare abstract class FormModel<T extends Type, ValueToTypePaths extends Readon
156
147
  private maybeGetAdapterForValuePath;
157
148
  private getAdapterForValuePath;
158
149
  typePath<K extends keyof ValueToTypePaths>(valuePath: K): ValueToTypePaths[K];
159
- setFieldValueAndValidate<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
160
- setFieldValue<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
150
+ setFieldValue<K extends keyof ValuePathsToAdapters>(valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>, validation?: Validation | undefined | null): boolean;
161
151
  addListItem<K extends keyof FlattenedListTypesOfType<T>>(valuePath: K, elementValue?: Maybe<ElementOfArray<FlattenedValuesOfType<T>[K]>>, index?: number): void;
162
152
  removeListItem<K extends keyof FlattenedListTypesOfType<T>>(...elementValuePaths: readonly `${K}.${number}`[]): void;
163
153
  private internalSetFieldValue;
164
154
  clearFieldError<K extends keyof ValuePathsToAdapters>(valuePath: K): void;
165
- clearFieldValue<K extends StringKeyOf<ValueToTypePaths>>(valuePath: K): void;
155
+ clearFieldValue<K extends StringKeyOf<ValuePathsToAdapters>>(valuePath: K): void;
166
156
  clearAll(value: ValueOfType<T>): void;
167
157
  isValuePathActive<K extends keyof ValuePathsToAdapters>(valuePath: K): boolean;
168
- validateField<K extends keyof ValuePathsToAdapters>(valuePath: K, ignoreDefaultValue?: boolean): boolean;
169
- validateAll(force?: boolean): boolean;
158
+ validateField<K extends keyof ValuePathsToAdapters>(valuePath: K, validation?: Validation): boolean;
159
+ validateAll(validation?: Validation): boolean;
170
160
  }
171
161
 
172
162
  /**
@@ -208,7 +198,7 @@ type ValuePathsOfFieldAdapters<FieldAdapters extends Readonly<Record<string, Fie
208
198
  type TosOfFieldAdapters<FieldAdapters extends Readonly<Record<string, FieldAdapter>>> = {
209
199
  [K in keyof FieldAdapters]: ToOfFieldAdapter<FieldAdapters[K]>;
210
200
  }[keyof FieldAdapters];
211
- declare function mergeFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context>(fieldAdapters: FieldAdapters, converter: TwoWayFieldConverter<TosOfFieldAdapters<FieldAdapters>, TosOfFieldAdapters<FieldAdapters>, E, ValuePathsOfFieldAdapters<FieldAdapters>, Context>): MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters, E, Context>;
201
+ declare function mergeFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context, P extends ValuePathsOfFieldAdapters<FieldAdapters>>(fieldAdapters: FieldAdapters, converter: TwoWayFieldConverter<TosOfFieldAdapters<FieldAdapters>, TosOfFieldAdapters<FieldAdapters>, E, P, Context>): MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters, E, Context>;
212
202
 
213
203
  type MergedOfFieldAdaptersWithValidators<FieldAdapters extends Readonly<Record<Key, FieldAdapter>>, Validators extends Partial<Readonly<Record<string, Validator>>>, Key extends keyof Validators = keyof Validators> = Simplify<{
214
204
  readonly [K in Key]: MergedOfFieldAdapterWithValidator<FieldAdapters[K], Validators[K]>;
@@ -224,6 +214,18 @@ type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, Type
224
214
  };
225
215
  declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, TypePathsToValuePaths extends Record<TypePath, string>>(subAdapters: SubAdapters, parentTypePath: TypePath): SubFormFieldAdapters<SubAdapters, TypePath, TypePathsToValuePaths[TypePath]>;
226
216
 
217
+ type FieldsViewProps<F extends Fields> = {
218
+ fields: F;
219
+ onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
220
+ onFieldFocus?(this: void, key: keyof F): void;
221
+ onFieldBlur?(this: void, key: keyof F): void;
222
+ onFieldSubmit?(this: void, key: keyof F): boolean | void;
223
+ };
224
+ type FormProps<O> = {
225
+ value: O;
226
+ onValueChange: (value: O) => void;
227
+ };
228
+
227
229
  declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
228
230
  private readonly isNanError;
229
231
  private readonly base;
@@ -312,8 +314,11 @@ type SubFormFields<F extends Fields, P extends keyof F> = P extends string ? {
312
314
  $: F[P];
313
315
  } : never;
314
316
 
317
+ type RefOfProps<P, Fallback = unknown> = P extends RefAttributes<infer R> ? R : Fallback;
315
318
  type PartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = Exclude<keyof CurriedProps, keyof ComponentProps<Component>> extends never ? UnsafePartialComponent<Component, CurriedProps, AdditionalProps> : keyof CurriedProps extends (string | number) ? `unmatched prop: ${Exclude<keyof CurriedProps, keyof ComponentProps<Component>>}` : Exclude<keyof CurriedProps, keyof ComponentProps<Component>>;
316
- type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps>>;
319
+ type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}, R = RefOfProps<ComponentProps<Component>>> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps> & {
320
+ ref?: Ref<R>;
321
+ }>;
317
322
  declare function createSimplePartialComponent<Component extends ComponentType<any>, CurriedProps extends Partial<ComponentProps<Component>>>(Component: Component, curriedProps: CurriedProps): PartialComponent<Component, CurriedProps>;
318
323
  declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
319
324
  declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(Component: Component, curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
@@ -334,11 +339,11 @@ type MantineForm<F extends Fields> = {
334
339
  onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
335
340
  onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
336
341
  };
337
- type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T, [
342
+ type MantineFieldComponent<T, P = T, E = any, R = RefOfProps<P>> = UnsafePartialComponent<ComponentType<P>, T, [
338
343
  E
339
344
  ] extends [never] ? {} : {
340
345
  ErrorRenderer: ErrorRenderer<E>;
341
- }>;
346
+ }, R>;
342
347
 
343
348
  type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
344
349
 
@@ -356,8 +361,9 @@ type FieldViewProps<F extends Fields, K extends keyof F> = {
356
361
  }) => JSX.Element;
357
362
  };
358
363
 
364
+ type SubPathsOf<ValuePath extends string, SubFormValuePath extends string> = SubFormValuePath extends StringConcatOf<ValuePath, infer Postfix> ? `$${Postfix}` : never;
359
365
  type CallbackMapper<ValuePath extends string> = {
360
- <Cb extends (...args: any[]) => any>(cb: Cb): Parameters<Cb> extends [infer SubFormValuePath extends string, ...(infer Rest)] ? SubFormValuePath extends StringConcatOf<ValuePath, infer Postfix> ? (valuePath: `$${Postfix}`, ...rest: Rest) => ReturnType<Cb> : never : never;
366
+ <Cb extends (...args: any[]) => any>(cb: Cb): Parameters<Cb> extends [infer SubFormValuePath extends string, ...(infer Rest)] ? (valuePath: SubPathsOf<ValuePath, SubFormValuePath>, ...rest: Rest) => ReturnType<Cb> : never;
361
367
  };
362
368
  type FieldsView<ValuePath extends string = string, C extends ComponentType<any> = ComponentType<any>> = {
363
369
  Component: C;
@@ -424,12 +430,12 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
424
430
  onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
425
431
  onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
426
432
  constructor(fields: F);
427
- textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>>;
428
- textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>>;
433
+ textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>, HTMLInputElement>;
434
+ textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>, RefOfProps<P, HTMLInputElement>>;
429
435
  valueInput<K extends keyof AllFieldsOfFields<F>, P extends SuppliedValueInputProps<ValueTypeOfField<F[K]>, any>>(valuePath: K, ValueInput: ComponentType<P>): MantineFieldComponent<SuppliedValueInputProps<ValueTypeOfField<F[K]>>, P, ErrorOfField<F[K]>>;
430
- select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>>;
431
- checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>>;
432
- checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>>;
436
+ select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedValueInputProps<ValueTypeOfField<F[K]>>, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>, HTMLSelectElement>;
437
+ checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>, HTMLInputElement>;
438
+ checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>, RefOfProps<P, HTMLInputElement>>;
433
439
  radioGroup<K extends keyof StringFieldsOfFields<F>, P extends RadioGroupProps = RadioGroupProps>(valuePath: K): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
434
440
  radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
435
441
  radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps, ErrorOfField<F[K]>>;
@@ -450,4 +456,4 @@ declare function mergeValidators<Validators1 extends Partial<Readonly<Record<Key
450
456
 
451
457
  declare function Empty(): null;
452
458
 
453
- export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, type ContextOf, type ContextOfFieldAdapter, DefaultErrorRenderer, Empty, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type FlattenedTypePathsToAdaptersOf, type FormFieldsOfFieldAdapters, type FormFieldsOfModel, type FormMode, FormModel, type FormProps, type FromOfFieldAdapter, IntegerToStringConverter, type MergedOfFieldAdaptersWithTwoWayConverter, type MergedOfFieldAdaptersWithValidators, type MergedOfValidator, type MergedOfValidators, NullableToBooleanConverter, type PartialComponent, SelectDiscriminatedUnionConverter, SelectLiteralConverter, SelectStringConverter, type ToOfFieldAdapter, type ToValueOfModelValuePath, TrimmingStringConverter, type TwoWayFieldConverter, type TwoWayFieldConverterWithValueFactory, type UnreliableFieldConversion, UnreliableFieldConversionType, type UnreliableFieldConverter, type UnsafePartialComponent, type ValuePathOfFieldAdapter, type ValuePathsOfModel, type ValuePathsToAdaptersOf, adapter, adapterFromPrototype, adapterFromTwoWayConverter, createPartialComponent, createPartialObserverComponent, createSimplePartialComponent, createUnsafePartialObserverComponent, identityAdapter, listAdapter, mergeAdaptersWithValidators, mergeFieldAdaptersWithTwoWayConverter, mergeValidators, prototypingFieldValueFactory, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
459
+ export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, type ContextOf, type ContextOfFieldAdapter, DefaultErrorRenderer, Empty, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type FlattenedTypePathsToAdaptersOf, type FormFieldsOfFieldAdapters, type FormFieldsOfModel, type FormMode, FormModel, type FormProps, type FromOfFieldAdapter, IntegerToStringConverter, type MergedOfFieldAdaptersWithTwoWayConverter, type MergedOfFieldAdaptersWithValidators, type MergedOfValidator, type MergedOfValidators, NullableToBooleanConverter, type PartialComponent, type RefOfProps, SelectDiscriminatedUnionConverter, SelectLiteralConverter, SelectStringConverter, type ToOfFieldAdapter, type ToValueOfModelValuePath, TrimmingStringConverter, type TwoWayFieldConverter, type TwoWayFieldConverterWithValueFactory, type UnreliableFieldConversion, UnreliableFieldConversionType, type UnreliableFieldConverter, type UnsafePartialComponent, Validation, type ValuePathOfFieldAdapter, type ValuePathsOfModel, type ValuePathsToAdaptersOf, adapter, adapterFromPrototype, adapterFromTwoWayConverter, createPartialComponent, createPartialObserverComponent, createSimplePartialComponent, createUnsafePartialObserverComponent, identityAdapter, listAdapter, mergeAdaptersWithValidators, mergeFieldAdaptersWithTwoWayConverter, mergeValidators, prototypingFieldValueFactory, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };