{
  "version": 3,
  "sources": ["../src/index.ts", "../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/SchemaExamples.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/RichHelp.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"],
  "sourcesContent": ["import Form, { FormProps, FormState, IChangeEvent } from './components/Form';\nimport RichDescription, { RichDescriptionProps } from './components/RichDescription';\nimport RichHelp, { RichHelpProps } from './components/RichHelp';\nimport SchemaExamples, { SchemaExamplesProps } from './components/SchemaExamples';\nimport withTheme, { ThemeProps } from './withTheme';\nimport getDefaultRegistry from './getDefaultRegistry';\nimport getTestRegistry from './getTestRegistry';\n\nexport type {\n  FormProps,\n  FormState,\n  IChangeEvent,\n  ThemeProps,\n  RichDescriptionProps,\n  RichHelpProps,\n  SchemaExamplesProps,\n};\n\nexport { withTheme, getDefaultRegistry, getTestRegistry, RichDescription, RichHelp, SchemaExamples };\nexport default Form;\n", "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  getChangedFields,\n  getTemplate,\n  getUiOptions,\n  isObject,\n  mergeObjects,\n  PathSchema,\n  StrictRJSFSchema,\n  Registry,\n  RegistryFieldsType,\n  RegistryWidgetsType,\n  RJSFSchema,\n  RJSFValidationError,\n  removeOptionalEmptyObjects,\n  SchemaUtilsType,\n  shouldRender,\n  SUBMIT_BTN_OPTIONS_KEY,\n  TemplatesType,\n  toErrorList,\n  toFieldPathId,\n  UiSchema,\n  UI_DEFINITIONS_KEY,\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  getUsedFormData,\n  getFieldNames,\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/** Represents a boolean option that is deprecated.\n * @deprecated - In a future major release, this type will be removed\n */\ntype DeprecatedBooleanOption = boolean;\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   * NOTE: In a future major release, the `boolean` options for this flag will be removed\n   */\n  liveValidate?: 'onChange' | 'onBlur' | DeprecatedBooleanOption;\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   * NOTE: In a future major release, the `boolean` options for this flag will be removed\n   */\n  liveOmit?: 'onChange' | 'onBlur' | DeprecatedBooleanOption;\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  /** If set to true, optional object properties whose fields are all empty (undefined, null, or empty string)\n   * will be automatically removed from formData. This prevents the scenario where interacting with fields inside\n   * an optional object \"activates\" it permanently, making the form unsubmittable when the optional object has\n   * required inner fields. This works independently of `omitExtraData`. Set to `false` by default.\n   */\n  removeEmptyOptionalObjects?: 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  /** Tracks the previous `extraErrors` prop reference so that `getDerivedStateFromProps` can detect changes */\n  _prevExtraErrors?: ErrorSchema<T>;\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<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  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  /** Flag to track when we're processing a user-initiated field change.\n   * This prevents componentDidUpdate from reverting oneOf/anyOf option switches.\n   */\n  private _isProcessingUserChange = false;\n\n  /** When the `extraErrors` prop changes, re-merges `schemaValidationErrors` + `extraErrors` + `customErrors` into\n   * state before render, ensuring the updated errors are visible immediately in a single render cycle.\n   *\n   * @param props - The current props\n   * @param state - The current state\n   * @returns Partial state with re-merged errors if `extraErrors` changed, or `null` if no update is needed\n   */\n  static getDerivedStateFromProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n    props: FormProps<T, S, F>,\n    state: FormState<T, S, F>,\n  ): Partial<FormState<T, S, F>> | null {\n    if (props.extraErrors !== state._prevExtraErrors) {\n      const baseErrors: ValidationData<T> = {\n        errors: state.schemaValidationErrors || [],\n        errorSchema: (state.schemaValidationErrorSchema || {}) as ErrorSchema<T>,\n      };\n      let { errors, errorSchema } = baseErrors;\n      if (props.extraErrors) {\n        ({ errors, errorSchema } = validationDataMerge<T>(baseErrors, props.extraErrors));\n      }\n      if (state.customErrors) {\n        ({ errors, errorSchema } = validationDataMerge<T>(\n          { errors, errorSchema },\n          state.customErrors.ErrorSchema,\n          true,\n        ));\n      }\n      return { _prevExtraErrors: props.extraErrors, errors, errorSchema };\n    }\n    return null;\n  }\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 = {\n      ...this.getStateFromProps(props, formData, undefined, undefined, undefined, true),\n      _prevExtraErrors: props.extraErrors,\n    };\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\n      // Prevent oneOf/anyOf option switches from reverting when getStateFromProps\n      // re-evaluates and produces stale formData.\n      const nextStateDiffersFromProps = !deepEquals(nextState.formData, this.props.formData);\n      const wasProcessingUserChange = this._isProcessingUserChange;\n      this._isProcessingUserChange = false;\n\n      if (wasProcessingUserChange && nextStateDiffersFromProps) {\n        // Skip - the user's option switch is already applied via processPendingChange\n        return;\n      }\n\n      if (nextStateDiffersFromProps && !deepEquals(nextState.formData, prevState.formData) && this.props.onChange) {\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\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({ errors, errorSchema }, 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   * @deprecated - To be removed as an exported `Form` function in a future release; there isn't a planned replacement\n   */\n  getUsedFormData = (formData: T | undefined, fields: string[]): T | undefined => {\n    return getUsedFormData(formData, fields);\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   * @deprecated - To be removed as an exported `Form` function in a future release; there isn't a planned replacement\n   */\n  getFieldNames = (pathSchema: PathSchema<T>, formData?: T): string[][] => {\n    return getFieldNames(pathSchema, formData);\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   * @deprecated - To be removed as an exported `Form` function in a future release, use `SchemaUtils.omitExtraData`\n   *               instead.\n   */\n  omitExtraData = (formData?: T): T | undefined => {\n    const { schema, schemaUtils } = this.state;\n    return schemaUtils.omitExtraData(schema, formData);\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    // Mark that we're processing a user-initiated change.\n    // This prevents componentDidUpdate from reverting oneOf/anyOf option switches.\n    this._isProcessingUserChange = true;\n    const { newValue, path, id } = this.pendingChanges[0];\n    const { newErrorSchema } = this.pendingChanges[0];\n    const { extraErrors, omitExtraData, liveOmit, noValidate, liveValidate, onChange, removeEmptyOptionalObjects } =\n      this.props;\n    const { formData: oldFormData, schemaUtils, schema, fieldPathId, schemaValidationErrorSchema, errors } = this.state;\n    let { customErrors } = this.state;\n    // Use the un-merged AJV-only schema as the base for re-merging extraErrors. Mirrors the\n    // pattern in getStateFromProps/getDerivedStateFromProps and avoids the duplication that\n    // happened when state.errorSchema (already containing merged extraErrors) was passed in.\n    let mergeBaseErrorSchema: ErrorSchema<T> = schemaValidationErrorSchema as ErrorSchema<T>;\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\n    // When switching from null to an object option in oneOf, MultiSchemaField sends\n    // an object with property names but undefined values (e.g., {types: undefined, content: undefined}).\n    // In this case, pass undefined to getStateFromProps to trigger fresh default computation.\n    // Only do this when the previous formData was null/undefined (switching FROM null).\n    const hasOnlyUndefinedValues =\n      isObject(formData) &&\n      Object.keys(formData as object).length > 0 &&\n      Object.values(formData as object).every((v) => v === undefined);\n    const wasPreviouslyNull = oldFormData === null || oldFormData === undefined;\n    const inputForDefaults = hasOnlyUndefinedValues && wasPreviouslyNull ? undefined : formData;\n\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, inputForDefaults, 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 (removeEmptyOptionalObjects) {\n      newFormData = removeOptionalEmptyObjects(\n        schemaUtils.getValidator(),\n        schema,\n        schemaUtils.getRootSchema(),\n        newFormData,\n      ) as T;\n      state = {\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        // Apply the user-supplied newErrorSchema onto a clone of the AJV-only base, so that\n        // mergeErrors below sees the user's error at this path without mutating shared state.\n        if (!isRootPath) {\n          mergeBaseErrorSchema = _cloneDeep(schemaValidationErrorSchema) as ErrorSchema<T>;\n          _set(mergeBaseErrorSchema, path, newErrorSchema);\n        } else {\n          mergeBaseErrorSchema = newErrorSchema as ErrorSchema<T>;\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        mergeBaseErrorSchema,\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: mergeBaseErrorSchema, 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, removeEmptyOptionalObjects } = 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, schemaUtils, schema } = 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 (removeEmptyOptionalObjects) {\n        newFormData = removeOptionalEmptyObjects(\n          schemaUtils.getValidator(),\n          schema,\n          schemaUtils.getRootSchema(),\n          newFormData,\n        ) as T;\n        state = { ...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, removeEmptyOptionalObjects } = this.props;\n    let { formData: newFormData } = this.state;\n\n    if (omitExtraData === true) {\n      newFormData = this.omitExtraData(newFormData);\n    }\n\n    if (removeEmptyOptionalObjects) {\n      const { schemaUtils, schema } = this.state;\n      newFormData = removeOptionalEmptyObjects(\n        schemaUtils.getValidator(),\n        schema,\n        schemaUtils.getRootSchema(),\n        newFormData,\n      ) as T;\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      uiSchemaDefinitions: uiSchema[UI_DEFINITIONS_KEY] ?? {},\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 a focusable element starting with the element id (like radio buttons or checkboxes)\n      // some themes (e.g. shadcn) use button elements instead of native inputs for radio groups\n      field = this.formElement.current.querySelector(`input[id^=\"${elementId}\"], button[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    // Always merge extraErrors so they remain visible in state regardless of extraErrorsBlockSubmit.\n    const { errors, errorSchema } = extraErrors ? this.mergeErrors(schemaValidation, extraErrors) : schemaValidation;\n    // hasError gates submission: schema errors always block; extraErrors only block when\n    // extraErrorsBlockSubmit is set (non-breaking default: extraErrors are informational only).\n    const hasError = schemaValidation.errors.length > 0 || (extraErrors && extraErrorsBlockSubmit);\n    if (hasError) {\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: schemaValidation.errors,\n          schemaValidationErrorSchema: schemaValidation.errorSchema,\n        },\n        () => {\n          if (onError) {\n            onError(errors);\n          } else {\n            console.error('Form validation failed', errors);\n          }\n        },\n      );\n    } else if (errors.length > 0) {\n      // Non-blocking extraErrors are present \u2014 update display state without triggering onError.\n      this.setState({\n        errors,\n        errorSchema,\n        schemaValidationErrors: [],\n        schemaValidationErrorSchema: {},\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, removeEmptyOptionalObjects } = this.props;\n    let { formData: newFormData } = this.state;\n    if (omitExtraData === true) {\n      newFormData = this.omitExtraData(newFormData);\n    }\n    if (removeEmptyOptionalObjects) {\n      const { schemaUtils, schema } = this.state;\n      newFormData = removeOptionalEmptyObjects(\n        schemaUtils.getValidator(),\n        schema,\n        schemaUtils.getRootSchema(),\n        newFormData,\n      ) as T;\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<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  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  // For computing `enumOptions`, fallback to the array property's uiSchema if there is no `items` schema\n  // Avoids a breaking change reported in https://github.com/rjsf-team/react-jsonschema-form/issues/4985\n  const itemsUiSchema = (uiSchema?.items ?? uiSchema) as UiSchema<T[], S, F>;\n  const enumOptions = optionsList<T[], S, F>(itemsSchema, itemsUiSchema);\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    schemaUtils,\n    fields: { ArraySchemaField, SchemaField },\n    globalUiOptions,\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 displayLabel = schemaUtils.getDisplayLabel(itemSchema, itemUiSchema, globalUiOptions);\n  const { description } = getUiOptions(itemUiSchema);\n  const hasDescription = !!description || !!itemSchema.description;\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    displayLabel,\n    hasDescription,\n  };\n  return <ArrayFieldItemTemplate {...templateProps} />;\n}\n\n/** The properties required by the stateless components that render the items using the `ArrayFieldItem` */\ninterface InternalArrayFieldProps<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  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        parentUiSchema: uiSchema,\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        parentUiSchema: uiSchema,\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      const lastPathIsItemIndex = typeof path.at(-1) === 'number';\n      onChange(\n        // We need to treat undefined items as nulls to have validation.\n        // See https://github.com/tdegrunt/jsonschema/issues/206\n        // Only set to null for array items, and not for object properties within array items\n        lastPathIsItemIndex && 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<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  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      fieldPathId={fieldPathId}\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, useRef, 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<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  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 formDataRef = useRef(formData);\n  formDataRef.current = formData;\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  const lastRenamedProperty = useRef({ previousKey: '', currentKey: undefined as string | undefined });\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    if (lastRenamedProperty.current.previousKey === newKey) {\n      lastRenamedProperty.current.currentKey = newKey;\n      lastRenamedProperty.current.previousKey = getAvailableKey(newKey, newFormData);\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 currentFormData = formDataRef.current;\n        const actualNewKey = getAvailableKey(newKey, currentFormData);\n        const newFormData: GenericObjectType = {\n          ...(currentFormData 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        formDataRef.current = renamedObj as T;\n        if (oldKey !== lastRenamedProperty.current.currentKey) {\n          lastRenamedProperty.current.previousKey = oldKey;\n        }\n        lastRenamedProperty.current.currentKey = actualNewKey;\n        onChange(renamedObj, childFieldPathId.path);\n      }\n    },\n    [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  /** Returns the stable React key for a property. For the most recently renamed\n   * additional property, returns the previous key so that React reuses the\n   * existing component instance instead of unmounting/remounting it. This\n   * preserves DOM focus naturally without manual focus management.\n   */\n  const getStableKey = useCallback((property: string) => {\n    if (lastRenamedProperty.current.currentKey === property) {\n      return lastRenamedProperty.current.previousKey;\n    }\n    return property;\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={getStableKey(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  resolveUiSchema,\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: _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 uiSchema = resolveUiSchema<T, S, F>(_schema, _uiSchema, registry);\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    fieldPathId,\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    title,\n  } = props;\n  const { title: schemaTitle, 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 ?? schemaTitle ?? 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, displayLabel, hasDescription, 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  const margin = hasDescription ? 31 : 9;\n  const containerStyle = { display: 'flex', alignItems: displayLabel ? 'center' : 'baseline' };\n  const toolbarStyle = { display: 'flex', justifyContent: 'flex-end', marginTop: displayLabel ? `${margin}px` : 0 };\n  return (\n    <div className={className} style={containerStyle}>\n      <div className={hasToolbar ? 'col-xs-9 col-md-10 col-xl-11' : 'col-xs-12'}>{children}</div>\n      {hasToolbar && (\n        <div className='col-xs-3 col-md-2 col-xl-1 array-item-toolbox'>\n          <div className='btn-group' style={toolbarStyle}>\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, MouseEvent, useCallback } from 'react';\nimport {\n  ariaDescribedByIds,\n  BaseInputTemplateProps,\n  examplesId,\n  getInputProps,\n  FormContextType,\n  RJSFSchema,\n  StrictRJSFSchema,\n} from '@rjsf/utils';\n\nimport SchemaExamples from '../SchemaExamples';\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  const { ClearButton } = registry.templates.ButtonTemplates;\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  const _onClear = useCallback(\n    (e: MouseEvent) => {\n      e.preventDefault();\n      e.stopPropagation();\n      onChange(options.emptyValue ?? '');\n    },\n    [onChange, options.emptyValue],\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      {options.allowClearTextInputs && !readonly && !disabled && inputValue && (\n        <ClearButton registry={registry} onClick={_onClear} />\n      )}\n      <SchemaExamples id={id} schema={schema} />\n    </>\n  );\n}\n", "import { examplesId, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nexport interface SchemaExamplesProps<S extends StrictRJSFSchema = RJSFSchema> {\n  /** The id of the input element this datalist is for */\n  id: string;\n  /** The JSON schema object containing examples and default value */\n  schema: S;\n}\n\n/** Renders a `<datalist>` element containing options from schema examples and default value.\n * Normalizes types to prevent duplicate keys when examples and default have different types.\n * For example, if examples are strings [\"5432\"] and default is number 5432, the default\n * will not be added as a duplicate option.\n *\n * @param props - The `SchemaExamplesProps` for this component\n */\nexport default function SchemaExamples<S extends StrictRJSFSchema = RJSFSchema>(props: SchemaExamplesProps<S>) {\n  const { id, schema } = props;\n  const { examples, default: schemaDefault } = schema;\n  if (!Array.isArray(examples)) {\n    return null;\n  }\n  return (\n    <datalist key={`datalist_${id}`} id={examplesId(id)}>\n      {(examples as string[])\n        .concat(\n          schemaDefault !== undefined && !examples.map(String).includes(String(schemaDefault))\n            ? ([schemaDefault] as string[])\n            : [],\n        )\n        .map((example: any) => {\n          return <option key={String(example)} value={example} />;\n        })}\n    </datalist>\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\n        className={`col-xs-4 col-sm-2 col-lg-1 col-xs-offset-8 col-sm-offset-10 col-lg-offset-11 text-right ${className}`}\n      >\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\nexport function ClearButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n  id,\n  className,\n  onClick,\n  disabled,\n  registry,\n  ...props\n}: IconButtonProps<T, S, F>) {\n  const { translateString } = registry;\n  return (\n    <IconButton\n      id={id}\n      iconType='default'\n      icon='remove'\n      className='btn-clear col-xs-12'\n      title={translateString(TranslatableString.ClearButton)}\n      onClick={onClick}\n      disabled={disabled}\n      registry={registry}\n      {...props}\n    />\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, ClearButton } 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    ClearButton,\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';\nimport RichHelp from '../RichHelp';\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, uiSchema, registry } = props;\n  if (!help) {\n    return null;\n  }\n\n  return (\n    <div id={helpId(fieldPathId)} className='help-block'>\n      <RichHelp help={help as string} registry={registry} uiSchema={uiSchema} />\n    </div>\n  );\n}\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 RichHelpProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n  /** The description text for a field, potentially containing markdown */\n  help: 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 `RichHelpProps` for this component\n */\nexport default function RichHelp<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n  help,\n  registry,\n  uiSchema = {},\n}: RichHelpProps<T, S, F>) {\n  const { globalUiOptions } = registry;\n  const uiOptions = getUiOptions<T, S, F>(uiSchema, globalUiOptions);\n\n  if (uiOptions.enableMarkdownInHelp && typeof help === 'string') {\n    return (\n      <Markdown options={{ disableParsingRawHTML: true }} data-testid={TEST_IDS.markdown}>\n        {help}\n      </Markdown>\n    );\n  }\n  return help;\n}\n\nRichHelp.TEST_IDS = TEST_IDS;\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\n  // For \"pure union\" schemas (oneOf/anyOf without properties), skip rendering the empty fieldset wrapper.\n  // The AnyOfField/OneOfField will handle rendering the union selector and selected variant's content directly.\n  const isPureUnionSchema = (schema.oneOf || schema.anyOf) && !schema.properties && properties.length === 0;\n\n  if (isPureUnionSchema) {\n    return null;\n  }\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    displayLabel,\n    label,\n    onKeyRenameBlur,\n    onRemoveProperty,\n    rawDescription,\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  const hasDescription = !!rawDescription;\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  const margin = hasDescription ? 46 : 26;\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            {displayLabel && <Label label={keyLabel} required={required} id={`${id}-key`} />}\n            {displayLabel && rawDescription && <div>&nbsp;</div>}\n            <input\n              key={label}\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' style={{ marginTop: displayLabel ? `${margin}px` : undefined }}>\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  enumOptionValueDecoder,\n  enumOptionValueEncoder,\n  enumOptionsDeselectValue,\n  enumOptionsIsSelected,\n  enumOptionsSelectValue,\n  getOptionValueFormat,\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,\n  value,\n  autofocus = false,\n  readonly,\n  onChange,\n  onBlur,\n  onFocus,\n  htmlName,\n}: WidgetProps<T, S, F>) {\n  const { inline = false, enumOptions, enumDisabled, emptyValue } = options;\n  const optionValueFormat = getOptionValueFormat(options);\n  const checkboxesValues = Array.isArray(value) ? value : [value];\n\n  const handleBlur = useCallback(\n    ({ target }: FocusEvent<HTMLInputElement>) =>\n      onBlur(id, enumOptionValueDecoder<S>(target && target.value, enumOptions, optionValueFormat, emptyValue)),\n    [onBlur, id, enumOptions, emptyValue, optionValueFormat],\n  );\n\n  const handleFocus = useCallback(\n    ({ target }: FocusEvent<HTMLInputElement>) =>\n      onFocus(id, enumOptionValueDecoder<S>(target && target.value, enumOptions, optionValueFormat, emptyValue)),\n    [onFocus, id, enumOptions, emptyValue, optionValueFormat],\n  );\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={enumOptionValueEncoder(option.value, index, optionValueFormat)}\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  enumOptionValueDecoder,\n  enumOptionValueEncoder,\n  enumOptionsIsSelected,\n  getOptionValueFormat,\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  const optionValueFormat = getOptionValueFormat(options);\n\n  const handleBlur = useCallback(\n    ({ target }: FocusEvent<HTMLInputElement>) =>\n      onBlur(id, enumOptionValueDecoder<S>(target && target.value, enumOptions, optionValueFormat, emptyValue)),\n    [onBlur, enumOptions, emptyValue, id, optionValueFormat],\n  );\n\n  const handleFocus = useCallback(\n    ({ target }: FocusEvent<HTMLInputElement>) =>\n      onFocus(id, enumOptionValueDecoder<S>(target && target.value, enumOptions, optionValueFormat, emptyValue)),\n    [onFocus, enumOptions, emptyValue, id, optionValueFormat],\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={enumOptionValueEncoder(option.value, i, optionValueFormat)}\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  enumOptionSelectedValue,\n  enumOptionValueDecoder,\n  enumOptionValueEncoder,\n  getOptionValueFormat,\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  const optionValueFormat = getOptionValueFormat(options);\n\n  const handleFocus = useCallback(\n    (event: FocusEvent<HTMLSelectElement>) => {\n      const newValue = getValue(event, multiple);\n      return onFocus(id, enumOptionValueDecoder<S>(newValue, enumOptions, optionValueFormat, optEmptyVal));\n    },\n    [onFocus, id, multiple, enumOptions, optEmptyVal, optionValueFormat],\n  );\n\n  const handleBlur = useCallback(\n    (event: FocusEvent<HTMLSelectElement>) => {\n      const newValue = getValue(event, multiple);\n      return onBlur(id, enumOptionValueDecoder<S>(newValue, enumOptions, optionValueFormat, optEmptyVal));\n    },\n    [onBlur, id, multiple, enumOptions, optEmptyVal, optionValueFormat],\n  );\n\n  const handleChange = useCallback(\n    (event: ChangeEvent<HTMLSelectElement>) => {\n      const newValue = getValue(event, multiple);\n      return onChange(enumOptionValueDecoder<S>(newValue, enumOptions, optionValueFormat, optEmptyVal));\n    },\n    [onChange, multiple, enumOptions, optEmptyVal, optionValueFormat],\n  );\n\n  const selectValue = enumOptionSelectedValue<S>(value, enumOptions, multiple, optionValueFormat, emptyValue);\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={selectValue}\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={enumOptionValueEncoder(value, i, optionValueFormat)} 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\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"],
  "mappings": "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",
  "names": ["import_react", "import_utils", "import_cloneDeep", "import_get", "import_isEmpty", "import_set", "import_utils", "uniqueId", "widgets", "SchemaField", "ArrayFieldItemTemplate", "has", "fields", "OptionalDataControlsField", "isObject", "newHash", "set", "cloneDeep", "import_react", "import_utils", "import_isObject", "import_jsx_runtime", "widgets", "isObject", "import_utils", "import_react", "import_jsx_runtime", "fields", "FallbackFieldTemplate", "SchemaField", "import_utils", "import_isObject", "import_set", "import_jsx_runtime", "import_react", "get", "isEmpty", "set", "isUndefined", "has", "flatten", "isEqual", "intersection", "isPlainObject", "last", "isRequired", "includes", "isString", "isFunction", "each", "name", "GridTemplate", "fields", "SchemaField", "LayoutMultiSchemaField", "Field", "isObject", "import_utils", "import_jsx_runtime", "import_react", "import_utils", "import_get", "import_has", "import_isEmpty", "import_set", "import_jsx_runtime", "get", "has", "widgets", "FieldErrorTemplate", "FieldTemplate", "omit", "set", "isEmpty", "noop", "import_react", "import_get", "import_isEmpty", "import_omit", "import_utils", "import_jsx_runtime", "widgets", "fields", "MultiSchemaFieldTemplate", "get", "omit", "required", "isEmpty", "import_react", "import_utils", "import_jsx_runtime", "StringField", "value", "import_react", "import_utils", "import_get", "import_has", "import_isObject", "import_set", "import_jsx_runtime", "fields", "SchemaField", "OptionalDataControlsField", "formData", "has", "translateString", "set", "isObject", "schemaUtils", "newKey", "Markdown", "name", "get", "import_utils", "import_jsx_runtime", "OptionalDataControlsTemplate", "import_react", "import_utils", "import_isObject", "import_omit", "import_jsx_runtime", "fields", "FieldTemplate", "FieldHelpTemplate", "FieldErrorTemplate", "formData", "id", "_schema", "isObject", "omit", "import_react", "import_utils", "import_jsx_runtime", "widgets", "import_react", "import_utils", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "ArrayFieldItemButtonsTemplate", "import_utils", "import_jsx_runtime", "CopyButton", "MoveDownButton", "MoveUpButton", "RemoveButton", "import_utils", "import_jsx_runtime", "ArrayFieldDescriptionTemplate", "ArrayFieldTitleTemplate", "AddButton", "import_utils", "import_jsx_runtime", "import_react", "import_utils", "import_utils", "import_jsx_runtime", "import_jsx_runtime", "ClearButton", "value", "import_utils", "import_jsx_runtime", "import_utils", "import_utils", "import_jsx_runtime", "import_jsx_runtime", "import_utils", "import_markdown_to_jsx", "import_jsx_runtime", "Markdown", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "MultiSchemaFieldTemplate", "import_utils", "import_jsx_runtime", "import_jsx_runtime", "WrapIfAdditionalTemplate", "import_utils", "import_jsx_runtime", "import_utils", "import_utils", "import_markdown_to_jsx", "import_jsx_runtime", "TEST_IDS", "Markdown", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "AddButton", "import_jsx_runtime", "import_jsx_runtime", "REQUIRED_FIELD_SYMBOL", "import_utils", "import_markdown_to_jsx", "import_jsx_runtime", "Markdown", "import_utils", "import_jsx_runtime", "templates", "RemoveButton", "import_utils", "import_jsx_runtime", "import_jsx_runtime", "AltDateWidget", "import_react", "import_utils", "import_jsx_runtime", "import_react", "import_utils", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_react", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "value", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_utils", "import_markdown_to_jsx", "import_jsx_runtime", "RemoveButton", "Markdown", "BaseInputTemplate", "import_jsx_runtime", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_react", "import_utils", "import_jsx_runtime", "import_jsx_runtime", "BaseInputTemplate", "import_react", "import_jsx_runtime", "import_react", "import_utils", "import_jsx_runtime", "value", "disabled", "import_react", "import_utils", "import_jsx_runtime", "value", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_react", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_utils", "import_jsx_runtime", "BaseInputTemplate", "import_jsx_runtime", "_pick", "validator", "fields", "_cloneDeep", "_unset", "_set", "_get", "_isEmpty", "errors", "schema", "schemaUtils", "templates", "widgets", "_toPath", "SubmitButton", "import_react", "import_jsx_runtime", "fields", "widgets", "templates", "import_utils", "fields", "templates", "widgets", "validator"]
}
