@radix-ui/react-form 0.0.1-rc.1 → 0.0.2-rc.1
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/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +8 -1
- package/dist/index.module.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { Label } from "@radix-ui/react-label";
|
|
2
|
+
import { Label as _Label1 } from "@radix-ui/react-label";
|
|
3
3
|
import * as Radix from "@radix-ui/react-primitive";
|
|
4
4
|
import { Primitive } from "@radix-ui/react-primitive";
|
|
5
5
|
import { Scope } from "@radix-ui/react-context";
|
|
@@ -11,21 +11,21 @@ type PrimitiveFormProps = Radix.ComponentPropsWithoutRef<typeof Primitive.form>;
|
|
|
11
11
|
export interface FormProps extends PrimitiveFormProps {
|
|
12
12
|
onClearServerErrors?(): void;
|
|
13
13
|
}
|
|
14
|
-
export const
|
|
14
|
+
export const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>;
|
|
15
15
|
type PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
16
16
|
export interface FormFieldProps extends PrimitiveDivProps {
|
|
17
17
|
name: string;
|
|
18
18
|
serverInvalid?: boolean;
|
|
19
19
|
}
|
|
20
|
-
export const
|
|
21
|
-
type LabelProps = Radix.ComponentPropsWithoutRef<typeof
|
|
20
|
+
export const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
type LabelProps = Radix.ComponentPropsWithoutRef<typeof _Label1>;
|
|
22
22
|
export interface FormLabelProps extends LabelProps {
|
|
23
23
|
}
|
|
24
24
|
export const FormLabel: React.ForwardRefExoticComponent<FormLabelProps & React.RefAttributes<HTMLLabelElement>>;
|
|
25
25
|
type PrimitiveInputProps = Radix.ComponentPropsWithoutRef<typeof Primitive.input>;
|
|
26
26
|
export interface FormControlProps extends PrimitiveInputProps {
|
|
27
27
|
}
|
|
28
|
-
export const
|
|
28
|
+
export const FormControl: React.ForwardRefExoticComponent<FormControlProps & React.RefAttributes<HTMLInputElement>>;
|
|
29
29
|
declare const validityMatchers: readonly ["badInput", "patternMismatch", "rangeOverflow", "rangeUnderflow", "stepMismatch", "tooLong", "tooShort", "typeMismatch", "valid", "valueMissing"];
|
|
30
30
|
type ValidityMatcher = typeof validityMatchers[number];
|
|
31
31
|
export interface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {
|
|
@@ -33,7 +33,7 @@ export interface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {
|
|
|
33
33
|
forceMatch?: boolean;
|
|
34
34
|
name?: string;
|
|
35
35
|
}
|
|
36
|
-
export const
|
|
36
|
+
export const FormMessage: React.ForwardRefExoticComponent<FormMessageProps & React.RefAttributes<HTMLSpanElement>>;
|
|
37
37
|
type PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;
|
|
38
38
|
interface FormMessageImplProps extends PrimitiveSpanProps {
|
|
39
39
|
name: string;
|
|
@@ -42,16 +42,26 @@ export interface FormValidityStateProps {
|
|
|
42
42
|
children(validity: ValidityState | undefined): React.ReactNode;
|
|
43
43
|
name?: string;
|
|
44
44
|
}
|
|
45
|
-
export const
|
|
45
|
+
export const FormValidityState: {
|
|
46
46
|
(props: ScopedProps<FormValidityStateProps>): JSX.Element;
|
|
47
47
|
displayName: string;
|
|
48
48
|
};
|
|
49
49
|
type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
50
50
|
export interface FormSubmitProps extends PrimitiveButtonProps {
|
|
51
51
|
}
|
|
52
|
-
export const
|
|
52
|
+
export const FormSubmit: React.ForwardRefExoticComponent<FormSubmitProps & React.RefAttributes<HTMLButtonElement>>;
|
|
53
53
|
type SyncCustomMatcher = (value: string, formData: FormData) => boolean;
|
|
54
54
|
type AsyncCustomMatcher = (value: string, formData: FormData) => Promise<boolean>;
|
|
55
55
|
type CustomMatcher = SyncCustomMatcher | AsyncCustomMatcher;
|
|
56
|
+
export const Root: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>;
|
|
57
|
+
export const Field: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<HTMLDivElement>>;
|
|
58
|
+
export const Label: React.ForwardRefExoticComponent<FormLabelProps & React.RefAttributes<HTMLLabelElement>>;
|
|
59
|
+
export const Control: React.ForwardRefExoticComponent<FormControlProps & React.RefAttributes<HTMLInputElement>>;
|
|
60
|
+
export const Message: React.ForwardRefExoticComponent<FormMessageProps & React.RefAttributes<HTMLSpanElement>>;
|
|
61
|
+
export const ValidityState: {
|
|
62
|
+
(props: ScopedProps<FormValidityStateProps>): JSX.Element;
|
|
63
|
+
displayName: string;
|
|
64
|
+
};
|
|
65
|
+
export const Submit: React.ForwardRefExoticComponent<FormSubmitProps & React.RefAttributes<HTMLButtonElement>>;
|
|
56
66
|
|
|
57
67
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;AAWA,iBAAiB,CAAC,IAAI,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAClD,OAAA,sFAAuE,CAAC;AAuCxE,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;AAChF,0BAAoB,SAAQ,kBAAkB;IAC5C,mBAAmB,CAAC,IAAI,IAAI,CAAC;CAC9B;AAED,OAAA,MAAM,uFAiIL,CAAC;AAmBF,yBAAyB,MAAM,wBAAwB,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC;AAC9E,+BAAyB,SAAQ,iBAAiB;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,OAAA,MAAM,
|
|
1
|
+
{"mappings":";;;;;AAWA,iBAAiB,CAAC,IAAI,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAClD,OAAA,sFAAuE,CAAC;AAuCxE,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;AAChF,0BAAoB,SAAQ,kBAAkB;IAC5C,mBAAmB,CAAC,IAAI,IAAI,CAAC;CAC9B;AAED,OAAA,MAAM,uFAiIL,CAAC;AAmBF,yBAAyB,MAAM,wBAAwB,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC;AAC9E,+BAAyB,SAAQ,iBAAiB;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,OAAA,MAAM,gGAkBL,CAAC;AAWF,kBAAkB,MAAM,wBAAwB,CAAC,cAAqB,CAAC,CAAC;AACxE,+BAAyB,SAAQ,UAAU;CAAG;AAE9C,OAAA,MAAM,kGAkBL,CAAC;AAWF,2BAA2B,MAAM,wBAAwB,CAAC,OAAO,UAAU,KAAK,CAAC,CAAC;AAClF,iCAA2B,SAAQ,mBAAmB;CAAG;AAEzD,OAAA,MAAM,sGA+IL,CAAC;AAQF,QAAA,MAAM,6KAWI,CAAC;AACX,uBAAuB,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAmBvD,iCAA2B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACnE,KAAK,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,OAAA,MAAM,qGAkBL,CAAC;AAwEF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;AAChF,8BAA+B,SAAQ,kBAAkB;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAyBD;IACE,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,SAAS,CAAC;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,OAAA,MAAM;YAA4B,YAAY,sBAAsB,CAAC;;CAOpE,CAAC;AAWF,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,gCAA0B,SAAQ,oBAAoB;CAAG;AAEzD,OAAA,MAAM,qGAKL,CAAC;AAOF,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;AACxE,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAClF,qBAAqB,iBAAiB,GAAG,kBAAkB,CAAC;AAyE5D,OAAA,MAAM,uFAAW,CAAC;AAClB,OAAA,MAAM,4FAAiB,CAAC;AACxB,OAAA,MAAM,8FAAiB,CAAC;AACxB,OAAA,MAAM,kGAAqB,CAAC;AAC5B,OAAA,MAAM,iGAAqB,CAAC;AAC5B,OAAA,MAAM;YAjH4B,YAAY,sBAAsB,CAAC;;CAiH9B,CAAC;AACxC,OAAA,MAAM,iGAAmB,CAAC","sources":["packages/react/form/src/packages/react/form/src/Form.tsx","packages/react/form/src/packages/react/form/src/index.ts","packages/react/form/src/index.ts"],"sourcesContent":[null,null,"export {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './Form';\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n} from './Form';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js
CHANGED
|
@@ -22,13 +22,13 @@ $parcel$export(module.exports, "FormControl", () => $5bb15a153bd9c45e$export$fe5
|
|
|
22
22
|
$parcel$export(module.exports, "FormMessage", () => $5bb15a153bd9c45e$export$2e8ae7a1a126169a);
|
|
23
23
|
$parcel$export(module.exports, "FormValidityState", () => $5bb15a153bd9c45e$export$7a93102810e06862);
|
|
24
24
|
$parcel$export(module.exports, "FormSubmit", () => $5bb15a153bd9c45e$export$d0861e5bd09bd9e4);
|
|
25
|
-
$parcel$export(module.exports, "Root", () => $5bb15a153bd9c45e$export$
|
|
26
|
-
$parcel$export(module.exports, "Field", () => $5bb15a153bd9c45e$export$
|
|
27
|
-
$parcel$export(module.exports, "Label", () => $5bb15a153bd9c45e$export$
|
|
28
|
-
$parcel$export(module.exports, "Control", () => $5bb15a153bd9c45e$export$
|
|
29
|
-
$parcel$export(module.exports, "Message", () => $5bb15a153bd9c45e$export$
|
|
30
|
-
$parcel$export(module.exports, "ValidityState", () => $5bb15a153bd9c45e$export$
|
|
31
|
-
$parcel$export(module.exports, "Submit", () => $5bb15a153bd9c45e$export$
|
|
25
|
+
$parcel$export(module.exports, "Root", () => $5bb15a153bd9c45e$export$be92b6f5f03c0fe9);
|
|
26
|
+
$parcel$export(module.exports, "Field", () => $5bb15a153bd9c45e$export$a455218a85c89869);
|
|
27
|
+
$parcel$export(module.exports, "Label", () => $5bb15a153bd9c45e$export$b04be29aa201d4f5);
|
|
28
|
+
$parcel$export(module.exports, "Control", () => $5bb15a153bd9c45e$export$7a7fa4424cb20976);
|
|
29
|
+
$parcel$export(module.exports, "Message", () => $5bb15a153bd9c45e$export$f69c19e57285b83a);
|
|
30
|
+
$parcel$export(module.exports, "ValidityState", () => $5bb15a153bd9c45e$export$5efdf844224572d9);
|
|
31
|
+
$parcel$export(module.exports, "Submit", () => $5bb15a153bd9c45e$export$2c4cf1f7b42ef78c);
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
@@ -568,6 +568,13 @@ function $5bb15a153bd9c45e$var$getInvalidAttribute(validity, serverInvalid) {
|
|
|
568
568
|
if ((validity === null || validity === void 0 ? void 0 : validity.valid) === false || serverInvalid) return true;
|
|
569
569
|
return undefined;
|
|
570
570
|
}
|
|
571
|
+
/* -----------------------------------------------------------------------------------------------*/ const $5bb15a153bd9c45e$export$be92b6f5f03c0fe9 = $5bb15a153bd9c45e$export$a7fed597f4b8afd8;
|
|
572
|
+
const $5bb15a153bd9c45e$export$a455218a85c89869 = $5bb15a153bd9c45e$export$56e87bf42978147a;
|
|
573
|
+
const $5bb15a153bd9c45e$export$b04be29aa201d4f5 = $5bb15a153bd9c45e$export$842aba50ed0ce9d7;
|
|
574
|
+
const $5bb15a153bd9c45e$export$7a7fa4424cb20976 = $5bb15a153bd9c45e$export$fe5d99d8691b3f62;
|
|
575
|
+
const $5bb15a153bd9c45e$export$f69c19e57285b83a = $5bb15a153bd9c45e$export$2e8ae7a1a126169a;
|
|
576
|
+
const $5bb15a153bd9c45e$export$5efdf844224572d9 = $5bb15a153bd9c45e$export$7a93102810e06862;
|
|
577
|
+
const $5bb15a153bd9c45e$export$2c4cf1f7b42ef78c = $5bb15a153bd9c45e$export$d0861e5bd09bd9e4;
|
|
571
578
|
|
|
572
579
|
|
|
573
580
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/form/src/index.ts","packages/react/form/src/Form.tsx"],"sourcesContent":["export {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './Form';\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n} from './Form';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Label } from '@radix-ui/react-label';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps<P> = P & { __scopeForm?: Scope };\nconst [createFormContext, createFormScope] = createContextScope('Form');\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\nconst FORM_NAME = 'Form';\n\ntype ValidityMap = { [fieldName: string]: ValidityState | undefined };\ntype CustomMatcherEntriesMap = { [fieldName: string]: CustomMatcherEntry[] };\ntype CustomErrorsMap = { [fieldName: string]: Record<string, boolean> };\n\ntype ValidationContextValue = {\n getFieldValidity(fieldName: string): ValidityState | undefined;\n onFieldValidityChange(fieldName: string, validity: ValidityState): void;\n\n getFieldCustomMatcherEntries(fieldName: string): CustomMatcherEntry[];\n onFieldCustomMatcherEntryAdd(fieldName: string, matcherEntry: CustomMatcherEntry): void;\n onFieldCustomMatcherEntryRemove(fieldName: string, matcherEntryId: string): void;\n\n getFieldCustomErrors(fieldName: string): Record<string, boolean>;\n onFieldCustomErrorsChange(fieldName: string, errors: Record<string, boolean>): void;\n\n onFieldValiditionClear(fieldName: string): void;\n};\nconst [ValidationProvider, useValidationContext] =\n createFormContext<ValidationContextValue>(FORM_NAME);\n\ntype MessageIdsMap = { [fieldName: string]: Set<string> };\n\ntype AriaDescriptionContextValue = {\n onFieldMessageIdAdd(fieldName: string, id: string): void;\n onFieldMessageIdRemove(fieldName: string, id: string): void;\n getFieldDescription(fieldName: string): string | undefined;\n};\nconst [AriaDescriptionProvider, useAriaDescriptionContext] =\n createFormContext<AriaDescriptionContextValue>(FORM_NAME);\n\ntype FormElement = React.ElementRef<typeof Primitive.form>;\ntype PrimitiveFormProps = Radix.ComponentPropsWithoutRef<typeof Primitive.form>;\ninterface FormProps extends PrimitiveFormProps {\n onClearServerErrors?(): void;\n}\n\nconst Form = React.forwardRef<FormElement, FormProps>(\n (props: ScopedProps<FormProps>, forwardedRef) => {\n const { __scopeForm, onClearServerErrors = () => {}, ...rootProps } = props;\n const formRef = React.useRef<HTMLFormElement>(null);\n const composedFormRef = useComposedRefs(forwardedRef, formRef);\n\n // native validity per field\n const [validityMap, setValidityMap] = React.useState<ValidityMap>({});\n const getFieldValidity: ValidationContextValue['getFieldValidity'] = React.useCallback(\n (fieldName) => validityMap[fieldName],\n [validityMap]\n );\n const handleFieldValidityChange: ValidationContextValue['onFieldValidityChange'] =\n React.useCallback(\n (fieldName, validity) =>\n setValidityMap((prevValidityMap) => ({\n ...prevValidityMap,\n [fieldName]: { ...(prevValidityMap[fieldName] ?? {}), ...validity },\n })),\n []\n );\n const handleFieldValiditionClear: ValidationContextValue['onFieldValiditionClear'] =\n React.useCallback((fieldName) => {\n setValidityMap((prevValidityMap) => ({ ...prevValidityMap, [fieldName]: undefined }));\n setCustomErrorsMap((prevCustomErrorsMap) => ({ ...prevCustomErrorsMap, [fieldName]: {} }));\n }, []);\n\n // custom matcher entries per field\n const [customMatcherEntriesMap, setCustomMatcherEntriesMap] =\n React.useState<CustomMatcherEntriesMap>({});\n const getFieldCustomMatcherEntries: ValidationContextValue['getFieldCustomMatcherEntries'] =\n React.useCallback(\n (fieldName) => customMatcherEntriesMap[fieldName] ?? [],\n [customMatcherEntriesMap]\n );\n const handleFieldCustomMatcherAdd: ValidationContextValue['onFieldCustomMatcherEntryAdd'] =\n React.useCallback((fieldName, matcherEntry) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: [...(prevCustomMatcherEntriesMap[fieldName] ?? []), matcherEntry],\n }));\n }, []);\n const handleFieldCustomMatcherRemove: ValidationContextValue['onFieldCustomMatcherEntryRemove'] =\n React.useCallback((fieldName, matcherEntryId) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: (prevCustomMatcherEntriesMap[fieldName] ?? []).filter(\n (matcherEntry) => matcherEntry.id !== matcherEntryId\n ),\n }));\n }, []);\n\n // custom errors per field\n const [customErrorsMap, setCustomErrorsMap] = React.useState<CustomErrorsMap>({});\n const getFieldCustomErrors: ValidationContextValue['getFieldCustomErrors'] = React.useCallback(\n (fieldName) => customErrorsMap[fieldName] ?? {},\n [customErrorsMap]\n );\n const handleFieldCustomErrorsChange: ValidationContextValue['onFieldCustomErrorsChange'] =\n React.useCallback((fieldName, customErrors) => {\n setCustomErrorsMap((prevCustomErrorsMap) => ({\n ...prevCustomErrorsMap,\n [fieldName]: { ...(prevCustomErrorsMap[fieldName] ?? {}), ...customErrors },\n }));\n }, []);\n\n // messageIds per field\n const [messageIdsMap, setMessageIdsMap] = React.useState<MessageIdsMap>({});\n const handleFieldMessageIdAdd: AriaDescriptionContextValue['onFieldMessageIdAdd'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]).add(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const handleFieldMessageIdRemove: AriaDescriptionContextValue['onFieldMessageIdRemove'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]);\n fieldDescriptionIds.delete(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const getFieldDescription: AriaDescriptionContextValue['getFieldDescription'] =\n React.useCallback(\n (fieldName) => Array.from(messageIdsMap[fieldName] ?? []).join(' ') || undefined,\n [messageIdsMap]\n );\n\n return (\n <ValidationProvider\n scope={__scopeForm}\n getFieldValidity={getFieldValidity}\n onFieldValidityChange={handleFieldValidityChange}\n getFieldCustomMatcherEntries={getFieldCustomMatcherEntries}\n onFieldCustomMatcherEntryAdd={handleFieldCustomMatcherAdd}\n onFieldCustomMatcherEntryRemove={handleFieldCustomMatcherRemove}\n getFieldCustomErrors={getFieldCustomErrors}\n onFieldCustomErrorsChange={handleFieldCustomErrorsChange}\n onFieldValiditionClear={handleFieldValiditionClear}\n >\n <AriaDescriptionProvider\n scope={__scopeForm}\n onFieldMessageIdAdd={handleFieldMessageIdAdd}\n onFieldMessageIdRemove={handleFieldMessageIdRemove}\n getFieldDescription={getFieldDescription}\n >\n <Primitive.form\n {...rootProps}\n ref={composedFormRef}\n // focus first invalid control when the form is submitted\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const firstInvalidControl = getFirstInvalidControl(event.currentTarget);\n if (firstInvalidControl === event.target) firstInvalidControl.focus();\n\n // prevent default browser UI for form validation\n event.preventDefault();\n })}\n // clear server errors when the form is re-submitted\n onSubmit={composeEventHandlers(props.onSubmit, onClearServerErrors, {\n checkForDefaultPrevented: false,\n })}\n // clear server errors when the form is reset\n onReset={composeEventHandlers(props.onReset, onClearServerErrors)}\n />\n </AriaDescriptionProvider>\n </ValidationProvider>\n );\n }\n);\n\nForm.displayName = FORM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormField\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_NAME = 'FormField';\n\ntype FormFieldContextValue = {\n id: string;\n name: string;\n serverInvalid: boolean;\n};\nconst [FormFieldProvider, useFormFieldContext] =\n createFormContext<FormFieldContextValue>(FIELD_NAME);\n\ntype FormFieldElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FormFieldProps extends PrimitiveDivProps {\n name: string;\n serverInvalid?: boolean;\n}\n\nconst FormField = React.forwardRef<FormFieldElement, FormFieldProps>(\n (props: ScopedProps<FormFieldProps>, forwardedRef) => {\n const { __scopeForm, name, serverInvalid = false, ...fieldProps } = props;\n const validationContext = useValidationContext(FIELD_NAME, __scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const id = useId();\n\n return (\n <FormFieldProvider scope={__scopeForm} id={id} name={name} serverInvalid={serverInvalid}>\n <Primitive.div\n data-valid={getValidAttribute(validity, serverInvalid)}\n data-invalid={getInvalidAttribute(validity, serverInvalid)}\n {...fieldProps}\n ref={forwardedRef}\n />\n </FormFieldProvider>\n );\n }\n);\n\nFormField.displayName = FIELD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'FormLabel';\n\ntype FormLabelElement = React.ElementRef<typeof Label>;\ntype LabelProps = Radix.ComponentPropsWithoutRef<typeof Label>;\ninterface FormLabelProps extends LabelProps {}\n\nconst FormLabel = React.forwardRef<FormLabelElement, FormLabelProps>(\n (props: ScopedProps<FormLabelProps>, forwardedRef) => {\n const { __scopeForm, ...labelProps } = props;\n const validationContext = useValidationContext(LABEL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(LABEL_NAME, __scopeForm);\n const htmlFor = labelProps.htmlFor || fieldContext.id;\n const validity = validationContext.getFieldValidity(fieldContext.name);\n\n return (\n <Label\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n {...labelProps}\n ref={forwardedRef}\n htmlFor={htmlFor}\n />\n );\n }\n);\n\nFormLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormControl\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTROL_NAME = 'FormControl';\n\ntype FormControlElement = React.ElementRef<typeof Primitive.input>;\ntype PrimitiveInputProps = Radix.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface FormControlProps extends PrimitiveInputProps {}\n\nconst FormControl = React.forwardRef<FormControlElement, FormControlProps>(\n (props: ScopedProps<FormControlProps>, forwardedRef) => {\n const { __scopeForm, ...controlProps } = props;\n\n const validationContext = useValidationContext(CONTROL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(CONTROL_NAME, __scopeForm);\n const ariaDescriptionContext = useAriaDescriptionContext(CONTROL_NAME, __scopeForm);\n\n const ref = React.useRef<FormControlElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const name = controlProps.name || fieldContext.name;\n const id = controlProps.id || fieldContext.id;\n const customMatcherEntries = validationContext.getFieldCustomMatcherEntries(name);\n\n const { onFieldValidityChange, onFieldCustomErrorsChange, onFieldValiditionClear } =\n validationContext;\n const updateControlValidity = React.useCallback(\n async (control: FormControlElement) => {\n //------------------------------------------------------------------------------------------\n // 1. first, if we have built-in errors we stop here\n\n if (hasBuiltInError(control.validity)) {\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n return;\n }\n\n //------------------------------------------------------------------------------------------\n // 2. then gather the form data to give to custom matchers for cross-comparisons\n\n const formData = control.form ? new FormData(control.form) : new FormData();\n const matcherArgs: CustomMatcherArgs = [control.value, formData];\n\n //------------------------------------------------------------------------------------------\n // 3. split sync and async custom matcher entries\n\n const syncCustomMatcherEntries: Array<SyncCustomMatcherEntry> = [];\n const ayncCustomMatcherEntries: Array<AsyncCustomMatcherEntry> = [];\n customMatcherEntries.forEach((customMatcherEntry) => {\n if (isAsyncCustomMatcherEntry(customMatcherEntry, matcherArgs)) {\n ayncCustomMatcherEntries.push(customMatcherEntry);\n } else if (isSyncCustomMatcherEntry(customMatcherEntry)) {\n syncCustomMatcherEntries.push(customMatcherEntry);\n }\n });\n\n //------------------------------------------------------------------------------------------\n // 4. run sync custom matchers and update control validity / internal validity + errors\n\n const syncCustomErrors = syncCustomMatcherEntries.map(({ id, match }) => {\n return [id, match(...matcherArgs)] as const;\n });\n const syncCustomErrorsById = Object.fromEntries(syncCustomErrors);\n const hasSyncCustomErrors = Object.values(syncCustomErrorsById).some(Boolean);\n const hasCustomError = hasSyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, syncCustomErrorsById);\n\n //------------------------------------------------------------------------------------------\n // 5. run async custom matchers and update control validity / internal validity + errors\n\n if (!hasSyncCustomErrors && ayncCustomMatcherEntries.length > 0) {\n const promisedCustomErrors = ayncCustomMatcherEntries.map(({ id, match }) =>\n match(...matcherArgs).then((matches) => [id, matches] as const)\n );\n const asyncCustomErrors = await Promise.all(promisedCustomErrors);\n const asyncCustomErrorsById = Object.fromEntries(asyncCustomErrors);\n const hasAsyncCustomErrors = Object.values(asyncCustomErrorsById).some(Boolean);\n const hasCustomError = hasAsyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, asyncCustomErrorsById);\n }\n },\n [customMatcherEntries, name, onFieldCustomErrorsChange, onFieldValidityChange]\n );\n\n React.useEffect(() => {\n const control = ref.current;\n if (control) {\n // We only want validate on change (native `change` event, not React's `onChange`). This is primarily\n // a UX decision, we don't want to validate on every keystroke and React's `onChange` is the `input` event.\n const handleChange = () => updateControlValidity(control);\n control.addEventListener('change', handleChange);\n return () => control.removeEventListener('change', handleChange);\n }\n }, [updateControlValidity]);\n\n const resetControlValidity = React.useCallback(() => {\n const control = ref.current;\n if (control) {\n control.setCustomValidity('');\n onFieldValiditionClear(name);\n }\n }, [name, onFieldValiditionClear]);\n\n // reset validity and errors when the form is reset\n React.useEffect(() => {\n const form = ref.current?.form;\n if (form) {\n form.addEventListener('reset', resetControlValidity);\n return () => form.removeEventListener('reset', resetControlValidity);\n }\n }, [resetControlValidity]);\n\n // focus first invalid control when fields are set as invalid by server\n React.useEffect(() => {\n const control = ref.current;\n const form = control?.closest('form');\n if (form && fieldContext.serverInvalid) {\n const firstInvalidControl = getFirstInvalidControl(form);\n if (firstInvalidControl === control) firstInvalidControl.focus();\n }\n }, [fieldContext.serverInvalid]);\n\n const validity = validationContext.getFieldValidity(name);\n\n return (\n <Primitive.input\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n aria-invalid={fieldContext.serverInvalid ? true : undefined}\n aria-describedby={ariaDescriptionContext.getFieldDescription(name)}\n // disable default browser behaviour of showing built-in error message on hover\n title=\"\"\n {...controlProps}\n ref={composedRef}\n id={id}\n name={name}\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const control = event.currentTarget;\n updateControlValidity(control);\n })}\n onChange={composeEventHandlers(props.onChange, (event) => {\n // reset validity when user changes value\n resetControlValidity();\n })}\n />\n );\n }\n);\n\nFormControl.displayName = CONTROL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormMessage\n * -----------------------------------------------------------------------------------------------*/\n\nconst validityMatchers = [\n 'badInput',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valid',\n 'valueMissing',\n] as const;\ntype ValidityMatcher = typeof validityMatchers[number];\n\nconst DEFAULT_INVALID_MESSAGE = 'This value is not valid';\nconst DEFAULT_BUILT_IN_MESSAGES: Record<ValidityMatcher, string | undefined> = {\n badInput: DEFAULT_INVALID_MESSAGE,\n patternMismatch: 'This value does not match the required pattern',\n rangeOverflow: 'This value is too large',\n rangeUnderflow: 'This value is too small',\n stepMismatch: 'This value does not match the required step',\n tooLong: 'This value is too long',\n tooShort: 'This value is too short',\n typeMismatch: 'This value does not match the required type',\n valid: undefined,\n valueMissing: 'This value is missing',\n};\n\nconst MESSAGE_NAME = 'FormMessage';\n\ntype FormMessageElement = FormMessageImplElement;\ninterface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {\n match?: ValidityMatcher | CustomMatcher;\n forceMatch?: boolean;\n name?: string;\n}\n\nconst FormMessage = React.forwardRef<FormMessageElement, FormMessageProps>(\n (props: ScopedProps<FormMessageProps>, forwardedRef) => {\n const { match, name: nameProp, ...messageProps } = props;\n const fieldContext = useFormFieldContext(MESSAGE_NAME, props.__scopeForm);\n const name = nameProp ?? fieldContext.name;\n\n if (match === undefined) {\n return (\n <FormMessageImpl {...messageProps} ref={forwardedRef} name={name}>\n {props.children || DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n } else if (typeof match === 'function') {\n return <FormCustomMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n } else {\n return <FormBuiltInMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n }\n }\n);\n\nFormMessage.displayName = MESSAGE_NAME;\n\ntype FormBuiltInMessageElement = FormMessageImplElement;\ninterface FormBuiltInMessageProps extends FormMessageImplProps {\n match: ValidityMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormBuiltInMessage = React.forwardRef<FormBuiltInMessageElement, FormBuiltInMessageProps>(\n (props: ScopedProps<FormBuiltInMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const matches = forceMatch || validity?.[match];\n\n if (matches) {\n return (\n <FormMessageImpl ref={forwardedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_BUILT_IN_MESSAGES[match]}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormCustomMessageElement = React.ElementRef<typeof FormMessageImpl>;\ninterface FormCustomMessageProps extends Radix.ComponentPropsWithoutRef<typeof FormMessageImpl> {\n match: CustomMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormCustomMessage = React.forwardRef<FormCustomMessageElement, FormCustomMessageProps>(\n (props: ScopedProps<FormCustomMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, id: idProp, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const ref = React.useRef<FormCustomMessageElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const _id = useId();\n const id = idProp ?? _id;\n\n const customMatcherEntry = React.useMemo(() => ({ id, match }), [id, match]);\n const { onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove } = validationContext;\n React.useEffect(() => {\n onFieldCustomMatcherEntryAdd(name, customMatcherEntry);\n return () => onFieldCustomMatcherEntryRemove(name, customMatcherEntry.id);\n }, [customMatcherEntry, name, onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove]);\n\n const validity = validationContext.getFieldValidity(name);\n const customErrors = validationContext.getFieldCustomErrors(name);\n const hasMatchingCustomError = customErrors[id];\n const matches =\n forceMatch || (validity && !hasBuiltInError(validity) && hasMatchingCustomError);\n\n if (matches) {\n return (\n <FormMessageImpl id={id} ref={composedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormMessageImplElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface FormMessageImplProps extends PrimitiveSpanProps {\n name: string;\n}\n\nconst FormMessageImpl = React.forwardRef<FormMessageImplElement, FormMessageImplProps>(\n (props: ScopedProps<FormMessageImplProps>, forwardedRef) => {\n const { __scopeForm, id: idProp, name, ...messageProps } = props;\n const ariaDescriptionContext = useAriaDescriptionContext(MESSAGE_NAME, __scopeForm);\n const _id = useId();\n const id = idProp ?? _id;\n\n const { onFieldMessageIdAdd, onFieldMessageIdRemove } = ariaDescriptionContext;\n React.useEffect(() => {\n onFieldMessageIdAdd(name, id);\n return () => onFieldMessageIdRemove(name, id);\n }, [name, id, onFieldMessageIdAdd, onFieldMessageIdRemove]);\n\n return <Primitive.span id={id} {...messageProps} ref={forwardedRef} />;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * FormValidityState\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALIDITY_STATE_NAME = 'FormValidityState';\n\ninterface FormValidityStateProps {\n children(validity: ValidityState | undefined): React.ReactNode;\n name?: string;\n}\n\nconst FormValidityState = (props: ScopedProps<FormValidityStateProps>) => {\n const { __scopeForm, name: nameProp, children } = props;\n const validationContext = useValidationContext(VALIDITY_STATE_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(VALIDITY_STATE_NAME, __scopeForm);\n const name = nameProp ?? fieldContext.name;\n const validity = validationContext.getFieldValidity(name);\n return <>{children(validity)}</>;\n};\n\nFormValidityState.displayName = VALIDITY_STATE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormSubmit\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUBMIT_NAME = 'FormSubmit';\n\ntype FormSubmitElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface FormSubmitProps extends PrimitiveButtonProps {}\n\nconst FormSubmit = React.forwardRef<FormSubmitElement, FormSubmitProps>(\n (props: ScopedProps<FormSubmitProps>, forwardedRef) => {\n const { __scopeForm, ...submitProps } = props;\n return <Primitive.button type=\"submit\" {...submitProps} ref={forwardedRef} />;\n }\n);\n\nFormSubmit.displayName = SUBMIT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ValidityStateKey = keyof ValidityState;\ntype SyncCustomMatcher = (value: string, formData: FormData) => boolean;\ntype AsyncCustomMatcher = (value: string, formData: FormData) => Promise<boolean>;\ntype CustomMatcher = SyncCustomMatcher | AsyncCustomMatcher;\ntype CustomMatcherEntry = { id: string; match: CustomMatcher };\ntype SyncCustomMatcherEntry = { id: string; match: SyncCustomMatcher };\ntype AsyncCustomMatcherEntry = { id: string; match: AsyncCustomMatcher };\ntype CustomMatcherArgs = [string, FormData];\n\nfunction validityStateToObject(validity: ValidityState) {\n const object: any = {};\n for (const key in validity) {\n object[key] = validity[key as ValidityStateKey];\n }\n return object as Record<ValidityStateKey, boolean>;\n}\n\nfunction isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement;\n}\n\nfunction isFormControl(element: any): element is { validity: ValidityState } {\n return 'validity' in element;\n}\n\nfunction isInvalid(control: HTMLElement) {\n return (\n isFormControl(control) &&\n (control.validity.valid === false || control.getAttribute('aria-invalid') === 'true')\n );\n}\n\nfunction getFirstInvalidControl(form: HTMLFormElement): HTMLElement | undefined {\n const elements = form.elements;\n const [firstInvalidControl] = Array.from(elements).filter(isHTMLElement).filter(isInvalid);\n return firstInvalidControl;\n}\n\nfunction isAsyncCustomMatcherEntry(\n entry: CustomMatcherEntry,\n args: CustomMatcherArgs\n): entry is AsyncCustomMatcherEntry {\n return entry.match.constructor.name === 'AsyncFunction' || returnsPromise(entry.match, args);\n}\n\nfunction isSyncCustomMatcherEntry(entry: CustomMatcherEntry): entry is SyncCustomMatcherEntry {\n return entry.match.constructor.name === 'Function';\n}\n\nfunction returnsPromise(func: Function, args: Array<unknown>) {\n return func(...args) instanceof Promise;\n}\n\nfunction hasBuiltInError(validity: ValidityState) {\n let error = false;\n for (const validityKey in validity) {\n const key = validityKey as ValidityStateKey;\n if (key !== 'valid' && key !== 'customError' && validity[key]) {\n error = true;\n break;\n }\n }\n return error;\n}\n\nfunction getValidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === true && !serverInvalid) return true;\n return undefined;\n}\nfunction getInvalidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === false || serverInvalid) return true;\n return undefined;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Form as Root,\n FormField as Field,\n FormLabel as Label,\n FormControl as Control,\n FormMessage as Message,\n FormValidityState as ValidityState,\n FormSubmit as Submit,\n};\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n};\n"],"names":["createFormScope","Form","FormField","FormLabel","FormControl","FormMessage","FormValidityState","FormSubmit","Root","Field","Label","Control","Message","ValidityState","Submit","React","composeEventHandlers","useComposedRefs","createContextScope","useId","Primitive","createFormContext","FORM_NAME","ValidationProvider","useValidationContext","AriaDescriptionProvider","useAriaDescriptionContext","forwardRef","props","forwardedRef","__scopeForm","onClearServerErrors","rootProps","formRef","useRef","composedFormRef","validityMap","setValidityMap","useState","getFieldValidity","useCallback","fieldName","handleFieldValidityChange","validity","prevValidityMap","handleFieldValiditionClear","undefined","setCustomErrorsMap","prevCustomErrorsMap","customMatcherEntriesMap","setCustomMatcherEntriesMap","getFieldCustomMatcherEntries","handleFieldCustomMatcherAdd","matcherEntry","prevCustomMatcherEntriesMap","handleFieldCustomMatcherRemove","matcherEntryId","filter","id","customErrorsMap","getFieldCustomErrors","handleFieldCustomErrorsChange","customErrors","messageIdsMap","setMessageIdsMap","handleFieldMessageIdAdd","prevMessageIdsMap","fieldDescriptionIds","Set","add","handleFieldMessageIdRemove","delete","getFieldDescription","Array","from","join","onInvalid","event","firstInvalidControl","getFirstInvalidControl","currentTarget","target","focus","preventDefault","onSubmit","checkForDefaultPrevented","onReset","FIELD_NAME","FormFieldProvider","useFormFieldContext","name","serverInvalid","fieldProps","validationContext","getValidAttribute","getInvalidAttribute","LABEL_NAME","labelProps","fieldContext","htmlFor","CONTROL_NAME","controlProps","ariaDescriptionContext","ref","composedRef","customMatcherEntries","onFieldValidityChange","onFieldCustomErrorsChange","onFieldValiditionClear","updateControlValidity","control","hasBuiltInError","controlValidity","validityStateToObject","formData","form","FormData","matcherArgs","value","syncCustomMatcherEntries","ayncCustomMatcherEntries","forEach","customMatcherEntry","isAsyncCustomMatcherEntry","push","isSyncCustomMatcherEntry","syncCustomErrors","map","match","syncCustomErrorsById","Object","fromEntries","hasSyncCustomErrors","values","some","Boolean","hasCustomError","setCustomValidity","DEFAULT_INVALID_MESSAGE","length","promisedCustomErrors","then","matches","asyncCustomErrors","Promise","all","asyncCustomErrorsById","hasAsyncCustomErrors","useEffect","current","handleChange","addEventListener","removeEventListener","resetControlValidity","closest","onChange","validityMatchers","DEFAULT_BUILT_IN_MESSAGES","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valid","valueMissing","MESSAGE_NAME","nameProp","messageProps","children","FormBuiltInMessage","forceMatch","FormCustomMessage","idProp","_id","useMemo","onFieldCustomMatcherEntryAdd","onFieldCustomMatcherEntryRemove","hasMatchingCustomError","FormMessageImpl","onFieldMessageIdAdd","onFieldMessageIdRemove","VALIDITY_STATE_NAME","SUBMIT_NAME","submitProps","object","key","isHTMLElement","element","HTMLElement","isFormControl","isInvalid","getAttribute","elements","entry","args","constructor","returnsPromise","func","error","validityKey"],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/form/src/index.ts","packages/react/form/src/Form.tsx"],"sourcesContent":["export {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './Form';\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n} from './Form';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Label as LabelPrimitive } from '@radix-ui/react-label';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps<P> = P & { __scopeForm?: Scope };\nconst [createFormContext, createFormScope] = createContextScope('Form');\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\nconst FORM_NAME = 'Form';\n\ntype ValidityMap = { [fieldName: string]: ValidityState | undefined };\ntype CustomMatcherEntriesMap = { [fieldName: string]: CustomMatcherEntry[] };\ntype CustomErrorsMap = { [fieldName: string]: Record<string, boolean> };\n\ntype ValidationContextValue = {\n getFieldValidity(fieldName: string): ValidityState | undefined;\n onFieldValidityChange(fieldName: string, validity: ValidityState): void;\n\n getFieldCustomMatcherEntries(fieldName: string): CustomMatcherEntry[];\n onFieldCustomMatcherEntryAdd(fieldName: string, matcherEntry: CustomMatcherEntry): void;\n onFieldCustomMatcherEntryRemove(fieldName: string, matcherEntryId: string): void;\n\n getFieldCustomErrors(fieldName: string): Record<string, boolean>;\n onFieldCustomErrorsChange(fieldName: string, errors: Record<string, boolean>): void;\n\n onFieldValiditionClear(fieldName: string): void;\n};\nconst [ValidationProvider, useValidationContext] =\n createFormContext<ValidationContextValue>(FORM_NAME);\n\ntype MessageIdsMap = { [fieldName: string]: Set<string> };\n\ntype AriaDescriptionContextValue = {\n onFieldMessageIdAdd(fieldName: string, id: string): void;\n onFieldMessageIdRemove(fieldName: string, id: string): void;\n getFieldDescription(fieldName: string): string | undefined;\n};\nconst [AriaDescriptionProvider, useAriaDescriptionContext] =\n createFormContext<AriaDescriptionContextValue>(FORM_NAME);\n\ntype FormElement = React.ElementRef<typeof Primitive.form>;\ntype PrimitiveFormProps = Radix.ComponentPropsWithoutRef<typeof Primitive.form>;\ninterface FormProps extends PrimitiveFormProps {\n onClearServerErrors?(): void;\n}\n\nconst Form = React.forwardRef<FormElement, FormProps>(\n (props: ScopedProps<FormProps>, forwardedRef) => {\n const { __scopeForm, onClearServerErrors = () => {}, ...rootProps } = props;\n const formRef = React.useRef<HTMLFormElement>(null);\n const composedFormRef = useComposedRefs(forwardedRef, formRef);\n\n // native validity per field\n const [validityMap, setValidityMap] = React.useState<ValidityMap>({});\n const getFieldValidity: ValidationContextValue['getFieldValidity'] = React.useCallback(\n (fieldName) => validityMap[fieldName],\n [validityMap]\n );\n const handleFieldValidityChange: ValidationContextValue['onFieldValidityChange'] =\n React.useCallback(\n (fieldName, validity) =>\n setValidityMap((prevValidityMap) => ({\n ...prevValidityMap,\n [fieldName]: { ...(prevValidityMap[fieldName] ?? {}), ...validity },\n })),\n []\n );\n const handleFieldValiditionClear: ValidationContextValue['onFieldValiditionClear'] =\n React.useCallback((fieldName) => {\n setValidityMap((prevValidityMap) => ({ ...prevValidityMap, [fieldName]: undefined }));\n setCustomErrorsMap((prevCustomErrorsMap) => ({ ...prevCustomErrorsMap, [fieldName]: {} }));\n }, []);\n\n // custom matcher entries per field\n const [customMatcherEntriesMap, setCustomMatcherEntriesMap] =\n React.useState<CustomMatcherEntriesMap>({});\n const getFieldCustomMatcherEntries: ValidationContextValue['getFieldCustomMatcherEntries'] =\n React.useCallback(\n (fieldName) => customMatcherEntriesMap[fieldName] ?? [],\n [customMatcherEntriesMap]\n );\n const handleFieldCustomMatcherAdd: ValidationContextValue['onFieldCustomMatcherEntryAdd'] =\n React.useCallback((fieldName, matcherEntry) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: [...(prevCustomMatcherEntriesMap[fieldName] ?? []), matcherEntry],\n }));\n }, []);\n const handleFieldCustomMatcherRemove: ValidationContextValue['onFieldCustomMatcherEntryRemove'] =\n React.useCallback((fieldName, matcherEntryId) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: (prevCustomMatcherEntriesMap[fieldName] ?? []).filter(\n (matcherEntry) => matcherEntry.id !== matcherEntryId\n ),\n }));\n }, []);\n\n // custom errors per field\n const [customErrorsMap, setCustomErrorsMap] = React.useState<CustomErrorsMap>({});\n const getFieldCustomErrors: ValidationContextValue['getFieldCustomErrors'] = React.useCallback(\n (fieldName) => customErrorsMap[fieldName] ?? {},\n [customErrorsMap]\n );\n const handleFieldCustomErrorsChange: ValidationContextValue['onFieldCustomErrorsChange'] =\n React.useCallback((fieldName, customErrors) => {\n setCustomErrorsMap((prevCustomErrorsMap) => ({\n ...prevCustomErrorsMap,\n [fieldName]: { ...(prevCustomErrorsMap[fieldName] ?? {}), ...customErrors },\n }));\n }, []);\n\n // messageIds per field\n const [messageIdsMap, setMessageIdsMap] = React.useState<MessageIdsMap>({});\n const handleFieldMessageIdAdd: AriaDescriptionContextValue['onFieldMessageIdAdd'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]).add(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const handleFieldMessageIdRemove: AriaDescriptionContextValue['onFieldMessageIdRemove'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]);\n fieldDescriptionIds.delete(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const getFieldDescription: AriaDescriptionContextValue['getFieldDescription'] =\n React.useCallback(\n (fieldName) => Array.from(messageIdsMap[fieldName] ?? []).join(' ') || undefined,\n [messageIdsMap]\n );\n\n return (\n <ValidationProvider\n scope={__scopeForm}\n getFieldValidity={getFieldValidity}\n onFieldValidityChange={handleFieldValidityChange}\n getFieldCustomMatcherEntries={getFieldCustomMatcherEntries}\n onFieldCustomMatcherEntryAdd={handleFieldCustomMatcherAdd}\n onFieldCustomMatcherEntryRemove={handleFieldCustomMatcherRemove}\n getFieldCustomErrors={getFieldCustomErrors}\n onFieldCustomErrorsChange={handleFieldCustomErrorsChange}\n onFieldValiditionClear={handleFieldValiditionClear}\n >\n <AriaDescriptionProvider\n scope={__scopeForm}\n onFieldMessageIdAdd={handleFieldMessageIdAdd}\n onFieldMessageIdRemove={handleFieldMessageIdRemove}\n getFieldDescription={getFieldDescription}\n >\n <Primitive.form\n {...rootProps}\n ref={composedFormRef}\n // focus first invalid control when the form is submitted\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const firstInvalidControl = getFirstInvalidControl(event.currentTarget);\n if (firstInvalidControl === event.target) firstInvalidControl.focus();\n\n // prevent default browser UI for form validation\n event.preventDefault();\n })}\n // clear server errors when the form is re-submitted\n onSubmit={composeEventHandlers(props.onSubmit, onClearServerErrors, {\n checkForDefaultPrevented: false,\n })}\n // clear server errors when the form is reset\n onReset={composeEventHandlers(props.onReset, onClearServerErrors)}\n />\n </AriaDescriptionProvider>\n </ValidationProvider>\n );\n }\n);\n\nForm.displayName = FORM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormField\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_NAME = 'FormField';\n\ntype FormFieldContextValue = {\n id: string;\n name: string;\n serverInvalid: boolean;\n};\nconst [FormFieldProvider, useFormFieldContext] =\n createFormContext<FormFieldContextValue>(FIELD_NAME);\n\ntype FormFieldElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FormFieldProps extends PrimitiveDivProps {\n name: string;\n serverInvalid?: boolean;\n}\n\nconst FormField = React.forwardRef<FormFieldElement, FormFieldProps>(\n (props: ScopedProps<FormFieldProps>, forwardedRef) => {\n const { __scopeForm, name, serverInvalid = false, ...fieldProps } = props;\n const validationContext = useValidationContext(FIELD_NAME, __scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const id = useId();\n\n return (\n <FormFieldProvider scope={__scopeForm} id={id} name={name} serverInvalid={serverInvalid}>\n <Primitive.div\n data-valid={getValidAttribute(validity, serverInvalid)}\n data-invalid={getInvalidAttribute(validity, serverInvalid)}\n {...fieldProps}\n ref={forwardedRef}\n />\n </FormFieldProvider>\n );\n }\n);\n\nFormField.displayName = FIELD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'FormLabel';\n\ntype FormLabelElement = React.ElementRef<typeof LabelPrimitive>;\ntype LabelProps = Radix.ComponentPropsWithoutRef<typeof LabelPrimitive>;\ninterface FormLabelProps extends LabelProps {}\n\nconst FormLabel = React.forwardRef<FormLabelElement, FormLabelProps>(\n (props: ScopedProps<FormLabelProps>, forwardedRef) => {\n const { __scopeForm, ...labelProps } = props;\n const validationContext = useValidationContext(LABEL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(LABEL_NAME, __scopeForm);\n const htmlFor = labelProps.htmlFor || fieldContext.id;\n const validity = validationContext.getFieldValidity(fieldContext.name);\n\n return (\n <LabelPrimitive\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n {...labelProps}\n ref={forwardedRef}\n htmlFor={htmlFor}\n />\n );\n }\n);\n\nFormLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormControl\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTROL_NAME = 'FormControl';\n\ntype FormControlElement = React.ElementRef<typeof Primitive.input>;\ntype PrimitiveInputProps = Radix.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface FormControlProps extends PrimitiveInputProps {}\n\nconst FormControl = React.forwardRef<FormControlElement, FormControlProps>(\n (props: ScopedProps<FormControlProps>, forwardedRef) => {\n const { __scopeForm, ...controlProps } = props;\n\n const validationContext = useValidationContext(CONTROL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(CONTROL_NAME, __scopeForm);\n const ariaDescriptionContext = useAriaDescriptionContext(CONTROL_NAME, __scopeForm);\n\n const ref = React.useRef<FormControlElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const name = controlProps.name || fieldContext.name;\n const id = controlProps.id || fieldContext.id;\n const customMatcherEntries = validationContext.getFieldCustomMatcherEntries(name);\n\n const { onFieldValidityChange, onFieldCustomErrorsChange, onFieldValiditionClear } =\n validationContext;\n const updateControlValidity = React.useCallback(\n async (control: FormControlElement) => {\n //------------------------------------------------------------------------------------------\n // 1. first, if we have built-in errors we stop here\n\n if (hasBuiltInError(control.validity)) {\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n return;\n }\n\n //------------------------------------------------------------------------------------------\n // 2. then gather the form data to give to custom matchers for cross-comparisons\n\n const formData = control.form ? new FormData(control.form) : new FormData();\n const matcherArgs: CustomMatcherArgs = [control.value, formData];\n\n //------------------------------------------------------------------------------------------\n // 3. split sync and async custom matcher entries\n\n const syncCustomMatcherEntries: Array<SyncCustomMatcherEntry> = [];\n const ayncCustomMatcherEntries: Array<AsyncCustomMatcherEntry> = [];\n customMatcherEntries.forEach((customMatcherEntry) => {\n if (isAsyncCustomMatcherEntry(customMatcherEntry, matcherArgs)) {\n ayncCustomMatcherEntries.push(customMatcherEntry);\n } else if (isSyncCustomMatcherEntry(customMatcherEntry)) {\n syncCustomMatcherEntries.push(customMatcherEntry);\n }\n });\n\n //------------------------------------------------------------------------------------------\n // 4. run sync custom matchers and update control validity / internal validity + errors\n\n const syncCustomErrors = syncCustomMatcherEntries.map(({ id, match }) => {\n return [id, match(...matcherArgs)] as const;\n });\n const syncCustomErrorsById = Object.fromEntries(syncCustomErrors);\n const hasSyncCustomErrors = Object.values(syncCustomErrorsById).some(Boolean);\n const hasCustomError = hasSyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, syncCustomErrorsById);\n\n //------------------------------------------------------------------------------------------\n // 5. run async custom matchers and update control validity / internal validity + errors\n\n if (!hasSyncCustomErrors && ayncCustomMatcherEntries.length > 0) {\n const promisedCustomErrors = ayncCustomMatcherEntries.map(({ id, match }) =>\n match(...matcherArgs).then((matches) => [id, matches] as const)\n );\n const asyncCustomErrors = await Promise.all(promisedCustomErrors);\n const asyncCustomErrorsById = Object.fromEntries(asyncCustomErrors);\n const hasAsyncCustomErrors = Object.values(asyncCustomErrorsById).some(Boolean);\n const hasCustomError = hasAsyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, asyncCustomErrorsById);\n }\n },\n [customMatcherEntries, name, onFieldCustomErrorsChange, onFieldValidityChange]\n );\n\n React.useEffect(() => {\n const control = ref.current;\n if (control) {\n // We only want validate on change (native `change` event, not React's `onChange`). This is primarily\n // a UX decision, we don't want to validate on every keystroke and React's `onChange` is the `input` event.\n const handleChange = () => updateControlValidity(control);\n control.addEventListener('change', handleChange);\n return () => control.removeEventListener('change', handleChange);\n }\n }, [updateControlValidity]);\n\n const resetControlValidity = React.useCallback(() => {\n const control = ref.current;\n if (control) {\n control.setCustomValidity('');\n onFieldValiditionClear(name);\n }\n }, [name, onFieldValiditionClear]);\n\n // reset validity and errors when the form is reset\n React.useEffect(() => {\n const form = ref.current?.form;\n if (form) {\n form.addEventListener('reset', resetControlValidity);\n return () => form.removeEventListener('reset', resetControlValidity);\n }\n }, [resetControlValidity]);\n\n // focus first invalid control when fields are set as invalid by server\n React.useEffect(() => {\n const control = ref.current;\n const form = control?.closest('form');\n if (form && fieldContext.serverInvalid) {\n const firstInvalidControl = getFirstInvalidControl(form);\n if (firstInvalidControl === control) firstInvalidControl.focus();\n }\n }, [fieldContext.serverInvalid]);\n\n const validity = validationContext.getFieldValidity(name);\n\n return (\n <Primitive.input\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n aria-invalid={fieldContext.serverInvalid ? true : undefined}\n aria-describedby={ariaDescriptionContext.getFieldDescription(name)}\n // disable default browser behaviour of showing built-in error message on hover\n title=\"\"\n {...controlProps}\n ref={composedRef}\n id={id}\n name={name}\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const control = event.currentTarget;\n updateControlValidity(control);\n })}\n onChange={composeEventHandlers(props.onChange, (event) => {\n // reset validity when user changes value\n resetControlValidity();\n })}\n />\n );\n }\n);\n\nFormControl.displayName = CONTROL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormMessage\n * -----------------------------------------------------------------------------------------------*/\n\nconst validityMatchers = [\n 'badInput',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valid',\n 'valueMissing',\n] as const;\ntype ValidityMatcher = typeof validityMatchers[number];\n\nconst DEFAULT_INVALID_MESSAGE = 'This value is not valid';\nconst DEFAULT_BUILT_IN_MESSAGES: Record<ValidityMatcher, string | undefined> = {\n badInput: DEFAULT_INVALID_MESSAGE,\n patternMismatch: 'This value does not match the required pattern',\n rangeOverflow: 'This value is too large',\n rangeUnderflow: 'This value is too small',\n stepMismatch: 'This value does not match the required step',\n tooLong: 'This value is too long',\n tooShort: 'This value is too short',\n typeMismatch: 'This value does not match the required type',\n valid: undefined,\n valueMissing: 'This value is missing',\n};\n\nconst MESSAGE_NAME = 'FormMessage';\n\ntype FormMessageElement = FormMessageImplElement;\ninterface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {\n match?: ValidityMatcher | CustomMatcher;\n forceMatch?: boolean;\n name?: string;\n}\n\nconst FormMessage = React.forwardRef<FormMessageElement, FormMessageProps>(\n (props: ScopedProps<FormMessageProps>, forwardedRef) => {\n const { match, name: nameProp, ...messageProps } = props;\n const fieldContext = useFormFieldContext(MESSAGE_NAME, props.__scopeForm);\n const name = nameProp ?? fieldContext.name;\n\n if (match === undefined) {\n return (\n <FormMessageImpl {...messageProps} ref={forwardedRef} name={name}>\n {props.children || DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n } else if (typeof match === 'function') {\n return <FormCustomMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n } else {\n return <FormBuiltInMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n }\n }\n);\n\nFormMessage.displayName = MESSAGE_NAME;\n\ntype FormBuiltInMessageElement = FormMessageImplElement;\ninterface FormBuiltInMessageProps extends FormMessageImplProps {\n match: ValidityMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormBuiltInMessage = React.forwardRef<FormBuiltInMessageElement, FormBuiltInMessageProps>(\n (props: ScopedProps<FormBuiltInMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const matches = forceMatch || validity?.[match];\n\n if (matches) {\n return (\n <FormMessageImpl ref={forwardedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_BUILT_IN_MESSAGES[match]}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormCustomMessageElement = React.ElementRef<typeof FormMessageImpl>;\ninterface FormCustomMessageProps extends Radix.ComponentPropsWithoutRef<typeof FormMessageImpl> {\n match: CustomMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormCustomMessage = React.forwardRef<FormCustomMessageElement, FormCustomMessageProps>(\n (props: ScopedProps<FormCustomMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, id: idProp, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const ref = React.useRef<FormCustomMessageElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const _id = useId();\n const id = idProp ?? _id;\n\n const customMatcherEntry = React.useMemo(() => ({ id, match }), [id, match]);\n const { onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove } = validationContext;\n React.useEffect(() => {\n onFieldCustomMatcherEntryAdd(name, customMatcherEntry);\n return () => onFieldCustomMatcherEntryRemove(name, customMatcherEntry.id);\n }, [customMatcherEntry, name, onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove]);\n\n const validity = validationContext.getFieldValidity(name);\n const customErrors = validationContext.getFieldCustomErrors(name);\n const hasMatchingCustomError = customErrors[id];\n const matches =\n forceMatch || (validity && !hasBuiltInError(validity) && hasMatchingCustomError);\n\n if (matches) {\n return (\n <FormMessageImpl id={id} ref={composedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormMessageImplElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface FormMessageImplProps extends PrimitiveSpanProps {\n name: string;\n}\n\nconst FormMessageImpl = React.forwardRef<FormMessageImplElement, FormMessageImplProps>(\n (props: ScopedProps<FormMessageImplProps>, forwardedRef) => {\n const { __scopeForm, id: idProp, name, ...messageProps } = props;\n const ariaDescriptionContext = useAriaDescriptionContext(MESSAGE_NAME, __scopeForm);\n const _id = useId();\n const id = idProp ?? _id;\n\n const { onFieldMessageIdAdd, onFieldMessageIdRemove } = ariaDescriptionContext;\n React.useEffect(() => {\n onFieldMessageIdAdd(name, id);\n return () => onFieldMessageIdRemove(name, id);\n }, [name, id, onFieldMessageIdAdd, onFieldMessageIdRemove]);\n\n return <Primitive.span id={id} {...messageProps} ref={forwardedRef} />;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * FormValidityState\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALIDITY_STATE_NAME = 'FormValidityState';\n\ninterface FormValidityStateProps {\n children(validity: ValidityState | undefined): React.ReactNode;\n name?: string;\n}\n\nconst FormValidityState = (props: ScopedProps<FormValidityStateProps>) => {\n const { __scopeForm, name: nameProp, children } = props;\n const validationContext = useValidationContext(VALIDITY_STATE_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(VALIDITY_STATE_NAME, __scopeForm);\n const name = nameProp ?? fieldContext.name;\n const validity = validationContext.getFieldValidity(name);\n return <>{children(validity)}</>;\n};\n\nFormValidityState.displayName = VALIDITY_STATE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormSubmit\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUBMIT_NAME = 'FormSubmit';\n\ntype FormSubmitElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface FormSubmitProps extends PrimitiveButtonProps {}\n\nconst FormSubmit = React.forwardRef<FormSubmitElement, FormSubmitProps>(\n (props: ScopedProps<FormSubmitProps>, forwardedRef) => {\n const { __scopeForm, ...submitProps } = props;\n return <Primitive.button type=\"submit\" {...submitProps} ref={forwardedRef} />;\n }\n);\n\nFormSubmit.displayName = SUBMIT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ValidityStateKey = keyof ValidityState;\ntype SyncCustomMatcher = (value: string, formData: FormData) => boolean;\ntype AsyncCustomMatcher = (value: string, formData: FormData) => Promise<boolean>;\ntype CustomMatcher = SyncCustomMatcher | AsyncCustomMatcher;\ntype CustomMatcherEntry = { id: string; match: CustomMatcher };\ntype SyncCustomMatcherEntry = { id: string; match: SyncCustomMatcher };\ntype AsyncCustomMatcherEntry = { id: string; match: AsyncCustomMatcher };\ntype CustomMatcherArgs = [string, FormData];\n\nfunction validityStateToObject(validity: ValidityState) {\n const object: any = {};\n for (const key in validity) {\n object[key] = validity[key as ValidityStateKey];\n }\n return object as Record<ValidityStateKey, boolean>;\n}\n\nfunction isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement;\n}\n\nfunction isFormControl(element: any): element is { validity: ValidityState } {\n return 'validity' in element;\n}\n\nfunction isInvalid(control: HTMLElement) {\n return (\n isFormControl(control) &&\n (control.validity.valid === false || control.getAttribute('aria-invalid') === 'true')\n );\n}\n\nfunction getFirstInvalidControl(form: HTMLFormElement): HTMLElement | undefined {\n const elements = form.elements;\n const [firstInvalidControl] = Array.from(elements).filter(isHTMLElement).filter(isInvalid);\n return firstInvalidControl;\n}\n\nfunction isAsyncCustomMatcherEntry(\n entry: CustomMatcherEntry,\n args: CustomMatcherArgs\n): entry is AsyncCustomMatcherEntry {\n return entry.match.constructor.name === 'AsyncFunction' || returnsPromise(entry.match, args);\n}\n\nfunction isSyncCustomMatcherEntry(entry: CustomMatcherEntry): entry is SyncCustomMatcherEntry {\n return entry.match.constructor.name === 'Function';\n}\n\nfunction returnsPromise(func: Function, args: Array<unknown>) {\n return func(...args) instanceof Promise;\n}\n\nfunction hasBuiltInError(validity: ValidityState) {\n let error = false;\n for (const validityKey in validity) {\n const key = validityKey as ValidityStateKey;\n if (key !== 'valid' && key !== 'customError' && validity[key]) {\n error = true;\n break;\n }\n }\n return error;\n}\n\nfunction getValidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === true && !serverInvalid) return true;\n return undefined;\n}\nfunction getInvalidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === false || serverInvalid) return true;\n return undefined;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Form;\nconst Field = FormField;\nconst Label = FormLabel;\nconst Control = FormControl;\nconst Message = FormMessage;\nconst ValidityState = FormValidityState;\nconst Submit = FormSubmit;\n\nexport {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n};\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n};\n"],"names":["createFormScope","Form","FormField","FormLabel","FormControl","FormMessage","FormValidityState","FormSubmit","Root","Field","Label","Control","Message","ValidityState","Submit","React","composeEventHandlers","useComposedRefs","createContextScope","useId","LabelPrimitive","Primitive","createFormContext","FORM_NAME","ValidationProvider","useValidationContext","AriaDescriptionProvider","useAriaDescriptionContext","forwardRef","props","forwardedRef","__scopeForm","onClearServerErrors","rootProps","formRef","useRef","composedFormRef","validityMap","setValidityMap","useState","getFieldValidity","useCallback","fieldName","handleFieldValidityChange","validity","prevValidityMap","handleFieldValiditionClear","undefined","setCustomErrorsMap","prevCustomErrorsMap","customMatcherEntriesMap","setCustomMatcherEntriesMap","getFieldCustomMatcherEntries","handleFieldCustomMatcherAdd","matcherEntry","prevCustomMatcherEntriesMap","handleFieldCustomMatcherRemove","matcherEntryId","filter","id","customErrorsMap","getFieldCustomErrors","handleFieldCustomErrorsChange","customErrors","messageIdsMap","setMessageIdsMap","handleFieldMessageIdAdd","prevMessageIdsMap","fieldDescriptionIds","Set","add","handleFieldMessageIdRemove","delete","getFieldDescription","Array","from","join","onInvalid","event","firstInvalidControl","getFirstInvalidControl","currentTarget","target","focus","preventDefault","onSubmit","checkForDefaultPrevented","onReset","FIELD_NAME","FormFieldProvider","useFormFieldContext","name","serverInvalid","fieldProps","validationContext","getValidAttribute","getInvalidAttribute","LABEL_NAME","labelProps","fieldContext","htmlFor","CONTROL_NAME","controlProps","ariaDescriptionContext","ref","composedRef","customMatcherEntries","onFieldValidityChange","onFieldCustomErrorsChange","onFieldValiditionClear","updateControlValidity","control","hasBuiltInError","controlValidity","validityStateToObject","formData","form","FormData","matcherArgs","value","syncCustomMatcherEntries","ayncCustomMatcherEntries","forEach","customMatcherEntry","isAsyncCustomMatcherEntry","push","isSyncCustomMatcherEntry","syncCustomErrors","map","match","syncCustomErrorsById","Object","fromEntries","hasSyncCustomErrors","values","some","Boolean","hasCustomError","setCustomValidity","DEFAULT_INVALID_MESSAGE","length","promisedCustomErrors","then","matches","asyncCustomErrors","Promise","all","asyncCustomErrorsById","hasAsyncCustomErrors","useEffect","current","handleChange","addEventListener","removeEventListener","resetControlValidity","closest","onChange","validityMatchers","DEFAULT_BUILT_IN_MESSAGES","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valid","valueMissing","MESSAGE_NAME","nameProp","messageProps","children","FormBuiltInMessage","forceMatch","FormCustomMessage","idProp","_id","useMemo","onFieldCustomMatcherEntryAdd","onFieldCustomMatcherEntryRemove","hasMatchingCustomError","FormMessageImpl","onFieldMessageIdAdd","onFieldMessageIdRemove","VALIDITY_STATE_NAME","SUBMIT_NAME","submitProps","object","key","isHTMLElement","element","HTMLElement","isFormControl","isInvalid","getAttribute","elements","entry","args","constructor","returnsPromise","func","error","validityKey"],"version":3,"file":"index.js.map"}
|
package/dist/index.module.js
CHANGED
|
@@ -546,9 +546,16 @@ function $d94698215c4408a7$var$getInvalidAttribute(validity, serverInvalid) {
|
|
|
546
546
|
if ((validity === null || validity === void 0 ? void 0 : validity.valid) === false || serverInvalid) return true;
|
|
547
547
|
return undefined;
|
|
548
548
|
}
|
|
549
|
+
/* -----------------------------------------------------------------------------------------------*/ const $d94698215c4408a7$export$be92b6f5f03c0fe9 = $d94698215c4408a7$export$a7fed597f4b8afd8;
|
|
550
|
+
const $d94698215c4408a7$export$a455218a85c89869 = $d94698215c4408a7$export$56e87bf42978147a;
|
|
551
|
+
const $d94698215c4408a7$export$b04be29aa201d4f5 = $d94698215c4408a7$export$842aba50ed0ce9d7;
|
|
552
|
+
const $d94698215c4408a7$export$7a7fa4424cb20976 = $d94698215c4408a7$export$fe5d99d8691b3f62;
|
|
553
|
+
const $d94698215c4408a7$export$f69c19e57285b83a = $d94698215c4408a7$export$2e8ae7a1a126169a;
|
|
554
|
+
const $d94698215c4408a7$export$5efdf844224572d9 = $d94698215c4408a7$export$7a93102810e06862;
|
|
555
|
+
const $d94698215c4408a7$export$2c4cf1f7b42ef78c = $d94698215c4408a7$export$d0861e5bd09bd9e4;
|
|
549
556
|
|
|
550
557
|
|
|
551
558
|
|
|
552
559
|
|
|
553
|
-
export {$d94698215c4408a7$export$299997c7551e97cb as createFormScope, $d94698215c4408a7$export$a7fed597f4b8afd8 as Form, $d94698215c4408a7$export$
|
|
560
|
+
export {$d94698215c4408a7$export$299997c7551e97cb as createFormScope, $d94698215c4408a7$export$a7fed597f4b8afd8 as Form, $d94698215c4408a7$export$56e87bf42978147a as FormField, $d94698215c4408a7$export$842aba50ed0ce9d7 as FormLabel, $d94698215c4408a7$export$fe5d99d8691b3f62 as FormControl, $d94698215c4408a7$export$2e8ae7a1a126169a as FormMessage, $d94698215c4408a7$export$7a93102810e06862 as FormValidityState, $d94698215c4408a7$export$d0861e5bd09bd9e4 as FormSubmit, $d94698215c4408a7$export$be92b6f5f03c0fe9 as Root, $d94698215c4408a7$export$a455218a85c89869 as Field, $d94698215c4408a7$export$b04be29aa201d4f5 as Label, $d94698215c4408a7$export$7a7fa4424cb20976 as Control, $d94698215c4408a7$export$f69c19e57285b83a as Message, $d94698215c4408a7$export$5efdf844224572d9 as ValidityState, $d94698215c4408a7$export$2c4cf1f7b42ef78c as Submit};
|
|
554
561
|
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;A;;;;;;;;ACYA,MAAM,CAACqB,uCAAD,EAAoBrB,yCAApB,CAAA,GAAuCkB,yBAAkB,CAAC,MAAD,CAA/D,AAAA;AAEA;;oGAEA,CAEA,MAAMI,+BAAS,GAAG,MAAlB,AAAA;AAmBA,MAAM,CAACC,wCAAD,EAAqBC,0CAArB,CAAA,GACJH,uCAAiB,CAAyBC,+BAAzB,CADnB,AAAA;AAUA,MAAM,CAACG,6CAAD,EAA0BC,+CAA1B,CAAA,GACJL,uCAAiB,CAA8BC,+BAA9B,CADnB,AAAA;AASA,MAAMrB,yCAAI,GAAA,aAAGc,CAAAA,iBAAA,CACX,CAACa,KAAD,EAAgCC,YAAhC,GAAiD;IAC/C,MAAM,E,aAAEC,WAAF,CAAA,uBAAeC,mBAAmB,GAAG,IAAM,EAA3C,GAA+C,GAAGC,SAAH,EAA/C,GAAgEJ,KAAtE,AAAM;IACN,MAAMK,OAAO,GAAGlB,aAAA,CAA8B,IAA9B,CAAhB,AAAA;IACA,MAAMoB,eAAe,GAAGlB,sBAAe,CAACY,YAAD,EAAeI,OAAf,CAAvC,AAH+C,EAK/C,4BAFA;IAGA,MAAM,CAACG,WAAD,EAAcC,cAAd,CAAA,GAAgCtB,eAAA,CAA4B,EAA5B,CAAtC,AAAA;IACA,MAAMwB,gBAA4D,GAAGxB,kBAAA,CAClE0B,CAAAA,SAAD,GAAeL,WAAW,CAACK,SAAD,CADyC;IAAA,EAEnE;QAACL,WAAD;KAFmE,CAArE,AAAA;IAIA,MAAMM,yBAA0E,GAC9E3B,kBAAA,CACE,CAAC0B,SAAD,EAAYE,QAAZ,GACEN,cAAc,CAAEO,CAAAA,eAAD,GAHrB;YAGqB,IAAA,qBAAA,AAAA;YAAA,OAAsB;gBACnC,GAAGA,eADgC;gBAEnC,CAACH,SAAD,CAAA,EAAa;oBAAE,GAAA,AAAA,CAAA,qBAAA,GAAIG,eAAe,CAACH,SAAD,CAAnB,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAkC,EAAlC;oBAAuC,GAAGE,QAAH;iBAAzC;aAFA,CAAsB;SAAvB,CAFlB;IAAA,EAME,EANF,CADF,AAGqB;IAMrB,MAAME,0BAA4E,GAChF9B,kBAAA,CAAmB0B,CAAAA,SAAD,GAAe;QAC/BJ,cAAc,CAAEO,CAAAA,eAAD,GAAsB,CAAA;gBAAE,GAAGA,eAAL;gBAAsB,CAACH,SAAD,CAAA,EAAaK,SAAb;aAA5C,CAAA;QAAD,CAAd,CAAqC;QACrCC,kBAAkB,CAAEC,CAAAA,mBAAD,GAA0B,CAAA;gBAAE,GAAGA,mBAAL;gBAA0B,CAACP,SAAD,CAAA,EAAa,EAAb;aAApD,CAAA;QAAD,CAAlB,CAA6C;KAF/C,EAGG,EAHH,CADF,AApB+C,EA0B/C,mCAFG;IAGH,MAAM,CAACQ,uBAAD,EAA0BC,0BAA1B,CAAA,GACJnC,eAAA,CAAwC,EAAxC,CADF,AAAA;IAEA,MAAMoC,4BAAoF,GACxFpC,kBAAA,CACG0B,CAAAA,SAAD,GAFJ;QAEI,IAAA,qBAAA,AAAA;QAAA,OAAA,AAAA,CAAA,qBAAA,GAAeQ,uBAAuB,CAACR,SAAD,CAAtC,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAqD,EAArD,CAAA;KADF,EAEE;QAACQ,uBAAD;KAFF,CADF,AAEI;IAGJ,MAAMG,2BAAmF,GACvFrC,kBAAA,CAAkB,CAAC0B,SAAD,EAAYY,YAAZ,GAA6B;QAC7CH,0BAA0B,CAAEI,CAAAA,2BAAD,GAA3BJ;YAA2B,IAAA,qBAAA,AAAA;YAAA,OAAkC;gBAC3D,GAAGI,2BADwD;gBAE3D,CAACb,SAAD,CAAA,EAAa;uBAAC,AAAA,CAAA,qBAAA,GAAIa,2BAA2B,CAACb,SAAD,CAA/B,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAA8C,EAA9C;oBAAmDY,YAApD;iBAAb;aAFyB,CAAkC;SAAnC,CAA1B,CAA2B;KAD7B,EAKG,EALH,CADF,AAMG;IACH,MAAME,8BAAyF,GAC7FxC,kBAAA,CAAkB,CAAC0B,SAAD,EAAYe,cAAZ,GAA+B;QAC/CN,0BAA0B,CAAEI,CAAAA,2BAAD,GAA3BJ;YAA2B,IAAA,sBAAA,AAAA;YAAA,OAAkC;gBAC3D,GAAGI,2BADwD;gBAE3D,CAACb,SAAD,CAAA,EAAa,AAAA,CAAA,AAAA,CAAA,sBAAA,GAACa,2BAA2B,CAACb,SAAD,CAA5B,CAAA,KAAA,IAAA,IAAA,sBAAA,KAAA,KAAA,CAAA,GAAA,sBAAA,GAA2C,EAA3C,CAAA,CAA+CgB,MAA/C,CACVJ,CAAAA,YAAD,GAAkBA,YAAY,CAACK,EAAb,KAAoBF,cAD3B;gBAAA,CAAb;aAFyB,CAAkC;SAAnC,CAA1B,CAA2B;KAD7B,EAOG,EAPH,CADF,AAzC+C,EAmD/C,0BAFG;IAGH,MAAM,CAACG,eAAD,EAAkBZ,kBAAlB,CAAA,GAAwChC,eAAA,CAAgC,EAAhC,CAA9C,AAAA;IACA,MAAM6C,oBAAoE,GAAG7C,kBAAA,CAC1E0B,CAAAA,SAAD,GADF;QACE,IAAA,qBAAA,AAAA;QAAA,OAAA,AAAA,CAAA,qBAAA,GAAekB,eAAe,CAAClB,SAAD,CAA9B,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAA6C,EAA7C,CAAA;KAD2E,EAE3E;QAACkB,eAAD;KAF2E,CAA7E,AACE;IAGF,MAAME,6BAAkF,GACtF9C,kBAAA,CAAkB,CAAC0B,SAAD,EAAYqB,YAAZ,GAA6B;QAC7Cf,kBAAkB,CAAEC,CAAAA,mBAAD,GAAnBD;YAAmB,IAAA,qBAAA,AAAA;YAAA,OAA0B;gBAC3C,GAAGC,mBADwC;gBAE3C,CAACP,SAAD,CAAA,EAAa;oBAAE,GAAA,AAAA,CAAA,qBAAA,GAAIO,mBAAmB,CAACP,SAAD,CAAvB,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAsC,EAAtC;oBAA2C,GAAGqB,YAAH;iBAA7C;aAFI,CAA0B;SAA3B,CAAlB,CAAmB;KADrB,EAKG,EALH,CADF,AAzD+C,EAiE/C,uBAFG;IAGH,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,CAAA,GAAoCjD,eAAA,CAA8B,EAA9B,CAA1C,AAAA;IACA,MAAMkD,uBAA2E,GAC/ElD,kBAAA,CAAkB,CAAC0B,SAAD,EAAYiB,EAAZ,GAAmB;QACnCM,gBAAgB,CAAEE,CAAAA,iBAAD,GAAuB;YACtC,MAAMC,mBAAmB,GAAG,IAAIC,GAAJ,CAAQF,iBAAiB,CAACzB,SAAD,CAAzB,CAAA,CAAsC4B,GAAtC,CAA0CX,EAA1C,CAA5B,AAAA;YACA,OAAO;gBAAE,GAAGQ,iBAAL;gBAAwB,CAACzB,SAAD,CAAA,EAAa0B,mBAAb;aAA/B,CAAO;SAFO,CAAhB,CAGC;KAJH,EAKG,EALH,CADF,AAMG;IACH,MAAMG,0BAAiF,GACrFvD,kBAAA,CAAkB,CAAC0B,SAAD,EAAYiB,EAAZ,GAAmB;QACnCM,gBAAgB,CAAEE,CAAAA,iBAAD,GAAuB;YACtC,MAAMC,mBAAmB,GAAG,IAAIC,GAAJ,CAAQF,iBAAiB,CAACzB,SAAD,CAAzB,CAA5B,AAAA;YACA0B,mBAAmB,CAACI,MAApB,CAA2Bb,EAA3B,CAAAS,CAAAA;YACA,OAAO;gBAAE,GAAGD,iBAAL;gBAAwB,CAACzB,SAAD,CAAA,EAAa0B,mBAAb;aAA/B,CAAO;SAHO,CAAhB,CAIC;KALH,EAMG,EANH,CADF,AAOG;IACH,MAAMK,mBAAuE,GAC3EzD,kBAAA,CACG0B,CAAAA,SAAD,GAFJ;QAEI,IAAA,qBAAA,AAAA;QAAA,OAAegC,KAAK,CAACC,IAAN,CAAA,AAAA,CAAA,qBAAA,GAAWX,aAAa,CAACtB,SAAD,CAAxB,CAAA,KAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAuC,EAAvC,CAAA,CAA2CkC,IAA3C,CAAgD,GAAhD,CAAA,IAAwD7B,SAAvE,CAAA;KADF,EAEE;QAACiB,aAAD;KAFF,CADF,AAEI;IAIJ,OAAA,aACE,CAAA,oBAAA,CAAC,wCAAD,EADF;QAEI,KAAK,EAAEjC,WADT;QAEE,gBAAgB,EAAES,gBAFpB;QAGE,qBAAqB,EAAEG,yBAHzB;QAIE,4BAA4B,EAAES,4BAJhC;QAKE,4BAA4B,EAAEC,2BALhC;QAME,+BAA+B,EAAEG,8BANnC;QAOE,oBAAoB,EAAEK,oBAPxB;QAQE,yBAAyB,EAAEC,6BAR7B;QASE,sBAAsB,EAAEhB,0BAAxB;KATF,EAAA,aAWE,CAAA,oBAAA,CAAC,6CAAD,EAXF;QAYI,KAAK,EAAEf,WADT;QAEE,mBAAmB,EAAEmC,uBAFvB;QAGE,sBAAsB,EAAEK,0BAH1B;QAIE,mBAAmB,EAAEE,mBAArB;KAJF,EAAA,aAME,CAAA,oBAAA,CAAC,gBAAD,CAAW,IAAX,EAAA,oCAAA,CAAA,EAAA,EACMxC,SADN,EANF;QAQI,GAAG,EAAEG,eAFP,CAGE,yDADA;QAFF;QAIE,SAAS,EAAEnB,2BAAoB,CAACY,KAAK,CAACgD,SAAP,EAAmBC,CAAAA,KAAD,GAAW;YAC1D,MAAMC,mBAAmB,GAAGC,4CAAsB,CAACF,KAAK,CAACG,aAAP,CAAlD,AAAA;YACA,IAAIF,mBAAmB,KAAKD,KAAK,CAACI,MAAlC,EAA0CH,mBAAmB,CAACI,KAApB,EAAA,CAFgB,CAI1D,iDAFA;YAGAL,KAAK,CAACM,cAAN,EAAAN,CAAAA;SAL6B,CAJjC,CAWE,oDADC;QAVH;QAYE,QAAQ,EAAE7D,2BAAoB,CAACY,KAAK,CAACwD,QAAP,EAAiBrD,mBAAjB,EAAsC;YAClEsD,wBAAwB,EAAE,KAA1BA;SAD4B,CAZhC,CAeE,6CAHoE;QAZtE;QAgBE,OAAO,EAAErE,2BAAoB,CAACY,KAAK,CAAC0D,OAAP,EAAgBvD,mBAAhB,CAA7B;KAhBF,CAAA,CANF,CAXF,CADF,CAkBM;CA3GG,CAAb,AAgIG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,+BAAA;CAAA,CAAA,CAAA;AAEA;;oGAEA,CAEA,MAAMwD,gCAAU,GAAG,WAAnB,AAAA;AAOA,MAAM,CAACC,uCAAD,EAAoBC,yCAApB,CAAA,GACJpE,uCAAiB,CAAwBkE,gCAAxB,CADnB,AAAA;AAUA,MAAMrF,yCAAS,GAAA,aAAGa,CAAAA,iBAAA,CAChB,CAACa,KAAD,EAAqCC,YAArC,GAAsD;IACpD,MAAM,E,aAAEC,WAAF,CAAA,E,MAAe4D,IAAf,CAAA,iBAAqBC,aAAa,GAAG,KAArC,GAA4C,GAAGC,UAAH,EAA5C,GAA8DhE,KAApE,AAAM;IACN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAAC+D,gCAAD,EAAazD,WAAb,CAA9C,AAAA;IACA,MAAMa,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmCmD,IAAnC,CAAjB,AAAA;IACA,MAAMhC,EAAE,GAAGvC,YAAK,EAAhB,AAAA;IAEA,OAAA,aACE,CAAA,oBAAA,CAAC,uCAAD,EADF;QACqB,KAAK,EAAEW,WAA1B;QAAuC,EAAE,EAAE4B,EAA3C;QAA+C,IAAI,EAAEgC,IAArD;QAA2D,aAAa,EAAEC,aAAf;KAA3D,EAAA,aACE,CAAA,oBAAA,CAAC,gBAAD,CAAW,GAAX,EADF,oCAAA,CAAA;QAEI,YAAA,EAAYG,uCAAiB,CAACnD,QAAD,EAAWgD,aAAX,CAD/B;QAEE,cAAA,EAAcI,yCAAmB,CAACpD,QAAD,EAAWgD,aAAX,CAAjC;KAFF,EAGMC,UAHN,EAAA;QAIE,GAAG,EAAE/D,YAAL;KAJF,CAAA,CADF,CADF,CAEI;CATU,CAAlB,AAiBG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,gCAAA;CAAA,CAAA,CAAA;AAEA;;oGAEA,CAEA,MAAMmE,gCAAU,GAAG,WAAnB,AAAA;AAMA,MAAM7F,yCAAS,GAAA,aAAGY,CAAAA,iBAAA,CAChB,CAACa,KAAD,EAAqCC,YAArC,GAAsD;IACpD,MAAM,E,aAAEC,WAAF,CAAA,EAAe,GAAGmE,UAAH,EAAf,GAAiCrE,KAAvC,AAAM;IACN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAACwE,gCAAD,EAAalE,WAAb,CAA9C,AAAA;IACA,MAAMoE,YAAY,GAAGT,yCAAmB,CAACO,gCAAD,EAAalE,WAAb,CAAxC,AAAA;IACA,MAAMqE,OAAO,GAAGF,UAAU,CAACE,OAAX,IAAsBD,YAAY,CAACxC,EAAnD,AAAA;IACA,MAAMf,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmC2D,YAAY,CAACR,IAAhD,CAAjB,AAAA;IAEA,OAAA,aACE,CAAA,oBAAA,CAAC,YAAD,EADF,oCAAA,CAAA;QAEI,YAAA,EAAYI,uCAAiB,CAACnD,QAAD,EAAWuD,YAAY,CAACP,aAAxB,CAD/B;QAEE,cAAA,EAAcI,yCAAmB,CAACpD,QAAD,EAAWuD,YAAY,CAACP,aAAxB,CAAjC;KAFF,EAGMM,UAHN,EAAA;QAIE,GAAG,EAAEpE,YAJP;QAKE,OAAO,EAAEsE,OAAT;KALF,CAAA,CADF,CACE;CATY,CAAlB,AAiBG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,gCAAA;CAAA,CAAA,CAAA;AAEA;;oGAEA,CAEA,MAAMC,kCAAY,GAAG,aAArB,AAAA;AAMA,MAAMhG,yCAAW,GAAA,aAAGW,CAAAA,iBAAA,CAClB,CAACa,KAAD,EAAuCC,YAAvC,GAAwD;IACtD,MAAM,E,aAAEC,WAAF,CAAA,EAAe,GAAGuE,YAAH,EAAf,GAAmCzE,KAAzC,AAAM;IAEN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAAC4E,kCAAD,EAAetE,WAAf,CAA9C,AAAA;IACA,MAAMoE,YAAY,GAAGT,yCAAmB,CAACW,kCAAD,EAAetE,WAAf,CAAxC,AAAA;IACA,MAAMwE,sBAAsB,GAAG5E,+CAAyB,CAAC0E,kCAAD,EAAetE,WAAf,CAAxD,AAAA;IAEA,MAAMyE,GAAG,GAAGxF,aAAA,CAAiC,IAAjC,CAAZ,AAAA;IACA,MAAMyF,WAAW,GAAGvF,sBAAe,CAACY,YAAD,EAAe0E,GAAf,CAAnC,AAAA;IACA,MAAMb,IAAI,GAAGW,YAAY,CAACX,IAAb,IAAqBQ,YAAY,CAACR,IAA/C,AAAA;IACA,MAAMhC,GAAE,GAAG2C,YAAY,CAAC3C,EAAb,IAAmBwC,YAAY,CAACxC,EAA3C,AAAA;IACA,MAAM+C,oBAAoB,GAAGZ,iBAAiB,CAAC1C,4BAAlB,CAA+CuC,IAA/C,CAA7B,AAAA;IAEA,MAAM,E,uBAAEgB,qBAAF,CAAA,E,2BAAyBC,yBAAzB,CAAA,E,wBAAoDC,sBAAAA,CAAAA,EAApD,GACJf,iBADF,AAAM;IAEN,MAAMgB,qBAAqB,GAAG9F,kBAAA,CAC5B,OAAO+F,OAAP,GAAuC;QACrC,4FAAA;QACA,oDAAA;QAEA,IAAIC,qCAAe,CAACD,OAAO,CAACnE,QAAT,CAAnB,EAAuC;YACrC,MAAMqE,eAAe,GAAGC,2CAAqB,CAACH,OAAO,CAACnE,QAAT,CAA7C,AAAA;YACA+D,qBAAqB,CAAChB,IAAD,EAAOsB,eAAP,CAArB,CAAAN;YACA,OAAA;SAPmC,CAUrC,4FAFC;QAGD,gFAAA;QAEA,MAAMQ,QAAQ,GAAGJ,OAAO,CAACK,IAAR,GAAe,IAAIC,QAAJ,CAAaN,OAAO,CAACK,IAArB,CAAf,GAA4C,IAAIC,QAAJ,EAA7D,AAAA;QACA,MAAMC,WAA8B,GAAG;YAACP,OAAO,CAACQ,KAAT;YAAgBJ,QAAhB;SAAvC,AAdqC,EAgBrC,4FAFA;QAGA,iDAAA;QAEA,MAAMK,wBAAuD,GAAG,EAAhE,AAAA;QACA,MAAMC,wBAAwD,GAAG,EAAjE,AAAA;QACAf,oBAAoB,CAACgB,OAArB,CAA8BC,CAAAA,kBAAD,GAAwB;YACnD,IAAIC,+CAAyB,CAACD,kBAAD,EAAqBL,WAArB,CAA7B,EACEG,wBAAwB,CAACI,IAAzB,CAA8BF,kBAA9B,CAAAF,CAAAA;iBACK,IAAIK,8CAAwB,CAACH,kBAAD,CAA5B,EACLH,wBAAwB,CAACK,IAAzB,CAA8BF,kBAA9B,CAAAH,CAAAA;SAJJ,CAAA,CArBqC,CA6BrC,4FAFC;QAGD,uFAAA;QAEA,MAAMO,gBAAgB,GAAGP,wBAAwB,CAACQ,GAAzB,CAA6B,CAAC,E,IAAErE,EAAF,CAAA,E,OAAMsE,KAAAA,CAAAA,EAAP,GAAmB;YACvE,OAAO;gBAACtE,EAAD;gBAAKsE,KAAK,IAAIX,WAAJ,CAAV;aAAP,CAAA;SADuB,CAAzB,AAEC;QACD,MAAMY,oBAAoB,GAAGC,MAAM,CAACC,WAAP,CAAmBL,gBAAnB,CAA7B,AAAA;QACA,MAAMM,mBAAmB,GAAGF,MAAM,CAACG,MAAP,CAAcJ,oBAAd,CAAA,CAAoCK,IAApC,CAAyCC,OAAzC,CAA5B,AAAA;QACA,MAAMC,cAAc,GAAGJ,mBAAvB,AAAA;QACAtB,OAAO,CAAC2B,iBAAR,CAA0BD,cAAc,GAAGE,6CAAH,GAA6B,EAArE,CAAA5B,CAAAA;QACA,MAAME,eAAe,GAAGC,2CAAqB,CAACH,OAAO,CAACnE,QAAT,CAA7C,AAAA;QACA+D,qBAAqB,CAAChB,IAAD,EAAOsB,eAAP,CAArB,CAAAN;QACAC,yBAAyB,CAACjB,IAAD,EAAOuC,oBAAP,CAAzB,CAzCqC,CA2CrC,4FAFAtB;QAGA,wFAAA;QAEA,IAAI,CAACyB,mBAAD,IAAwBZ,wBAAwB,CAACmB,MAAzB,GAAkC,CAA9D,EAAiE;YAC/D,MAAMC,oBAAoB,GAAGpB,wBAAwB,CAACO,GAAzB,CAA6B,CAAC,E,IAAErE,EAAF,CAAA,E,OAAMsE,KAAAA,CAAAA,EAAP,GACxDA,KAAK,IAAIX,WAAJ,CAAL,CAAsBwB,IAAtB,CAA4BC,CAAAA,OAAD,GAAa;wBAACpF,EAAD;wBAAKoF,OAAL;qBAAxC;gBAAA,CAD2B;YAAA,CAA7B,AAA2D;YAG3D,MAAMC,iBAAiB,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYL,oBAAZ,CAAhC,AAAA;YACA,MAAMM,qBAAqB,GAAGhB,MAAM,CAACC,WAAP,CAAmBY,iBAAnB,CAA9B,AAAA;YACA,MAAMI,oBAAoB,GAAGjB,MAAM,CAACG,MAAP,CAAca,qBAAd,CAAA,CAAqCZ,IAArC,CAA0CC,OAA1C,CAA7B,AAAA;YACA,MAAMC,cAAc,GAAGW,oBAAvB,AAAA;YACArC,OAAO,CAAC2B,iBAAR,CAA0BD,cAAc,GAAGE,6CAAH,GAA6B,EAArE,CAAA5B,CAAAA;YACA,MAAME,eAAe,GAAGC,2CAAqB,CAACH,OAAO,CAACnE,QAAT,CAA7C,AAAA;YACA+D,qBAAqB,CAAChB,IAAD,EAAOsB,eAAP,CAArB,CAAAN;YACAC,yBAAyB,CAACjB,IAAD,EAAOwD,qBAAP,CAAzB,CAAAvC;SACD;KA3DyB,EA6D5B;QAACF,oBAAD;QAAuBf,IAAvB;QAA6BiB,yBAA7B;QAAwDD,qBAAxD;KA7D4B,CAA9B,AA4DG;IAIH3F,gBAAA,CAAgB,IAAM;QACpB,MAAM+F,OAAO,GAAGP,GAAG,CAAC8C,OAApB,AAAA;QACA,IAAIvC,OAAJ,EAAa;YACX,qGAAA;YACA,2GAAA;YACA,MAAMwC,YAAY,GAAG,IAAMzC,qBAAqB,CAACC,OAAD,CAAhD;YAAA;YACAA,OAAO,CAACyC,gBAAR,CAAyB,QAAzB,EAAmCD,YAAnC,CAAAxC,CAAAA;YACA,OAAO,IAAMA,OAAO,CAAC0C,mBAAR,CAA4B,QAA5B,EAAsCF,YAAtC,CAAb;YAAA,CAAA;SACD;KARH,EASG;QAACzC,qBAAD;KATH,CASC,CAAA;IAED,MAAM4C,oBAAoB,GAAG1I,kBAAA,CAAkB,IAAM;QACnD,MAAM+F,OAAO,GAAGP,GAAG,CAAC8C,OAApB,AAAA;QACA,IAAIvC,OAAJ,EAAa;YACXA,OAAO,CAAC2B,iBAAR,CAA0B,EAA1B,CAAA3B,CAAAA;YACAF,sBAAsB,CAAClB,IAAD,CAAtB,CAAAkB;SACD;KAL0B,EAM1B;QAAClB,IAAD;QAAOkB,sBAAP;KAN0B,CAA7B,AA1FsD,EAkGtD,mDAFC;IAGD7F,gBAAA,CAAgB,IAAM;QAAA,IAAA,YAAA,AAAA;QACpB,MAAMoG,IAAI,GAAA,AAAA,CAAA,YAAA,GAAGZ,GAAG,CAAC8C,OAAP,CAAA,KAAA,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAG,YAAA,CAAalC,IAA1B,AAAA;QACA,IAAIA,IAAJ,EAAU;YACRA,IAAI,CAACoC,gBAAL,CAAsB,OAAtB,EAA+BE,oBAA/B,CAAAtC,CAAAA;YACA,OAAO,IAAMA,IAAI,CAACqC,mBAAL,CAAyB,OAAzB,EAAkCC,oBAAlC,CAAb;YAAA,CAAA;SACD;KALH,EAMG;QAACA,oBAAD;KANH,CAAA,CAnGsD,CA2GtD,uEAFC;IAGD1I,gBAAA,CAAgB,IAAM;QACpB,MAAM+F,OAAO,GAAGP,GAAG,CAAC8C,OAApB,AAAA;QACA,MAAMlC,IAAI,GAAGL,OAAH,KAAA,IAAA,IAAGA,OAAH,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAGA,OAAO,CAAE4C,OAAT,CAAiB,MAAjB,CAAb,AAAA;QACA,IAAIvC,IAAI,IAAIjB,YAAY,CAACP,aAAzB,EAAwC;YACtC,MAAMb,mBAAmB,GAAGC,4CAAsB,CAACoC,IAAD,CAAlD,AAAA;YACA,IAAIrC,mBAAmB,KAAKgC,OAA5B,EAAqChC,mBAAmB,CAACI,KAApB,EAArC,CAAA;SACD;KANH,EAOG;QAACgB,YAAY,CAACP,aAAd;KAPH,CAOC,CAAA;IAED,MAAMhD,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmCmD,IAAnC,CAAjB,AAAA;IAEA,OAAA,aACE,CAAA,oBAAA,CAAC,gBAAD,CAAW,KAAX,EADF,oCAAA,CAAA;QAEI,YAAA,EAAYI,uCAAiB,CAACnD,QAAD,EAAWuD,YAAY,CAACP,aAAxB,CAD/B;QAEE,cAAA,EAAcI,yCAAmB,CAACpD,QAAD,EAAWuD,YAAY,CAACP,aAAxB,CAFnC;QAGE,cAAA,EAAcO,YAAY,CAACP,aAAb,GAA6B,IAA7B,GAAoC7C,SAHpD;QAIE,kBAAA,EAAkBwD,sBAAsB,CAAC9B,mBAAvB,CAA2CkB,IAA3C,CAJpB,CAKE,+EADA;QAJF;QAME,KAAK,EAAC,EAAN;KANF,EAOMW,YAPN,EAAA;QAQE,GAAG,EAAEG,WARP;QASE,EAAE,EAAE9C,GATN;QAUE,IAAI,EAAEgC,IAVR;QAWE,SAAS,EAAE1E,2BAAoB,CAACY,KAAK,CAACgD,SAAP,EAAmBC,CAAAA,KAAD,GAAW;YAC1D,MAAMiC,OAAO,GAAGjC,KAAK,CAACG,aAAtB,AAAA;YACA6B,qBAAqB,CAACC,OAAD,CAArB,CAAAD;SAF6B,CAXjC;QAeE,QAAQ,EAAE7F,2BAAoB,CAACY,KAAK,CAAC+H,QAAP,EAAkB9E,CAAAA,KAAD,GAAW;YACxD,yCAAA;YACA4E,oBAAoB,EAApBA,CAAAA;SAF4B,CAG7B;KAlBH,CAAA,CADF,CACE;CAzHc,CAApB,AA8IG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,kCAAA;CAAA,CAAA,CAAA;AAEA;;oGAEA,CAEA,MAAMG,sCAAgB,GAAG;IACvB,UADuB;IAEvB,iBAFuB;IAGvB,eAHuB;IAIvB,gBAJuB;IAKvB,cALuB;IAMvB,SANuB;IAOvB,UAPuB;IAQvB,cARuB;IASvB,OATuB;IAUvB,cAVuB;CAAzB,AAAA;AAcA,MAAMlB,6CAAuB,GAAG,yBAAhC,AAAA;AACA,MAAMmB,+CAAsE,GAAG;IAC7EC,QAAQ,EAAEpB,6CADmE;IAE7EqB,eAAe,EAAE,gDAF4D;IAG7EC,aAAa,EAAE,yBAH8D;IAI7EC,cAAc,EAAE,yBAJ6D;IAK7EC,YAAY,EAAE,6CAL+D;IAM7EC,OAAO,EAAE,wBANoE;IAO7EC,QAAQ,EAAE,yBAPmE;IAQ7EC,YAAY,EAAE,6CAR+D;IAS7EC,KAAK,EAAExH,SATsE;IAU7EyH,YAAY,EAAE,uBAAdA;CAVF,AAA+E;AAa/E,MAAMC,kCAAY,GAAG,aAArB,AAAA;AASA,MAAMnK,yCAAW,GAAA,aAAGU,CAAAA,iBAAA,CAClB,CAACa,KAAD,EAAuCC,YAAvC,GAAwD;IACtD,MAAM,E,OAAEmG,KAAF,CAAA,EAAStC,IAAI,EAAE+E,QAAf,CAAA,EAAyB,GAAGC,YAAH,EAAzB,GAA6C9I,KAAnD,AAAM;IACN,MAAMsE,YAAY,GAAGT,yCAAmB,CAAC+E,kCAAD,EAAe5I,KAAK,CAACE,WAArB,CAAxC,AAAA;IACA,MAAM4D,IAAI,GAAG+E,QAAH,KAAA,IAAA,IAAGA,QAAH,KAAA,KAAA,CAAA,GAAGA,QAAH,GAAevE,YAAY,CAACR,IAAtC,AAAA;IAEA,IAAIsC,KAAK,KAAKlF,SAAd,EACE,OAAA,aACE,CAAA,oBAAA,CAAC,qCAAD,EAAA,oCAAA,CAAA,EAAA,EAAqB4H,YAArB,EADF;QACqC,GAAG,EAAE7I,YAAxC;QAAsD,IAAI,EAAE6D,IAAN;KAAtD,CAAA,EACG9D,KAAK,CAAC+I,QAAN,IAAkBjC,6CADrB,CADF,CACE;SAIG,IAAI,OAAOV,KAAP,KAAiB,UAArB,EACL,OAAA,aAAO,CAAA,oBAAA,CAAC,uCAAD,EAAP,oCAAA,CAAA;QAA0B,KAAK,EAAEA,KAAP;KAAnB,EAAqC0C,YAArC,EAAA;QAAmD,GAAG,EAAE7I,YAAxD;QAAsE,IAAI,EAAE6D,IAAN;KAAtE,CAAA,CAAP,CAAO;SAEP,OAAA,aAAO,CAAA,oBAAA,CAAC,wCAAD,EAAP,oCAAA,CAAA;QAA2B,KAAK,EAAEsC,KAAP;KAApB,EAAsC0C,YAAtC,EAAA;QAAoD,GAAG,EAAE7I,YAAzD;QAAuE,IAAI,EAAE6D,IAAN;KAAvE,CAAA,CAAP,CAAO;CAfO,CAApB,AAiBG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,kCAAA;CAAA,CAAA,CAAA;AASA,MAAMkF,wCAAkB,GAAA,aAAG7J,CAAAA,iBAAA,CACzB,CAACa,KAAD,EAA8CC,YAA9C,GAA+D;IAC7D,MAAM,E,OAAEmG,KAAF,CAAA,cAAS6C,UAAU,GAAG,KAAtB,G,MAA6BnF,IAA7B,CAAA,E,UAAmCiF,QAAnC,CAAA,EAA6C,GAAGD,YAAH,EAA7C,GAAiE9I,KAAvE,AAAM;IACN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAACgJ,kCAAD,EAAeE,YAAY,CAAC5I,WAA5B,CAA9C,AAAA;IACA,MAAMa,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmCmD,IAAnC,CAAjB,AAAA;IACA,MAAMoD,OAAO,GAAG+B,UAAU,IAAIlI,CAAAA,QAAJ,KAAA,IAAA,IAAIA,QAAJ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAIA,QAAQ,CAAGqF,KAAH,CAAZ,CAAA,AAA1B,AAAA;IAEA,IAAIc,OAAJ,EACE,OAAA,aACE,CAAA,oBAAA,CAAC,qCAAD,EADF,oCAAA,CAAA;QACmB,GAAG,EAAEjH,YAAL;KAAjB,EAAwC6I,YAAxC,EAAA;QAAsD,IAAI,EAAEhF,IAAN;KAAtD,CAAA,EACGiF,QADH,KAAA,IAAA,IACGA,QADH,KAAA,KAAA,CAAA,GACGA,QADH,GACed,+CAAyB,CAAC7B,KAAD,CADxC,CADF,CACE;IAMJ,OAAO,IAAP,CAAA;CAfuB,CAA3B,AAgBG;AAUH,MAAM8C,uCAAiB,GAAA,aAAG/J,CAAAA,iBAAA,CACxB,CAACa,KAAD,EAA6CC,YAA7C,GAA8D;IAC5D,MAAM,E,OAAEmG,KAAF,CAAA,cAAS6C,UAAU,GAAG,KAAtB,G,MAA6BnF,IAA7B,CAAA,EAAmChC,EAAE,EAAEqH,MAAvC,CAAA,E,UAA+CJ,QAA/C,CAAA,EAAyD,GAAGD,YAAH,EAAzD,GAA6E9I,KAAnF,AAAM;IACN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAACgJ,kCAAD,EAAeE,YAAY,CAAC5I,WAA5B,CAA9C,AAAA;IACA,MAAMyE,GAAG,GAAGxF,aAAA,CAAuC,IAAvC,CAAZ,AAAA;IACA,MAAMyF,WAAW,GAAGvF,sBAAe,CAACY,YAAD,EAAe0E,GAAf,CAAnC,AAAA;IACA,MAAMyE,GAAG,GAAG7J,YAAK,EAAjB,AAAA;IACA,MAAMuC,EAAE,GAAGqH,MAAH,KAAA,IAAA,IAAGA,MAAH,KAAA,KAAA,CAAA,GAAGA,MAAH,GAAaC,GAArB,AAAA;IAEA,MAAMtD,kBAAkB,GAAG3G,cAAA,CAAc,IAAO,CAAA;Y,IAAE2C,EAAF;Y,OAAMsE,KAAAA;SAAb,CAAA;IAAd,EAAqC;QAACtE,EAAD;QAAKsE,KAAL;KAArC,CAA3B,AAAgD;IAChD,MAAM,E,8BAAEkD,4BAAF,CAAA,E,iCAAgCC,+BAAAA,CAAAA,EAAhC,GAAoEtF,iBAA1E,AAAM;IACN9E,gBAAA,CAAgB,IAAM;QACpBmK,4BAA4B,CAACxF,IAAD,EAAOgC,kBAAP,CAA5B,CAAAwD;QACA,OAAO,IAAMC,+BAA+B,CAACzF,IAAD,EAAOgC,kBAAkB,CAAChE,EAA1B,CAA5C;QAAA,CAAA;KAFF,EAGG;QAACgE,kBAAD;QAAqBhC,IAArB;QAA2BwF,4BAA3B;QAAyDC,+BAAzD;KAHH,CAGC,CAAA;IAED,MAAMxI,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmCmD,IAAnC,CAAjB,AAAA;IACA,MAAM5B,YAAY,GAAG+B,iBAAiB,CAACjC,oBAAlB,CAAuC8B,IAAvC,CAArB,AAAA;IACA,MAAM0F,sBAAsB,GAAGtH,YAAY,CAACJ,EAAD,CAA3C,AAAA;IACA,MAAMoF,OAAO,GACX+B,UAAU,IAAKlI,QAAQ,IAAI,CAACoE,qCAAe,CAACpE,QAAD,CAA5B,IAA0CyI,sBAD3D,AAAA;IAGA,IAAItC,OAAJ,EACE,OAAA,aACE,CAAA,oBAAA,CAAC,qCAAD,EADF,oCAAA,CAAA;QACmB,EAAE,EAAEpF,EAArB;QAAyB,GAAG,EAAE8C,WAAL;KAAzB,EAA+CkE,YAA/C,EAAA;QAA6D,IAAI,EAAEhF,IAAN;KAA7D,CAAA,EACGiF,QADH,KAAA,IAAA,IACGA,QADH,KAAA,KAAA,CAAA,GACGA,QADH,GACejC,6CADf,CADF,CACE;IAMJ,OAAO,IAAP,CAAA;CA9BsB,CAA1B,AA+BG;AASH,MAAM2C,qCAAe,GAAA,aAAGtK,CAAAA,iBAAA,CACtB,CAACa,KAAD,EAA2CC,YAA3C,GAA4D;IAC1D,MAAM,E,aAAEC,WAAF,CAAA,EAAe4B,EAAE,EAAEqH,MAAnB,CAAA,E,MAA2BrF,IAA3B,CAAA,EAAiC,GAAGgF,YAAH,EAAjC,GAAqD9I,KAA3D,AAAM;IACN,MAAM0E,sBAAsB,GAAG5E,+CAAyB,CAAC8I,kCAAD,EAAe1I,WAAf,CAAxD,AAAA;IACA,MAAMkJ,GAAG,GAAG7J,YAAK,EAAjB,AAAA;IACA,MAAMuC,EAAE,GAAGqH,MAAH,KAAA,IAAA,IAAGA,MAAH,KAAA,KAAA,CAAA,GAAGA,MAAH,GAAaC,GAArB,AAAA;IAEA,MAAM,E,qBAAEM,mBAAF,CAAA,E,wBAAuBC,sBAAAA,CAAAA,EAAvB,GAAkDjF,sBAAxD,AAAM;IACNvF,gBAAA,CAAgB,IAAM;QACpBuK,mBAAmB,CAAC5F,IAAD,EAAOhC,EAAP,CAAnB,CAAA4H;QACA,OAAO,IAAMC,sBAAsB,CAAC7F,IAAD,EAAOhC,EAAP,CAAnC;QAAA,CAAA;KAFF,EAGG;QAACgC,IAAD;QAAOhC,EAAP;QAAW4H,mBAAX;QAAgCC,sBAAhC;KAHH,CAGC,CAAA;IAED,OAAA,aAAO,CAAA,oBAAA,CAAC,gBAAD,CAAW,IAAX,EAAP,oCAAA,CAAA;QAAuB,EAAE,EAAE7H,EAAJ;KAAhB,EAA4BgH,YAA5B,EAAA;QAA0C,GAAG,EAAE7I,YAAL;KAA1C,CAAA,CAAP,CAAO;CAba,CAAxB,AAcG;AAGH;;oGAEA,CAEA,MAAM2J,yCAAmB,GAAG,mBAA5B,AAAA;AAOA,MAAMlL,yCAAiB,GAAIsB,CAAAA,KAAD,GAAgD;IACxE,MAAM,E,aAAEE,WAAF,CAAA,EAAe4D,IAAI,EAAE+E,QAArB,CAAA,E,UAA+BE,QAAAA,CAAAA,EAA/B,GAA4C/I,KAAlD,AAAM;IACN,MAAMiE,iBAAiB,GAAGrE,0CAAoB,CAACgK,yCAAD,EAAsB1J,WAAtB,CAA9C,AAAA;IACA,MAAMoE,YAAY,GAAGT,yCAAmB,CAAC+F,yCAAD,EAAsB1J,WAAtB,CAAxC,AAAA;IACA,MAAM4D,IAAI,GAAG+E,QAAH,KAAA,IAAA,IAAGA,QAAH,KAAA,KAAA,CAAA,GAAGA,QAAH,GAAevE,YAAY,CAACR,IAAtC,AAAA;IACA,MAAM/C,QAAQ,GAAGkD,iBAAiB,CAACtD,gBAAlB,CAAmCmD,IAAnC,CAAjB,AAAA;IACA,OAAA,aAAO,CAAA,oBAAA,CAAA,eAAA,EAAA,IAAA,EAAGiF,QAAQ,CAAChI,QAAD,CAAX,CAAP,CAAA;CANF,AAOC;AAED,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,yCAAA;CAAA,CAAA,CAAA;AAEA;;oGAEA,CAEA,MAAM8I,iCAAW,GAAG,YAApB,AAAA;AAMA,MAAMlL,yCAAU,GAAA,aAAGQ,CAAAA,iBAAA,CACjB,CAACa,KAAD,EAAsCC,YAAtC,GAAuD;IACrD,MAAM,E,aAAEC,WAAF,CAAA,EAAe,GAAG4J,WAAH,EAAf,GAAkC9J,KAAxC,AAAM;IACN,OAAA,aAAO,CAAA,oBAAA,CAAC,gBAAD,CAAW,MAAX,EAAP,oCAAA,CAAA;QAAyB,IAAI,EAAC,QAAL;KAAlB,EAAoC8J,WAApC,EAAA;QAAiD,GAAG,EAAE7J,YAAL;KAAjD,CAAA,CAAP,CAAO;CAHQ,CAAnB,AAIG;AAGH,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,yCAAA,EAAA;IAAA,WAAA,EAAA,iCAAA;CAAA,CAAA,CAAA;AAEA,oGAAA,CAWA,SAASoF,2CAAT,CAA+BtE,QAA/B,EAAwD;IACtD,MAAMgJ,MAAW,GAAG,EAApB,AAAA;IACA,IAAK,MAAMC,GAAX,IAAkBjJ,QAAlB,CACEgJ,MAAM,CAACC,GAAD,CAAN,GAAcjJ,QAAQ,CAACiJ,GAAD,CAAtB,CAAAD;IAEF,OAAOA,MAAP,CAAA;CACD;AAED,SAASE,mCAAT,CAAuBC,OAAvB,EAA6D;IAC3D,OAAOA,OAAO,YAAYC,WAA1B,CAAA;CACD;AAED,SAASC,mCAAT,CAAuBF,OAAvB,EAA6E;IAC3E,OAAO,UAAA,IAAcA,OAArB,CAAA;CACD;AAED,SAASG,+BAAT,CAAmBnF,OAAnB,EAAyC;IACvC,OACEkF,mCAAa,CAAClF,OAAD,CAAb,IACCA,CAAAA,OAAO,CAACnE,QAAR,CAAiB2H,KAAjB,KAA2B,KAA3B,IAAoCxD,OAAO,CAACoF,YAAR,CAAqB,cAArB,CAAA,KAAyC,MAD9E,CAAA,AADF,CAAA;CAID;AAED,SAASnH,4CAAT,CAAgCoC,IAAhC,EAAgF;IAC9E,MAAMgF,QAAQ,GAAGhF,IAAI,CAACgF,QAAtB,AAAA;IACA,MAAM,CAACrH,mBAAD,CAAA,GAAwBL,KAAK,CAACC,IAAN,CAAWyH,QAAX,CAAA,CAAqB1I,MAArB,CAA4BoI,mCAA5B,CAAA,CAA2CpI,MAA3C,CAAkDwI,+BAAlD,CAA9B,AAAA;IACA,OAAOnH,mBAAP,CAAA;CACD;AAED,SAAS6C,+CAAT,CACEyE,KADF,EAEEC,IAFF,EAGoC;IAClC,OAAOD,KAAK,CAACpE,KAAN,CAAYsE,WAAZ,CAAwB5G,IAAxB,KAAiC,eAAjC,IAAoD6G,oCAAc,CAACH,KAAK,CAACpE,KAAP,EAAcqE,IAAd,CAAzE,CAAA;CACD;AAED,SAASxE,8CAAT,CAAkCuE,KAAlC,EAA8F;IAC5F,OAAOA,KAAK,CAACpE,KAAN,CAAYsE,WAAZ,CAAwB5G,IAAxB,KAAiC,UAAxC,CAAA;CACD;AAED,SAAS6G,oCAAT,CAAwBC,IAAxB,EAAwCH,IAAxC,EAA8D;IAC5D,OAAOG,IAAI,IAAIH,IAAJ,CAAJ,YAAyBrD,OAAhC,CAAA;CACD;AAED,SAASjC,qCAAT,CAAyBpE,QAAzB,EAAkD;IAChD,IAAI8J,KAAK,GAAG,KAAZ,AAAA;IACA,IAAK,MAAMC,WAAX,IAA0B/J,QAA1B,CAAoC;QAClC,MAAMiJ,GAAG,GAAGc,WAAZ,AAAA;QACA,IAAId,GAAG,KAAK,OAAR,IAAmBA,GAAG,KAAK,aAA3B,IAA4CjJ,QAAQ,CAACiJ,GAAD,CAAxD,EAA+D;YAC7Da,KAAK,GAAG,IAAR,CAAAA;YACA,MAAA;SACD;KACF;IACD,OAAOA,KAAP,CAAA;CACD;AAED,SAAS3G,uCAAT,CAA2BnD,QAA3B,EAAgEgD,aAAhE,EAAwF;IACtF,IAAI,AAAAhD,CAAAA,QAAQ,KAAA,IAAR,IAAAA,QAAQ,KAAA,KAAA,CAAR,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAE2H,KAAV,CAAA,KAAoB,IAApB,IAA4B,CAAC3E,aAAjC,EAAgD,OAAO,IAAP,CAAhD;IACA,OAAO7C,SAAP,CAAA;CACD;AACD,SAASiD,yCAAT,CAA6BpD,QAA7B,EAAkEgD,aAAlE,EAA0F;IACxF,IAAI,AAAAhD,CAAAA,QAAQ,KAAA,IAAR,IAAAA,QAAQ,KAAA,KAAA,CAAR,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAE2H,KAAV,CAAA,KAAoB,KAApB,IAA6B3E,aAAjC,EAAgD,OAAO,IAAP,CAAhD;IACA,OAAO7C,SAAP,CAAA;CACD;;ADjrBD","sources":["packages/react/form/src/index.ts","packages/react/form/src/Form.tsx"],"sourcesContent":["export {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './Form';\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n} from './Form';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Label } from '@radix-ui/react-label';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps<P> = P & { __scopeForm?: Scope };\nconst [createFormContext, createFormScope] = createContextScope('Form');\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\nconst FORM_NAME = 'Form';\n\ntype ValidityMap = { [fieldName: string]: ValidityState | undefined };\ntype CustomMatcherEntriesMap = { [fieldName: string]: CustomMatcherEntry[] };\ntype CustomErrorsMap = { [fieldName: string]: Record<string, boolean> };\n\ntype ValidationContextValue = {\n getFieldValidity(fieldName: string): ValidityState | undefined;\n onFieldValidityChange(fieldName: string, validity: ValidityState): void;\n\n getFieldCustomMatcherEntries(fieldName: string): CustomMatcherEntry[];\n onFieldCustomMatcherEntryAdd(fieldName: string, matcherEntry: CustomMatcherEntry): void;\n onFieldCustomMatcherEntryRemove(fieldName: string, matcherEntryId: string): void;\n\n getFieldCustomErrors(fieldName: string): Record<string, boolean>;\n onFieldCustomErrorsChange(fieldName: string, errors: Record<string, boolean>): void;\n\n onFieldValiditionClear(fieldName: string): void;\n};\nconst [ValidationProvider, useValidationContext] =\n createFormContext<ValidationContextValue>(FORM_NAME);\n\ntype MessageIdsMap = { [fieldName: string]: Set<string> };\n\ntype AriaDescriptionContextValue = {\n onFieldMessageIdAdd(fieldName: string, id: string): void;\n onFieldMessageIdRemove(fieldName: string, id: string): void;\n getFieldDescription(fieldName: string): string | undefined;\n};\nconst [AriaDescriptionProvider, useAriaDescriptionContext] =\n createFormContext<AriaDescriptionContextValue>(FORM_NAME);\n\ntype FormElement = React.ElementRef<typeof Primitive.form>;\ntype PrimitiveFormProps = Radix.ComponentPropsWithoutRef<typeof Primitive.form>;\ninterface FormProps extends PrimitiveFormProps {\n onClearServerErrors?(): void;\n}\n\nconst Form = React.forwardRef<FormElement, FormProps>(\n (props: ScopedProps<FormProps>, forwardedRef) => {\n const { __scopeForm, onClearServerErrors = () => {}, ...rootProps } = props;\n const formRef = React.useRef<HTMLFormElement>(null);\n const composedFormRef = useComposedRefs(forwardedRef, formRef);\n\n // native validity per field\n const [validityMap, setValidityMap] = React.useState<ValidityMap>({});\n const getFieldValidity: ValidationContextValue['getFieldValidity'] = React.useCallback(\n (fieldName) => validityMap[fieldName],\n [validityMap]\n );\n const handleFieldValidityChange: ValidationContextValue['onFieldValidityChange'] =\n React.useCallback(\n (fieldName, validity) =>\n setValidityMap((prevValidityMap) => ({\n ...prevValidityMap,\n [fieldName]: { ...(prevValidityMap[fieldName] ?? {}), ...validity },\n })),\n []\n );\n const handleFieldValiditionClear: ValidationContextValue['onFieldValiditionClear'] =\n React.useCallback((fieldName) => {\n setValidityMap((prevValidityMap) => ({ ...prevValidityMap, [fieldName]: undefined }));\n setCustomErrorsMap((prevCustomErrorsMap) => ({ ...prevCustomErrorsMap, [fieldName]: {} }));\n }, []);\n\n // custom matcher entries per field\n const [customMatcherEntriesMap, setCustomMatcherEntriesMap] =\n React.useState<CustomMatcherEntriesMap>({});\n const getFieldCustomMatcherEntries: ValidationContextValue['getFieldCustomMatcherEntries'] =\n React.useCallback(\n (fieldName) => customMatcherEntriesMap[fieldName] ?? [],\n [customMatcherEntriesMap]\n );\n const handleFieldCustomMatcherAdd: ValidationContextValue['onFieldCustomMatcherEntryAdd'] =\n React.useCallback((fieldName, matcherEntry) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: [...(prevCustomMatcherEntriesMap[fieldName] ?? []), matcherEntry],\n }));\n }, []);\n const handleFieldCustomMatcherRemove: ValidationContextValue['onFieldCustomMatcherEntryRemove'] =\n React.useCallback((fieldName, matcherEntryId) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: (prevCustomMatcherEntriesMap[fieldName] ?? []).filter(\n (matcherEntry) => matcherEntry.id !== matcherEntryId\n ),\n }));\n }, []);\n\n // custom errors per field\n const [customErrorsMap, setCustomErrorsMap] = React.useState<CustomErrorsMap>({});\n const getFieldCustomErrors: ValidationContextValue['getFieldCustomErrors'] = React.useCallback(\n (fieldName) => customErrorsMap[fieldName] ?? {},\n [customErrorsMap]\n );\n const handleFieldCustomErrorsChange: ValidationContextValue['onFieldCustomErrorsChange'] =\n React.useCallback((fieldName, customErrors) => {\n setCustomErrorsMap((prevCustomErrorsMap) => ({\n ...prevCustomErrorsMap,\n [fieldName]: { ...(prevCustomErrorsMap[fieldName] ?? {}), ...customErrors },\n }));\n }, []);\n\n // messageIds per field\n const [messageIdsMap, setMessageIdsMap] = React.useState<MessageIdsMap>({});\n const handleFieldMessageIdAdd: AriaDescriptionContextValue['onFieldMessageIdAdd'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]).add(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const handleFieldMessageIdRemove: AriaDescriptionContextValue['onFieldMessageIdRemove'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]);\n fieldDescriptionIds.delete(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const getFieldDescription: AriaDescriptionContextValue['getFieldDescription'] =\n React.useCallback(\n (fieldName) => Array.from(messageIdsMap[fieldName] ?? []).join(' ') || undefined,\n [messageIdsMap]\n );\n\n return (\n <ValidationProvider\n scope={__scopeForm}\n getFieldValidity={getFieldValidity}\n onFieldValidityChange={handleFieldValidityChange}\n getFieldCustomMatcherEntries={getFieldCustomMatcherEntries}\n onFieldCustomMatcherEntryAdd={handleFieldCustomMatcherAdd}\n onFieldCustomMatcherEntryRemove={handleFieldCustomMatcherRemove}\n getFieldCustomErrors={getFieldCustomErrors}\n onFieldCustomErrorsChange={handleFieldCustomErrorsChange}\n onFieldValiditionClear={handleFieldValiditionClear}\n >\n <AriaDescriptionProvider\n scope={__scopeForm}\n onFieldMessageIdAdd={handleFieldMessageIdAdd}\n onFieldMessageIdRemove={handleFieldMessageIdRemove}\n getFieldDescription={getFieldDescription}\n >\n <Primitive.form\n {...rootProps}\n ref={composedFormRef}\n // focus first invalid control when the form is submitted\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const firstInvalidControl = getFirstInvalidControl(event.currentTarget);\n if (firstInvalidControl === event.target) firstInvalidControl.focus();\n\n // prevent default browser UI for form validation\n event.preventDefault();\n })}\n // clear server errors when the form is re-submitted\n onSubmit={composeEventHandlers(props.onSubmit, onClearServerErrors, {\n checkForDefaultPrevented: false,\n })}\n // clear server errors when the form is reset\n onReset={composeEventHandlers(props.onReset, onClearServerErrors)}\n />\n </AriaDescriptionProvider>\n </ValidationProvider>\n );\n }\n);\n\nForm.displayName = FORM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormField\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_NAME = 'FormField';\n\ntype FormFieldContextValue = {\n id: string;\n name: string;\n serverInvalid: boolean;\n};\nconst [FormFieldProvider, useFormFieldContext] =\n createFormContext<FormFieldContextValue>(FIELD_NAME);\n\ntype FormFieldElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FormFieldProps extends PrimitiveDivProps {\n name: string;\n serverInvalid?: boolean;\n}\n\nconst FormField = React.forwardRef<FormFieldElement, FormFieldProps>(\n (props: ScopedProps<FormFieldProps>, forwardedRef) => {\n const { __scopeForm, name, serverInvalid = false, ...fieldProps } = props;\n const validationContext = useValidationContext(FIELD_NAME, __scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const id = useId();\n\n return (\n <FormFieldProvider scope={__scopeForm} id={id} name={name} serverInvalid={serverInvalid}>\n <Primitive.div\n data-valid={getValidAttribute(validity, serverInvalid)}\n data-invalid={getInvalidAttribute(validity, serverInvalid)}\n {...fieldProps}\n ref={forwardedRef}\n />\n </FormFieldProvider>\n );\n }\n);\n\nFormField.displayName = FIELD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'FormLabel';\n\ntype FormLabelElement = React.ElementRef<typeof Label>;\ntype LabelProps = Radix.ComponentPropsWithoutRef<typeof Label>;\ninterface FormLabelProps extends LabelProps {}\n\nconst FormLabel = React.forwardRef<FormLabelElement, FormLabelProps>(\n (props: ScopedProps<FormLabelProps>, forwardedRef) => {\n const { __scopeForm, ...labelProps } = props;\n const validationContext = useValidationContext(LABEL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(LABEL_NAME, __scopeForm);\n const htmlFor = labelProps.htmlFor || fieldContext.id;\n const validity = validationContext.getFieldValidity(fieldContext.name);\n\n return (\n <Label\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n {...labelProps}\n ref={forwardedRef}\n htmlFor={htmlFor}\n />\n );\n }\n);\n\nFormLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormControl\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTROL_NAME = 'FormControl';\n\ntype FormControlElement = React.ElementRef<typeof Primitive.input>;\ntype PrimitiveInputProps = Radix.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface FormControlProps extends PrimitiveInputProps {}\n\nconst FormControl = React.forwardRef<FormControlElement, FormControlProps>(\n (props: ScopedProps<FormControlProps>, forwardedRef) => {\n const { __scopeForm, ...controlProps } = props;\n\n const validationContext = useValidationContext(CONTROL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(CONTROL_NAME, __scopeForm);\n const ariaDescriptionContext = useAriaDescriptionContext(CONTROL_NAME, __scopeForm);\n\n const ref = React.useRef<FormControlElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const name = controlProps.name || fieldContext.name;\n const id = controlProps.id || fieldContext.id;\n const customMatcherEntries = validationContext.getFieldCustomMatcherEntries(name);\n\n const { onFieldValidityChange, onFieldCustomErrorsChange, onFieldValiditionClear } =\n validationContext;\n const updateControlValidity = React.useCallback(\n async (control: FormControlElement) => {\n //------------------------------------------------------------------------------------------\n // 1. first, if we have built-in errors we stop here\n\n if (hasBuiltInError(control.validity)) {\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n return;\n }\n\n //------------------------------------------------------------------------------------------\n // 2. then gather the form data to give to custom matchers for cross-comparisons\n\n const formData = control.form ? new FormData(control.form) : new FormData();\n const matcherArgs: CustomMatcherArgs = [control.value, formData];\n\n //------------------------------------------------------------------------------------------\n // 3. split sync and async custom matcher entries\n\n const syncCustomMatcherEntries: Array<SyncCustomMatcherEntry> = [];\n const ayncCustomMatcherEntries: Array<AsyncCustomMatcherEntry> = [];\n customMatcherEntries.forEach((customMatcherEntry) => {\n if (isAsyncCustomMatcherEntry(customMatcherEntry, matcherArgs)) {\n ayncCustomMatcherEntries.push(customMatcherEntry);\n } else if (isSyncCustomMatcherEntry(customMatcherEntry)) {\n syncCustomMatcherEntries.push(customMatcherEntry);\n }\n });\n\n //------------------------------------------------------------------------------------------\n // 4. run sync custom matchers and update control validity / internal validity + errors\n\n const syncCustomErrors = syncCustomMatcherEntries.map(({ id, match }) => {\n return [id, match(...matcherArgs)] as const;\n });\n const syncCustomErrorsById = Object.fromEntries(syncCustomErrors);\n const hasSyncCustomErrors = Object.values(syncCustomErrorsById).some(Boolean);\n const hasCustomError = hasSyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, syncCustomErrorsById);\n\n //------------------------------------------------------------------------------------------\n // 5. run async custom matchers and update control validity / internal validity + errors\n\n if (!hasSyncCustomErrors && ayncCustomMatcherEntries.length > 0) {\n const promisedCustomErrors = ayncCustomMatcherEntries.map(({ id, match }) =>\n match(...matcherArgs).then((matches) => [id, matches] as const)\n );\n const asyncCustomErrors = await Promise.all(promisedCustomErrors);\n const asyncCustomErrorsById = Object.fromEntries(asyncCustomErrors);\n const hasAsyncCustomErrors = Object.values(asyncCustomErrorsById).some(Boolean);\n const hasCustomError = hasAsyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, asyncCustomErrorsById);\n }\n },\n [customMatcherEntries, name, onFieldCustomErrorsChange, onFieldValidityChange]\n );\n\n React.useEffect(() => {\n const control = ref.current;\n if (control) {\n // We only want validate on change (native `change` event, not React's `onChange`). This is primarily\n // a UX decision, we don't want to validate on every keystroke and React's `onChange` is the `input` event.\n const handleChange = () => updateControlValidity(control);\n control.addEventListener('change', handleChange);\n return () => control.removeEventListener('change', handleChange);\n }\n }, [updateControlValidity]);\n\n const resetControlValidity = React.useCallback(() => {\n const control = ref.current;\n if (control) {\n control.setCustomValidity('');\n onFieldValiditionClear(name);\n }\n }, [name, onFieldValiditionClear]);\n\n // reset validity and errors when the form is reset\n React.useEffect(() => {\n const form = ref.current?.form;\n if (form) {\n form.addEventListener('reset', resetControlValidity);\n return () => form.removeEventListener('reset', resetControlValidity);\n }\n }, [resetControlValidity]);\n\n // focus first invalid control when fields are set as invalid by server\n React.useEffect(() => {\n const control = ref.current;\n const form = control?.closest('form');\n if (form && fieldContext.serverInvalid) {\n const firstInvalidControl = getFirstInvalidControl(form);\n if (firstInvalidControl === control) firstInvalidControl.focus();\n }\n }, [fieldContext.serverInvalid]);\n\n const validity = validationContext.getFieldValidity(name);\n\n return (\n <Primitive.input\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n aria-invalid={fieldContext.serverInvalid ? true : undefined}\n aria-describedby={ariaDescriptionContext.getFieldDescription(name)}\n // disable default browser behaviour of showing built-in error message on hover\n title=\"\"\n {...controlProps}\n ref={composedRef}\n id={id}\n name={name}\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const control = event.currentTarget;\n updateControlValidity(control);\n })}\n onChange={composeEventHandlers(props.onChange, (event) => {\n // reset validity when user changes value\n resetControlValidity();\n })}\n />\n );\n }\n);\n\nFormControl.displayName = CONTROL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormMessage\n * -----------------------------------------------------------------------------------------------*/\n\nconst validityMatchers = [\n 'badInput',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valid',\n 'valueMissing',\n] as const;\ntype ValidityMatcher = typeof validityMatchers[number];\n\nconst DEFAULT_INVALID_MESSAGE = 'This value is not valid';\nconst DEFAULT_BUILT_IN_MESSAGES: Record<ValidityMatcher, string | undefined> = {\n badInput: DEFAULT_INVALID_MESSAGE,\n patternMismatch: 'This value does not match the required pattern',\n rangeOverflow: 'This value is too large',\n rangeUnderflow: 'This value is too small',\n stepMismatch: 'This value does not match the required step',\n tooLong: 'This value is too long',\n tooShort: 'This value is too short',\n typeMismatch: 'This value does not match the required type',\n valid: undefined,\n valueMissing: 'This value is missing',\n};\n\nconst MESSAGE_NAME = 'FormMessage';\n\ntype FormMessageElement = FormMessageImplElement;\ninterface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {\n match?: ValidityMatcher | CustomMatcher;\n forceMatch?: boolean;\n name?: string;\n}\n\nconst FormMessage = React.forwardRef<FormMessageElement, FormMessageProps>(\n (props: ScopedProps<FormMessageProps>, forwardedRef) => {\n const { match, name: nameProp, ...messageProps } = props;\n const fieldContext = useFormFieldContext(MESSAGE_NAME, props.__scopeForm);\n const name = nameProp ?? fieldContext.name;\n\n if (match === undefined) {\n return (\n <FormMessageImpl {...messageProps} ref={forwardedRef} name={name}>\n {props.children || DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n } else if (typeof match === 'function') {\n return <FormCustomMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n } else {\n return <FormBuiltInMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n }\n }\n);\n\nFormMessage.displayName = MESSAGE_NAME;\n\ntype FormBuiltInMessageElement = FormMessageImplElement;\ninterface FormBuiltInMessageProps extends FormMessageImplProps {\n match: ValidityMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormBuiltInMessage = React.forwardRef<FormBuiltInMessageElement, FormBuiltInMessageProps>(\n (props: ScopedProps<FormBuiltInMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const matches = forceMatch || validity?.[match];\n\n if (matches) {\n return (\n <FormMessageImpl ref={forwardedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_BUILT_IN_MESSAGES[match]}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormCustomMessageElement = React.ElementRef<typeof FormMessageImpl>;\ninterface FormCustomMessageProps extends Radix.ComponentPropsWithoutRef<typeof FormMessageImpl> {\n match: CustomMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormCustomMessage = React.forwardRef<FormCustomMessageElement, FormCustomMessageProps>(\n (props: ScopedProps<FormCustomMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, id: idProp, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const ref = React.useRef<FormCustomMessageElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const _id = useId();\n const id = idProp ?? _id;\n\n const customMatcherEntry = React.useMemo(() => ({ id, match }), [id, match]);\n const { onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove } = validationContext;\n React.useEffect(() => {\n onFieldCustomMatcherEntryAdd(name, customMatcherEntry);\n return () => onFieldCustomMatcherEntryRemove(name, customMatcherEntry.id);\n }, [customMatcherEntry, name, onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove]);\n\n const validity = validationContext.getFieldValidity(name);\n const customErrors = validationContext.getFieldCustomErrors(name);\n const hasMatchingCustomError = customErrors[id];\n const matches =\n forceMatch || (validity && !hasBuiltInError(validity) && hasMatchingCustomError);\n\n if (matches) {\n return (\n <FormMessageImpl id={id} ref={composedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormMessageImplElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface FormMessageImplProps extends PrimitiveSpanProps {\n name: string;\n}\n\nconst FormMessageImpl = React.forwardRef<FormMessageImplElement, FormMessageImplProps>(\n (props: ScopedProps<FormMessageImplProps>, forwardedRef) => {\n const { __scopeForm, id: idProp, name, ...messageProps } = props;\n const ariaDescriptionContext = useAriaDescriptionContext(MESSAGE_NAME, __scopeForm);\n const _id = useId();\n const id = idProp ?? _id;\n\n const { onFieldMessageIdAdd, onFieldMessageIdRemove } = ariaDescriptionContext;\n React.useEffect(() => {\n onFieldMessageIdAdd(name, id);\n return () => onFieldMessageIdRemove(name, id);\n }, [name, id, onFieldMessageIdAdd, onFieldMessageIdRemove]);\n\n return <Primitive.span id={id} {...messageProps} ref={forwardedRef} />;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * FormValidityState\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALIDITY_STATE_NAME = 'FormValidityState';\n\ninterface FormValidityStateProps {\n children(validity: ValidityState | undefined): React.ReactNode;\n name?: string;\n}\n\nconst FormValidityState = (props: ScopedProps<FormValidityStateProps>) => {\n const { __scopeForm, name: nameProp, children } = props;\n const validationContext = useValidationContext(VALIDITY_STATE_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(VALIDITY_STATE_NAME, __scopeForm);\n const name = nameProp ?? fieldContext.name;\n const validity = validationContext.getFieldValidity(name);\n return <>{children(validity)}</>;\n};\n\nFormValidityState.displayName = VALIDITY_STATE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormSubmit\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUBMIT_NAME = 'FormSubmit';\n\ntype FormSubmitElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface FormSubmitProps extends PrimitiveButtonProps {}\n\nconst FormSubmit = React.forwardRef<FormSubmitElement, FormSubmitProps>(\n (props: ScopedProps<FormSubmitProps>, forwardedRef) => {\n const { __scopeForm, ...submitProps } = props;\n return <Primitive.button type=\"submit\" {...submitProps} ref={forwardedRef} />;\n }\n);\n\nFormSubmit.displayName = SUBMIT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ValidityStateKey = keyof ValidityState;\ntype SyncCustomMatcher = (value: string, formData: FormData) => boolean;\ntype AsyncCustomMatcher = (value: string, formData: FormData) => Promise<boolean>;\ntype CustomMatcher = SyncCustomMatcher | AsyncCustomMatcher;\ntype CustomMatcherEntry = { id: string; match: CustomMatcher };\ntype SyncCustomMatcherEntry = { id: string; match: SyncCustomMatcher };\ntype AsyncCustomMatcherEntry = { id: string; match: AsyncCustomMatcher };\ntype CustomMatcherArgs = [string, FormData];\n\nfunction validityStateToObject(validity: ValidityState) {\n const object: any = {};\n for (const key in validity) {\n object[key] = validity[key as ValidityStateKey];\n }\n return object as Record<ValidityStateKey, boolean>;\n}\n\nfunction isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement;\n}\n\nfunction isFormControl(element: any): element is { validity: ValidityState } {\n return 'validity' in element;\n}\n\nfunction isInvalid(control: HTMLElement) {\n return (\n isFormControl(control) &&\n (control.validity.valid === false || control.getAttribute('aria-invalid') === 'true')\n );\n}\n\nfunction getFirstInvalidControl(form: HTMLFormElement): HTMLElement | undefined {\n const elements = form.elements;\n const [firstInvalidControl] = Array.from(elements).filter(isHTMLElement).filter(isInvalid);\n return firstInvalidControl;\n}\n\nfunction isAsyncCustomMatcherEntry(\n entry: CustomMatcherEntry,\n args: CustomMatcherArgs\n): entry is AsyncCustomMatcherEntry {\n return entry.match.constructor.name === 'AsyncFunction' || returnsPromise(entry.match, args);\n}\n\nfunction isSyncCustomMatcherEntry(entry: CustomMatcherEntry): entry is SyncCustomMatcherEntry {\n return entry.match.constructor.name === 'Function';\n}\n\nfunction returnsPromise(func: Function, args: Array<unknown>) {\n return func(...args) instanceof Promise;\n}\n\nfunction hasBuiltInError(validity: ValidityState) {\n let error = false;\n for (const validityKey in validity) {\n const key = validityKey as ValidityStateKey;\n if (key !== 'valid' && key !== 'customError' && validity[key]) {\n error = true;\n break;\n }\n }\n return error;\n}\n\nfunction getValidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === true && !serverInvalid) return true;\n return undefined;\n}\nfunction getInvalidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === false || serverInvalid) return true;\n return undefined;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Form as Root,\n FormField as Field,\n FormLabel as Label,\n FormControl as Control,\n FormMessage as Message,\n FormValidityState as ValidityState,\n FormSubmit as Submit,\n};\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n};\n"],"names":["createFormScope","Form","FormField","FormLabel","FormControl","FormMessage","FormValidityState","FormSubmit","Root","Field","Label","Control","Message","ValidityState","Submit","React","composeEventHandlers","useComposedRefs","createContextScope","useId","Primitive","createFormContext","FORM_NAME","ValidationProvider","useValidationContext","AriaDescriptionProvider","useAriaDescriptionContext","forwardRef","props","forwardedRef","__scopeForm","onClearServerErrors","rootProps","formRef","useRef","composedFormRef","validityMap","setValidityMap","useState","getFieldValidity","useCallback","fieldName","handleFieldValidityChange","validity","prevValidityMap","handleFieldValiditionClear","undefined","setCustomErrorsMap","prevCustomErrorsMap","customMatcherEntriesMap","setCustomMatcherEntriesMap","getFieldCustomMatcherEntries","handleFieldCustomMatcherAdd","matcherEntry","prevCustomMatcherEntriesMap","handleFieldCustomMatcherRemove","matcherEntryId","filter","id","customErrorsMap","getFieldCustomErrors","handleFieldCustomErrorsChange","customErrors","messageIdsMap","setMessageIdsMap","handleFieldMessageIdAdd","prevMessageIdsMap","fieldDescriptionIds","Set","add","handleFieldMessageIdRemove","delete","getFieldDescription","Array","from","join","onInvalid","event","firstInvalidControl","getFirstInvalidControl","currentTarget","target","focus","preventDefault","onSubmit","checkForDefaultPrevented","onReset","FIELD_NAME","FormFieldProvider","useFormFieldContext","name","serverInvalid","fieldProps","validationContext","getValidAttribute","getInvalidAttribute","LABEL_NAME","labelProps","fieldContext","htmlFor","CONTROL_NAME","controlProps","ariaDescriptionContext","ref","composedRef","customMatcherEntries","onFieldValidityChange","onFieldCustomErrorsChange","onFieldValiditionClear","updateControlValidity","control","hasBuiltInError","controlValidity","validityStateToObject","formData","form","FormData","matcherArgs","value","syncCustomMatcherEntries","ayncCustomMatcherEntries","forEach","customMatcherEntry","isAsyncCustomMatcherEntry","push","isSyncCustomMatcherEntry","syncCustomErrors","map","match","syncCustomErrorsById","Object","fromEntries","hasSyncCustomErrors","values","some","Boolean","hasCustomError","setCustomValidity","DEFAULT_INVALID_MESSAGE","length","promisedCustomErrors","then","matches","asyncCustomErrors","Promise","all","asyncCustomErrorsById","hasAsyncCustomErrors","useEffect","current","handleChange","addEventListener","removeEventListener","resetControlValidity","closest","onChange","validityMatchers","DEFAULT_BUILT_IN_MESSAGES","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valid","valueMissing","MESSAGE_NAME","nameProp","messageProps","children","FormBuiltInMessage","forceMatch","FormCustomMessage","idProp","_id","useMemo","onFieldCustomMatcherEntryAdd","onFieldCustomMatcherEntryRemove","hasMatchingCustomError","FormMessageImpl","onFieldMessageIdAdd","onFieldMessageIdRemove","VALIDITY_STATE_NAME","SUBMIT_NAME","submitProps","object","key","isHTMLElement","element","HTMLElement","isFormControl","isInvalid","getAttribute","elements","entry","args","constructor","returnsPromise","func","error","validityKey"],"version":3,"file":"index.module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/form/src/index.ts","packages/react/form/src/Form.tsx"],"sourcesContent":["export {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './Form';\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n} from './Form';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Label as LabelPrimitive } from '@radix-ui/react-label';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps<P> = P & { __scopeForm?: Scope };\nconst [createFormContext, createFormScope] = createContextScope('Form');\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\nconst FORM_NAME = 'Form';\n\ntype ValidityMap = { [fieldName: string]: ValidityState | undefined };\ntype CustomMatcherEntriesMap = { [fieldName: string]: CustomMatcherEntry[] };\ntype CustomErrorsMap = { [fieldName: string]: Record<string, boolean> };\n\ntype ValidationContextValue = {\n getFieldValidity(fieldName: string): ValidityState | undefined;\n onFieldValidityChange(fieldName: string, validity: ValidityState): void;\n\n getFieldCustomMatcherEntries(fieldName: string): CustomMatcherEntry[];\n onFieldCustomMatcherEntryAdd(fieldName: string, matcherEntry: CustomMatcherEntry): void;\n onFieldCustomMatcherEntryRemove(fieldName: string, matcherEntryId: string): void;\n\n getFieldCustomErrors(fieldName: string): Record<string, boolean>;\n onFieldCustomErrorsChange(fieldName: string, errors: Record<string, boolean>): void;\n\n onFieldValiditionClear(fieldName: string): void;\n};\nconst [ValidationProvider, useValidationContext] =\n createFormContext<ValidationContextValue>(FORM_NAME);\n\ntype MessageIdsMap = { [fieldName: string]: Set<string> };\n\ntype AriaDescriptionContextValue = {\n onFieldMessageIdAdd(fieldName: string, id: string): void;\n onFieldMessageIdRemove(fieldName: string, id: string): void;\n getFieldDescription(fieldName: string): string | undefined;\n};\nconst [AriaDescriptionProvider, useAriaDescriptionContext] =\n createFormContext<AriaDescriptionContextValue>(FORM_NAME);\n\ntype FormElement = React.ElementRef<typeof Primitive.form>;\ntype PrimitiveFormProps = Radix.ComponentPropsWithoutRef<typeof Primitive.form>;\ninterface FormProps extends PrimitiveFormProps {\n onClearServerErrors?(): void;\n}\n\nconst Form = React.forwardRef<FormElement, FormProps>(\n (props: ScopedProps<FormProps>, forwardedRef) => {\n const { __scopeForm, onClearServerErrors = () => {}, ...rootProps } = props;\n const formRef = React.useRef<HTMLFormElement>(null);\n const composedFormRef = useComposedRefs(forwardedRef, formRef);\n\n // native validity per field\n const [validityMap, setValidityMap] = React.useState<ValidityMap>({});\n const getFieldValidity: ValidationContextValue['getFieldValidity'] = React.useCallback(\n (fieldName) => validityMap[fieldName],\n [validityMap]\n );\n const handleFieldValidityChange: ValidationContextValue['onFieldValidityChange'] =\n React.useCallback(\n (fieldName, validity) =>\n setValidityMap((prevValidityMap) => ({\n ...prevValidityMap,\n [fieldName]: { ...(prevValidityMap[fieldName] ?? {}), ...validity },\n })),\n []\n );\n const handleFieldValiditionClear: ValidationContextValue['onFieldValiditionClear'] =\n React.useCallback((fieldName) => {\n setValidityMap((prevValidityMap) => ({ ...prevValidityMap, [fieldName]: undefined }));\n setCustomErrorsMap((prevCustomErrorsMap) => ({ ...prevCustomErrorsMap, [fieldName]: {} }));\n }, []);\n\n // custom matcher entries per field\n const [customMatcherEntriesMap, setCustomMatcherEntriesMap] =\n React.useState<CustomMatcherEntriesMap>({});\n const getFieldCustomMatcherEntries: ValidationContextValue['getFieldCustomMatcherEntries'] =\n React.useCallback(\n (fieldName) => customMatcherEntriesMap[fieldName] ?? [],\n [customMatcherEntriesMap]\n );\n const handleFieldCustomMatcherAdd: ValidationContextValue['onFieldCustomMatcherEntryAdd'] =\n React.useCallback((fieldName, matcherEntry) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: [...(prevCustomMatcherEntriesMap[fieldName] ?? []), matcherEntry],\n }));\n }, []);\n const handleFieldCustomMatcherRemove: ValidationContextValue['onFieldCustomMatcherEntryRemove'] =\n React.useCallback((fieldName, matcherEntryId) => {\n setCustomMatcherEntriesMap((prevCustomMatcherEntriesMap) => ({\n ...prevCustomMatcherEntriesMap,\n [fieldName]: (prevCustomMatcherEntriesMap[fieldName] ?? []).filter(\n (matcherEntry) => matcherEntry.id !== matcherEntryId\n ),\n }));\n }, []);\n\n // custom errors per field\n const [customErrorsMap, setCustomErrorsMap] = React.useState<CustomErrorsMap>({});\n const getFieldCustomErrors: ValidationContextValue['getFieldCustomErrors'] = React.useCallback(\n (fieldName) => customErrorsMap[fieldName] ?? {},\n [customErrorsMap]\n );\n const handleFieldCustomErrorsChange: ValidationContextValue['onFieldCustomErrorsChange'] =\n React.useCallback((fieldName, customErrors) => {\n setCustomErrorsMap((prevCustomErrorsMap) => ({\n ...prevCustomErrorsMap,\n [fieldName]: { ...(prevCustomErrorsMap[fieldName] ?? {}), ...customErrors },\n }));\n }, []);\n\n // messageIds per field\n const [messageIdsMap, setMessageIdsMap] = React.useState<MessageIdsMap>({});\n const handleFieldMessageIdAdd: AriaDescriptionContextValue['onFieldMessageIdAdd'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]).add(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const handleFieldMessageIdRemove: AriaDescriptionContextValue['onFieldMessageIdRemove'] =\n React.useCallback((fieldName, id) => {\n setMessageIdsMap((prevMessageIdsMap) => {\n const fieldDescriptionIds = new Set(prevMessageIdsMap[fieldName]);\n fieldDescriptionIds.delete(id);\n return { ...prevMessageIdsMap, [fieldName]: fieldDescriptionIds };\n });\n }, []);\n const getFieldDescription: AriaDescriptionContextValue['getFieldDescription'] =\n React.useCallback(\n (fieldName) => Array.from(messageIdsMap[fieldName] ?? []).join(' ') || undefined,\n [messageIdsMap]\n );\n\n return (\n <ValidationProvider\n scope={__scopeForm}\n getFieldValidity={getFieldValidity}\n onFieldValidityChange={handleFieldValidityChange}\n getFieldCustomMatcherEntries={getFieldCustomMatcherEntries}\n onFieldCustomMatcherEntryAdd={handleFieldCustomMatcherAdd}\n onFieldCustomMatcherEntryRemove={handleFieldCustomMatcherRemove}\n getFieldCustomErrors={getFieldCustomErrors}\n onFieldCustomErrorsChange={handleFieldCustomErrorsChange}\n onFieldValiditionClear={handleFieldValiditionClear}\n >\n <AriaDescriptionProvider\n scope={__scopeForm}\n onFieldMessageIdAdd={handleFieldMessageIdAdd}\n onFieldMessageIdRemove={handleFieldMessageIdRemove}\n getFieldDescription={getFieldDescription}\n >\n <Primitive.form\n {...rootProps}\n ref={composedFormRef}\n // focus first invalid control when the form is submitted\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const firstInvalidControl = getFirstInvalidControl(event.currentTarget);\n if (firstInvalidControl === event.target) firstInvalidControl.focus();\n\n // prevent default browser UI for form validation\n event.preventDefault();\n })}\n // clear server errors when the form is re-submitted\n onSubmit={composeEventHandlers(props.onSubmit, onClearServerErrors, {\n checkForDefaultPrevented: false,\n })}\n // clear server errors when the form is reset\n onReset={composeEventHandlers(props.onReset, onClearServerErrors)}\n />\n </AriaDescriptionProvider>\n </ValidationProvider>\n );\n }\n);\n\nForm.displayName = FORM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormField\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_NAME = 'FormField';\n\ntype FormFieldContextValue = {\n id: string;\n name: string;\n serverInvalid: boolean;\n};\nconst [FormFieldProvider, useFormFieldContext] =\n createFormContext<FormFieldContextValue>(FIELD_NAME);\n\ntype FormFieldElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FormFieldProps extends PrimitiveDivProps {\n name: string;\n serverInvalid?: boolean;\n}\n\nconst FormField = React.forwardRef<FormFieldElement, FormFieldProps>(\n (props: ScopedProps<FormFieldProps>, forwardedRef) => {\n const { __scopeForm, name, serverInvalid = false, ...fieldProps } = props;\n const validationContext = useValidationContext(FIELD_NAME, __scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const id = useId();\n\n return (\n <FormFieldProvider scope={__scopeForm} id={id} name={name} serverInvalid={serverInvalid}>\n <Primitive.div\n data-valid={getValidAttribute(validity, serverInvalid)}\n data-invalid={getInvalidAttribute(validity, serverInvalid)}\n {...fieldProps}\n ref={forwardedRef}\n />\n </FormFieldProvider>\n );\n }\n);\n\nFormField.displayName = FIELD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'FormLabel';\n\ntype FormLabelElement = React.ElementRef<typeof LabelPrimitive>;\ntype LabelProps = Radix.ComponentPropsWithoutRef<typeof LabelPrimitive>;\ninterface FormLabelProps extends LabelProps {}\n\nconst FormLabel = React.forwardRef<FormLabelElement, FormLabelProps>(\n (props: ScopedProps<FormLabelProps>, forwardedRef) => {\n const { __scopeForm, ...labelProps } = props;\n const validationContext = useValidationContext(LABEL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(LABEL_NAME, __scopeForm);\n const htmlFor = labelProps.htmlFor || fieldContext.id;\n const validity = validationContext.getFieldValidity(fieldContext.name);\n\n return (\n <LabelPrimitive\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n {...labelProps}\n ref={forwardedRef}\n htmlFor={htmlFor}\n />\n );\n }\n);\n\nFormLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormControl\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTROL_NAME = 'FormControl';\n\ntype FormControlElement = React.ElementRef<typeof Primitive.input>;\ntype PrimitiveInputProps = Radix.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface FormControlProps extends PrimitiveInputProps {}\n\nconst FormControl = React.forwardRef<FormControlElement, FormControlProps>(\n (props: ScopedProps<FormControlProps>, forwardedRef) => {\n const { __scopeForm, ...controlProps } = props;\n\n const validationContext = useValidationContext(CONTROL_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(CONTROL_NAME, __scopeForm);\n const ariaDescriptionContext = useAriaDescriptionContext(CONTROL_NAME, __scopeForm);\n\n const ref = React.useRef<FormControlElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const name = controlProps.name || fieldContext.name;\n const id = controlProps.id || fieldContext.id;\n const customMatcherEntries = validationContext.getFieldCustomMatcherEntries(name);\n\n const { onFieldValidityChange, onFieldCustomErrorsChange, onFieldValiditionClear } =\n validationContext;\n const updateControlValidity = React.useCallback(\n async (control: FormControlElement) => {\n //------------------------------------------------------------------------------------------\n // 1. first, if we have built-in errors we stop here\n\n if (hasBuiltInError(control.validity)) {\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n return;\n }\n\n //------------------------------------------------------------------------------------------\n // 2. then gather the form data to give to custom matchers for cross-comparisons\n\n const formData = control.form ? new FormData(control.form) : new FormData();\n const matcherArgs: CustomMatcherArgs = [control.value, formData];\n\n //------------------------------------------------------------------------------------------\n // 3. split sync and async custom matcher entries\n\n const syncCustomMatcherEntries: Array<SyncCustomMatcherEntry> = [];\n const ayncCustomMatcherEntries: Array<AsyncCustomMatcherEntry> = [];\n customMatcherEntries.forEach((customMatcherEntry) => {\n if (isAsyncCustomMatcherEntry(customMatcherEntry, matcherArgs)) {\n ayncCustomMatcherEntries.push(customMatcherEntry);\n } else if (isSyncCustomMatcherEntry(customMatcherEntry)) {\n syncCustomMatcherEntries.push(customMatcherEntry);\n }\n });\n\n //------------------------------------------------------------------------------------------\n // 4. run sync custom matchers and update control validity / internal validity + errors\n\n const syncCustomErrors = syncCustomMatcherEntries.map(({ id, match }) => {\n return [id, match(...matcherArgs)] as const;\n });\n const syncCustomErrorsById = Object.fromEntries(syncCustomErrors);\n const hasSyncCustomErrors = Object.values(syncCustomErrorsById).some(Boolean);\n const hasCustomError = hasSyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, syncCustomErrorsById);\n\n //------------------------------------------------------------------------------------------\n // 5. run async custom matchers and update control validity / internal validity + errors\n\n if (!hasSyncCustomErrors && ayncCustomMatcherEntries.length > 0) {\n const promisedCustomErrors = ayncCustomMatcherEntries.map(({ id, match }) =>\n match(...matcherArgs).then((matches) => [id, matches] as const)\n );\n const asyncCustomErrors = await Promise.all(promisedCustomErrors);\n const asyncCustomErrorsById = Object.fromEntries(asyncCustomErrors);\n const hasAsyncCustomErrors = Object.values(asyncCustomErrorsById).some(Boolean);\n const hasCustomError = hasAsyncCustomErrors;\n control.setCustomValidity(hasCustomError ? DEFAULT_INVALID_MESSAGE : '');\n const controlValidity = validityStateToObject(control.validity);\n onFieldValidityChange(name, controlValidity);\n onFieldCustomErrorsChange(name, asyncCustomErrorsById);\n }\n },\n [customMatcherEntries, name, onFieldCustomErrorsChange, onFieldValidityChange]\n );\n\n React.useEffect(() => {\n const control = ref.current;\n if (control) {\n // We only want validate on change (native `change` event, not React's `onChange`). This is primarily\n // a UX decision, we don't want to validate on every keystroke and React's `onChange` is the `input` event.\n const handleChange = () => updateControlValidity(control);\n control.addEventListener('change', handleChange);\n return () => control.removeEventListener('change', handleChange);\n }\n }, [updateControlValidity]);\n\n const resetControlValidity = React.useCallback(() => {\n const control = ref.current;\n if (control) {\n control.setCustomValidity('');\n onFieldValiditionClear(name);\n }\n }, [name, onFieldValiditionClear]);\n\n // reset validity and errors when the form is reset\n React.useEffect(() => {\n const form = ref.current?.form;\n if (form) {\n form.addEventListener('reset', resetControlValidity);\n return () => form.removeEventListener('reset', resetControlValidity);\n }\n }, [resetControlValidity]);\n\n // focus first invalid control when fields are set as invalid by server\n React.useEffect(() => {\n const control = ref.current;\n const form = control?.closest('form');\n if (form && fieldContext.serverInvalid) {\n const firstInvalidControl = getFirstInvalidControl(form);\n if (firstInvalidControl === control) firstInvalidControl.focus();\n }\n }, [fieldContext.serverInvalid]);\n\n const validity = validationContext.getFieldValidity(name);\n\n return (\n <Primitive.input\n data-valid={getValidAttribute(validity, fieldContext.serverInvalid)}\n data-invalid={getInvalidAttribute(validity, fieldContext.serverInvalid)}\n aria-invalid={fieldContext.serverInvalid ? true : undefined}\n aria-describedby={ariaDescriptionContext.getFieldDescription(name)}\n // disable default browser behaviour of showing built-in error message on hover\n title=\"\"\n {...controlProps}\n ref={composedRef}\n id={id}\n name={name}\n onInvalid={composeEventHandlers(props.onInvalid, (event) => {\n const control = event.currentTarget;\n updateControlValidity(control);\n })}\n onChange={composeEventHandlers(props.onChange, (event) => {\n // reset validity when user changes value\n resetControlValidity();\n })}\n />\n );\n }\n);\n\nFormControl.displayName = CONTROL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormMessage\n * -----------------------------------------------------------------------------------------------*/\n\nconst validityMatchers = [\n 'badInput',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valid',\n 'valueMissing',\n] as const;\ntype ValidityMatcher = typeof validityMatchers[number];\n\nconst DEFAULT_INVALID_MESSAGE = 'This value is not valid';\nconst DEFAULT_BUILT_IN_MESSAGES: Record<ValidityMatcher, string | undefined> = {\n badInput: DEFAULT_INVALID_MESSAGE,\n patternMismatch: 'This value does not match the required pattern',\n rangeOverflow: 'This value is too large',\n rangeUnderflow: 'This value is too small',\n stepMismatch: 'This value does not match the required step',\n tooLong: 'This value is too long',\n tooShort: 'This value is too short',\n typeMismatch: 'This value does not match the required type',\n valid: undefined,\n valueMissing: 'This value is missing',\n};\n\nconst MESSAGE_NAME = 'FormMessage';\n\ntype FormMessageElement = FormMessageImplElement;\ninterface FormMessageProps extends Omit<FormMessageImplProps, 'name'> {\n match?: ValidityMatcher | CustomMatcher;\n forceMatch?: boolean;\n name?: string;\n}\n\nconst FormMessage = React.forwardRef<FormMessageElement, FormMessageProps>(\n (props: ScopedProps<FormMessageProps>, forwardedRef) => {\n const { match, name: nameProp, ...messageProps } = props;\n const fieldContext = useFormFieldContext(MESSAGE_NAME, props.__scopeForm);\n const name = nameProp ?? fieldContext.name;\n\n if (match === undefined) {\n return (\n <FormMessageImpl {...messageProps} ref={forwardedRef} name={name}>\n {props.children || DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n } else if (typeof match === 'function') {\n return <FormCustomMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n } else {\n return <FormBuiltInMessage match={match} {...messageProps} ref={forwardedRef} name={name} />;\n }\n }\n);\n\nFormMessage.displayName = MESSAGE_NAME;\n\ntype FormBuiltInMessageElement = FormMessageImplElement;\ninterface FormBuiltInMessageProps extends FormMessageImplProps {\n match: ValidityMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormBuiltInMessage = React.forwardRef<FormBuiltInMessageElement, FormBuiltInMessageProps>(\n (props: ScopedProps<FormBuiltInMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const validity = validationContext.getFieldValidity(name);\n const matches = forceMatch || validity?.[match];\n\n if (matches) {\n return (\n <FormMessageImpl ref={forwardedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_BUILT_IN_MESSAGES[match]}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormCustomMessageElement = React.ElementRef<typeof FormMessageImpl>;\ninterface FormCustomMessageProps extends Radix.ComponentPropsWithoutRef<typeof FormMessageImpl> {\n match: CustomMatcher;\n forceMatch?: boolean;\n name: string;\n}\n\nconst FormCustomMessage = React.forwardRef<FormCustomMessageElement, FormCustomMessageProps>(\n (props: ScopedProps<FormCustomMessageProps>, forwardedRef) => {\n const { match, forceMatch = false, name, id: idProp, children, ...messageProps } = props;\n const validationContext = useValidationContext(MESSAGE_NAME, messageProps.__scopeForm);\n const ref = React.useRef<FormCustomMessageElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const _id = useId();\n const id = idProp ?? _id;\n\n const customMatcherEntry = React.useMemo(() => ({ id, match }), [id, match]);\n const { onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove } = validationContext;\n React.useEffect(() => {\n onFieldCustomMatcherEntryAdd(name, customMatcherEntry);\n return () => onFieldCustomMatcherEntryRemove(name, customMatcherEntry.id);\n }, [customMatcherEntry, name, onFieldCustomMatcherEntryAdd, onFieldCustomMatcherEntryRemove]);\n\n const validity = validationContext.getFieldValidity(name);\n const customErrors = validationContext.getFieldCustomErrors(name);\n const hasMatchingCustomError = customErrors[id];\n const matches =\n forceMatch || (validity && !hasBuiltInError(validity) && hasMatchingCustomError);\n\n if (matches) {\n return (\n <FormMessageImpl id={id} ref={composedRef} {...messageProps} name={name}>\n {children ?? DEFAULT_INVALID_MESSAGE}\n </FormMessageImpl>\n );\n }\n\n return null;\n }\n);\n\ntype FormMessageImplElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface FormMessageImplProps extends PrimitiveSpanProps {\n name: string;\n}\n\nconst FormMessageImpl = React.forwardRef<FormMessageImplElement, FormMessageImplProps>(\n (props: ScopedProps<FormMessageImplProps>, forwardedRef) => {\n const { __scopeForm, id: idProp, name, ...messageProps } = props;\n const ariaDescriptionContext = useAriaDescriptionContext(MESSAGE_NAME, __scopeForm);\n const _id = useId();\n const id = idProp ?? _id;\n\n const { onFieldMessageIdAdd, onFieldMessageIdRemove } = ariaDescriptionContext;\n React.useEffect(() => {\n onFieldMessageIdAdd(name, id);\n return () => onFieldMessageIdRemove(name, id);\n }, [name, id, onFieldMessageIdAdd, onFieldMessageIdRemove]);\n\n return <Primitive.span id={id} {...messageProps} ref={forwardedRef} />;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * FormValidityState\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALIDITY_STATE_NAME = 'FormValidityState';\n\ninterface FormValidityStateProps {\n children(validity: ValidityState | undefined): React.ReactNode;\n name?: string;\n}\n\nconst FormValidityState = (props: ScopedProps<FormValidityStateProps>) => {\n const { __scopeForm, name: nameProp, children } = props;\n const validationContext = useValidationContext(VALIDITY_STATE_NAME, __scopeForm);\n const fieldContext = useFormFieldContext(VALIDITY_STATE_NAME, __scopeForm);\n const name = nameProp ?? fieldContext.name;\n const validity = validationContext.getFieldValidity(name);\n return <>{children(validity)}</>;\n};\n\nFormValidityState.displayName = VALIDITY_STATE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * FormSubmit\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUBMIT_NAME = 'FormSubmit';\n\ntype FormSubmitElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface FormSubmitProps extends PrimitiveButtonProps {}\n\nconst FormSubmit = React.forwardRef<FormSubmitElement, FormSubmitProps>(\n (props: ScopedProps<FormSubmitProps>, forwardedRef) => {\n const { __scopeForm, ...submitProps } = props;\n return <Primitive.button type=\"submit\" {...submitProps} ref={forwardedRef} />;\n }\n);\n\nFormSubmit.displayName = SUBMIT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ValidityStateKey = keyof ValidityState;\ntype SyncCustomMatcher = (value: string, formData: FormData) => boolean;\ntype AsyncCustomMatcher = (value: string, formData: FormData) => Promise<boolean>;\ntype CustomMatcher = SyncCustomMatcher | AsyncCustomMatcher;\ntype CustomMatcherEntry = { id: string; match: CustomMatcher };\ntype SyncCustomMatcherEntry = { id: string; match: SyncCustomMatcher };\ntype AsyncCustomMatcherEntry = { id: string; match: AsyncCustomMatcher };\ntype CustomMatcherArgs = [string, FormData];\n\nfunction validityStateToObject(validity: ValidityState) {\n const object: any = {};\n for (const key in validity) {\n object[key] = validity[key as ValidityStateKey];\n }\n return object as Record<ValidityStateKey, boolean>;\n}\n\nfunction isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement;\n}\n\nfunction isFormControl(element: any): element is { validity: ValidityState } {\n return 'validity' in element;\n}\n\nfunction isInvalid(control: HTMLElement) {\n return (\n isFormControl(control) &&\n (control.validity.valid === false || control.getAttribute('aria-invalid') === 'true')\n );\n}\n\nfunction getFirstInvalidControl(form: HTMLFormElement): HTMLElement | undefined {\n const elements = form.elements;\n const [firstInvalidControl] = Array.from(elements).filter(isHTMLElement).filter(isInvalid);\n return firstInvalidControl;\n}\n\nfunction isAsyncCustomMatcherEntry(\n entry: CustomMatcherEntry,\n args: CustomMatcherArgs\n): entry is AsyncCustomMatcherEntry {\n return entry.match.constructor.name === 'AsyncFunction' || returnsPromise(entry.match, args);\n}\n\nfunction isSyncCustomMatcherEntry(entry: CustomMatcherEntry): entry is SyncCustomMatcherEntry {\n return entry.match.constructor.name === 'Function';\n}\n\nfunction returnsPromise(func: Function, args: Array<unknown>) {\n return func(...args) instanceof Promise;\n}\n\nfunction hasBuiltInError(validity: ValidityState) {\n let error = false;\n for (const validityKey in validity) {\n const key = validityKey as ValidityStateKey;\n if (key !== 'valid' && key !== 'customError' && validity[key]) {\n error = true;\n break;\n }\n }\n return error;\n}\n\nfunction getValidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === true && !serverInvalid) return true;\n return undefined;\n}\nfunction getInvalidAttribute(validity: ValidityState | undefined, serverInvalid: boolean) {\n if (validity?.valid === false || serverInvalid) return true;\n return undefined;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Form;\nconst Field = FormField;\nconst Label = FormLabel;\nconst Control = FormControl;\nconst Message = FormMessage;\nconst ValidityState = FormValidityState;\nconst Submit = FormSubmit;\n\nexport {\n createFormScope,\n //\n Form,\n FormField,\n FormLabel,\n FormControl,\n FormMessage,\n FormValidityState,\n FormSubmit,\n //\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n};\n\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n};\n"],"names":["createFormScope","Form","FormField","FormLabel","FormControl","FormMessage","FormValidityState","FormSubmit","Root","Field","Label","Control","Message","ValidityState","Submit","React","composeEventHandlers","useComposedRefs","createContextScope","useId","LabelPrimitive","Primitive","createFormContext","FORM_NAME","ValidationProvider","useValidationContext","AriaDescriptionProvider","useAriaDescriptionContext","forwardRef","props","forwardedRef","__scopeForm","onClearServerErrors","rootProps","formRef","useRef","composedFormRef","validityMap","setValidityMap","useState","getFieldValidity","useCallback","fieldName","handleFieldValidityChange","validity","prevValidityMap","handleFieldValiditionClear","undefined","setCustomErrorsMap","prevCustomErrorsMap","customMatcherEntriesMap","setCustomMatcherEntriesMap","getFieldCustomMatcherEntries","handleFieldCustomMatcherAdd","matcherEntry","prevCustomMatcherEntriesMap","handleFieldCustomMatcherRemove","matcherEntryId","filter","id","customErrorsMap","getFieldCustomErrors","handleFieldCustomErrorsChange","customErrors","messageIdsMap","setMessageIdsMap","handleFieldMessageIdAdd","prevMessageIdsMap","fieldDescriptionIds","Set","add","handleFieldMessageIdRemove","delete","getFieldDescription","Array","from","join","onInvalid","event","firstInvalidControl","getFirstInvalidControl","currentTarget","target","focus","preventDefault","onSubmit","checkForDefaultPrevented","onReset","FIELD_NAME","FormFieldProvider","useFormFieldContext","name","serverInvalid","fieldProps","validationContext","getValidAttribute","getInvalidAttribute","LABEL_NAME","labelProps","fieldContext","htmlFor","CONTROL_NAME","controlProps","ariaDescriptionContext","ref","composedRef","customMatcherEntries","onFieldValidityChange","onFieldCustomErrorsChange","onFieldValiditionClear","updateControlValidity","control","hasBuiltInError","controlValidity","validityStateToObject","formData","form","FormData","matcherArgs","value","syncCustomMatcherEntries","ayncCustomMatcherEntries","forEach","customMatcherEntry","isAsyncCustomMatcherEntry","push","isSyncCustomMatcherEntry","syncCustomErrors","map","match","syncCustomErrorsById","Object","fromEntries","hasSyncCustomErrors","values","some","Boolean","hasCustomError","setCustomValidity","DEFAULT_INVALID_MESSAGE","length","promisedCustomErrors","then","matches","asyncCustomErrors","Promise","all","asyncCustomErrorsById","hasAsyncCustomErrors","useEffect","current","handleChange","addEventListener","removeEventListener","resetControlValidity","closest","onChange","validityMatchers","DEFAULT_BUILT_IN_MESSAGES","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valid","valueMissing","MESSAGE_NAME","nameProp","messageProps","children","FormBuiltInMessage","forceMatch","FormCustomMessage","idProp","_id","useMemo","onFieldCustomMatcherEntryAdd","onFieldCustomMatcherEntryRemove","hasMatchingCustomError","FormMessageImpl","onFieldMessageIdAdd","onFieldMessageIdRemove","VALIDITY_STATE_NAME","SUBMIT_NAME","submitProps","object","key","isHTMLElement","element","HTMLElement","isFormControl","isInvalid","getAttribute","elements","entry","args","constructor","returnsPromise","func","error","validityKey"],"version":3,"file":"index.module.js.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radix-ui/react-form",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2-rc.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"@radix-ui/react-compose-refs": "1.0.0",
|
|
22
22
|
"@radix-ui/react-context": "1.0.0",
|
|
23
23
|
"@radix-ui/react-id": "1.0.0",
|
|
24
|
-
"@radix-ui/react-label": "2.0.1
|
|
25
|
-
"@radix-ui/react-primitive": "1.0.2
|
|
24
|
+
"@radix-ui/react-label": "2.0.1",
|
|
25
|
+
"@radix-ui/react-primitive": "1.0.2"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^16.8 || ^17.0 || ^18.0",
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"bugs": {
|
|
37
37
|
"url": "https://github.com/radix-ui/primitives/issues"
|
|
38
38
|
},
|
|
39
|
-
"stableVersion": "0.0.
|
|
39
|
+
"stableVersion": "0.0.1"
|
|
40
40
|
}
|