@@ -20,7 +20,9 @@ import {
20
20
EventEachGetDataType ,
21
21
EventEachGetFunctionType ,
22
22
EventGetDataType ,
23
+ ImportDataType ,
23
24
IndexObjNode ,
25
+ ValueItemType ,
24
26
ValueItemsType ,
25
27
ValueType ,
26
28
ValueValueType ,
@@ -341,8 +343,85 @@ export const renderEl = (
341
343
} ;
342
344
const keyArr = [ ...e . value . matchAll ( TEXT_REGEX ) ] ;
343
345
if ( keyArr . length === 1 ) {
344
- keyTemplate . value = createValItem ( getVal ( keyArr [ 0 ] ) ) ;
345
- keyTemplate . render = valueFunctions [ 1 ] ;
346
+ const val = getVal ( keyArr [ 0 ] ) ;
347
+ keyTemplate . value = createValItem ( val ) ;
348
+ if ( typeof val === "string" ) {
349
+ keyTemplate . render = valueFunctions [ 1 ] ;
350
+ } else {
351
+ const { render : renderVal } = val ;
352
+ if ( val . properties ?. length === 1 && ! val . isValue ) {
353
+ const prop = ( val . properties as any ) [ 0 ] ;
354
+ switch ( val . originType ) {
355
+ case 1 :
356
+ keyTemplate . render = (
357
+ indexData : any ,
358
+ value : ValueItemType ,
359
+ importData : ImportDataType | undefined ,
360
+ eachIndex ?: number
361
+ ) => indexData [ prop ] ;
362
+ break ;
363
+ case 2 :
364
+ keyTemplate . render = (
365
+ indexData : any ,
366
+ value : ValueItemType ,
367
+ importData : ImportDataType | undefined ,
368
+ eachIndex ?: number
369
+ ) => importData ?. [ prop ] ;
370
+ break ;
371
+ case 3 :
372
+ keyTemplate . render = ( (
373
+ indexData : any ,
374
+ value : ValueItemType ,
375
+ importData : ImportDataType | undefined ,
376
+ eachIndex ?: number
377
+ ) => eachIndex ) as any ;
378
+ break ;
379
+ default :
380
+ keyTemplate . render = ( (
381
+ indexData : any ,
382
+ value : ValueItemType ,
383
+ importData : ImportDataType | undefined ,
384
+ eachIndex ?: number
385
+ ) => undefined ) as any ;
386
+ break ;
387
+ }
388
+ } else {
389
+ switch ( val . originType ) {
390
+ case 1 :
391
+ keyTemplate . render = (
392
+ indexData : any ,
393
+ value : ValueItemType ,
394
+ importData : ImportDataType | undefined ,
395
+ eachIndex ?: number
396
+ ) => ( renderVal as any ) ( indexData ) ;
397
+ break ;
398
+ case 2 :
399
+ keyTemplate . render = (
400
+ indexData : any ,
401
+ value : ValueItemType ,
402
+ importData : ImportDataType | undefined ,
403
+ eachIndex ?: number
404
+ ) => ( renderVal as any ) ( importData ) ;
405
+ break ;
406
+ case 3 :
407
+ keyTemplate . render = ( (
408
+ indexData : any ,
409
+ value : ValueItemType ,
410
+ importData : ImportDataType | undefined ,
411
+ eachIndex ?: number
412
+ ) => eachIndex ) as any ;
413
+ break ;
414
+ default :
415
+ keyTemplate . render = ( (
416
+ indexData : any ,
417
+ value : ValueItemType ,
418
+ importData : ImportDataType | undefined ,
419
+ eachIndex ?: number
420
+ ) => undefined ) as any ;
421
+ break ;
422
+ }
423
+ }
424
+ }
346
425
} else {
347
426
for ( const txt of keyArr ) {
348
427
const val = createValItem ( getVal ( txt ) ) ;
0 commit comments