@@ -240,12 +240,12 @@ export function* generateComponent(
240
240
) ;
241
241
yield * generateElementDirectives ( options , ctx , node ) ;
242
242
243
- const [ refName , offset ] = yield * generateElementReference ( options , ctx , node ) ;
243
+ const reference = yield * generateElementReference ( options , ctx , node ) ;
244
244
const tag = hyphenateTag ( node . tag ) ;
245
245
const isRootNode = ctx . singleRootNodes . has ( node )
246
246
&& ! options . vueCompilerOptions . fallthroughComponentNames . includes ( tag ) ;
247
247
248
- if ( refName || isRootNode ) {
248
+ if ( reference || isRootNode ) {
249
249
const componentInstanceVar = ctx . getInternalVariable ( ) ;
250
250
ctx . currentComponent . used = true ;
251
251
@@ -255,8 +255,9 @@ export function* generateComponent(
255
255
}
256
256
yield endOfLine ;
257
257
258
- if ( refName && offset ) {
259
- ctx . addTemplateRef ( refName , `typeof ${ ctx . getHoistVariable ( componentInstanceVar ) } ` , offset ) ;
258
+ if ( reference ) {
259
+ const typeExp = `typeof ${ ctx . getHoistVariable ( componentInstanceVar ) } ` ;
260
+ ctx . addTemplateRef ( reference . name , typeExp , reference . offset ) ;
260
261
}
261
262
if ( isRootNode ) {
262
263
ctx . singleRootElTypes . push ( `NonNullable<typeof ${ componentInstanceVar } >['$el']` ) ;
@@ -331,13 +332,13 @@ export function* generateElement(
331
332
yield * generateFailedPropExps ( options , ctx , failedPropExps ) ;
332
333
yield * generateElementDirectives ( options , ctx , node ) ;
333
334
334
- const [ refName , offset ] = yield * generateElementReference ( options , ctx , node ) ;
335
- if ( refName && offset ) {
335
+ const reference = yield * generateElementReference ( options , ctx , node ) ;
336
+ if ( reference ) {
336
337
let typeExp = `__VLS_NativeElements['${ node . tag } ']` ;
337
338
if ( ctx . inVFor ) {
338
339
typeExp += `[]` ;
339
340
}
340
- ctx . addTemplateRef ( refName , typeExp , offset ) ;
341
+ ctx . addTemplateRef ( reference . name , typeExp , reference . offset ) ;
341
342
}
342
343
if ( ctx . singleRootNodes . has ( node ) ) {
343
344
ctx . singleRootElTypes . push ( `__VLS_NativeElements['${ node . tag } ']` ) ;
@@ -438,34 +439,33 @@ function* generateElementReference(
438
439
options : TemplateCodegenOptions ,
439
440
ctx : TemplateCodegenContext ,
440
441
node : CompilerDOM . ElementNode ,
441
- ) : Generator < Code , [ refName : string , offset : number ] | [ ] > {
442
+ ) : Generator < Code , { name : string ; offset : number } | void > {
442
443
for ( const prop of node . props ) {
443
444
if (
444
445
prop . type === CompilerDOM . NodeTypes . ATTRIBUTE
445
446
&& prop . name === 'ref'
446
447
&& prop . value
447
448
) {
448
- const [ content , startOffset ] = normalizeAttributeValue ( prop . value ) ;
449
+ const [ name , offset ] = normalizeAttributeValue ( prop . value ) ;
449
450
450
451
// navigation support for `const foo = ref()`
451
452
yield `/** @type {typeof __VLS_ctx` ;
452
453
yield * generatePropertyAccess (
453
454
options ,
454
455
ctx ,
455
- content ,
456
- startOffset ,
456
+ name ,
457
+ offset ,
457
458
codeFeatures . navigation ,
458
459
) ;
459
460
yield `} */${ endOfLine } ` ;
460
461
461
- if ( identifierRegex . test ( content ) && ! options . templateRefNames . has ( content ) ) {
462
- ctx . accessExternalVariable ( content , startOffset ) ;
462
+ if ( identifierRegex . test ( name ) && ! options . templateRefNames . has ( name ) ) {
463
+ ctx . accessExternalVariable ( name , offset ) ;
463
464
}
464
465
465
- return [ content , startOffset ] ;
466
+ return { name , offset } ;
466
467
}
467
468
}
468
- return [ ] ;
469
469
}
470
470
471
471
function hasVBindAttrs (
0 commit comments