@@ -20,6 +20,7 @@ import mergeDefaultsWithFormData from '../mergeDefaultsWithFormData';
2020import  mergeObjects  from  '../mergeObjects' ; 
2121import  mergeSchemas  from  '../mergeSchemas' ; 
2222import  { 
23+   Experimental_CustomMergeAllOf , 
2324  Experimental_DefaultFormStateBehavior , 
2425  FormContextType , 
2526  GenericObjectType , 
@@ -156,6 +157,7 @@ interface ComputeDefaultsProps<T = any, S extends StrictRJSFSchema = RJSFSchema>
156157  _recurseList ?: string [ ] ; 
157158  /** Optional configuration object, if provided, allows users to override default form state behavior */ 
158159  experimental_defaultFormStateBehavior ?: Experimental_DefaultFormStateBehavior ; 
160+   experimental_customMergeAllOf ?: Experimental_CustomMergeAllOf < S > ; 
159161  /** Optional flag, if true, indicates this schema was required in the parent schema. */ 
160162  required ?: boolean ; 
161163} 
@@ -180,6 +182,7 @@ export function computeDefaults<T = any, S extends StrictRJSFSchema = RJSFSchema
180182    includeUndefinedValues =  false , 
181183    _recurseList =  [ ] , 
182184    experimental_defaultFormStateBehavior =  undefined , 
185+     experimental_customMergeAllOf =  undefined , 
183186    required, 
184187  }  =  computeDefaultsProps ; 
185188  const  formData : T  =  ( isObject ( rawFormData )  ? rawFormData  : { } )  as  T ; 
@@ -209,7 +212,15 @@ export function computeDefaults<T = any, S extends StrictRJSFSchema = RJSFSchema
209212      ...formData , 
210213      ...getDefaultBasedOnSchemaType ( validator ,  schema ,  computeDefaultsProps ,  defaults ) , 
211214    } ; 
212-     const  resolvedSchema  =  resolveDependencies < T ,  S ,  F > ( validator ,  schema ,  rootSchema ,  false ,  [ ] ,  defaultFormData ) ; 
215+     const  resolvedSchema  =  resolveDependencies < T ,  S ,  F > ( 
216+       validator , 
217+       schema , 
218+       rootSchema , 
219+       false , 
220+       [ ] , 
221+       defaultFormData , 
222+       experimental_customMergeAllOf 
223+     ) ; 
213224    schemaToCompute  =  resolvedSchema [ 0 ] ;  // pick the first element from resolve dependencies 
214225  }  else  if  ( isFixedItems ( schema ) )  { 
215226    defaults  =  ( schema . items !  as  S [ ] ) . map ( ( itemSchema : S ,  idx : number )  => 
@@ -298,6 +309,7 @@ export function getObjectDefaults<T = any, S extends StrictRJSFSchema = RJSFSche
298309    includeUndefinedValues =  false , 
299310    _recurseList =  [ ] , 
300311    experimental_defaultFormStateBehavior =  undefined , 
312+     experimental_customMergeAllOf =  undefined , 
301313    required, 
302314  } : ComputeDefaultsProps < T ,  S >  =  { } , 
303315  defaults ?: T  |  T [ ]  |  undefined 
@@ -309,7 +321,7 @@ export function getObjectDefaults<T = any, S extends StrictRJSFSchema = RJSFSche
309321    // https://github.com/rjsf-team/react-jsonschema-form/issues/3832 
310322    const  retrievedSchema  = 
311323      experimental_defaultFormStateBehavior ?. allOf  ===  'populateDefaults'  &&  ALL_OF_KEY  in  schema 
312-         ? retrieveSchema < T ,  S ,  F > ( validator ,  schema ,  rootSchema ,  formData ) 
324+         ? retrieveSchema < T ,  S ,  F > ( validator ,  schema ,  rootSchema ,  formData ,   experimental_customMergeAllOf ) 
313325        : schema ; 
314326    const  objectDefaults  =  Object . keys ( retrievedSchema . properties  ||  { } ) . reduce ( 
315327      ( acc : GenericObjectType ,  key : string )  =>  { 
@@ -319,6 +331,7 @@ export function getObjectDefaults<T = any, S extends StrictRJSFSchema = RJSFSche
319331          rootSchema, 
320332          _recurseList, 
321333          experimental_defaultFormStateBehavior, 
334+           experimental_customMergeAllOf, 
322335          includeUndefinedValues : includeUndefinedValues  ===  true , 
323336          parentDefaults : get ( defaults ,  [ key ] ) , 
324337          rawFormData : get ( formData ,  [ key ] ) , 
@@ -533,16 +546,18 @@ export default function getDefaultFormState<
533546  formData ?: T , 
534547  rootSchema ?: S , 
535548  includeUndefinedValues : boolean  |  'excludeObjectChildren'  =  false , 
536-   experimental_defaultFormStateBehavior ?: Experimental_DefaultFormStateBehavior 
549+   experimental_defaultFormStateBehavior ?: Experimental_DefaultFormStateBehavior , 
550+   experimental_customMergeAllOf ?: Experimental_CustomMergeAllOf < S > 
537551)  { 
538552  if  ( ! isObject ( theSchema ) )  { 
539553    throw  new  Error ( 'Invalid schema: '  +  theSchema ) ; 
540554  } 
541-   const  schema  =  retrieveSchema < T ,  S ,  F > ( validator ,  theSchema ,  rootSchema ,  formData ) ; 
555+   const  schema  =  retrieveSchema < T ,  S ,  F > ( validator ,  theSchema ,  rootSchema ,  formData ,   experimental_customMergeAllOf ) ; 
542556  const  defaults  =  computeDefaults < T ,  S ,  F > ( validator ,  schema ,  { 
543557    rootSchema, 
544558    includeUndefinedValues, 
545559    experimental_defaultFormStateBehavior, 
560+     experimental_customMergeAllOf, 
546561    rawFormData : formData , 
547562  } ) ; 
548563  if  ( formData  ===  undefined  ||  formData  ===  null  ||  ( typeof  formData  ===  'number'  &&  isNaN ( formData ) ) )  { 
0 commit comments