@@ -237,9 +237,13 @@ export const getFieldSrc = (field) => {
237237 if ( ! field )
238238 return null ;
239239 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" ;
243247 }
244248 if ( field . func ) {
245249 if ( field . func && field . arg ) {
@@ -250,6 +254,10 @@ export const getFieldSrc = (field) => {
250254 return "func" ;
251255 }
252256 }
257+ if ( ! ! field . type ) {
258+ // it's already a config
259+ return "field" ;
260+ }
253261 }
254262 if ( field ?. get ?. ( "func" ) ) { // immutable
255263 if ( field ?. get ( "arg" ) ) {
@@ -267,16 +275,25 @@ export const getFieldConfig = (config, field) => {
267275 if ( ! field )
268276 return null ;
269277 if ( typeof field == "object" ) {
270- if ( ! field . func && ! ! field . type ) {
278+ if ( ! field . func && ! ! field . type && ! ! field . widgets ) {
271279 // it's already a config
280+ // but don't mess up with obj from `getFuncSignature`, it has `type` but no `widgets` and other keys !
272281 return field ;
273282 }
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+ }
274291 if ( field . func ) {
275292 if ( field . func && field . arg ) {
276293 // it's func arg
277294 return getFuncArgConfig ( config , field . func , field . arg ) ;
278295 } else {
279- // it's field func
296+ // it's a func
280297 return getFuncConfig ( config , field . func ) ;
281298 }
282299 }
0 commit comments