@@ -237,9 +237,13 @@ export const getFieldSrc = (field) => {
237
237
if ( ! field )
238
238
return null ;
239
239
if ( typeof field === "object" ) {
240
- if ( ! field . func && ! ! field . type ) {
241
- // it's already a config
242
- return "field" ;
240
+ if ( field . _isFuncArg ) {
241
+ // it's func arg
242
+ return null ;
243
+ }
244
+ if ( field . _isFunc ) {
245
+ // it's field func
246
+ return "func" ;
243
247
}
244
248
if ( field . func ) {
245
249
if ( field . func && field . arg ) {
@@ -250,6 +254,10 @@ export const getFieldSrc = (field) => {
250
254
return "func" ;
251
255
}
252
256
}
257
+ if ( ! ! field . type ) {
258
+ // it's already a config
259
+ return "field" ;
260
+ }
253
261
}
254
262
if ( field ?. get ?. ( "func" ) ) { // immutable
255
263
if ( field ?. get ( "arg" ) ) {
@@ -267,16 +275,25 @@ export const getFieldConfig = (config, field) => {
267
275
if ( ! field )
268
276
return null ;
269
277
if ( typeof field == "object" ) {
270
- if ( ! field . func && ! ! field . type ) {
278
+ if ( ! field . func && ! ! field . type && ! ! field . widgets ) {
271
279
// it's already a config
280
+ // but don't mess up with obj from `getFuncSignature`, it has `type` but no `widgets` and other keys !
272
281
return field ;
273
282
}
283
+ if ( field . _isFuncArg ) {
284
+ // it's func arg
285
+ return getFuncArgConfig ( config , field . _funcKey , field . _argKey ) ;
286
+ }
287
+ if ( field . _isFunc ) {
288
+ // it's a func
289
+ return getFuncConfig ( config , field . _funcKey ) ;
290
+ }
274
291
if ( field . func ) {
275
292
if ( field . func && field . arg ) {
276
293
// it's func arg
277
294
return getFuncArgConfig ( config , field . func , field . arg ) ;
278
295
} else {
279
- // it's field func
296
+ // it's a func
280
297
return getFuncConfig ( config , field . func ) ;
281
298
}
282
299
}
0 commit comments