@rjsf/core 6.0.0 → 6.0.2
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/core.umd.js +78 -53
- package/dist/index.cjs +77 -50
- package/dist/index.cjs.map +4 -4
- package/dist/index.esm.js +82 -55
- package/dist/index.esm.js.map +4 -4
- package/lib/components/Form.d.ts.map +1 -1
- package/lib/components/Form.js +7 -3
- package/lib/components/constants.d.ts +5 -0
- package/lib/components/constants.d.ts.map +1 -0
- package/lib/components/constants.js +4 -0
- package/lib/components/fields/ArrayField.d.ts.map +1 -1
- package/lib/components/fields/ArrayField.js +33 -16
- package/lib/components/fields/FallbackField.d.ts.map +1 -1
- package/lib/components/fields/FallbackField.js +11 -3
- package/lib/components/fields/ObjectField.d.ts.map +1 -1
- package/lib/components/fields/ObjectField.js +7 -9
- package/lib/components/templates/FieldTemplate/FieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/FieldTemplate/FieldTemplate.js +2 -1
- package/lib/components/widgets/CheckboxWidget.d.ts.map +1 -1
- package/lib/components/widgets/CheckboxWidget.js +4 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/Form.tsx +6 -4
- package/src/components/constants.ts +5 -0
- package/src/components/fields/ArrayField.tsx +45 -29
- package/src/components/fields/FallbackField.tsx +18 -10
- package/src/components/fields/ObjectField.tsx +7 -12
- package/src/components/templates/FieldTemplate/FieldTemplate.tsx +2 -1
- package/src/components/widgets/CheckboxWidget.tsx +4 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/components/Form.tsx", "../src/getDefaultRegistry.ts", "../src/components/fields/ArrayField.tsx", "../src/components/fields/BooleanField.tsx", "../src/components/fields/FallbackField.tsx", "../src/components/fields/LayoutGridField.tsx", "../src/components/fields/LayoutHeaderField.tsx", "../src/components/fields/LayoutMultiSchemaField.tsx", "../src/components/fields/MultiSchemaField.tsx", "../src/components/fields/NumberField.tsx", "../src/components/fields/ObjectField.tsx", "../src/components/fields/OptionalDataControlsField.tsx", "../src/components/fields/SchemaField.tsx", "../src/components/fields/StringField.tsx", "../src/components/fields/NullField.tsx", "../src/components/fields/index.ts", "../src/components/templates/ArrayFieldDescriptionTemplate.tsx", "../src/components/templates/ArrayFieldItemTemplate.tsx", "../src/components/templates/ArrayFieldItemButtonsTemplate.tsx", "../src/components/templates/ArrayFieldTemplate.tsx", "../src/components/templates/ArrayFieldTitleTemplate.tsx", "../src/components/templates/BaseInputTemplate.tsx", "../src/components/templates/ButtonTemplates/SubmitButton.tsx", "../src/components/templates/ButtonTemplates/AddButton.tsx", "../src/components/templates/ButtonTemplates/IconButton.tsx", "../src/components/templates/ButtonTemplates/index.ts", "../src/components/RichDescription.tsx", "../src/components/templates/DescriptionField.tsx", "../src/components/templates/ErrorList.tsx", "../src/components/templates/FallbackFieldTemplate.tsx", "../src/components/templates/FieldTemplate/FieldTemplate.tsx", "../src/components/templates/FieldTemplate/Label.tsx", "../src/components/templates/FieldTemplate/index.ts", "../src/components/templates/FieldErrorTemplate.tsx", "../src/components/templates/FieldHelpTemplate.tsx", "../src/components/templates/GridTemplate.tsx", "../src/components/templates/MultiSchemaFieldTemplate.tsx", "../src/components/templates/ObjectFieldTemplate.tsx", "../src/components/templates/OptionalDataControlsTemplate.tsx", "../src/components/templates/TitleField.tsx", "../src/components/templates/UnsupportedField.tsx", "../src/components/templates/WrapIfAdditionalTemplate.tsx", "../src/components/templates/index.ts", "../src/components/widgets/AltDateWidget.tsx", "../src/components/widgets/AltDateTimeWidget.tsx", "../src/components/widgets/CheckboxWidget.tsx", "../src/components/widgets/CheckboxesWidget.tsx", "../src/components/widgets/ColorWidget.tsx", "../src/components/widgets/DateWidget.tsx", "../src/components/widgets/DateTimeWidget.tsx", "../src/components/widgets/EmailWidget.tsx", "../src/components/widgets/FileWidget.tsx", "../src/components/widgets/HiddenWidget.tsx", "../src/components/widgets/PasswordWidget.tsx", "../src/components/widgets/RadioWidget.tsx", "../src/components/widgets/RangeWidget.tsx", "../src/components/widgets/RatingWidget.tsx", "../src/components/widgets/SelectWidget.tsx", "../src/components/widgets/TextareaWidget.tsx", "../src/components/widgets/TextWidget.tsx", "../src/components/widgets/TimeWidget.tsx", "../src/components/widgets/URLWidget.tsx", "../src/components/widgets/UpDownWidget.tsx", "../src/components/widgets/index.ts", "../src/withTheme.tsx", "../src/getTestRegistry.tsx", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { Component, ElementType, FormEvent, ReactNode, Ref, RefObject, createRef } from 'react';\nimport {\n createSchemaUtils,\n CustomValidator,\n deepEquals,\n ErrorSchema,\n ErrorSchemaBuilder,\n ErrorTransformer,\n FieldPathId,\n FieldPathList,\n FormContextType,\n GenericObjectType,\n getChangedFields,\n getTemplate,\n getUiOptions,\n isObject,\n mergeObjects,\n NAME_KEY,\n PathSchema,\n StrictRJSFSchema,\n Registry,\n RegistryFieldsType,\n RegistryWidgetsType,\n RJSFSchema,\n RJSFValidationError,\n RJSF_ADDITIONAL_PROPERTIES_FLAG,\n SchemaUtilsType,\n shouldRender,\n SUBMIT_BTN_OPTIONS_KEY,\n TemplatesType,\n toErrorList,\n toFieldPathId,\n UiSchema,\n UI_GLOBAL_OPTIONS_KEY,\n UI_OPTIONS_KEY,\n ValidationData,\n validationDataMerge,\n ValidatorType,\n Experimental_DefaultFormStateBehavior,\n Experimental_CustomMergeAllOf,\n DEFAULT_ID_SEPARATOR,\n DEFAULT_ID_PREFIX,\n GlobalFormOptions,\n ERRORS_KEY,\n ID_KEY,\n NameGeneratorFunction,\n} from '@rjsf/utils';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _pick from 'lodash/pick';\nimport _set from 'lodash/set';\nimport _toPath from 'lodash/toPath';\n\nimport getDefaultRegistry from '../getDefaultRegistry';\n\n/** Internal only symbol used by the `reset()` function to indicate that a reset operation is happening */\nconst IS_RESET = Symbol('reset');\n\n/** The properties that are passed to the `Form` */\nexport interface FormProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n /** The JSON schema object for the form */\n schema: S;\n /** An implementation of the `ValidatorType` interface that is needed for form validation to work */\n validator: ValidatorType<T, S, F>;\n /** The optional children for the form, if provided, it will replace the default `SubmitButton` */\n children?: ReactNode;\n /** The uiSchema for the form */\n uiSchema?: UiSchema<T, S, F>;\n /** The data for the form, used to load a \"controlled\" form with its current data. If you want an \"uncontrolled\" form\n * with initial data, then use `initialFormData` instead.\n */\n formData?: T;\n /** The initial data for the form, used to fill an \"uncontrolled\" form with existing data on the initial render and\n * when `reset()` is called programmatically.\n */\n initialFormData?: T;\n // Form presentation and behavior modifiers\n /** You can provide a `formContext` object to the form, which is passed down to all fields and widgets. Useful for\n * implementing context aware fields and widgets.\n *\n * NOTE: Setting `{readonlyAsDisabled: false}` on the formContext will make the antd theme treat readOnly fields as\n * disabled.\n */\n formContext?: F;\n /** To avoid collisions with existing ids in the DOM, it is possible to change the prefix used for ids;\n * Default is `root`\n */\n idPrefix?: string;\n /** To avoid using a path separator that is present in field names, it is possible to change the separator used for\n * ids (Default is `_`)\n */\n idSeparator?: string;\n /** It's possible to disable the whole form by setting the `disabled` prop. The `disabled` prop is then forwarded down\n * to each field of the form. If you just want to disable some fields, see the `ui:disabled` parameter in `uiSchema`\n */\n disabled?: boolean;\n /** It's possible to make the whole form read-only by setting the `readonly` prop. The `readonly` prop is then\n * forwarded down to each field of the form. If you just want to make some fields read-only, see the `ui:readonly`\n * parameter in `uiSchema`\n */\n readonly?: boolean;\n // Form registry\n /** The dictionary of registered fields in the form */\n fields?: RegistryFieldsType<T, S, F>;\n /** The dictionary of registered templates in the form; Partial allows a subset to be provided beyond the defaults */\n templates?: Partial<Omit<TemplatesType<T, S, F>, 'ButtonTemplates'>> & {\n ButtonTemplates?: Partial<TemplatesType<T, S, F>['ButtonTemplates']>;\n };\n /** The dictionary of registered widgets in the form */\n widgets?: RegistryWidgetsType<T, S, F>;\n // Callbacks\n /** If you plan on being notified every time the form data are updated, you can pass an `onChange` handler, which will\n * receive the same args as `onSubmit` any time a value is updated in the form. Can also return the `id` of the field\n * that caused the change\n */\n onChange?: (data: IChangeEvent<T, S, F>, id?: string) => void;\n /** To react when submitted form data are invalid, pass an `onError` handler. It will be passed the list of\n * encountered errors\n */\n onError?: (errors: RJSFValidationError[]) => void;\n /** You can pass a function as the `onSubmit` prop of your `Form` component to listen to when the form is submitted\n * and its data are valid. It will be passed a result object having a `formData` attribute, which is the valid form\n * data you're usually after. The original event will also be passed as a second parameter\n */\n onSubmit?: (data: IChangeEvent<T, S, F>, event: FormEvent<any>) => void;\n /** Sometimes you may want to trigger events or modify external state when a field has been touched, so you can pass\n * an `onBlur` handler, which will receive the id of the input that was blurred and the field value\n */\n onBlur?: (id: string, data: any) => void;\n /** Sometimes you may want to trigger events or modify external state when a field has been focused, so you can pass\n * an `onFocus` handler, which will receive the id of the input that is focused and the field value\n */\n onFocus?: (id: string, data: any) => void;\n /** The value of this prop will be passed to the `accept-charset` HTML attribute on the form */\n acceptCharset?: string;\n /** The value of this prop will be passed to the `action` HTML attribute on the form\n *\n * NOTE: this just renders the `action` attribute in the HTML markup. There is no real network request being sent to\n * this `action` on submit. Instead, react-jsonschema-form catches the submit event with `event.preventDefault()`\n * and then calls the `onSubmit` function, where you could send a request programmatically with `fetch` or similar.\n */\n action?: string;\n /** The value of this prop will be passed to the `autocomplete` HTML attribute on the form */\n autoComplete?: string;\n /** The value of this prop will be passed to the `class` HTML attribute on the form */\n className?: string;\n /** The value of this prop will be passed to the `enctype` HTML attribute on the form */\n enctype?: string;\n /** The value of this prop will be passed to the `id` HTML attribute on the form */\n id?: string;\n /** The value of this prop will be passed to the `name` HTML attribute on the form */\n name?: string;\n /** The value of this prop will be passed to the `method` HTML attribute on the form */\n method?: string;\n /** It's possible to change the default `form` tag name to a different HTML tag, which can be helpful if you are\n * nesting forms. However, native browser form behaviour, such as submitting when the `Enter` key is pressed, may no\n * longer work\n */\n tagName?: ElementType;\n /** The value of this prop will be passed to the `target` HTML attribute on the form */\n target?: string;\n // Errors and validation\n /** Formerly the `validate` prop; Takes a function that specifies custom validation rules for the form */\n customValidate?: CustomValidator<T, S, F>;\n /** This prop allows passing in custom errors that are augmented with the existing JSON Schema errors on the form; it\n * can be used to implement asynchronous validation. By default, these are non-blocking errors, meaning that you can\n * still submit the form when these are the only errors displayed to the user.\n */\n extraErrors?: ErrorSchema<T>;\n /** If set to true, causes the `extraErrors` to become blocking when the form is submitted */\n extraErrorsBlockSubmit?: boolean;\n /** If set to true, turns off HTML5 validation on the form; Set to `false` by default */\n noHtml5Validate?: boolean;\n /** If set to true, turns off all validation. Set to `false` by default\n *\n * @deprecated - In a future release, this switch may be replaced by making `validator` prop optional\n */\n noValidate?: boolean;\n /** Flag that describes when live validation will be performed. Live validation means that the form will perform\n * validation and show any validation errors whenever the form data is updated, rather than just on submit.\n *\n * If no value (or `false`) is provided, then live validation will not happen. If `true` or `onChange` is provided for\n * the flag, then live validation will be performed after processing of all pending changes has completed. If `onBlur`\n * is provided, then live validation will be performed when a field that was updated is blurred (as a performance\n * optimization).\n *\n * @deprecated - In a future major release, the `boolean` options for this flag will be removed\n */\n liveValidate?: boolean | 'onChange' | 'onBlur';\n /** Flag that describes when live omit will be performed. Live omit happens only when `omitExtraData` is also set to\n * to `true` and the form's data is updated by the user.\n *\n * If no value (or `false`) is provided, then live omit will not happen. If `true` or `onChange` is provided for\n * the flag, then live omit will be performed after processing of all pending changes has completed. If `onBlur`\n * is provided, then live omit will be performed when a field that was updated is blurred (as a performance\n * optimization).\n *\n * @deprecated - In a future major release, the `boolean` options for this flag will be removed\n */\n liveOmit?: boolean | 'onChange' | 'onBlur';\n /** If set to true, then extra form data values that are not in any form field will be removed whenever `onSubmit` is\n * called. Set to `false` by default.\n */\n omitExtraData?: boolean;\n /** When this prop is set to `top` or 'bottom', a list of errors (or the custom error list defined in the `ErrorList`) will also\n * show. When set to false, only inline input validation errors will be shown. Set to `top` by default\n */\n showErrorList?: false | 'top' | 'bottom';\n /** A function can be passed to this prop in order to make modifications to the default errors resulting from JSON\n * Schema validation\n */\n transformErrors?: ErrorTransformer<T, S, F>;\n /** If set to true, then the first field with an error will receive the focus when the form is submitted with errors\n */\n focusOnFirstError?: boolean | ((error: RJSFValidationError) => void);\n /** Optional string translation function, if provided, allows users to change the translation of the RJSF internal\n * strings. Some strings contain replaceable parameter values as indicated by `%1`, `%2`, etc. The number after the\n * `%` indicates the order of the parameter. The ordering of parameters is important because some languages may choose\n * to put the second parameter before the first in its translation.\n */\n translateString?: Registry['translateString'];\n /** Optional function to generate custom HTML `name` attributes for form fields.\n */\n nameGenerator?: NameGeneratorFunction;\n /** Optional flag that, when set to true, will cause the `FallbackField` to render a type selector for unsupported\n * fields instead of the default UnsupportedField error UI.\n */\n useFallbackUiForUnsupportedType?: boolean;\n /** Optional configuration object with flags, if provided, allows users to override default form state behavior\n * Currently only affecting minItems on array fields and handling of setting defaults based on the value of\n * `emptyObjectFields`\n */\n experimental_defaultFormStateBehavior?: Experimental_DefaultFormStateBehavior;\n /**\n * Controls the component update strategy used by the Form's `shouldComponentUpdate` lifecycle method.\n *\n * - `'customDeep'`: Uses RJSF's custom deep equality checks via the `deepEquals` utility function,\n * which treats all functions as equivalent and provides optimized performance for form data comparisons.\n * - `'shallow'`: Uses shallow comparison of props and state (only compares direct properties). This matches React's PureComponent behavior.\n * - `'always'`: Always rerenders when called. This matches React's Component behavior.\n *\n * @default 'customDeep'\n */\n experimental_componentUpdateStrategy?: 'customDeep' | 'shallow' | 'always';\n /** Optional function that allows for custom merging of `allOf` schemas\n */\n experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>;\n // Private\n /**\n * _internalFormWrapper is currently used by the semantic-ui theme to provide a custom wrapper around `<Form />`\n * that supports the proper rendering of those themes. To use this prop, one must pass a component that takes two\n * props: `children` and `as`. That component, at minimum, should render the `children` inside of a <form /> tag\n * unless `as` is provided, in which case, use the `as` prop in place of `<form />`.\n * i.e.:\n * ```\n * export default function InternalForm({ children, as }) {\n * const FormTag = as || 'form';\n * return <FormTag>{children}</FormTag>;\n * }\n * ```\n *\n * Use at your own risk as this prop is private and may change at any time without notice.\n */\n _internalFormWrapper?: ElementType;\n /** Support receiving a React ref to the Form\n */\n ref?: Ref<Form<T, S, F>>;\n}\n\n/** The data that is contained within the state for the `Form` */\nexport interface FormState<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n /** The JSON schema object for the form */\n schema: S;\n /** The uiSchema for the form */\n uiSchema: UiSchema<T, S, F>;\n /** The `FieldPathId` for the form, computed from the `schema`, the `rootFieldId`, the `idPrefix` and\n * `idSeparator` props.\n */\n fieldPathId: FieldPathId;\n /** The schemaUtils implementation used by the `Form`, created from the `validator` and the `schema` */\n schemaUtils: SchemaUtilsType<T, S, F>;\n /** The current data for the form, computed from the `formData` prop and the changes made by the user */\n formData?: T;\n /** Flag indicating whether the form is in edit mode, true when `formData` is passed to the form, otherwise false */\n edit: boolean;\n /** The current list of errors for the form, includes `extraErrors` */\n errors: RJSFValidationError[];\n /** The current errors, in `ErrorSchema` format, for the form, includes `extraErrors` */\n errorSchema: ErrorSchema<T>;\n // Private\n /** The current list of errors for the form directly from schema validation, does NOT include `extraErrors` */\n schemaValidationErrors: RJSFValidationError[];\n /** The current errors, in `ErrorSchema` format, for the form directly from schema validation, does NOT include\n * `extraErrors`\n */\n schemaValidationErrorSchema: ErrorSchema<T>;\n /** A container used to handle custom errors provided via `onChange` */\n customErrors?: ErrorSchemaBuilder<T>;\n /** @description result of schemaUtils.retrieveSchema(schema, formData). This a memoized value to avoid re calculate at internal functions (getStateFromProps, onChange) */\n retrievedSchema: S;\n /** Flag indicating whether the initial form defaults have been generated */\n initialDefaultsGenerated: boolean;\n /** The registry (re)computed only when props changed */\n registry: Registry<T, S, F>;\n}\n\n/** The event data passed when changes have been made to the form, includes everything from the `FormState` except\n * the schema validation errors. An additional `status` is added when returned from `onSubmit`\n */\nexport interface IChangeEvent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Pick<\n FormState<T, S, F>,\n 'schema' | 'uiSchema' | 'fieldPathId' | 'schemaUtils' | 'formData' | 'edit' | 'errors' | 'errorSchema'\n > {\n /** The status of the form when submitted */\n status?: 'submitted';\n}\n\n/** Converts the full `FormState` into the `IChangeEvent` version by picking out the public values\n *\n * @param state - The state of the form\n * @param status - The status provided by the onSubmit\n * @returns - The `IChangeEvent` for the state\n */\nfunction toIChangeEvent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n state: FormState<T, S, F>,\n status?: IChangeEvent['status'],\n): IChangeEvent<T, S, F> {\n return {\n ..._pick(state, ['schema', 'uiSchema', 'fieldPathId', 'schemaUtils', 'formData', 'edit', 'errors', 'errorSchema']),\n ...(status !== undefined && { status }),\n };\n}\n\n/** The definition of a pending change that will be processed in the `onChange` handler\n */\ninterface PendingChange<T> {\n /** The path into the formData/errorSchema at which the `newValue`/`newErrorSchema` will be set */\n path: FieldPathList;\n /** The new value to set into the formData */\n newValue?: T;\n /** The new errors to be set into the errorSchema, if any */\n newErrorSchema?: ErrorSchema<T>;\n /** The optional id of the field for which the change is being made */\n id?: string;\n}\n\n/** The `Form` component renders the outer form and all the fields defined in the `schema` */\nexport default class Form<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> extends Component<FormProps<T, S, F>, FormState<T, S, F>> {\n /** The ref used to hold the `form` element, this needs to be `any` because `tagName` or `_internalFormWrapper` can\n * provide any possible type here\n */\n formElement: RefObject<any>;\n\n /** The list of pending changes\n */\n pendingChanges: PendingChange<T>[] = [];\n\n /** Constructs the `Form` from the `props`. Will setup the initial state from the props. It will also call the\n * `onChange` handler if the initially provided `formData` is modified to add missing default values as part of the\n * state construction.\n *\n * @param props - The initial props for the `Form`\n */\n constructor(props: FormProps<T, S, F>) {\n super(props);\n\n if (!props.validator) {\n throw new Error('A validator is required for Form functionality to work');\n }\n\n const { formData: propsFormData, initialFormData, onChange } = props;\n const formData = propsFormData ?? initialFormData;\n this.state = this.getStateFromProps(props, formData, undefined, undefined, undefined, true);\n if (onChange && !deepEquals(this.state.formData, formData)) {\n onChange(toIChangeEvent(this.state));\n }\n this.formElement = createRef();\n }\n\n /**\n * `getSnapshotBeforeUpdate` is a React lifecycle method that is invoked right before the most recently rendered\n * output is committed to the DOM. It enables your component to capture current values (e.g., scroll position) before\n * they are potentially changed.\n *\n * In this case, it checks if the props have changed since the last render. If they have, it computes the next state\n * of the component using `getStateFromProps` method and returns it along with a `shouldUpdate` flag set to `true` IF\n * the `nextState` and `prevState` are different, otherwise `false`. This ensures that we have the most up-to-date\n * state ready to be applied in `componentDidUpdate`.\n *\n * If `formData` hasn't changed, it simply returns an object with `shouldUpdate` set to `false`, indicating that a\n * state update is not necessary.\n *\n * @param prevProps - The previous set of props before the update.\n * @param prevState - The previous state before the update.\n * @returns Either an object containing the next state and a flag indicating that an update should occur, or an object\n * with a flag indicating that an update is not necessary.\n */\n getSnapshotBeforeUpdate(\n prevProps: FormProps<T, S, F>,\n prevState: FormState<T, S, F>,\n ): { nextState: FormState<T, S, F>; shouldUpdate: true } | { shouldUpdate: false } {\n if (!deepEquals(this.props, prevProps)) {\n // Compare the previous props formData against the current props formData\n const formDataChangedFields = getChangedFields(this.props.formData, prevProps.formData);\n // Compare the current props formData against the current state's formData to determine if the new props were the\n // result of the onChange from the existing state formData\n const stateDataChangedFields = getChangedFields(this.props.formData, this.state.formData);\n const isSchemaChanged = !deepEquals(prevProps.schema, this.props.schema);\n // When formData is not an object, getChangedFields returns an empty array.\n // In this case, deepEquals is most needed to check again.\n const isFormDataChanged =\n formDataChangedFields.length > 0 || !deepEquals(prevProps.formData, this.props.formData);\n const isStateDataChanged =\n stateDataChangedFields.length > 0 || !deepEquals(this.state.formData, this.props.formData);\n const nextState = this.getStateFromProps(\n this.props,\n this.props.formData,\n // If the `schema` has changed, we need to update the retrieved schema.\n // Or if the `formData` changes, for example in the case of a schema with dependencies that need to\n // match one of the subSchemas, the retrieved schema must be updated.\n isSchemaChanged || isFormDataChanged ? undefined : this.state.retrievedSchema,\n isSchemaChanged,\n formDataChangedFields,\n // Skip live validation for this request if no form data has changed from the last state\n !isStateDataChanged,\n );\n const shouldUpdate = !deepEquals(nextState, prevState);\n return { nextState, shouldUpdate };\n }\n return { shouldUpdate: false };\n }\n\n /**\n * `componentDidUpdate` is a React lifecycle method that is invoked immediately after updating occurs. This method is\n * not called for the initial render.\n *\n * Here, it checks if an update is necessary based on the `shouldUpdate` flag received from `getSnapshotBeforeUpdate`.\n * If an update is required, it applies the next state and, if needed, triggers the `onChange` handler to inform about\n * changes.\n *\n * @param _ - The previous set of props.\n * @param prevState - The previous state of the component before the update.\n * @param snapshot - The value returned from `getSnapshotBeforeUpdate`.\n */\n componentDidUpdate(\n _: FormProps<T, S, F>,\n prevState: FormState<T, S, F>,\n snapshot: { nextState: FormState<T, S, F>; shouldUpdate: true } | { shouldUpdate: false },\n ) {\n if (snapshot.shouldUpdate) {\n const { nextState } = snapshot;\n if (\n !deepEquals(nextState.formData, this.props.formData) &&\n !deepEquals(nextState.formData, prevState.formData) &&\n this.props.onChange\n ) {\n this.props.onChange(toIChangeEvent(nextState));\n }\n this.setState(nextState);\n }\n }\n\n /** Extracts the updated state from the given `props` and `inputFormData`. As part of this process, the\n * `inputFormData` is first processed to add any missing required defaults. After that, the data is run through the\n * validation process IF required by the `props`.\n *\n * @param props - The props passed to the `Form`\n * @param inputFormData - The new or current data for the `Form`\n * @param retrievedSchema - An expanded schema, if not provided, it will be retrieved from the `schema` and `formData`.\n * @param isSchemaChanged - A flag indicating whether the schema has changed.\n * @param formDataChangedFields - The changed fields of `formData`\n * @param skipLiveValidate - Optional flag, if true, means that we are not running live validation\n * @returns - The new state for the `Form`\n */\n getStateFromProps(\n props: FormProps<T, S, F>,\n inputFormData?: T,\n retrievedSchema?: S,\n isSchemaChanged = false,\n formDataChangedFields: string[] = [],\n skipLiveValidate = false,\n ): FormState<T, S, F> {\n const state: FormState<T, S, F> = this.state || {};\n const schema = 'schema' in props ? props.schema : this.props.schema;\n const validator = 'validator' in props ? props.validator : this.props.validator;\n const uiSchema: UiSchema<T, S, F> = ('uiSchema' in props ? props.uiSchema! : this.props.uiSchema!) || {};\n const isUncontrolled = props.formData === undefined && this.props.formData === undefined;\n const edit = typeof inputFormData !== 'undefined';\n const liveValidate = 'liveValidate' in props ? props.liveValidate : this.props.liveValidate;\n const mustValidate = edit && !props.noValidate && liveValidate;\n const experimental_defaultFormStateBehavior =\n 'experimental_defaultFormStateBehavior' in props\n ? props.experimental_defaultFormStateBehavior\n : this.props.experimental_defaultFormStateBehavior;\n const experimental_customMergeAllOf =\n 'experimental_customMergeAllOf' in props\n ? props.experimental_customMergeAllOf\n : this.props.experimental_customMergeAllOf;\n let schemaUtils: SchemaUtilsType<T, S, F> = state.schemaUtils;\n if (\n !schemaUtils ||\n schemaUtils.doesSchemaUtilsDiffer(\n validator,\n schema,\n experimental_defaultFormStateBehavior,\n experimental_customMergeAllOf,\n )\n ) {\n schemaUtils = createSchemaUtils<T, S, F>(\n validator,\n schema,\n experimental_defaultFormStateBehavior,\n experimental_customMergeAllOf,\n );\n }\n\n const rootSchema = schemaUtils.getRootSchema();\n\n // Compute the formData for getDefaultFormState() function based on the inputFormData, isUncontrolled and state\n let defaultsFormData = inputFormData;\n if (inputFormData === IS_RESET) {\n defaultsFormData = undefined;\n } else if (inputFormData === undefined && isUncontrolled) {\n defaultsFormData = state.formData;\n }\n const formData: T = schemaUtils.getDefaultFormState(\n rootSchema,\n defaultsFormData,\n false,\n state.initialDefaultsGenerated,\n ) as T;\n const _retrievedSchema = this.updateRetrievedSchema(\n retrievedSchema ?? schemaUtils.retrieveSchema(rootSchema, formData),\n );\n\n const getCurrentErrors = (): ValidationData<T> => {\n // If the `props.noValidate` option is set or the schema has changed, we reset the error state.\n if (props.noValidate || isSchemaChanged) {\n return { errors: [], errorSchema: {} };\n } else if (!props.liveValidate) {\n return {\n errors: state.schemaValidationErrors || [],\n errorSchema: state.schemaValidationErrorSchema || {},\n };\n }\n return {\n errors: state.errors || [],\n errorSchema: state.errorSchema || {},\n };\n };\n\n let errors: RJSFValidationError[];\n let errorSchema: ErrorSchema<T> | undefined;\n let schemaValidationErrors: RJSFValidationError[] = state.schemaValidationErrors;\n let schemaValidationErrorSchema: ErrorSchema<T> = state.schemaValidationErrorSchema;\n // If we are skipping live validate, it means that the state has already been updated with live validation errors\n if (mustValidate && !skipLiveValidate) {\n const liveValidation = this.liveValidate(\n rootSchema,\n schemaUtils,\n state.errorSchema,\n formData,\n undefined,\n state.customErrors,\n retrievedSchema,\n // If retrievedSchema is undefined which means the schema or formData has changed, we do not merge state.\n // Else in the case where it hasn't changed,\n retrievedSchema !== undefined,\n );\n errors = liveValidation.errors;\n errorSchema = liveValidation.errorSchema;\n schemaValidationErrors = liveValidation.schemaValidationErrors;\n schemaValidationErrorSchema = liveValidation.schemaValidationErrorSchema;\n } else {\n const currentErrors = getCurrentErrors();\n errors = currentErrors.errors;\n errorSchema = currentErrors.errorSchema;\n // We only update the error schema for changed fields if mustValidate is false\n if (formDataChangedFields.length > 0 && !mustValidate) {\n const newErrorSchema = formDataChangedFields.reduce(\n (acc, key) => {\n acc[key] = undefined;\n return acc;\n },\n {} as Record<string, undefined>,\n );\n errorSchema = schemaValidationErrorSchema = mergeObjects(\n currentErrors.errorSchema,\n newErrorSchema,\n 'preventDuplicates',\n ) as ErrorSchema<T>;\n }\n const mergedErrors = this.mergeErrors({ errorSchema, errors }, props.extraErrors, state.customErrors);\n errors = mergedErrors.errors;\n errorSchema = mergedErrors.errorSchema;\n }\n\n // Only store a new registry when the props cause a different one to be created\n const newRegistry = this.getRegistry(props, rootSchema, schemaUtils);\n const registry = deepEquals(state.registry, newRegistry) ? state.registry : newRegistry;\n // Only compute a new `fieldPathId` when the `idPrefix` is different than the existing fieldPathId's ID_KEY\n const fieldPathId =\n state.fieldPathId && state.fieldPathId?.[ID_KEY] === registry.globalFormOptions.idPrefix\n ? state.fieldPathId\n : toFieldPathId('', registry.globalFormOptions);\n const nextState: FormState<T, S, F> = {\n schemaUtils,\n schema: rootSchema,\n uiSchema,\n fieldPathId,\n formData,\n edit,\n errors,\n errorSchema,\n schemaValidationErrors,\n schemaValidationErrorSchema,\n retrievedSchema: _retrievedSchema,\n initialDefaultsGenerated: true,\n registry,\n };\n return nextState;\n }\n\n /** React lifecycle method that is used to determine whether component should be updated.\n *\n * @param nextProps - The next version of the props\n * @param nextState - The next version of the state\n * @returns - True if the component should be updated, false otherwise\n */\n shouldComponentUpdate(nextProps: FormProps<T, S, F>, nextState: FormState<T, S, F>): boolean {\n const { experimental_componentUpdateStrategy = 'customDeep' } = this.props;\n return shouldRender(this, nextProps, nextState, experimental_componentUpdateStrategy);\n }\n\n /** Validates the `formData` against the `schema` using the `altSchemaUtils` (if provided otherwise it uses the\n * `schemaUtils` in the state), returning the results.\n *\n * @param formData - The new form data to validate\n * @param schema - The schema used to validate against\n * @param [altSchemaUtils] - The alternate schemaUtils to use for validation\n * @param [retrievedSchema] - An optionally retrieved schema for per\n */\n validate(\n formData: T | undefined,\n schema = this.state.schema,\n altSchemaUtils?: SchemaUtilsType<T, S, F>,\n retrievedSchema?: S,\n ): ValidationData<T> {\n const schemaUtils = altSchemaUtils ? altSchemaUtils : this.state.schemaUtils;\n const { customValidate, transformErrors, uiSchema } = this.props;\n const resolvedSchema = retrievedSchema ?? schemaUtils.retrieveSchema(schema, formData);\n return schemaUtils\n .getValidator()\n .validateFormData(formData, resolvedSchema, customValidate, transformErrors, uiSchema);\n }\n\n /** Renders any errors contained in the `state` in using the `ErrorList`, if not disabled by `showErrorList`. */\n renderErrors(registry: Registry<T, S, F>) {\n const { errors, errorSchema, schema, uiSchema } = this.state;\n const options = getUiOptions<T, S, F>(uiSchema);\n const ErrorListTemplate = getTemplate<'ErrorListTemplate', T, S, F>('ErrorListTemplate', registry, options);\n\n if (errors && errors.length) {\n return (\n <ErrorListTemplate\n errors={errors}\n errorSchema={errorSchema || {}}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n }\n return null;\n }\n\n /** Merges any `extraErrors` or `customErrors` into the given `schemaValidation` object, returning the result\n *\n * @param schemaValidation - The `ValidationData` object into which additional errors are merged\n * @param [extraErrors] - The extra errors from the props\n * @param [customErrors] - The customErrors from custom components\n * @return - The `extraErrors` and `customErrors` merged into the `schemaValidation`\n * @private\n */\n private mergeErrors(\n schemaValidation: ValidationData<T>,\n extraErrors?: FormProps['extraErrors'],\n customErrors?: ErrorSchemaBuilder,\n ): ValidationData<T> {\n let errorSchema: ErrorSchema<T> = schemaValidation.errorSchema;\n let errors: RJSFValidationError[] = schemaValidation.errors;\n if (extraErrors) {\n const merged = validationDataMerge(schemaValidation, extraErrors);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n if (customErrors) {\n const merged = validationDataMerge(schemaValidation, customErrors.ErrorSchema, true);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n return { errors, errorSchema };\n }\n\n /** Performs live validation and then updates and returns the errors and error schemas by potentially merging in\n * `extraErrors` and `customErrors`.\n *\n * @param rootSchema - The `rootSchema` from the state\n * @param schemaUtils - The `SchemaUtilsType` from the state\n * @param originalErrorSchema - The original `ErrorSchema` from the state\n * @param [formData] - The new form data to validate\n * @param [extraErrors] - The extra errors from the props\n * @param [customErrors] - The customErrors from custom components\n * @param [retrievedSchema] - An expanded schema, if not provided, it will be retrieved from the `schema` and `formData`\n * @param [mergeIntoOriginalErrorSchema=false] - Optional flag indicating whether we merge into original schema\n * @returns - An object containing `errorSchema`, `errors`, `schemaValidationErrors` and `schemaValidationErrorSchema`\n * @private\n */\n private liveValidate(\n rootSchema: S,\n schemaUtils: SchemaUtilsType<T, S, F>,\n originalErrorSchema: ErrorSchema<S>,\n formData?: T,\n extraErrors?: FormProps['extraErrors'],\n customErrors?: ErrorSchemaBuilder<T>,\n retrievedSchema?: S,\n mergeIntoOriginalErrorSchema = false,\n ) {\n const schemaValidation = this.validate(formData, rootSchema, schemaUtils, retrievedSchema);\n const errors = schemaValidation.errors;\n let errorSchema = schemaValidation.errorSchema;\n // We merge 'originalErrorSchema' with 'schemaValidation.errorSchema.'; This done to display the raised field error.\n if (mergeIntoOriginalErrorSchema) {\n errorSchema = mergeObjects(\n originalErrorSchema,\n schemaValidation.errorSchema,\n 'preventDuplicates',\n ) as ErrorSchema<T>;\n }\n const schemaValidationErrors = errors;\n const schemaValidationErrorSchema = errorSchema;\n const mergedErrors = this.mergeErrors({ errorSchema, errors }, extraErrors, customErrors);\n return { ...mergedErrors, schemaValidationErrors, schemaValidationErrorSchema };\n }\n\n /** Returns the `formData` with only the elements specified in the `fields` list\n *\n * @param formData - The data for the `Form`\n * @param fields - The fields to keep while filtering\n */\n getUsedFormData = (formData: T | undefined, fields: string[][]): T | undefined => {\n // For the case of a single input form\n if (fields.length === 0 && typeof formData !== 'object') {\n return formData;\n }\n\n // _pick has incorrect type definition, it works with string[][], because lodash/hasIn supports it\n const data: GenericObjectType = _pick(formData, fields as unknown as string[]);\n if (Array.isArray(formData)) {\n return Object.keys(data).map((key: string) => data[key]) as unknown as T;\n }\n\n return data as T;\n };\n\n /** Returns the list of field names from inspecting the `pathSchema` as well as using the `formData`\n *\n * @param pathSchema - The `PathSchema` object for the form\n * @param [formData] - The form data to use while checking for empty objects/arrays\n */\n getFieldNames = (pathSchema: PathSchema<T>, formData?: T): string[][] => {\n const formValueHasData = (value: T, isLeaf: boolean) =>\n typeof value !== 'object' || _isEmpty(value) || (isLeaf && !_isEmpty(value));\n const getAllPaths = (_obj: GenericObjectType, acc: string[][] = [], paths: string[][] = [[]]) => {\n const objKeys = Object.keys(_obj);\n objKeys.forEach((key: string) => {\n const data = _obj[key];\n if (typeof data === 'object') {\n const newPaths = paths.map((path) => [...path, key]);\n // If an object is marked with additionalProperties, all its keys are valid\n if (data[RJSF_ADDITIONAL_PROPERTIES_FLAG] && data[NAME_KEY] !== '') {\n acc.push(data[NAME_KEY]);\n } else {\n getAllPaths(data, acc, newPaths);\n }\n } else if (key === NAME_KEY && data !== '') {\n paths.forEach((path) => {\n const formValue = _get(formData, path);\n const isLeaf = objKeys.length === 1;\n // adds path to fieldNames if it points to a value or an empty object/array which is not a leaf\n if (\n formValueHasData(formValue, isLeaf) ||\n (Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf)))\n ) {\n acc.push(path);\n }\n });\n }\n });\n return acc;\n };\n\n return getAllPaths(pathSchema);\n };\n\n /** Returns the `formData` after filtering to remove any extra data not in a form field\n *\n * @param formData - The data for the `Form`\n * @returns The `formData` after omitting extra data\n */\n omitExtraData = (formData?: T): T | undefined => {\n const { schema, schemaUtils } = this.state;\n const retrievedSchema = schemaUtils.retrieveSchema(schema, formData);\n const pathSchema = schemaUtils.toPathSchema(retrievedSchema, '', formData);\n const fieldNames = this.getFieldNames(pathSchema, formData);\n return this.getUsedFormData(formData, fieldNames);\n };\n\n /** Allows a user to set a value for the provided `fieldPath`, which must be either a dotted path to the field OR a\n * `FieldPathList`. To set the root element, used either `''` or `[]` for the path. Passing undefined will clear the\n * value in the field.\n *\n * @param fieldPath - Either a dotted path to the field or the `FieldPathList` to the field\n * @param [newValue] - The new value for the field\n */\n setFieldValue = (fieldPath: string | FieldPathList, newValue?: T) => {\n const { registry } = this.state;\n const path = Array.isArray(fieldPath) ? fieldPath : fieldPath.split('.');\n const fieldPathId = toFieldPathId('', registry.globalFormOptions, path);\n this.onChange(newValue, path, undefined, fieldPathId[ID_KEY]);\n };\n\n /** Pushes the given change information into the `pendingChanges` array and then calls `processPendingChanges()` if\n * the array only contains a single pending change.\n *\n * @param newValue - The new form data from a change to a field\n * @param path - The path to the change into which to set the formData\n * @param [newErrorSchema] - The new `ErrorSchema` based on the field change\n * @param [id] - The id of the field that caused the change\n */\n onChange = (newValue: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n this.pendingChanges.push({ newValue, path, newErrorSchema, id });\n if (this.pendingChanges.length === 1) {\n this.processPendingChange();\n }\n };\n\n /** Function to handle changes made to a field in the `Form`. This handler gets the first change from the\n * `pendingChanges` list, containing the `newValue` for the `formData` and the `path` at which the `newValue` is to be\n * updated, along with a new, optional `ErrorSchema` for that same `path` and potentially the `id` of the field being\n * changed. It will first update the `formData` with any missing default fields and then, if `omitExtraData` and\n * `liveOmit` are turned on, the `formData` will be filtered to remove any extra data not in a form field. Then, the\n * resulting `formData` will be validated if required. The state will be updated with the new updated (potentially\n * filtered) `formData`, any errors that resulted from validation. Finally the `onChange` callback will be called, if\n * specified, with the updated state and the `processPendingChange()` function is called again.\n */\n processPendingChange() {\n if (this.pendingChanges.length === 0) {\n return;\n }\n const { newValue, path, id } = this.pendingChanges[0];\n const { newErrorSchema } = this.pendingChanges[0];\n const { extraErrors, omitExtraData, liveOmit, noValidate, liveValidate, onChange } = this.props;\n const { formData: oldFormData, schemaUtils, schema, fieldPathId, schemaValidationErrorSchema, errors } = this.state;\n let { customErrors, errorSchema: originalErrorSchema } = this.state;\n const rootPathId = fieldPathId.path[0] || '';\n\n const isRootPath = !path || path.length === 0 || (path.length === 1 && path[0] === rootPathId);\n let retrievedSchema = this.state.retrievedSchema;\n let formData = isRootPath ? newValue : _cloneDeep(oldFormData);\n if (isObject(formData) || Array.isArray(formData)) {\n if (!isRootPath) {\n // If the newValue is not on the root path, then set it into the form data\n _set(formData, path, newValue);\n }\n // Pass true to skip live validation in `getStateFromProps()` since we will do it a bit later\n const newState = this.getStateFromProps(this.props, formData, undefined, undefined, undefined, true);\n formData = newState.formData;\n retrievedSchema = newState.retrievedSchema;\n }\n\n const mustValidate = !noValidate && (liveValidate === true || liveValidate === 'onChange');\n let state: Partial<FormState<T, S, F>> = { formData, schema };\n let newFormData = formData;\n\n if (omitExtraData === true && (liveOmit === true || liveOmit === 'onChange')) {\n newFormData = this.omitExtraData(formData);\n state = {\n formData: newFormData,\n };\n }\n\n if (newErrorSchema) {\n // First check to see if there is an existing validation error on this path...\n // @ts-expect-error TS2590, because getting from the error schema is confusing TS\n const oldValidationError = !isRootPath ? _get(schemaValidationErrorSchema, path) : schemaValidationErrorSchema;\n // If there is an old validation error for this path, assume we are updating it directly\n if (!_isEmpty(oldValidationError)) {\n // Update the originalErrorSchema \"in place\" or replace it if it is the root\n if (!isRootPath) {\n _set(originalErrorSchema, path, newErrorSchema);\n } else {\n originalErrorSchema = newErrorSchema;\n }\n } else {\n if (!customErrors) {\n customErrors = new ErrorSchemaBuilder<T>();\n }\n if (isRootPath) {\n const errors = _get(newErrorSchema, ERRORS_KEY);\n if (errors) {\n // only set errors when there are some\n customErrors.setErrors(errors);\n }\n } else {\n _set(customErrors.ErrorSchema, path, newErrorSchema);\n }\n }\n } else if (customErrors && _get(customErrors.ErrorSchema, [...path, ERRORS_KEY])) {\n // If we have custom errors and the path has an error, then we need to clear it\n customErrors.clearErrors(path);\n }\n // If there are pending changes in the queue, skip live validation since it will happen with the last change\n if (mustValidate && this.pendingChanges.length === 1) {\n const liveValidation = this.liveValidate(\n schema,\n schemaUtils,\n originalErrorSchema,\n newFormData,\n extraErrors,\n customErrors,\n retrievedSchema,\n );\n state = { formData: newFormData, ...liveValidation, customErrors };\n } else if (!noValidate && newErrorSchema) {\n // Merging 'newErrorSchema' into 'errorSchema' to display the custom raised errors.\n const mergedErrors = this.mergeErrors({ errorSchema: originalErrorSchema, errors }, extraErrors, customErrors);\n state = {\n formData: newFormData,\n ...mergedErrors,\n customErrors,\n };\n }\n this.setState(state as FormState<T, S, F>, () => {\n if (onChange) {\n onChange(toIChangeEvent({ ...this.state, ...state }), id);\n }\n // Now remove the change we just completed and call this again\n this.pendingChanges.shift();\n this.processPendingChange();\n });\n }\n\n /**\n * If the retrievedSchema has changed the new retrievedSchema is returned.\n * Otherwise, the old retrievedSchema is returned to persist reference.\n * - This ensures that AJV retrieves the schema from the cache when it has not changed,\n * avoiding the performance cost of recompiling the schema.\n *\n * @param retrievedSchema The new retrieved schema.\n * @returns The new retrieved schema if it has changed, else the old retrieved schema.\n */\n private updateRetrievedSchema(retrievedSchema: S) {\n const isTheSame = deepEquals(retrievedSchema, this.state?.retrievedSchema);\n return isTheSame ? this.state.retrievedSchema : retrievedSchema;\n }\n\n /**\n * Callback function to handle reset form data.\n * - Reset all fields with default values.\n * - Reset validations and errors\n *\n */\n reset = () => {\n // Cast the IS_RESET symbol to T to avoid type issues, we use this symbol to detect reset mode\n const { formData: propsFormData, initialFormData = IS_RESET as T, onChange } = this.props;\n const newState = this.getStateFromProps(\n this.props,\n propsFormData ?? initialFormData,\n undefined,\n undefined,\n undefined,\n true,\n );\n const newFormData = newState.formData;\n const state = {\n formData: newFormData,\n errorSchema: {},\n errors: [] as unknown,\n schemaValidationErrors: [] as unknown,\n schemaValidationErrorSchema: {},\n initialDefaultsGenerated: false,\n customErrors: undefined,\n } as FormState<T, S, F>;\n\n this.setState(state, () => onChange && onChange(toIChangeEvent({ ...this.state, ...state })));\n };\n\n /** Callback function to handle when a field on the form is blurred. Calls the `onBlur` callback for the `Form` if it\n * was provided. Also runs any live validation and/or live omit operations if the flags indicate they should happen\n * during `onBlur`.\n *\n * @param id - The unique `id` of the field that was blurred\n * @param data - The data associated with the field that was blurred\n */\n onBlur = (id: string, data: any) => {\n const { onBlur, omitExtraData, liveOmit, liveValidate } = this.props;\n if (onBlur) {\n onBlur(id, data);\n }\n if ((omitExtraData === true && liveOmit === 'onBlur') || liveValidate === 'onBlur') {\n const { onChange, extraErrors } = this.props;\n const { formData } = this.state;\n let newFormData: T | undefined = formData;\n let state: Partial<FormState<T, S, F>> = { formData: newFormData };\n if (omitExtraData === true && liveOmit === 'onBlur') {\n newFormData = this.omitExtraData(formData);\n state = { formData: newFormData };\n }\n if (liveValidate === 'onBlur') {\n const { schema, schemaUtils, errorSchema, customErrors, retrievedSchema } = this.state;\n const liveValidation = this.liveValidate(\n schema,\n schemaUtils,\n errorSchema,\n newFormData,\n extraErrors,\n customErrors,\n retrievedSchema,\n );\n state = { formData: newFormData, ...liveValidation, customErrors };\n }\n const hasChanges = Object.keys(state)\n // Filter out `schemaValidationErrors` and `schemaValidationErrorSchema` since they aren't IChangeEvent props\n .filter((key) => !key.startsWith('schemaValidation'))\n .some((key) => {\n const oldData = _get(this.state, key);\n const newData = _get(state, key);\n return !deepEquals(oldData, newData);\n });\n this.setState(state as FormState<T, S, F>, () => {\n if (onChange && hasChanges) {\n onChange(toIChangeEvent({ ...this.state, ...state }), id);\n }\n });\n }\n };\n\n /** Callback function to handle when a field on the form is focused. Calls the `onFocus` callback for the `Form` if it\n * was provided.\n *\n * @param id - The unique `id` of the field that was focused\n * @param data - The data associated with the field that was focused\n */\n onFocus = (id: string, data: any) => {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(id, data);\n }\n };\n\n /** Callback function to handle when the form is submitted. First, it prevents the default event behavior. Nothing\n * happens if the target and currentTarget of the event are not the same. It will omit any extra data in the\n * `formData` in the state if `omitExtraData` is true. It will validate the resulting `formData`, reporting errors\n * via the `onError()` callback unless validation is disabled. Finally, it will add in any `extraErrors` and then call\n * back the `onSubmit` callback if it was provided.\n *\n * @param event - The submit HTML form event\n */\n onSubmit = (event: FormEvent<any>) => {\n event.preventDefault();\n if (event.target !== event.currentTarget) {\n return;\n }\n\n event.persist();\n const { omitExtraData, extraErrors, noValidate, onSubmit } = this.props;\n let { formData: newFormData } = this.state;\n\n if (omitExtraData === true) {\n newFormData = this.omitExtraData(newFormData);\n }\n\n if (noValidate || this.validateFormWithFormData(newFormData)) {\n // There are no errors generated through schema validation.\n // Check for user provided errors and update state accordingly.\n const errorSchema = extraErrors || {};\n const errors = extraErrors ? toErrorList(extraErrors) : [];\n this.setState(\n {\n formData: newFormData,\n errors,\n errorSchema,\n schemaValidationErrors: [],\n schemaValidationErrorSchema: {},\n },\n () => {\n if (onSubmit) {\n onSubmit(toIChangeEvent({ ...this.state, formData: newFormData }, 'submitted'), event);\n }\n },\n );\n }\n };\n\n /** Extracts the `GlobalFormOptions` from the given Form `props`\n *\n * @param props - The form props to extract the global form options from\n * @returns - The `GlobalFormOptions` from the props\n * @private\n */\n private getGlobalFormOptions(props: FormProps<T, S, F>): GlobalFormOptions {\n const {\n uiSchema = {},\n experimental_componentUpdateStrategy,\n idSeparator = DEFAULT_ID_SEPARATOR,\n idPrefix = DEFAULT_ID_PREFIX,\n nameGenerator,\n useFallbackUiForUnsupportedType = false,\n } = props;\n const rootFieldId = uiSchema['ui:rootFieldId'];\n // Omit any options that are undefined or null\n return {\n idPrefix: rootFieldId || idPrefix,\n idSeparator,\n useFallbackUiForUnsupportedType,\n ...(experimental_componentUpdateStrategy !== undefined && { experimental_componentUpdateStrategy }),\n ...(nameGenerator !== undefined && { nameGenerator }),\n };\n }\n\n /** Computed the registry for the form using the given `props`, `schema` and `schemaUtils` */\n getRegistry(props: FormProps<T, S, F>, schema: S, schemaUtils: SchemaUtilsType<T, S, F>): Registry<T, S, F> {\n const { translateString: customTranslateString, uiSchema = {} } = props;\n const { fields, templates, widgets, formContext, translateString } = getDefaultRegistry<T, S, F>();\n return {\n fields: { ...fields, ...props.fields },\n templates: {\n ...templates,\n ...props.templates,\n ButtonTemplates: {\n ...templates.ButtonTemplates,\n ...props.templates?.ButtonTemplates,\n },\n },\n widgets: { ...widgets, ...props.widgets },\n rootSchema: schema,\n formContext: props.formContext || formContext,\n schemaUtils,\n translateString: customTranslateString || translateString,\n globalUiOptions: uiSchema[UI_GLOBAL_OPTIONS_KEY],\n globalFormOptions: this.getGlobalFormOptions(props),\n };\n }\n\n /** Provides a function that can be used to programmatically submit the `Form` */\n submit = () => {\n if (this.formElement.current) {\n const submitCustomEvent = new CustomEvent('submit', {\n cancelable: true,\n });\n submitCustomEvent.preventDefault();\n this.formElement.current.dispatchEvent(submitCustomEvent);\n this.formElement.current.requestSubmit();\n }\n };\n\n /** Attempts to focus on the field associated with the `error`. Uses the `property` field to compute path of the error\n * field, then, using the `idPrefix` and `idSeparator` converts that path into an id. Then the input element with that\n * id is attempted to be found using the `formElement` ref. If it is located, then it is focused.\n *\n * @param error - The error on which to focus\n */\n focusOnError(error: RJSFValidationError) {\n const { idPrefix = 'root', idSeparator = '_' } = this.props;\n const { property } = error;\n const path = _toPath(property);\n if (path[0] === '') {\n // Most of the time the `.foo` property results in the first element being empty, so replace it with the idPrefix\n path[0] = idPrefix;\n } else {\n // Otherwise insert the idPrefix into the first location using unshift\n path.unshift(idPrefix);\n }\n\n const elementId = path.join(idSeparator);\n let field = this.formElement.current.elements[elementId];\n if (!field) {\n // if not an exact match, try finding an input starting with the element id (like radio buttons or checkboxes)\n field = this.formElement.current.querySelector(`input[id^=\"${elementId}\"`);\n }\n if (field && field.length) {\n // If we got a list with length > 0\n field = field[0];\n }\n if (field) {\n field.focus();\n }\n }\n\n /** Validates the form using the given `formData`. For use on form submission or on programmatic validation.\n * If `onError` is provided, then it will be called with the list of errors.\n *\n * @param formData - The form data to validate\n * @returns - True if the form is valid, false otherwise.\n */\n validateFormWithFormData = (formData?: T): boolean => {\n const { extraErrors, extraErrorsBlockSubmit, focusOnFirstError, onError } = this.props;\n const { errors: prevErrors } = this.state;\n const schemaValidation = this.validate(formData);\n let errors = schemaValidation.errors;\n let errorSchema = schemaValidation.errorSchema;\n const schemaValidationErrors = errors;\n const schemaValidationErrorSchema = errorSchema;\n const hasError = errors.length > 0 || (extraErrors && extraErrorsBlockSubmit);\n if (hasError) {\n if (extraErrors) {\n const merged = validationDataMerge(schemaValidation, extraErrors);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n if (focusOnFirstError) {\n if (typeof focusOnFirstError === 'function') {\n focusOnFirstError(errors[0]);\n } else {\n this.focusOnError(errors[0]);\n }\n }\n this.setState(\n {\n errors,\n errorSchema,\n schemaValidationErrors,\n schemaValidationErrorSchema,\n },\n () => {\n if (onError) {\n onError(errors);\n } else {\n console.error('Form validation failed', errors);\n }\n },\n );\n } else if (prevErrors.length > 0) {\n this.setState({\n errors: [],\n errorSchema: {},\n schemaValidationErrors: [],\n schemaValidationErrorSchema: {},\n });\n }\n return !hasError;\n };\n\n /** Programmatically validate the form. If `omitExtraData` is true, the `formData` will first be filtered to remove\n * any extra data not in a form field. If `onError` is provided, then it will be called with the list of errors the\n * same way as would happen on form submission.\n *\n * @returns - True if the form is valid, false otherwise.\n */\n validateForm() {\n const { omitExtraData } = this.props;\n let { formData: newFormData } = this.state;\n if (omitExtraData === true) {\n newFormData = this.omitExtraData(newFormData);\n }\n return this.validateFormWithFormData(newFormData);\n }\n\n /** Renders the `Form` fields inside the <form> | `tagName` or `_internalFormWrapper`, rendering any errors if\n * needed along with the submit button or any children of the form.\n */\n render() {\n const {\n children,\n id,\n className = '',\n tagName,\n name,\n method,\n target,\n action,\n autoComplete,\n enctype,\n acceptCharset,\n noHtml5Validate = false,\n disabled,\n readonly,\n showErrorList = 'top',\n _internalFormWrapper,\n } = this.props;\n\n const { schema, uiSchema, formData, errorSchema, fieldPathId, registry } = this.state;\n const { SchemaField: _SchemaField } = registry.fields;\n const { SubmitButton } = registry.templates.ButtonTemplates;\n // The `semantic-ui` and `material-ui` themes have `_internalFormWrapper`s that take an `as` prop that is the\n // PropTypes.elementType to use for the inner tag, so we'll need to pass `tagName` along if it is provided.\n // NOTE, the `as` prop is native to `semantic-ui` and is emulated in the `material-ui` theme\n const as = _internalFormWrapper ? tagName : undefined;\n const FormTag = _internalFormWrapper || tagName || 'form';\n\n let { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions = {} } = getUiOptions<T, S, F>(uiSchema);\n if (disabled) {\n submitOptions = { ...submitOptions, props: { ...submitOptions.props, disabled: true } };\n }\n const submitUiSchema = { [UI_OPTIONS_KEY]: { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions } };\n\n return (\n <FormTag\n className={className ? className : 'rjsf'}\n id={id}\n name={name}\n method={method}\n target={target}\n action={action}\n autoComplete={autoComplete}\n encType={enctype}\n acceptCharset={acceptCharset}\n noValidate={noHtml5Validate}\n onSubmit={this.onSubmit}\n as={as}\n ref={this.formElement}\n >\n {showErrorList === 'top' && this.renderErrors(registry)}\n <_SchemaField\n name=''\n schema={schema}\n uiSchema={uiSchema}\n errorSchema={errorSchema}\n fieldPathId={fieldPathId}\n formData={formData}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n />\n\n {children ? children : <SubmitButton uiSchema={submitUiSchema} registry={registry} />}\n {showErrorList === 'bottom' && this.renderErrors(registry)}\n </FormTag>\n );\n }\n}\n", "import {\n DEFAULT_ID_PREFIX,\n DEFAULT_ID_SEPARATOR,\n englishStringTranslator,\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\nimport fields from './components/fields';\nimport templates from './components/templates';\nimport widgets from './components/widgets';\n\n/** The default registry consists of all the fields, templates and widgets provided in the core implementation,\n * plus an empty `rootSchema` and `formContext. We omit schemaUtils here because it cannot be defaulted without a\n * rootSchema and validator. It will be added into the computed registry later in the Form.\n */\nexport default function getDefaultRegistry<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): Omit<Registry<T, S, F>, 'schemaUtils'> {\n return {\n fields: fields<T, S, F>(),\n templates: templates<T, S, F>(),\n widgets: widgets<T, S, F>(),\n rootSchema: {} as S,\n formContext: {} as F,\n translateString: englishStringTranslator,\n globalFormOptions: {\n idPrefix: DEFAULT_ID_PREFIX,\n idSeparator: DEFAULT_ID_SEPARATOR,\n useFallbackUiForUnsupportedType: false,\n },\n };\n}\n", "import { MouseEvent, useCallback, useMemo, useState } from 'react';\nimport {\n allowAdditionalItems,\n getTemplate,\n getUiOptions,\n getWidget,\n hashObject,\n isCustomWidget,\n isFixedItems,\n isFormDataAvailable,\n optionsList,\n shouldRenderOptionalField,\n toFieldPathId,\n useDeepCompareMemo,\n ITEMS_KEY,\n ID_KEY,\n ArrayFieldTemplateProps,\n ErrorSchema,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n UiSchema,\n UIOptionsType,\n} from '@rjsf/utils';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isObject from 'lodash/isObject';\nimport set from 'lodash/set';\nimport uniqueId from 'lodash/uniqueId';\n\n/** Type used to represent the keyed form data used in the state */\ntype KeyedFormDataType<T> = { key: string; item: T };\n\n/** Used to generate a unique ID for an element in a row */\nfunction generateRowId() {\n return uniqueId('rjsf-array-item-');\n}\n\n/** Converts the `formData` into `KeyedFormDataType` data, using the `generateRowId()` function to create the key\n *\n * @param formData - The data for the form\n * @returns - The `formData` converted into a `KeyedFormDataType` element\n */\nfunction generateKeyedFormData<T>(formData?: T[]): KeyedFormDataType<T>[] {\n return !Array.isArray(formData)\n ? []\n : formData.map((item) => {\n return {\n key: generateRowId(),\n item,\n };\n });\n}\n\n/** Converts `KeyedFormDataType` data into the inner `formData`\n *\n * @param keyedFormData - The `KeyedFormDataType` to be converted\n * @returns - The inner `formData` item(s) in the `keyedFormData`\n */\nfunction keyedToPlainFormData<T>(keyedFormData: KeyedFormDataType<T> | KeyedFormDataType<T>[]): T[] {\n if (Array.isArray(keyedFormData)) {\n return keyedFormData.map((keyedItem) => keyedItem.item);\n }\n return [];\n}\n\n/** Determines whether the item described in the schema is always required, which is determined by whether any item\n * may be null.\n *\n * @param itemSchema - The schema for the item\n * @return - True if the item schema type does not contain the \"null\" type\n */\nfunction isItemRequired<S extends StrictRJSFSchema = RJSFSchema>(itemSchema: S) {\n if (Array.isArray(itemSchema.type)) {\n // While we don't yet support composite/nullable jsonschema types, it's\n // future-proof to check for requirement against these.\n return !itemSchema.type.includes('null');\n }\n // All non-null array item types are inherently required by design\n return itemSchema.type !== 'null';\n}\n\n/** Determines whether more items can be added to the array. If the uiSchema indicates the array doesn't allow adding\n * then false is returned. Otherwise, if the schema indicates that there are a maximum number of items and the\n * `formData` matches that value, then false is returned, otherwise true is returned.\n *\n * @param registry - The registry\n * @param schema - The schema for the field\n * @param formItems - The list of items in the form\n * @param [uiSchema] - The UiSchema for the field\n * @returns - True if the item is addable otherwise false\n */\nfunction canAddItem<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n registry: Registry<T[], S, F>,\n schema: S,\n formItems: T[],\n uiSchema?: UiSchema<T[], S, F>,\n) {\n let { addable } = getUiOptions<T[], S, F>(uiSchema, registry.globalUiOptions);\n if (addable !== false) {\n // if ui:options.addable was not explicitly set to false, we can add\n // another item if we have not exceeded maxItems yet\n if (schema.maxItems !== undefined) {\n addable = formItems.length < schema.maxItems;\n } else {\n addable = true;\n }\n }\n return addable;\n}\n\n/** Helper method to compute item UI schema for both normal and fixed arrays\n * Handles both static object and dynamic function cases\n *\n * @param uiSchema - The parent UI schema containing items definition\n * @param item - The item data\n * @param index - The index of the item\n * @param formContext - The form context\n * @returns The computed UI schema for the item\n */\nfunction computeItemUiSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n uiSchema: UiSchema<T[], S, F>,\n item: T,\n index: number,\n formContext: F,\n): UiSchema<T[], S, F> | undefined {\n if (typeof uiSchema.items === 'function') {\n try {\n // Call the function with item data, index, and form context\n // TypeScript now correctly infers the types thanks to the ArrayElement type in UiSchema\n const result = uiSchema.items(item, index, formContext);\n // Only use the result if it's truthy\n return result as UiSchema<T[], S, F>;\n } catch (e) {\n console.error(`Error executing dynamic uiSchema.items function for item at index ${index}:`, e);\n // Fall back to undefined to allow the field to still render\n return undefined;\n }\n } else {\n // Static object case - preserve undefined to maintain backward compatibility\n return uiSchema.items as UiSchema<T[], S, F> | undefined;\n }\n}\n\n/** Returns the default form information for an item based on the schema for that item. Deals with the possibility\n * that the schema is fixed and allows additional items.\n */\nfunction getNewFormDataRow<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n registry: Registry<T[], S, F>,\n schema: S,\n): T {\n const { schemaUtils } = registry;\n let itemSchema = schema.items as S;\n if (isFixedItems(schema) && allowAdditionalItems(schema)) {\n itemSchema = schema.additionalItems as S;\n }\n // Cast this as a T to work around schema utils being for T[] caused by the FieldProps<T[], S, F> call on the class\n return schemaUtils.getDefaultFormState(itemSchema) as unknown as T;\n}\n\n/** Props used for ArrayAsXxxx type components*/\ninterface ArrayAsFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T, S, F> {\n /** The callback used to update the array when the selector changes */\n onSelectChange: (value: T) => void;\n}\n\n/** Renders an array as a set of checkboxes using the 'select' widget\n */\nfunction ArrayAsMultiSelect<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n fieldPathId,\n uiSchema,\n formData: items = [],\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n placeholder,\n onBlur,\n onFocus,\n registry,\n rawErrors,\n name,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const itemsSchema = schemaUtils.retrieveSchema(schema.items as S, items);\n const enumOptions = optionsList<T[], S, F>(itemsSchema, uiSchema);\n const { widget = 'select', title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n value={items}\n disabled={disabled}\n readonly={readonly}\n required={required}\n label={label}\n hideLabel={!displayLabel}\n placeholder={placeholder}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders an array using the custom widget provided by the user in the `uiSchema`\n */\nfunction ArrayAsCustomWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n fieldPathId,\n uiSchema,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError,\n placeholder,\n onBlur,\n onFocus,\n formData: items = [],\n registry,\n rawErrors,\n name,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const { widget, title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={options}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n value={items}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n required={required}\n label={label}\n hideLabel={!displayLabel}\n placeholder={placeholder}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders an array of files using the `FileWidget`\n */\nfunction ArrayAsFiles<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n uiSchema,\n fieldPathId,\n name,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n onBlur,\n onFocus,\n registry,\n formData: items = [],\n rawErrors,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const { widget = 'files', title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n options={options}\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n schema={schema}\n uiSchema={uiSchema}\n value={items}\n disabled={disabled}\n readonly={readonly}\n required={required}\n registry={registry}\n autofocus={autofocus}\n rawErrors={rawErrors}\n label={label}\n hideLabel={!displayLabel}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders the individual array item using a `SchemaField` along with the additional properties that are needed to\n * render the whole of the `ArrayFieldItemTemplate`.\n */\nfunction ArrayFieldItem<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(props: {\n itemKey: string;\n index: number;\n name: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n hideError: boolean;\n registry: Registry<T[], S, F>;\n uiOptions: UIOptionsType<T[], S, F>;\n parentUiSchema?: UiSchema<T[], S, F>;\n title: string | undefined;\n canAdd: boolean;\n canRemove?: boolean;\n canMoveUp: boolean;\n canMoveDown: boolean;\n itemSchema: S;\n itemData: T[];\n itemUiSchema: UiSchema<T[], S, F> | undefined;\n itemFieldPathId: FieldPathId;\n itemErrorSchema?: ErrorSchema<T[]>;\n autofocus?: boolean;\n onBlur: FieldProps<T[], S, F>['onBlur'];\n onFocus: FieldProps<T[], S, F>['onFocus'];\n onChange: FieldProps<T[], S, F>['onChange'];\n rawErrors?: string[];\n totalItems: number;\n handleAddItem: (event: MouseEvent, index?: number) => void;\n handleCopyItem: (event: MouseEvent, index: number) => void;\n handleRemoveItem: (event: MouseEvent, index: number) => void;\n handleReorderItems: (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => void;\n}) {\n const {\n itemKey,\n index,\n name,\n disabled,\n hideError,\n readonly,\n registry,\n uiOptions,\n parentUiSchema,\n canAdd,\n canRemove = true,\n canMoveUp,\n canMoveDown,\n itemSchema,\n itemData,\n itemUiSchema,\n itemFieldPathId,\n itemErrorSchema,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n rawErrors,\n totalItems,\n title,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n const {\n fields: { ArraySchemaField, SchemaField },\n } = registry;\n const fieldPathId = useDeepCompareMemo<FieldPathId>(itemFieldPathId);\n const ItemSchemaField = ArraySchemaField || SchemaField;\n const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T[], S, F>(\n 'ArrayFieldItemTemplate',\n registry,\n uiOptions,\n );\n const { orderable = true, removable = true, copyable = false } = uiOptions;\n const has: { [key: string]: boolean } = {\n moveUp: orderable && canMoveUp,\n moveDown: orderable && canMoveDown,\n copy: copyable && canAdd,\n remove: removable && canRemove,\n toolbar: false,\n };\n has.toolbar = Object.keys(has).some((key: keyof typeof has) => has[key]);\n\n const onAddItem = useCallback(\n (event: MouseEvent) => {\n handleAddItem(event, index + 1);\n },\n [handleAddItem, index],\n );\n const onCopyItem = useCallback(\n (event: MouseEvent) => {\n handleCopyItem(event, index);\n },\n [handleCopyItem, index],\n );\n const onRemoveItem = useCallback(\n (event: MouseEvent) => {\n handleRemoveItem(event, index);\n },\n [handleRemoveItem, index],\n );\n const onMoveUpItem = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n handleReorderItems(event, index, index - 1);\n },\n [handleReorderItems, index],\n );\n const onMoveDownItem = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n handleReorderItems(event, index, index + 1);\n },\n [handleReorderItems, index],\n );\n\n const templateProps = {\n children: (\n <ItemSchemaField\n name={name}\n title={title}\n index={index}\n schema={itemSchema}\n uiSchema={itemUiSchema}\n formData={itemData}\n errorSchema={itemErrorSchema}\n fieldPathId={fieldPathId}\n required={isItemRequired<S>(itemSchema)}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n autofocus={autofocus}\n rawErrors={rawErrors}\n />\n ),\n buttonsProps: {\n fieldPathId,\n disabled,\n readonly,\n canAdd,\n hasCopy: has.copy,\n hasMoveUp: has.moveUp,\n hasMoveDown: has.moveDown,\n hasRemove: has.remove,\n index: index,\n totalItems,\n onAddItem,\n onCopyItem,\n onRemoveItem,\n onMoveUpItem,\n onMoveDownItem,\n registry,\n schema: itemSchema,\n uiSchema: itemUiSchema,\n },\n itemKey,\n className: 'rjsf-array-item',\n disabled,\n hasToolbar: has.toolbar,\n index,\n totalItems,\n readonly,\n registry,\n schema: itemSchema,\n uiSchema: itemUiSchema,\n parentUiSchema,\n };\n return <ArrayFieldItemTemplate {...templateProps} />;\n}\n\n/** The properties required by the stateless components that render the items using the `ArrayFieldItem` */\ninterface InternalArrayFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T[], S, F> {\n /** The keyedFormData from the `ArrayField` state */\n keyedFormData: KeyedFormDataType<T>[];\n /** The callback used to handle the adding of an item at the given index (or the end, if missing) */\n handleAddItem: (event: MouseEvent, index?: number) => void;\n /** The callback used to handle the copying of the item at the given index, below itself */\n handleCopyItem: (event: MouseEvent, index: number) => void;\n /** The callback used to handle removing an item at the given index */\n handleRemoveItem: (event: MouseEvent, index: number) => void;\n /** The callback used to handle reordering an item at the given index to its newIndex */\n handleReorderItems: (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => void;\n}\n\n/** Renders a normal array without any limitations of length\n */\nfunction NormalArray<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: InternalArrayFieldProps<T, S, F>,\n) {\n const {\n schema,\n uiSchema = {},\n errorSchema,\n fieldPathId,\n formData: formDataFromProps,\n name,\n title,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError = false,\n registry,\n onBlur,\n onFocus,\n rawErrors,\n onChange,\n keyedFormData,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n const fieldTitle = schema.title || title || name;\n const { schemaUtils, fields, formContext, globalFormOptions, globalUiOptions } = registry;\n const { OptionalDataControlsField } = fields;\n const uiOptions = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const _schemaItems: S = isObject(schema.items) ? (schema.items as S) : ({} as S);\n const itemsSchema: S = schemaUtils.retrieveSchema(_schemaItems);\n const formData = keyedToPlainFormData<T>(keyedFormData);\n const renderOptionalField = shouldRenderOptionalField<T[], S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T[]>(formDataFromProps);\n const canAdd = canAddItem<T, S, F>(registry, schema, formData, uiSchema) && (!renderOptionalField || hasFormData);\n const actualFormData = hasFormData ? keyedFormData : [];\n const extraClass = renderOptionalField ? ' rjsf-optional-array-field' : '';\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} />\n ) : undefined;\n const arrayProps: ArrayFieldTemplateProps<T[], S, F> = {\n canAdd,\n items: actualFormData.map((keyedItem, index: number) => {\n const { key, item } = keyedItem;\n // While we are actually dealing with a single item of type T, the types require a T[], so cast\n const itemCast = item as unknown as T[];\n const itemSchema = schemaUtils.retrieveSchema(_schemaItems, itemCast);\n const itemErrorSchema = errorSchema ? (errorSchema[index] as ErrorSchema<T[]>) : undefined;\n const itemFieldPathId = toFieldPathId(index, globalFormOptions, childFieldPathId);\n\n // Compute the item UI schema using the helper method\n const itemUiSchema = computeItemUiSchema<T, S, F>(uiSchema, item, index, formContext);\n\n const itemProps = {\n itemKey: key,\n index,\n name: name && `${name}-${index}`,\n registry,\n uiOptions,\n hideError,\n readonly,\n disabled,\n required,\n title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n canAdd,\n canMoveUp: index > 0,\n canMoveDown: index < formData.length - 1,\n itemSchema,\n itemFieldPathId,\n itemErrorSchema,\n itemData: itemCast,\n itemUiSchema,\n autofocus: autofocus && index === 0,\n onBlur,\n onFocus,\n rawErrors,\n totalItems: keyedFormData.length,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n onChange,\n };\n return <ArrayFieldItem key={key} {...itemProps} />;\n }),\n className: `rjsf-field rjsf-field-array rjsf-field-array-of-${itemsSchema.type}${extraClass}`,\n disabled,\n fieldPathId,\n uiSchema,\n onAddClick: handleAddItem,\n readonly,\n required,\n schema,\n title: fieldTitle,\n formData,\n rawErrors,\n registry,\n optionalDataControl,\n };\n\n const Template = getTemplate<'ArrayFieldTemplate', T[], S, F>('ArrayFieldTemplate', registry, uiOptions);\n return <Template {...arrayProps} />;\n}\n\n/** Renders an array that has a maximum limit of items\n */\nfunction FixedArray<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: InternalArrayFieldProps<T, S, F>,\n) {\n const {\n schema,\n uiSchema = {},\n formData,\n errorSchema,\n fieldPathId,\n name,\n title,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError = false,\n registry,\n onBlur,\n onFocus,\n rawErrors,\n keyedFormData,\n onChange,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n let { formData: items = [] } = props;\n const fieldTitle = schema.title || title || name;\n const { schemaUtils, fields, formContext, globalFormOptions, globalUiOptions } = registry;\n const uiOptions = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const { OptionalDataControlsField } = fields;\n const renderOptionalField = shouldRenderOptionalField<T[], S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T[]>(formData);\n const _schemaItems: S[] = isObject(schema.items) ? (schema.items as S[]) : ([] as S[]);\n const itemSchemas = _schemaItems.map((item: S, index: number) =>\n schemaUtils.retrieveSchema(item, items[index] as unknown as T[]),\n );\n const additionalSchema = isObject(schema.additionalItems)\n ? schemaUtils.retrieveSchema(schema.additionalItems as S, formData)\n : null;\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n if (items.length < itemSchemas.length) {\n // to make sure at least all fixed items are generated\n items = items.concat(new Array(itemSchemas.length - items.length));\n }\n const actualFormData = hasFormData ? keyedFormData : [];\n const extraClass = renderOptionalField ? ' rjsf-optional-array-field' : '';\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} />\n ) : undefined;\n\n // These are the props passed into the render function\n const canAdd =\n canAddItem<T, S, F>(registry, schema, items, uiSchema) &&\n !!additionalSchema &&\n (!renderOptionalField || hasFormData);\n const arrayProps: ArrayFieldTemplateProps<T[], S, F> = {\n canAdd,\n className: `rjsf-field rjsf-field-array rjsf-field-array-fixed-items${extraClass}`,\n disabled,\n fieldPathId,\n formData,\n items: actualFormData.map((keyedItem, index) => {\n const { key, item } = keyedItem;\n // While we are actually dealing with a single item of type T, the types require a T[], so cast\n const itemCast = item as unknown as T[];\n const additional = index >= itemSchemas.length;\n const itemSchema =\n (additional && isObject(schema.additionalItems)\n ? schemaUtils.retrieveSchema(schema.additionalItems as S, itemCast)\n : itemSchemas[index]) || {};\n const itemFieldPathId = toFieldPathId(index, globalFormOptions, childFieldPathId);\n // Compute the item UI schema - handle both static and dynamic cases\n let itemUiSchema: UiSchema<T[], S, F> | undefined;\n if (additional) {\n // For additional items, use additionalItems uiSchema\n itemUiSchema = uiSchema.additionalItems as UiSchema<T[], S, F>;\n } else {\n // For fixed items, uiSchema.items can be an array, a function, or a single object\n if (Array.isArray(uiSchema.items)) {\n itemUiSchema = uiSchema.items[index] as UiSchema<T[], S, F>;\n } else {\n // Use the helper method for function or static object cases\n itemUiSchema = computeItemUiSchema<T, S, F>(uiSchema, item, index, formContext);\n }\n }\n const itemErrorSchema = errorSchema ? (errorSchema[index] as ErrorSchema<T[]>) : undefined;\n\n const itemProps = {\n index,\n itemKey: key,\n name: name && `${name}-${index}`,\n registry,\n uiOptions,\n hideError,\n readonly,\n disabled,\n required,\n title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n canAdd,\n canRemove: additional,\n canMoveUp: index >= itemSchemas.length + 1,\n canMoveDown: additional && index < items.length - 1,\n itemSchema,\n itemData: itemCast,\n itemUiSchema,\n itemFieldPathId,\n itemErrorSchema,\n autofocus: autofocus && index === 0,\n onBlur,\n onFocus,\n rawErrors,\n totalItems: keyedFormData.length,\n onChange,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n };\n return <ArrayFieldItem key={key} {...itemProps} />;\n }),\n onAddClick: handleAddItem,\n readonly,\n required,\n registry,\n schema,\n uiSchema,\n title: fieldTitle,\n errorSchema,\n rawErrors,\n optionalDataControl,\n };\n\n const Template = getTemplate<'ArrayFieldTemplate', T[], S, F>('ArrayFieldTemplate', registry, uiOptions);\n return <Template {...arrayProps} />;\n}\n\ninterface KeyedFormDataState<T = any> {\n /** The keyed form data elements */\n keyedFormData: KeyedFormDataType<T>[];\n /** Updates the keyed form data elements to the given value */\n updateKeyedFormData: (newData: KeyedFormDataType<T>[]) => T[];\n}\n\n/** Type used for the state of the `ArrayField` component */\ntype ArrayFieldState<T> = {\n /** The hash of the last formData passed in */\n formDataHash: string;\n /** The keyed form data elements */\n keyedFormData: KeyedFormDataType<T>[];\n};\n\n/** A custom hook that handles the updating of the keyedFormData from an external `formData` change as well as\n * internally by the `ArrayField`. If there was an external `formData` change, then the `keyedFormData` is recomputed\n * in order to preserve the unique keys from the old `keyedFormData` to the new `formData`. Along with the\n * `keyedFormData` this hook also returns an `updateKeyedFormData()` function for use by the `ArrayField`. The detection\n * of external `formData` are handled by storing the hash of that `formData` along with the `keyedFormData` associated\n * with it. The `updateKeyedFormData()` will update that hash whenever the `keyedFormData` is modified and as well as\n * returning the plain `formData` from the `keyedFormData`.\n */\nfunction useKeyedFormData<T = any>(formData: T[] = []): KeyedFormDataState<T> {\n const newHash = useMemo(() => hashObject(formData), [formData]);\n const [state, setState] = useState<ArrayFieldState<T>>(() => ({\n formDataHash: newHash,\n keyedFormData: generateKeyedFormData<T>(formData),\n }));\n\n let { keyedFormData, formDataHash } = state;\n if (newHash !== formDataHash) {\n const nextFormData = Array.isArray(formData) ? formData : [];\n const previousKeyedFormData = keyedFormData || [];\n keyedFormData =\n nextFormData.length === previousKeyedFormData.length\n ? previousKeyedFormData.map((previousKeyedFormDatum, index) => ({\n key: previousKeyedFormDatum.key,\n item: nextFormData[index],\n }))\n : generateKeyedFormData<T>(nextFormData);\n formDataHash = newHash;\n setState({ formDataHash, keyedFormData });\n }\n\n const updateKeyedFormData = useCallback((newData: KeyedFormDataType<T>[]) => {\n const plainFormData = keyedToPlainFormData(newData);\n const newHash = hashObject(plainFormData);\n setState({ formDataHash: newHash, keyedFormData: newData });\n return plainFormData;\n }, []);\n\n return { keyedFormData, updateKeyedFormData };\n}\n\n/** The `ArrayField` component is used to render a field in the schema that is of type `array`. It supports both normal\n * and fixed array, allowing user to add and remove elements from the array data.\n */\nexport default function ArrayField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T[], S, F>,\n) {\n const { schema, uiSchema, errorSchema, fieldPathId, registry, formData, onChange } = props;\n const { schemaUtils, translateString } = registry;\n const { keyedFormData, updateKeyedFormData } = useKeyedFormData<T>(formData);\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n /** Callback handler for when the user clicks on the add or add at index buttons. Creates a new row of keyed form data\n * either at the end of the list (when index is not specified) or inserted at the `index` when it is, adding it into\n * the state, and then returning `onChange()` with the plain form data converted from the keyed data\n *\n * @param event - The event for the click\n * @param [index] - The optional index at which to add the new data\n */\n const handleAddItem = useCallback(\n (event: MouseEvent, index?: number) => {\n if (event) {\n event.preventDefault();\n }\n\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (index === undefined || i < index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i >= index) {\n set(newErrorSchema, [i + 1], errorSchema[idx]);\n }\n }\n }\n\n const newKeyedFormDataRow: KeyedFormDataType<T> = {\n key: generateRowId(),\n item: getNewFormDataRow<T, S, F>(registry, schema),\n };\n const newKeyedFormData = [...keyedFormData];\n if (index !== undefined) {\n newKeyedFormData.splice(index, 0, newKeyedFormDataRow);\n } else {\n newKeyedFormData.push(newKeyedFormDataRow);\n }\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, registry, schema, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on the copy button on an existing array element. Clones the row of\n * keyed form data at the `index` into the next position in the state, and then returning `onChange()` with the plain\n * form data converted from the keyed data\n *\n * @param index - The index at which the copy button is clicked\n */\n const handleCopyItem = useCallback(\n (event: MouseEvent, index: number) => {\n if (event) {\n event.preventDefault();\n }\n\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i <= index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i > index) {\n set(newErrorSchema, [i + 1], errorSchema[idx]);\n }\n }\n }\n\n const newKeyedFormDataRow: KeyedFormDataType<T> = {\n key: generateRowId(),\n item: cloneDeep(keyedFormData[index].item),\n };\n const newKeyedFormData = [...keyedFormData];\n if (index !== undefined) {\n newKeyedFormData.splice(index + 1, 0, newKeyedFormDataRow);\n } else {\n newKeyedFormData.push(newKeyedFormDataRow);\n }\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on the remove button on an existing array element. Removes the row of\n * keyed form data at the `index` in the state, and then returning `onChange()` with the plain form data converted\n * from the keyed data\n *\n * @param index - The index at which the remove button is clicked\n */\n const handleRemoveItem = useCallback(\n (event: MouseEvent, index: number) => {\n if (event) {\n event.preventDefault();\n }\n // refs #195: revalidate to ensure properly reindexing errors\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i < index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i > index) {\n set(newErrorSchema, [i - 1], errorSchema[idx]);\n }\n }\n }\n const newKeyedFormData = keyedFormData.filter((_, i) => i !== index);\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on one of the move item buttons on an existing array element. Moves the\n * row of keyed form data at the `index` to the `newIndex` in the state, and then returning `onChange()` with the\n * plain form data converted from the keyed data\n *\n * @param index - The index of the item to move\n * @param newIndex - The index to where the item is to be moved\n */\n const handleReorderItems = useCallback(\n (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => {\n if (event) {\n event.preventDefault();\n event.currentTarget.blur();\n }\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i == index) {\n set(newErrorSchema, [newIndex], errorSchema[index]);\n } else if (i == newIndex) {\n set(newErrorSchema, [index], errorSchema[newIndex]);\n } else {\n set(newErrorSchema, [idx], errorSchema[i]);\n }\n }\n }\n\n function reOrderArray() {\n // Copy item\n const _newKeyedFormData = keyedFormData.slice();\n\n // Moves item from index to newIndex\n _newKeyedFormData.splice(index, 1);\n _newKeyedFormData.splice(newIndex, 0, keyedFormData[index]);\n\n return _newKeyedFormData;\n }\n const newKeyedFormData = reOrderArray();\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler used to deal with changing the value of the data in the array at the `index`. Calls the\n * `onChange` callback with the updated form data\n *\n * @param index - The index of the item being changed\n */\n const handleChange = useCallback(\n (value: any, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n onChange(\n // We need to treat undefined items as nulls to have validation.\n // See https://github.com/tdegrunt/jsonschema/issues/206\n value === undefined ? null : value,\n path,\n newErrorSchema as ErrorSchema<T[]>,\n id,\n );\n },\n [onChange],\n );\n\n /** Callback handler used to change the value for a checkbox */\n const onSelectChange = useCallback(\n (value: any) => {\n onChange(value, childFieldPathId.path, undefined, childFieldPathId?.[ID_KEY]);\n },\n [onChange, childFieldPathId],\n );\n\n if (!(ITEMS_KEY in schema)) {\n const uiOptions = getUiOptions<T[], S, F>(uiSchema);\n const UnsupportedFieldTemplate = getTemplate<'UnsupportedFieldTemplate', T[], S, F>(\n 'UnsupportedFieldTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <UnsupportedFieldTemplate\n schema={schema}\n fieldPathId={fieldPathId}\n reason={translateString(TranslatableString.MissingItems)}\n registry={registry}\n />\n );\n }\n const arrayProps = {\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n keyedFormData,\n onChange: handleChange,\n };\n if (schemaUtils.isMultiSelect(schema)) {\n // If array has enum or uniqueItems set to true, call renderMultiSelect() to render the default multiselect widget or a custom widget, if specified.\n return <ArrayAsMultiSelect<T, S, F> {...props} fieldPathId={childFieldPathId} onSelectChange={onSelectChange} />;\n }\n if (isCustomWidget<T[], S, F>(uiSchema)) {\n return <ArrayAsCustomWidget<T, S, F> {...props} fieldPathId={childFieldPathId} onSelectChange={onSelectChange} />;\n }\n if (isFixedItems(schema)) {\n return <FixedArray<T, S, F> {...props} {...arrayProps} />;\n }\n if (schemaUtils.isFilesArray(schema, uiSchema)) {\n return <ArrayAsFiles {...props} fieldPathId={childFieldPathId} onSelectChange={onSelectChange} />;\n }\n return <NormalArray<T, S, F> {...props} {...arrayProps} />;\n}\n", "import { useCallback } from 'react';\nimport {\n getWidget,\n getUiOptions,\n optionsList,\n FieldProps,\n FormContextType,\n EnumOptionsType,\n ErrorSchema,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\nimport isObject from 'lodash/isObject';\n\n/** The `BooleanField` component is used to render a field in the schema is boolean. It constructs `enumOptions` for the\n * two boolean values based on the various alternatives in the schema.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction BooleanField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema,\n name,\n uiSchema,\n fieldPathId,\n formData,\n registry,\n required,\n disabled,\n readonly,\n hideError,\n autofocus,\n title,\n onChange,\n onFocus,\n onBlur,\n rawErrors,\n } = props;\n const { title: schemaTitle } = schema;\n const { widgets, translateString, globalUiOptions } = registry;\n const {\n widget = 'checkbox',\n title: uiTitle,\n // Unlike the other fields, don't use `getDisplayLabel()` since it always returns false for the boolean type\n label: displayLabel = true,\n enumNames,\n ...options\n } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget(schema, widget, widgets);\n const yes = translateString(TranslatableString.YesLabel);\n const no = translateString(TranslatableString.NoLabel);\n let enumOptions: EnumOptionsType<S>[] | undefined;\n const label = uiTitle ?? schemaTitle ?? title ?? name;\n if (Array.isArray(schema.oneOf)) {\n enumOptions = optionsList<T, S, F>(\n {\n oneOf: schema.oneOf\n .map((option) => {\n if (isObject(option)) {\n return {\n ...option,\n title: option.title || (option.const === true ? yes : no),\n };\n }\n return undefined;\n })\n .filter((o: any) => o) as S[], // cast away the error that typescript can't grok is fixed\n } as unknown as S,\n uiSchema,\n );\n } else {\n const enums = schema.enum ?? [true, false];\n if (!enumNames && enums.length === 2 && enums.every((v: any) => typeof v === 'boolean')) {\n enumOptions = [\n {\n value: enums[0],\n label: enums[0] ? yes : no,\n },\n {\n value: enums[1],\n label: enums[1] ? yes : no,\n },\n ];\n } else {\n enumOptions = optionsList<T, S, F>({ enum: enums } as S, uiSchema);\n }\n }\n const onWidgetChange = useCallback(\n (value: T | undefined, errorSchema?: ErrorSchema, id?: string) => {\n // Boolean field change passes an empty path array to the parent field which adds the appropriate path\n return onChange(value, fieldPathId.path, errorSchema, id);\n },\n [onChange, fieldPathId],\n );\n\n return (\n <Widget\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n id={fieldPathId.$id}\n name={name}\n onChange={onWidgetChange}\n onFocus={onFocus}\n onBlur={onBlur}\n label={label}\n hideLabel={!displayLabel}\n value={formData}\n required={required}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n registry={registry}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={fieldPathId.name}\n />\n );\n}\n\nexport default BooleanField;\n", "import {\n FallbackFieldProps,\n FieldPathId,\n FormContextType,\n getTemplate,\n getUiOptions,\n hashObject,\n RJSFSchema,\n StrictRJSFSchema,\n toFieldPathId,\n TranslatableString,\n useDeepCompareMemo,\n} from '@rjsf/utils';\nimport { useMemo, useState } from 'react';\nimport { JSONSchema7TypeName } from 'json-schema';\n\n/**\n * Get the schema for the type selection component.\n * @param title - The translated title for the type selection schema.\n */\nfunction getFallbackTypeSelectionSchema(title: string): RJSFSchema {\n return {\n type: 'string',\n enum: ['string', 'number', 'boolean'],\n default: 'string',\n title: title,\n };\n}\n\n/**\n * Determines the JSON Schema type of the given formData.\n * @param formData - The form data whose type is to be determined.\n */\nfunction getTypeOfFormData(formData: any): JSONSchema7TypeName {\n const dataType = typeof formData;\n if (dataType === 'string' || dataType === 'number' || dataType === 'boolean') {\n return dataType;\n }\n // Treat everything else as a string\n return 'string';\n}\n\n/**\n * Casts the given formData to the specified type.\n * @param formData - The form data to be casted.\n * @param newType - The target type to which the form data should be casted.\n */\nfunction castToNewType<T = any>(formData: T, newType: JSONSchema7TypeName): T {\n switch (newType) {\n case 'string':\n return String(formData) as T;\n case 'number': {\n const castedNumber = Number(formData);\n return (isNaN(castedNumber) ? 0 : castedNumber) as T;\n }\n case 'boolean':\n return Boolean(formData) as T;\n default:\n return formData;\n }\n}\n\n/**\n * The `FallbackField` component is used to render a field for unsupported or unknown schema types. If\n * `useFallbackUiForUnsupportedType` is enabled in the `globalUiOptions`, it provides a type selector\n */\nexport default function FallbackField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FallbackFieldProps<T, S, F>) {\n const {\n id,\n formData,\n displayLabel = true,\n schema,\n name,\n uiSchema,\n required,\n disabled = false,\n readonly = false,\n onBlur,\n onFocus,\n registry,\n fieldPathId,\n onChange,\n errorSchema,\n } = props;\n const { translateString, fields, globalFormOptions } = registry;\n const [type, setType] = useState<JSONSchema7TypeName>(getTypeOfFormData(formData));\n\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n\n const typeSelectorInnerFieldPathId = useDeepCompareMemo<FieldPathId>(\n toFieldPathId('__internal_type_selector', globalFormOptions, fieldPathId),\n );\n\n const schemaTitle = translateString(TranslatableString.Type);\n const typesOptionSchema = useMemo(() => getFallbackTypeSelectionSchema(schemaTitle), [schemaTitle]);\n\n const onTypeChange = (newType: T | undefined) => {\n if (newType != null) {\n setType(newType as JSONSchema7TypeName);\n onChange(castToNewType<T>(formData as T, newType as JSONSchema7TypeName), fieldPathId.path, errorSchema, id);\n }\n };\n\n if (!globalFormOptions.useFallbackUiForUnsupportedType) {\n const UnsupportedFieldTemplate = getTemplate<'UnsupportedFieldTemplate', T, S, F>(\n 'UnsupportedFieldTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <UnsupportedFieldTemplate\n schema={schema}\n fieldPathId={fieldPathId}\n reason={translateString(TranslatableString.UnknownFieldType, [String(schema.type)])}\n registry={registry}\n />\n );\n }\n\n const FallbackFieldTemplate = getTemplate<'FallbackFieldTemplate', T, S, F>(\n 'FallbackFieldTemplate',\n registry,\n uiOptions,\n );\n\n const { SchemaField } = fields;\n\n return (\n <FallbackFieldTemplate\n schema={schema}\n registry={registry}\n typeSelector={\n <SchemaField\n key={formData ? hashObject(formData) : '__empty__'}\n fieldPathId={typeSelectorInnerFieldPathId}\n name={`${name}__fallback_type`}\n schema={typesOptionSchema as S}\n formData={type as T}\n onChange={onTypeChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n hideLabel={!displayLabel}\n disabled={disabled}\n readonly={readonly}\n required={required}\n />\n }\n schemaField={<SchemaField {...props} schema={{ type, title: translateString(TranslatableString.Value) } as S} />}\n />\n );\n}\n", "import { ComponentType, ReactNode } from 'react';\nimport {\n ANY_OF_KEY,\n FieldProps,\n FieldPathId,\n FormContextType,\n GenericObjectType,\n getDiscriminatorFieldFromSchema,\n getTemplate,\n getTestIds,\n getUiOptions,\n hashObject,\n ID_KEY,\n lookupFromFormContext,\n ONE_OF_KEY,\n PROPERTIES_KEY,\n READONLY_KEY,\n RJSFSchema,\n Registry,\n StrictRJSFSchema,\n toFieldPathId,\n UI_OPTIONS_KEY,\n UI_GLOBAL_OPTIONS_KEY,\n UiSchema,\n ITEMS_KEY,\n useDeepCompareMemo,\n} from '@rjsf/utils';\nimport each from 'lodash/each';\nimport flatten from 'lodash/flatten';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport includes from 'lodash/includes';\nimport intersection from 'lodash/intersection';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isString from 'lodash/isString';\nimport isUndefined from 'lodash/isUndefined';\nimport last from 'lodash/last';\nimport set from 'lodash/set';\n\n/** The enumeration of the three different Layout GridTemplate type values\n */\nexport enum GridType {\n ROW = 'ui:row',\n COLUMN = 'ui:col',\n COLUMNS = 'ui:columns',\n CONDITION = 'ui:condition',\n}\n\n/** The enumeration of the different operators within a condition\n */\nexport enum Operators {\n ALL = 'all',\n SOME = 'some',\n NONE = 'none',\n}\n\n/** Type used to represent an object that contains anything */\ntype ConfigObject = Record<string, any>;\n\nexport interface GridProps extends GenericObjectType {\n /** The optional operator to use when comparing a field's value with the expected value for `GridType.CONDITION`\n */\n operator?: Operators;\n /** The optional name of the field from which to get the value for `GridType.CONDITION`\n */\n field?: string;\n /** The optional expected value against which to compare the field's value using the `operator`\n */\n value?: unknown;\n}\n\nexport type GridSchemaType = {\n /** The limited set of props which are keyed using the `GridType` enumeration and return an object\n */\n [gridType in GridType]?: object;\n};\n\n/** The types which comprise the possibilities for the `layoutGridSchema` prop\n */\nexport type LayoutGridSchemaType = GridSchemaType | ConfigObject | string;\n\nexport interface LayoutGridFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T, S, F> {\n /** Optional string or object used to describe the current level of the `LayoutGridField`\n */\n layoutGridSchema?: LayoutGridSchemaType;\n}\n\n/** The regular expression that is used to detect whether a string contains a lookup key\n */\nexport const LOOKUP_REGEX = /^\\$lookup=(.+)/;\n\n/** The constant representing the main layout grid schema option name in the `uiSchema`\n */\nexport const LAYOUT_GRID_UI_OPTION = 'layoutGrid';\n\n/** The constant representing the main layout grid schema option name in the `uiSchema`\n */\nexport const LAYOUT_GRID_OPTION = `ui:${LAYOUT_GRID_UI_OPTION}`;\n\n/** Type used to return options list and whether it has a discriminator */\ntype OneOfOptionsInfoType<S extends StrictRJSFSchema = RJSFSchema> = { options: S[]; hasDiscriminator: boolean };\n\n/** Type used to represent a React-based rendering component */\ntype RenderComponent = ComponentType<any>;\n\n/** Type used to determine what are the UIComponent and props from the grid schema */\ntype UIComponentPropsType = {\n /** The name of the component */\n name: string;\n /** The render component if specified */\n UIComponent: RenderComponent | null;\n /** Any uiProps associated with the render component */\n uiProps: ConfigObject;\n /** The special case where the component is immediately rendered */\n rendered: ReactNode;\n};\n\n/** Returns either the `value` if it is non-nullish or the fallback\n *\n * @param [value] - The potential value to return if it is non-nullish\n * @param [fallback] - The fallback value to return if `value` is nullish\n * @returns - `value` if it is non-nullish otherwise `fallback`\n */\nfunction getNonNullishValue<T = unknown>(value?: T, fallback?: T): T | undefined {\n return value ?? fallback;\n}\n\n/** Detects if a `str` is made up entirely of numeric characters\n *\n * @param str - The string to check to see if it is a numeric index\n * @return - True if the string consists entirely of numeric characters\n */\nfunction isNumericIndex(str: string) {\n return /^\\d+?$/.test(str); // Matches positive integers\n}\n\nconst LAYOUT_GRID_FIELD_TEST_IDS = getTestIds();\n\n/** Computes the uiSchema for the field with `name` from the `uiProps` and `uiSchema` provided. The field UI Schema\n * will always contain a copy of the global options from the `uiSchema` (so they can be passed down) as well as\n * copying them into the local ui options. When the `forceReadonly` flag is true, then the field UI Schema is\n * updated to make \"readonly\" be true. When the `schemaReadonly` flag is true AND the field UI Schema does NOT have\n * the flag already provided, then we also make \"readonly\" true. We always make sure to return the final value of the\n * field UI Schema's \"readonly\" flag as `uiReadonly` along with the `fieldUiSchema` in the return value.\n *\n * @param field - The name of the field to pull the existing UI Schema for\n * @param uiProps - Any props that should be put into the field's uiSchema\n * @param [uiSchema] - The optional UI Schema from which to get the UI schema for the field\n * @param [schemaReadonly] - Optional flag indicating whether the schema indicates the field is readonly\n * @param [forceReadonly] - Optional flag indicating whether the Form itself is in readonly mode\n */\nexport function computeFieldUiSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n field: string,\n uiProps: ConfigObject,\n uiSchema?: UiSchema<T, S, F>,\n schemaReadonly?: boolean,\n forceReadonly?: boolean,\n) {\n const globalUiOptions = get(uiSchema, [UI_GLOBAL_OPTIONS_KEY], {});\n const localUiSchema = get(uiSchema, field);\n const localUiOptions = { ...get(localUiSchema, [UI_OPTIONS_KEY], {}), ...uiProps, ...globalUiOptions };\n const fieldUiSchema = { ...localUiSchema };\n if (!isEmpty(localUiOptions)) {\n set(fieldUiSchema, [UI_OPTIONS_KEY], localUiOptions);\n }\n if (!isEmpty(globalUiOptions)) {\n // pass the global uiOptions down to the field uiSchema so that they can be applied to all nested fields\n set(fieldUiSchema, [UI_GLOBAL_OPTIONS_KEY], globalUiOptions);\n }\n let { readonly: uiReadonly } = getUiOptions<T, S, F>(fieldUiSchema);\n if (forceReadonly === true || (isUndefined(uiReadonly) && schemaReadonly === true)) {\n // If we are forcing all widgets to be readonly, OR the schema indicates it is readonly AND the uiSchema does not\n // have an overriding value, then update the uiSchema to set readonly to true. Doing this will\n uiReadonly = true;\n if (has(localUiOptions, READONLY_KEY)) {\n // If the local options has the key value provided in it, then set that one to true\n set(fieldUiSchema, [UI_OPTIONS_KEY, READONLY_KEY], true);\n } else {\n // otherwise set the `ui:` version\n set(fieldUiSchema, `ui:${READONLY_KEY}`, true);\n }\n }\n return { fieldUiSchema, uiReadonly };\n}\n\n/** Given an `operator`, `datum` and `value` determines whether this condition is considered matching. Matching\n * depends on the `operator`. The `datum` and `value` are converted into arrays if they aren't already and then the\n * contents of the two arrays are compared using the `operator`. When `operator` is All, then the two arrays must be\n * equal to match. When `operator` is SOME then the intersection of the two arrays must have at least one value in\n * common to match. When `operator` is NONE then the intersection of the two arrays must not have any values in common\n * to match.\n *\n * @param [operator] - The optional operator for the condition\n * @param [datum] - The optional datum for the condition, this can be an item or a list of items of type unknown\n * @param [value='$0m3tH1nG Un3xP3cT3d'] The optional value for the condition, defaulting to a highly unlikely value\n * to avoid comparing two undefined elements when `value` was forgotten in the condition definition.\n * This can be an item or a list of items of type unknown\n * @returns - True if the condition matches, false otherwise\n */\nexport function conditionMatches(\n operator?: Operators,\n datum?: unknown,\n value: unknown = '$0m3tH1nG Un3xP3cT3d',\n): boolean {\n const data = flatten([datum]).sort();\n const values = flatten([value]).sort();\n switch (operator) {\n case Operators.ALL:\n return isEqual(data, values);\n case Operators.SOME:\n return intersection(data, values).length > 0;\n case Operators.NONE:\n return intersection(data, values).length === 0;\n default:\n return false;\n }\n}\n\n/** From within the `layoutGridSchema` finds the `children` and any extra `gridProps` from the object keyed by\n * `schemaKey`. If the `children` contains extra `gridProps` and those props contain a `className` string, try to\n * lookup whether that `className` has a replacement value in the `registry` using the `FORM_CONTEXT_LOOKUP_BASE`.\n * When the `className` value contains multiple classNames separated by a space, the lookup will look for a\n * replacement value for each `className` and combine them into one.\n *\n * @param layoutGridSchema - The GridSchemaType instance from which to obtain the `schemaKey` children and extra props\n * @param schemaKey - A `GridType` value, used to get the children and extra props from within the `layoutGridSchema`\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @returns - An object containing the list of `LayoutGridSchemaType` `children` and any extra `gridProps`\n * @throws - A `TypeError` when the `children` is not an array\n */\nexport function findChildrenAndProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n layoutGridSchema: GridSchemaType,\n schemaKey: GridType,\n registry: Registry<T, S, F>,\n) {\n let gridProps: GridProps = {};\n let children = layoutGridSchema[schemaKey];\n if (isPlainObject(children)) {\n const { children: elements, className: toMapClassNames, ...otherProps } = children as ConfigObject;\n children = elements;\n if (toMapClassNames) {\n const classes = toMapClassNames.split(' ');\n const className = classes.map((ele: string) => lookupFromFormContext<T, S, F>(registry, ele, ele)).join(' ');\n gridProps = { ...otherProps, className };\n } else {\n gridProps = otherProps;\n }\n }\n if (!Array.isArray(children)) {\n throw new TypeError(`Expected array for \"${schemaKey}\" in ${JSON.stringify(layoutGridSchema)}`);\n }\n return { children: children as LayoutGridSchemaType[], gridProps };\n}\n\n/** Computes the `rawSchema` and `fieldPathId` for a `schema` and a `potentialIndex`. If the `schema` is of type array,\n * has an `ITEMS_KEY` element and `potentialIndex` represents a numeric value, the element at `ITEMS_KEY` is checked\n * to see if it is an array. If it is AND the `potentialIndex`th element is available, it is used as the `rawSchema`,\n * otherwise the last value of the element is used. If it is not, then the element is used as the `rawSchema`. In\n * either case, an `fieldPathId` is computed for the array index. If the `schema` does not represent an array or the\n * `potentialIndex` is not a numeric value, then `rawSchema` is returned as undefined and given `fieldPathId` is returned\n * as is.\n *\n * @param schema - The schema to generate the fieldPathId for\n * @param fieldPathId - The FieldPathId for the schema\n * @param potentialIndex - A string containing a potential index\n * @returns - An object containing the `rawSchema` and `fieldPathId` of an array item, otherwise an undefined `rawSchema`\n */\nexport function computeArraySchemasIfPresent<S extends StrictRJSFSchema = RJSFSchema>(\n schema: S | undefined,\n fieldPathId: FieldPathId,\n potentialIndex: string,\n): {\n rawSchema?: S;\n fieldPathId: FieldPathId;\n} {\n let rawSchema: S | undefined;\n if (isNumericIndex(potentialIndex) && schema && schema?.type === 'array' && has(schema, ITEMS_KEY)) {\n const index = Number(potentialIndex);\n const items = schema[ITEMS_KEY];\n if (Array.isArray(items)) {\n if (index > items.length) {\n rawSchema = last(items) as S;\n } else {\n rawSchema = items[index] as S;\n }\n } else {\n rawSchema = items as S;\n }\n fieldPathId = {\n [ID_KEY]: fieldPathId[ID_KEY],\n path: [...fieldPathId.path.slice(0, fieldPathId.path.length - 1), index],\n };\n }\n return { rawSchema, fieldPathId };\n}\n\n/** Given a `dottedPath` to a field in the `initialSchema`, iterate through each individual path in the schema until\n * the leaf path is found and returned (along with whether that leaf path `isRequired`) OR no schema exists for an\n * element in the path. If the leaf schema element happens to be a oneOf/anyOf then also return the oneOf/anyOf as\n * `options`.\n *\n * @param registry - The registry\n * @param dottedPath - The dotted-path to the field for which to get the schema\n * @param initialSchema - The initial schema to start the search from\n * @param formData - The formData, useful for resolving a oneOf/anyOf selection in the path hierarchy\n * @param initialFieldIdPath - The initial fieldPathId to start the search from\n * @returns - An object containing the destination schema, isRequired and isReadonly flags for the field and options\n * info if a oneOf/anyOf\n */\nexport function getSchemaDetailsForField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(\n registry: Registry<T, S, F>,\n dottedPath: string,\n initialSchema: S,\n formData: FieldProps<T, S, F>['formData'],\n initialFieldIdPath: FieldPathId,\n): {\n schema?: S;\n isRequired: boolean;\n isReadonly?: boolean;\n optionsInfo?: OneOfOptionsInfoType<S>;\n fieldPathId: FieldPathId;\n} {\n const { schemaUtils, globalFormOptions } = registry;\n let rawSchema: S = initialSchema;\n let fieldPathId = initialFieldIdPath;\n const parts: string[] = dottedPath.split('.');\n const leafPath: string | undefined = parts.pop(); // pop off the last element in the list as the leaf\n let schema: S | undefined = schemaUtils.retrieveSchema(rawSchema, formData); // always returns an object\n let innerData = formData;\n let isReadonly: boolean | undefined = schema.readOnly;\n\n // For all the remaining path parts\n parts.forEach((part) => {\n // dive into the properties of the current schema (when it exists) and get the schema for the next part\n fieldPathId = toFieldPathId(part, globalFormOptions, fieldPathId);\n if (has(schema, PROPERTIES_KEY)) {\n rawSchema = get(schema, [PROPERTIES_KEY, part], {}) as S;\n } else if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // When the schema represents a oneOf/anyOf, find the selected schema for it and grab the inner part\n const selectedSchema = schemaUtils.findSelectedOptionInXxxOf(schema, part, xxx, innerData);\n rawSchema = get(selectedSchema, [PROPERTIES_KEY, part], {}) as S;\n } else {\n const result = computeArraySchemasIfPresent<S>(schema, fieldPathId, part);\n rawSchema = result.rawSchema ?? ({} as S);\n fieldPathId = result.fieldPathId;\n }\n // Now drill into the innerData for the part, returning an empty object by default if it doesn't exist\n innerData = get(innerData, part, {}) as T;\n // Resolve any `$ref`s for the current rawSchema\n schema = schemaUtils.retrieveSchema(rawSchema, innerData);\n isReadonly = getNonNullishValue(schema.readOnly, isReadonly);\n });\n\n let optionsInfo: OneOfOptionsInfoType<S> | undefined;\n let isRequired = false;\n // retrieveSchema will return an empty schema in the worst case scenario, convert it to undefined\n if (isEmpty(schema)) {\n schema = undefined;\n }\n if (schema && leafPath) {\n // When we have both a schema and a leafPath...\n if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // Grab the selected schema for the oneOf/anyOf value for the leafPath using the innerData\n schema = schemaUtils.findSelectedOptionInXxxOf(schema, leafPath, xxx, innerData);\n }\n fieldPathId = toFieldPathId(leafPath, globalFormOptions, fieldPathId);\n isRequired = schema !== undefined && Array.isArray(schema.required) && includes(schema.required, leafPath);\n const result = computeArraySchemasIfPresent<S>(schema, fieldPathId, leafPath);\n if (result.rawSchema) {\n schema = result.rawSchema;\n fieldPathId = result.fieldPathId;\n } else {\n // Now grab the schema from the leafPath of the current schema properties\n schema = get(schema, [PROPERTIES_KEY, leafPath]) as S | undefined;\n // Resolve any `$ref`s for the current schema\n schema = schema ? schemaUtils.retrieveSchema(schema) : schema;\n }\n isReadonly = getNonNullishValue(schema?.readOnly, isReadonly);\n if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // Set the options if we have a schema with a oneOf/anyOf\n const discriminator = getDiscriminatorFieldFromSchema(schema);\n optionsInfo = { options: schema[xxx] as S[], hasDiscriminator: !!discriminator };\n }\n }\n\n return { schema, isRequired, isReadonly, optionsInfo, fieldPathId };\n}\n\n/** Gets the custom render component from the `render`, by either determining that it is either already a function or\n * it is a non-function value that can be used to look up the function in the registry. If no function can be found,\n * null is returned.\n *\n * @param render - The potential render function or lookup name to one\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @returns - Either a render function if available, or null if not\n */\nexport function getCustomRenderComponent<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(render: string | RenderComponent, registry: Registry<T, S, F>): RenderComponent | null {\n let customRenderer = render;\n if (isString(customRenderer)) {\n customRenderer = lookupFromFormContext<T, S, F>(registry, customRenderer);\n }\n if (isFunction(customRenderer)) {\n return customRenderer;\n }\n return null;\n}\n\n/** Extract the `name`, and optional `render` and all other props from the `gridSchema`. We look up the `render` to\n * see if can be resolved to a UIComponent. If `name` does not exist and there is an optional `render` UIComponent, we\n * set the `rendered` component with only specified props for that component in the object.\n *\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @param gridSchema - The string or object that represents the configuration for the grid field\n * @returns - The UIComponentPropsType computed from the gridSchema\n */\nexport function computeUIComponentPropsFromGridSchema<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(registry: Registry<T, S, F>, gridSchema?: string | ConfigObject): UIComponentPropsType {\n let name: string;\n let UIComponent: RenderComponent | null = null;\n let uiProps: ConfigObject = {};\n let rendered: ReactNode | undefined;\n if (isString(gridSchema) || isUndefined(gridSchema)) {\n name = gridSchema ?? '';\n } else {\n const { name: innerName = '', render, ...innerProps } = gridSchema;\n name = innerName;\n uiProps = innerProps;\n if (!isEmpty(uiProps)) {\n // Transform any `$lookup=` in the uiProps props with the appropriate value\n each(uiProps, (prop: ConfigObject, key: string) => {\n if (isString(prop)) {\n const match: string[] | null = LOOKUP_REGEX.exec(prop);\n if (Array.isArray(match) && match.length > 1) {\n const name = match[1];\n uiProps[key] = lookupFromFormContext(registry, name, name);\n }\n }\n });\n }\n UIComponent = getCustomRenderComponent<T, S, F>(render, registry);\n if (!innerName && UIComponent) {\n rendered = <UIComponent {...innerProps} data-testid={LAYOUT_GRID_FIELD_TEST_IDS.uiComponent} />;\n }\n }\n return { name, UIComponent, uiProps, rendered };\n}\n\n/**\n * The props for the LayoutGridFieldChildren component.\n */\ntype LayoutGridFieldChildrenProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The list of strings or objects that represents the configurations for the children fields */\n childrenLayoutGridSchemaId: LayoutGridSchemaType[];\n};\n\n/** Iterates through all the `childrenLayoutGridSchemaId`, rendering a nested `LayoutGridField` for each item in the\n * list, passing all the props for the current `LayoutGridField` along, updating the `schema` by calling\n * `retrieveSchema()` on it to resolve any `$ref`s. In addition to the updated `schema`, each item in\n * `childrenLayoutGridSchemaId` is passed as `layoutGridSchema`.\n *\n * @returns - The nested `LayoutGridField`s\n */\nfunction LayoutGridFieldChildren<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutGridFieldChildrenProps<T, S, F>,\n) {\n const { childrenLayoutGridSchemaId, ...layoutGridFieldProps } = props;\n const { registry, schema: rawSchema, formData } = layoutGridFieldProps;\n const { schemaUtils } = registry;\n const schema = schemaUtils.retrieveSchema(rawSchema, formData);\n return childrenLayoutGridSchemaId.map((layoutGridSchema) => (\n <LayoutGridField<T, S, F>\n {...layoutGridFieldProps}\n key={`layoutGrid-${hashObject(layoutGridSchema)}`}\n schema={schema}\n layoutGridSchema={layoutGridSchema}\n />\n ));\n}\n\n/**\n * Describes the props for LayoutGridCondition, LayoutGridCol, LayoutGridColumns, and LayoutGridRow. This is typically\n * the original props passed through from the nearest ancestor LayoutGridField, plus the layoutGridSchema for the\n * current node.\n */\ntype LayoutFieldProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The string or object that represents the configuration for the grid field */\n layoutGridSchema: GridSchemaType;\n};\n\n/** Renders the `children` of the `GridType.CONDITION` if it passes. The `layoutGridSchema` for the\n * `GridType.CONDITION` is separated into the `children` and other `gridProps`. The `gridProps` are used to extract\n * the `operator`, `field` and `value` of the condition. If the condition matches, then all of the `children` are\n * rendered, otherwise null is returned.\n *\n * @returns - The rendered the children for the `GridType.CONDITION` or null\n */\nfunction LayoutGridCondition<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n const { formData, registry } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.CONDITION, registry);\n const { operator, field = '', value } = gridProps;\n const fieldData = get(formData, field, null);\n if (conditionMatches(operator, fieldData, value)) {\n return <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />;\n }\n return null;\n}\n\n/** Renders a `GridTemplate` as an item. The `layoutGridSchema` for the `GridType.COLUMN` is separated into the\n * `children` and other `gridProps`. The `gridProps` will be spread onto the outer `GridTemplate`. Inside the\n * `GridTemplate` all the `children` are rendered.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.COLUMN`\n */\nfunction LayoutGridCol<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.COLUMN, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return (\n <GridTemplate column data-testid={LAYOUT_GRID_FIELD_TEST_IDS.col} {...gridProps}>\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />\n </GridTemplate>\n );\n}\n\n/** Renders a `GridTemplate` as an item. The `layoutGridSchema` for the `GridType.COLUMNS` is separated into the\n * `children` and other `gridProps`. The `children` is iterated on and `gridProps` will be spread onto the outer\n * `GridTemplate`. Each child will have their own rendered `GridTemplate`.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.COLUMNS`\n */\nfunction LayoutGridColumns<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.COLUMNS, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return children.map((child) => (\n <GridTemplate\n column\n key={`column-${hashObject(child)}`}\n data-testid={LAYOUT_GRID_FIELD_TEST_IDS.col}\n {...gridProps}\n >\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={[child]} />\n </GridTemplate>\n ));\n}\n\n/** Renders a `GridTemplate` as a container. The `layoutGridSchema` for the `GridType.ROW` is separated into the\n * `children` and other `gridProps`. The `gridProps` will be spread onto the outer `GridTemplate`. Inside of the\n * `GridTemplate` all of the `children` are rendered.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.ROW`\n */\nfunction LayoutGridRow<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.ROW, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return (\n <GridTemplate {...gridProps} data-testid={LAYOUT_GRID_FIELD_TEST_IDS.row}>\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />\n </GridTemplate>\n );\n}\n\n/**\n * The props for the LayoutGridFieldComponent.\n */\ntype LayoutGridFieldComponentProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The string or object that represents the configuration for the grid field */\n gridSchema?: ConfigObject | string;\n};\n\n/** Renders the field described by `gridSchema`. If `gridSchema` is not an object, then is will be assumed\n * to be the dotted-path to the field in the schema. Otherwise, we extract the `name`, and optional `render` and all\n * other props. If `name` does not exist and there is an optional `render`, we return the `render` component with only\n * specified props for that component. If `name` exists, we take the name, the initial & root schemas and the formData\n * and get the destination schema, is required state and optional oneOf/anyOf options for it. If the destination\n * schema was located along with oneOf/anyOf options then a `LayoutMultiSchemaField` will be rendered with the\n * `uiSchema`, `errorSchema`, `fieldPathId` and `formData` drilled down to the dotted-path field, spreading any other\n * props from `gridSchema` into the `ui:options`. If the destination schema located without any oneOf/anyOf options,\n * then a `SchemaField` will be rendered with the same props as mentioned in the previous sentence. If no destination\n * schema was located, but a custom render component was found, then it will be rendered with many of the non-event\n * handling props. If none of the previous render paths are valid, then a null is returned.\n *\n * @returns - One of `LayoutMultiSchemaField`, `SchemaField`, a custom render component or null, depending\n */\nfunction LayoutGridFieldComponent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutGridFieldComponentProps<T, S, F>,\n) {\n const {\n gridSchema,\n schema: initialSchema,\n uiSchema,\n errorSchema,\n fieldPathId,\n onBlur,\n onFocus,\n formData,\n readonly,\n registry,\n layoutGridSchema, // Used to pull this out of otherProps since we don't want to pass it through\n ...otherProps\n } = props;\n const { onChange } = otherProps;\n const { fields } = registry;\n const { SchemaField, LayoutMultiSchemaField } = fields;\n\n const uiComponentProps = computeUIComponentPropsFromGridSchema(registry, gridSchema);\n const { name, UIComponent, uiProps } = uiComponentProps;\n const {\n schema,\n isRequired,\n isReadonly,\n optionsInfo,\n fieldPathId: fieldIdSchema,\n } = getSchemaDetailsForField<T, S, F>(registry, name, initialSchema, formData, fieldPathId);\n const memoFieldPathId = useDeepCompareMemo<FieldPathId>(fieldIdSchema);\n\n if (uiComponentProps.rendered) {\n return uiComponentProps.rendered;\n }\n\n if (schema) {\n const Field = optionsInfo?.hasDiscriminator ? LayoutMultiSchemaField : SchemaField;\n // Call this function to get the appropriate UISchema, which will always have its `readonly` state matching the\n // `uiReadonly` flag that it returns. This is done since the `SchemaField` will always defer to the `readonly`\n // state in the uiSchema over anything in the props or schema. Because we are implementing the \"readonly\" state of\n // the `Form` via the prop passed to `LayoutGridField` we need to make sure the uiSchema always has a true value\n // when it is needed\n const { fieldUiSchema, uiReadonly } = computeFieldUiSchema<T, S, F>(name, uiProps, uiSchema, isReadonly, readonly);\n\n return (\n <Field\n data-testid={\n optionsInfo?.hasDiscriminator\n ? LAYOUT_GRID_FIELD_TEST_IDS.layoutMultiSchemaField\n : LAYOUT_GRID_FIELD_TEST_IDS.field\n }\n {...otherProps}\n name={name}\n required={isRequired}\n readonly={uiReadonly}\n schema={schema}\n uiSchema={fieldUiSchema}\n errorSchema={get(errorSchema, name)}\n fieldPathId={memoFieldPathId}\n formData={get(formData, name)}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={optionsInfo?.options}\n registry={registry}\n />\n );\n }\n\n if (UIComponent) {\n return (\n <UIComponent\n data-testid={LAYOUT_GRID_FIELD_TEST_IDS.uiComponent}\n {...otherProps}\n name={name}\n required={isRequired}\n formData={formData}\n readOnly={!!isReadonly || readonly}\n errorSchema={errorSchema}\n uiSchema={uiSchema}\n schema={initialSchema}\n fieldPathId={fieldPathId}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n {...uiProps}\n />\n );\n }\n return null;\n}\n\n/** The `LayoutGridField` will render a schema, uiSchema and formData combination out into a GridTemplate in the shape\n * described in the uiSchema. To define the grid to use to render the elements within a field in the schema, provide in\n * the uiSchema for that field the object contained under a `ui:layoutGrid` element. E.g. (as a JSON object):\n *\n * ```\n * {\n * \"field1\" : {\n * \"ui:field\": \"LayoutGridField\",\n * \"ui:layoutGrid\": {\n * \"ui:row\": { ... }\n * }\n * }\n * }\n * ```\n *\n * The outermost level of a `LayoutGridField` is the `ui:row` that defines the nested rows, columns, and/or condition\n * elements (i.e. \"grid elements\") in the grid. This definition is either a simple \"grid elements\" OR an object with\n * native `GridTemplate` implementation specific props and a `children` array of \"grid elements\". E.g. (as JSON objects):\n *\n * Simple `ui:row` definition, without additional `GridTemplate` props:\n * ```\n * \"ui:row\": [\n * { \"ui:row\"|\"ui:col\"|\"ui:columns\"|\"ui:condition\": ... },\n * ...\n * ]\n * ```\n *\n * Complex `ui:row` definition, with additional `GridTemplate` (this example uses @mui/material/Grid2 native props):\n * ```\n * \"ui:row\": {\n * \"spacing\": 2,\n * \"size\": { md\": 4 },\n * \"alignContent\": \"flex-start\",\n * \"className\": \"GridRow\",\n * \"children\": [\n * { \"ui:row\"|\"ui:col\"|\"ui:columns\"|\"ui:condition\": ... },\n * ...\n * ]\n * }\n * ```\n *\n * NOTE: Special note about the native `className` prop values. All className values will automatically be looked up in\n * the `formContext.lookupMap` in case they have been defined using a CSS-in-JS approach. In other words, from the\n * example above, if the `Form` was constructed with a `lookupMap` set to `{ GridRow: cssInJs.GridRowClass }`\n * then when rendered, the native `GridTemplate` will get the `className` with the value from\n * `cssInJs.GridRowClass`. This automatic lookup will happen for any of the \"grid elements\" when rendering with\n * `GridTemplate` props. If multiple className values are present, for example:\n * `{ className: 'GridRow GridColumn' }`, the classNames are split apart, looked up individually, and joined\n * together to form one className with the values from `cssInJs.GridRowClass` and `cssInJs.GridColumnClass`.\n *\n * The `ui:col` grid element is used to specify the list of columns within a grid row. A `ui:col` element can take on\n * several forms: 1) a simple list of dotted-path field names within the root field; 2) a list of objects containing the\n * dotted-path field `name` any other props that are gathered into `ui:options` for the field; 3) a list with a one-off\n * `render` functional component with or without a non-field `name` identifier and any other to-be-spread props; and\n * 4) an object with native `GridTemplate` implementation specific props and a `children` array with 1) or 2) or even a\n * nested `ui:row` or a `ui:condition` containing a `ui:row` (although this should be used carefully). E.g.\n * (as JSON objects):\n *\n * Simple `ui:col` definition, without additional `GridTemplate` props and form 1 only children:\n * ```\n * \"ui:col\": [\"innerField\", \"inner.grandChild\", ...]\n * ```\n *\n * Complicated `ui:col` definition, without additional `GridTemplate` props and form 2 only children:\n * ```\n * \"ui:col\": [\n * { \"name\": \"innerField\", \"fullWidth\": true },\n * { \"name\": \"inner.grandChild\", \"convertOther\": true },\n * ...\n * ]\n * ```\n *\n * More complicated `ui:col` definition, without additional `GridTemplate` props and form 2 children, one being a\n * one-off `render` functional component without a non-field `name` identifier\n * ```\n * \"ui:col\": [\n * \"innerField\",\n * {\n * \"render\": \"WizardNavButton\",\n * \"isNext\": true,\n * \"size\": \"large\"\n * }\n * ]\n * ```\n *\n * Most complicated `ui:col` definition, additional `GridTemplate` props and form 1, 2 and 3 children (this example\n * uses @mui/material/Grid2 native props):\n * ```\n * \"ui:col\": {\n * \"size\": { \"md\": 4 },\n * \"className\": \"GridColumn\",\n * \"children\": [\n * \"innerField\",\n * { \"name\": \"inner.grandChild\", \"convertOther\": true },\n * { \"name\": \"customRender\", \"render\": \"CustomRender\", toSpread: \"prop-value\" }\n * { \"ui:row|ui:condition\": ... }\n * ...\n * ]\n * }\n * ```\n *\n * NOTE: If a `name` prop does not exist or its value does not match any field in a schema, then it is assumed to be a\n * custom `render` component. If the `render` prop does not exist, a null render will occur. If `render` is a\n * string, its value will be looked up in the `formContext.lookupMap` first before defaulting to a null render.\n *\n * The `ui:columns` grid element is syntactic sugar to specify a set of `ui:col` columns that all share the same set of\n * native `GridTemplate` props. In other words rather than writing the following configuration that renders a\n * `<GridTemplate>` element with 3 `<GridTemplate column className=\"GridColumn col-md-4\">` nodes and 2\n * `<GridTemplate column className=\"col-md-6\">` nodes within it (one for each of the fields contained in the `children`\n * list):\n *\n * ```\n * \"ui:row\": {\n * \"children\": [\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"innerField\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"inner.grandChild\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [{ \"name\": \"inner.grandChild2\" }],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"innerField2\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"inner.grandChild3\"],\n * }\n * },\n\n * ]\n * }\n * ```\n *\n * One can write this instead:\n * ```\n * \"ui:row\": {\n * \"children\": [\n * {\n * \"ui:columns\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"innerField\", \"inner.grandChild\", { \"name\": \"inner.grandChild2\", \"convertOther\": true }],\n * }\n * },\n * {\n * \"ui:columns\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"innerField2\", \"inner.grandChild3\"],\n * }\n * }\n * ]\n * }\n * ```\n *\n * NOTE: This syntax differs from\n * `\"ui:col\": { \"className\": \"col-md-6\", \"children\": [\"innerField2\", \"inner.grandChild3\"] }` in that\n * the `ui:col` will render the two children fields inside a single `<GridTemplate \"className\": \"col-md-6\",>`\n * element.\n *\n * The final grid element, `ui:condition`, allows for conditionally displaying \"grid elements\" within a row based on the\n * current value of a field as it relates to a (list of) hard-coded value(s). There are four elements that make up a\n * `ui:condition`: 1) the dotted-path `field` name within the root field that makes up the left-side of the condition;\n * 2) the hard-coded `value` (single or list) that makes up the right-side of the condition; 3) the `operator` that\n * controls how the left and right sides of the condition are compared; and 4) the `children` array that defines the\n * \"grid elements\" to display if the condition passes.\n *\n * A `ui:condition` uses one of three `operators` when deciding if a condition passes: 1) The `all` operator will pass\n * when the right-side and left-side contains all the same value(s); 2) the `some` operator will pass when the\n * right-side and left-side contain as least one value in common; 3) the `none` operator will pass when the right-side\n * and left-side do not contain any values in common. E.g. (as JSON objects):\n *\n * Here is how to render an if-then-else for `field2` which is an enum that has 3 known values and supports allowing\n * any other value:\n * ```\n * \"ui:row\": [\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"all\",\n * \"value\": \"value1\",\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * },\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"some\",\n * \"value\": [\"value2\", \"value3\"],\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * },\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"none\",\n * \"value\": [\"value1\", \"value2\", \"value3\"],\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * }\n * ]\n * ```\n */\nexport default function LayoutGridField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: LayoutGridFieldProps<T, S, F>) {\n /** Render the `LayoutGridField`. If there isn't a `layoutGridSchema` prop defined, then try pulling it out of the\n * `uiSchema` via `ui:LayoutGridField`. If `layoutGridSchema` is an object, then check to see if any of the properties\n * match one of the `GridType`s. If so, call the appropriate render function for the type. Otherwise, just call the\n * generic `renderField()` function with the `layoutGridSchema`.\n */\n const { uiSchema } = props;\n let { layoutGridSchema } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n if (!layoutGridSchema && LAYOUT_GRID_UI_OPTION in uiOptions && isObject(uiOptions[LAYOUT_GRID_UI_OPTION])) {\n layoutGridSchema = uiOptions[LAYOUT_GRID_UI_OPTION];\n }\n\n if (isObject(layoutGridSchema)) {\n if (GridType.ROW in layoutGridSchema) {\n return <LayoutGridRow {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.COLUMN in layoutGridSchema) {\n return <LayoutGridCol {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.COLUMNS in layoutGridSchema) {\n return <LayoutGridColumns {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.CONDITION in layoutGridSchema) {\n return <LayoutGridCondition {...props} layoutGridSchema={layoutGridSchema} />;\n }\n }\n return <LayoutGridFieldComponent {...props} gridSchema={layoutGridSchema} />;\n}\n\nLayoutGridField.TEST_IDS = LAYOUT_GRID_FIELD_TEST_IDS;\n", "import {\n getTemplate,\n getUiOptions,\n titleId,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TemplatesType,\n} from '@rjsf/utils';\n\n/** The `LayoutHeaderField` component renders a `TitleFieldTemplate` with an `id` derived from the `fieldPathId`\n * and whether it is `required` from the props. The `title` is derived from the props as follows:\n * - If there is a title in the `uiSchema`, it is displayed\n * - Else, if there is an explicit `title` passed in the props, it is displayed\n * - Otherwise, if there is a title in the `schema`, it is displayed\n * - Finally, the `name` prop is displayed as the title\n *\n * @param props - The `LayoutHeaderField` for the component\n */\nexport default function LayoutHeaderField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const { fieldPathId, title, schema, uiSchema, required, registry, name } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { title: uiTitle } = options;\n const { title: schemaTitle } = schema;\n const fieldTitle = uiTitle || title || schemaTitle || name;\n if (!fieldTitle) {\n return null;\n }\n const TitleFieldTemplate: TemplatesType<T, S, F>['TitleFieldTemplate'] = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n );\n return (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={fieldTitle}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n}\n", "import { useState, useEffect } from 'react';\nimport {\n ANY_OF_KEY,\n CONST_KEY,\n DEFAULT_KEY,\n EnumOptionsType,\n ERRORS_KEY,\n FieldProps,\n FormContextType,\n getDiscriminatorFieldFromSchema,\n hashObject,\n ID_KEY,\n ONE_OF_KEY,\n optionsList,\n PROPERTIES_KEY,\n RJSFSchema,\n getTemplate,\n getUiOptions,\n getWidget,\n SchemaUtilsType,\n StrictRJSFSchema,\n UiSchema,\n} from '@rjsf/utils';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport noop from 'lodash/noop';\nimport omit from 'lodash/omit';\nimport set from 'lodash/set';\n\n/** Gets the selected option from the list of `options`, using the `selectorField` to search inside each `option` for\n * the `properties[selectorField].default(or const)` that matches the given `value`.\n *\n * @param options - The list of schemas each representing a choice in the `oneOf`\n * @param selectorField - The name of the field that is common in all of the schemas that represents the selector field\n * @param value - The current value of the selector field from the data\n */\nexport function getSelectedOption<S extends StrictRJSFSchema = RJSFSchema>(\n options: EnumOptionsType<S>[],\n selectorField: string,\n value: unknown,\n): S | undefined {\n const defaultValue = '!@#!@$@#$!@$#';\n const schemaOptions: S[] = options.map(({ schema }) => schema!);\n return schemaOptions.find((option) => {\n const selector = get(option, [PROPERTIES_KEY, selectorField]);\n const result = get(selector, DEFAULT_KEY, get(selector, CONST_KEY, defaultValue));\n return result === value;\n });\n}\n\n/** Computes the `enumOptions` array from the schema and options.\n *\n * @param schema - The schema that contains the `options`\n * @param options - The options from the `schema`\n * @param schemaUtils - The SchemaUtilsType object used to call retrieveSchema,\n * @param [uiSchema] - The optional uiSchema for the schema\n * @param [formData] - The optional formData associated with the schema\n * @returns - The list of enumOptions for the `schema` and `options`\n * @throws - Error when no enum options were computed\n */\nexport function computeEnumOptions<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n schema: S,\n options: S[],\n schemaUtils: SchemaUtilsType<T, S, F>,\n uiSchema?: UiSchema<T, S, F>,\n formData?: T,\n): EnumOptionsType<S>[] {\n const realOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n let tempSchema = schema;\n if (has(schema, ONE_OF_KEY)) {\n tempSchema = { ...schema, [ONE_OF_KEY]: realOptions };\n } else if (has(schema, ANY_OF_KEY)) {\n tempSchema = { ...schema, [ANY_OF_KEY]: realOptions };\n }\n const enumOptions = optionsList<T, S, F>(tempSchema, uiSchema);\n if (!enumOptions) {\n throw new Error(`No enumOptions were computed from the schema ${JSON.stringify(tempSchema)}`);\n }\n return enumOptions;\n}\n\n/** The `LayoutMultiSchemaField` is an adaptation of the `MultiSchemaField` but changed considerably to only\n * support `anyOf`/`oneOf` fields that are being displayed in a `LayoutGridField` where the field selection is shown as\n * a radio group by default. It expects that a `selectorField` is provided (either directly via the `discriminator`\n * field or indirectly via `ui:optionsSchemaSelector` in the `uiSchema`) to help determine which `anyOf`/`oneOf` schema\n * is active. If no `selectorField` is specified, then an error is thrown.\n */\nexport default function LayoutMultiSchemaField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const {\n name,\n baseType,\n disabled = false,\n formData,\n fieldPathId,\n onBlur,\n onChange,\n options,\n onFocus,\n registry,\n uiSchema,\n schema,\n autofocus,\n readonly,\n required,\n errorSchema,\n hideError = false,\n } = props;\n const { widgets, schemaUtils, globalUiOptions } = registry;\n const [enumOptions, setEnumOptions] = useState(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData)!);\n const id = get(fieldPathId, ID_KEY);\n const discriminator = getDiscriminatorFieldFromSchema(schema);\n const FieldErrorTemplate = getTemplate<'FieldErrorTemplate', T, S, F>('FieldErrorTemplate', registry, options);\n const FieldTemplate = getTemplate<'FieldTemplate', T, S, F>('FieldTemplate', registry, options);\n const schemaHash = hashObject(schema);\n const optionsHash = hashObject(options);\n const uiSchemaHash = uiSchema ? hashObject(uiSchema) : '';\n const formDataHash = formData ? hashObject(formData) : '';\n\n useEffect(() => {\n setEnumOptions(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData));\n // We are using hashes in place of the dependencies\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [schemaHash, optionsHash, schemaUtils, uiSchemaHash, formDataHash]);\n const {\n widget = discriminator ? 'radio' : 'select',\n title = '',\n placeholder = '',\n optionsSchemaSelector: selectorField = discriminator,\n hideError: uiSchemaHideError,\n ...uiOptions\n } = getUiOptions<T, S, F>(uiSchema);\n if (!selectorField) {\n throw new Error('No selector field provided for the LayoutMultiSchemaField');\n }\n const selectedOption = get(formData, selectorField);\n let optionSchema: S = get(enumOptions[0]?.schema, [PROPERTIES_KEY, selectorField], {}) as S;\n const option = getSelectedOption<S>(enumOptions, selectorField, selectedOption);\n // If the subschema doesn't declare a type, infer the type from the parent schema\n optionSchema = optionSchema?.type ? optionSchema : ({ ...optionSchema, type: option?.type || baseType } as S);\n const Widget = getWidget<T, S, F>(optionSchema!, widget, widgets);\n\n // The following code was copied from `@rjsf`'s `SchemaField`\n // Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children\n const hideFieldError = uiSchemaHideError === undefined ? hideError : Boolean(uiSchemaHideError);\n\n const rawErrors = get(errorSchema, [ERRORS_KEY], []) as string[];\n const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n /** Callback function that updates the selected option and adjusts the form data based on the structure of the new\n * option, calling the `onChange` callback with the adjusted formData.\n *\n * @param opt - If the option is undefined, we are going to clear the selection otherwise we\n * will use it as the index of the new option to select\n */\n const onOptionChange = (opt?: unknown) => {\n const newOption = getSelectedOption<S>(enumOptions, selectorField, opt);\n const oldOption = getSelectedOption<S>(enumOptions, selectorField, selectedOption);\n\n let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);\n if (newFormData && newOption) {\n // Call getDefaultFormState to make sure defaults are populated on change.\n newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren') as T;\n }\n if (newFormData) {\n set(newFormData, selectorField, opt);\n }\n // Pass the component name in the path\n onChange(newFormData, fieldPathId.path, undefined, id);\n };\n\n // filtering the options based on the type of widget because `selectField` does not recognize the `convertOther` prop\n const widgetOptions = { enumOptions, ...uiOptions };\n const errors =\n !hideFieldError && rawErrors.length > 0 ? (\n <FieldErrorTemplate fieldPathId={fieldPathId} schema={schema} errors={rawErrors} registry={registry} />\n ) : undefined;\n\n return (\n <FieldTemplate\n id={id}\n schema={schema}\n label={(title || schema.title) ?? ''}\n disabled={disabled || (Array.isArray(enumOptions) && isEmpty(enumOptions))}\n uiSchema={uiSchema}\n required={required}\n readonly={!!readonly}\n registry={registry}\n displayLabel={displayLabel}\n errors={errors}\n onChange={onChange}\n onKeyRename={noop}\n onKeyRenameBlur={noop}\n onRemoveProperty={noop}\n >\n <Widget\n id={id}\n name={name}\n schema={schema}\n label={(title || schema.title) ?? ''}\n disabled={disabled || (Array.isArray(enumOptions) && isEmpty(enumOptions))}\n uiSchema={uiSchema}\n autofocus={autofocus}\n readonly={readonly}\n required={required}\n registry={registry}\n multiple={false}\n rawErrors={rawErrors}\n hideError={hideFieldError}\n hideLabel={!displayLabel}\n errorSchema={fieldErrorSchema}\n placeholder={placeholder}\n onChange={onOptionChange}\n onBlur={onBlur}\n onFocus={onFocus}\n value={selectedOption}\n options={widgetOptions}\n htmlName={fieldPathId.name}\n />\n </FieldTemplate>\n );\n}\n", "import { Component } from 'react';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport {\n ANY_OF_KEY,\n deepEquals,\n ERRORS_KEY,\n FieldProps,\n FormContextType,\n getDiscriminatorFieldFromSchema,\n getTemplate,\n getUiOptions,\n getWidget,\n isFormDataAvailable,\n mergeSchemas,\n ONE_OF_KEY,\n RJSFSchema,\n shouldRenderOptionalField,\n StrictRJSFSchema,\n TranslatableString,\n UiSchema,\n} from '@rjsf/utils';\n\n/** Type used for the state of the `AnyOfField` component */\ntype AnyOfFieldState<S extends StrictRJSFSchema = RJSFSchema> = {\n /** The currently selected option */\n selectedOption: number;\n /** The option schemas after retrieving all $refs */\n retrievedOptions: S[];\n};\n\n/** The `AnyOfField` component is used to render a field in the schema that is an `anyOf`, `allOf` or `oneOf`. It tracks\n * the currently selected option and cleans up any irrelevant data in `formData`.\n *\n * @param props - The `FieldProps` for this template\n */\nclass AnyOfField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> extends Component<\n FieldProps<T, S, F>,\n AnyOfFieldState<S>\n> {\n /** Constructs an `AnyOfField` with the given `props` to initialize the initially selected option in state\n *\n * @param props - The `FieldProps` for this template\n */\n constructor(props: FieldProps<T, S, F>) {\n super(props);\n\n const {\n formData,\n options,\n registry: { schemaUtils },\n } = this.props;\n // cache the retrieved options in state in case they have $refs to save doing it later\n const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n\n this.state = {\n retrievedOptions,\n selectedOption: this.getMatchingOption(0, formData, retrievedOptions),\n };\n }\n\n /** React lifecycle method that is called when the props and/or state for this component is updated. It recomputes the\n * currently selected option based on the overall `formData`\n *\n * @param prevProps - The previous `FieldProps` for this template\n * @param prevState - The previous `AnyOfFieldState` for this template\n */\n componentDidUpdate(prevProps: Readonly<FieldProps<T, S, F>>, prevState: Readonly<AnyOfFieldState>) {\n const { formData, options, fieldPathId } = this.props;\n const { selectedOption } = this.state;\n let newState = this.state;\n if (!deepEquals(prevProps.options, options)) {\n const {\n registry: { schemaUtils },\n } = this.props;\n // re-cache the retrieved options in state in case they have $refs to save doing it later\n const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n newState = { selectedOption, retrievedOptions };\n }\n if (!deepEquals(formData, prevProps.formData) && fieldPathId.$id === prevProps.fieldPathId.$id) {\n const { retrievedOptions } = newState;\n const matchingOption = this.getMatchingOption(selectedOption, formData, retrievedOptions);\n\n if (prevState && matchingOption !== selectedOption) {\n newState = { selectedOption: matchingOption, retrievedOptions };\n }\n }\n if (newState !== this.state) {\n this.setState(newState);\n }\n }\n\n /** Determines the best matching option for the given `formData` and `options`.\n *\n * @param formData - The new formData\n * @param options - The list of options to choose from\n * @return - The index of the `option` that best matches the `formData`\n */\n getMatchingOption(selectedOption: number, formData: T | undefined, options: S[]) {\n const {\n schema,\n registry: { schemaUtils },\n } = this.props;\n\n const discriminator = getDiscriminatorFieldFromSchema<S>(schema);\n const option = schemaUtils.getClosestMatchingOption(formData, options, selectedOption, discriminator);\n return option;\n }\n\n /** Callback handler to remember what the currently selected option is. In addition to that the `formData` is updated\n * to remove properties that are not part of the newly selected option schema, and then the updated data is passed to\n * the `onChange` handler.\n *\n * @param option - The new option value being selected\n */\n onOptionChange = (option?: string) => {\n const { selectedOption, retrievedOptions } = this.state;\n const { formData, onChange, registry, fieldPathId } = this.props;\n const { schemaUtils } = registry;\n const intOption = option !== undefined ? parseInt(option, 10) : -1;\n if (intOption === selectedOption) {\n return;\n }\n const newOption = intOption >= 0 ? retrievedOptions[intOption] : undefined;\n const oldOption = selectedOption >= 0 ? retrievedOptions[selectedOption] : undefined;\n\n let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);\n if (newOption) {\n // Call getDefaultFormState to make sure defaults are populated on change. Pass \"excludeObjectChildren\"\n // so that only the root objects themselves are created without adding undefined children properties\n newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren') as T;\n }\n\n this.setState({ selectedOption: intOption }, () => {\n onChange(newFormData, fieldPathId.path, undefined, this.getFieldId());\n });\n };\n\n getFieldId() {\n const { fieldPathId, schema } = this.props;\n return `${fieldPathId.$id}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`;\n }\n\n /** Renders the `AnyOfField` selector along with a `SchemaField` for the value of the `formData`\n */\n render() {\n const {\n name,\n disabled = false,\n errorSchema = {},\n formData,\n onBlur,\n onFocus,\n readonly,\n required = false,\n registry,\n schema,\n uiSchema,\n } = this.props;\n\n const { widgets, fields, translateString, globalUiOptions, schemaUtils } = registry;\n const { SchemaField: _SchemaField } = fields;\n const MultiSchemaFieldTemplate = getTemplate<'MultiSchemaFieldTemplate', T, S, F>(\n 'MultiSchemaFieldTemplate',\n registry,\n globalUiOptions,\n );\n const isOptionalRender = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n\n const { selectedOption, retrievedOptions } = this.state;\n const {\n widget = 'select',\n placeholder,\n autofocus,\n autocomplete,\n title = schema.title,\n ...uiOptions\n } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T, S, F>({ type: 'number' }, widget, widgets);\n const rawErrors = get(errorSchema, ERRORS_KEY, []);\n const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n const option = selectedOption >= 0 ? retrievedOptions[selectedOption] || null : null;\n let optionSchema: S | undefined | null;\n\n if (option) {\n // merge top level required field\n const { required } = schema;\n // Merge in all the non-oneOf/anyOf properties and also skip the special ADDITIONAL_PROPERTY_FLAG property\n optionSchema = required ? (mergeSchemas({ required }, option) as S) : option;\n }\n\n // First we will check to see if there is an anyOf/oneOf override for the UI schema\n let optionsUiSchema: UiSchema<T, S, F>[] = [];\n if (ONE_OF_KEY in schema && uiSchema && ONE_OF_KEY in uiSchema) {\n if (Array.isArray(uiSchema[ONE_OF_KEY])) {\n optionsUiSchema = uiSchema[ONE_OF_KEY];\n } else {\n console.warn(`uiSchema.oneOf is not an array for \"${title || name}\"`);\n }\n } else if (ANY_OF_KEY in schema && uiSchema && ANY_OF_KEY in uiSchema) {\n if (Array.isArray(uiSchema[ANY_OF_KEY])) {\n optionsUiSchema = uiSchema[ANY_OF_KEY];\n } else {\n console.warn(`uiSchema.anyOf is not an array for \"${title || name}\"`);\n }\n }\n // Then we pick the one that matches the selected option index, if one exists otherwise default to the main uiSchema\n let optionUiSchema = uiSchema;\n if (selectedOption >= 0 && optionsUiSchema.length > selectedOption) {\n optionUiSchema = optionsUiSchema[selectedOption];\n }\n\n const translateEnum: TranslatableString = title\n ? TranslatableString.TitleOptionPrefix\n : TranslatableString.OptionPrefix;\n const translateParams = title ? [title] : [];\n const enumOptions = retrievedOptions.map((opt: { title?: string }, index: number) => {\n // Also see if there is an override title in the uiSchema for each option, otherwise use the title from the option\n const { title: uiTitle = opt.title } = getUiOptions<T, S, F>(optionsUiSchema[index]);\n return {\n label: uiTitle || translateString(translateEnum, translateParams.concat(String(index + 1))),\n value: index,\n };\n });\n\n const selector =\n !isOptionalRender || hasFormData ? (\n <Widget\n id={this.getFieldId()}\n name={`${name}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`}\n schema={{ type: 'number', default: 0 } as S}\n onChange={this.onOptionChange}\n onBlur={onBlur}\n onFocus={onFocus}\n disabled={disabled || isEmpty(enumOptions)}\n multiple={false}\n rawErrors={rawErrors}\n errorSchema={fieldErrorSchema}\n value={selectedOption >= 0 ? selectedOption : undefined}\n options={{ enumOptions, ...uiOptions }}\n registry={registry}\n placeholder={placeholder}\n autocomplete={autocomplete}\n autofocus={autofocus}\n label={title ?? name}\n hideLabel={!displayLabel}\n readonly={readonly}\n />\n ) : undefined;\n\n const optionsSchemaField =\n (optionSchema && optionSchema.type !== 'null' && (\n <_SchemaField {...this.props} schema={optionSchema} uiSchema={optionUiSchema} />\n )) ||\n null;\n\n return (\n <MultiSchemaFieldTemplate\n schema={schema}\n registry={registry}\n uiSchema={uiSchema}\n selector={selector}\n optionSchemaField={optionsSchemaField}\n />\n );\n }\n}\n\nexport default AnyOfField;\n", "import { useState, useCallback } from 'react';\nimport {\n asNumber,\n ErrorSchema,\n FieldPathList,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n// Matches a string that ends in a . character, optionally followed by a sequence of\n// digits followed by any number of 0 characters up until the end of the line.\n// Ensuring that there is at least one prefixed character is important so that\n// you don't incorrectly match against \"0\".\nconst trailingCharMatcherWithPrefix = /\\.([0-9]*0)*$/;\n\n// This is used for trimming the trailing 0 and . characters without affecting\n// the rest of the string. Its possible to use one RegEx with groups for this\n// functionality, but it is fairly complex compared to simply defining two\n// different matchers.\nconst trailingCharMatcher = /[0.]0*$/;\n\n/**\n * The NumberField class has some special handling for dealing with trailing\n * decimal points and/or zeroes. This logic is designed to allow trailing values\n * to be visible in the input element, but not be represented in the\n * corresponding form data.\n *\n * The algorithm is as follows:\n *\n * 1. When the input value changes the value is cached in the component state\n *\n * 2. The value is then normalized, removing trailing decimal points and zeros,\n * then passed to the \"onChange\" callback\n *\n * 3. When the component is rendered, the formData value is checked against the\n * value cached in the state. If it matches the cached value, the cached\n * value is passed to the input instead of the formData value\n */\nfunction NumberField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const { registry, onChange, formData, value: initialValue } = props;\n const [lastValue, setLastValue] = useState(initialValue);\n const { StringField } = registry.fields;\n\n let value = formData;\n\n /** Handle the change from the `StringField` to properly convert to a number\n *\n * @param value - The current value for the change occurring\n */\n const handleChange = useCallback(\n (value: FieldProps<T, S, F>['value'], path: FieldPathList, errorSchema?: ErrorSchema<T>, id?: string) => {\n // Cache the original value in component state\n setLastValue(value);\n\n // Normalize decimals that don't start with a zero character in advance so\n // that the rest of the normalization logic is simpler\n if (`${value}`.charAt(0) === '.') {\n value = `0${value}`;\n }\n\n // Check that the value is a string (this can happen if the widget used is a\n // <select>, due to an enum declaration etc) then, if the value ends in a\n // trailing decimal point or multiple zeroes, strip the trailing values\n const processed =\n typeof value === 'string' && value.match(trailingCharMatcherWithPrefix)\n ? asNumber(value.replace(trailingCharMatcher, ''))\n : asNumber(value);\n\n onChange(processed as unknown as T, path, errorSchema, id);\n },\n [onChange],\n );\n\n if (typeof lastValue === 'string' && typeof value === 'number') {\n // Construct a regular expression that checks for a string that consists\n // of the formData value suffixed with zero or one '.' characters and zero\n // or more '0' characters\n const re = new RegExp(`^(${String(value).replace('.', '\\\\.')})?\\\\.?0*$`);\n\n // If the cached \"lastValue\" is a match, use that instead of the formData\n // value to prevent the input value from changing in the UI\n if (lastValue.match(re)) {\n value = lastValue as unknown as T;\n }\n }\n\n return <StringField {...props} formData={value} onChange={handleChange} />;\n}\n\nexport default NumberField;\n", "import { FocusEvent, useCallback, useState } from 'react';\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n ANY_OF_KEY,\n getTemplate,\n getUiOptions,\n hashObject,\n isFormDataAvailable,\n orderProperties,\n shouldRenderOptionalField,\n toFieldPathId,\n useDeepCompareMemo,\n ErrorSchema,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FormContextType,\n GenericObjectType,\n ONE_OF_KEY,\n PROPERTIES_KEY,\n REF_KEY,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isObject from 'lodash/isObject';\nimport set from 'lodash/set';\nimport unset from 'lodash/unset';\n\n/** Returns a flag indicating whether the `name` field is required in the object schema\n *\n * @param schema - The schema to check\n * @param name - The name of the field to check for required-ness\n * @returns - True if the field `name` is required, false otherwise\n */\nfunction isRequired<S extends StrictRJSFSchema = RJSFSchema>(schema: S, name: string) {\n return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n}\n\n/** Returns a default value to be used for a new additional schema property of the given `type`\n *\n * @param translateString - The string translation function from the registry\n * @param type - The type of the new additional schema property\n */\nfunction getDefaultValue<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n translateString: Registry<T, S, F>['translateString'],\n type?: RJSFSchema['type'],\n) {\n switch (type) {\n case 'array':\n return [];\n case 'boolean':\n return false;\n case 'null':\n return null;\n case 'number':\n return 0;\n case 'object':\n return {};\n case 'string':\n default:\n // We don't have a datatype for some reason (perhaps additionalProperties was true)\n return translateString(TranslatableString.NewStringDefault);\n }\n}\n\n/** Props for the `ObjectFieldProperty` component */\ninterface ObjectFieldPropertyProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Omit<FieldProps<T, S, F>, 'name'> {\n /** The name of the property within the parent object */\n propertyName: string;\n /** Flag indicating whether this property was added by the additionalProperties UI */\n addedByAdditionalProperties: boolean;\n /** Callback that handles the rename of an additionalProperties-based property key */\n handleKeyRename: (oldKey: string, newKey: string) => void;\n /** Callback that handles the removal of an additionalProperties-based property with key */\n handleRemoveProperty: (keyName: string) => void;\n}\n\n/** The `ObjectFieldProperty` component is used to render the `SchemaField` for a child property of an object\n */\nfunction ObjectFieldProperty<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ObjectFieldPropertyProps<T, S, F>,\n) {\n const {\n fieldPathId,\n schema,\n registry,\n uiSchema,\n errorSchema,\n formData,\n onChange,\n onBlur,\n onFocus,\n disabled,\n readonly,\n required,\n hideError,\n propertyName,\n handleKeyRename,\n handleRemoveProperty,\n addedByAdditionalProperties,\n } = props;\n const [wasPropertyKeyModified, setWasPropertyKeyModified] = useState(false);\n const { globalFormOptions, fields } = registry;\n const { SchemaField } = fields;\n const innerFieldIdPathId = useDeepCompareMemo<FieldPathId>(\n toFieldPathId(propertyName, globalFormOptions, fieldPathId.path),\n );\n\n /** Returns the `onPropertyChange` handler for the `name` field. Handles the special case where a user is attempting\n * to clear the data for a field added as an additional property. Calls the `onChange()` handler with the updated\n * formData.\n *\n * @param name - The name of the property\n * @param addedByAdditionalProperties - Flag indicating whether this property is an additional property\n * @returns - The onPropertyChange callback for the `name` property\n */\n const onPropertyChange = useCallback(\n (value: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n if (value === undefined && addedByAdditionalProperties) {\n // Don't set value = undefined for fields added by additionalProperties. Doing so removes them from the\n // formData, which causes them to completely disappear (including the input field for the property name). Unlike\n // fields which are \"mandated\" by the schema, these fields can be set to undefined by clicking a \"delete field\"\n // button, so set empty values to the empty string.\n value = '' as unknown as T;\n }\n onChange(value, path, newErrorSchema, id);\n },\n [onChange, addedByAdditionalProperties],\n );\n\n /** The key change event handler; Called when the key associated with a field is changed for an additionalProperty.\n * simply returns a function that call the `handleKeyChange()` event with the value\n */\n const onKeyRename = useCallback(\n (value: string) => {\n if (propertyName !== value) {\n setWasPropertyKeyModified(true);\n }\n handleKeyRename(propertyName, value);\n },\n [propertyName, handleKeyRename],\n );\n\n /** Returns a callback the handle the blur event, getting the value from the target and passing that along to the\n * `handleKeyChange` function\n */\n const onKeyRenameBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const {\n target: { value },\n } = event;\n onKeyRename(value);\n },\n [onKeyRename],\n );\n\n /** The property drop/removal event handler; Called when a field is removed in an additionalProperty context\n */\n const onRemoveProperty = useCallback(() => {\n handleRemoveProperty(propertyName);\n }, [propertyName, handleRemoveProperty]);\n\n return (\n <SchemaField\n name={propertyName}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n errorSchema={errorSchema}\n fieldPathId={innerFieldIdPathId}\n formData={formData}\n wasPropertyKeyModified={wasPropertyKeyModified}\n onKeyRename={onKeyRename}\n onKeyRenameBlur={onKeyRenameBlur}\n onRemoveProperty={onRemoveProperty}\n onChange={onPropertyChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n />\n );\n}\n\n/** The `ObjectField` component is used to render a field in the schema that is of type `object`. It tracks whether an\n * additional property key was modified and what it was modified to\n *\n * @param props - The `FieldProps` for this template\n */\nexport default function ObjectField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema: rawSchema,\n uiSchema = {},\n formData,\n errorSchema,\n fieldPathId,\n name,\n required = false,\n disabled,\n readonly,\n hideError,\n onBlur,\n onFocus,\n onChange,\n registry,\n title,\n } = props;\n const { fields, schemaUtils, translateString, globalUiOptions } = registry;\n const { OptionalDataControlsField } = fields;\n const schema: S = schemaUtils.retrieveSchema(rawSchema, formData, true);\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const { properties: schemaProperties = {} } = schema;\n const formDataHash = hashObject(formData || {});\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n const templateTitle = uiOptions.title ?? schema.title ?? title ?? name;\n const description = uiOptions.description ?? schema.description;\n const renderOptionalField = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n let orderedProperties: string[] = [];\n\n /** Computes the next available key name from the `preferredKey`, indexing through the already existing keys until one\n * that is already not assigned is found.\n *\n * @param preferredKey - The preferred name of a new key\n * @param [formData] - The form data in which to check if the desired key already exists\n * @returns - The name of the next available key from `preferredKey`\n */\n const getAvailableKey = useCallback(\n (preferredKey: string, formData?: T) => {\n const { duplicateKeySuffixSeparator = '-' } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n\n let index = 0;\n let newKey = preferredKey;\n while (has(formData, newKey)) {\n newKey = `${preferredKey}${duplicateKeySuffixSeparator}${++index}`;\n }\n return newKey;\n },\n [uiSchema, globalUiOptions],\n );\n\n /** Handles the adding of a new additional property on the given `schema`. Calls the `onChange` callback once the new\n * default data for that field has been added to the formData.\n */\n const onAddProperty = useCallback(() => {\n if (!(schema.additionalProperties || schema.patternProperties)) {\n return;\n }\n const { translateString } = registry;\n const newFormData = { ...formData } as T;\n const newKey = getAvailableKey('newKey', newFormData);\n if (schema.patternProperties) {\n // Cast this to make the `set` work properly\n set(newFormData as GenericObjectType, newKey, null);\n } else {\n let type: RJSFSchema['type'] = undefined;\n let constValue: RJSFSchema['const'] = undefined;\n let defaultValue: RJSFSchema['default'] = undefined;\n if (isObject(schema.additionalProperties)) {\n type = schema.additionalProperties.type;\n constValue = schema.additionalProperties.const;\n defaultValue = schema.additionalProperties.default;\n let apSchema = schema.additionalProperties;\n if (REF_KEY in apSchema) {\n const { schemaUtils } = registry;\n apSchema = schemaUtils.retrieveSchema({ [REF_KEY]: apSchema[REF_KEY] } as S, formData);\n type = apSchema.type;\n constValue = apSchema.const;\n defaultValue = apSchema.default;\n }\n if (!type && (ANY_OF_KEY in apSchema || ONE_OF_KEY in apSchema)) {\n type = 'object';\n }\n }\n\n const newValue = constValue ?? defaultValue ?? getDefaultValue<T, S, F>(translateString, type);\n // Cast this to make the `set` work properly\n set(newFormData as GenericObjectType, newKey, newValue);\n }\n\n onChange(newFormData, childFieldPathId.path);\n }, [formData, onChange, registry, childFieldPathId, getAvailableKey, schema]);\n\n /** Returns a callback function that deals with the rename of a key for an additional property for a schema. That\n * callback will attempt to rename the key and move the existing data to that key, calling `onChange` when it does.\n *\n * @param oldKey - The old key for the field\n * @param newKey - The new key for the field\n * @returns - The key change callback function\n */\n const handleKeyRename = useCallback(\n (oldKey: string, newKey: string) => {\n if (oldKey !== newKey) {\n const actualNewKey = getAvailableKey(newKey, formData);\n const newFormData: GenericObjectType = {\n ...(formData as GenericObjectType),\n };\n const newKeys: GenericObjectType = { [oldKey]: actualNewKey };\n const keyValues = Object.keys(newFormData).map((key) => {\n const newKey = newKeys[key] || key;\n return { [newKey]: newFormData[key] };\n });\n const renamedObj = Object.assign({}, ...keyValues);\n\n onChange(renamedObj, childFieldPathId.path);\n }\n },\n [formData, onChange, childFieldPathId, getAvailableKey],\n );\n\n /** Handles the remove click which removes the old `key` data and calls the `onChange` callback with it\n */\n const handleRemoveProperty = useCallback(\n (key: string) => {\n const copiedFormData = { ...formData } as T;\n unset(copiedFormData, key);\n onChange(copiedFormData, childFieldPathId.path);\n },\n [onChange, childFieldPathId, formData],\n );\n\n if (!renderOptionalField || hasFormData) {\n try {\n const properties = Object.keys(schemaProperties);\n orderedProperties = orderProperties(properties, uiOptions.order);\n } catch (err) {\n return (\n <div>\n <p className='rjsf-config-error' style={{ color: 'red' }}>\n <Markdown options={{ disableParsingRawHTML: true }}>\n {translateString(TranslatableString.InvalidObjectField, [name || 'root', (err as Error).message])}\n </Markdown>\n </p>\n <pre>{JSON.stringify(schema)}</pre>\n </div>\n );\n }\n }\n\n const Template = getTemplate<'ObjectFieldTemplate', T, S, F>('ObjectFieldTemplate', registry, uiOptions);\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} schema={schema} />\n ) : undefined;\n\n const templateProps = {\n // getDisplayLabel() always returns false for object types, so just check the `uiOptions.label`\n title: uiOptions.label === false ? '' : templateTitle,\n description: uiOptions.label === false ? undefined : description,\n properties: orderedProperties.map((name) => {\n const addedByAdditionalProperties = has(schema, [PROPERTIES_KEY, name, ADDITIONAL_PROPERTY_FLAG]);\n const fieldUiSchema = addedByAdditionalProperties ? uiSchema.additionalProperties : uiSchema[name];\n const hidden = getUiOptions<T, S, F>(fieldUiSchema).widget === 'hidden';\n const content = (\n <ObjectFieldProperty<T, S, F>\n // For regular properties, the key is just the name. For additionalProperties, the key is a combination of the\n // name and the hash of the formData so that react rerenders the components with the updated additional\n // property related callback which will change due to formData changes\n key={addedByAdditionalProperties ? `${name}-${formDataHash}` : name}\n propertyName={name}\n required={isRequired<S>(schema, name)}\n schema={get(schema, [PROPERTIES_KEY, name], {}) as S}\n uiSchema={fieldUiSchema}\n errorSchema={get(errorSchema, name)}\n fieldPathId={childFieldPathId}\n formData={get(formData, name)}\n handleKeyRename={handleKeyRename}\n handleRemoveProperty={handleRemoveProperty}\n addedByAdditionalProperties={addedByAdditionalProperties}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n />\n );\n return {\n content,\n name,\n readonly,\n disabled,\n required,\n hidden,\n };\n }),\n readonly,\n disabled,\n required,\n fieldPathId,\n uiSchema,\n errorSchema,\n schema,\n formData,\n registry,\n optionalDataControl,\n className: renderOptionalField ? 'rjsf-optional-object-field' : undefined,\n };\n return <Template {...templateProps} onAddProperty={onAddProperty} />;\n}\n", "import {\n FieldProps,\n FormContextType,\n getSchemaType,\n getTemplate,\n getUiOptions,\n isFormDataAvailable,\n optionalControlsId,\n OptionalDataControlsTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\n\n/** The `OptionalDataControlsField` component is used to render the optional data controls for the field associated\n * with the given props.\n *\n * @param props - The `FieldProps` for this template\n */\nexport default function OptionalDataControlsField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const {\n schema,\n uiSchema = {},\n formData,\n disabled = false,\n readonly = false,\n onChange,\n errorSchema,\n fieldPathId,\n registry,\n } = props;\n\n const { globalUiOptions = {}, schemaUtils, translateString } = registry;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const OptionalDataControlsTemplate = getTemplate<'OptionalDataControlsTemplate', T, S, F>(\n 'OptionalDataControlsTemplate',\n registry,\n uiOptions,\n );\n const hasFormData = isFormDataAvailable<T>(formData);\n let id: string;\n let label: string | undefined;\n let onAddClick: OptionalDataControlsTemplateProps['onAddClick'];\n let onRemoveClick: OptionalDataControlsTemplateProps['onRemoveClick'];\n if (disabled || readonly) {\n id = optionalControlsId(fieldPathId, 'Msg');\n label = hasFormData ? undefined : translateString(TranslatableString.OptionalObjectEmptyMsg);\n } else {\n const labelEnum = hasFormData ? TranslatableString.OptionalObjectRemove : TranslatableString.OptionalObjectAdd;\n label = translateString(labelEnum);\n if (hasFormData) {\n id = optionalControlsId(fieldPathId, 'Remove');\n onRemoveClick = () => onChange(undefined as T, fieldPathId.path, errorSchema);\n } else {\n id = optionalControlsId(fieldPathId, 'Add');\n onAddClick = () => {\n // If it has form data, store an empty object, otherwise get the default form state and use it\n let newFormData: unknown = schemaUtils.getDefaultFormState(schema, formData, 'excludeObjectChildren');\n if (newFormData === undefined) {\n // If new form data ended up being undefined, and we have pushed the add button we need to actually add data\n newFormData = getSchemaType<S>(schema) === 'array' ? [] : {};\n }\n onChange(newFormData as T, fieldPathId.path, errorSchema);\n };\n }\n }\n return (\n label && (\n <OptionalDataControlsTemplate\n id={id}\n registry={registry}\n schema={schema}\n uiSchema={uiSchema}\n label={label}\n onAddClick={onAddClick}\n onRemoveClick={onRemoveClick}\n />\n )\n );\n}\n", "import { useCallback, Component, ComponentType } from 'react';\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n ANY_OF_KEY,\n descriptionId,\n ErrorSchema,\n Field,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FieldTemplateProps,\n FormContextType,\n getSchemaType,\n getTemplate,\n getUiOptions,\n ID_KEY,\n isFormDataAvailable,\n ONE_OF_KEY,\n Registry,\n RJSFSchema,\n shouldRender,\n shouldRenderOptionalField,\n StrictRJSFSchema,\n toFieldPathId,\n UI_OPTIONS_KEY,\n UIOptionsType,\n} from '@rjsf/utils';\nimport isObject from 'lodash/isObject';\nimport omit from 'lodash/omit';\n\n/** The map of component type to FieldName */\nconst COMPONENT_TYPES: { [key: string]: string } = {\n array: 'ArrayField',\n boolean: 'BooleanField',\n integer: 'NumberField',\n number: 'NumberField',\n object: 'ObjectField',\n string: 'StringField',\n null: 'NullField',\n};\n\n/** Computes and returns which `Field` implementation to return in order to render the field represented by the\n * `schema`. The `uiOptions` are used to alter what potential `Field` implementation is actually returned. If no\n * appropriate `Field` implementation can be found then a wrapper around `UnsupportedFieldTemplate` is used.\n *\n * @param schema - The schema from which to obtain the type\n * @param uiOptions - The UI Options that may affect the component decision\n * @param registry - The registry from which fields and templates are obtained\n * @returns - The `Field` component that is used to render the actual field data\n */\nfunction getFieldComponent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n schema: S,\n uiOptions: UIOptionsType<T, S, F>,\n registry: Registry<T, S, F>,\n): ComponentType<FieldProps<T, S, F>> {\n const field = uiOptions.field;\n const { fields } = registry;\n if (typeof field === 'function') {\n return field;\n }\n if (typeof field === 'string' && field in fields) {\n return fields[field] as ComponentType<FieldProps<T, S, F>>;\n }\n\n const schemaType = getSchemaType(schema);\n const type: string = Array.isArray(schemaType) ? schemaType[0] : schemaType || '';\n\n const schemaId = schema.$id;\n\n let componentName = COMPONENT_TYPES[type];\n if (schemaId && schemaId in fields) {\n componentName = schemaId;\n }\n\n // If the type is not defined and the schema uses 'anyOf' or 'oneOf', don't\n // render a field and let the MultiSchemaField component handle the form display\n if (!componentName && (schema.anyOf || schema.oneOf)) {\n return () => null;\n }\n\n return componentName in fields ? fields[componentName] : fields['FallbackField'];\n}\n\n/** The `SchemaFieldRender` component is the work-horse of react-jsonschema-form, determining what kind of real field to\n * render based on the `schema`, `uiSchema` and all the other props. It also deals with rendering the `anyOf` and\n * `oneOf` fields.\n *\n * @param props - The `FieldProps` for this component\n */\nfunction SchemaFieldRender<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema: _schema,\n fieldPathId,\n uiSchema,\n formData,\n errorSchema,\n name,\n onChange,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n required = false,\n registry,\n wasPropertyKeyModified = false,\n } = props;\n const { schemaUtils, globalFormOptions, globalUiOptions, fields } = registry;\n const { AnyOfField: _AnyOfField, OneOfField: _OneOfField } = fields;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const FieldTemplate = getTemplate<'FieldTemplate', T, S, F>('FieldTemplate', registry, uiOptions);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n uiOptions,\n );\n const FieldHelpTemplate = getTemplate<'FieldHelpTemplate', T, S, F>('FieldHelpTemplate', registry, uiOptions);\n const FieldErrorTemplate = getTemplate<'FieldErrorTemplate', T, S, F>('FieldErrorTemplate', registry, uiOptions);\n const schema = schemaUtils.retrieveSchema(_schema, formData);\n const fieldId = fieldPathId[ID_KEY];\n\n /** Intermediary `onChange` handler for field components that will inject the `id` of the current field into the\n * `onChange` chain if it is not already being provided from a deeper level in the hierarchy\n */\n const handleFieldComponentChange = useCallback(\n (formData: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n const theId = id || fieldId;\n return onChange(formData, path, newErrorSchema, theId);\n },\n [fieldId, onChange],\n );\n\n const FieldComponent = getFieldComponent<T, S, F>(schema, uiOptions, registry);\n const disabled = Boolean(uiOptions.disabled ?? props.disabled);\n const readonly = Boolean(uiOptions.readonly ?? (props.readonly || props.schema.readOnly || schema.readOnly));\n const uiSchemaHideError = uiOptions.hideError;\n // Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children\n const hideError = uiSchemaHideError === undefined ? props.hideError : Boolean(uiSchemaHideError);\n const autofocus = Boolean(uiOptions.autofocus ?? props.autofocus);\n if (Object.keys(schema).length === 0) {\n return null;\n }\n\n let displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n /** If the schema `anyOf` or 'oneOf' can be rendered as a select control, don't render the selection and let\n * `StringField` component handle rendering unless there is a field override and that field replaces the any or one of\n */\n const isReplacingAnyOrOneOf = uiOptions.field && uiOptions.fieldReplacesAnyOrOneOf === true;\n let XxxOfField: Field<T, S, F> | undefined;\n let XxxOfOptions: S[] | undefined;\n // When rendering the `XxxOfField` we'll need to change the fieldPathId of the main component, remembering the\n // fieldPathId of the children for the ObjectField and ArrayField\n let fieldPathIdProps: { fieldPathId: FieldPathId; childFieldPathId?: FieldPathId } = { fieldPathId };\n if ((ANY_OF_KEY in schema || ONE_OF_KEY in schema) && !isReplacingAnyOrOneOf && !schemaUtils.isSelect(schema)) {\n if (schema[ANY_OF_KEY]) {\n XxxOfField = _AnyOfField;\n XxxOfOptions = schema[ANY_OF_KEY].map((_schema) =>\n schemaUtils.retrieveSchema(isObject(_schema) ? (_schema as S) : ({} as S), formData),\n );\n } else if (schema[ONE_OF_KEY]) {\n XxxOfField = _OneOfField;\n XxxOfOptions = schema[ONE_OF_KEY].map((_schema) =>\n schemaUtils.retrieveSchema(isObject(_schema) ? (_schema as S) : ({} as S), formData),\n );\n }\n // When the anyOf/oneOf is an optional data control render AND it does not have form data, hide the label\n const isOptionalRender = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n displayLabel = displayLabel && (!isOptionalRender || hasFormData);\n fieldPathIdProps = {\n childFieldPathId: fieldPathId,\n // The main FieldComponent will add `XxxOf` onto the fieldPathId to avoid duplication with the rendering of the\n // same FieldComponent by the `XxxOfField`\n fieldPathId: toFieldPathId('XxxOf', globalFormOptions, fieldPathId),\n };\n }\n\n const { __errors, ...fieldErrorSchema } = errorSchema || {};\n // See #439: uiSchema: Don't pass consumed class names or style to child components\n const fieldUiSchema = omit(uiSchema, ['ui:classNames', 'classNames', 'ui:style']);\n if (UI_OPTIONS_KEY in fieldUiSchema) {\n fieldUiSchema[UI_OPTIONS_KEY] = omit(fieldUiSchema[UI_OPTIONS_KEY], ['classNames', 'style']);\n }\n\n const field = (\n <FieldComponent\n {...props}\n onChange={handleFieldComponentChange}\n {...fieldPathIdProps}\n schema={schema}\n uiSchema={fieldUiSchema}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n autofocus={autofocus}\n errorSchema={fieldErrorSchema as ErrorSchema}\n rawErrors={__errors}\n />\n );\n\n const id = fieldPathId[ID_KEY];\n\n // If this schema has a title defined, but the user has set a new key/label, retain their input.\n let label;\n if (wasPropertyKeyModified) {\n label = name;\n } else {\n label =\n ADDITIONAL_PROPERTY_FLAG in schema\n ? name\n : uiOptions.title || props.schema.title || schema.title || props.title || name;\n }\n\n const description = uiOptions.description || props.schema.description || schema.description || '';\n const help = uiOptions.help;\n const hidden = uiOptions.widget === 'hidden';\n\n const classNames = ['rjsf-field', `rjsf-field-${getSchemaType(schema)}`];\n if (!hideError && __errors && __errors.length > 0) {\n classNames.push('rjsf-field-error');\n }\n if (uiOptions.classNames) {\n classNames.push(uiOptions.classNames);\n }\n\n const helpComponent = (\n <FieldHelpTemplate\n help={help}\n fieldPathId={fieldPathId}\n schema={schema}\n uiSchema={uiSchema}\n hasErrors={!hideError && __errors && __errors.length > 0}\n registry={registry}\n />\n );\n /*\n * AnyOf/OneOf errors handled by child schema\n * unless it can be rendered as select control\n */\n const errorsComponent =\n hideError || (XxxOfField && !schemaUtils.isSelect(schema)) ? undefined : (\n <FieldErrorTemplate\n errors={__errors}\n errorSchema={errorSchema}\n fieldPathId={fieldPathId}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n const fieldProps: Omit<FieldTemplateProps<T, S, F>, 'children'> = {\n description: (\n <DescriptionFieldTemplate\n id={descriptionId(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n ),\n rawDescription: description,\n help: helpComponent,\n rawHelp: typeof help === 'string' ? help : undefined,\n errors: errorsComponent,\n rawErrors: hideError ? undefined : __errors,\n id,\n label,\n hidden,\n onChange,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n required,\n disabled,\n readonly,\n hideError,\n displayLabel,\n classNames: classNames.join(' ').trim(),\n style: uiOptions.style,\n formData,\n schema,\n uiSchema,\n registry,\n };\n\n return (\n <FieldTemplate {...fieldProps}>\n <>\n {field}\n {XxxOfField && (\n <XxxOfField\n name={name}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n errorSchema={errorSchema}\n formData={formData}\n fieldPathId={fieldPathId}\n onBlur={props.onBlur}\n onChange={props.onChange}\n onFocus={props.onFocus}\n options={XxxOfOptions}\n registry={registry}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n />\n )}\n </>\n </FieldTemplate>\n );\n}\n\n/** The `SchemaField` component determines whether it is necessary to rerender the component based on any props changes\n * and if so, calls the `SchemaFieldRender` component with the props.\n */\nclass SchemaField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> extends Component<\n FieldProps<T, S, F>\n> {\n shouldComponentUpdate(nextProps: Readonly<FieldProps<T, S, F>>) {\n const {\n registry: { globalFormOptions },\n } = this.props;\n const { experimental_componentUpdateStrategy = 'customDeep' } = globalFormOptions;\n\n return shouldRender(this, nextProps, this.state, experimental_componentUpdateStrategy);\n }\n\n render() {\n return <SchemaFieldRender<T, S, F> {...this.props} />;\n }\n}\n\nexport default SchemaField;\n", "import { useCallback } from 'react';\nimport {\n getWidget,\n getUiOptions,\n optionsList,\n hasWidget,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n ErrorSchema,\n} from '@rjsf/utils';\n\n/** The `StringField` component is used to render a schema field that represents a string type\n *\n * @param props - The `FieldProps` for this template\n */\nfunction StringField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema,\n name,\n uiSchema,\n fieldPathId,\n formData,\n required,\n disabled = false,\n readonly = false,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n registry,\n rawErrors,\n hideError,\n } = props;\n const { title, format } = schema;\n const { widgets, schemaUtils, globalUiOptions } = registry;\n const enumOptions = schemaUtils.isSelect(schema) ? optionsList<T, S, F>(schema, uiSchema) : undefined;\n let defaultWidget = enumOptions ? 'select' : 'text';\n if (format && hasWidget<T, S, F>(schema, format, widgets)) {\n defaultWidget = format;\n }\n const { widget = defaultWidget, placeholder = '', title: uiTitle, ...options } = getUiOptions<T, S, F>(uiSchema);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n const label = uiTitle ?? title ?? name;\n const Widget = getWidget<T, S, F>(schema, widget, widgets);\n const onWidgetChange = useCallback(\n (value: T | undefined, errorSchema?: ErrorSchema, id?: string) => {\n // String field change passes an empty path array to the parent field which adds the appropriate path\n return onChange(value, fieldPathId.path, errorSchema, id);\n },\n [onChange, fieldPathId],\n );\n return (\n <Widget\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n id={fieldPathId.$id}\n name={name}\n label={label}\n hideLabel={!displayLabel}\n hideError={hideError}\n value={formData}\n onChange={onWidgetChange}\n onBlur={onBlur}\n onFocus={onFocus}\n required={required}\n disabled={disabled}\n readonly={readonly}\n autofocus={autofocus}\n registry={registry}\n placeholder={placeholder}\n rawErrors={rawErrors}\n htmlName={fieldPathId.name}\n />\n );\n}\n\nexport default StringField;\n", "import { useEffect } from 'react';\nimport { FieldProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `NullField` component is used to render a field in the schema is null. It also ensures that the `formData` is\n * also set to null if it has no value.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction NullField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const { formData, onChange, fieldPathId } = props;\n useEffect(() => {\n if (formData === undefined) {\n onChange(null as unknown as T, fieldPathId.path);\n }\n }, [fieldPathId, formData, onChange]);\n\n return null;\n}\n\nexport default NullField;\n", "import { Field, FormContextType, RegistryFieldsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport ArrayField from './ArrayField';\nimport BooleanField from './BooleanField';\nimport FallbackField from './FallbackField';\nimport LayoutGridField from './LayoutGridField';\nimport LayoutHeaderField from './LayoutHeaderField';\nimport LayoutMultiSchemaField from './LayoutMultiSchemaField';\nimport MultiSchemaField from './MultiSchemaField';\nimport NumberField from './NumberField';\nimport ObjectField from './ObjectField';\nimport OptionalDataControlsField from './OptionalDataControlsField';\nimport SchemaField from './SchemaField';\nimport StringField from './StringField';\nimport NullField from './NullField';\n\nfunction fields<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryFieldsType<T, S, F> {\n return {\n AnyOfField: MultiSchemaField,\n ArrayField: ArrayField as unknown as Field<T, S, F>,\n // ArrayField falls back to SchemaField if ArraySchemaField is not defined, which it isn't by default\n BooleanField,\n FallbackField,\n LayoutGridField,\n LayoutHeaderField,\n LayoutMultiSchemaField,\n NumberField,\n ObjectField,\n OneOfField: MultiSchemaField,\n OptionalDataControlsField,\n SchemaField,\n StringField,\n NullField,\n };\n}\n\nexport default fields;\n", "import {\n descriptionId,\n getTemplate,\n getUiOptions,\n ArrayFieldDescriptionProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldDescriptionTemplate` component renders a `DescriptionFieldTemplate` with an `id` derived from\n * the `fieldPathId`.\n *\n * @param props - The `ArrayFieldDescriptionProps` for the component\n */\nexport default function ArrayFieldDescriptionTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldDescriptionProps<T, S, F>) {\n const { fieldPathId, description, registry, schema, uiSchema } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { label: displayLabel = true } = options;\n if (!description || !displayLabel) {\n return null;\n }\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n return (\n <DescriptionFieldTemplate\n id={descriptionId(fieldPathId)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n}\n", "import { CSSProperties } from 'react';\nimport {\n ArrayFieldItemTemplateProps,\n FormContextType,\n getTemplate,\n getUiOptions,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.\n *\n * @param props - The `ArrayFieldItemTemplateProps` props for the component\n */\nexport default function ArrayFieldItemTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemTemplateProps<T, S, F>) {\n const { children, className, buttonsProps, hasToolbar, registry, uiSchema } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n const btnStyle: CSSProperties = {\n flex: 1,\n paddingLeft: 6,\n paddingRight: 6,\n fontWeight: 'bold',\n };\n return (\n <div className={className}>\n <div className={hasToolbar ? 'col-xs-9' : 'col-xs-12'}>{children}</div>\n {hasToolbar && (\n <div className='col-xs-3 array-item-toolbox'>\n <div\n className='btn-group'\n style={{\n display: 'flex',\n justifyContent: 'space-around',\n }}\n >\n <ArrayFieldItemButtonsTemplate {...buttonsProps} style={btnStyle} />\n </div>\n </div>\n )}\n </div>\n );\n}\n", "import {\n ArrayFieldItemButtonsTemplateProps,\n buttonId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplateItemButtons` component is the template used to render the buttons associate3d with items of\n * an array.\n *\n * @param props - The `ArrayFieldItemButtonsTemplateProps` props for the component\n */\nexport default function ArrayFieldItemButtonsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemButtonsTemplateProps<T, S, F>) {\n const {\n disabled,\n hasCopy,\n hasMoveDown,\n hasMoveUp,\n hasRemove,\n fieldPathId,\n onCopyItem,\n onRemoveItem,\n onMoveDownItem,\n onMoveUpItem,\n readonly,\n registry,\n uiSchema,\n } = props;\n const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;\n\n return (\n <>\n {(hasMoveUp || hasMoveDown) && (\n <MoveUpButton\n id={buttonId(fieldPathId, 'moveUp')}\n className='rjsf-array-item-move-up'\n disabled={disabled || readonly || !hasMoveUp}\n onClick={onMoveUpItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {(hasMoveUp || hasMoveDown) && (\n <MoveDownButton\n id={buttonId(fieldPathId, 'moveDown')}\n className='rjsf-array-item-move-down'\n disabled={disabled || readonly || !hasMoveDown}\n onClick={onMoveDownItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasCopy && (\n <CopyButton\n id={buttonId(fieldPathId, 'copy')}\n className='rjsf-array-item-copy'\n disabled={disabled || readonly}\n onClick={onCopyItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasRemove && (\n <RemoveButton\n id={buttonId(fieldPathId, 'remove')}\n className='rjsf-array-item-remove'\n disabled={disabled || readonly}\n onClick={onRemoveItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </>\n );\n}\n", "import {\n getTemplate,\n getUiOptions,\n ArrayFieldTemplateProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * @param props - The `ArrayFieldTemplateProps` props for the component\n */\nexport default function ArrayFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldTemplateProps<T, S, F>) {\n const {\n canAdd,\n className,\n disabled,\n fieldPathId,\n uiSchema,\n items,\n optionalDataControl,\n onAddClick,\n readonly,\n registry,\n required,\n schema,\n title,\n } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(\n 'ArrayFieldDescriptionTemplate',\n registry,\n uiOptions,\n );\n const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(\n 'ArrayFieldTitleTemplate',\n registry,\n uiOptions,\n );\n // Button templates are not overridden in the uiSchema\n const showOptionalDataControlInTitle = !readonly && !disabled;\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n return (\n <fieldset className={className} id={fieldPathId.$id}>\n <ArrayFieldTitleTemplate\n fieldPathId={fieldPathId}\n title={uiOptions.title || title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n <ArrayFieldDescriptionTemplate\n fieldPathId={fieldPathId}\n description={uiOptions.description || schema.description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n <div className='row array-item-list'>{items}</div>\n {canAdd && (\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-array-item-add'\n onClick={onAddClick}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </fieldset>\n );\n}\n", "import {\n getTemplate,\n getUiOptions,\n titleId,\n ArrayFieldTitleProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TemplatesType,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTitleTemplate` component renders a `TitleFieldTemplate` with an `id` derived from\n * the `fieldPathId`.\n *\n * @param props - The `ArrayFieldTitleProps` for the component\n */\nexport default function ArrayFieldTitleTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldTitleProps<T, S, F>) {\n const { fieldPathId, title, schema, uiSchema, required, registry, optionalDataControl } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { label: displayLabel = true } = options;\n if (!title || !displayLabel) {\n return null;\n }\n const TitleFieldTemplate: TemplatesType<T, S, F>['TitleFieldTemplate'] = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n );\n return (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={optionalDataControl}\n />\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n BaseInputTemplateProps,\n examplesId,\n getInputProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `BaseInputTemplate` is the template to use to render the basic `<input>` component for the `core` theme.\n * It is used as the template for rendering many of the <input> based widgets that differ by `type` and callbacks only.\n * It can be customized/overridden for other themes or individual implementations as needed.\n *\n * @param props - The `WidgetProps` for this template\n */\nexport default function BaseInputTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: BaseInputTemplateProps<T, S, F>) {\n const {\n id,\n name, // remove this from ...rest\n htmlName,\n value,\n readonly,\n disabled,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n onChangeOverride,\n options,\n schema,\n uiSchema,\n registry,\n rawErrors,\n type,\n hideLabel, // remove this from ...rest\n hideError, // remove this from ...rest\n ...rest\n } = props;\n\n // Note: since React 15.2.0 we can't forward unknown element attributes, so we\n // exclude the \"options\" and \"schema\" ones here.\n if (!id) {\n console.log('No id for', props);\n throw new Error(`no id for props ${JSON.stringify(props)}`);\n }\n const inputProps = {\n ...rest,\n ...getInputProps<T, S, F>(schema, type, options),\n };\n\n let inputValue;\n if (inputProps.type === 'number' || inputProps.type === 'integer') {\n inputValue = value || value === 0 ? value : '';\n } else {\n inputValue = value == null ? '' : value;\n }\n\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options],\n );\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onBlur(id, target && target.value),\n [onBlur, id],\n );\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onFocus(id, target && target.value),\n [onFocus, id],\n );\n\n return (\n <>\n <input\n id={id}\n name={htmlName || id}\n className='form-control'\n readOnly={readonly}\n disabled={disabled}\n autoFocus={autofocus}\n value={inputValue}\n {...inputProps}\n list={schema.examples ? examplesId(id) : undefined}\n onChange={onChangeOverride || _onChange}\n onBlur={_onBlur}\n onFocus={_onFocus}\n aria-describedby={ariaDescribedByIds(id, !!schema.examples)}\n />\n {Array.isArray(schema.examples) && (\n <datalist key={`datalist_${id}`} id={examplesId(id)}>\n {(schema.examples as string[])\n .concat(schema.default && !schema.examples.includes(schema.default) ? ([schema.default] as string[]) : [])\n .map((example: any) => {\n return <option key={example} value={example} />;\n })}\n </datalist>\n )}\n </>\n );\n}\n", "import { getSubmitButtonOptions, FormContextType, RJSFSchema, StrictRJSFSchema, SubmitButtonProps } from '@rjsf/utils';\n\n/** The `SubmitButton` renders a button that represent the `Submit` action on a form\n */\nexport default function SubmitButton<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ uiSchema }: SubmitButtonProps<T, S, F>) {\n const { submitText, norender, props: submitButtonProps = {} } = getSubmitButtonOptions<T, S, F>(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div>\n <button type='submit' {...submitButtonProps} className={`btn btn-info ${submitButtonProps.className || ''}`}>\n {submitText}\n </button>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\n\nimport IconButton from './IconButton';\n\n/** The `AddButton` renders a button that represent the `Add` action on a form\n */\nexport default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n className,\n onClick,\n disabled,\n registry,\n}: IconButtonProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='row'>\n <p className={`col-xs-3 col-xs-offset-9 text-right ${className}`}>\n <IconButton\n id={id}\n iconType='info'\n icon='plus'\n className='btn-add col-xs-12'\n title={translateString(TranslatableString.AddButton)}\n onClick={onClick}\n disabled={disabled}\n registry={registry}\n />\n </p>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\n\nexport default function IconButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const { iconType = 'default', icon, className, uiSchema, registry, ...otherProps } = props;\n return (\n <button type='button' className={`btn btn-${iconType} ${className}`} {...otherProps}>\n <i className={`glyphicon glyphicon-${icon}`} />\n </button>\n );\n}\n\nexport function CopyButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.CopyButton)} {...props} icon='copy' />;\n}\n\nexport function MoveDownButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.MoveDownButton)} {...props} icon='arrow-down' />;\n}\n\nexport function MoveUpButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.MoveUpButton)} {...props} icon='arrow-up' />;\n}\n\nexport function RemoveButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <IconButton title={translateString(TranslatableString.RemoveButton)} {...props} iconType='danger' icon='remove' />\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport SubmitButton from './SubmitButton';\nimport AddButton from './AddButton';\nimport { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from './IconButton';\n\nfunction buttonTemplates<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): TemplatesType<T, S, F>['ButtonTemplates'] {\n return {\n SubmitButton,\n AddButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n };\n}\n\nexport default buttonTemplates;\n", "import { ReactElement } from 'react';\nimport {\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n UiSchema,\n getTestIds,\n getUiOptions,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\nconst TEST_IDS = getTestIds();\n\nexport interface RichDescriptionProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> {\n /** The description text for a field, potentially containing markdown */\n description: string | ReactElement;\n /** The uiSchema object for this base component */\n uiSchema?: UiSchema<T, S, F>;\n /** The `registry` object */\n registry: Registry<T, S, F>;\n}\n\n/** Renders the given `description` in the props as\n *\n * @param props - The `RichDescriptionProps` for this component\n */\nexport default function RichDescription<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ description, registry, uiSchema = {} }: RichDescriptionProps<T, S, F>) {\n const { globalUiOptions } = registry;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n\n if (uiOptions.enableMarkdownInDescription && typeof description === 'string') {\n return (\n <Markdown options={{ disableParsingRawHTML: true }} data-testid={TEST_IDS.markdown}>\n {description}\n </Markdown>\n );\n }\n return description;\n}\n\nRichDescription.TEST_IDS = TEST_IDS;\n", "import { DescriptionFieldProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport RichDescription from '../RichDescription';\n\n/** The `DescriptionField` is the template to use to render the description of a field\n *\n * @param props - The `DescriptionFieldProps` for this component\n */\nexport default function DescriptionField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: DescriptionFieldProps<T, S, F>) {\n const { id, description, registry, uiSchema } = props;\n if (!description) {\n return null;\n }\n return (\n <div id={id} className='field-description'>\n <RichDescription description={description} registry={registry} uiSchema={uiSchema} />\n </div>\n );\n}\n", "import {\n ErrorListProps,\n FormContextType,\n RJSFValidationError,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\n\n/** The `ErrorList` component is the template that renders the all the errors associated with the fields in the `Form`\n *\n * @param props - The `ErrorListProps` for this component\n */\nexport default function ErrorList<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n errors,\n registry,\n}: ErrorListProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='panel panel-danger errors'>\n <div className='panel-heading'>\n <h3 className='panel-title'>{translateString(TranslatableString.ErrorsLabel)}</h3>\n </div>\n <ul className='list-group'>\n {errors.map((error: RJSFValidationError, i: number) => {\n return (\n <li key={i} className='list-group-item text-danger'>\n {error.stack}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n", "import { FallbackFieldTemplateProps, FormContextType, getTemplate, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/**\n * The `FallbackFieldTemplate` is used to render a field when no field matches. The field renders a type selector and\n * the schema field for the form data.\n */\nexport default function FallbackFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FallbackFieldTemplateProps<T, S, F>) {\n const { schema, registry, typeSelector, schemaField } = props;\n\n // By default, use the MultiSchemaFieldTemplate, which handles the same basic requirements.\n const MultiSchemaFieldTemplate = getTemplate<'MultiSchemaFieldTemplate', T, S, F>(\n 'MultiSchemaFieldTemplate',\n registry,\n );\n\n return (\n <MultiSchemaFieldTemplate\n selector={typeSelector}\n optionSchemaField={schemaField}\n schema={schema}\n registry={registry}\n />\n );\n}\n", "import {\n FieldTemplateProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n getTemplate,\n getUiOptions,\n} from '@rjsf/utils';\n\nimport Label from './Label';\n\n/** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field\n * content, (label, description, children, errors and help) inside of a `WrapIfAdditional` component.\n *\n * @param props - The `FieldTemplateProps` for this component\n */\nexport default function FieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldTemplateProps<T, S, F>) {\n const { id, label, children, errors, help, description, hidden, required, displayLabel, registry, uiSchema } = props;\n const uiOptions = getUiOptions(uiSchema);\n const WrapIfAdditionalTemplate = getTemplate<'WrapIfAdditionalTemplate', T, S, F>(\n 'WrapIfAdditionalTemplate',\n registry,\n uiOptions,\n );\n if (hidden) {\n return <div className='hidden'>{children}</div>;\n }\n return (\n <WrapIfAdditionalTemplate {...props}>\n {displayLabel && <Label label={label} required={required} id={id} />}\n {displayLabel && description ? description : null}\n {children}\n {errors}\n {help}\n </WrapIfAdditionalTemplate>\n );\n}\n", "const REQUIRED_FIELD_SYMBOL = '*';\n\nexport type LabelProps = {\n /** The label for the field */\n label?: string;\n /** A boolean value stating if the field is required */\n required?: boolean;\n /** The id of the input field being labeled */\n id?: string;\n};\n\n/** Renders a label for a field\n *\n * @param props - The `LabelProps` for this component\n */\nexport default function Label(props: LabelProps) {\n const { label, required, id } = props;\n if (!label) {\n return null;\n }\n return (\n <label className='control-label' htmlFor={id}>\n {label}\n {required && <span className='required'>{REQUIRED_FIELD_SYMBOL}</span>}\n </label>\n );\n}\n", "import FieldTemplate from './FieldTemplate';\n\nexport default FieldTemplate;\n", "import { errorId, FieldErrorProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `FieldErrorTemplate` component renders the errors local to the particular field\n *\n * @param props - The `FieldErrorProps` for the errors being rendered\n */\nexport default function FieldErrorTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldErrorProps<T, S, F>) {\n const { errors = [], fieldPathId } = props;\n if (errors.length === 0) {\n return null;\n }\n const id = errorId(fieldPathId);\n\n return (\n <div>\n <ul id={id} className='error-detail bs-callout bs-callout-info'>\n {errors\n .filter((elem) => !!elem)\n .map((error, index: number) => {\n return (\n <li className='text-danger' key={index}>\n {error}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n", "import { helpId, FieldHelpProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `FieldHelpTemplate` component renders any help desired for a field\n *\n * @param props - The `FieldHelpProps` to be rendered\n */\nexport default function FieldHelpTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldHelpProps<T, S, F>) {\n const { fieldPathId, help } = props;\n if (!help) {\n return null;\n }\n const id = helpId(fieldPathId);\n if (typeof help === 'string') {\n return (\n <p id={id} className='help-block'>\n {help}\n </p>\n );\n }\n return (\n <div id={id} className='help-block'>\n {help}\n </div>\n );\n}\n", "import { GridTemplateProps } from '@rjsf/utils';\n\n/** Renders a `GridTemplate` for bootstrap 3, which is expecting the column information coming in via the `className`\n * prop. Also spreads all the other props provided by the user directly on the div.\n *\n * @param props - The GridTemplateProps, including the expected className for the bootstrap 3 grid behavior\n */\nexport default function GridTemplate(props: GridTemplateProps) {\n const { children, column, className, ...rest } = props;\n return (\n <div className={className} {...rest}>\n {children}\n </div>\n );\n}\n", "import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `MultiSchemaFieldTemplate` component renders the layout for the MultiSchemaField, which supports choosing\n * a schema from a list of schemas defined using `anyOf` or `oneOf`.\n *\n * @param props - The `MultiSchemaFieldTemplate` to be rendered\n */\nexport default function MultiSchemaFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: MultiSchemaFieldTemplateProps<T, S, F>) {\n const { selector, optionSchemaField } = props;\n return (\n <div className='panel panel-default panel-body'>\n <div className='form-group'>{selector}</div>\n {optionSchemaField}\n </div>\n );\n}\n", "import {\n FormContextType,\n ObjectFieldTemplatePropertyType,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n canExpand,\n descriptionId,\n getTemplate,\n getUiOptions,\n titleId,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the\n * title and description if available. If the object is expandable, then an `AddButton` is also rendered after all\n * the properties.\n *\n * @param props - The `ObjectFieldTemplateProps` for this component\n */\nexport default function ObjectFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n className,\n description,\n disabled,\n formData,\n fieldPathId,\n onAddProperty,\n optionalDataControl,\n properties,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props;\n const options = getUiOptions<T, S, F>(uiSchema);\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, options);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n const showOptionalDataControlInTitle = !readonly && !disabled;\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n return (\n <fieldset className={className} id={fieldPathId.$id}>\n {title && (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n )}\n {description && (\n <DescriptionFieldTemplate\n id={descriptionId(fieldPathId)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n {properties.map((prop: ObjectFieldTemplatePropertyType) => prop.content)}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-object-property-expand'\n onClick={onAddProperty}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </fieldset>\n );\n}\n", "import { FormContextType, OptionalDataControlsTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport IconButton from './ButtonTemplates/IconButton';\n\n/** The OptionalDataControlsTemplate renders one of three different states. If\n * there is an `onAddClick()` function, it renders the \"Add\" button. If there is\n * an `onRemoveClick()` function, it renders the \"Remove\" button. Otherwise it\n * renders the \"No data found\" section. All of them use the `label` as either\n * the `title` of buttons or simply outputting it.\n *\n * @param props - The `OptionalDataControlsTemplateProps` for the template\n */\nexport default function OptionalDataControlsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: OptionalDataControlsTemplateProps<T, S, F>) {\n const { id, registry, label, onAddClick, onRemoveClick } = props;\n if (onAddClick) {\n return (\n <IconButton\n id={id}\n registry={registry}\n icon='plus'\n className='rjsf-add-optional-data btn-sm'\n onClick={onAddClick}\n title={label}\n />\n );\n } else if (onRemoveClick) {\n return (\n <IconButton\n id={id}\n registry={registry}\n icon='remove'\n className='rjsf-remove-optional-data btn-sm'\n onClick={onRemoveClick}\n title={label}\n />\n );\n }\n return <em id={id}>{label}</em>;\n}\n", "import { FormContextType, TitleFieldProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nconst REQUIRED_FIELD_SYMBOL = '*';\n\n/** The `TitleField` is the template to use to render the title of a field\n *\n * @param props - The `TitleFieldProps` for this component\n */\nexport default function TitleField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: TitleFieldProps<T, S, F>,\n) {\n const { id, title, required, optionalDataControl } = props;\n return (\n <legend id={id}>\n {title}\n {required && <span className='required'>{REQUIRED_FIELD_SYMBOL}</span>}\n {optionalDataControl && (\n <span className='pull-right' style={{ marginBottom: '2px' }}>\n {optionalDataControl}\n </span>\n )}\n </legend>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TranslatableString, UnsupportedFieldProps } from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\n/** The `UnsupportedField` component is used to render a field in the schema is one that is not supported by\n * react-jsonschema-form.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction UnsupportedField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: UnsupportedFieldProps<T, S, F>,\n) {\n const { schema, fieldPathId, reason, registry } = props;\n const { translateString } = registry;\n let translateEnum: TranslatableString = TranslatableString.UnsupportedField;\n const translateParams: string[] = [];\n if (fieldPathId && fieldPathId.$id) {\n translateEnum = TranslatableString.UnsupportedFieldWithId;\n translateParams.push(fieldPathId.$id);\n }\n if (reason) {\n translateEnum =\n translateEnum === TranslatableString.UnsupportedField\n ? TranslatableString.UnsupportedFieldWithReason\n : TranslatableString.UnsupportedFieldWithIdAndReason;\n translateParams.push(reason);\n }\n return (\n <div className='unsupported-field'>\n <p>\n <Markdown options={{ disableParsingRawHTML: true }}>{translateString(translateEnum, translateParams)}</Markdown>\n </p>\n {schema && <pre>{JSON.stringify(schema, null, 2)}</pre>}\n </div>\n );\n}\n\nexport default UnsupportedField;\n", "import {\n ADDITIONAL_PROPERTY_FLAG,\n buttonId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WrapIfAdditionalTemplateProps,\n} from '@rjsf/utils';\n\nimport Label from './FieldTemplate/Label';\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function WrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n id,\n classNames,\n style,\n disabled,\n label,\n onKeyRenameBlur,\n onRemoveProperty,\n readonly,\n required,\n schema,\n hideError,\n rawErrors,\n children,\n uiSchema,\n registry,\n } = props;\n const { templates, translateString } = registry;\n // Button templates are not overridden in the uiSchema\n const { RemoveButton } = templates.ButtonTemplates;\n const keyLabel = translateString(TranslatableString.KeyLabel, [label]);\n const additional = ADDITIONAL_PROPERTY_FLAG in schema;\n\n const classNamesList = ['form-group', classNames];\n if (!hideError && rawErrors && rawErrors.length > 0) {\n classNamesList.push('has-error has-danger');\n }\n const uiClassNames = classNamesList.join(' ').trim();\n\n if (!additional) {\n return (\n <div className={uiClassNames} style={style}>\n {children}\n </div>\n );\n }\n\n return (\n <div className={uiClassNames} style={style}>\n <div className='row'>\n <div className='col-xs-5 form-additional'>\n <div className='form-group'>\n <Label label={keyLabel} required={required} id={`${id}-key`} />\n <input\n className='form-control'\n type='text'\n id={`${id}-key`}\n onBlur={onKeyRenameBlur}\n defaultValue={label}\n />\n </div>\n </div>\n <div className='form-additional form-group col-xs-5'>{children}</div>\n <div className='col-xs-2'>\n <RemoveButton\n id={buttonId(id, 'remove')}\n className='rjsf-object-property-remove btn-block'\n style={{ border: '0' }}\n disabled={disabled || readonly}\n onClick={onRemoveProperty}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n </div>\n </div>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport ArrayFieldDescriptionTemplate from './ArrayFieldDescriptionTemplate';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate';\nimport ArrayFieldItemButtonsTemplate from './ArrayFieldItemButtonsTemplate';\nimport ArrayFieldTemplate from './ArrayFieldTemplate';\nimport ArrayFieldTitleTemplate from './ArrayFieldTitleTemplate';\nimport BaseInputTemplate from './BaseInputTemplate';\nimport ButtonTemplates from './ButtonTemplates';\nimport DescriptionField from './DescriptionField';\nimport ErrorList from './ErrorList';\nimport FallbackFieldTemplate from './FallbackFieldTemplate';\nimport FieldTemplate from './FieldTemplate';\nimport FieldErrorTemplate from './FieldErrorTemplate';\nimport FieldHelpTemplate from './FieldHelpTemplate';\nimport GridTemplate from './GridTemplate';\nimport MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate';\nimport ObjectFieldTemplate from './ObjectFieldTemplate';\nimport OptionalDataControlsTemplate from './OptionalDataControlsTemplate';\nimport TitleField from './TitleField';\nimport UnsupportedField from './UnsupportedField';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate';\n\nfunction templates<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(): TemplatesType<\n T,\n S,\n F\n> {\n return {\n ArrayFieldDescriptionTemplate,\n ArrayFieldItemTemplate,\n ArrayFieldItemButtonsTemplate,\n ArrayFieldTemplate,\n ArrayFieldTitleTemplate,\n ButtonTemplates: ButtonTemplates<T, S, F>(),\n BaseInputTemplate,\n DescriptionFieldTemplate: DescriptionField,\n ErrorListTemplate: ErrorList,\n FallbackFieldTemplate,\n FieldTemplate,\n FieldErrorTemplate,\n FieldHelpTemplate,\n GridTemplate,\n MultiSchemaFieldTemplate,\n ObjectFieldTemplate,\n OptionalDataControlsTemplate,\n TitleFieldTemplate: TitleField,\n UnsupportedFieldTemplate: UnsupportedField,\n WrapIfAdditionalTemplate,\n };\n}\n\nexport default templates;\n", "import {\n DateElement,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WidgetProps,\n useAltDateWidgetProps,\n} from '@rjsf/utils';\n\n/** The `AltDateWidget` is an alternative widget for rendering date properties.\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled = false, readonly = false, autofocus = false, options, id, name, registry, onBlur, onFocus } = props;\n const { translateString } = registry;\n const { elements, handleChange, handleClear, handleSetNow } = useAltDateWidgetProps(props);\n\n return (\n <ul className='list-inline'>\n {elements.map((elemProps, i) => (\n <li className='list-inline-item' key={i}>\n <DateElement\n rootId={id}\n name={name}\n select={handleChange}\n {...elemProps}\n disabled={disabled}\n readonly={readonly}\n registry={registry}\n onBlur={onBlur}\n onFocus={onFocus}\n autofocus={autofocus && i === 0}\n />\n </li>\n ))}\n {(options.hideNowButton !== 'undefined' ? !options.hideNowButton : true) && (\n <li className='list-inline-item'>\n <a href='#' className='btn btn-info btn-now' onClick={handleSetNow}>\n {translateString(TranslatableString.NowLabel)}\n </a>\n </li>\n )}\n {(options.hideClearButton !== 'undefined' ? !options.hideClearButton : true) && (\n <li className='list-inline-item'>\n <a href='#' className='btn btn-warning btn-clear' onClick={handleClear}>\n {translateString(TranslatableString.ClearLabel)}\n </a>\n </li>\n )}\n </ul>\n );\n}\n\nexport default AltDateWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.\n * It uses the AltDateWidget for rendering, with the `time` prop set to true by default.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateTimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n time = true,\n ...props\n}: WidgetProps<T, S, F>) {\n const { AltDateWidget } = props.registry.widgets;\n return <AltDateWidget time={time} {...props} />;\n}\n\nexport default AltDateTimeWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n descriptionId,\n getTemplate,\n labelValue,\n schemaRequiresTrueValue,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `CheckBoxWidget` is a widget for rendering boolean properties.\n * It is typically used to represent a boolean.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n schema,\n uiSchema,\n options,\n id,\n value,\n disabled,\n readonly,\n label,\n hideLabel,\n autofocus = false,\n onBlur,\n onFocus,\n onChange,\n registry,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n // Because an unchecked checkbox will cause html5 validation to fail, only add\n // the \"required\" attribute if the field value must be \"true\", due to the\n // \"const\" or \"enum\" keywords\n const required = schemaRequiresTrueValue<S>(schema);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.checked),\n [onChange],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => onBlur(id, event.target.checked),\n [onBlur, id],\n );\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => onFocus(id, event.target.checked),\n [onFocus, id],\n );\n const description = options.description ?? schema.description;\n\n return (\n <div className={`checkbox ${disabled || readonly ? 'disabled' : ''}`}>\n {!hideLabel && description && (\n <DescriptionFieldTemplate\n id={descriptionId(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n <label>\n <input\n type='checkbox'\n id={id}\n name={htmlName || id}\n checked={typeof value === 'undefined' ? false : value}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n {labelValue(<span>{label}</span>, hideLabel)}\n </label>\n </div>\n );\n}\n\nexport default CheckboxWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsDeselectValue,\n enumOptionsIsSelected,\n enumOptionsSelectValue,\n enumOptionsValueForIndex,\n optionId,\n FormContextType,\n WidgetProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `CheckboxesWidget` is a widget for rendering checkbox groups.\n * It is typically used to represent an array of enums.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxesWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n disabled,\n options: { inline = false, enumOptions, enumDisabled, emptyValue },\n value,\n autofocus = false,\n readonly,\n onChange,\n onBlur,\n onFocus,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const checkboxesValues = Array.isArray(value) ? value : [value];\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onBlur(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onBlur, id, enumOptions, emptyValue],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onFocus(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onFocus, id, enumOptions, emptyValue],\n );\n return (\n <div className='checkboxes' id={id}>\n {Array.isArray(enumOptions) &&\n enumOptions.map((option, index) => {\n const checked = enumOptionsIsSelected<S>(option.value, checkboxesValues);\n const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n onChange(enumOptionsSelectValue<S>(index, checkboxesValues, enumOptions));\n } else {\n onChange(enumOptionsDeselectValue<S>(index, checkboxesValues, enumOptions));\n }\n };\n\n const checkbox = (\n <span>\n <input\n type='checkbox'\n id={optionId(id, index)}\n name={htmlName || id}\n checked={checked}\n value={String(index)}\n disabled={disabled || itemDisabled || readonly}\n autoFocus={autofocus && index === 0}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n <span>{option.label}</span>\n </span>\n );\n return inline ? (\n <label key={index} className={`checkbox-inline ${disabledCls}`}>\n {checkbox}\n </label>\n ) : (\n <div key={index} className={`checkbox ${disabledCls}`}>\n <label>{checkbox}</label>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default CheckboxesWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `ColorWidget` component uses the `BaseInputTemplate` changing the type to `color` and disables it when it is\n * either disabled or readonly.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function ColorWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled, readonly, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='color' {...props} disabled={disabled || readonly} />;\n}\n", "import { useCallback } from 'react';\nimport { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `DateWidget` component uses the `BaseInputTemplate` changing the type to `date` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { onChange, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n const handleChange = useCallback((value: any) => onChange(value || undefined), [onChange]);\n\n return <BaseInputTemplate type='date' {...props} onChange={handleChange} />;\n}\n", "import {\n getTemplate,\n localToUTC,\n utcToLocal,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `DateTimeWidget` component uses the `BaseInputTemplate` changing the type to `datetime-local` and transforms\n * the value to/from utc using the appropriate utility functions.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateTimeWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { onChange, value, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return (\n <BaseInputTemplate\n type='datetime-local'\n {...props}\n value={utcToLocal(value)}\n onChange={(value) => onChange(localToUTC(value))}\n />\n );\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `EmailWidget` component uses the `BaseInputTemplate` changing the type to `email`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function EmailWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='email' {...props} />;\n}\n", "import { ChangeEvent } from 'react';\nimport {\n FileInfoType,\n FormContextType,\n getTemplate,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n UIOptionsType,\n useFileWidgetProps,\n WidgetProps,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\nfunction FileInfoPreview<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n fileInfo,\n registry,\n}: {\n fileInfo: FileInfoType;\n registry: Registry<T, S, F>;\n}) {\n const { translateString } = registry;\n const { dataURL, type, name } = fileInfo;\n if (!dataURL) {\n return null;\n }\n\n // If type is JPEG or PNG then show image preview.\n // Originally, any type of image was supported, but this was changed into a whitelist\n // since SVGs and animated GIFs are also images, which are generally considered a security risk.\n if (['image/jpeg', 'image/png'].includes(type)) {\n return <img src={dataURL} style={{ maxWidth: '100%' }} className='file-preview' />;\n }\n\n // otherwise, let users download file\n\n return (\n <>\n {' '}\n <a download={`preview-${name}`} href={dataURL} className='file-download'>\n {translateString(TranslatableString.PreviewLabel)}\n </a>\n </>\n );\n}\n\nfunction FilesInfo<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n filesInfo,\n registry,\n preview,\n onRemove,\n options,\n}: {\n filesInfo: FileInfoType[];\n registry: Registry<T, S, F>;\n preview?: boolean;\n onRemove: (index: number) => void;\n options: UIOptionsType<T, S, F>;\n}) {\n if (filesInfo.length === 0) {\n return null;\n }\n const { translateString } = registry;\n\n const { RemoveButton } = getTemplate<'ButtonTemplates', T, S, F>('ButtonTemplates', registry, options);\n\n return (\n <ul className='file-info'>\n {filesInfo.map((fileInfo, key) => {\n const { name, size, type } = fileInfo;\n const handleRemove = () => onRemove(key);\n return (\n <li key={key}>\n <Markdown>{translateString(TranslatableString.FilesInfo, [name, type, String(size)])}</Markdown>\n {preview && <FileInfoPreview<T, S, F> fileInfo={fileInfo} registry={registry} />}\n <RemoveButton onClick={handleRemove} registry={registry} />\n </li>\n );\n })}\n </ul>\n );\n}\n\n/**\n * The `FileWidget` is a widget for rendering file upload fields.\n * It is typically used with a string property with data-url format.\n */\nfunction FileWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled, readonly, required, multiple, onChange, value, options, registry } = props;\n const { filesInfo, handleChange, handleRemove } = useFileWidgetProps(value, onChange, multiple);\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n\n const handleOnChangeEvent = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n handleChange(event.target.files);\n }\n };\n\n return (\n <div>\n <BaseInputTemplate\n {...props}\n disabled={disabled || readonly}\n type='file'\n required={value ? false : required} // this turns off HTML required validation when a value exists\n onChangeOverride={handleOnChangeEvent}\n value=''\n accept={options.accept ? String(options.accept) : undefined}\n />\n <FilesInfo<T, S, F>\n filesInfo={filesInfo}\n onRemove={handleRemove}\n registry={registry}\n preview={options.filePreview}\n options={options}\n />\n </div>\n );\n}\n\nexport default FileWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `HiddenWidget` is a widget for rendering a hidden input field.\n * It is typically used by setting type to \"hidden\".\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction HiddenWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n value,\n htmlName,\n}: WidgetProps<T, S, F>) {\n return <input type='hidden' id={id} name={htmlName || id} value={typeof value === 'undefined' ? '' : value} />;\n}\n\nexport default HiddenWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `PasswordWidget` component uses the `BaseInputTemplate` changing the type to `password`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function PasswordWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='password' {...props} />;\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsIsSelected,\n enumOptionsValueForIndex,\n optionId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `RadioWidget` is a widget for rendering a radio group.\n * It is typically used with a string property constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction RadioWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n options,\n value,\n required,\n disabled,\n readonly,\n autofocus = false,\n onBlur,\n onFocus,\n onChange,\n id,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled, inline, emptyValue } = options;\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onBlur(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onBlur, enumOptions, emptyValue, id],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onFocus(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onFocus, enumOptions, emptyValue, id],\n );\n\n return (\n <div className='field-radio-group' id={id} role='radiogroup'>\n {Array.isArray(enumOptions) &&\n enumOptions.map((option, i) => {\n const checked = enumOptionsIsSelected<S>(option.value, value);\n const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n\n const handleChange = () => onChange(option.value);\n\n const radio = (\n <span>\n <input\n type='radio'\n id={optionId(id, i)}\n checked={checked}\n name={htmlName || id}\n required={required}\n value={String(i)}\n disabled={disabled || itemDisabled || readonly}\n autoFocus={autofocus && i === 0}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n <span>{option.label}</span>\n </span>\n );\n\n return inline ? (\n <label key={i} className={`radio-inline ${disabledCls}`}>\n {radio}\n </label>\n ) : (\n <div key={i} className={`radio ${disabledCls}`}>\n <label>{radio}</label>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default RadioWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result\n * in a div, with the value along side it.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RangeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const {\n value,\n registry: {\n templates: { BaseInputTemplate },\n },\n } = props;\n return (\n <div className='field-range-wrapper'>\n <BaseInputTemplate type='range' {...props} />\n <span className='range-view'>{value}</span>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RatingWidget` component renders a star or heart rating input\n *\n * Features:\n * - Configurable number of stars/hearts (1-5) with default of 5\n * - Supports different shapes (star, heart)\n * - Supports minimum and maximum values from schema\n * - Handles required, disabled, and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses Unicode characters for better visual representation\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RatingWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onFocus,\n onBlur,\n schema,\n options,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { stars = 5, shape = 'star' } = options;\n\n // Use schema.maximum if provided, otherwise use stars option (limited to 1-5)\n const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);\n const min = schema.minimum || 0;\n\n /** Handles clicking on a star to set the rating */\n const handleStarClick = useCallback(\n (starValue: number) => {\n if (!disabled && !readonly) {\n onChange(starValue);\n }\n },\n [onChange, disabled, readonly],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLSpanElement>) => {\n if (onFocus) {\n // Get the star value from the data attribute\n const starValue = Number((event.target as HTMLElement).dataset.value);\n onFocus(id, starValue);\n }\n },\n [onFocus, id],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLSpanElement>) => {\n if (onBlur) {\n // Get the star value from the data attribute\n const starValue = Number((event.target as HTMLElement).dataset.value);\n onBlur(id, starValue);\n }\n },\n [onBlur, id],\n );\n\n // Get the appropriate Unicode character based on shape option\n const getSymbol = (isFilled: boolean): string => {\n if (shape === 'heart') {\n return isFilled ? '\u2665' : '\u2661';\n }\n return isFilled ? '\u2605' : '\u2606';\n };\n\n return (\n <>\n <div\n className='rating-widget'\n style={{\n display: 'inline-flex',\n fontSize: '1.5rem',\n cursor: disabled || readonly ? 'default' : 'pointer',\n }}\n >\n {[...Array(numStars)].map((_, index) => {\n const starValue = min + index;\n const isFilled = starValue <= value;\n\n return (\n <span\n key={index}\n onClick={() => handleStarClick(starValue)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n data-value={starValue}\n tabIndex={disabled || readonly ? -1 : 0}\n role='radio'\n aria-checked={starValue === value}\n aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}\n style={{\n color: isFilled ? '#FFD700' : '#ccc',\n padding: '0 0.2rem',\n transition: 'color 0.2s',\n userSelect: 'none',\n }}\n >\n {getSymbol(isFilled)}\n </span>\n );\n })}\n <input\n type='hidden'\n id={id}\n name={htmlName || id}\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n aria-hidden='true'\n />\n </div>\n </>\n );\n}\n", "import { ChangeEvent, FocusEvent, SyntheticEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsIndexForValue,\n enumOptionsValueForIndex,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\nfunction getValue(event: SyntheticEvent<HTMLSelectElement>, multiple: boolean) {\n if (multiple) {\n return Array.from((event.target as HTMLSelectElement).options)\n .slice()\n .filter((o) => o.selected)\n .map((o) => o.value);\n }\n return (event.target as HTMLSelectElement).value;\n}\n\n/** The `SelectWidget` is a widget for rendering dropdowns.\n * It is typically used with string properties constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction SelectWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n schema,\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n multiple = false,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled, emptyValue: optEmptyVal } = options;\n const emptyValue = multiple ? [] : '';\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onFocus(id, enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onFocus, id, multiple, enumOptions, optEmptyVal],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onBlur(id, enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onBlur, id, multiple, enumOptions, optEmptyVal],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onChange(enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onChange, multiple, enumOptions, optEmptyVal],\n );\n\n const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);\n const showPlaceholderOption = !multiple && schema.default === undefined;\n\n return (\n <select\n id={id}\n name={htmlName || id}\n multiple={multiple}\n role='combobox'\n className='form-control'\n value={typeof selectedIndexes === 'undefined' ? emptyValue : selectedIndexes}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={handleChange}\n aria-describedby={ariaDescribedByIds(id)}\n >\n {showPlaceholderOption && <option value=''>{placeholder}</option>}\n {Array.isArray(enumOptions) &&\n enumOptions.map(({ value, label }, i) => {\n const disabled = enumDisabled && enumDisabled.indexOf(value) !== -1;\n return (\n <option key={i} value={String(i)} disabled={disabled}>\n {label}\n </option>\n );\n })}\n </select>\n );\n}\n\nexport default SelectWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport { ariaDescribedByIds, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TextareaWidget` is a widget for rendering input fields as textarea.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction TextareaWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n options = {},\n placeholder,\n value,\n required,\n disabled,\n readonly,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLTextAreaElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options.emptyValue],\n );\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLTextAreaElement>) => onBlur(id, target && target.value),\n [onBlur, id],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLTextAreaElement>) => onFocus(id, target && target.value),\n [id, onFocus],\n );\n\n return (\n <textarea\n id={id}\n name={htmlName || id}\n className='form-control'\n value={value ? value : ''}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n rows={options.rows}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={handleChange}\n aria-describedby={ariaDescribedByIds(id)}\n />\n );\n}\n\nTextareaWidget.defaultProps = {\n autofocus: false,\n options: {},\n};\n\nexport default TextareaWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TextWidget` component uses the `BaseInputTemplate`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TextWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate {...props} />;\n}\n", "import { useCallback } from 'react';\nimport { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TimeWidget` component uses the `BaseInputTemplate` changing the type to `time` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { onChange, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n const handleChange = useCallback((value: any) => onChange(value ? `${value}:00` : undefined), [onChange]);\n\n return <BaseInputTemplate type='time' {...props} onChange={handleChange} />;\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `URLWidget` component uses the `BaseInputTemplate` changing the type to `url`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function URLWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='url' {...props} />;\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `UpDownWidget` component uses the `BaseInputTemplate` changing the type to `number`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function UpDownWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='number' {...props} />;\n}\n", "import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport AltDateWidget from './AltDateWidget';\nimport AltDateTimeWidget from './AltDateTimeWidget';\nimport CheckboxWidget from './CheckboxWidget';\nimport CheckboxesWidget from './CheckboxesWidget';\nimport ColorWidget from './ColorWidget';\nimport DateWidget from './DateWidget';\nimport DateTimeWidget from './DateTimeWidget';\nimport EmailWidget from './EmailWidget';\nimport FileWidget from './FileWidget';\nimport HiddenWidget from './HiddenWidget';\nimport PasswordWidget from './PasswordWidget';\nimport RadioWidget from './RadioWidget';\nimport RangeWidget from './RangeWidget';\nimport RatingWidget from './RatingWidget';\nimport SelectWidget from './SelectWidget';\nimport TextareaWidget from './TextareaWidget';\nimport TextWidget from './TextWidget';\nimport TimeWidget from './TimeWidget';\nimport URLWidget from './URLWidget';\nimport UpDownWidget from './UpDownWidget';\n\nfunction widgets<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryWidgetsType<T, S, F> {\n return {\n AltDateWidget,\n AltDateTimeWidget,\n CheckboxWidget,\n CheckboxesWidget,\n ColorWidget,\n DateWidget,\n DateTimeWidget,\n EmailWidget,\n FileWidget,\n HiddenWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextWidget,\n TextareaWidget,\n TimeWidget,\n UpDownWidget,\n URLWidget,\n };\n}\n\nexport default widgets;\n", "import { ComponentType, ForwardedRef, forwardRef } from 'react';\nimport Form, { FormProps } from './components/Form';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The properties for the `withTheme` function, essentially a subset of properties from the `FormProps` that can be\n * overridden while creating a theme\n */\nexport type ThemeProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> = Pick<\n FormProps<T, S, F>,\n 'fields' | 'templates' | 'widgets' | '_internalFormWrapper'\n>;\n\n/** A Higher-Order component that creates a wrapper around a `Form` with the overrides from the `WithThemeProps` */\nexport default function withTheme<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n themeProps: ThemeProps<T, S, F>,\n): ComponentType<FormProps<T, S, F>> {\n // @ts-expect-error TS2322 because the latest types complain about LegacyRef's string form not working with Form\n return forwardRef<Form<T, S, F>, FormProps<T, S, F>>(\n ({ fields, widgets, templates, ...directProps }: FormProps<T, S, F>, ref: ForwardedRef<Form<T, S, F>>) => {\n fields = { ...themeProps?.fields, ...fields };\n widgets = { ...themeProps?.widgets, ...widgets };\n templates = {\n ...themeProps?.templates,\n ...templates,\n ButtonTemplates: {\n ...themeProps?.templates?.ButtonTemplates,\n ...templates?.ButtonTemplates,\n },\n };\n\n return (\n <Form<T, S, F>\n {...themeProps}\n {...directProps}\n fields={fields}\n widgets={widgets}\n templates={templates}\n ref={ref}\n />\n );\n },\n );\n}\n", "import {\n DEFAULT_ID_PREFIX,\n DEFAULT_ID_SEPARATOR,\n createSchemaUtils,\n englishStringTranslator,\n Registry,\n} from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport getDefaultRegistry from './getDefaultRegistry';\n\n/** Use for react testing library tests where we directly test the component rather than testing inside a Form\n */\nexport default function getTestRegistry(\n rootSchema: Registry['rootSchema'],\n fields: Registry['fields'] = {},\n templates: Partial<Registry['templates']> = {},\n widgets: Registry['widgets'] = {},\n formContext: Registry['formContext'] = {},\n globalFormOptions: Registry['globalFormOptions'] = {\n idPrefix: DEFAULT_ID_PREFIX,\n idSeparator: DEFAULT_ID_SEPARATOR,\n useFallbackUiForUnsupportedType: false,\n },\n): Registry {\n const defaults = getDefaultRegistry();\n const schemaUtils = createSchemaUtils(validator, rootSchema);\n return {\n fields: { ...defaults.fields, ...fields },\n templates: { ...defaults.templates, ...templates },\n widgets: { ...defaults.widgets, ...widgets },\n formContext,\n rootSchema,\n schemaUtils,\n translateString: englishStringTranslator,\n globalFormOptions,\n };\n}\n", "import Form, { FormProps, FormState, IChangeEvent } from './components/Form';\nimport RichDescription, { RichDescriptionProps } from './components/RichDescription';\nimport withTheme, { ThemeProps } from './withTheme';\nimport getDefaultRegistry from './getDefaultRegistry';\nimport getTestRegistry from './getTestRegistry';\n\nexport type { FormProps, FormState, IChangeEvent, ThemeProps, RichDescriptionProps };\n\nexport { withTheme, getDefaultRegistry, getTestRegistry, RichDescription };\nexport default Form;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Component", "deepEquals", "getTemplate", "getUiOptions", "isObject", "shouldRender", "toFieldPathId", "UI_GLOBAL_OPTIONS_KEY", "UI_OPTIONS_KEY", "DEFAULT_ID_SEPARATOR", "DEFAULT_ID_PREFIX", "ERRORS_KEY", "ID_KEY", "widgets", "SchemaField", "ArrayFieldItemTemplate", "has", "fields", "OptionalDataControlsField", "newHash", "useCallback", "getWidget", "getUiOptions", "optionsList", "TranslatableString", "isObject", "jsx", "widgets", "getTemplate", "getUiOptions", "hashObject", "toFieldPathId", "TranslatableString", "useDeepCompareMemo", "useMemo", "useState", "jsx", "fields", "FallbackFieldTemplate", "SchemaField", "getTemplate", "getUiOptions", "hashObject", "ID_KEY", "toFieldPathId", "ITEMS_KEY", "useDeepCompareMemo", "isObject", "set", "jsx", "set", "getUiOptions", "ITEMS_KEY", "ID_KEY", "toFieldPathId", "isRequired", "name", "jsx", "hashObject", "GridTemplate", "getTemplate", "fields", "SchemaField", "LayoutMultiSchemaField", "useDeepCompareMemo", "Field", "isObject", "getTemplate", "getUiOptions", "jsx", "useState", "ANY_OF_KEY", "getDiscriminatorFieldFromSchema", "hashObject", "ID_KEY", "ONE_OF_KEY", "optionsList", "PROPERTIES_KEY", "getTemplate", "getUiOptions", "getWidget", "get", "has", "isEmpty", "set", "jsx", "widgets", "FieldErrorTemplate", "FieldTemplate", "get", "isEmpty", "omit", "ANY_OF_KEY", "ERRORS_KEY", "getDiscriminatorFieldFromSchema", "getTemplate", "getUiOptions", "getWidget", "isFormDataAvailable", "ONE_OF_KEY", "shouldRenderOptionalField", "TranslatableString", "jsx", "widgets", "fields", "MultiSchemaFieldTemplate", "required", "useState", "useCallback", "jsx", "StringField", "value", "useCallback", "useState", "ANY_OF_KEY", "getTemplate", "getUiOptions", "
|
|
3
|
+
"sources": ["../src/components/Form.tsx", "../src/getDefaultRegistry.ts", "../src/components/fields/ArrayField.tsx", "../src/components/fields/BooleanField.tsx", "../src/components/fields/FallbackField.tsx", "../src/components/fields/LayoutGridField.tsx", "../src/components/fields/LayoutHeaderField.tsx", "../src/components/fields/LayoutMultiSchemaField.tsx", "../src/components/fields/MultiSchemaField.tsx", "../src/components/fields/NumberField.tsx", "../src/components/fields/ObjectField.tsx", "../src/components/constants.ts", "../src/components/fields/OptionalDataControlsField.tsx", "../src/components/fields/SchemaField.tsx", "../src/components/fields/StringField.tsx", "../src/components/fields/NullField.tsx", "../src/components/fields/index.ts", "../src/components/templates/ArrayFieldDescriptionTemplate.tsx", "../src/components/templates/ArrayFieldItemTemplate.tsx", "../src/components/templates/ArrayFieldItemButtonsTemplate.tsx", "../src/components/templates/ArrayFieldTemplate.tsx", "../src/components/templates/ArrayFieldTitleTemplate.tsx", "../src/components/templates/BaseInputTemplate.tsx", "../src/components/templates/ButtonTemplates/SubmitButton.tsx", "../src/components/templates/ButtonTemplates/AddButton.tsx", "../src/components/templates/ButtonTemplates/IconButton.tsx", "../src/components/templates/ButtonTemplates/index.ts", "../src/components/RichDescription.tsx", "../src/components/templates/DescriptionField.tsx", "../src/components/templates/ErrorList.tsx", "../src/components/templates/FallbackFieldTemplate.tsx", "../src/components/templates/FieldTemplate/FieldTemplate.tsx", "../src/components/templates/FieldTemplate/Label.tsx", "../src/components/templates/FieldTemplate/index.ts", "../src/components/templates/FieldErrorTemplate.tsx", "../src/components/templates/FieldHelpTemplate.tsx", "../src/components/templates/GridTemplate.tsx", "../src/components/templates/MultiSchemaFieldTemplate.tsx", "../src/components/templates/ObjectFieldTemplate.tsx", "../src/components/templates/OptionalDataControlsTemplate.tsx", "../src/components/templates/TitleField.tsx", "../src/components/templates/UnsupportedField.tsx", "../src/components/templates/WrapIfAdditionalTemplate.tsx", "../src/components/templates/index.ts", "../src/components/widgets/AltDateWidget.tsx", "../src/components/widgets/AltDateTimeWidget.tsx", "../src/components/widgets/CheckboxWidget.tsx", "../src/components/widgets/CheckboxesWidget.tsx", "../src/components/widgets/ColorWidget.tsx", "../src/components/widgets/DateWidget.tsx", "../src/components/widgets/DateTimeWidget.tsx", "../src/components/widgets/EmailWidget.tsx", "../src/components/widgets/FileWidget.tsx", "../src/components/widgets/HiddenWidget.tsx", "../src/components/widgets/PasswordWidget.tsx", "../src/components/widgets/RadioWidget.tsx", "../src/components/widgets/RangeWidget.tsx", "../src/components/widgets/RatingWidget.tsx", "../src/components/widgets/SelectWidget.tsx", "../src/components/widgets/TextareaWidget.tsx", "../src/components/widgets/TextWidget.tsx", "../src/components/widgets/TimeWidget.tsx", "../src/components/widgets/URLWidget.tsx", "../src/components/widgets/UpDownWidget.tsx", "../src/components/widgets/index.ts", "../src/withTheme.tsx", "../src/getTestRegistry.tsx", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, ElementType, FormEvent, ReactNode, Ref, RefObject, createRef } from 'react';\nimport {\n createSchemaUtils,\n CustomValidator,\n deepEquals,\n ErrorSchema,\n ErrorSchemaBuilder,\n ErrorTransformer,\n FieldPathId,\n FieldPathList,\n FormContextType,\n GenericObjectType,\n getChangedFields,\n getTemplate,\n getUiOptions,\n isObject,\n mergeObjects,\n NAME_KEY,\n PathSchema,\n StrictRJSFSchema,\n Registry,\n RegistryFieldsType,\n RegistryWidgetsType,\n RJSFSchema,\n RJSFValidationError,\n RJSF_ADDITIONAL_PROPERTIES_FLAG,\n SchemaUtilsType,\n shouldRender,\n SUBMIT_BTN_OPTIONS_KEY,\n TemplatesType,\n toErrorList,\n toFieldPathId,\n UiSchema,\n UI_GLOBAL_OPTIONS_KEY,\n UI_OPTIONS_KEY,\n ValidationData,\n validationDataMerge,\n ValidatorType,\n Experimental_DefaultFormStateBehavior,\n Experimental_CustomMergeAllOf,\n DEFAULT_ID_SEPARATOR,\n DEFAULT_ID_PREFIX,\n GlobalFormOptions,\n ERRORS_KEY,\n ID_KEY,\n NameGeneratorFunction,\n} from '@rjsf/utils';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _pick from 'lodash/pick';\nimport _set from 'lodash/set';\nimport _toPath from 'lodash/toPath';\nimport _unset from 'lodash/unset';\n\nimport getDefaultRegistry from '../getDefaultRegistry';\nimport { ADDITIONAL_PROPERTY_KEY_REMOVE, IS_RESET } from './constants';\n\n/** The properties that are passed to the `Form` */\nexport interface FormProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n /** The JSON schema object for the form */\n schema: S;\n /** An implementation of the `ValidatorType` interface that is needed for form validation to work */\n validator: ValidatorType<T, S, F>;\n /** The optional children for the form, if provided, it will replace the default `SubmitButton` */\n children?: ReactNode;\n /** The uiSchema for the form */\n uiSchema?: UiSchema<T, S, F>;\n /** The data for the form, used to load a \"controlled\" form with its current data. If you want an \"uncontrolled\" form\n * with initial data, then use `initialFormData` instead.\n */\n formData?: T;\n /** The initial data for the form, used to fill an \"uncontrolled\" form with existing data on the initial render and\n * when `reset()` is called programmatically.\n */\n initialFormData?: T;\n // Form presentation and behavior modifiers\n /** You can provide a `formContext` object to the form, which is passed down to all fields and widgets. Useful for\n * implementing context aware fields and widgets.\n *\n * NOTE: Setting `{readonlyAsDisabled: false}` on the formContext will make the antd theme treat readOnly fields as\n * disabled.\n */\n formContext?: F;\n /** To avoid collisions with existing ids in the DOM, it is possible to change the prefix used for ids;\n * Default is `root`\n */\n idPrefix?: string;\n /** To avoid using a path separator that is present in field names, it is possible to change the separator used for\n * ids (Default is `_`)\n */\n idSeparator?: string;\n /** It's possible to disable the whole form by setting the `disabled` prop. The `disabled` prop is then forwarded down\n * to each field of the form. If you just want to disable some fields, see the `ui:disabled` parameter in `uiSchema`\n */\n disabled?: boolean;\n /** It's possible to make the whole form read-only by setting the `readonly` prop. The `readonly` prop is then\n * forwarded down to each field of the form. If you just want to make some fields read-only, see the `ui:readonly`\n * parameter in `uiSchema`\n */\n readonly?: boolean;\n // Form registry\n /** The dictionary of registered fields in the form */\n fields?: RegistryFieldsType<T, S, F>;\n /** The dictionary of registered templates in the form; Partial allows a subset to be provided beyond the defaults */\n templates?: Partial<Omit<TemplatesType<T, S, F>, 'ButtonTemplates'>> & {\n ButtonTemplates?: Partial<TemplatesType<T, S, F>['ButtonTemplates']>;\n };\n /** The dictionary of registered widgets in the form */\n widgets?: RegistryWidgetsType<T, S, F>;\n // Callbacks\n /** If you plan on being notified every time the form data are updated, you can pass an `onChange` handler, which will\n * receive the same args as `onSubmit` any time a value is updated in the form. Can also return the `id` of the field\n * that caused the change\n */\n onChange?: (data: IChangeEvent<T, S, F>, id?: string) => void;\n /** To react when submitted form data are invalid, pass an `onError` handler. It will be passed the list of\n * encountered errors\n */\n onError?: (errors: RJSFValidationError[]) => void;\n /** You can pass a function as the `onSubmit` prop of your `Form` component to listen to when the form is submitted\n * and its data are valid. It will be passed a result object having a `formData` attribute, which is the valid form\n * data you're usually after. The original event will also be passed as a second parameter\n */\n onSubmit?: (data: IChangeEvent<T, S, F>, event: FormEvent<any>) => void;\n /** Sometimes you may want to trigger events or modify external state when a field has been touched, so you can pass\n * an `onBlur` handler, which will receive the id of the input that was blurred and the field value\n */\n onBlur?: (id: string, data: any) => void;\n /** Sometimes you may want to trigger events or modify external state when a field has been focused, so you can pass\n * an `onFocus` handler, which will receive the id of the input that is focused and the field value\n */\n onFocus?: (id: string, data: any) => void;\n /** The value of this prop will be passed to the `accept-charset` HTML attribute on the form */\n acceptCharset?: string;\n /** The value of this prop will be passed to the `action` HTML attribute on the form\n *\n * NOTE: this just renders the `action` attribute in the HTML markup. There is no real network request being sent to\n * this `action` on submit. Instead, react-jsonschema-form catches the submit event with `event.preventDefault()`\n * and then calls the `onSubmit` function, where you could send a request programmatically with `fetch` or similar.\n */\n action?: string;\n /** The value of this prop will be passed to the `autocomplete` HTML attribute on the form */\n autoComplete?: string;\n /** The value of this prop will be passed to the `class` HTML attribute on the form */\n className?: string;\n /** The value of this prop will be passed to the `enctype` HTML attribute on the form */\n enctype?: string;\n /** The value of this prop will be passed to the `id` HTML attribute on the form */\n id?: string;\n /** The value of this prop will be passed to the `name` HTML attribute on the form */\n name?: string;\n /** The value of this prop will be passed to the `method` HTML attribute on the form */\n method?: string;\n /** It's possible to change the default `form` tag name to a different HTML tag, which can be helpful if you are\n * nesting forms. However, native browser form behaviour, such as submitting when the `Enter` key is pressed, may no\n * longer work\n */\n tagName?: ElementType;\n /** The value of this prop will be passed to the `target` HTML attribute on the form */\n target?: string;\n // Errors and validation\n /** Formerly the `validate` prop; Takes a function that specifies custom validation rules for the form */\n customValidate?: CustomValidator<T, S, F>;\n /** This prop allows passing in custom errors that are augmented with the existing JSON Schema errors on the form; it\n * can be used to implement asynchronous validation. By default, these are non-blocking errors, meaning that you can\n * still submit the form when these are the only errors displayed to the user.\n */\n extraErrors?: ErrorSchema<T>;\n /** If set to true, causes the `extraErrors` to become blocking when the form is submitted */\n extraErrorsBlockSubmit?: boolean;\n /** If set to true, turns off HTML5 validation on the form; Set to `false` by default */\n noHtml5Validate?: boolean;\n /** If set to true, turns off all validation. Set to `false` by default\n *\n * @deprecated - In a future release, this switch may be replaced by making `validator` prop optional\n */\n noValidate?: boolean;\n /** Flag that describes when live validation will be performed. Live validation means that the form will perform\n * validation and show any validation errors whenever the form data is updated, rather than just on submit.\n *\n * If no value (or `false`) is provided, then live validation will not happen. If `true` or `onChange` is provided for\n * the flag, then live validation will be performed after processing of all pending changes has completed. If `onBlur`\n * is provided, then live validation will be performed when a field that was updated is blurred (as a performance\n * optimization).\n *\n * @deprecated - In a future major release, the `boolean` options for this flag will be removed\n */\n liveValidate?: boolean | 'onChange' | 'onBlur';\n /** Flag that describes when live omit will be performed. Live omit happens only when `omitExtraData` is also set to\n * to `true` and the form's data is updated by the user.\n *\n * If no value (or `false`) is provided, then live omit will not happen. If `true` or `onChange` is provided for\n * the flag, then live omit will be performed after processing of all pending changes has completed. If `onBlur`\n * is provided, then live omit will be performed when a field that was updated is blurred (as a performance\n * optimization).\n *\n * @deprecated - In a future major release, the `boolean` options for this flag will be removed\n */\n liveOmit?: boolean | 'onChange' | 'onBlur';\n /** If set to true, then extra form data values that are not in any form field will be removed whenever `onSubmit` is\n * called. Set to `false` by default.\n */\n omitExtraData?: boolean;\n /** When this prop is set to `top` or 'bottom', a list of errors (or the custom error list defined in the `ErrorList`) will also\n * show. When set to false, only inline input validation errors will be shown. Set to `top` by default\n */\n showErrorList?: false | 'top' | 'bottom';\n /** A function can be passed to this prop in order to make modifications to the default errors resulting from JSON\n * Schema validation\n */\n transformErrors?: ErrorTransformer<T, S, F>;\n /** If set to true, then the first field with an error will receive the focus when the form is submitted with errors\n */\n focusOnFirstError?: boolean | ((error: RJSFValidationError) => void);\n /** Optional string translation function, if provided, allows users to change the translation of the RJSF internal\n * strings. Some strings contain replaceable parameter values as indicated by `%1`, `%2`, etc. The number after the\n * `%` indicates the order of the parameter. The ordering of parameters is important because some languages may choose\n * to put the second parameter before the first in its translation.\n */\n translateString?: Registry['translateString'];\n /** Optional function to generate custom HTML `name` attributes for form fields.\n */\n nameGenerator?: NameGeneratorFunction;\n /** Optional flag that, when set to true, will cause the `FallbackField` to render a type selector for unsupported\n * fields instead of the default UnsupportedField error UI.\n */\n useFallbackUiForUnsupportedType?: boolean;\n /** Optional configuration object with flags, if provided, allows users to override default form state behavior\n * Currently only affecting minItems on array fields and handling of setting defaults based on the value of\n * `emptyObjectFields`\n */\n experimental_defaultFormStateBehavior?: Experimental_DefaultFormStateBehavior;\n /**\n * Controls the component update strategy used by the Form's `shouldComponentUpdate` lifecycle method.\n *\n * - `'customDeep'`: Uses RJSF's custom deep equality checks via the `deepEquals` utility function,\n * which treats all functions as equivalent and provides optimized performance for form data comparisons.\n * - `'shallow'`: Uses shallow comparison of props and state (only compares direct properties). This matches React's PureComponent behavior.\n * - `'always'`: Always rerenders when called. This matches React's Component behavior.\n *\n * @default 'customDeep'\n */\n experimental_componentUpdateStrategy?: 'customDeep' | 'shallow' | 'always';\n /** Optional function that allows for custom merging of `allOf` schemas\n */\n experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>;\n // Private\n /**\n * _internalFormWrapper is currently used by the semantic-ui theme to provide a custom wrapper around `<Form />`\n * that supports the proper rendering of those themes. To use this prop, one must pass a component that takes two\n * props: `children` and `as`. That component, at minimum, should render the `children` inside of a <form /> tag\n * unless `as` is provided, in which case, use the `as` prop in place of `<form />`.\n * i.e.:\n * ```\n * export default function InternalForm({ children, as }) {\n * const FormTag = as || 'form';\n * return <FormTag>{children}</FormTag>;\n * }\n * ```\n *\n * Use at your own risk as this prop is private and may change at any time without notice.\n */\n _internalFormWrapper?: ElementType;\n /** Support receiving a React ref to the Form\n */\n ref?: Ref<Form<T, S, F>>;\n}\n\n/** The data that is contained within the state for the `Form` */\nexport interface FormState<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n /** The JSON schema object for the form */\n schema: S;\n /** The uiSchema for the form */\n uiSchema: UiSchema<T, S, F>;\n /** The `FieldPathId` for the form, computed from the `schema`, the `rootFieldId`, the `idPrefix` and\n * `idSeparator` props.\n */\n fieldPathId: FieldPathId;\n /** The schemaUtils implementation used by the `Form`, created from the `validator` and the `schema` */\n schemaUtils: SchemaUtilsType<T, S, F>;\n /** The current data for the form, computed from the `formData` prop and the changes made by the user */\n formData?: T;\n /** Flag indicating whether the form is in edit mode, true when `formData` is passed to the form, otherwise false */\n edit: boolean;\n /** The current list of errors for the form, includes `extraErrors` */\n errors: RJSFValidationError[];\n /** The current errors, in `ErrorSchema` format, for the form, includes `extraErrors` */\n errorSchema: ErrorSchema<T>;\n // Private\n /** The current list of errors for the form directly from schema validation, does NOT include `extraErrors` */\n schemaValidationErrors: RJSFValidationError[];\n /** The current errors, in `ErrorSchema` format, for the form directly from schema validation, does NOT include\n * `extraErrors`\n */\n schemaValidationErrorSchema: ErrorSchema<T>;\n /** A container used to handle custom errors provided via `onChange` */\n customErrors?: ErrorSchemaBuilder<T>;\n /** @description result of schemaUtils.retrieveSchema(schema, formData). This a memoized value to avoid re calculate at internal functions (getStateFromProps, onChange) */\n retrievedSchema: S;\n /** Flag indicating whether the initial form defaults have been generated */\n initialDefaultsGenerated: boolean;\n /** The registry (re)computed only when props changed */\n registry: Registry<T, S, F>;\n}\n\n/** The event data passed when changes have been made to the form, includes everything from the `FormState` except\n * the schema validation errors. An additional `status` is added when returned from `onSubmit`\n */\nexport interface IChangeEvent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Pick<\n FormState<T, S, F>,\n 'schema' | 'uiSchema' | 'fieldPathId' | 'schemaUtils' | 'formData' | 'edit' | 'errors' | 'errorSchema'\n > {\n /** The status of the form when submitted */\n status?: 'submitted';\n}\n\n/** Converts the full `FormState` into the `IChangeEvent` version by picking out the public values\n *\n * @param state - The state of the form\n * @param status - The status provided by the onSubmit\n * @returns - The `IChangeEvent` for the state\n */\nfunction toIChangeEvent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n state: FormState<T, S, F>,\n status?: IChangeEvent['status'],\n): IChangeEvent<T, S, F> {\n return {\n ..._pick(state, ['schema', 'uiSchema', 'fieldPathId', 'schemaUtils', 'formData', 'edit', 'errors', 'errorSchema']),\n ...(status !== undefined && { status }),\n };\n}\n\n/** The definition of a pending change that will be processed in the `onChange` handler\n */\ninterface PendingChange<T> {\n /** The path into the formData/errorSchema at which the `newValue`/`newErrorSchema` will be set */\n path: FieldPathList;\n /** The new value to set into the formData */\n newValue?: T;\n /** The new errors to be set into the errorSchema, if any */\n newErrorSchema?: ErrorSchema<T>;\n /** The optional id of the field for which the change is being made */\n id?: string;\n}\n\n/** The `Form` component renders the outer form and all the fields defined in the `schema` */\nexport default class Form<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> extends Component<FormProps<T, S, F>, FormState<T, S, F>> {\n /** The ref used to hold the `form` element, this needs to be `any` because `tagName` or `_internalFormWrapper` can\n * provide any possible type here\n */\n formElement: RefObject<any>;\n\n /** The list of pending changes\n */\n pendingChanges: PendingChange<T>[] = [];\n\n /** Constructs the `Form` from the `props`. Will setup the initial state from the props. It will also call the\n * `onChange` handler if the initially provided `formData` is modified to add missing default values as part of the\n * state construction.\n *\n * @param props - The initial props for the `Form`\n */\n constructor(props: FormProps<T, S, F>) {\n super(props);\n\n if (!props.validator) {\n throw new Error('A validator is required for Form functionality to work');\n }\n\n const { formData: propsFormData, initialFormData, onChange } = props;\n const formData = propsFormData ?? initialFormData;\n this.state = this.getStateFromProps(props, formData, undefined, undefined, undefined, true);\n if (onChange && !deepEquals(this.state.formData, formData)) {\n onChange(toIChangeEvent(this.state));\n }\n this.formElement = createRef();\n }\n\n /**\n * `getSnapshotBeforeUpdate` is a React lifecycle method that is invoked right before the most recently rendered\n * output is committed to the DOM. It enables your component to capture current values (e.g., scroll position) before\n * they are potentially changed.\n *\n * In this case, it checks if the props have changed since the last render. If they have, it computes the next state\n * of the component using `getStateFromProps` method and returns it along with a `shouldUpdate` flag set to `true` IF\n * the `nextState` and `prevState` are different, otherwise `false`. This ensures that we have the most up-to-date\n * state ready to be applied in `componentDidUpdate`.\n *\n * If `formData` hasn't changed, it simply returns an object with `shouldUpdate` set to `false`, indicating that a\n * state update is not necessary.\n *\n * @param prevProps - The previous set of props before the update.\n * @param prevState - The previous state before the update.\n * @returns Either an object containing the next state and a flag indicating that an update should occur, or an object\n * with a flag indicating that an update is not necessary.\n */\n getSnapshotBeforeUpdate(\n prevProps: FormProps<T, S, F>,\n prevState: FormState<T, S, F>,\n ): { nextState: FormState<T, S, F>; shouldUpdate: true } | { shouldUpdate: false } {\n if (!deepEquals(this.props, prevProps)) {\n // Compare the previous props formData against the current props formData\n const formDataChangedFields = getChangedFields(this.props.formData, prevProps.formData);\n // Compare the current props formData against the current state's formData to determine if the new props were the\n // result of the onChange from the existing state formData\n const stateDataChangedFields = getChangedFields(this.props.formData, this.state.formData);\n const isSchemaChanged = !deepEquals(prevProps.schema, this.props.schema);\n // When formData is not an object, getChangedFields returns an empty array.\n // In this case, deepEquals is most needed to check again.\n const isFormDataChanged =\n formDataChangedFields.length > 0 || !deepEquals(prevProps.formData, this.props.formData);\n const isStateDataChanged =\n stateDataChangedFields.length > 0 || !deepEquals(this.state.formData, this.props.formData);\n const nextState = this.getStateFromProps(\n this.props,\n this.props.formData,\n // If the `schema` has changed, we need to update the retrieved schema.\n // Or if the `formData` changes, for example in the case of a schema with dependencies that need to\n // match one of the subSchemas, the retrieved schema must be updated.\n isSchemaChanged || isFormDataChanged ? undefined : this.state.retrievedSchema,\n isSchemaChanged,\n formDataChangedFields,\n // Skip live validation for this request if no form data has changed from the last state\n !isStateDataChanged,\n );\n const shouldUpdate = !deepEquals(nextState, prevState);\n return { nextState, shouldUpdate };\n }\n return { shouldUpdate: false };\n }\n\n /**\n * `componentDidUpdate` is a React lifecycle method that is invoked immediately after updating occurs. This method is\n * not called for the initial render.\n *\n * Here, it checks if an update is necessary based on the `shouldUpdate` flag received from `getSnapshotBeforeUpdate`.\n * If an update is required, it applies the next state and, if needed, triggers the `onChange` handler to inform about\n * changes.\n *\n * @param _ - The previous set of props.\n * @param prevState - The previous state of the component before the update.\n * @param snapshot - The value returned from `getSnapshotBeforeUpdate`.\n */\n componentDidUpdate(\n _: FormProps<T, S, F>,\n prevState: FormState<T, S, F>,\n snapshot: { nextState: FormState<T, S, F>; shouldUpdate: true } | { shouldUpdate: false },\n ) {\n if (snapshot.shouldUpdate) {\n const { nextState } = snapshot;\n if (\n !deepEquals(nextState.formData, this.props.formData) &&\n !deepEquals(nextState.formData, prevState.formData) &&\n this.props.onChange\n ) {\n this.props.onChange(toIChangeEvent(nextState));\n }\n this.setState(nextState);\n }\n }\n\n /** Extracts the updated state from the given `props` and `inputFormData`. As part of this process, the\n * `inputFormData` is first processed to add any missing required defaults. After that, the data is run through the\n * validation process IF required by the `props`.\n *\n * @param props - The props passed to the `Form`\n * @param inputFormData - The new or current data for the `Form`\n * @param retrievedSchema - An expanded schema, if not provided, it will be retrieved from the `schema` and `formData`.\n * @param isSchemaChanged - A flag indicating whether the schema has changed.\n * @param formDataChangedFields - The changed fields of `formData`\n * @param skipLiveValidate - Optional flag, if true, means that we are not running live validation\n * @returns - The new state for the `Form`\n */\n getStateFromProps(\n props: FormProps<T, S, F>,\n inputFormData?: T,\n retrievedSchema?: S,\n isSchemaChanged = false,\n formDataChangedFields: string[] = [],\n skipLiveValidate = false,\n ): FormState<T, S, F> {\n const state: FormState<T, S, F> = this.state || {};\n const schema = 'schema' in props ? props.schema : this.props.schema;\n const validator = 'validator' in props ? props.validator : this.props.validator;\n const uiSchema: UiSchema<T, S, F> = ('uiSchema' in props ? props.uiSchema! : this.props.uiSchema!) || {};\n const isUncontrolled = props.formData === undefined && this.props.formData === undefined;\n const edit = typeof inputFormData !== 'undefined';\n const liveValidate = 'liveValidate' in props ? props.liveValidate : this.props.liveValidate;\n const mustValidate = edit && !props.noValidate && liveValidate;\n const experimental_defaultFormStateBehavior =\n 'experimental_defaultFormStateBehavior' in props\n ? props.experimental_defaultFormStateBehavior\n : this.props.experimental_defaultFormStateBehavior;\n const experimental_customMergeAllOf =\n 'experimental_customMergeAllOf' in props\n ? props.experimental_customMergeAllOf\n : this.props.experimental_customMergeAllOf;\n let schemaUtils: SchemaUtilsType<T, S, F> = state.schemaUtils;\n if (\n !schemaUtils ||\n schemaUtils.doesSchemaUtilsDiffer(\n validator,\n schema,\n experimental_defaultFormStateBehavior,\n experimental_customMergeAllOf,\n )\n ) {\n schemaUtils = createSchemaUtils<T, S, F>(\n validator,\n schema,\n experimental_defaultFormStateBehavior,\n experimental_customMergeAllOf,\n );\n }\n\n const rootSchema = schemaUtils.getRootSchema();\n\n // Compute the formData for getDefaultFormState() function based on the inputFormData, isUncontrolled and state\n let defaultsFormData = inputFormData;\n if (inputFormData === IS_RESET) {\n defaultsFormData = undefined;\n } else if (inputFormData === undefined && isUncontrolled) {\n defaultsFormData = state.formData;\n }\n const formData: T = schemaUtils.getDefaultFormState(\n rootSchema,\n defaultsFormData,\n false,\n state.initialDefaultsGenerated,\n ) as T;\n const _retrievedSchema = this.updateRetrievedSchema(\n retrievedSchema ?? schemaUtils.retrieveSchema(rootSchema, formData),\n );\n\n const getCurrentErrors = (): ValidationData<T> => {\n // If the `props.noValidate` option is set or the schema has changed, we reset the error state.\n if (props.noValidate || isSchemaChanged) {\n return { errors: [], errorSchema: {} };\n } else if (!props.liveValidate) {\n return {\n errors: state.schemaValidationErrors || [],\n errorSchema: state.schemaValidationErrorSchema || {},\n };\n }\n return {\n errors: state.errors || [],\n errorSchema: state.errorSchema || {},\n };\n };\n\n let errors: RJSFValidationError[];\n let errorSchema: ErrorSchema<T> | undefined;\n let schemaValidationErrors: RJSFValidationError[] = state.schemaValidationErrors;\n let schemaValidationErrorSchema: ErrorSchema<T> = state.schemaValidationErrorSchema;\n // If we are skipping live validate, it means that the state has already been updated with live validation errors\n if (mustValidate && !skipLiveValidate) {\n const liveValidation = this.liveValidate(\n rootSchema,\n schemaUtils,\n state.errorSchema,\n formData,\n undefined,\n state.customErrors,\n retrievedSchema,\n // If retrievedSchema is undefined which means the schema or formData has changed, we do not merge state.\n // Else in the case where it hasn't changed,\n retrievedSchema !== undefined,\n );\n errors = liveValidation.errors;\n errorSchema = liveValidation.errorSchema;\n schemaValidationErrors = liveValidation.schemaValidationErrors;\n schemaValidationErrorSchema = liveValidation.schemaValidationErrorSchema;\n } else {\n const currentErrors = getCurrentErrors();\n errors = currentErrors.errors;\n errorSchema = currentErrors.errorSchema;\n // We only update the error schema for changed fields if mustValidate is false\n if (formDataChangedFields.length > 0 && !mustValidate) {\n const newErrorSchema = formDataChangedFields.reduce(\n (acc, key) => {\n acc[key] = undefined;\n return acc;\n },\n {} as Record<string, undefined>,\n );\n errorSchema = schemaValidationErrorSchema = mergeObjects(\n currentErrors.errorSchema,\n newErrorSchema,\n 'preventDuplicates',\n ) as ErrorSchema<T>;\n }\n const mergedErrors = this.mergeErrors({ errorSchema, errors }, props.extraErrors, state.customErrors);\n errors = mergedErrors.errors;\n errorSchema = mergedErrors.errorSchema;\n }\n\n // Only store a new registry when the props cause a different one to be created\n const newRegistry = this.getRegistry(props, rootSchema, schemaUtils);\n const registry = deepEquals(state.registry, newRegistry) ? state.registry : newRegistry;\n // Only compute a new `fieldPathId` when the `idPrefix` is different than the existing fieldPathId's ID_KEY\n const fieldPathId =\n state.fieldPathId && state.fieldPathId?.[ID_KEY] === registry.globalFormOptions.idPrefix\n ? state.fieldPathId\n : toFieldPathId('', registry.globalFormOptions);\n const nextState: FormState<T, S, F> = {\n schemaUtils,\n schema: rootSchema,\n uiSchema,\n fieldPathId,\n formData,\n edit,\n errors,\n errorSchema,\n schemaValidationErrors,\n schemaValidationErrorSchema,\n retrievedSchema: _retrievedSchema,\n initialDefaultsGenerated: true,\n registry,\n };\n return nextState;\n }\n\n /** React lifecycle method that is used to determine whether component should be updated.\n *\n * @param nextProps - The next version of the props\n * @param nextState - The next version of the state\n * @returns - True if the component should be updated, false otherwise\n */\n shouldComponentUpdate(nextProps: FormProps<T, S, F>, nextState: FormState<T, S, F>): boolean {\n const { experimental_componentUpdateStrategy = 'customDeep' } = this.props;\n return shouldRender(this, nextProps, nextState, experimental_componentUpdateStrategy);\n }\n\n /** Validates the `formData` against the `schema` using the `altSchemaUtils` (if provided otherwise it uses the\n * `schemaUtils` in the state), returning the results.\n *\n * @param formData - The new form data to validate\n * @param schema - The schema used to validate against\n * @param [altSchemaUtils] - The alternate schemaUtils to use for validation\n * @param [retrievedSchema] - An optionally retrieved schema for per\n */\n validate(\n formData: T | undefined,\n schema = this.state.schema,\n altSchemaUtils?: SchemaUtilsType<T, S, F>,\n retrievedSchema?: S,\n ): ValidationData<T> {\n const schemaUtils = altSchemaUtils ? altSchemaUtils : this.state.schemaUtils;\n const { customValidate, transformErrors, uiSchema } = this.props;\n const resolvedSchema = retrievedSchema ?? schemaUtils.retrieveSchema(schema, formData);\n return schemaUtils\n .getValidator()\n .validateFormData(formData, resolvedSchema, customValidate, transformErrors, uiSchema);\n }\n\n /** Renders any errors contained in the `state` in using the `ErrorList`, if not disabled by `showErrorList`. */\n renderErrors(registry: Registry<T, S, F>) {\n const { errors, errorSchema, schema, uiSchema } = this.state;\n const options = getUiOptions<T, S, F>(uiSchema);\n const ErrorListTemplate = getTemplate<'ErrorListTemplate', T, S, F>('ErrorListTemplate', registry, options);\n\n if (errors && errors.length) {\n return (\n <ErrorListTemplate\n errors={errors}\n errorSchema={errorSchema || {}}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n }\n return null;\n }\n\n /** Merges any `extraErrors` or `customErrors` into the given `schemaValidation` object, returning the result\n *\n * @param schemaValidation - The `ValidationData` object into which additional errors are merged\n * @param [extraErrors] - The extra errors from the props\n * @param [customErrors] - The customErrors from custom components\n * @return - The `extraErrors` and `customErrors` merged into the `schemaValidation`\n * @private\n */\n private mergeErrors(\n schemaValidation: ValidationData<T>,\n extraErrors?: FormProps['extraErrors'],\n customErrors?: ErrorSchemaBuilder,\n ): ValidationData<T> {\n let errorSchema: ErrorSchema<T> = schemaValidation.errorSchema;\n let errors: RJSFValidationError[] = schemaValidation.errors;\n if (extraErrors) {\n const merged = validationDataMerge(schemaValidation, extraErrors);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n if (customErrors) {\n const merged = validationDataMerge(schemaValidation, customErrors.ErrorSchema, true);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n return { errors, errorSchema };\n }\n\n /** Performs live validation and then updates and returns the errors and error schemas by potentially merging in\n * `extraErrors` and `customErrors`.\n *\n * @param rootSchema - The `rootSchema` from the state\n * @param schemaUtils - The `SchemaUtilsType` from the state\n * @param originalErrorSchema - The original `ErrorSchema` from the state\n * @param [formData] - The new form data to validate\n * @param [extraErrors] - The extra errors from the props\n * @param [customErrors] - The customErrors from custom components\n * @param [retrievedSchema] - An expanded schema, if not provided, it will be retrieved from the `schema` and `formData`\n * @param [mergeIntoOriginalErrorSchema=false] - Optional flag indicating whether we merge into original schema\n * @returns - An object containing `errorSchema`, `errors`, `schemaValidationErrors` and `schemaValidationErrorSchema`\n * @private\n */\n private liveValidate(\n rootSchema: S,\n schemaUtils: SchemaUtilsType<T, S, F>,\n originalErrorSchema: ErrorSchema<S>,\n formData?: T,\n extraErrors?: FormProps['extraErrors'],\n customErrors?: ErrorSchemaBuilder<T>,\n retrievedSchema?: S,\n mergeIntoOriginalErrorSchema = false,\n ) {\n const schemaValidation = this.validate(formData, rootSchema, schemaUtils, retrievedSchema);\n const errors = schemaValidation.errors;\n let errorSchema = schemaValidation.errorSchema;\n // We merge 'originalErrorSchema' with 'schemaValidation.errorSchema.'; This done to display the raised field error.\n if (mergeIntoOriginalErrorSchema) {\n errorSchema = mergeObjects(\n originalErrorSchema,\n schemaValidation.errorSchema,\n 'preventDuplicates',\n ) as ErrorSchema<T>;\n }\n const schemaValidationErrors = errors;\n const schemaValidationErrorSchema = errorSchema;\n const mergedErrors = this.mergeErrors({ errorSchema, errors }, extraErrors, customErrors);\n return { ...mergedErrors, schemaValidationErrors, schemaValidationErrorSchema };\n }\n\n /** Returns the `formData` with only the elements specified in the `fields` list\n *\n * @param formData - The data for the `Form`\n * @param fields - The fields to keep while filtering\n */\n getUsedFormData = (formData: T | undefined, fields: string[][]): T | undefined => {\n // For the case of a single input form\n if (fields.length === 0 && typeof formData !== 'object') {\n return formData;\n }\n\n // _pick has incorrect type definition, it works with string[][], because lodash/hasIn supports it\n const data: GenericObjectType = _pick(formData, fields as unknown as string[]);\n if (Array.isArray(formData)) {\n return Object.keys(data).map((key: string) => data[key]) as unknown as T;\n }\n\n return data as T;\n };\n\n /** Returns the list of field names from inspecting the `pathSchema` as well as using the `formData`\n *\n * @param pathSchema - The `PathSchema` object for the form\n * @param [formData] - The form data to use while checking for empty objects/arrays\n */\n getFieldNames = (pathSchema: PathSchema<T>, formData?: T): string[][] => {\n const formValueHasData = (value: T, isLeaf: boolean) =>\n typeof value !== 'object' || _isEmpty(value) || (isLeaf && !_isEmpty(value));\n const getAllPaths = (_obj: GenericObjectType, acc: string[][] = [], paths: string[][] = [[]]) => {\n const objKeys = Object.keys(_obj);\n objKeys.forEach((key: string) => {\n const data = _obj[key];\n if (typeof data === 'object') {\n const newPaths = paths.map((path) => [...path, key]);\n // If an object is marked with additionalProperties, all its keys are valid\n if (data[RJSF_ADDITIONAL_PROPERTIES_FLAG] && data[NAME_KEY] !== '') {\n acc.push(data[NAME_KEY]);\n } else {\n getAllPaths(data, acc, newPaths);\n }\n } else if (key === NAME_KEY && data !== '') {\n paths.forEach((path) => {\n const formValue = _get(formData, path);\n const isLeaf = objKeys.length === 1;\n // adds path to fieldNames if it points to a value or an empty object/array which is not a leaf\n if (\n formValueHasData(formValue, isLeaf) ||\n (Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf)))\n ) {\n acc.push(path);\n }\n });\n }\n });\n return acc;\n };\n\n return getAllPaths(pathSchema);\n };\n\n /** Returns the `formData` after filtering to remove any extra data not in a form field\n *\n * @param formData - The data for the `Form`\n * @returns The `formData` after omitting extra data\n */\n omitExtraData = (formData?: T): T | undefined => {\n const { schema, schemaUtils } = this.state;\n const retrievedSchema = schemaUtils.retrieveSchema(schema, formData);\n const pathSchema = schemaUtils.toPathSchema(retrievedSchema, '', formData);\n const fieldNames = this.getFieldNames(pathSchema, formData);\n return this.getUsedFormData(formData, fieldNames);\n };\n\n /** Allows a user to set a value for the provided `fieldPath`, which must be either a dotted path to the field OR a\n * `FieldPathList`. To set the root element, used either `''` or `[]` for the path. Passing undefined will clear the\n * value in the field.\n *\n * @param fieldPath - Either a dotted path to the field or the `FieldPathList` to the field\n * @param [newValue] - The new value for the field\n */\n setFieldValue = (fieldPath: string | FieldPathList, newValue?: T) => {\n const { registry } = this.state;\n const path = Array.isArray(fieldPath) ? fieldPath : fieldPath.split('.');\n const fieldPathId = toFieldPathId('', registry.globalFormOptions, path);\n this.onChange(newValue, path, undefined, fieldPathId[ID_KEY]);\n };\n\n /** Pushes the given change information into the `pendingChanges` array and then calls `processPendingChanges()` if\n * the array only contains a single pending change.\n *\n * @param newValue - The new form data from a change to a field\n * @param path - The path to the change into which to set the formData\n * @param [newErrorSchema] - The new `ErrorSchema` based on the field change\n * @param [id] - The id of the field that caused the change\n */\n onChange = (newValue: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n this.pendingChanges.push({ newValue, path, newErrorSchema, id });\n if (this.pendingChanges.length === 1) {\n this.processPendingChange();\n }\n };\n\n /** Function to handle changes made to a field in the `Form`. This handler gets the first change from the\n * `pendingChanges` list, containing the `newValue` for the `formData` and the `path` at which the `newValue` is to be\n * updated, along with a new, optional `ErrorSchema` for that same `path` and potentially the `id` of the field being\n * changed. It will first update the `formData` with any missing default fields and then, if `omitExtraData` and\n * `liveOmit` are turned on, the `formData` will be filtered to remove any extra data not in a form field. Then, the\n * resulting `formData` will be validated if required. The state will be updated with the new updated (potentially\n * filtered) `formData`, any errors that resulted from validation. Finally the `onChange` callback will be called, if\n * specified, with the updated state and the `processPendingChange()` function is called again.\n */\n processPendingChange() {\n if (this.pendingChanges.length === 0) {\n return;\n }\n const { newValue, path, id } = this.pendingChanges[0];\n const { newErrorSchema } = this.pendingChanges[0];\n const { extraErrors, omitExtraData, liveOmit, noValidate, liveValidate, onChange } = this.props;\n const { formData: oldFormData, schemaUtils, schema, fieldPathId, schemaValidationErrorSchema, errors } = this.state;\n let { customErrors, errorSchema: originalErrorSchema } = this.state;\n const rootPathId = fieldPathId.path[0] || '';\n\n const isRootPath = !path || path.length === 0 || (path.length === 1 && path[0] === rootPathId);\n let retrievedSchema = this.state.retrievedSchema;\n let formData = isRootPath ? newValue : _cloneDeep(oldFormData);\n if (isObject(formData) || Array.isArray(formData)) {\n if (newValue === ADDITIONAL_PROPERTY_KEY_REMOVE) {\n // For additional properties, we were given the special remove this key value, so unset it\n _unset(formData, path);\n } else if (!isRootPath) {\n // If the newValue is not on the root path, then set it into the form data\n _set(formData, path, newValue);\n }\n // Pass true to skip live validation in `getStateFromProps()` since we will do it a bit later\n const newState = this.getStateFromProps(this.props, formData, undefined, undefined, undefined, true);\n formData = newState.formData;\n retrievedSchema = newState.retrievedSchema;\n }\n\n const mustValidate = !noValidate && (liveValidate === true || liveValidate === 'onChange');\n let state: Partial<FormState<T, S, F>> = { formData, schema };\n let newFormData = formData;\n\n if (omitExtraData === true && (liveOmit === true || liveOmit === 'onChange')) {\n newFormData = this.omitExtraData(formData);\n state = {\n formData: newFormData,\n };\n }\n\n if (newErrorSchema) {\n // First check to see if there is an existing validation error on this path...\n // @ts-expect-error TS2590, because getting from the error schema is confusing TS\n const oldValidationError = !isRootPath ? _get(schemaValidationErrorSchema, path) : schemaValidationErrorSchema;\n // If there is an old validation error for this path, assume we are updating it directly\n if (!_isEmpty(oldValidationError)) {\n // Update the originalErrorSchema \"in place\" or replace it if it is the root\n if (!isRootPath) {\n _set(originalErrorSchema, path, newErrorSchema);\n } else {\n originalErrorSchema = newErrorSchema;\n }\n } else {\n if (!customErrors) {\n customErrors = new ErrorSchemaBuilder<T>();\n }\n if (isRootPath) {\n const errors = _get(newErrorSchema, ERRORS_KEY);\n if (errors) {\n // only set errors when there are some\n customErrors.setErrors(errors);\n }\n } else {\n _set(customErrors.ErrorSchema, path, newErrorSchema);\n }\n }\n } else if (customErrors && _get(customErrors.ErrorSchema, [...path, ERRORS_KEY])) {\n // If we have custom errors and the path has an error, then we need to clear it\n customErrors.clearErrors(path);\n }\n // If there are pending changes in the queue, skip live validation since it will happen with the last change\n if (mustValidate && this.pendingChanges.length === 1) {\n const liveValidation = this.liveValidate(\n schema,\n schemaUtils,\n originalErrorSchema,\n newFormData,\n extraErrors,\n customErrors,\n retrievedSchema,\n );\n state = { formData: newFormData, ...liveValidation, customErrors };\n } else if (!noValidate && newErrorSchema) {\n // Merging 'newErrorSchema' into 'errorSchema' to display the custom raised errors.\n const mergedErrors = this.mergeErrors({ errorSchema: originalErrorSchema, errors }, extraErrors, customErrors);\n state = {\n formData: newFormData,\n ...mergedErrors,\n customErrors,\n };\n }\n this.setState(state as FormState<T, S, F>, () => {\n if (onChange) {\n onChange(toIChangeEvent({ ...this.state, ...state }), id);\n }\n // Now remove the change we just completed and call this again\n this.pendingChanges.shift();\n this.processPendingChange();\n });\n }\n\n /**\n * If the retrievedSchema has changed the new retrievedSchema is returned.\n * Otherwise, the old retrievedSchema is returned to persist reference.\n * - This ensures that AJV retrieves the schema from the cache when it has not changed,\n * avoiding the performance cost of recompiling the schema.\n *\n * @param retrievedSchema The new retrieved schema.\n * @returns The new retrieved schema if it has changed, else the old retrieved schema.\n */\n private updateRetrievedSchema(retrievedSchema: S) {\n const isTheSame = deepEquals(retrievedSchema, this.state?.retrievedSchema);\n return isTheSame ? this.state.retrievedSchema : retrievedSchema;\n }\n\n /**\n * Callback function to handle reset form data.\n * - Reset all fields with default values.\n * - Reset validations and errors\n *\n */\n reset = () => {\n // Cast the IS_RESET symbol to T to avoid type issues, we use this symbol to detect reset mode\n const { formData: propsFormData, initialFormData = IS_RESET as T, onChange } = this.props;\n const newState = this.getStateFromProps(\n this.props,\n propsFormData ?? initialFormData,\n undefined,\n undefined,\n undefined,\n true,\n );\n const newFormData = newState.formData;\n const state = {\n formData: newFormData,\n errorSchema: {},\n errors: [] as unknown,\n schemaValidationErrors: [] as unknown,\n schemaValidationErrorSchema: {},\n initialDefaultsGenerated: false,\n customErrors: undefined,\n } as FormState<T, S, F>;\n\n this.setState(state, () => onChange && onChange(toIChangeEvent({ ...this.state, ...state })));\n };\n\n /** Callback function to handle when a field on the form is blurred. Calls the `onBlur` callback for the `Form` if it\n * was provided. Also runs any live validation and/or live omit operations if the flags indicate they should happen\n * during `onBlur`.\n *\n * @param id - The unique `id` of the field that was blurred\n * @param data - The data associated with the field that was blurred\n */\n onBlur = (id: string, data: any) => {\n const { onBlur, omitExtraData, liveOmit, liveValidate } = this.props;\n if (onBlur) {\n onBlur(id, data);\n }\n if ((omitExtraData === true && liveOmit === 'onBlur') || liveValidate === 'onBlur') {\n const { onChange, extraErrors } = this.props;\n const { formData } = this.state;\n let newFormData: T | undefined = formData;\n let state: Partial<FormState<T, S, F>> = { formData: newFormData };\n if (omitExtraData === true && liveOmit === 'onBlur') {\n newFormData = this.omitExtraData(formData);\n state = { formData: newFormData };\n }\n if (liveValidate === 'onBlur') {\n const { schema, schemaUtils, errorSchema, customErrors, retrievedSchema } = this.state;\n const liveValidation = this.liveValidate(\n schema,\n schemaUtils,\n errorSchema,\n newFormData,\n extraErrors,\n customErrors,\n retrievedSchema,\n );\n state = { formData: newFormData, ...liveValidation, customErrors };\n }\n const hasChanges = Object.keys(state)\n // Filter out `schemaValidationErrors` and `schemaValidationErrorSchema` since they aren't IChangeEvent props\n .filter((key) => !key.startsWith('schemaValidation'))\n .some((key) => {\n const oldData = _get(this.state, key);\n const newData = _get(state, key);\n return !deepEquals(oldData, newData);\n });\n this.setState(state as FormState<T, S, F>, () => {\n if (onChange && hasChanges) {\n onChange(toIChangeEvent({ ...this.state, ...state }), id);\n }\n });\n }\n };\n\n /** Callback function to handle when a field on the form is focused. Calls the `onFocus` callback for the `Form` if it\n * was provided.\n *\n * @param id - The unique `id` of the field that was focused\n * @param data - The data associated with the field that was focused\n */\n onFocus = (id: string, data: any) => {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(id, data);\n }\n };\n\n /** Callback function to handle when the form is submitted. First, it prevents the default event behavior. Nothing\n * happens if the target and currentTarget of the event are not the same. It will omit any extra data in the\n * `formData` in the state if `omitExtraData` is true. It will validate the resulting `formData`, reporting errors\n * via the `onError()` callback unless validation is disabled. Finally, it will add in any `extraErrors` and then call\n * back the `onSubmit` callback if it was provided.\n *\n * @param event - The submit HTML form event\n */\n onSubmit = (event: FormEvent<any>) => {\n event.preventDefault();\n if (event.target !== event.currentTarget) {\n return;\n }\n\n event.persist();\n const { omitExtraData, extraErrors, noValidate, onSubmit } = this.props;\n let { formData: newFormData } = this.state;\n\n if (omitExtraData === true) {\n newFormData = this.omitExtraData(newFormData);\n }\n\n if (noValidate || this.validateFormWithFormData(newFormData)) {\n // There are no errors generated through schema validation.\n // Check for user provided errors and update state accordingly.\n const errorSchema = extraErrors || {};\n const errors = extraErrors ? toErrorList(extraErrors) : [];\n this.setState(\n {\n formData: newFormData,\n errors,\n errorSchema,\n schemaValidationErrors: [],\n schemaValidationErrorSchema: {},\n },\n () => {\n if (onSubmit) {\n onSubmit(toIChangeEvent({ ...this.state, formData: newFormData }, 'submitted'), event);\n }\n },\n );\n }\n };\n\n /** Extracts the `GlobalFormOptions` from the given Form `props`\n *\n * @param props - The form props to extract the global form options from\n * @returns - The `GlobalFormOptions` from the props\n * @private\n */\n private getGlobalFormOptions(props: FormProps<T, S, F>): GlobalFormOptions {\n const {\n uiSchema = {},\n experimental_componentUpdateStrategy,\n idSeparator = DEFAULT_ID_SEPARATOR,\n idPrefix = DEFAULT_ID_PREFIX,\n nameGenerator,\n useFallbackUiForUnsupportedType = false,\n } = props;\n const rootFieldId = uiSchema['ui:rootFieldId'];\n // Omit any options that are undefined or null\n return {\n idPrefix: rootFieldId || idPrefix,\n idSeparator,\n useFallbackUiForUnsupportedType,\n ...(experimental_componentUpdateStrategy !== undefined && { experimental_componentUpdateStrategy }),\n ...(nameGenerator !== undefined && { nameGenerator }),\n };\n }\n\n /** Computed the registry for the form using the given `props`, `schema` and `schemaUtils` */\n getRegistry(props: FormProps<T, S, F>, schema: S, schemaUtils: SchemaUtilsType<T, S, F>): Registry<T, S, F> {\n const { translateString: customTranslateString, uiSchema = {} } = props;\n const { fields, templates, widgets, formContext, translateString } = getDefaultRegistry<T, S, F>();\n return {\n fields: { ...fields, ...props.fields },\n templates: {\n ...templates,\n ...props.templates,\n ButtonTemplates: {\n ...templates.ButtonTemplates,\n ...props.templates?.ButtonTemplates,\n },\n },\n widgets: { ...widgets, ...props.widgets },\n rootSchema: schema,\n formContext: props.formContext || formContext,\n schemaUtils,\n translateString: customTranslateString || translateString,\n globalUiOptions: uiSchema[UI_GLOBAL_OPTIONS_KEY],\n globalFormOptions: this.getGlobalFormOptions(props),\n };\n }\n\n /** Provides a function that can be used to programmatically submit the `Form` */\n submit = () => {\n if (this.formElement.current) {\n const submitCustomEvent = new CustomEvent('submit', {\n cancelable: true,\n });\n submitCustomEvent.preventDefault();\n this.formElement.current.dispatchEvent(submitCustomEvent);\n this.formElement.current.requestSubmit();\n }\n };\n\n /** Attempts to focus on the field associated with the `error`. Uses the `property` field to compute path of the error\n * field, then, using the `idPrefix` and `idSeparator` converts that path into an id. Then the input element with that\n * id is attempted to be found using the `formElement` ref. If it is located, then it is focused.\n *\n * @param error - The error on which to focus\n */\n focusOnError(error: RJSFValidationError) {\n const { idPrefix = 'root', idSeparator = '_' } = this.props;\n const { property } = error;\n const path = _toPath(property);\n if (path[0] === '') {\n // Most of the time the `.foo` property results in the first element being empty, so replace it with the idPrefix\n path[0] = idPrefix;\n } else {\n // Otherwise insert the idPrefix into the first location using unshift\n path.unshift(idPrefix);\n }\n\n const elementId = path.join(idSeparator);\n let field = this.formElement.current.elements[elementId];\n if (!field) {\n // if not an exact match, try finding an input starting with the element id (like radio buttons or checkboxes)\n field = this.formElement.current.querySelector(`input[id^=\"${elementId}\"`);\n }\n if (field && field.length) {\n // If we got a list with length > 0\n field = field[0];\n }\n if (field) {\n field.focus();\n }\n }\n\n /** Validates the form using the given `formData`. For use on form submission or on programmatic validation.\n * If `onError` is provided, then it will be called with the list of errors.\n *\n * @param formData - The form data to validate\n * @returns - True if the form is valid, false otherwise.\n */\n validateFormWithFormData = (formData?: T): boolean => {\n const { extraErrors, extraErrorsBlockSubmit, focusOnFirstError, onError } = this.props;\n const { errors: prevErrors } = this.state;\n const schemaValidation = this.validate(formData);\n let errors = schemaValidation.errors;\n let errorSchema = schemaValidation.errorSchema;\n const schemaValidationErrors = errors;\n const schemaValidationErrorSchema = errorSchema;\n const hasError = errors.length > 0 || (extraErrors && extraErrorsBlockSubmit);\n if (hasError) {\n if (extraErrors) {\n const merged = validationDataMerge(schemaValidation, extraErrors);\n errorSchema = merged.errorSchema;\n errors = merged.errors;\n }\n if (focusOnFirstError) {\n if (typeof focusOnFirstError === 'function') {\n focusOnFirstError(errors[0]);\n } else {\n this.focusOnError(errors[0]);\n }\n }\n this.setState(\n {\n errors,\n errorSchema,\n schemaValidationErrors,\n schemaValidationErrorSchema,\n },\n () => {\n if (onError) {\n onError(errors);\n } else {\n console.error('Form validation failed', errors);\n }\n },\n );\n } else if (prevErrors.length > 0) {\n this.setState({\n errors: [],\n errorSchema: {},\n schemaValidationErrors: [],\n schemaValidationErrorSchema: {},\n });\n }\n return !hasError;\n };\n\n /** Programmatically validate the form. If `omitExtraData` is true, the `formData` will first be filtered to remove\n * any extra data not in a form field. If `onError` is provided, then it will be called with the list of errors the\n * same way as would happen on form submission.\n *\n * @returns - True if the form is valid, false otherwise.\n */\n validateForm() {\n const { omitExtraData } = this.props;\n let { formData: newFormData } = this.state;\n if (omitExtraData === true) {\n newFormData = this.omitExtraData(newFormData);\n }\n return this.validateFormWithFormData(newFormData);\n }\n\n /** Renders the `Form` fields inside the <form> | `tagName` or `_internalFormWrapper`, rendering any errors if\n * needed along with the submit button or any children of the form.\n */\n render() {\n const {\n children,\n id,\n className = '',\n tagName,\n name,\n method,\n target,\n action,\n autoComplete,\n enctype,\n acceptCharset,\n noHtml5Validate = false,\n disabled,\n readonly,\n showErrorList = 'top',\n _internalFormWrapper,\n } = this.props;\n\n const { schema, uiSchema, formData, errorSchema, fieldPathId, registry } = this.state;\n const { SchemaField: _SchemaField } = registry.fields;\n const { SubmitButton } = registry.templates.ButtonTemplates;\n // The `semantic-ui` and `material-ui` themes have `_internalFormWrapper`s that take an `as` prop that is the\n // PropTypes.elementType to use for the inner tag, so we'll need to pass `tagName` along if it is provided.\n // NOTE, the `as` prop is native to `semantic-ui` and is emulated in the `material-ui` theme\n const as = _internalFormWrapper ? tagName : undefined;\n const FormTag = _internalFormWrapper || tagName || 'form';\n\n let { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions = {} } = getUiOptions<T, S, F>(uiSchema);\n if (disabled) {\n submitOptions = { ...submitOptions, props: { ...submitOptions.props, disabled: true } };\n }\n const submitUiSchema = { [UI_OPTIONS_KEY]: { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions } };\n\n return (\n <FormTag\n className={className ? className : 'rjsf'}\n id={id}\n name={name}\n method={method}\n target={target}\n action={action}\n autoComplete={autoComplete}\n encType={enctype}\n acceptCharset={acceptCharset}\n noValidate={noHtml5Validate}\n onSubmit={this.onSubmit}\n as={as}\n ref={this.formElement}\n >\n {showErrorList === 'top' && this.renderErrors(registry)}\n <_SchemaField\n name=''\n schema={schema}\n uiSchema={uiSchema}\n errorSchema={errorSchema}\n fieldPathId={fieldPathId}\n formData={formData}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n />\n\n {children ? children : <SubmitButton uiSchema={submitUiSchema} registry={registry} />}\n {showErrorList === 'bottom' && this.renderErrors(registry)}\n </FormTag>\n );\n }\n}\n", "import {\n DEFAULT_ID_PREFIX,\n DEFAULT_ID_SEPARATOR,\n englishStringTranslator,\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\nimport fields from './components/fields';\nimport templates from './components/templates';\nimport widgets from './components/widgets';\n\n/** The default registry consists of all the fields, templates and widgets provided in the core implementation,\n * plus an empty `rootSchema` and `formContext. We omit schemaUtils here because it cannot be defaulted without a\n * rootSchema and validator. It will be added into the computed registry later in the Form.\n */\nexport default function getDefaultRegistry<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): Omit<Registry<T, S, F>, 'schemaUtils'> {\n return {\n fields: fields<T, S, F>(),\n templates: templates<T, S, F>(),\n widgets: widgets<T, S, F>(),\n rootSchema: {} as S,\n formContext: {} as F,\n translateString: englishStringTranslator,\n globalFormOptions: {\n idPrefix: DEFAULT_ID_PREFIX,\n idSeparator: DEFAULT_ID_SEPARATOR,\n useFallbackUiForUnsupportedType: false,\n },\n };\n}\n", "import { MouseEvent, useCallback, useMemo, useState } from 'react';\nimport {\n allowAdditionalItems,\n getTemplate,\n getUiOptions,\n getWidget,\n hashObject,\n isCustomWidget,\n isFixedItems,\n isFormDataAvailable,\n optionsList,\n shouldRenderOptionalField,\n toFieldPathId,\n useDeepCompareMemo,\n ITEMS_KEY,\n ID_KEY,\n ArrayFieldTemplateProps,\n ErrorSchema,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n UiSchema,\n UIOptionsType,\n} from '@rjsf/utils';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isObject from 'lodash/isObject';\nimport set from 'lodash/set';\nimport uniqueId from 'lodash/uniqueId';\n\n/** Type used to represent the keyed form data used in the state */\ntype KeyedFormDataType<T> = { key: string; item: T };\n\n/** Used to generate a unique ID for an element in a row */\nfunction generateRowId() {\n return uniqueId('rjsf-array-item-');\n}\n\n/** Converts the `formData` into `KeyedFormDataType` data, using the `generateRowId()` function to create the key\n *\n * @param formData - The data for the form\n * @returns - The `formData` converted into a `KeyedFormDataType` element\n */\nfunction generateKeyedFormData<T>(formData?: T[]): KeyedFormDataType<T>[] {\n return !Array.isArray(formData)\n ? []\n : formData.map((item) => {\n return {\n key: generateRowId(),\n item,\n };\n });\n}\n\n/** Converts `KeyedFormDataType` data into the inner `formData`\n *\n * @param keyedFormData - The `KeyedFormDataType` to be converted\n * @returns - The inner `formData` item(s) in the `keyedFormData`\n */\nfunction keyedToPlainFormData<T>(keyedFormData: KeyedFormDataType<T> | KeyedFormDataType<T>[]): T[] {\n if (Array.isArray(keyedFormData)) {\n return keyedFormData.map((keyedItem) => keyedItem.item);\n }\n return [];\n}\n\n/** Determines whether the item described in the schema is always required, which is determined by whether any item\n * may be null.\n *\n * @param itemSchema - The schema for the item\n * @return - True if the item schema type does not contain the \"null\" type\n */\nfunction isItemRequired<S extends StrictRJSFSchema = RJSFSchema>(itemSchema: S) {\n if (Array.isArray(itemSchema.type)) {\n // While we don't yet support composite/nullable jsonschema types, it's\n // future-proof to check for requirement against these.\n return !itemSchema.type.includes('null');\n }\n // All non-null array item types are inherently required by design\n return itemSchema.type !== 'null';\n}\n\n/** Determines whether more items can be added to the array. If the uiSchema indicates the array doesn't allow adding\n * then false is returned. Otherwise, if the schema indicates that there are a maximum number of items and the\n * `formData` matches that value, then false is returned, otherwise true is returned.\n *\n * @param registry - The registry\n * @param schema - The schema for the field\n * @param formItems - The list of items in the form\n * @param [uiSchema] - The UiSchema for the field\n * @returns - True if the item is addable otherwise false\n */\nfunction canAddItem<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n registry: Registry<T[], S, F>,\n schema: S,\n formItems: T[],\n uiSchema?: UiSchema<T[], S, F>,\n) {\n let { addable } = getUiOptions<T[], S, F>(uiSchema, registry.globalUiOptions);\n if (addable !== false) {\n // if ui:options.addable was not explicitly set to false, we can add\n // another item if we have not exceeded maxItems yet\n if (schema.maxItems !== undefined) {\n addable = formItems.length < schema.maxItems;\n } else {\n addable = true;\n }\n }\n return addable;\n}\n\n/** Helper method to compute item UI schema for both normal and fixed arrays\n * Handles both static object and dynamic function cases\n *\n * @param uiSchema - The parent UI schema containing items definition\n * @param item - The item data\n * @param index - The index of the item\n * @param formContext - The form context\n * @returns The computed UI schema for the item\n */\nfunction computeItemUiSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n uiSchema: UiSchema<T[], S, F>,\n item: T,\n index: number,\n formContext: F,\n): UiSchema<T[], S, F> | undefined {\n if (typeof uiSchema.items === 'function') {\n try {\n // Call the function with item data, index, and form context\n // TypeScript now correctly infers the types thanks to the ArrayElement type in UiSchema\n const result = uiSchema.items(item, index, formContext);\n // Only use the result if it's truthy\n return result as UiSchema<T[], S, F>;\n } catch (e) {\n console.error(`Error executing dynamic uiSchema.items function for item at index ${index}:`, e);\n // Fall back to undefined to allow the field to still render\n return undefined;\n }\n } else {\n // Static object case - preserve undefined to maintain backward compatibility\n return uiSchema.items as UiSchema<T[], S, F> | undefined;\n }\n}\n\n/** Returns the default form information for an item based on the schema for that item. Deals with the possibility\n * that the schema is fixed and allows additional items.\n */\nfunction getNewFormDataRow<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n registry: Registry<T[], S, F>,\n schema: S,\n): T {\n const { schemaUtils, globalFormOptions } = registry;\n let itemSchema = schema.items as S;\n if (globalFormOptions.useFallbackUiForUnsupportedType && !itemSchema) {\n // If we don't have itemSchema and useFallbackUiForUnsupportedType is on, use an empty schema\n itemSchema = {} as S;\n } else if (isFixedItems(schema) && allowAdditionalItems(schema)) {\n itemSchema = schema.additionalItems as S;\n }\n // Cast this as a T to work around schema utils being for T[] caused by the FieldProps<T[], S, F> call on the class\n return schemaUtils.getDefaultFormState(itemSchema) as unknown as T;\n}\n\n/** Props used for ArrayAsXxxx type components*/\ninterface ArrayAsFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T, S, F> {\n /** The callback used to update the array when the selector changes */\n onSelectChange: (value: T) => void;\n}\n\n/** Renders an array as a set of checkboxes using the 'select' widget\n */\nfunction ArrayAsMultiSelect<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n fieldPathId,\n uiSchema,\n formData: items = [],\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n placeholder,\n onBlur,\n onFocus,\n registry,\n rawErrors,\n name,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const itemsSchema = schemaUtils.retrieveSchema(schema.items as S, items);\n const enumOptions = optionsList<T[], S, F>(itemsSchema, uiSchema);\n const { widget = 'select', title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n value={items}\n disabled={disabled}\n readonly={readonly}\n required={required}\n label={label}\n hideLabel={!displayLabel}\n placeholder={placeholder}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders an array using the custom widget provided by the user in the `uiSchema`\n */\nfunction ArrayAsCustomWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n fieldPathId,\n uiSchema,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError,\n placeholder,\n onBlur,\n onFocus,\n formData: items = [],\n registry,\n rawErrors,\n name,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const { widget, title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={options}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n value={items}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n required={required}\n label={label}\n hideLabel={!displayLabel}\n placeholder={placeholder}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders an array of files using the `FileWidget`\n */\nfunction ArrayAsFiles<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayAsFieldProps<T[], S, F>,\n) {\n const {\n schema,\n uiSchema,\n fieldPathId,\n name,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n onBlur,\n onFocus,\n registry,\n formData: items = [],\n rawErrors,\n onSelectChange,\n } = props;\n const { widgets, schemaUtils, globalFormOptions, globalUiOptions } = registry;\n const { widget = 'files', title: uiTitle, ...options } = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T[], S, F>(schema, widget, widgets);\n const label = uiTitle ?? schema.title ?? name;\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n // For custom widgets with multiple=true, generate a fieldPathId with isMultiValue flag\n const multiValueFieldPathId = useDeepCompareMemo(toFieldPathId('', globalFormOptions, fieldPathId, true));\n return (\n <Widget\n options={options}\n id={multiValueFieldPathId[ID_KEY]}\n name={name}\n multiple\n onChange={onSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n schema={schema}\n uiSchema={uiSchema}\n value={items}\n disabled={disabled}\n readonly={readonly}\n required={required}\n registry={registry}\n autofocus={autofocus}\n rawErrors={rawErrors}\n label={label}\n hideLabel={!displayLabel}\n htmlName={multiValueFieldPathId.name}\n />\n );\n}\n\n/** Renders the individual array item using a `SchemaField` along with the additional properties that are needed to\n * render the whole of the `ArrayFieldItemTemplate`.\n */\nfunction ArrayFieldItem<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(props: {\n itemKey: string;\n index: number;\n name: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n hideError: boolean;\n registry: Registry<T[], S, F>;\n uiOptions: UIOptionsType<T[], S, F>;\n parentUiSchema?: UiSchema<T[], S, F>;\n title: string | undefined;\n canAdd: boolean;\n canRemove?: boolean;\n canMoveUp: boolean;\n canMoveDown: boolean;\n itemSchema: S;\n itemData: T[];\n itemUiSchema: UiSchema<T[], S, F> | undefined;\n itemFieldPathId: FieldPathId;\n itemErrorSchema?: ErrorSchema<T[]>;\n autofocus?: boolean;\n onBlur: FieldProps<T[], S, F>['onBlur'];\n onFocus: FieldProps<T[], S, F>['onFocus'];\n onChange: FieldProps<T[], S, F>['onChange'];\n rawErrors?: string[];\n totalItems: number;\n handleAddItem: (event: MouseEvent, index?: number) => void;\n handleCopyItem: (event: MouseEvent, index: number) => void;\n handleRemoveItem: (event: MouseEvent, index: number) => void;\n handleReorderItems: (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => void;\n}) {\n const {\n itemKey,\n index,\n name,\n disabled,\n hideError,\n readonly,\n registry,\n uiOptions,\n parentUiSchema,\n canAdd,\n canRemove = true,\n canMoveUp,\n canMoveDown,\n itemSchema,\n itemData,\n itemUiSchema,\n itemFieldPathId,\n itemErrorSchema,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n rawErrors,\n totalItems,\n title,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n const {\n fields: { ArraySchemaField, SchemaField },\n } = registry;\n const fieldPathId = useDeepCompareMemo<FieldPathId>(itemFieldPathId);\n const ItemSchemaField = ArraySchemaField || SchemaField;\n const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T[], S, F>(\n 'ArrayFieldItemTemplate',\n registry,\n uiOptions,\n );\n const { orderable = true, removable = true, copyable = false } = uiOptions;\n const has: { [key: string]: boolean } = {\n moveUp: orderable && canMoveUp,\n moveDown: orderable && canMoveDown,\n copy: copyable && canAdd,\n remove: removable && canRemove,\n toolbar: false,\n };\n has.toolbar = Object.keys(has).some((key: keyof typeof has) => has[key]);\n\n const onAddItem = useCallback(\n (event: MouseEvent) => {\n handleAddItem(event, index + 1);\n },\n [handleAddItem, index],\n );\n const onCopyItem = useCallback(\n (event: MouseEvent) => {\n handleCopyItem(event, index);\n },\n [handleCopyItem, index],\n );\n const onRemoveItem = useCallback(\n (event: MouseEvent) => {\n handleRemoveItem(event, index);\n },\n [handleRemoveItem, index],\n );\n const onMoveUpItem = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n handleReorderItems(event, index, index - 1);\n },\n [handleReorderItems, index],\n );\n const onMoveDownItem = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n handleReorderItems(event, index, index + 1);\n },\n [handleReorderItems, index],\n );\n\n const templateProps = {\n children: (\n <ItemSchemaField\n name={name}\n title={title}\n index={index}\n schema={itemSchema}\n uiSchema={itemUiSchema}\n formData={itemData}\n errorSchema={itemErrorSchema}\n fieldPathId={fieldPathId}\n required={isItemRequired<S>(itemSchema)}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n autofocus={autofocus}\n rawErrors={rawErrors}\n />\n ),\n buttonsProps: {\n fieldPathId,\n disabled,\n readonly,\n canAdd,\n hasCopy: has.copy,\n hasMoveUp: has.moveUp,\n hasMoveDown: has.moveDown,\n hasRemove: has.remove,\n index: index,\n totalItems,\n onAddItem,\n onCopyItem,\n onRemoveItem,\n onMoveUpItem,\n onMoveDownItem,\n registry,\n schema: itemSchema,\n uiSchema: itemUiSchema,\n },\n itemKey,\n className: 'rjsf-array-item',\n disabled,\n hasToolbar: has.toolbar,\n index,\n totalItems,\n readonly,\n registry,\n schema: itemSchema,\n uiSchema: itemUiSchema,\n parentUiSchema,\n };\n return <ArrayFieldItemTemplate {...templateProps} />;\n}\n\n/** The properties required by the stateless components that render the items using the `ArrayFieldItem` */\ninterface InternalArrayFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T[], S, F> {\n /** The keyedFormData from the `ArrayField` state */\n keyedFormData: KeyedFormDataType<T>[];\n /** The callback used to handle the adding of an item at the given index (or the end, if missing) */\n handleAddItem: (event: MouseEvent, index?: number) => void;\n /** The callback used to handle the copying of the item at the given index, below itself */\n handleCopyItem: (event: MouseEvent, index: number) => void;\n /** The callback used to handle removing an item at the given index */\n handleRemoveItem: (event: MouseEvent, index: number) => void;\n /** The callback used to handle reordering an item at the given index to its newIndex */\n handleReorderItems: (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => void;\n}\n\n/** Renders a normal array without any limitations of length\n */\nfunction NormalArray<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: InternalArrayFieldProps<T, S, F>,\n) {\n const {\n schema,\n uiSchema = {},\n errorSchema,\n fieldPathId,\n formData: formDataFromProps,\n name,\n title,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError = false,\n registry,\n onBlur,\n onFocus,\n rawErrors,\n onChange,\n keyedFormData,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n const fieldTitle = schema.title || title || name;\n const { schemaUtils, fields, formContext, globalFormOptions, globalUiOptions } = registry;\n const { OptionalDataControlsField } = fields;\n const uiOptions = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const _schemaItems: S = isObject(schema.items) ? (schema.items as S) : ({} as S);\n const itemsSchema: S = schemaUtils.retrieveSchema(_schemaItems);\n const formData = keyedToPlainFormData<T>(keyedFormData);\n const renderOptionalField = shouldRenderOptionalField<T[], S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T[]>(formDataFromProps);\n const canAdd = canAddItem<T, S, F>(registry, schema, formData, uiSchema) && (!renderOptionalField || hasFormData);\n const actualFormData = hasFormData ? keyedFormData : [];\n const extraClass = renderOptionalField ? ' rjsf-optional-array-field' : '';\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} />\n ) : undefined;\n const arrayProps: ArrayFieldTemplateProps<T[], S, F> = {\n canAdd,\n items: actualFormData.map((keyedItem, index: number) => {\n const { key, item } = keyedItem;\n // While we are actually dealing with a single item of type T, the types require a T[], so cast\n const itemCast = item as unknown as T[];\n const itemSchema = schemaUtils.retrieveSchema(_schemaItems, itemCast);\n const itemErrorSchema = errorSchema ? (errorSchema[index] as ErrorSchema<T[]>) : undefined;\n const itemFieldPathId = toFieldPathId(index, globalFormOptions, childFieldPathId);\n\n // Compute the item UI schema using the helper method\n const itemUiSchema = computeItemUiSchema<T, S, F>(uiSchema, item, index, formContext);\n\n const itemProps = {\n itemKey: key,\n index,\n name: name && `${name}-${index}`,\n registry,\n uiOptions,\n hideError,\n readonly,\n disabled,\n required,\n title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n canAdd,\n canMoveUp: index > 0,\n canMoveDown: index < formData.length - 1,\n itemSchema,\n itemFieldPathId,\n itemErrorSchema,\n itemData: itemCast,\n itemUiSchema,\n autofocus: autofocus && index === 0,\n onBlur,\n onFocus,\n rawErrors,\n totalItems: keyedFormData.length,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n onChange,\n };\n return <ArrayFieldItem key={key} {...itemProps} />;\n }),\n className: `rjsf-field rjsf-field-array rjsf-field-array-of-${itemsSchema.type}${extraClass}`,\n disabled,\n fieldPathId,\n uiSchema,\n onAddClick: handleAddItem,\n readonly,\n required,\n schema,\n title: fieldTitle,\n formData,\n rawErrors,\n registry,\n optionalDataControl,\n };\n\n const Template = getTemplate<'ArrayFieldTemplate', T[], S, F>('ArrayFieldTemplate', registry, uiOptions);\n return <Template {...arrayProps} />;\n}\n\n/** Renders an array that has a maximum limit of items\n */\nfunction FixedArray<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: InternalArrayFieldProps<T, S, F>,\n) {\n const {\n schema,\n uiSchema = {},\n formData,\n errorSchema,\n fieldPathId,\n name,\n title,\n disabled = false,\n readonly = false,\n autofocus = false,\n required = false,\n hideError = false,\n registry,\n onBlur,\n onFocus,\n rawErrors,\n keyedFormData,\n onChange,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n } = props;\n let { formData: items = [] } = props;\n const fieldTitle = schema.title || title || name;\n const { schemaUtils, fields, formContext, globalFormOptions, globalUiOptions } = registry;\n const uiOptions = getUiOptions<T[], S, F>(uiSchema, globalUiOptions);\n const { OptionalDataControlsField } = fields;\n const renderOptionalField = shouldRenderOptionalField<T[], S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T[]>(formData);\n const _schemaItems: S[] = isObject(schema.items) ? (schema.items as S[]) : ([] as S[]);\n const itemSchemas = _schemaItems.map((item: S, index: number) =>\n schemaUtils.retrieveSchema(item, items[index] as unknown as T[]),\n );\n const additionalSchema = isObject(schema.additionalItems)\n ? schemaUtils.retrieveSchema(schema.additionalItems as S, formData)\n : null;\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n if (items.length < itemSchemas.length) {\n // to make sure at least all fixed items are generated\n items = items.concat(new Array(itemSchemas.length - items.length));\n }\n const actualFormData = hasFormData ? keyedFormData : [];\n const extraClass = renderOptionalField ? ' rjsf-optional-array-field' : '';\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} />\n ) : undefined;\n\n // These are the props passed into the render function\n const canAdd =\n canAddItem<T, S, F>(registry, schema, items, uiSchema) &&\n !!additionalSchema &&\n (!renderOptionalField || hasFormData);\n const arrayProps: ArrayFieldTemplateProps<T[], S, F> = {\n canAdd,\n className: `rjsf-field rjsf-field-array rjsf-field-array-fixed-items${extraClass}`,\n disabled,\n fieldPathId,\n formData,\n items: actualFormData.map((keyedItem, index) => {\n const { key, item } = keyedItem;\n // While we are actually dealing with a single item of type T, the types require a T[], so cast\n const itemCast = item as unknown as T[];\n const additional = index >= itemSchemas.length;\n const itemSchema =\n (additional && isObject(schema.additionalItems)\n ? schemaUtils.retrieveSchema(schema.additionalItems as S, itemCast)\n : itemSchemas[index]) || {};\n const itemFieldPathId = toFieldPathId(index, globalFormOptions, childFieldPathId);\n // Compute the item UI schema - handle both static and dynamic cases\n let itemUiSchema: UiSchema<T[], S, F> | undefined;\n if (additional) {\n // For additional items, use additionalItems uiSchema\n itemUiSchema = uiSchema.additionalItems as UiSchema<T[], S, F>;\n } else {\n // For fixed items, uiSchema.items can be an array, a function, or a single object\n if (Array.isArray(uiSchema.items)) {\n itemUiSchema = uiSchema.items[index] as UiSchema<T[], S, F>;\n } else {\n // Use the helper method for function or static object cases\n itemUiSchema = computeItemUiSchema<T, S, F>(uiSchema, item, index, formContext);\n }\n }\n const itemErrorSchema = errorSchema ? (errorSchema[index] as ErrorSchema<T[]>) : undefined;\n\n const itemProps = {\n index,\n itemKey: key,\n name: name && `${name}-${index}`,\n registry,\n uiOptions,\n hideError,\n readonly,\n disabled,\n required,\n title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n canAdd,\n canRemove: additional,\n canMoveUp: index >= itemSchemas.length + 1,\n canMoveDown: additional && index < items.length - 1,\n itemSchema,\n itemData: itemCast,\n itemUiSchema,\n itemFieldPathId,\n itemErrorSchema,\n autofocus: autofocus && index === 0,\n onBlur,\n onFocus,\n rawErrors,\n totalItems: keyedFormData.length,\n onChange,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n };\n return <ArrayFieldItem key={key} {...itemProps} />;\n }),\n onAddClick: handleAddItem,\n readonly,\n required,\n registry,\n schema,\n uiSchema,\n title: fieldTitle,\n errorSchema,\n rawErrors,\n optionalDataControl,\n };\n\n const Template = getTemplate<'ArrayFieldTemplate', T[], S, F>('ArrayFieldTemplate', registry, uiOptions);\n return <Template {...arrayProps} />;\n}\n\ninterface KeyedFormDataState<T = any> {\n /** The keyed form data elements */\n keyedFormData: KeyedFormDataType<T>[];\n /** Updates the keyed form data elements to the given value */\n updateKeyedFormData: (newData: KeyedFormDataType<T>[]) => T[];\n}\n\n/** Type used for the state of the `ArrayField` component */\ntype ArrayFieldState<T> = {\n /** The hash of the last formData passed in */\n formDataHash: string;\n /** The keyed form data elements */\n keyedFormData: KeyedFormDataType<T>[];\n};\n\n/** A custom hook that handles the updating of the keyedFormData from an external `formData` change as well as\n * internally by the `ArrayField`. If there was an external `formData` change, then the `keyedFormData` is recomputed\n * in order to preserve the unique keys from the old `keyedFormData` to the new `formData`. Along with the\n * `keyedFormData` this hook also returns an `updateKeyedFormData()` function for use by the `ArrayField`. The detection\n * of external `formData` are handled by storing the hash of that `formData` along with the `keyedFormData` associated\n * with it. The `updateKeyedFormData()` will update that hash whenever the `keyedFormData` is modified and as well as\n * returning the plain `formData` from the `keyedFormData`.\n */\nfunction useKeyedFormData<T = any>(formData: T[] = []): KeyedFormDataState<T> {\n const newHash = useMemo(() => hashObject(formData), [formData]);\n const [state, setState] = useState<ArrayFieldState<T>>(() => ({\n formDataHash: newHash,\n keyedFormData: generateKeyedFormData<T>(formData),\n }));\n\n let { keyedFormData, formDataHash } = state;\n if (newHash !== formDataHash) {\n const nextFormData = Array.isArray(formData) ? formData : [];\n const previousKeyedFormData = keyedFormData || [];\n keyedFormData =\n nextFormData.length === previousKeyedFormData.length\n ? previousKeyedFormData.map((previousKeyedFormDatum, index) => ({\n key: previousKeyedFormDatum.key,\n item: nextFormData[index],\n }))\n : generateKeyedFormData<T>(nextFormData);\n formDataHash = newHash;\n setState({ formDataHash, keyedFormData });\n }\n\n const updateKeyedFormData = useCallback((newData: KeyedFormDataType<T>[]) => {\n const plainFormData = keyedToPlainFormData(newData);\n const newHash = hashObject(plainFormData);\n setState({ formDataHash: newHash, keyedFormData: newData });\n return plainFormData;\n }, []);\n\n return { keyedFormData, updateKeyedFormData };\n}\n\n/** The `ArrayField` component is used to render a field in the schema that is of type `array`. It supports both normal\n * and fixed array, allowing user to add and remove elements from the array data.\n */\nexport default function ArrayField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T[], S, F>,\n) {\n const { schema, uiSchema, errorSchema, fieldPathId, registry, formData, onChange } = props;\n const { globalFormOptions, schemaUtils, translateString } = registry;\n const { keyedFormData, updateKeyedFormData } = useKeyedFormData<T>(formData);\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n /** Callback handler for when the user clicks on the add or add at index buttons. Creates a new row of keyed form data\n * either at the end of the list (when index is not specified) or inserted at the `index` when it is, adding it into\n * the state, and then returning `onChange()` with the plain form data converted from the keyed data\n *\n * @param event - The event for the click\n * @param [index] - The optional index at which to add the new data\n */\n const handleAddItem = useCallback(\n (event: MouseEvent, index?: number) => {\n if (event) {\n event.preventDefault();\n }\n\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (index === undefined || i < index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i >= index) {\n set(newErrorSchema, [i + 1], errorSchema[idx]);\n }\n }\n }\n\n const newKeyedFormDataRow: KeyedFormDataType<T> = {\n key: generateRowId(),\n item: getNewFormDataRow<T, S, F>(registry, schema),\n };\n const newKeyedFormData = [...keyedFormData];\n if (index !== undefined) {\n newKeyedFormData.splice(index, 0, newKeyedFormDataRow);\n } else {\n newKeyedFormData.push(newKeyedFormDataRow);\n }\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, registry, schema, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on the copy button on an existing array element. Clones the row of\n * keyed form data at the `index` into the next position in the state, and then returning `onChange()` with the plain\n * form data converted from the keyed data\n *\n * @param index - The index at which the copy button is clicked\n */\n const handleCopyItem = useCallback(\n (event: MouseEvent, index: number) => {\n if (event) {\n event.preventDefault();\n }\n\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i <= index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i > index) {\n set(newErrorSchema, [i + 1], errorSchema[idx]);\n }\n }\n }\n\n const newKeyedFormDataRow: KeyedFormDataType<T> = {\n key: generateRowId(),\n item: cloneDeep(keyedFormData[index].item),\n };\n const newKeyedFormData = [...keyedFormData];\n if (index !== undefined) {\n newKeyedFormData.splice(index + 1, 0, newKeyedFormDataRow);\n } else {\n newKeyedFormData.push(newKeyedFormDataRow);\n }\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on the remove button on an existing array element. Removes the row of\n * keyed form data at the `index` in the state, and then returning `onChange()` with the plain form data converted\n * from the keyed data\n *\n * @param index - The index at which the remove button is clicked\n */\n const handleRemoveItem = useCallback(\n (event: MouseEvent, index: number) => {\n if (event) {\n event.preventDefault();\n }\n // refs #195: revalidate to ensure properly reindexing errors\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i < index) {\n set(newErrorSchema, [i], errorSchema[idx]);\n } else if (i > index) {\n set(newErrorSchema, [i - 1], errorSchema[idx]);\n }\n }\n }\n const newKeyedFormData = keyedFormData.filter((_, i) => i !== index);\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler for when the user clicks on one of the move item buttons on an existing array element. Moves the\n * row of keyed form data at the `index` to the `newIndex` in the state, and then returning `onChange()` with the\n * plain form data converted from the keyed data\n *\n * @param index - The index of the item to move\n * @param newIndex - The index to where the item is to be moved\n */\n const handleReorderItems = useCallback(\n (event: MouseEvent<HTMLButtonElement>, index: number, newIndex: number) => {\n if (event) {\n event.preventDefault();\n event.currentTarget.blur();\n }\n let newErrorSchema: ErrorSchema<T> | undefined;\n if (errorSchema) {\n newErrorSchema = {};\n for (const idx in errorSchema) {\n const i = parseInt(idx);\n if (i == index) {\n set(newErrorSchema, [newIndex], errorSchema[index]);\n } else if (i == newIndex) {\n set(newErrorSchema, [index], errorSchema[newIndex]);\n } else {\n set(newErrorSchema, [idx], errorSchema[i]);\n }\n }\n }\n\n function reOrderArray() {\n // Copy item\n const _newKeyedFormData = keyedFormData.slice();\n\n // Moves item from index to newIndex\n _newKeyedFormData.splice(index, 1);\n _newKeyedFormData.splice(newIndex, 0, keyedFormData[index]);\n\n return _newKeyedFormData;\n }\n const newKeyedFormData = reOrderArray();\n onChange(updateKeyedFormData(newKeyedFormData), childFieldPathId.path, newErrorSchema as ErrorSchema<T[]>);\n },\n [keyedFormData, onChange, updateKeyedFormData, errorSchema, childFieldPathId],\n );\n\n /** Callback handler used to deal with changing the value of the data in the array at the `index`. Calls the\n * `onChange` callback with the updated form data\n *\n * @param index - The index of the item being changed\n */\n const handleChange = useCallback(\n (value: any, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n onChange(\n // We need to treat undefined items as nulls to have validation.\n // See https://github.com/tdegrunt/jsonschema/issues/206\n value === undefined ? null : value,\n path,\n newErrorSchema as ErrorSchema<T[]>,\n id,\n );\n },\n [onChange],\n );\n\n /** Callback handler used to change the value for a checkbox */\n const onSelectChange = useCallback(\n (value: any) => {\n onChange(value, childFieldPathId.path, undefined, childFieldPathId?.[ID_KEY]);\n },\n [onChange, childFieldPathId],\n );\n\n const arrayAsMultiProps: ArrayAsFieldProps<T[], S, F> = {\n ...props,\n formData,\n fieldPathId: childFieldPathId,\n onSelectChange: onSelectChange,\n };\n const arrayProps: InternalArrayFieldProps<T, S, F> = {\n ...props,\n handleAddItem,\n handleCopyItem,\n handleRemoveItem,\n handleReorderItems,\n keyedFormData,\n onChange: handleChange,\n };\n if (!(ITEMS_KEY in schema)) {\n if (!globalFormOptions.useFallbackUiForUnsupportedType) {\n const uiOptions = getUiOptions<T[], S, F>(uiSchema);\n const UnsupportedFieldTemplate = getTemplate<'UnsupportedFieldTemplate', T[], S, F>(\n 'UnsupportedFieldTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <UnsupportedFieldTemplate\n schema={schema}\n fieldPathId={fieldPathId}\n reason={translateString(TranslatableString.MissingItems)}\n registry={registry}\n />\n );\n }\n // Add an items schema with type as undefined so it triggers FallbackField later on\n const fallbackSchema = { ...schema, [ITEMS_KEY]: { type: undefined } };\n arrayAsMultiProps.schema = fallbackSchema;\n arrayProps.schema = fallbackSchema;\n }\n if (schemaUtils.isMultiSelect(arrayAsMultiProps.schema)) {\n // If array has enum or uniqueItems set to true, call renderMultiSelect() to render the default multiselect widget or a custom widget, if specified.\n return <ArrayAsMultiSelect<T, S, F> {...arrayAsMultiProps} />;\n }\n if (isCustomWidget<T[], S, F>(uiSchema)) {\n return <ArrayAsCustomWidget<T, S, F> {...arrayAsMultiProps} />;\n }\n if (isFixedItems(arrayAsMultiProps.schema)) {\n return <FixedArray<T, S, F> {...arrayProps} />;\n }\n if (schemaUtils.isFilesArray(arrayAsMultiProps.schema, uiSchema)) {\n return <ArrayAsFiles<T, S, F> {...arrayAsMultiProps} />;\n }\n return <NormalArray<T, S, F> {...arrayProps} />;\n}\n", "import { useCallback } from 'react';\nimport {\n getWidget,\n getUiOptions,\n optionsList,\n FieldProps,\n FormContextType,\n EnumOptionsType,\n ErrorSchema,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\nimport isObject from 'lodash/isObject';\n\n/** The `BooleanField` component is used to render a field in the schema is boolean. It constructs `enumOptions` for the\n * two boolean values based on the various alternatives in the schema.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction BooleanField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema,\n name,\n uiSchema,\n fieldPathId,\n formData,\n registry,\n required,\n disabled,\n readonly,\n hideError,\n autofocus,\n title,\n onChange,\n onFocus,\n onBlur,\n rawErrors,\n } = props;\n const { title: schemaTitle } = schema;\n const { widgets, translateString, globalUiOptions } = registry;\n const {\n widget = 'checkbox',\n title: uiTitle,\n // Unlike the other fields, don't use `getDisplayLabel()` since it always returns false for the boolean type\n label: displayLabel = true,\n enumNames,\n ...options\n } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget(schema, widget, widgets);\n const yes = translateString(TranslatableString.YesLabel);\n const no = translateString(TranslatableString.NoLabel);\n let enumOptions: EnumOptionsType<S>[] | undefined;\n const label = uiTitle ?? schemaTitle ?? title ?? name;\n if (Array.isArray(schema.oneOf)) {\n enumOptions = optionsList<T, S, F>(\n {\n oneOf: schema.oneOf\n .map((option) => {\n if (isObject(option)) {\n return {\n ...option,\n title: option.title || (option.const === true ? yes : no),\n };\n }\n return undefined;\n })\n .filter((o: any) => o) as S[], // cast away the error that typescript can't grok is fixed\n } as unknown as S,\n uiSchema,\n );\n } else {\n const enums = schema.enum ?? [true, false];\n if (!enumNames && enums.length === 2 && enums.every((v: any) => typeof v === 'boolean')) {\n enumOptions = [\n {\n value: enums[0],\n label: enums[0] ? yes : no,\n },\n {\n value: enums[1],\n label: enums[1] ? yes : no,\n },\n ];\n } else {\n enumOptions = optionsList<T, S, F>({ enum: enums } as S, uiSchema);\n }\n }\n const onWidgetChange = useCallback(\n (value: T | undefined, errorSchema?: ErrorSchema, id?: string) => {\n // Boolean field change passes an empty path array to the parent field which adds the appropriate path\n return onChange(value, fieldPathId.path, errorSchema, id);\n },\n [onChange, fieldPathId],\n );\n\n return (\n <Widget\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n id={fieldPathId.$id}\n name={name}\n onChange={onWidgetChange}\n onFocus={onFocus}\n onBlur={onBlur}\n label={label}\n hideLabel={!displayLabel}\n value={formData}\n required={required}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n registry={registry}\n autofocus={autofocus}\n rawErrors={rawErrors}\n htmlName={fieldPathId.name}\n />\n );\n}\n\nexport default BooleanField;\n", "import {\n FallbackFieldProps,\n FieldPathId,\n FormContextType,\n getTemplate,\n getUiOptions,\n hashObject,\n RJSFSchema,\n StrictRJSFSchema,\n toFieldPathId,\n TranslatableString,\n useDeepCompareMemo,\n} from '@rjsf/utils';\nimport { useMemo, useState } from 'react';\nimport { JSONSchema7TypeName } from 'json-schema';\n\n/**\n * Get the schema for the type selection component.\n * @param title - The translated title for the type selection schema.\n */\nfunction getFallbackTypeSelectionSchema(title: string): RJSFSchema {\n return {\n type: 'string',\n enum: ['string', 'number', 'boolean', 'object', 'array'],\n default: 'string',\n title: title,\n };\n}\n\n/**\n * Determines the JSON Schema type of the given formData.\n * @param formData - The form data whose type is to be determined.\n */\nfunction getTypeOfFormData(formData: any): JSONSchema7TypeName {\n const dataType = typeof formData;\n if (dataType === 'string' || dataType === 'number' || dataType === 'boolean') {\n return dataType;\n }\n if (dataType === 'object') {\n return Array.isArray(formData) ? 'array' : 'object';\n }\n // Treat everything else as a string\n return 'string';\n}\n\n/**\n * Casts the given formData to the specified type.\n * @param formData - The form data to be casted.\n * @param newType - The target type to which the form data should be casted.\n */\nfunction castToNewType<T = any>(formData: T, newType: JSONSchema7TypeName): T {\n switch (newType) {\n case 'string':\n return String(formData) as T;\n case 'number': {\n const castedNumber = Number(formData);\n return (isNaN(castedNumber) ? 0 : castedNumber) as T;\n }\n case 'boolean':\n return Boolean(formData) as T;\n default:\n return formData;\n }\n}\n\n/**\n * The `FallbackField` component is used to render a field for unsupported or unknown schema types. If\n * `useFallbackUiForUnsupportedType` is enabled in the `globalUiOptions`, it provides a type selector\n */\nexport default function FallbackField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FallbackFieldProps<T, S, F>) {\n const {\n id,\n formData,\n displayLabel = true,\n schema,\n name,\n uiSchema,\n required,\n disabled = false,\n readonly = false,\n onBlur,\n onFocus,\n registry,\n fieldPathId,\n onChange,\n errorSchema,\n } = props;\n const { translateString, fields, globalFormOptions } = registry;\n const [type, setType] = useState<JSONSchema7TypeName>(getTypeOfFormData(formData));\n\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n\n const typeSelectorInnerFieldPathId = useDeepCompareMemo<FieldPathId>(\n toFieldPathId('__internal_type_selector', globalFormOptions, fieldPathId),\n );\n\n const schemaTitle = translateString(TranslatableString.Type);\n const typesOptionSchema = useMemo(() => getFallbackTypeSelectionSchema(schemaTitle), [schemaTitle]);\n\n const onTypeChange = (newType: T | undefined) => {\n if (newType != null) {\n setType(newType as JSONSchema7TypeName);\n onChange(castToNewType<T>(formData as T, newType as JSONSchema7TypeName), fieldPathId.path, errorSchema, id);\n }\n };\n\n if (!globalFormOptions.useFallbackUiForUnsupportedType) {\n const { reason = translateString(TranslatableString.UnknownFieldType, [String(schema.type)]) } = props;\n const UnsupportedFieldTemplate = getTemplate<'UnsupportedFieldTemplate', T, S, F>(\n 'UnsupportedFieldTemplate',\n registry,\n uiOptions,\n );\n\n return <UnsupportedFieldTemplate schema={schema} fieldPathId={fieldPathId} reason={reason} registry={registry} />;\n }\n\n const FallbackFieldTemplate = getTemplate<'FallbackFieldTemplate', T, S, F>(\n 'FallbackFieldTemplate',\n registry,\n uiOptions,\n );\n\n const { SchemaField } = fields;\n\n return (\n <FallbackFieldTemplate\n schema={schema}\n registry={registry}\n typeSelector={\n <SchemaField\n key={formData ? hashObject(formData) : '__empty__'}\n fieldPathId={typeSelectorInnerFieldPathId}\n name={`${name}__fallback_type`}\n schema={typesOptionSchema as S}\n formData={type as T}\n onChange={onTypeChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n hideLabel={!displayLabel}\n disabled={disabled}\n readonly={readonly}\n required={required}\n />\n }\n schemaField={\n <SchemaField\n {...props}\n schema={\n {\n type,\n title: translateString(TranslatableString.Value),\n ...(type === 'object' && { additionalProperties: true }),\n } as S\n }\n />\n }\n />\n );\n}\n", "import { ComponentType, ReactNode } from 'react';\nimport {\n ANY_OF_KEY,\n FieldProps,\n FieldPathId,\n FormContextType,\n GenericObjectType,\n getDiscriminatorFieldFromSchema,\n getTemplate,\n getTestIds,\n getUiOptions,\n hashObject,\n ID_KEY,\n lookupFromFormContext,\n ONE_OF_KEY,\n PROPERTIES_KEY,\n READONLY_KEY,\n RJSFSchema,\n Registry,\n StrictRJSFSchema,\n toFieldPathId,\n UI_OPTIONS_KEY,\n UI_GLOBAL_OPTIONS_KEY,\n UiSchema,\n ITEMS_KEY,\n useDeepCompareMemo,\n} from '@rjsf/utils';\nimport each from 'lodash/each';\nimport flatten from 'lodash/flatten';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport includes from 'lodash/includes';\nimport intersection from 'lodash/intersection';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isString from 'lodash/isString';\nimport isUndefined from 'lodash/isUndefined';\nimport last from 'lodash/last';\nimport set from 'lodash/set';\n\n/** The enumeration of the three different Layout GridTemplate type values\n */\nexport enum GridType {\n ROW = 'ui:row',\n COLUMN = 'ui:col',\n COLUMNS = 'ui:columns',\n CONDITION = 'ui:condition',\n}\n\n/** The enumeration of the different operators within a condition\n */\nexport enum Operators {\n ALL = 'all',\n SOME = 'some',\n NONE = 'none',\n}\n\n/** Type used to represent an object that contains anything */\ntype ConfigObject = Record<string, any>;\n\nexport interface GridProps extends GenericObjectType {\n /** The optional operator to use when comparing a field's value with the expected value for `GridType.CONDITION`\n */\n operator?: Operators;\n /** The optional name of the field from which to get the value for `GridType.CONDITION`\n */\n field?: string;\n /** The optional expected value against which to compare the field's value using the `operator`\n */\n value?: unknown;\n}\n\nexport type GridSchemaType = {\n /** The limited set of props which are keyed using the `GridType` enumeration and return an object\n */\n [gridType in GridType]?: object;\n};\n\n/** The types which comprise the possibilities for the `layoutGridSchema` prop\n */\nexport type LayoutGridSchemaType = GridSchemaType | ConfigObject | string;\n\nexport interface LayoutGridFieldProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends FieldProps<T, S, F> {\n /** Optional string or object used to describe the current level of the `LayoutGridField`\n */\n layoutGridSchema?: LayoutGridSchemaType;\n}\n\n/** The regular expression that is used to detect whether a string contains a lookup key\n */\nexport const LOOKUP_REGEX = /^\\$lookup=(.+)/;\n\n/** The constant representing the main layout grid schema option name in the `uiSchema`\n */\nexport const LAYOUT_GRID_UI_OPTION = 'layoutGrid';\n\n/** The constant representing the main layout grid schema option name in the `uiSchema`\n */\nexport const LAYOUT_GRID_OPTION = `ui:${LAYOUT_GRID_UI_OPTION}`;\n\n/** Type used to return options list and whether it has a discriminator */\ntype OneOfOptionsInfoType<S extends StrictRJSFSchema = RJSFSchema> = { options: S[]; hasDiscriminator: boolean };\n\n/** Type used to represent a React-based rendering component */\ntype RenderComponent = ComponentType<any>;\n\n/** Type used to determine what are the UIComponent and props from the grid schema */\ntype UIComponentPropsType = {\n /** The name of the component */\n name: string;\n /** The render component if specified */\n UIComponent: RenderComponent | null;\n /** Any uiProps associated with the render component */\n uiProps: ConfigObject;\n /** The special case where the component is immediately rendered */\n rendered: ReactNode;\n};\n\n/** Returns either the `value` if it is non-nullish or the fallback\n *\n * @param [value] - The potential value to return if it is non-nullish\n * @param [fallback] - The fallback value to return if `value` is nullish\n * @returns - `value` if it is non-nullish otherwise `fallback`\n */\nfunction getNonNullishValue<T = unknown>(value?: T, fallback?: T): T | undefined {\n return value ?? fallback;\n}\n\n/** Detects if a `str` is made up entirely of numeric characters\n *\n * @param str - The string to check to see if it is a numeric index\n * @return - True if the string consists entirely of numeric characters\n */\nfunction isNumericIndex(str: string) {\n return /^\\d+?$/.test(str); // Matches positive integers\n}\n\nconst LAYOUT_GRID_FIELD_TEST_IDS = getTestIds();\n\n/** Computes the uiSchema for the field with `name` from the `uiProps` and `uiSchema` provided. The field UI Schema\n * will always contain a copy of the global options from the `uiSchema` (so they can be passed down) as well as\n * copying them into the local ui options. When the `forceReadonly` flag is true, then the field UI Schema is\n * updated to make \"readonly\" be true. When the `schemaReadonly` flag is true AND the field UI Schema does NOT have\n * the flag already provided, then we also make \"readonly\" true. We always make sure to return the final value of the\n * field UI Schema's \"readonly\" flag as `uiReadonly` along with the `fieldUiSchema` in the return value.\n *\n * @param field - The name of the field to pull the existing UI Schema for\n * @param uiProps - Any props that should be put into the field's uiSchema\n * @param [uiSchema] - The optional UI Schema from which to get the UI schema for the field\n * @param [schemaReadonly] - Optional flag indicating whether the schema indicates the field is readonly\n * @param [forceReadonly] - Optional flag indicating whether the Form itself is in readonly mode\n */\nexport function computeFieldUiSchema<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n field: string,\n uiProps: ConfigObject,\n uiSchema?: UiSchema<T, S, F>,\n schemaReadonly?: boolean,\n forceReadonly?: boolean,\n) {\n const globalUiOptions = get(uiSchema, [UI_GLOBAL_OPTIONS_KEY], {});\n const localUiSchema = get(uiSchema, field);\n const localUiOptions = { ...get(localUiSchema, [UI_OPTIONS_KEY], {}), ...uiProps, ...globalUiOptions };\n const fieldUiSchema = { ...localUiSchema };\n if (!isEmpty(localUiOptions)) {\n set(fieldUiSchema, [UI_OPTIONS_KEY], localUiOptions);\n }\n if (!isEmpty(globalUiOptions)) {\n // pass the global uiOptions down to the field uiSchema so that they can be applied to all nested fields\n set(fieldUiSchema, [UI_GLOBAL_OPTIONS_KEY], globalUiOptions);\n }\n let { readonly: uiReadonly } = getUiOptions<T, S, F>(fieldUiSchema);\n if (forceReadonly === true || (isUndefined(uiReadonly) && schemaReadonly === true)) {\n // If we are forcing all widgets to be readonly, OR the schema indicates it is readonly AND the uiSchema does not\n // have an overriding value, then update the uiSchema to set readonly to true. Doing this will\n uiReadonly = true;\n if (has(localUiOptions, READONLY_KEY)) {\n // If the local options has the key value provided in it, then set that one to true\n set(fieldUiSchema, [UI_OPTIONS_KEY, READONLY_KEY], true);\n } else {\n // otherwise set the `ui:` version\n set(fieldUiSchema, `ui:${READONLY_KEY}`, true);\n }\n }\n return { fieldUiSchema, uiReadonly };\n}\n\n/** Given an `operator`, `datum` and `value` determines whether this condition is considered matching. Matching\n * depends on the `operator`. The `datum` and `value` are converted into arrays if they aren't already and then the\n * contents of the two arrays are compared using the `operator`. When `operator` is All, then the two arrays must be\n * equal to match. When `operator` is SOME then the intersection of the two arrays must have at least one value in\n * common to match. When `operator` is NONE then the intersection of the two arrays must not have any values in common\n * to match.\n *\n * @param [operator] - The optional operator for the condition\n * @param [datum] - The optional datum for the condition, this can be an item or a list of items of type unknown\n * @param [value='$0m3tH1nG Un3xP3cT3d'] The optional value for the condition, defaulting to a highly unlikely value\n * to avoid comparing two undefined elements when `value` was forgotten in the condition definition.\n * This can be an item or a list of items of type unknown\n * @returns - True if the condition matches, false otherwise\n */\nexport function conditionMatches(\n operator?: Operators,\n datum?: unknown,\n value: unknown = '$0m3tH1nG Un3xP3cT3d',\n): boolean {\n const data = flatten([datum]).sort();\n const values = flatten([value]).sort();\n switch (operator) {\n case Operators.ALL:\n return isEqual(data, values);\n case Operators.SOME:\n return intersection(data, values).length > 0;\n case Operators.NONE:\n return intersection(data, values).length === 0;\n default:\n return false;\n }\n}\n\n/** From within the `layoutGridSchema` finds the `children` and any extra `gridProps` from the object keyed by\n * `schemaKey`. If the `children` contains extra `gridProps` and those props contain a `className` string, try to\n * lookup whether that `className` has a replacement value in the `registry` using the `FORM_CONTEXT_LOOKUP_BASE`.\n * When the `className` value contains multiple classNames separated by a space, the lookup will look for a\n * replacement value for each `className` and combine them into one.\n *\n * @param layoutGridSchema - The GridSchemaType instance from which to obtain the `schemaKey` children and extra props\n * @param schemaKey - A `GridType` value, used to get the children and extra props from within the `layoutGridSchema`\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @returns - An object containing the list of `LayoutGridSchemaType` `children` and any extra `gridProps`\n * @throws - A `TypeError` when the `children` is not an array\n */\nexport function findChildrenAndProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n layoutGridSchema: GridSchemaType,\n schemaKey: GridType,\n registry: Registry<T, S, F>,\n) {\n let gridProps: GridProps = {};\n let children = layoutGridSchema[schemaKey];\n if (isPlainObject(children)) {\n const { children: elements, className: toMapClassNames, ...otherProps } = children as ConfigObject;\n children = elements;\n if (toMapClassNames) {\n const classes = toMapClassNames.split(' ');\n const className = classes.map((ele: string) => lookupFromFormContext<T, S, F>(registry, ele, ele)).join(' ');\n gridProps = { ...otherProps, className };\n } else {\n gridProps = otherProps;\n }\n }\n if (!Array.isArray(children)) {\n throw new TypeError(`Expected array for \"${schemaKey}\" in ${JSON.stringify(layoutGridSchema)}`);\n }\n return { children: children as LayoutGridSchemaType[], gridProps };\n}\n\n/** Computes the `rawSchema` and `fieldPathId` for a `schema` and a `potentialIndex`. If the `schema` is of type array,\n * has an `ITEMS_KEY` element and `potentialIndex` represents a numeric value, the element at `ITEMS_KEY` is checked\n * to see if it is an array. If it is AND the `potentialIndex`th element is available, it is used as the `rawSchema`,\n * otherwise the last value of the element is used. If it is not, then the element is used as the `rawSchema`. In\n * either case, an `fieldPathId` is computed for the array index. If the `schema` does not represent an array or the\n * `potentialIndex` is not a numeric value, then `rawSchema` is returned as undefined and given `fieldPathId` is returned\n * as is.\n *\n * @param schema - The schema to generate the fieldPathId for\n * @param fieldPathId - The FieldPathId for the schema\n * @param potentialIndex - A string containing a potential index\n * @returns - An object containing the `rawSchema` and `fieldPathId` of an array item, otherwise an undefined `rawSchema`\n */\nexport function computeArraySchemasIfPresent<S extends StrictRJSFSchema = RJSFSchema>(\n schema: S | undefined,\n fieldPathId: FieldPathId,\n potentialIndex: string,\n): {\n rawSchema?: S;\n fieldPathId: FieldPathId;\n} {\n let rawSchema: S | undefined;\n if (isNumericIndex(potentialIndex) && schema && schema?.type === 'array' && has(schema, ITEMS_KEY)) {\n const index = Number(potentialIndex);\n const items = schema[ITEMS_KEY];\n if (Array.isArray(items)) {\n if (index > items.length) {\n rawSchema = last(items) as S;\n } else {\n rawSchema = items[index] as S;\n }\n } else {\n rawSchema = items as S;\n }\n fieldPathId = {\n [ID_KEY]: fieldPathId[ID_KEY],\n path: [...fieldPathId.path.slice(0, fieldPathId.path.length - 1), index],\n };\n }\n return { rawSchema, fieldPathId };\n}\n\n/** Given a `dottedPath` to a field in the `initialSchema`, iterate through each individual path in the schema until\n * the leaf path is found and returned (along with whether that leaf path `isRequired`) OR no schema exists for an\n * element in the path. If the leaf schema element happens to be a oneOf/anyOf then also return the oneOf/anyOf as\n * `options`.\n *\n * @param registry - The registry\n * @param dottedPath - The dotted-path to the field for which to get the schema\n * @param initialSchema - The initial schema to start the search from\n * @param formData - The formData, useful for resolving a oneOf/anyOf selection in the path hierarchy\n * @param initialFieldIdPath - The initial fieldPathId to start the search from\n * @returns - An object containing the destination schema, isRequired and isReadonly flags for the field and options\n * info if a oneOf/anyOf\n */\nexport function getSchemaDetailsForField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(\n registry: Registry<T, S, F>,\n dottedPath: string,\n initialSchema: S,\n formData: FieldProps<T, S, F>['formData'],\n initialFieldIdPath: FieldPathId,\n): {\n schema?: S;\n isRequired: boolean;\n isReadonly?: boolean;\n optionsInfo?: OneOfOptionsInfoType<S>;\n fieldPathId: FieldPathId;\n} {\n const { schemaUtils, globalFormOptions } = registry;\n let rawSchema: S = initialSchema;\n let fieldPathId = initialFieldIdPath;\n const parts: string[] = dottedPath.split('.');\n const leafPath: string | undefined = parts.pop(); // pop off the last element in the list as the leaf\n let schema: S | undefined = schemaUtils.retrieveSchema(rawSchema, formData); // always returns an object\n let innerData = formData;\n let isReadonly: boolean | undefined = schema.readOnly;\n\n // For all the remaining path parts\n parts.forEach((part) => {\n // dive into the properties of the current schema (when it exists) and get the schema for the next part\n fieldPathId = toFieldPathId(part, globalFormOptions, fieldPathId);\n if (has(schema, PROPERTIES_KEY)) {\n rawSchema = get(schema, [PROPERTIES_KEY, part], {}) as S;\n } else if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // When the schema represents a oneOf/anyOf, find the selected schema for it and grab the inner part\n const selectedSchema = schemaUtils.findSelectedOptionInXxxOf(schema, part, xxx, innerData);\n rawSchema = get(selectedSchema, [PROPERTIES_KEY, part], {}) as S;\n } else {\n const result = computeArraySchemasIfPresent<S>(schema, fieldPathId, part);\n rawSchema = result.rawSchema ?? ({} as S);\n fieldPathId = result.fieldPathId;\n }\n // Now drill into the innerData for the part, returning an empty object by default if it doesn't exist\n innerData = get(innerData, part, {}) as T;\n // Resolve any `$ref`s for the current rawSchema\n schema = schemaUtils.retrieveSchema(rawSchema, innerData);\n isReadonly = getNonNullishValue(schema.readOnly, isReadonly);\n });\n\n let optionsInfo: OneOfOptionsInfoType<S> | undefined;\n let isRequired = false;\n // retrieveSchema will return an empty schema in the worst case scenario, convert it to undefined\n if (isEmpty(schema)) {\n schema = undefined;\n }\n if (schema && leafPath) {\n // When we have both a schema and a leafPath...\n if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // Grab the selected schema for the oneOf/anyOf value for the leafPath using the innerData\n schema = schemaUtils.findSelectedOptionInXxxOf(schema, leafPath, xxx, innerData);\n }\n fieldPathId = toFieldPathId(leafPath, globalFormOptions, fieldPathId);\n isRequired = schema !== undefined && Array.isArray(schema.required) && includes(schema.required, leafPath);\n const result = computeArraySchemasIfPresent<S>(schema, fieldPathId, leafPath);\n if (result.rawSchema) {\n schema = result.rawSchema;\n fieldPathId = result.fieldPathId;\n } else {\n // Now grab the schema from the leafPath of the current schema properties\n schema = get(schema, [PROPERTIES_KEY, leafPath]) as S | undefined;\n // Resolve any `$ref`s for the current schema\n schema = schema ? schemaUtils.retrieveSchema(schema) : schema;\n }\n isReadonly = getNonNullishValue(schema?.readOnly, isReadonly);\n if (schema && (has(schema, ONE_OF_KEY) || has(schema, ANY_OF_KEY))) {\n const xxx = has(schema, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n // Set the options if we have a schema with a oneOf/anyOf\n const discriminator = getDiscriminatorFieldFromSchema(schema);\n optionsInfo = { options: schema[xxx] as S[], hasDiscriminator: !!discriminator };\n }\n }\n\n return { schema, isRequired, isReadonly, optionsInfo, fieldPathId };\n}\n\n/** Gets the custom render component from the `render`, by either determining that it is either already a function or\n * it is a non-function value that can be used to look up the function in the registry. If no function can be found,\n * null is returned.\n *\n * @param render - The potential render function or lookup name to one\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @returns - Either a render function if available, or null if not\n */\nexport function getCustomRenderComponent<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(render: string | RenderComponent, registry: Registry<T, S, F>): RenderComponent | null {\n let customRenderer = render;\n if (isString(customRenderer)) {\n customRenderer = lookupFromFormContext<T, S, F>(registry, customRenderer);\n }\n if (isFunction(customRenderer)) {\n return customRenderer;\n }\n return null;\n}\n\n/** Extract the `name`, and optional `render` and all other props from the `gridSchema`. We look up the `render` to\n * see if can be resolved to a UIComponent. If `name` does not exist and there is an optional `render` UIComponent, we\n * set the `rendered` component with only specified props for that component in the object.\n *\n * @param registry - The `@rjsf` Registry from which to look up `classNames` if they are present in the extra props\n * @param gridSchema - The string or object that represents the configuration for the grid field\n * @returns - The UIComponentPropsType computed from the gridSchema\n */\nexport function computeUIComponentPropsFromGridSchema<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(registry: Registry<T, S, F>, gridSchema?: string | ConfigObject): UIComponentPropsType {\n let name: string;\n let UIComponent: RenderComponent | null = null;\n let uiProps: ConfigObject = {};\n let rendered: ReactNode | undefined;\n if (isString(gridSchema) || isUndefined(gridSchema)) {\n name = gridSchema ?? '';\n } else {\n const { name: innerName = '', render, ...innerProps } = gridSchema;\n name = innerName;\n uiProps = innerProps;\n if (!isEmpty(uiProps)) {\n // Transform any `$lookup=` in the uiProps props with the appropriate value\n each(uiProps, (prop: ConfigObject, key: string) => {\n if (isString(prop)) {\n const match: string[] | null = LOOKUP_REGEX.exec(prop);\n if (Array.isArray(match) && match.length > 1) {\n const name = match[1];\n uiProps[key] = lookupFromFormContext(registry, name, name);\n }\n }\n });\n }\n UIComponent = getCustomRenderComponent<T, S, F>(render, registry);\n if (!innerName && UIComponent) {\n rendered = <UIComponent {...innerProps} data-testid={LAYOUT_GRID_FIELD_TEST_IDS.uiComponent} />;\n }\n }\n return { name, UIComponent, uiProps, rendered };\n}\n\n/**\n * The props for the LayoutGridFieldChildren component.\n */\ntype LayoutGridFieldChildrenProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The list of strings or objects that represents the configurations for the children fields */\n childrenLayoutGridSchemaId: LayoutGridSchemaType[];\n};\n\n/** Iterates through all the `childrenLayoutGridSchemaId`, rendering a nested `LayoutGridField` for each item in the\n * list, passing all the props for the current `LayoutGridField` along, updating the `schema` by calling\n * `retrieveSchema()` on it to resolve any `$ref`s. In addition to the updated `schema`, each item in\n * `childrenLayoutGridSchemaId` is passed as `layoutGridSchema`.\n *\n * @returns - The nested `LayoutGridField`s\n */\nfunction LayoutGridFieldChildren<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutGridFieldChildrenProps<T, S, F>,\n) {\n const { childrenLayoutGridSchemaId, ...layoutGridFieldProps } = props;\n const { registry, schema: rawSchema, formData } = layoutGridFieldProps;\n const { schemaUtils } = registry;\n const schema = schemaUtils.retrieveSchema(rawSchema, formData);\n return childrenLayoutGridSchemaId.map((layoutGridSchema) => (\n <LayoutGridField<T, S, F>\n {...layoutGridFieldProps}\n key={`layoutGrid-${hashObject(layoutGridSchema)}`}\n schema={schema}\n layoutGridSchema={layoutGridSchema}\n />\n ));\n}\n\n/**\n * Describes the props for LayoutGridCondition, LayoutGridCol, LayoutGridColumns, and LayoutGridRow. This is typically\n * the original props passed through from the nearest ancestor LayoutGridField, plus the layoutGridSchema for the\n * current node.\n */\ntype LayoutFieldProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The string or object that represents the configuration for the grid field */\n layoutGridSchema: GridSchemaType;\n};\n\n/** Renders the `children` of the `GridType.CONDITION` if it passes. The `layoutGridSchema` for the\n * `GridType.CONDITION` is separated into the `children` and other `gridProps`. The `gridProps` are used to extract\n * the `operator`, `field` and `value` of the condition. If the condition matches, then all of the `children` are\n * rendered, otherwise null is returned.\n *\n * @returns - The rendered the children for the `GridType.CONDITION` or null\n */\nfunction LayoutGridCondition<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n const { formData, registry } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.CONDITION, registry);\n const { operator, field = '', value } = gridProps;\n const fieldData = get(formData, field, null);\n if (conditionMatches(operator, fieldData, value)) {\n return <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />;\n }\n return null;\n}\n\n/** Renders a `GridTemplate` as an item. The `layoutGridSchema` for the `GridType.COLUMN` is separated into the\n * `children` and other `gridProps`. The `gridProps` will be spread onto the outer `GridTemplate`. Inside the\n * `GridTemplate` all the `children` are rendered.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.COLUMN`\n */\nfunction LayoutGridCol<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.COLUMN, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return (\n <GridTemplate column data-testid={LAYOUT_GRID_FIELD_TEST_IDS.col} {...gridProps}>\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />\n </GridTemplate>\n );\n}\n\n/** Renders a `GridTemplate` as an item. The `layoutGridSchema` for the `GridType.COLUMNS` is separated into the\n * `children` and other `gridProps`. The `children` is iterated on and `gridProps` will be spread onto the outer\n * `GridTemplate`. Each child will have their own rendered `GridTemplate`.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.COLUMNS`\n */\nfunction LayoutGridColumns<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.COLUMNS, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return children.map((child) => (\n <GridTemplate\n column\n key={`column-${hashObject(child)}`}\n data-testid={LAYOUT_GRID_FIELD_TEST_IDS.col}\n {...gridProps}\n >\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={[child]} />\n </GridTemplate>\n ));\n}\n\n/** Renders a `GridTemplate` as a container. The `layoutGridSchema` for the `GridType.ROW` is separated into the\n * `children` and other `gridProps`. The `gridProps` will be spread onto the outer `GridTemplate`. Inside of the\n * `GridTemplate` all of the `children` are rendered.\n *\n * @returns - The rendered `GridTemplate` containing the children for the `GridType.ROW`\n */\nfunction LayoutGridRow<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutFieldProps<T, S, F>,\n) {\n const { layoutGridSchema, ...layoutGridFieldProps } = props;\n\n const { registry, uiSchema } = layoutGridFieldProps;\n const { children, gridProps } = findChildrenAndProps<T, S, F>(layoutGridSchema, GridType.ROW, registry);\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const GridTemplate = getTemplate<'GridTemplate', T, S, F>('GridTemplate', registry, uiOptions);\n\n return (\n <GridTemplate {...gridProps} data-testid={LAYOUT_GRID_FIELD_TEST_IDS.row}>\n <LayoutGridFieldChildren {...layoutGridFieldProps} childrenLayoutGridSchemaId={children} />\n </GridTemplate>\n );\n}\n\n/**\n * The props for the LayoutGridFieldComponent.\n */\ntype LayoutGridFieldComponentProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = LayoutGridFieldProps<T, S, F> & {\n /** The string or object that represents the configuration for the grid field */\n gridSchema?: ConfigObject | string;\n};\n\n/** Renders the field described by `gridSchema`. If `gridSchema` is not an object, then is will be assumed\n * to be the dotted-path to the field in the schema. Otherwise, we extract the `name`, and optional `render` and all\n * other props. If `name` does not exist and there is an optional `render`, we return the `render` component with only\n * specified props for that component. If `name` exists, we take the name, the initial & root schemas and the formData\n * and get the destination schema, is required state and optional oneOf/anyOf options for it. If the destination\n * schema was located along with oneOf/anyOf options then a `LayoutMultiSchemaField` will be rendered with the\n * `uiSchema`, `errorSchema`, `fieldPathId` and `formData` drilled down to the dotted-path field, spreading any other\n * props from `gridSchema` into the `ui:options`. If the destination schema located without any oneOf/anyOf options,\n * then a `SchemaField` will be rendered with the same props as mentioned in the previous sentence. If no destination\n * schema was located, but a custom render component was found, then it will be rendered with many of the non-event\n * handling props. If none of the previous render paths are valid, then a null is returned.\n *\n * @returns - One of `LayoutMultiSchemaField`, `SchemaField`, a custom render component or null, depending\n */\nfunction LayoutGridFieldComponent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: LayoutGridFieldComponentProps<T, S, F>,\n) {\n const {\n gridSchema,\n schema: initialSchema,\n uiSchema,\n errorSchema,\n fieldPathId,\n onBlur,\n onFocus,\n formData,\n readonly,\n registry,\n layoutGridSchema, // Used to pull this out of otherProps since we don't want to pass it through\n ...otherProps\n } = props;\n const { onChange } = otherProps;\n const { fields } = registry;\n const { SchemaField, LayoutMultiSchemaField } = fields;\n\n const uiComponentProps = computeUIComponentPropsFromGridSchema(registry, gridSchema);\n const { name, UIComponent, uiProps } = uiComponentProps;\n const {\n schema,\n isRequired,\n isReadonly,\n optionsInfo,\n fieldPathId: fieldIdSchema,\n } = getSchemaDetailsForField<T, S, F>(registry, name, initialSchema, formData, fieldPathId);\n const memoFieldPathId = useDeepCompareMemo<FieldPathId>(fieldIdSchema);\n\n if (uiComponentProps.rendered) {\n return uiComponentProps.rendered;\n }\n\n if (schema) {\n const Field = optionsInfo?.hasDiscriminator ? LayoutMultiSchemaField : SchemaField;\n // Call this function to get the appropriate UISchema, which will always have its `readonly` state matching the\n // `uiReadonly` flag that it returns. This is done since the `SchemaField` will always defer to the `readonly`\n // state in the uiSchema over anything in the props or schema. Because we are implementing the \"readonly\" state of\n // the `Form` via the prop passed to `LayoutGridField` we need to make sure the uiSchema always has a true value\n // when it is needed\n const { fieldUiSchema, uiReadonly } = computeFieldUiSchema<T, S, F>(name, uiProps, uiSchema, isReadonly, readonly);\n\n return (\n <Field\n data-testid={\n optionsInfo?.hasDiscriminator\n ? LAYOUT_GRID_FIELD_TEST_IDS.layoutMultiSchemaField\n : LAYOUT_GRID_FIELD_TEST_IDS.field\n }\n {...otherProps}\n name={name}\n required={isRequired}\n readonly={uiReadonly}\n schema={schema}\n uiSchema={fieldUiSchema}\n errorSchema={get(errorSchema, name)}\n fieldPathId={memoFieldPathId}\n formData={get(formData, name)}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n options={optionsInfo?.options}\n registry={registry}\n />\n );\n }\n\n if (UIComponent) {\n return (\n <UIComponent\n data-testid={LAYOUT_GRID_FIELD_TEST_IDS.uiComponent}\n {...otherProps}\n name={name}\n required={isRequired}\n formData={formData}\n readOnly={!!isReadonly || readonly}\n errorSchema={errorSchema}\n uiSchema={uiSchema}\n schema={initialSchema}\n fieldPathId={fieldPathId}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n {...uiProps}\n />\n );\n }\n return null;\n}\n\n/** The `LayoutGridField` will render a schema, uiSchema and formData combination out into a GridTemplate in the shape\n * described in the uiSchema. To define the grid to use to render the elements within a field in the schema, provide in\n * the uiSchema for that field the object contained under a `ui:layoutGrid` element. E.g. (as a JSON object):\n *\n * ```\n * {\n * \"field1\" : {\n * \"ui:field\": \"LayoutGridField\",\n * \"ui:layoutGrid\": {\n * \"ui:row\": { ... }\n * }\n * }\n * }\n * ```\n *\n * The outermost level of a `LayoutGridField` is the `ui:row` that defines the nested rows, columns, and/or condition\n * elements (i.e. \"grid elements\") in the grid. This definition is either a simple \"grid elements\" OR an object with\n * native `GridTemplate` implementation specific props and a `children` array of \"grid elements\". E.g. (as JSON objects):\n *\n * Simple `ui:row` definition, without additional `GridTemplate` props:\n * ```\n * \"ui:row\": [\n * { \"ui:row\"|\"ui:col\"|\"ui:columns\"|\"ui:condition\": ... },\n * ...\n * ]\n * ```\n *\n * Complex `ui:row` definition, with additional `GridTemplate` (this example uses @mui/material/Grid2 native props):\n * ```\n * \"ui:row\": {\n * \"spacing\": 2,\n * \"size\": { md\": 4 },\n * \"alignContent\": \"flex-start\",\n * \"className\": \"GridRow\",\n * \"children\": [\n * { \"ui:row\"|\"ui:col\"|\"ui:columns\"|\"ui:condition\": ... },\n * ...\n * ]\n * }\n * ```\n *\n * NOTE: Special note about the native `className` prop values. All className values will automatically be looked up in\n * the `formContext.lookupMap` in case they have been defined using a CSS-in-JS approach. In other words, from the\n * example above, if the `Form` was constructed with a `lookupMap` set to `{ GridRow: cssInJs.GridRowClass }`\n * then when rendered, the native `GridTemplate` will get the `className` with the value from\n * `cssInJs.GridRowClass`. This automatic lookup will happen for any of the \"grid elements\" when rendering with\n * `GridTemplate` props. If multiple className values are present, for example:\n * `{ className: 'GridRow GridColumn' }`, the classNames are split apart, looked up individually, and joined\n * together to form one className with the values from `cssInJs.GridRowClass` and `cssInJs.GridColumnClass`.\n *\n * The `ui:col` grid element is used to specify the list of columns within a grid row. A `ui:col` element can take on\n * several forms: 1) a simple list of dotted-path field names within the root field; 2) a list of objects containing the\n * dotted-path field `name` any other props that are gathered into `ui:options` for the field; 3) a list with a one-off\n * `render` functional component with or without a non-field `name` identifier and any other to-be-spread props; and\n * 4) an object with native `GridTemplate` implementation specific props and a `children` array with 1) or 2) or even a\n * nested `ui:row` or a `ui:condition` containing a `ui:row` (although this should be used carefully). E.g.\n * (as JSON objects):\n *\n * Simple `ui:col` definition, without additional `GridTemplate` props and form 1 only children:\n * ```\n * \"ui:col\": [\"innerField\", \"inner.grandChild\", ...]\n * ```\n *\n * Complicated `ui:col` definition, without additional `GridTemplate` props and form 2 only children:\n * ```\n * \"ui:col\": [\n * { \"name\": \"innerField\", \"fullWidth\": true },\n * { \"name\": \"inner.grandChild\", \"convertOther\": true },\n * ...\n * ]\n * ```\n *\n * More complicated `ui:col` definition, without additional `GridTemplate` props and form 2 children, one being a\n * one-off `render` functional component without a non-field `name` identifier\n * ```\n * \"ui:col\": [\n * \"innerField\",\n * {\n * \"render\": \"WizardNavButton\",\n * \"isNext\": true,\n * \"size\": \"large\"\n * }\n * ]\n * ```\n *\n * Most complicated `ui:col` definition, additional `GridTemplate` props and form 1, 2 and 3 children (this example\n * uses @mui/material/Grid2 native props):\n * ```\n * \"ui:col\": {\n * \"size\": { \"md\": 4 },\n * \"className\": \"GridColumn\",\n * \"children\": [\n * \"innerField\",\n * { \"name\": \"inner.grandChild\", \"convertOther\": true },\n * { \"name\": \"customRender\", \"render\": \"CustomRender\", toSpread: \"prop-value\" }\n * { \"ui:row|ui:condition\": ... }\n * ...\n * ]\n * }\n * ```\n *\n * NOTE: If a `name` prop does not exist or its value does not match any field in a schema, then it is assumed to be a\n * custom `render` component. If the `render` prop does not exist, a null render will occur. If `render` is a\n * string, its value will be looked up in the `formContext.lookupMap` first before defaulting to a null render.\n *\n * The `ui:columns` grid element is syntactic sugar to specify a set of `ui:col` columns that all share the same set of\n * native `GridTemplate` props. In other words rather than writing the following configuration that renders a\n * `<GridTemplate>` element with 3 `<GridTemplate column className=\"GridColumn col-md-4\">` nodes and 2\n * `<GridTemplate column className=\"col-md-6\">` nodes within it (one for each of the fields contained in the `children`\n * list):\n *\n * ```\n * \"ui:row\": {\n * \"children\": [\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"innerField\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"inner.grandChild\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [{ \"name\": \"inner.grandChild2\" }],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"innerField2\"],\n * }\n * },\n * {\n * \"ui:col\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"inner.grandChild3\"],\n * }\n * },\n\n * ]\n * }\n * ```\n *\n * One can write this instead:\n * ```\n * \"ui:row\": {\n * \"children\": [\n * {\n * \"ui:columns\": {\n * \"className\": \"GridColumn col-md-4\",\n * \"children\": [\"innerField\", \"inner.grandChild\", { \"name\": \"inner.grandChild2\", \"convertOther\": true }],\n * }\n * },\n * {\n * \"ui:columns\": {\n * \"className\": \"col-md-6\",\n * \"children\": [\"innerField2\", \"inner.grandChild3\"],\n * }\n * }\n * ]\n * }\n * ```\n *\n * NOTE: This syntax differs from\n * `\"ui:col\": { \"className\": \"col-md-6\", \"children\": [\"innerField2\", \"inner.grandChild3\"] }` in that\n * the `ui:col` will render the two children fields inside a single `<GridTemplate \"className\": \"col-md-6\",>`\n * element.\n *\n * The final grid element, `ui:condition`, allows for conditionally displaying \"grid elements\" within a row based on the\n * current value of a field as it relates to a (list of) hard-coded value(s). There are four elements that make up a\n * `ui:condition`: 1) the dotted-path `field` name within the root field that makes up the left-side of the condition;\n * 2) the hard-coded `value` (single or list) that makes up the right-side of the condition; 3) the `operator` that\n * controls how the left and right sides of the condition are compared; and 4) the `children` array that defines the\n * \"grid elements\" to display if the condition passes.\n *\n * A `ui:condition` uses one of three `operators` when deciding if a condition passes: 1) The `all` operator will pass\n * when the right-side and left-side contains all the same value(s); 2) the `some` operator will pass when the\n * right-side and left-side contain as least one value in common; 3) the `none` operator will pass when the right-side\n * and left-side do not contain any values in common. E.g. (as JSON objects):\n *\n * Here is how to render an if-then-else for `field2` which is an enum that has 3 known values and supports allowing\n * any other value:\n * ```\n * \"ui:row\": [\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"all\",\n * \"value\": \"value1\",\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * },\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"some\",\n * \"value\": [\"value2\", \"value3\"],\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * },\n * {\n * \"ui:condition\": {\n * \"field\": \"field2\",\n * \"operator\": \"none\",\n * \"value\": [\"value1\", \"value2\", \"value3\"],\n * \"children\": [\n * { \"ui:row\": [...] },\n * ],\n * }\n * }\n * ]\n * ```\n */\nexport default function LayoutGridField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: LayoutGridFieldProps<T, S, F>) {\n /** Render the `LayoutGridField`. If there isn't a `layoutGridSchema` prop defined, then try pulling it out of the\n * `uiSchema` via `ui:LayoutGridField`. If `layoutGridSchema` is an object, then check to see if any of the properties\n * match one of the `GridType`s. If so, call the appropriate render function for the type. Otherwise, just call the\n * generic `renderField()` function with the `layoutGridSchema`.\n */\n const { uiSchema } = props;\n let { layoutGridSchema } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n if (!layoutGridSchema && LAYOUT_GRID_UI_OPTION in uiOptions && isObject(uiOptions[LAYOUT_GRID_UI_OPTION])) {\n layoutGridSchema = uiOptions[LAYOUT_GRID_UI_OPTION];\n }\n\n if (isObject(layoutGridSchema)) {\n if (GridType.ROW in layoutGridSchema) {\n return <LayoutGridRow {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.COLUMN in layoutGridSchema) {\n return <LayoutGridCol {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.COLUMNS in layoutGridSchema) {\n return <LayoutGridColumns {...props} layoutGridSchema={layoutGridSchema} />;\n }\n if (GridType.CONDITION in layoutGridSchema) {\n return <LayoutGridCondition {...props} layoutGridSchema={layoutGridSchema} />;\n }\n }\n return <LayoutGridFieldComponent {...props} gridSchema={layoutGridSchema} />;\n}\n\nLayoutGridField.TEST_IDS = LAYOUT_GRID_FIELD_TEST_IDS;\n", "import {\n getTemplate,\n getUiOptions,\n titleId,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TemplatesType,\n} from '@rjsf/utils';\n\n/** The `LayoutHeaderField` component renders a `TitleFieldTemplate` with an `id` derived from the `fieldPathId`\n * and whether it is `required` from the props. The `title` is derived from the props as follows:\n * - If there is a title in the `uiSchema`, it is displayed\n * - Else, if there is an explicit `title` passed in the props, it is displayed\n * - Otherwise, if there is a title in the `schema`, it is displayed\n * - Finally, the `name` prop is displayed as the title\n *\n * @param props - The `LayoutHeaderField` for the component\n */\nexport default function LayoutHeaderField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const { fieldPathId, title, schema, uiSchema, required, registry, name } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { title: uiTitle } = options;\n const { title: schemaTitle } = schema;\n const fieldTitle = uiTitle || title || schemaTitle || name;\n if (!fieldTitle) {\n return null;\n }\n const TitleFieldTemplate: TemplatesType<T, S, F>['TitleFieldTemplate'] = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n );\n return (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={fieldTitle}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n}\n", "import { useState, useEffect } from 'react';\nimport {\n ANY_OF_KEY,\n CONST_KEY,\n DEFAULT_KEY,\n EnumOptionsType,\n ERRORS_KEY,\n FieldProps,\n FormContextType,\n getDiscriminatorFieldFromSchema,\n hashObject,\n ID_KEY,\n ONE_OF_KEY,\n optionsList,\n PROPERTIES_KEY,\n RJSFSchema,\n getTemplate,\n getUiOptions,\n getWidget,\n SchemaUtilsType,\n StrictRJSFSchema,\n UiSchema,\n} from '@rjsf/utils';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport noop from 'lodash/noop';\nimport omit from 'lodash/omit';\nimport set from 'lodash/set';\n\n/** Gets the selected option from the list of `options`, using the `selectorField` to search inside each `option` for\n * the `properties[selectorField].default(or const)` that matches the given `value`.\n *\n * @param options - The list of schemas each representing a choice in the `oneOf`\n * @param selectorField - The name of the field that is common in all of the schemas that represents the selector field\n * @param value - The current value of the selector field from the data\n */\nexport function getSelectedOption<S extends StrictRJSFSchema = RJSFSchema>(\n options: EnumOptionsType<S>[],\n selectorField: string,\n value: unknown,\n): S | undefined {\n const defaultValue = '!@#!@$@#$!@$#';\n const schemaOptions: S[] = options.map(({ schema }) => schema!);\n return schemaOptions.find((option) => {\n const selector = get(option, [PROPERTIES_KEY, selectorField]);\n const result = get(selector, DEFAULT_KEY, get(selector, CONST_KEY, defaultValue));\n return result === value;\n });\n}\n\n/** Computes the `enumOptions` array from the schema and options.\n *\n * @param schema - The schema that contains the `options`\n * @param options - The options from the `schema`\n * @param schemaUtils - The SchemaUtilsType object used to call retrieveSchema,\n * @param [uiSchema] - The optional uiSchema for the schema\n * @param [formData] - The optional formData associated with the schema\n * @returns - The list of enumOptions for the `schema` and `options`\n * @throws - Error when no enum options were computed\n */\nexport function computeEnumOptions<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n schema: S,\n options: S[],\n schemaUtils: SchemaUtilsType<T, S, F>,\n uiSchema?: UiSchema<T, S, F>,\n formData?: T,\n): EnumOptionsType<S>[] {\n const realOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n let tempSchema = schema;\n if (has(schema, ONE_OF_KEY)) {\n tempSchema = { ...schema, [ONE_OF_KEY]: realOptions };\n } else if (has(schema, ANY_OF_KEY)) {\n tempSchema = { ...schema, [ANY_OF_KEY]: realOptions };\n }\n const enumOptions = optionsList<T, S, F>(tempSchema, uiSchema);\n if (!enumOptions) {\n throw new Error(`No enumOptions were computed from the schema ${JSON.stringify(tempSchema)}`);\n }\n return enumOptions;\n}\n\n/** The `LayoutMultiSchemaField` is an adaptation of the `MultiSchemaField` but changed considerably to only\n * support `anyOf`/`oneOf` fields that are being displayed in a `LayoutGridField` where the field selection is shown as\n * a radio group by default. It expects that a `selectorField` is provided (either directly via the `discriminator`\n * field or indirectly via `ui:optionsSchemaSelector` in the `uiSchema`) to help determine which `anyOf`/`oneOf` schema\n * is active. If no `selectorField` is specified, then an error is thrown.\n */\nexport default function LayoutMultiSchemaField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const {\n name,\n baseType,\n disabled = false,\n formData,\n fieldPathId,\n onBlur,\n onChange,\n options,\n onFocus,\n registry,\n uiSchema,\n schema,\n autofocus,\n readonly,\n required,\n errorSchema,\n hideError = false,\n } = props;\n const { widgets, schemaUtils, globalUiOptions } = registry;\n const [enumOptions, setEnumOptions] = useState(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData)!);\n const id = get(fieldPathId, ID_KEY);\n const discriminator = getDiscriminatorFieldFromSchema(schema);\n const FieldErrorTemplate = getTemplate<'FieldErrorTemplate', T, S, F>('FieldErrorTemplate', registry, options);\n const FieldTemplate = getTemplate<'FieldTemplate', T, S, F>('FieldTemplate', registry, options);\n const schemaHash = hashObject(schema);\n const optionsHash = hashObject(options);\n const uiSchemaHash = uiSchema ? hashObject(uiSchema) : '';\n const formDataHash = formData ? hashObject(formData) : '';\n\n useEffect(() => {\n setEnumOptions(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData));\n // We are using hashes in place of the dependencies\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [schemaHash, optionsHash, schemaUtils, uiSchemaHash, formDataHash]);\n const {\n widget = discriminator ? 'radio' : 'select',\n title = '',\n placeholder = '',\n optionsSchemaSelector: selectorField = discriminator,\n hideError: uiSchemaHideError,\n ...uiOptions\n } = getUiOptions<T, S, F>(uiSchema);\n if (!selectorField) {\n throw new Error('No selector field provided for the LayoutMultiSchemaField');\n }\n const selectedOption = get(formData, selectorField);\n let optionSchema: S = get(enumOptions[0]?.schema, [PROPERTIES_KEY, selectorField], {}) as S;\n const option = getSelectedOption<S>(enumOptions, selectorField, selectedOption);\n // If the subschema doesn't declare a type, infer the type from the parent schema\n optionSchema = optionSchema?.type ? optionSchema : ({ ...optionSchema, type: option?.type || baseType } as S);\n const Widget = getWidget<T, S, F>(optionSchema!, widget, widgets);\n\n // The following code was copied from `@rjsf`'s `SchemaField`\n // Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children\n const hideFieldError = uiSchemaHideError === undefined ? hideError : Boolean(uiSchemaHideError);\n\n const rawErrors = get(errorSchema, [ERRORS_KEY], []) as string[];\n const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n /** Callback function that updates the selected option and adjusts the form data based on the structure of the new\n * option, calling the `onChange` callback with the adjusted formData.\n *\n * @param opt - If the option is undefined, we are going to clear the selection otherwise we\n * will use it as the index of the new option to select\n */\n const onOptionChange = (opt?: unknown) => {\n const newOption = getSelectedOption<S>(enumOptions, selectorField, opt);\n const oldOption = getSelectedOption<S>(enumOptions, selectorField, selectedOption);\n\n let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);\n if (newFormData && newOption) {\n // Call getDefaultFormState to make sure defaults are populated on change.\n newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren') as T;\n }\n if (newFormData) {\n set(newFormData, selectorField, opt);\n }\n // Pass the component name in the path\n onChange(newFormData, fieldPathId.path, undefined, id);\n };\n\n // filtering the options based on the type of widget because `selectField` does not recognize the `convertOther` prop\n const widgetOptions = { enumOptions, ...uiOptions };\n const errors =\n !hideFieldError && rawErrors.length > 0 ? (\n <FieldErrorTemplate fieldPathId={fieldPathId} schema={schema} errors={rawErrors} registry={registry} />\n ) : undefined;\n\n return (\n <FieldTemplate\n id={id}\n schema={schema}\n label={(title || schema.title) ?? ''}\n disabled={disabled || (Array.isArray(enumOptions) && isEmpty(enumOptions))}\n uiSchema={uiSchema}\n required={required}\n readonly={!!readonly}\n registry={registry}\n displayLabel={displayLabel}\n errors={errors}\n onChange={onChange}\n onKeyRename={noop}\n onKeyRenameBlur={noop}\n onRemoveProperty={noop}\n >\n <Widget\n id={id}\n name={name}\n schema={schema}\n label={(title || schema.title) ?? ''}\n disabled={disabled || (Array.isArray(enumOptions) && isEmpty(enumOptions))}\n uiSchema={uiSchema}\n autofocus={autofocus}\n readonly={readonly}\n required={required}\n registry={registry}\n multiple={false}\n rawErrors={rawErrors}\n hideError={hideFieldError}\n hideLabel={!displayLabel}\n errorSchema={fieldErrorSchema}\n placeholder={placeholder}\n onChange={onOptionChange}\n onBlur={onBlur}\n onFocus={onFocus}\n value={selectedOption}\n options={widgetOptions}\n htmlName={fieldPathId.name}\n />\n </FieldTemplate>\n );\n}\n", "import { Component } from 'react';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport {\n ANY_OF_KEY,\n deepEquals,\n ERRORS_KEY,\n FieldProps,\n FormContextType,\n getDiscriminatorFieldFromSchema,\n getTemplate,\n getUiOptions,\n getWidget,\n isFormDataAvailable,\n mergeSchemas,\n ONE_OF_KEY,\n RJSFSchema,\n shouldRenderOptionalField,\n StrictRJSFSchema,\n TranslatableString,\n UiSchema,\n} from '@rjsf/utils';\n\n/** Type used for the state of the `AnyOfField` component */\ntype AnyOfFieldState<S extends StrictRJSFSchema = RJSFSchema> = {\n /** The currently selected option */\n selectedOption: number;\n /** The option schemas after retrieving all $refs */\n retrievedOptions: S[];\n};\n\n/** The `AnyOfField` component is used to render a field in the schema that is an `anyOf`, `allOf` or `oneOf`. It tracks\n * the currently selected option and cleans up any irrelevant data in `formData`.\n *\n * @param props - The `FieldProps` for this template\n */\nclass AnyOfField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> extends Component<\n FieldProps<T, S, F>,\n AnyOfFieldState<S>\n> {\n /** Constructs an `AnyOfField` with the given `props` to initialize the initially selected option in state\n *\n * @param props - The `FieldProps` for this template\n */\n constructor(props: FieldProps<T, S, F>) {\n super(props);\n\n const {\n formData,\n options,\n registry: { schemaUtils },\n } = this.props;\n // cache the retrieved options in state in case they have $refs to save doing it later\n const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n\n this.state = {\n retrievedOptions,\n selectedOption: this.getMatchingOption(0, formData, retrievedOptions),\n };\n }\n\n /** React lifecycle method that is called when the props and/or state for this component is updated. It recomputes the\n * currently selected option based on the overall `formData`\n *\n * @param prevProps - The previous `FieldProps` for this template\n * @param prevState - The previous `AnyOfFieldState` for this template\n */\n componentDidUpdate(prevProps: Readonly<FieldProps<T, S, F>>, prevState: Readonly<AnyOfFieldState>) {\n const { formData, options, fieldPathId } = this.props;\n const { selectedOption } = this.state;\n let newState = this.state;\n if (!deepEquals(prevProps.options, options)) {\n const {\n registry: { schemaUtils },\n } = this.props;\n // re-cache the retrieved options in state in case they have $refs to save doing it later\n const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));\n newState = { selectedOption, retrievedOptions };\n }\n if (!deepEquals(formData, prevProps.formData) && fieldPathId.$id === prevProps.fieldPathId.$id) {\n const { retrievedOptions } = newState;\n const matchingOption = this.getMatchingOption(selectedOption, formData, retrievedOptions);\n\n if (prevState && matchingOption !== selectedOption) {\n newState = { selectedOption: matchingOption, retrievedOptions };\n }\n }\n if (newState !== this.state) {\n this.setState(newState);\n }\n }\n\n /** Determines the best matching option for the given `formData` and `options`.\n *\n * @param formData - The new formData\n * @param options - The list of options to choose from\n * @return - The index of the `option` that best matches the `formData`\n */\n getMatchingOption(selectedOption: number, formData: T | undefined, options: S[]) {\n const {\n schema,\n registry: { schemaUtils },\n } = this.props;\n\n const discriminator = getDiscriminatorFieldFromSchema<S>(schema);\n const option = schemaUtils.getClosestMatchingOption(formData, options, selectedOption, discriminator);\n return option;\n }\n\n /** Callback handler to remember what the currently selected option is. In addition to that the `formData` is updated\n * to remove properties that are not part of the newly selected option schema, and then the updated data is passed to\n * the `onChange` handler.\n *\n * @param option - The new option value being selected\n */\n onOptionChange = (option?: string) => {\n const { selectedOption, retrievedOptions } = this.state;\n const { formData, onChange, registry, fieldPathId } = this.props;\n const { schemaUtils } = registry;\n const intOption = option !== undefined ? parseInt(option, 10) : -1;\n if (intOption === selectedOption) {\n return;\n }\n const newOption = intOption >= 0 ? retrievedOptions[intOption] : undefined;\n const oldOption = selectedOption >= 0 ? retrievedOptions[selectedOption] : undefined;\n\n let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);\n if (newOption) {\n // Call getDefaultFormState to make sure defaults are populated on change. Pass \"excludeObjectChildren\"\n // so that only the root objects themselves are created without adding undefined children properties\n newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren') as T;\n }\n\n this.setState({ selectedOption: intOption }, () => {\n onChange(newFormData, fieldPathId.path, undefined, this.getFieldId());\n });\n };\n\n getFieldId() {\n const { fieldPathId, schema } = this.props;\n return `${fieldPathId.$id}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`;\n }\n\n /** Renders the `AnyOfField` selector along with a `SchemaField` for the value of the `formData`\n */\n render() {\n const {\n name,\n disabled = false,\n errorSchema = {},\n formData,\n onBlur,\n onFocus,\n readonly,\n required = false,\n registry,\n schema,\n uiSchema,\n } = this.props;\n\n const { widgets, fields, translateString, globalUiOptions, schemaUtils } = registry;\n const { SchemaField: _SchemaField } = fields;\n const MultiSchemaFieldTemplate = getTemplate<'MultiSchemaFieldTemplate', T, S, F>(\n 'MultiSchemaFieldTemplate',\n registry,\n globalUiOptions,\n );\n const isOptionalRender = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n\n const { selectedOption, retrievedOptions } = this.state;\n const {\n widget = 'select',\n placeholder,\n autofocus,\n autocomplete,\n title = schema.title,\n ...uiOptions\n } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const Widget = getWidget<T, S, F>({ type: 'number' }, widget, widgets);\n const rawErrors = get(errorSchema, ERRORS_KEY, []);\n const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n const option = selectedOption >= 0 ? retrievedOptions[selectedOption] || null : null;\n let optionSchema: S | undefined | null;\n\n if (option) {\n // merge top level required field\n const { required } = schema;\n // Merge in all the non-oneOf/anyOf properties and also skip the special ADDITIONAL_PROPERTY_FLAG property\n optionSchema = required ? (mergeSchemas({ required }, option) as S) : option;\n }\n\n // First we will check to see if there is an anyOf/oneOf override for the UI schema\n let optionsUiSchema: UiSchema<T, S, F>[] = [];\n if (ONE_OF_KEY in schema && uiSchema && ONE_OF_KEY in uiSchema) {\n if (Array.isArray(uiSchema[ONE_OF_KEY])) {\n optionsUiSchema = uiSchema[ONE_OF_KEY];\n } else {\n console.warn(`uiSchema.oneOf is not an array for \"${title || name}\"`);\n }\n } else if (ANY_OF_KEY in schema && uiSchema && ANY_OF_KEY in uiSchema) {\n if (Array.isArray(uiSchema[ANY_OF_KEY])) {\n optionsUiSchema = uiSchema[ANY_OF_KEY];\n } else {\n console.warn(`uiSchema.anyOf is not an array for \"${title || name}\"`);\n }\n }\n // Then we pick the one that matches the selected option index, if one exists otherwise default to the main uiSchema\n let optionUiSchema = uiSchema;\n if (selectedOption >= 0 && optionsUiSchema.length > selectedOption) {\n optionUiSchema = optionsUiSchema[selectedOption];\n }\n\n const translateEnum: TranslatableString = title\n ? TranslatableString.TitleOptionPrefix\n : TranslatableString.OptionPrefix;\n const translateParams = title ? [title] : [];\n const enumOptions = retrievedOptions.map((opt: { title?: string }, index: number) => {\n // Also see if there is an override title in the uiSchema for each option, otherwise use the title from the option\n const { title: uiTitle = opt.title } = getUiOptions<T, S, F>(optionsUiSchema[index]);\n return {\n label: uiTitle || translateString(translateEnum, translateParams.concat(String(index + 1))),\n value: index,\n };\n });\n\n const selector =\n !isOptionalRender || hasFormData ? (\n <Widget\n id={this.getFieldId()}\n name={`${name}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`}\n schema={{ type: 'number', default: 0 } as S}\n onChange={this.onOptionChange}\n onBlur={onBlur}\n onFocus={onFocus}\n disabled={disabled || isEmpty(enumOptions)}\n multiple={false}\n rawErrors={rawErrors}\n errorSchema={fieldErrorSchema}\n value={selectedOption >= 0 ? selectedOption : undefined}\n options={{ enumOptions, ...uiOptions }}\n registry={registry}\n placeholder={placeholder}\n autocomplete={autocomplete}\n autofocus={autofocus}\n label={title ?? name}\n hideLabel={!displayLabel}\n readonly={readonly}\n />\n ) : undefined;\n\n const optionsSchemaField =\n (optionSchema && optionSchema.type !== 'null' && (\n <_SchemaField {...this.props} schema={optionSchema} uiSchema={optionUiSchema} />\n )) ||\n null;\n\n return (\n <MultiSchemaFieldTemplate\n schema={schema}\n registry={registry}\n uiSchema={uiSchema}\n selector={selector}\n optionSchemaField={optionsSchemaField}\n />\n );\n }\n}\n\nexport default AnyOfField;\n", "import { useState, useCallback } from 'react';\nimport {\n asNumber,\n ErrorSchema,\n FieldPathList,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n// Matches a string that ends in a . character, optionally followed by a sequence of\n// digits followed by any number of 0 characters up until the end of the line.\n// Ensuring that there is at least one prefixed character is important so that\n// you don't incorrectly match against \"0\".\nconst trailingCharMatcherWithPrefix = /\\.([0-9]*0)*$/;\n\n// This is used for trimming the trailing 0 and . characters without affecting\n// the rest of the string. Its possible to use one RegEx with groups for this\n// functionality, but it is fairly complex compared to simply defining two\n// different matchers.\nconst trailingCharMatcher = /[0.]0*$/;\n\n/**\n * The NumberField class has some special handling for dealing with trailing\n * decimal points and/or zeroes. This logic is designed to allow trailing values\n * to be visible in the input element, but not be represented in the\n * corresponding form data.\n *\n * The algorithm is as follows:\n *\n * 1. When the input value changes the value is cached in the component state\n *\n * 2. The value is then normalized, removing trailing decimal points and zeros,\n * then passed to the \"onChange\" callback\n *\n * 3. When the component is rendered, the formData value is checked against the\n * value cached in the state. If it matches the cached value, the cached\n * value is passed to the input instead of the formData value\n */\nfunction NumberField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const { registry, onChange, formData, value: initialValue } = props;\n const [lastValue, setLastValue] = useState(initialValue);\n const { StringField } = registry.fields;\n\n let value = formData;\n\n /** Handle the change from the `StringField` to properly convert to a number\n *\n * @param value - The current value for the change occurring\n */\n const handleChange = useCallback(\n (value: FieldProps<T, S, F>['value'], path: FieldPathList, errorSchema?: ErrorSchema<T>, id?: string) => {\n // Cache the original value in component state\n setLastValue(value);\n\n // Normalize decimals that don't start with a zero character in advance so\n // that the rest of the normalization logic is simpler\n if (`${value}`.charAt(0) === '.') {\n value = `0${value}`;\n }\n\n // Check that the value is a string (this can happen if the widget used is a\n // <select>, due to an enum declaration etc) then, if the value ends in a\n // trailing decimal point or multiple zeroes, strip the trailing values\n const processed =\n typeof value === 'string' && value.match(trailingCharMatcherWithPrefix)\n ? asNumber(value.replace(trailingCharMatcher, ''))\n : asNumber(value);\n\n onChange(processed as unknown as T, path, errorSchema, id);\n },\n [onChange],\n );\n\n if (typeof lastValue === 'string' && typeof value === 'number') {\n // Construct a regular expression that checks for a string that consists\n // of the formData value suffixed with zero or one '.' characters and zero\n // or more '0' characters\n const re = new RegExp(`^(${String(value).replace('.', '\\\\.')})?\\\\.?0*$`);\n\n // If the cached \"lastValue\" is a match, use that instead of the formData\n // value to prevent the input value from changing in the UI\n if (lastValue.match(re)) {\n value = lastValue as unknown as T;\n }\n }\n\n return <StringField {...props} formData={value} onChange={handleChange} />;\n}\n\nexport default NumberField;\n", "import { FocusEvent, useCallback, useState } from 'react';\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n ANY_OF_KEY,\n getTemplate,\n getUiOptions,\n isFormDataAvailable,\n orderProperties,\n shouldRenderOptionalField,\n toFieldPathId,\n useDeepCompareMemo,\n ErrorSchema,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FormContextType,\n GenericObjectType,\n ONE_OF_KEY,\n PROPERTIES_KEY,\n REF_KEY,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isObject from 'lodash/isObject';\nimport set from 'lodash/set';\n\nimport { ADDITIONAL_PROPERTY_KEY_REMOVE } from '../constants';\n\n/** Returns a flag indicating whether the `name` field is required in the object schema\n *\n * @param schema - The schema to check\n * @param name - The name of the field to check for required-ness\n * @returns - True if the field `name` is required, false otherwise\n */\nfunction isRequired<S extends StrictRJSFSchema = RJSFSchema>(schema: S, name: string) {\n return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n}\n\n/** Returns a default value to be used for a new additional schema property of the given `type`\n *\n * @param translateString - The string translation function from the registry\n * @param type - The type of the new additional schema property\n */\nfunction getDefaultValue<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n translateString: Registry<T, S, F>['translateString'],\n type?: RJSFSchema['type'],\n) {\n switch (type) {\n case 'array':\n return [];\n case 'boolean':\n return false;\n case 'null':\n return null;\n case 'number':\n return 0;\n case 'object':\n return {};\n case 'string':\n default:\n // We don't have a datatype for some reason (perhaps additionalProperties was true)\n return translateString(TranslatableString.NewStringDefault);\n }\n}\n\n/** Props for the `ObjectFieldProperty` component */\ninterface ObjectFieldPropertyProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Omit<FieldProps<T, S, F>, 'name'> {\n /** The name of the property within the parent object */\n propertyName: string;\n /** Flag indicating whether this property was added by the additionalProperties UI */\n addedByAdditionalProperties: boolean;\n /** Callback that handles the rename of an additionalProperties-based property key */\n handleKeyRename: (oldKey: string, newKey: string) => void;\n /** Callback that handles the removal of an additionalProperties-based property with key */\n handleRemoveProperty: (keyName: string) => void;\n}\n\n/** The `ObjectFieldProperty` component is used to render the `SchemaField` for a child property of an object\n */\nfunction ObjectFieldProperty<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ObjectFieldPropertyProps<T, S, F>,\n) {\n const {\n fieldPathId,\n schema,\n registry,\n uiSchema,\n errorSchema,\n formData,\n onChange,\n onBlur,\n onFocus,\n disabled,\n readonly,\n required,\n hideError,\n propertyName,\n handleKeyRename,\n handleRemoveProperty,\n addedByAdditionalProperties,\n } = props;\n const [wasPropertyKeyModified, setWasPropertyKeyModified] = useState(false);\n const { globalFormOptions, fields } = registry;\n const { SchemaField } = fields;\n const innerFieldIdPathId = useDeepCompareMemo<FieldPathId>(\n toFieldPathId(propertyName, globalFormOptions, fieldPathId.path),\n );\n\n /** Returns the `onPropertyChange` handler for the `name` field. Handles the special case where a user is attempting\n * to clear the data for a field added as an additional property. Calls the `onChange()` handler with the updated\n * formData.\n *\n * @param name - The name of the property\n * @param addedByAdditionalProperties - Flag indicating whether this property is an additional property\n * @returns - The onPropertyChange callback for the `name` property\n */\n const onPropertyChange = useCallback(\n (value: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n if (value === undefined && addedByAdditionalProperties) {\n // Don't set value = undefined for fields added by additionalProperties. Doing so removes them from the\n // formData, which causes them to completely disappear (including the input field for the property name). Unlike\n // fields which are \"mandated\" by the schema, these fields can be set to undefined by clicking a \"delete field\"\n // button, so set empty values to the empty string.\n value = '' as unknown as T;\n }\n onChange(value, path, newErrorSchema, id);\n },\n [onChange, addedByAdditionalProperties],\n );\n\n /** The key change event handler; Called when the key associated with a field is changed for an additionalProperty.\n * simply returns a function that call the `handleKeyChange()` event with the value\n */\n const onKeyRename = useCallback(\n (value: string) => {\n if (propertyName !== value) {\n setWasPropertyKeyModified(true);\n }\n handleKeyRename(propertyName, value);\n },\n [propertyName, handleKeyRename],\n );\n\n /** Returns a callback the handle the blur event, getting the value from the target and passing that along to the\n * `handleKeyChange` function\n */\n const onKeyRenameBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const {\n target: { value },\n } = event;\n onKeyRename(value);\n },\n [onKeyRename],\n );\n\n /** The property drop/removal event handler; Called when a field is removed in an additionalProperty context\n */\n const onRemoveProperty = useCallback(() => {\n handleRemoveProperty(propertyName);\n }, [propertyName, handleRemoveProperty]);\n\n return (\n <SchemaField\n name={propertyName}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n errorSchema={errorSchema}\n fieldPathId={innerFieldIdPathId}\n formData={formData}\n wasPropertyKeyModified={wasPropertyKeyModified}\n onKeyRename={onKeyRename}\n onKeyRenameBlur={onKeyRenameBlur}\n onRemoveProperty={onRemoveProperty}\n onChange={onPropertyChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n />\n );\n}\n\n/** The `ObjectField` component is used to render a field in the schema that is of type `object`. It tracks whether an\n * additional property key was modified and what it was modified to\n *\n * @param props - The `FieldProps` for this template\n */\nexport default function ObjectField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema: rawSchema,\n uiSchema = {},\n formData,\n errorSchema,\n fieldPathId,\n name,\n required = false,\n disabled,\n readonly,\n hideError,\n onBlur,\n onFocus,\n onChange,\n registry,\n title,\n } = props;\n const { fields, schemaUtils, translateString, globalUiOptions } = registry;\n const { OptionalDataControlsField } = fields;\n const schema: S = schemaUtils.retrieveSchema(rawSchema, formData, true);\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const { properties: schemaProperties = {} } = schema;\n // All the children will use childFieldPathId if present in the props, falling back to the fieldPathId\n const childFieldPathId = props.childFieldPathId ?? fieldPathId;\n\n const templateTitle = uiOptions.title ?? schema.title ?? title ?? name;\n const description = uiOptions.description ?? schema.description;\n const renderOptionalField = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n let orderedProperties: string[] = [];\n\n /** Computes the next available key name from the `preferredKey`, indexing through the already existing keys until one\n * that is already not assigned is found.\n *\n * @param preferredKey - The preferred name of a new key\n * @param [formData] - The form data in which to check if the desired key already exists\n * @returns - The name of the next available key from `preferredKey`\n */\n const getAvailableKey = useCallback(\n (preferredKey: string, formData?: T) => {\n const { duplicateKeySuffixSeparator = '-' } = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n\n let index = 0;\n let newKey = preferredKey;\n while (has(formData, newKey)) {\n newKey = `${preferredKey}${duplicateKeySuffixSeparator}${++index}`;\n }\n return newKey;\n },\n [uiSchema, globalUiOptions],\n );\n\n /** Handles the adding of a new additional property on the given `schema`. Calls the `onChange` callback once the new\n * default data for that field has been added to the formData.\n */\n const onAddProperty = useCallback(() => {\n if (!(schema.additionalProperties || schema.patternProperties)) {\n return;\n }\n const { translateString } = registry;\n const newFormData = { ...formData } as T;\n const newKey = getAvailableKey('newKey', newFormData);\n if (schema.patternProperties) {\n // Cast this to make the `set` work properly\n set(newFormData as GenericObjectType, newKey, null);\n } else {\n let type: RJSFSchema['type'] = undefined;\n let constValue: RJSFSchema['const'] = undefined;\n let defaultValue: RJSFSchema['default'] = undefined;\n if (isObject(schema.additionalProperties)) {\n type = schema.additionalProperties.type;\n constValue = schema.additionalProperties.const;\n defaultValue = schema.additionalProperties.default;\n let apSchema = schema.additionalProperties;\n if (REF_KEY in apSchema) {\n const { schemaUtils } = registry;\n apSchema = schemaUtils.retrieveSchema({ [REF_KEY]: apSchema[REF_KEY] } as S, formData);\n type = apSchema.type;\n constValue = apSchema.const;\n defaultValue = apSchema.default;\n }\n if (!type && (ANY_OF_KEY in apSchema || ONE_OF_KEY in apSchema)) {\n type = 'object';\n }\n }\n\n const newValue = constValue ?? defaultValue ?? getDefaultValue<T, S, F>(translateString, type);\n // Cast this to make the `set` work properly\n set(newFormData as GenericObjectType, newKey, newValue);\n }\n\n onChange(newFormData, childFieldPathId.path);\n }, [formData, onChange, registry, childFieldPathId, getAvailableKey, schema]);\n\n /** Returns a callback function that deals with the rename of a key for an additional property for a schema. That\n * callback will attempt to rename the key and move the existing data to that key, calling `onChange` when it does.\n *\n * @param oldKey - The old key for the field\n * @param newKey - The new key for the field\n * @returns - The key change callback function\n */\n const handleKeyRename = useCallback(\n (oldKey: string, newKey: string) => {\n if (oldKey !== newKey) {\n const actualNewKey = getAvailableKey(newKey, formData);\n const newFormData: GenericObjectType = {\n ...(formData as GenericObjectType),\n };\n const newKeys: GenericObjectType = { [oldKey]: actualNewKey };\n const keyValues = Object.keys(newFormData).map((key) => {\n const newKey = newKeys[key] || key;\n return { [newKey]: newFormData[key] };\n });\n const renamedObj = Object.assign({}, ...keyValues);\n\n onChange(renamedObj, childFieldPathId.path);\n }\n },\n [formData, onChange, childFieldPathId, getAvailableKey],\n );\n\n /** Handles the remove click which calls the `onChange` callback with the special ADDITIONAL_PROPERTY_FIELD_REMOVE\n * value for the path plus the key to be removed\n */\n const handleRemoveProperty = useCallback(\n (key: string) => {\n onChange(ADDITIONAL_PROPERTY_KEY_REMOVE as T, [...childFieldPathId.path, key]);\n },\n [onChange, childFieldPathId],\n );\n\n if (!renderOptionalField || hasFormData) {\n try {\n const properties = Object.keys(schemaProperties);\n orderedProperties = orderProperties(properties, uiOptions.order);\n } catch (err) {\n return (\n <div>\n <p className='rjsf-config-error' style={{ color: 'red' }}>\n <Markdown options={{ disableParsingRawHTML: true }}>\n {translateString(TranslatableString.InvalidObjectField, [name || 'root', (err as Error).message])}\n </Markdown>\n </p>\n <pre>{JSON.stringify(schema)}</pre>\n </div>\n );\n }\n }\n\n const Template = getTemplate<'ObjectFieldTemplate', T, S, F>('ObjectFieldTemplate', registry, uiOptions);\n const optionalDataControl = renderOptionalField ? (\n <OptionalDataControlsField {...props} fieldPathId={childFieldPathId} schema={schema} />\n ) : undefined;\n\n const templateProps = {\n // getDisplayLabel() always returns false for object types, so just check the `uiOptions.label`\n title: uiOptions.label === false ? '' : templateTitle,\n description: uiOptions.label === false ? undefined : description,\n properties: orderedProperties.map((name) => {\n const addedByAdditionalProperties = has(schema, [PROPERTIES_KEY, name, ADDITIONAL_PROPERTY_FLAG]);\n const fieldUiSchema = addedByAdditionalProperties ? uiSchema.additionalProperties : uiSchema[name];\n const hidden = getUiOptions<T, S, F>(fieldUiSchema).widget === 'hidden';\n const content = (\n <ObjectFieldProperty<T, S, F>\n key={name}\n propertyName={name}\n required={isRequired<S>(schema, name)}\n schema={get(schema, [PROPERTIES_KEY, name], {}) as S}\n uiSchema={fieldUiSchema}\n errorSchema={get(errorSchema, name)}\n fieldPathId={childFieldPathId}\n formData={get(formData, name)}\n handleKeyRename={handleKeyRename}\n handleRemoveProperty={handleRemoveProperty}\n addedByAdditionalProperties={addedByAdditionalProperties}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n />\n );\n return {\n content,\n name,\n readonly,\n disabled,\n required,\n hidden,\n };\n }),\n readonly,\n disabled,\n required,\n fieldPathId,\n uiSchema,\n errorSchema,\n schema,\n formData,\n registry,\n optionalDataControl,\n className: renderOptionalField ? 'rjsf-optional-object-field' : undefined,\n };\n return <Template {...templateProps} onAddProperty={onAddProperty} />;\n}\n", "/** Internal only symbol used by `Form` & `ObjectField` to mark an additional property element to be removed */\nexport const ADDITIONAL_PROPERTY_KEY_REMOVE = Symbol('remove-this-key');\n\n/** Internal only symbol used by the `reset()` function to indicate that a reset operation is happening */\nexport const IS_RESET = Symbol('reset');\n", "import {\n FieldProps,\n FormContextType,\n getSchemaType,\n getTemplate,\n getUiOptions,\n isFormDataAvailable,\n optionalControlsId,\n OptionalDataControlsTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\n\n/** The `OptionalDataControlsField` component is used to render the optional data controls for the field associated\n * with the given props.\n *\n * @param props - The `FieldProps` for this template\n */\nexport default function OptionalDataControlsField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const {\n schema,\n uiSchema = {},\n formData,\n disabled = false,\n readonly = false,\n onChange,\n errorSchema,\n fieldPathId,\n registry,\n } = props;\n\n const { globalUiOptions = {}, schemaUtils, translateString } = registry;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const OptionalDataControlsTemplate = getTemplate<'OptionalDataControlsTemplate', T, S, F>(\n 'OptionalDataControlsTemplate',\n registry,\n uiOptions,\n );\n const hasFormData = isFormDataAvailable<T>(formData);\n let id: string;\n let label: string | undefined;\n let onAddClick: OptionalDataControlsTemplateProps['onAddClick'];\n let onRemoveClick: OptionalDataControlsTemplateProps['onRemoveClick'];\n if (disabled || readonly) {\n id = optionalControlsId(fieldPathId, 'Msg');\n label = hasFormData ? undefined : translateString(TranslatableString.OptionalObjectEmptyMsg);\n } else {\n const labelEnum = hasFormData ? TranslatableString.OptionalObjectRemove : TranslatableString.OptionalObjectAdd;\n label = translateString(labelEnum);\n if (hasFormData) {\n id = optionalControlsId(fieldPathId, 'Remove');\n onRemoveClick = () => onChange(undefined as T, fieldPathId.path, errorSchema);\n } else {\n id = optionalControlsId(fieldPathId, 'Add');\n onAddClick = () => {\n // If it has form data, store an empty object, otherwise get the default form state and use it\n let newFormData: unknown = schemaUtils.getDefaultFormState(schema, formData, 'excludeObjectChildren');\n if (newFormData === undefined) {\n // If new form data ended up being undefined, and we have pushed the add button we need to actually add data\n newFormData = getSchemaType<S>(schema) === 'array' ? [] : {};\n }\n onChange(newFormData as T, fieldPathId.path, errorSchema);\n };\n }\n }\n return (\n label && (\n <OptionalDataControlsTemplate\n id={id}\n registry={registry}\n schema={schema}\n uiSchema={uiSchema}\n label={label}\n onAddClick={onAddClick}\n onRemoveClick={onRemoveClick}\n />\n )\n );\n}\n", "import { useCallback, Component, ComponentType } from 'react';\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n ANY_OF_KEY,\n descriptionId,\n ErrorSchema,\n Field,\n FieldPathId,\n FieldPathList,\n FieldProps,\n FieldTemplateProps,\n FormContextType,\n getSchemaType,\n getTemplate,\n getUiOptions,\n ID_KEY,\n isFormDataAvailable,\n ONE_OF_KEY,\n Registry,\n RJSFSchema,\n shouldRender,\n shouldRenderOptionalField,\n StrictRJSFSchema,\n toFieldPathId,\n UI_OPTIONS_KEY,\n UIOptionsType,\n} from '@rjsf/utils';\nimport isObject from 'lodash/isObject';\nimport omit from 'lodash/omit';\n\n/** The map of component type to FieldName */\nconst COMPONENT_TYPES: { [key: string]: string } = {\n array: 'ArrayField',\n boolean: 'BooleanField',\n integer: 'NumberField',\n number: 'NumberField',\n object: 'ObjectField',\n string: 'StringField',\n null: 'NullField',\n};\n\n/** Computes and returns which `Field` implementation to return in order to render the field represented by the\n * `schema`. The `uiOptions` are used to alter what potential `Field` implementation is actually returned. If no\n * appropriate `Field` implementation can be found then a wrapper around `UnsupportedFieldTemplate` is used.\n *\n * @param schema - The schema from which to obtain the type\n * @param uiOptions - The UI Options that may affect the component decision\n * @param registry - The registry from which fields and templates are obtained\n * @returns - The `Field` component that is used to render the actual field data\n */\nfunction getFieldComponent<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n schema: S,\n uiOptions: UIOptionsType<T, S, F>,\n registry: Registry<T, S, F>,\n): ComponentType<FieldProps<T, S, F>> {\n const field = uiOptions.field;\n const { fields } = registry;\n if (typeof field === 'function') {\n return field;\n }\n if (typeof field === 'string' && field in fields) {\n return fields[field] as ComponentType<FieldProps<T, S, F>>;\n }\n\n const schemaType = getSchemaType(schema);\n const type: string = Array.isArray(schemaType) ? schemaType[0] : schemaType || '';\n\n const schemaId = schema.$id;\n\n let componentName = COMPONENT_TYPES[type];\n if (schemaId && schemaId in fields) {\n componentName = schemaId;\n }\n\n // If the type is not defined and the schema uses 'anyOf' or 'oneOf', don't\n // render a field and let the MultiSchemaField component handle the form display\n if (!componentName && (schema.anyOf || schema.oneOf)) {\n return () => null;\n }\n\n return componentName in fields ? fields[componentName] : fields['FallbackField'];\n}\n\n/** The `SchemaFieldRender` component is the work-horse of react-jsonschema-form, determining what kind of real field to\n * render based on the `schema`, `uiSchema` and all the other props. It also deals with rendering the `anyOf` and\n * `oneOf` fields.\n *\n * @param props - The `FieldProps` for this component\n */\nfunction SchemaFieldRender<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema: _schema,\n fieldPathId,\n uiSchema,\n formData,\n errorSchema,\n name,\n onChange,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n required = false,\n registry,\n wasPropertyKeyModified = false,\n } = props;\n const { schemaUtils, globalFormOptions, globalUiOptions, fields } = registry;\n const { AnyOfField: _AnyOfField, OneOfField: _OneOfField } = fields;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n const FieldTemplate = getTemplate<'FieldTemplate', T, S, F>('FieldTemplate', registry, uiOptions);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n uiOptions,\n );\n const FieldHelpTemplate = getTemplate<'FieldHelpTemplate', T, S, F>('FieldHelpTemplate', registry, uiOptions);\n const FieldErrorTemplate = getTemplate<'FieldErrorTemplate', T, S, F>('FieldErrorTemplate', registry, uiOptions);\n const schema = schemaUtils.retrieveSchema(_schema, formData);\n const fieldId = fieldPathId[ID_KEY];\n\n /** Intermediary `onChange` handler for field components that will inject the `id` of the current field into the\n * `onChange` chain if it is not already being provided from a deeper level in the hierarchy\n */\n const handleFieldComponentChange = useCallback(\n (formData: T | undefined, path: FieldPathList, newErrorSchema?: ErrorSchema<T>, id?: string) => {\n const theId = id || fieldId;\n return onChange(formData, path, newErrorSchema, theId);\n },\n [fieldId, onChange],\n );\n\n const FieldComponent = getFieldComponent<T, S, F>(schema, uiOptions, registry);\n const disabled = Boolean(uiOptions.disabled ?? props.disabled);\n const readonly = Boolean(uiOptions.readonly ?? (props.readonly || props.schema.readOnly || schema.readOnly));\n const uiSchemaHideError = uiOptions.hideError;\n // Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children\n const hideError = uiSchemaHideError === undefined ? props.hideError : Boolean(uiSchemaHideError);\n const autofocus = Boolean(uiOptions.autofocus ?? props.autofocus);\n if (Object.keys(schema).length === 0) {\n return null;\n }\n\n let displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n\n /** If the schema `anyOf` or 'oneOf' can be rendered as a select control, don't render the selection and let\n * `StringField` component handle rendering unless there is a field override and that field replaces the any or one of\n */\n const isReplacingAnyOrOneOf = uiOptions.field && uiOptions.fieldReplacesAnyOrOneOf === true;\n let XxxOfField: Field<T, S, F> | undefined;\n let XxxOfOptions: S[] | undefined;\n // When rendering the `XxxOfField` we'll need to change the fieldPathId of the main component, remembering the\n // fieldPathId of the children for the ObjectField and ArrayField\n let fieldPathIdProps: { fieldPathId: FieldPathId; childFieldPathId?: FieldPathId } = { fieldPathId };\n if ((ANY_OF_KEY in schema || ONE_OF_KEY in schema) && !isReplacingAnyOrOneOf && !schemaUtils.isSelect(schema)) {\n if (schema[ANY_OF_KEY]) {\n XxxOfField = _AnyOfField;\n XxxOfOptions = schema[ANY_OF_KEY].map((_schema) =>\n schemaUtils.retrieveSchema(isObject(_schema) ? (_schema as S) : ({} as S), formData),\n );\n } else if (schema[ONE_OF_KEY]) {\n XxxOfField = _OneOfField;\n XxxOfOptions = schema[ONE_OF_KEY].map((_schema) =>\n schemaUtils.retrieveSchema(isObject(_schema) ? (_schema as S) : ({} as S), formData),\n );\n }\n // When the anyOf/oneOf is an optional data control render AND it does not have form data, hide the label\n const isOptionalRender = shouldRenderOptionalField<T, S, F>(registry, schema, required, uiSchema);\n const hasFormData = isFormDataAvailable<T>(formData);\n displayLabel = displayLabel && (!isOptionalRender || hasFormData);\n fieldPathIdProps = {\n childFieldPathId: fieldPathId,\n // The main FieldComponent will add `XxxOf` onto the fieldPathId to avoid duplication with the rendering of the\n // same FieldComponent by the `XxxOfField`\n fieldPathId: toFieldPathId('XxxOf', globalFormOptions, fieldPathId),\n };\n }\n\n const { __errors, ...fieldErrorSchema } = errorSchema || {};\n // See #439: uiSchema: Don't pass consumed class names or style to child components\n const fieldUiSchema = omit(uiSchema, ['ui:classNames', 'classNames', 'ui:style']);\n if (UI_OPTIONS_KEY in fieldUiSchema) {\n fieldUiSchema[UI_OPTIONS_KEY] = omit(fieldUiSchema[UI_OPTIONS_KEY], ['classNames', 'style']);\n }\n\n const field = (\n <FieldComponent\n {...props}\n onChange={handleFieldComponentChange}\n {...fieldPathIdProps}\n schema={schema}\n uiSchema={fieldUiSchema}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n autofocus={autofocus}\n errorSchema={fieldErrorSchema as ErrorSchema}\n rawErrors={__errors}\n />\n );\n\n const id = fieldPathId[ID_KEY];\n\n // If this schema has a title defined, but the user has set a new key/label, retain their input.\n let label;\n if (wasPropertyKeyModified) {\n label = name;\n } else {\n label =\n ADDITIONAL_PROPERTY_FLAG in schema\n ? name\n : uiOptions.title || props.schema.title || schema.title || props.title || name;\n }\n\n const description = uiOptions.description || props.schema.description || schema.description || '';\n const help = uiOptions.help;\n const hidden = uiOptions.widget === 'hidden';\n\n const classNames = ['rjsf-field', `rjsf-field-${getSchemaType(schema)}`];\n if (!hideError && __errors && __errors.length > 0) {\n classNames.push('rjsf-field-error');\n }\n if (uiOptions.classNames) {\n classNames.push(uiOptions.classNames);\n }\n\n const helpComponent = (\n <FieldHelpTemplate\n help={help}\n fieldPathId={fieldPathId}\n schema={schema}\n uiSchema={uiSchema}\n hasErrors={!hideError && __errors && __errors.length > 0}\n registry={registry}\n />\n );\n /*\n * AnyOf/OneOf errors handled by child schema\n * unless it can be rendered as select control\n */\n const errorsComponent =\n hideError || (XxxOfField && !schemaUtils.isSelect(schema)) ? undefined : (\n <FieldErrorTemplate\n errors={__errors}\n errorSchema={errorSchema}\n fieldPathId={fieldPathId}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n const fieldProps: Omit<FieldTemplateProps<T, S, F>, 'children'> = {\n description: (\n <DescriptionFieldTemplate\n id={descriptionId(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n ),\n rawDescription: description,\n help: helpComponent,\n rawHelp: typeof help === 'string' ? help : undefined,\n errors: errorsComponent,\n rawErrors: hideError ? undefined : __errors,\n id,\n label,\n hidden,\n onChange,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n required,\n disabled,\n readonly,\n hideError,\n displayLabel,\n classNames: classNames.join(' ').trim(),\n style: uiOptions.style,\n formData,\n schema,\n uiSchema,\n registry,\n };\n\n return (\n <FieldTemplate {...fieldProps}>\n <>\n {field}\n {XxxOfField && (\n <XxxOfField\n name={name}\n disabled={disabled}\n readonly={readonly}\n hideError={hideError}\n errorSchema={errorSchema}\n formData={formData}\n fieldPathId={fieldPathId}\n onBlur={props.onBlur}\n onChange={props.onChange}\n onFocus={props.onFocus}\n options={XxxOfOptions}\n registry={registry}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n />\n )}\n </>\n </FieldTemplate>\n );\n}\n\n/** The `SchemaField` component determines whether it is necessary to rerender the component based on any props changes\n * and if so, calls the `SchemaFieldRender` component with the props.\n */\nclass SchemaField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> extends Component<\n FieldProps<T, S, F>\n> {\n shouldComponentUpdate(nextProps: Readonly<FieldProps<T, S, F>>) {\n const {\n registry: { globalFormOptions },\n } = this.props;\n const { experimental_componentUpdateStrategy = 'customDeep' } = globalFormOptions;\n\n return shouldRender(this, nextProps, this.state, experimental_componentUpdateStrategy);\n }\n\n render() {\n return <SchemaFieldRender<T, S, F> {...this.props} />;\n }\n}\n\nexport default SchemaField;\n", "import { useCallback } from 'react';\nimport {\n getWidget,\n getUiOptions,\n optionsList,\n hasWidget,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n ErrorSchema,\n} from '@rjsf/utils';\n\n/** The `StringField` component is used to render a schema field that represents a string type\n *\n * @param props - The `FieldProps` for this template\n */\nfunction StringField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const {\n schema,\n name,\n uiSchema,\n fieldPathId,\n formData,\n required,\n disabled = false,\n readonly = false,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n registry,\n rawErrors,\n hideError,\n } = props;\n const { title, format } = schema;\n const { widgets, schemaUtils, globalUiOptions } = registry;\n const enumOptions = schemaUtils.isSelect(schema) ? optionsList<T, S, F>(schema, uiSchema) : undefined;\n let defaultWidget = enumOptions ? 'select' : 'text';\n if (format && hasWidget<T, S, F>(schema, format, widgets)) {\n defaultWidget = format;\n }\n const { widget = defaultWidget, placeholder = '', title: uiTitle, ...options } = getUiOptions<T, S, F>(uiSchema);\n const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n const label = uiTitle ?? title ?? name;\n const Widget = getWidget<T, S, F>(schema, widget, widgets);\n const onWidgetChange = useCallback(\n (value: T | undefined, errorSchema?: ErrorSchema, id?: string) => {\n // String field change passes an empty path array to the parent field which adds the appropriate path\n return onChange(value, fieldPathId.path, errorSchema, id);\n },\n [onChange, fieldPathId],\n );\n return (\n <Widget\n options={{ ...options, enumOptions }}\n schema={schema}\n uiSchema={uiSchema}\n id={fieldPathId.$id}\n name={name}\n label={label}\n hideLabel={!displayLabel}\n hideError={hideError}\n value={formData}\n onChange={onWidgetChange}\n onBlur={onBlur}\n onFocus={onFocus}\n required={required}\n disabled={disabled}\n readonly={readonly}\n autofocus={autofocus}\n registry={registry}\n placeholder={placeholder}\n rawErrors={rawErrors}\n htmlName={fieldPathId.name}\n />\n );\n}\n\nexport default StringField;\n", "import { useEffect } from 'react';\nimport { FieldProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `NullField` component is used to render a field in the schema is null. It also ensures that the `formData` is\n * also set to null if it has no value.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction NullField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: FieldProps<T, S, F>,\n) {\n const { formData, onChange, fieldPathId } = props;\n useEffect(() => {\n if (formData === undefined) {\n onChange(null as unknown as T, fieldPathId.path);\n }\n }, [fieldPathId, formData, onChange]);\n\n return null;\n}\n\nexport default NullField;\n", "import { Field, FormContextType, RegistryFieldsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport ArrayField from './ArrayField';\nimport BooleanField from './BooleanField';\nimport FallbackField from './FallbackField';\nimport LayoutGridField from './LayoutGridField';\nimport LayoutHeaderField from './LayoutHeaderField';\nimport LayoutMultiSchemaField from './LayoutMultiSchemaField';\nimport MultiSchemaField from './MultiSchemaField';\nimport NumberField from './NumberField';\nimport ObjectField from './ObjectField';\nimport OptionalDataControlsField from './OptionalDataControlsField';\nimport SchemaField from './SchemaField';\nimport StringField from './StringField';\nimport NullField from './NullField';\n\nfunction fields<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryFieldsType<T, S, F> {\n return {\n AnyOfField: MultiSchemaField,\n ArrayField: ArrayField as unknown as Field<T, S, F>,\n // ArrayField falls back to SchemaField if ArraySchemaField is not defined, which it isn't by default\n BooleanField,\n FallbackField,\n LayoutGridField,\n LayoutHeaderField,\n LayoutMultiSchemaField,\n NumberField,\n ObjectField,\n OneOfField: MultiSchemaField,\n OptionalDataControlsField,\n SchemaField,\n StringField,\n NullField,\n };\n}\n\nexport default fields;\n", "import {\n descriptionId,\n getTemplate,\n getUiOptions,\n ArrayFieldDescriptionProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldDescriptionTemplate` component renders a `DescriptionFieldTemplate` with an `id` derived from\n * the `fieldPathId`.\n *\n * @param props - The `ArrayFieldDescriptionProps` for the component\n */\nexport default function ArrayFieldDescriptionTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldDescriptionProps<T, S, F>) {\n const { fieldPathId, description, registry, schema, uiSchema } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { label: displayLabel = true } = options;\n if (!description || !displayLabel) {\n return null;\n }\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n return (\n <DescriptionFieldTemplate\n id={descriptionId(fieldPathId)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n );\n}\n", "import { CSSProperties } from 'react';\nimport {\n ArrayFieldItemTemplateProps,\n FormContextType,\n getTemplate,\n getUiOptions,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.\n *\n * @param props - The `ArrayFieldItemTemplateProps` props for the component\n */\nexport default function ArrayFieldItemTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemTemplateProps<T, S, F>) {\n const { children, className, buttonsProps, hasToolbar, registry, uiSchema } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n const btnStyle: CSSProperties = {\n flex: 1,\n paddingLeft: 6,\n paddingRight: 6,\n fontWeight: 'bold',\n };\n return (\n <div className={className}>\n <div className={hasToolbar ? 'col-xs-9' : 'col-xs-12'}>{children}</div>\n {hasToolbar && (\n <div className='col-xs-3 array-item-toolbox'>\n <div\n className='btn-group'\n style={{\n display: 'flex',\n justifyContent: 'space-around',\n }}\n >\n <ArrayFieldItemButtonsTemplate {...buttonsProps} style={btnStyle} />\n </div>\n </div>\n )}\n </div>\n );\n}\n", "import {\n ArrayFieldItemButtonsTemplateProps,\n buttonId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplateItemButtons` component is the template used to render the buttons associate3d with items of\n * an array.\n *\n * @param props - The `ArrayFieldItemButtonsTemplateProps` props for the component\n */\nexport default function ArrayFieldItemButtonsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemButtonsTemplateProps<T, S, F>) {\n const {\n disabled,\n hasCopy,\n hasMoveDown,\n hasMoveUp,\n hasRemove,\n fieldPathId,\n onCopyItem,\n onRemoveItem,\n onMoveDownItem,\n onMoveUpItem,\n readonly,\n registry,\n uiSchema,\n } = props;\n const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;\n\n return (\n <>\n {(hasMoveUp || hasMoveDown) && (\n <MoveUpButton\n id={buttonId(fieldPathId, 'moveUp')}\n className='rjsf-array-item-move-up'\n disabled={disabled || readonly || !hasMoveUp}\n onClick={onMoveUpItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {(hasMoveUp || hasMoveDown) && (\n <MoveDownButton\n id={buttonId(fieldPathId, 'moveDown')}\n className='rjsf-array-item-move-down'\n disabled={disabled || readonly || !hasMoveDown}\n onClick={onMoveDownItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasCopy && (\n <CopyButton\n id={buttonId(fieldPathId, 'copy')}\n className='rjsf-array-item-copy'\n disabled={disabled || readonly}\n onClick={onCopyItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasRemove && (\n <RemoveButton\n id={buttonId(fieldPathId, 'remove')}\n className='rjsf-array-item-remove'\n disabled={disabled || readonly}\n onClick={onRemoveItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </>\n );\n}\n", "import {\n getTemplate,\n getUiOptions,\n ArrayFieldTemplateProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * @param props - The `ArrayFieldTemplateProps` props for the component\n */\nexport default function ArrayFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldTemplateProps<T, S, F>) {\n const {\n canAdd,\n className,\n disabled,\n fieldPathId,\n uiSchema,\n items,\n optionalDataControl,\n onAddClick,\n readonly,\n registry,\n required,\n schema,\n title,\n } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(\n 'ArrayFieldDescriptionTemplate',\n registry,\n uiOptions,\n );\n const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(\n 'ArrayFieldTitleTemplate',\n registry,\n uiOptions,\n );\n // Button templates are not overridden in the uiSchema\n const showOptionalDataControlInTitle = !readonly && !disabled;\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n return (\n <fieldset className={className} id={fieldPathId.$id}>\n <ArrayFieldTitleTemplate\n fieldPathId={fieldPathId}\n title={uiOptions.title || title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n <ArrayFieldDescriptionTemplate\n fieldPathId={fieldPathId}\n description={uiOptions.description || schema.description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n <div className='row array-item-list'>{items}</div>\n {canAdd && (\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-array-item-add'\n onClick={onAddClick}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </fieldset>\n );\n}\n", "import {\n getTemplate,\n getUiOptions,\n titleId,\n ArrayFieldTitleProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TemplatesType,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTitleTemplate` component renders a `TitleFieldTemplate` with an `id` derived from\n * the `fieldPathId`.\n *\n * @param props - The `ArrayFieldTitleProps` for the component\n */\nexport default function ArrayFieldTitleTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldTitleProps<T, S, F>) {\n const { fieldPathId, title, schema, uiSchema, required, registry, optionalDataControl } = props;\n const options = getUiOptions<T, S, F>(uiSchema, registry.globalUiOptions);\n const { label: displayLabel = true } = options;\n if (!title || !displayLabel) {\n return null;\n }\n const TitleFieldTemplate: TemplatesType<T, S, F>['TitleFieldTemplate'] = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n );\n return (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={optionalDataControl}\n />\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n BaseInputTemplateProps,\n examplesId,\n getInputProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `BaseInputTemplate` is the template to use to render the basic `<input>` component for the `core` theme.\n * It is used as the template for rendering many of the <input> based widgets that differ by `type` and callbacks only.\n * It can be customized/overridden for other themes or individual implementations as needed.\n *\n * @param props - The `WidgetProps` for this template\n */\nexport default function BaseInputTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: BaseInputTemplateProps<T, S, F>) {\n const {\n id,\n name, // remove this from ...rest\n htmlName,\n value,\n readonly,\n disabled,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n onChangeOverride,\n options,\n schema,\n uiSchema,\n registry,\n rawErrors,\n type,\n hideLabel, // remove this from ...rest\n hideError, // remove this from ...rest\n ...rest\n } = props;\n\n // Note: since React 15.2.0 we can't forward unknown element attributes, so we\n // exclude the \"options\" and \"schema\" ones here.\n if (!id) {\n console.log('No id for', props);\n throw new Error(`no id for props ${JSON.stringify(props)}`);\n }\n const inputProps = {\n ...rest,\n ...getInputProps<T, S, F>(schema, type, options),\n };\n\n let inputValue;\n if (inputProps.type === 'number' || inputProps.type === 'integer') {\n inputValue = value || value === 0 ? value : '';\n } else {\n inputValue = value == null ? '' : value;\n }\n\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options],\n );\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onBlur(id, target && target.value),\n [onBlur, id],\n );\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onFocus(id, target && target.value),\n [onFocus, id],\n );\n\n return (\n <>\n <input\n id={id}\n name={htmlName || id}\n className='form-control'\n readOnly={readonly}\n disabled={disabled}\n autoFocus={autofocus}\n value={inputValue}\n {...inputProps}\n list={schema.examples ? examplesId(id) : undefined}\n onChange={onChangeOverride || _onChange}\n onBlur={_onBlur}\n onFocus={_onFocus}\n aria-describedby={ariaDescribedByIds(id, !!schema.examples)}\n />\n {Array.isArray(schema.examples) && (\n <datalist key={`datalist_${id}`} id={examplesId(id)}>\n {(schema.examples as string[])\n .concat(schema.default && !schema.examples.includes(schema.default) ? ([schema.default] as string[]) : [])\n .map((example: any) => {\n return <option key={example} value={example} />;\n })}\n </datalist>\n )}\n </>\n );\n}\n", "import { getSubmitButtonOptions, FormContextType, RJSFSchema, StrictRJSFSchema, SubmitButtonProps } from '@rjsf/utils';\n\n/** The `SubmitButton` renders a button that represent the `Submit` action on a form\n */\nexport default function SubmitButton<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ uiSchema }: SubmitButtonProps<T, S, F>) {\n const { submitText, norender, props: submitButtonProps = {} } = getSubmitButtonOptions<T, S, F>(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div>\n <button type='submit' {...submitButtonProps} className={`btn btn-info ${submitButtonProps.className || ''}`}>\n {submitText}\n </button>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\n\nimport IconButton from './IconButton';\n\n/** The `AddButton` renders a button that represent the `Add` action on a form\n */\nexport default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n className,\n onClick,\n disabled,\n registry,\n}: IconButtonProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='row'>\n <p className={`col-xs-3 col-xs-offset-9 text-right ${className}`}>\n <IconButton\n id={id}\n iconType='info'\n icon='plus'\n className='btn-add col-xs-12'\n title={translateString(TranslatableString.AddButton)}\n onClick={onClick}\n disabled={disabled}\n registry={registry}\n />\n </p>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\n\nexport default function IconButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const { iconType = 'default', icon, className, uiSchema, registry, ...otherProps } = props;\n return (\n <button type='button' className={`btn btn-${iconType} ${className}`} {...otherProps}>\n <i className={`glyphicon glyphicon-${icon}`} />\n </button>\n );\n}\n\nexport function CopyButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.CopyButton)} {...props} icon='copy' />;\n}\n\nexport function MoveDownButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.MoveDownButton)} {...props} icon='arrow-down' />;\n}\n\nexport function MoveUpButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return <IconButton title={translateString(TranslatableString.MoveUpButton)} {...props} icon='arrow-up' />;\n}\n\nexport function RemoveButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <IconButton title={translateString(TranslatableString.RemoveButton)} {...props} iconType='danger' icon='remove' />\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport SubmitButton from './SubmitButton';\nimport AddButton from './AddButton';\nimport { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from './IconButton';\n\nfunction buttonTemplates<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): TemplatesType<T, S, F>['ButtonTemplates'] {\n return {\n SubmitButton,\n AddButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n };\n}\n\nexport default buttonTemplates;\n", "import { ReactElement } from 'react';\nimport {\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n UiSchema,\n getTestIds,\n getUiOptions,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\nconst TEST_IDS = getTestIds();\n\nexport interface RichDescriptionProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> {\n /** The description text for a field, potentially containing markdown */\n description: string | ReactElement;\n /** The uiSchema object for this base component */\n uiSchema?: UiSchema<T, S, F>;\n /** The `registry` object */\n registry: Registry<T, S, F>;\n}\n\n/** Renders the given `description` in the props as\n *\n * @param props - The `RichDescriptionProps` for this component\n */\nexport default function RichDescription<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ description, registry, uiSchema = {} }: RichDescriptionProps<T, S, F>) {\n const { globalUiOptions } = registry;\n const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n\n if (uiOptions.enableMarkdownInDescription && typeof description === 'string') {\n return (\n <Markdown options={{ disableParsingRawHTML: true }} data-testid={TEST_IDS.markdown}>\n {description}\n </Markdown>\n );\n }\n return description;\n}\n\nRichDescription.TEST_IDS = TEST_IDS;\n", "import { DescriptionFieldProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport RichDescription from '../RichDescription';\n\n/** The `DescriptionField` is the template to use to render the description of a field\n *\n * @param props - The `DescriptionFieldProps` for this component\n */\nexport default function DescriptionField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: DescriptionFieldProps<T, S, F>) {\n const { id, description, registry, uiSchema } = props;\n if (!description) {\n return null;\n }\n return (\n <div id={id} className='field-description'>\n <RichDescription description={description} registry={registry} uiSchema={uiSchema} />\n </div>\n );\n}\n", "import {\n ErrorListProps,\n FormContextType,\n RJSFValidationError,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\n\n/** The `ErrorList` component is the template that renders the all the errors associated with the fields in the `Form`\n *\n * @param props - The `ErrorListProps` for this component\n */\nexport default function ErrorList<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n errors,\n registry,\n}: ErrorListProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='panel panel-danger errors'>\n <div className='panel-heading'>\n <h3 className='panel-title'>{translateString(TranslatableString.ErrorsLabel)}</h3>\n </div>\n <ul className='list-group'>\n {errors.map((error: RJSFValidationError, i: number) => {\n return (\n <li key={i} className='list-group-item text-danger'>\n {error.stack}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n", "import { FallbackFieldTemplateProps, FormContextType, getTemplate, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/**\n * The `FallbackFieldTemplate` is used to render a field when no field matches. The field renders a type selector and\n * the schema field for the form data.\n */\nexport default function FallbackFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FallbackFieldTemplateProps<T, S, F>) {\n const { schema, registry, typeSelector, schemaField } = props;\n\n // By default, use the MultiSchemaFieldTemplate, which handles the same basic requirements.\n const MultiSchemaFieldTemplate = getTemplate<'MultiSchemaFieldTemplate', T, S, F>(\n 'MultiSchemaFieldTemplate',\n registry,\n );\n\n return (\n <MultiSchemaFieldTemplate\n selector={typeSelector}\n optionSchemaField={schemaField}\n schema={schema}\n registry={registry}\n />\n );\n}\n", "import {\n FieldTemplateProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n getTemplate,\n getUiOptions,\n} from '@rjsf/utils';\n\nimport Label from './Label';\n\n/** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field\n * content, (label, description, children, errors and help) inside of a `WrapIfAdditional` component.\n *\n * @param props - The `FieldTemplateProps` for this component\n */\nexport default function FieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldTemplateProps<T, S, F>) {\n const { id, label, children, errors, help, description, hidden, required, displayLabel, registry, uiSchema } = props;\n const uiOptions = getUiOptions(uiSchema);\n const WrapIfAdditionalTemplate = getTemplate<'WrapIfAdditionalTemplate', T, S, F>(\n 'WrapIfAdditionalTemplate',\n registry,\n uiOptions,\n );\n if (hidden) {\n return <div className='hidden'>{children}</div>;\n }\n const isCheckbox = uiOptions.widget === 'checkbox';\n return (\n <WrapIfAdditionalTemplate {...props}>\n {displayLabel && !isCheckbox && <Label label={label} required={required} id={id} />}\n {displayLabel && description ? description : null}\n {children}\n {errors}\n {help}\n </WrapIfAdditionalTemplate>\n );\n}\n", "const REQUIRED_FIELD_SYMBOL = '*';\n\nexport type LabelProps = {\n /** The label for the field */\n label?: string;\n /** A boolean value stating if the field is required */\n required?: boolean;\n /** The id of the input field being labeled */\n id?: string;\n};\n\n/** Renders a label for a field\n *\n * @param props - The `LabelProps` for this component\n */\nexport default function Label(props: LabelProps) {\n const { label, required, id } = props;\n if (!label) {\n return null;\n }\n return (\n <label className='control-label' htmlFor={id}>\n {label}\n {required && <span className='required'>{REQUIRED_FIELD_SYMBOL}</span>}\n </label>\n );\n}\n", "import FieldTemplate from './FieldTemplate';\n\nexport default FieldTemplate;\n", "import { errorId, FieldErrorProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `FieldErrorTemplate` component renders the errors local to the particular field\n *\n * @param props - The `FieldErrorProps` for the errors being rendered\n */\nexport default function FieldErrorTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldErrorProps<T, S, F>) {\n const { errors = [], fieldPathId } = props;\n if (errors.length === 0) {\n return null;\n }\n const id = errorId(fieldPathId);\n\n return (\n <div>\n <ul id={id} className='error-detail bs-callout bs-callout-info'>\n {errors\n .filter((elem) => !!elem)\n .map((error, index: number) => {\n return (\n <li className='text-danger' key={index}>\n {error}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n", "import { helpId, FieldHelpProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `FieldHelpTemplate` component renders any help desired for a field\n *\n * @param props - The `FieldHelpProps` to be rendered\n */\nexport default function FieldHelpTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldHelpProps<T, S, F>) {\n const { fieldPathId, help } = props;\n if (!help) {\n return null;\n }\n const id = helpId(fieldPathId);\n if (typeof help === 'string') {\n return (\n <p id={id} className='help-block'>\n {help}\n </p>\n );\n }\n return (\n <div id={id} className='help-block'>\n {help}\n </div>\n );\n}\n", "import { GridTemplateProps } from '@rjsf/utils';\n\n/** Renders a `GridTemplate` for bootstrap 3, which is expecting the column information coming in via the `className`\n * prop. Also spreads all the other props provided by the user directly on the div.\n *\n * @param props - The GridTemplateProps, including the expected className for the bootstrap 3 grid behavior\n */\nexport default function GridTemplate(props: GridTemplateProps) {\n const { children, column, className, ...rest } = props;\n return (\n <div className={className} {...rest}>\n {children}\n </div>\n );\n}\n", "import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The `MultiSchemaFieldTemplate` component renders the layout for the MultiSchemaField, which supports choosing\n * a schema from a list of schemas defined using `anyOf` or `oneOf`.\n *\n * @param props - The `MultiSchemaFieldTemplate` to be rendered\n */\nexport default function MultiSchemaFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: MultiSchemaFieldTemplateProps<T, S, F>) {\n const { selector, optionSchemaField } = props;\n return (\n <div className='panel panel-default panel-body'>\n <div className='form-group'>{selector}</div>\n {optionSchemaField}\n </div>\n );\n}\n", "import {\n FormContextType,\n ObjectFieldTemplatePropertyType,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n canExpand,\n descriptionId,\n getTemplate,\n getUiOptions,\n titleId,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the\n * title and description if available. If the object is expandable, then an `AddButton` is also rendered after all\n * the properties.\n *\n * @param props - The `ObjectFieldTemplateProps` for this component\n */\nexport default function ObjectFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n className,\n description,\n disabled,\n formData,\n fieldPathId,\n onAddProperty,\n optionalDataControl,\n properties,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props;\n const options = getUiOptions<T, S, F>(uiSchema);\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, options);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n const showOptionalDataControlInTitle = !readonly && !disabled;\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n return (\n <fieldset className={className} id={fieldPathId.$id}>\n {title && (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n )}\n {description && (\n <DescriptionFieldTemplate\n id={descriptionId(fieldPathId)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n {properties.map((prop: ObjectFieldTemplatePropertyType) => prop.content)}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-object-property-expand'\n onClick={onAddProperty}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </fieldset>\n );\n}\n", "import { FormContextType, OptionalDataControlsTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport IconButton from './ButtonTemplates/IconButton';\n\n/** The OptionalDataControlsTemplate renders one of three different states. If\n * there is an `onAddClick()` function, it renders the \"Add\" button. If there is\n * an `onRemoveClick()` function, it renders the \"Remove\" button. Otherwise it\n * renders the \"No data found\" section. All of them use the `label` as either\n * the `title` of buttons or simply outputting it.\n *\n * @param props - The `OptionalDataControlsTemplateProps` for the template\n */\nexport default function OptionalDataControlsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: OptionalDataControlsTemplateProps<T, S, F>) {\n const { id, registry, label, onAddClick, onRemoveClick } = props;\n if (onAddClick) {\n return (\n <IconButton\n id={id}\n registry={registry}\n icon='plus'\n className='rjsf-add-optional-data btn-sm'\n onClick={onAddClick}\n title={label}\n />\n );\n } else if (onRemoveClick) {\n return (\n <IconButton\n id={id}\n registry={registry}\n icon='remove'\n className='rjsf-remove-optional-data btn-sm'\n onClick={onRemoveClick}\n title={label}\n />\n );\n }\n return <em id={id}>{label}</em>;\n}\n", "import { FormContextType, TitleFieldProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nconst REQUIRED_FIELD_SYMBOL = '*';\n\n/** The `TitleField` is the template to use to render the title of a field\n *\n * @param props - The `TitleFieldProps` for this component\n */\nexport default function TitleField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: TitleFieldProps<T, S, F>,\n) {\n const { id, title, required, optionalDataControl } = props;\n return (\n <legend id={id}>\n {title}\n {required && <span className='required'>{REQUIRED_FIELD_SYMBOL}</span>}\n {optionalDataControl && (\n <span className='pull-right' style={{ marginBottom: '2px' }}>\n {optionalDataControl}\n </span>\n )}\n </legend>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TranslatableString, UnsupportedFieldProps } from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\n/** The `UnsupportedField` component is used to render a field in the schema is one that is not supported by\n * react-jsonschema-form.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction UnsupportedField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: UnsupportedFieldProps<T, S, F>,\n) {\n const { schema, fieldPathId, reason, registry } = props;\n const { translateString } = registry;\n let translateEnum: TranslatableString = TranslatableString.UnsupportedField;\n const translateParams: string[] = [];\n if (fieldPathId && fieldPathId.$id) {\n translateEnum = TranslatableString.UnsupportedFieldWithId;\n translateParams.push(fieldPathId.$id);\n }\n if (reason) {\n translateEnum =\n translateEnum === TranslatableString.UnsupportedField\n ? TranslatableString.UnsupportedFieldWithReason\n : TranslatableString.UnsupportedFieldWithIdAndReason;\n translateParams.push(reason);\n }\n return (\n <div className='unsupported-field'>\n <p>\n <Markdown options={{ disableParsingRawHTML: true }}>{translateString(translateEnum, translateParams)}</Markdown>\n </p>\n {schema && <pre>{JSON.stringify(schema, null, 2)}</pre>}\n </div>\n );\n}\n\nexport default UnsupportedField;\n", "import {\n ADDITIONAL_PROPERTY_FLAG,\n buttonId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WrapIfAdditionalTemplateProps,\n} from '@rjsf/utils';\n\nimport Label from './FieldTemplate/Label';\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function WrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n id,\n classNames,\n style,\n disabled,\n label,\n onKeyRenameBlur,\n onRemoveProperty,\n readonly,\n required,\n schema,\n hideError,\n rawErrors,\n children,\n uiSchema,\n registry,\n } = props;\n const { templates, translateString } = registry;\n // Button templates are not overridden in the uiSchema\n const { RemoveButton } = templates.ButtonTemplates;\n const keyLabel = translateString(TranslatableString.KeyLabel, [label]);\n const additional = ADDITIONAL_PROPERTY_FLAG in schema;\n\n const classNamesList = ['form-group', classNames];\n if (!hideError && rawErrors && rawErrors.length > 0) {\n classNamesList.push('has-error has-danger');\n }\n const uiClassNames = classNamesList.join(' ').trim();\n\n if (!additional) {\n return (\n <div className={uiClassNames} style={style}>\n {children}\n </div>\n );\n }\n\n return (\n <div className={uiClassNames} style={style}>\n <div className='row'>\n <div className='col-xs-5 form-additional'>\n <div className='form-group'>\n <Label label={keyLabel} required={required} id={`${id}-key`} />\n <input\n className='form-control'\n type='text'\n id={`${id}-key`}\n onBlur={onKeyRenameBlur}\n defaultValue={label}\n />\n </div>\n </div>\n <div className='form-additional form-group col-xs-5'>{children}</div>\n <div className='col-xs-2'>\n <RemoveButton\n id={buttonId(id, 'remove')}\n className='rjsf-object-property-remove btn-block'\n style={{ border: '0' }}\n disabled={disabled || readonly}\n onClick={onRemoveProperty}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n </div>\n </div>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport ArrayFieldDescriptionTemplate from './ArrayFieldDescriptionTemplate';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate';\nimport ArrayFieldItemButtonsTemplate from './ArrayFieldItemButtonsTemplate';\nimport ArrayFieldTemplate from './ArrayFieldTemplate';\nimport ArrayFieldTitleTemplate from './ArrayFieldTitleTemplate';\nimport BaseInputTemplate from './BaseInputTemplate';\nimport ButtonTemplates from './ButtonTemplates';\nimport DescriptionField from './DescriptionField';\nimport ErrorList from './ErrorList';\nimport FallbackFieldTemplate from './FallbackFieldTemplate';\nimport FieldTemplate from './FieldTemplate';\nimport FieldErrorTemplate from './FieldErrorTemplate';\nimport FieldHelpTemplate from './FieldHelpTemplate';\nimport GridTemplate from './GridTemplate';\nimport MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate';\nimport ObjectFieldTemplate from './ObjectFieldTemplate';\nimport OptionalDataControlsTemplate from './OptionalDataControlsTemplate';\nimport TitleField from './TitleField';\nimport UnsupportedField from './UnsupportedField';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate';\n\nfunction templates<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(): TemplatesType<\n T,\n S,\n F\n> {\n return {\n ArrayFieldDescriptionTemplate,\n ArrayFieldItemTemplate,\n ArrayFieldItemButtonsTemplate,\n ArrayFieldTemplate,\n ArrayFieldTitleTemplate,\n ButtonTemplates: ButtonTemplates<T, S, F>(),\n BaseInputTemplate,\n DescriptionFieldTemplate: DescriptionField,\n ErrorListTemplate: ErrorList,\n FallbackFieldTemplate,\n FieldTemplate,\n FieldErrorTemplate,\n FieldHelpTemplate,\n GridTemplate,\n MultiSchemaFieldTemplate,\n ObjectFieldTemplate,\n OptionalDataControlsTemplate,\n TitleFieldTemplate: TitleField,\n UnsupportedFieldTemplate: UnsupportedField,\n WrapIfAdditionalTemplate,\n };\n}\n\nexport default templates;\n", "import {\n DateElement,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WidgetProps,\n useAltDateWidgetProps,\n} from '@rjsf/utils';\n\n/** The `AltDateWidget` is an alternative widget for rendering date properties.\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled = false, readonly = false, autofocus = false, options, id, name, registry, onBlur, onFocus } = props;\n const { translateString } = registry;\n const { elements, handleChange, handleClear, handleSetNow } = useAltDateWidgetProps(props);\n\n return (\n <ul className='list-inline'>\n {elements.map((elemProps, i) => (\n <li className='list-inline-item' key={i}>\n <DateElement\n rootId={id}\n name={name}\n select={handleChange}\n {...elemProps}\n disabled={disabled}\n readonly={readonly}\n registry={registry}\n onBlur={onBlur}\n onFocus={onFocus}\n autofocus={autofocus && i === 0}\n />\n </li>\n ))}\n {(options.hideNowButton !== 'undefined' ? !options.hideNowButton : true) && (\n <li className='list-inline-item'>\n <a href='#' className='btn btn-info btn-now' onClick={handleSetNow}>\n {translateString(TranslatableString.NowLabel)}\n </a>\n </li>\n )}\n {(options.hideClearButton !== 'undefined' ? !options.hideClearButton : true) && (\n <li className='list-inline-item'>\n <a href='#' className='btn btn-warning btn-clear' onClick={handleClear}>\n {translateString(TranslatableString.ClearLabel)}\n </a>\n </li>\n )}\n </ul>\n );\n}\n\nexport default AltDateWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.\n * It uses the AltDateWidget for rendering, with the `time` prop set to true by default.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateTimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n time = true,\n ...props\n}: WidgetProps<T, S, F>) {\n const { AltDateWidget } = props.registry.widgets;\n return <AltDateWidget time={time} {...props} />;\n}\n\nexport default AltDateTimeWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n descriptionId,\n getTemplate,\n labelValue,\n schemaRequiresTrueValue,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n getUiOptions,\n} from '@rjsf/utils';\n\n/** The `CheckBoxWidget` is a widget for rendering boolean properties.\n * It is typically used to represent a boolean.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n schema,\n uiSchema,\n options,\n id,\n value,\n disabled,\n readonly,\n label,\n hideLabel,\n autofocus = false,\n onBlur,\n onFocus,\n onChange,\n registry,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n // Because an unchecked checkbox will cause html5 validation to fail, only add\n // the \"required\" attribute if the field value must be \"true\", due to the\n // \"const\" or \"enum\" keywords\n const required = schemaRequiresTrueValue<S>(schema);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.checked),\n [onChange],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => onBlur(id, event.target.checked),\n [onBlur, id],\n );\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => onFocus(id, event.target.checked),\n [onFocus, id],\n );\n\n const uiOptions = getUiOptions(uiSchema);\n const isCheckboxWidget = uiOptions.widget === 'checkbox';\n const description = isCheckboxWidget ? undefined : (options.description ?? schema.description);\n return (\n <div className={`checkbox ${disabled || readonly ? 'disabled' : ''}`}>\n {!hideLabel && description && (\n <DescriptionFieldTemplate\n id={descriptionId(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n <label>\n <input\n type='checkbox'\n id={id}\n name={htmlName || id}\n checked={typeof value === 'undefined' ? false : value}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n {labelValue(<span>{label}</span>, hideLabel)}\n </label>\n </div>\n );\n}\n\nexport default CheckboxWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsDeselectValue,\n enumOptionsIsSelected,\n enumOptionsSelectValue,\n enumOptionsValueForIndex,\n optionId,\n FormContextType,\n WidgetProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `CheckboxesWidget` is a widget for rendering checkbox groups.\n * It is typically used to represent an array of enums.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxesWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n disabled,\n options: { inline = false, enumOptions, enumDisabled, emptyValue },\n value,\n autofocus = false,\n readonly,\n onChange,\n onBlur,\n onFocus,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const checkboxesValues = Array.isArray(value) ? value : [value];\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onBlur(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onBlur, id, enumOptions, emptyValue],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onFocus(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onFocus, id, enumOptions, emptyValue],\n );\n return (\n <div className='checkboxes' id={id}>\n {Array.isArray(enumOptions) &&\n enumOptions.map((option, index) => {\n const checked = enumOptionsIsSelected<S>(option.value, checkboxesValues);\n const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n onChange(enumOptionsSelectValue<S>(index, checkboxesValues, enumOptions));\n } else {\n onChange(enumOptionsDeselectValue<S>(index, checkboxesValues, enumOptions));\n }\n };\n\n const checkbox = (\n <span>\n <input\n type='checkbox'\n id={optionId(id, index)}\n name={htmlName || id}\n checked={checked}\n value={String(index)}\n disabled={disabled || itemDisabled || readonly}\n autoFocus={autofocus && index === 0}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n <span>{option.label}</span>\n </span>\n );\n return inline ? (\n <label key={index} className={`checkbox-inline ${disabledCls}`}>\n {checkbox}\n </label>\n ) : (\n <div key={index} className={`checkbox ${disabledCls}`}>\n <label>{checkbox}</label>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default CheckboxesWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `ColorWidget` component uses the `BaseInputTemplate` changing the type to `color` and disables it when it is\n * either disabled or readonly.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function ColorWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled, readonly, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='color' {...props} disabled={disabled || readonly} />;\n}\n", "import { useCallback } from 'react';\nimport { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `DateWidget` component uses the `BaseInputTemplate` changing the type to `date` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { onChange, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n const handleChange = useCallback((value: any) => onChange(value || undefined), [onChange]);\n\n return <BaseInputTemplate type='date' {...props} onChange={handleChange} />;\n}\n", "import {\n getTemplate,\n localToUTC,\n utcToLocal,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `DateTimeWidget` component uses the `BaseInputTemplate` changing the type to `datetime-local` and transforms\n * the value to/from utc using the appropriate utility functions.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateTimeWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { onChange, value, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return (\n <BaseInputTemplate\n type='datetime-local'\n {...props}\n value={utcToLocal(value)}\n onChange={(value) => onChange(localToUTC(value))}\n />\n );\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `EmailWidget` component uses the `BaseInputTemplate` changing the type to `email`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function EmailWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='email' {...props} />;\n}\n", "import { ChangeEvent } from 'react';\nimport {\n FileInfoType,\n FormContextType,\n getTemplate,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n UIOptionsType,\n useFileWidgetProps,\n WidgetProps,\n} from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n\nfunction FileInfoPreview<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n fileInfo,\n registry,\n}: {\n fileInfo: FileInfoType;\n registry: Registry<T, S, F>;\n}) {\n const { translateString } = registry;\n const { dataURL, type, name } = fileInfo;\n if (!dataURL) {\n return null;\n }\n\n // If type is JPEG or PNG then show image preview.\n // Originally, any type of image was supported, but this was changed into a whitelist\n // since SVGs and animated GIFs are also images, which are generally considered a security risk.\n if (['image/jpeg', 'image/png'].includes(type)) {\n return <img src={dataURL} style={{ maxWidth: '100%' }} className='file-preview' />;\n }\n\n // otherwise, let users download file\n\n return (\n <>\n {' '}\n <a download={`preview-${name}`} href={dataURL} className='file-download'>\n {translateString(TranslatableString.PreviewLabel)}\n </a>\n </>\n );\n}\n\nfunction FilesInfo<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n filesInfo,\n registry,\n preview,\n onRemove,\n options,\n}: {\n filesInfo: FileInfoType[];\n registry: Registry<T, S, F>;\n preview?: boolean;\n onRemove: (index: number) => void;\n options: UIOptionsType<T, S, F>;\n}) {\n if (filesInfo.length === 0) {\n return null;\n }\n const { translateString } = registry;\n\n const { RemoveButton } = getTemplate<'ButtonTemplates', T, S, F>('ButtonTemplates', registry, options);\n\n return (\n <ul className='file-info'>\n {filesInfo.map((fileInfo, key) => {\n const { name, size, type } = fileInfo;\n const handleRemove = () => onRemove(key);\n return (\n <li key={key}>\n <Markdown>{translateString(TranslatableString.FilesInfo, [name, type, String(size)])}</Markdown>\n {preview && <FileInfoPreview<T, S, F> fileInfo={fileInfo} registry={registry} />}\n <RemoveButton onClick={handleRemove} registry={registry} />\n </li>\n );\n })}\n </ul>\n );\n}\n\n/**\n * The `FileWidget` is a widget for rendering file upload fields.\n * It is typically used with a string property with data-url format.\n */\nfunction FileWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { disabled, readonly, required, multiple, onChange, value, options, registry } = props;\n const { filesInfo, handleChange, handleRemove } = useFileWidgetProps(value, onChange, multiple);\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n\n const handleOnChangeEvent = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n handleChange(event.target.files);\n }\n };\n\n return (\n <div>\n <BaseInputTemplate\n {...props}\n disabled={disabled || readonly}\n type='file'\n required={value ? false : required} // this turns off HTML required validation when a value exists\n onChangeOverride={handleOnChangeEvent}\n value=''\n accept={options.accept ? String(options.accept) : undefined}\n />\n <FilesInfo<T, S, F>\n filesInfo={filesInfo}\n onRemove={handleRemove}\n registry={registry}\n preview={options.filePreview}\n options={options}\n />\n </div>\n );\n}\n\nexport default FileWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `HiddenWidget` is a widget for rendering a hidden input field.\n * It is typically used by setting type to \"hidden\".\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction HiddenWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n value,\n htmlName,\n}: WidgetProps<T, S, F>) {\n return <input type='hidden' id={id} name={htmlName || id} value={typeof value === 'undefined' ? '' : value} />;\n}\n\nexport default HiddenWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `PasswordWidget` component uses the `BaseInputTemplate` changing the type to `password`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function PasswordWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='password' {...props} />;\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsIsSelected,\n enumOptionsValueForIndex,\n optionId,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `RadioWidget` is a widget for rendering a radio group.\n * It is typically used with a string property constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction RadioWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n options,\n value,\n required,\n disabled,\n readonly,\n autofocus = false,\n onBlur,\n onFocus,\n onChange,\n id,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled, inline, emptyValue } = options;\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onBlur(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onBlur, enumOptions, emptyValue, id],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) =>\n onFocus(id, enumOptionsValueForIndex<S>(target && target.value, enumOptions, emptyValue)),\n [onFocus, enumOptions, emptyValue, id],\n );\n\n return (\n <div className='field-radio-group' id={id} role='radiogroup'>\n {Array.isArray(enumOptions) &&\n enumOptions.map((option, i) => {\n const checked = enumOptionsIsSelected<S>(option.value, value);\n const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n\n const handleChange = () => onChange(option.value);\n\n const radio = (\n <span>\n <input\n type='radio'\n id={optionId(id, i)}\n checked={checked}\n name={htmlName || id}\n required={required}\n value={String(i)}\n disabled={disabled || itemDisabled || readonly}\n autoFocus={autofocus && i === 0}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds(id)}\n />\n <span>{option.label}</span>\n </span>\n );\n\n return inline ? (\n <label key={i} className={`radio-inline ${disabledCls}`}>\n {radio}\n </label>\n ) : (\n <div key={i} className={`radio ${disabledCls}`}>\n <label>{radio}</label>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default RadioWidget;\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result\n * in a div, with the value along side it.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RangeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const {\n value,\n registry: {\n templates: { BaseInputTemplate },\n },\n } = props;\n return (\n <div className='field-range-wrapper'>\n <BaseInputTemplate type='range' {...props} />\n <span className='range-view'>{value}</span>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RatingWidget` component renders a star or heart rating input\n *\n * Features:\n * - Configurable number of stars/hearts (1-5) with default of 5\n * - Supports different shapes (star, heart)\n * - Supports minimum and maximum values from schema\n * - Handles required, disabled, and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses Unicode characters for better visual representation\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RatingWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onFocus,\n onBlur,\n schema,\n options,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { stars = 5, shape = 'star' } = options;\n\n // Use schema.maximum if provided, otherwise use stars option (limited to 1-5)\n const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);\n const min = schema.minimum || 0;\n\n /** Handles clicking on a star to set the rating */\n const handleStarClick = useCallback(\n (starValue: number) => {\n if (!disabled && !readonly) {\n onChange(starValue);\n }\n },\n [onChange, disabled, readonly],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLSpanElement>) => {\n if (onFocus) {\n // Get the star value from the data attribute\n const starValue = Number((event.target as HTMLElement).dataset.value);\n onFocus(id, starValue);\n }\n },\n [onFocus, id],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLSpanElement>) => {\n if (onBlur) {\n // Get the star value from the data attribute\n const starValue = Number((event.target as HTMLElement).dataset.value);\n onBlur(id, starValue);\n }\n },\n [onBlur, id],\n );\n\n // Get the appropriate Unicode character based on shape option\n const getSymbol = (isFilled: boolean): string => {\n if (shape === 'heart') {\n return isFilled ? '\u2665' : '\u2661';\n }\n return isFilled ? '\u2605' : '\u2606';\n };\n\n return (\n <>\n <div\n className='rating-widget'\n style={{\n display: 'inline-flex',\n fontSize: '1.5rem',\n cursor: disabled || readonly ? 'default' : 'pointer',\n }}\n >\n {[...Array(numStars)].map((_, index) => {\n const starValue = min + index;\n const isFilled = starValue <= value;\n\n return (\n <span\n key={index}\n onClick={() => handleStarClick(starValue)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n data-value={starValue}\n tabIndex={disabled || readonly ? -1 : 0}\n role='radio'\n aria-checked={starValue === value}\n aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}\n style={{\n color: isFilled ? '#FFD700' : '#ccc',\n padding: '0 0.2rem',\n transition: 'color 0.2s',\n userSelect: 'none',\n }}\n >\n {getSymbol(isFilled)}\n </span>\n );\n })}\n <input\n type='hidden'\n id={id}\n name={htmlName || id}\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n aria-hidden='true'\n />\n </div>\n </>\n );\n}\n", "import { ChangeEvent, FocusEvent, SyntheticEvent, useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsIndexForValue,\n enumOptionsValueForIndex,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\nfunction getValue(event: SyntheticEvent<HTMLSelectElement>, multiple: boolean) {\n if (multiple) {\n return Array.from((event.target as HTMLSelectElement).options)\n .slice()\n .filter((o) => o.selected)\n .map((o) => o.value);\n }\n return (event.target as HTMLSelectElement).value;\n}\n\n/** The `SelectWidget` is a widget for rendering dropdowns.\n * It is typically used with string properties constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction SelectWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n schema,\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n multiple = false,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled, emptyValue: optEmptyVal } = options;\n const emptyValue = multiple ? [] : '';\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onFocus(id, enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onFocus, id, multiple, enumOptions, optEmptyVal],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onBlur(id, enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onBlur, id, multiple, enumOptions, optEmptyVal],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLSelectElement>) => {\n const newValue = getValue(event, multiple);\n return onChange(enumOptionsValueForIndex<S>(newValue, enumOptions, optEmptyVal));\n },\n [onChange, multiple, enumOptions, optEmptyVal],\n );\n\n const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);\n const showPlaceholderOption = !multiple && schema.default === undefined;\n\n return (\n <select\n id={id}\n name={htmlName || id}\n multiple={multiple}\n role='combobox'\n className='form-control'\n value={typeof selectedIndexes === 'undefined' ? emptyValue : selectedIndexes}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={handleChange}\n aria-describedby={ariaDescribedByIds(id)}\n >\n {showPlaceholderOption && <option value=''>{placeholder}</option>}\n {Array.isArray(enumOptions) &&\n enumOptions.map(({ value, label }, i) => {\n const disabled = enumDisabled && enumDisabled.indexOf(value) !== -1;\n return (\n <option key={i} value={String(i)} disabled={disabled}>\n {label}\n </option>\n );\n })}\n </select>\n );\n}\n\nexport default SelectWidget;\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport { ariaDescribedByIds, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TextareaWidget` is a widget for rendering input fields as textarea.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction TextareaWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n options = {},\n placeholder,\n value,\n required,\n disabled,\n readonly,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n htmlName,\n}: WidgetProps<T, S, F>) {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLTextAreaElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options.emptyValue],\n );\n\n const handleBlur = useCallback(\n ({ target }: FocusEvent<HTMLTextAreaElement>) => onBlur(id, target && target.value),\n [onBlur, id],\n );\n\n const handleFocus = useCallback(\n ({ target }: FocusEvent<HTMLTextAreaElement>) => onFocus(id, target && target.value),\n [id, onFocus],\n );\n\n return (\n <textarea\n id={id}\n name={htmlName || id}\n className='form-control'\n value={value ? value : ''}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n rows={options.rows}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={handleChange}\n aria-describedby={ariaDescribedByIds(id)}\n />\n );\n}\n\nTextareaWidget.defaultProps = {\n autofocus: false,\n options: {},\n};\n\nexport default TextareaWidget;\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TextWidget` component uses the `BaseInputTemplate`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TextWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate {...props} />;\n}\n", "import { useCallback } from 'react';\nimport { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `TimeWidget` component uses the `BaseInputTemplate` changing the type to `time` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { onChange, options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n const handleChange = useCallback((value: any) => onChange(value ? `${value}:00` : undefined), [onChange]);\n\n return <BaseInputTemplate type='time' {...props} onChange={handleChange} />;\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `URLWidget` component uses the `BaseInputTemplate` changing the type to `url`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function URLWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='url' {...props} />;\n}\n", "import { getTemplate, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `UpDownWidget` component uses the `BaseInputTemplate` changing the type to `number`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function UpDownWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { options, registry } = props;\n const BaseInputTemplate = getTemplate<'BaseInputTemplate', T, S, F>('BaseInputTemplate', registry, options);\n return <BaseInputTemplate type='number' {...props} />;\n}\n", "import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport AltDateWidget from './AltDateWidget';\nimport AltDateTimeWidget from './AltDateTimeWidget';\nimport CheckboxWidget from './CheckboxWidget';\nimport CheckboxesWidget from './CheckboxesWidget';\nimport ColorWidget from './ColorWidget';\nimport DateWidget from './DateWidget';\nimport DateTimeWidget from './DateTimeWidget';\nimport EmailWidget from './EmailWidget';\nimport FileWidget from './FileWidget';\nimport HiddenWidget from './HiddenWidget';\nimport PasswordWidget from './PasswordWidget';\nimport RadioWidget from './RadioWidget';\nimport RangeWidget from './RangeWidget';\nimport RatingWidget from './RatingWidget';\nimport SelectWidget from './SelectWidget';\nimport TextareaWidget from './TextareaWidget';\nimport TextWidget from './TextWidget';\nimport TimeWidget from './TimeWidget';\nimport URLWidget from './URLWidget';\nimport UpDownWidget from './UpDownWidget';\n\nfunction widgets<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryWidgetsType<T, S, F> {\n return {\n AltDateWidget,\n AltDateTimeWidget,\n CheckboxWidget,\n CheckboxesWidget,\n ColorWidget,\n DateWidget,\n DateTimeWidget,\n EmailWidget,\n FileWidget,\n HiddenWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextWidget,\n TextareaWidget,\n TimeWidget,\n UpDownWidget,\n URLWidget,\n };\n}\n\nexport default widgets;\n", "import { ComponentType, ForwardedRef, forwardRef } from 'react';\nimport Form, { FormProps } from './components/Form';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\n/** The properties for the `withTheme` function, essentially a subset of properties from the `FormProps` that can be\n * overridden while creating a theme\n */\nexport type ThemeProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> = Pick<\n FormProps<T, S, F>,\n 'fields' | 'templates' | 'widgets' | '_internalFormWrapper'\n>;\n\n/** A Higher-Order component that creates a wrapper around a `Form` with the overrides from the `WithThemeProps` */\nexport default function withTheme<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n themeProps: ThemeProps<T, S, F>,\n): ComponentType<FormProps<T, S, F>> {\n // @ts-expect-error TS2322 because the latest types complain about LegacyRef's string form not working with Form\n return forwardRef<Form<T, S, F>, FormProps<T, S, F>>(\n ({ fields, widgets, templates, ...directProps }: FormProps<T, S, F>, ref: ForwardedRef<Form<T, S, F>>) => {\n fields = { ...themeProps?.fields, ...fields };\n widgets = { ...themeProps?.widgets, ...widgets };\n templates = {\n ...themeProps?.templates,\n ...templates,\n ButtonTemplates: {\n ...themeProps?.templates?.ButtonTemplates,\n ...templates?.ButtonTemplates,\n },\n };\n\n return (\n <Form<T, S, F>\n {...themeProps}\n {...directProps}\n fields={fields}\n widgets={widgets}\n templates={templates}\n ref={ref}\n />\n );\n },\n );\n}\n", "import {\n DEFAULT_ID_PREFIX,\n DEFAULT_ID_SEPARATOR,\n createSchemaUtils,\n englishStringTranslator,\n Registry,\n} from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport getDefaultRegistry from './getDefaultRegistry';\n\n/** Use for react testing library tests where we directly test the component rather than testing inside a Form\n */\nexport default function getTestRegistry(\n rootSchema: Registry['rootSchema'],\n fields: Registry['fields'] = {},\n templates: Partial<Registry['templates']> = {},\n widgets: Registry['widgets'] = {},\n formContext: Registry['formContext'] = {},\n globalFormOptions: Registry['globalFormOptions'] = {\n idPrefix: DEFAULT_ID_PREFIX,\n idSeparator: DEFAULT_ID_SEPARATOR,\n useFallbackUiForUnsupportedType: false,\n },\n): Registry {\n const defaults = getDefaultRegistry();\n const schemaUtils = createSchemaUtils(validator, rootSchema);\n return {\n fields: { ...defaults.fields, ...fields },\n templates: { ...defaults.templates, ...templates },\n widgets: { ...defaults.widgets, ...widgets },\n formContext,\n rootSchema,\n schemaUtils,\n translateString: englishStringTranslator,\n globalFormOptions,\n };\n}\n", "import Form, { FormProps, FormState, IChangeEvent } from './components/Form';\nimport RichDescription, { RichDescriptionProps } from './components/RichDescription';\nimport withTheme, { ThemeProps } from './withTheme';\nimport getDefaultRegistry from './getDefaultRegistry';\nimport getTestRegistry from './getTestRegistry';\n\nexport type { FormProps, FormState, IChangeEvent, ThemeProps, RichDescriptionProps };\n\nexport { withTheme, getDefaultRegistry, getTestRegistry, RichDescription };\nexport default Form;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Component", "deepEquals", "getTemplate", "getUiOptions", "isObject", "shouldRender", "toFieldPathId", "UI_GLOBAL_OPTIONS_KEY", "UI_OPTIONS_KEY", "DEFAULT_ID_SEPARATOR", "DEFAULT_ID_PREFIX", "ERRORS_KEY", "ID_KEY", "widgets", "SchemaField", "ArrayFieldItemTemplate", "has", "fields", "OptionalDataControlsField", "newHash", "useCallback", "getWidget", "getUiOptions", "optionsList", "TranslatableString", "isObject", "jsx", "widgets", "getTemplate", "getUiOptions", "hashObject", "toFieldPathId", "TranslatableString", "useDeepCompareMemo", "useMemo", "useState", "jsx", "fields", "FallbackFieldTemplate", "SchemaField", "getTemplate", "getUiOptions", "hashObject", "ID_KEY", "toFieldPathId", "ITEMS_KEY", "useDeepCompareMemo", "isObject", "set", "jsx", "set", "getUiOptions", "ITEMS_KEY", "ID_KEY", "toFieldPathId", "isRequired", "name", "jsx", "hashObject", "GridTemplate", "getTemplate", "fields", "SchemaField", "LayoutMultiSchemaField", "useDeepCompareMemo", "Field", "isObject", "getTemplate", "getUiOptions", "jsx", "useState", "ANY_OF_KEY", "getDiscriminatorFieldFromSchema", "hashObject", "ID_KEY", "ONE_OF_KEY", "optionsList", "PROPERTIES_KEY", "getTemplate", "getUiOptions", "getWidget", "get", "has", "isEmpty", "set", "jsx", "widgets", "FieldErrorTemplate", "FieldTemplate", "get", "isEmpty", "omit", "ANY_OF_KEY", "ERRORS_KEY", "getDiscriminatorFieldFromSchema", "getTemplate", "getUiOptions", "getWidget", "isFormDataAvailable", "ONE_OF_KEY", "shouldRenderOptionalField", "TranslatableString", "jsx", "widgets", "fields", "MultiSchemaFieldTemplate", "required", "useState", "useCallback", "jsx", "StringField", "value", "useCallback", "useState", "ANY_OF_KEY", "getTemplate", "getUiOptions", "isFormDataAvailable", "shouldRenderOptionalField", "toFieldPathId", "useDeepCompareMemo", "ONE_OF_KEY", "PROPERTIES_KEY", "TranslatableString", "get", "has", "isObject", "set", "jsx", "TranslatableString", "useState", "fields", "SchemaField", "useDeepCompareMemo", "toFieldPathId", "useCallback", "OptionalDataControlsField", "getUiOptions", "shouldRenderOptionalField", "isFormDataAvailable", "formData", "has", "translateString", "set", "isObject", "schemaUtils", "ANY_OF_KEY", "ONE_OF_KEY", "newKey", "getTemplate", "name", "PROPERTIES_KEY", "get", "getTemplate", "getUiOptions", "isFormDataAvailable", "TranslatableString", "jsx", "OptionalDataControlsTemplate", "useCallback", "Component", "ADDITIONAL_PROPERTY_FLAG", "ANY_OF_KEY", "getSchemaType", "getTemplate", "getUiOptions", "ID_KEY", "isFormDataAvailable", "ONE_OF_KEY", "shouldRenderOptionalField", "toFieldPathId", "UI_OPTIONS_KEY", "isObject", "omit", "jsx", "jsxs", "fields", "FieldTemplate", "FieldHelpTemplate", "FieldErrorTemplate", "formData", "id", "_schema", "useCallback", "getWidget", "getUiOptions", "optionsList", "jsx", "widgets", "useEffect", "descriptionId", "getTemplate", "getUiOptions", "jsx", "getTemplate", "getUiOptions", "jsx", "jsxs", "ArrayFieldItemButtonsTemplate", "Fragment", "jsx", "jsxs", "CopyButton", "MoveDownButton", "MoveUpButton", "RemoveButton", "getTemplate", "getUiOptions", "buttonId", "jsx", "jsxs", "ArrayFieldDescriptionTemplate", "ArrayFieldTitleTemplate", "AddButton", "getTemplate", "getUiOptions", "titleId", "jsx", "useCallback", "Fragment", "jsx", "jsxs", "value", "jsx", "TranslatableString", "TranslatableString", "jsx", "jsx", "TranslatableString", "getTestIds", "getUiOptions", "Markdown", "jsx", "jsx", "TranslatableString", "jsx", "jsxs", "getTemplate", "jsx", "MultiSchemaFieldTemplate", "getTemplate", "getUiOptions", "jsx", "jsxs", "jsx", "jsxs", "getUiOptions", "WrapIfAdditionalTemplate", "getTemplate", "jsx", "jsx", "jsx", "jsx", "jsxs", "descriptionId", "getTemplate", "getUiOptions", "titleId", "buttonId", "jsx", "jsxs", "AddButton", "jsx", "jsx", "jsxs", "REQUIRED_FIELD_SYMBOL", "TranslatableString", "Markdown", "jsx", "jsxs", "ADDITIONAL_PROPERTY_FLAG", "buttonId", "TranslatableString", "jsx", "jsxs", "templates", "RemoveButton", "TranslatableString", "ADDITIONAL_PROPERTY_FLAG", "buttonId", "TranslatableString", "jsx", "jsxs", "jsx", "AltDateWidget", "useCallback", "ariaDescribedByIds", "descriptionId", "getTemplate", "getUiOptions", "jsx", "jsxs", "useCallback", "ariaDescribedByIds", "jsx", "jsxs", "getTemplate", "jsx", "BaseInputTemplate", "useCallback", "getTemplate", "jsx", "BaseInputTemplate", "getTemplate", "jsx", "BaseInputTemplate", "value", "getTemplate", "jsx", "BaseInputTemplate", "getTemplate", "TranslatableString", "Markdown", "Fragment", "jsx", "jsxs", "RemoveButton", "BaseInputTemplate", "jsx", "getTemplate", "jsx", "BaseInputTemplate", "useCallback", "ariaDescribedByIds", "enumOptionsIsSelected", "enumOptionsValueForIndex", "optionId", "jsx", "jsxs", "jsx", "jsxs", "BaseInputTemplate", "useCallback", "Fragment", "jsx", "jsxs", "useCallback", "ariaDescribedByIds", "enumOptionsValueForIndex", "jsx", "jsxs", "value", "disabled", "useCallback", "ariaDescribedByIds", "jsx", "value", "getTemplate", "jsx", "BaseInputTemplate", "useCallback", "getTemplate", "jsx", "BaseInputTemplate", "getTemplate", "jsx", "BaseInputTemplate", "getTemplate", "jsx", "BaseInputTemplate", "jsx", "jsxs", "Component", "deepEquals", "validator", "ID_KEY", "toFieldPathId", "shouldRender", "getUiOptions", "getTemplate", "fields", "isObject", "errors", "ERRORS_KEY", "DEFAULT_ID_SEPARATOR", "DEFAULT_ID_PREFIX", "templates", "widgets", "UI_GLOBAL_OPTIONS_KEY", "SubmitButton", "UI_OPTIONS_KEY", "jsx", "fields", "widgets", "templates", "DEFAULT_ID_PREFIX", "DEFAULT_ID_SEPARATOR", "createSchemaUtils", "englishStringTranslator", "fields", "templates", "widgets", "DEFAULT_ID_PREFIX", "DEFAULT_ID_SEPARATOR", "createSchemaUtils", "englishStringTranslator"]
|
|
7
7
|
}
|