11import * as CompilerDOM from '@vue/compiler-dom' ;
22import { camelize , capitalize } from '@vue/shared' ;
33import type { Code , VueCodeInformation } from '../../types' ;
4- import { getSlotsPropertyName , hyphenateTag } from '../../utils/shared' ;
4+ import { getElementTagOffsets , getSlotsPropertyName , hyphenateTag } from '../../utils/shared' ;
55import { codeFeatures } from '../codeFeatures' ;
66import { createVBindShorthandInlayHintInfo } from '../inlayHints' ;
77import { endOfLine , identifierRegex , newLine , normalizeAttributeValue } from '../utils' ;
@@ -25,13 +25,7 @@ export function* generateComponent(
2525 ctx : TemplateCodegenContext ,
2626 node : CompilerDOM . ElementNode ,
2727) : Generator < Code > {
28- const tagOffsets = [ node . loc . start . offset + options . template . content . slice ( node . loc . start . offset ) . indexOf ( node . tag ) ] ;
29- if ( ! node . isSelfClosing && options . template . lang === 'html' ) {
30- const endTagOffset = node . loc . start . offset + node . loc . source . lastIndexOf ( node . tag ) ;
31- if ( endTagOffset > tagOffsets [ 0 ] ) {
32- tagOffsets . push ( endTagOffset ) ;
33- }
34- }
28+ const tagOffsets = getElementTagOffsets ( node , options . template ) ;
3529 const failedPropExps : FailedPropExpression [ ] = [ ] ;
3630 const possibleOriginalNames = getPossibleOriginalComponentNames ( node . tag , true ) ;
3731 const matchImportName = possibleOriginalNames . find ( name => options . scriptSetupImportComponentNames . has ( name ) ) ;
@@ -294,25 +288,16 @@ export function* generateElement(
294288 ctx : TemplateCodegenContext ,
295289 node : CompilerDOM . ElementNode ,
296290) : Generator < Code > {
297- const startTagOffset = node . loc . start . offset
298- + options . template . content . slice ( node . loc . start . offset ) . indexOf ( node . tag ) ;
299- const endTagOffset = ! node . isSelfClosing && options . template . lang === 'html'
300- ? node . loc . start . offset + node . loc . source . lastIndexOf ( node . tag )
301- : undefined ;
291+ const [ startTagOffset , endTagOffset ] = getElementTagOffsets ( node , options . template ) ;
302292 const failedPropExps : FailedPropExpression [ ] = [ ] ;
303293
304- const features = {
305- ...codeFeatures . semanticWithoutHighlight ,
306- ...codeFeatures . navigationWithoutHighlight ,
307- } ;
308-
309294 yield `__VLS_asFunctionalElement(__VLS_elements` ;
310295 yield * generatePropertyAccess (
311296 options ,
312297 ctx ,
313298 node . tag ,
314299 startTagOffset ,
315- features ,
300+ codeFeatures . withoutHighlightAndCompletion ,
316301 ) ;
317302 if ( endTagOffset !== undefined ) {
318303 yield `, __VLS_elements` ;
@@ -321,7 +306,7 @@ export function* generateElement(
321306 ctx ,
322307 node . tag ,
323308 endTagOffset ,
324- features ,
309+ codeFeatures . withoutHighlightAndCompletion ,
325310 ) ;
326311 }
327312 yield `)(` ;
0 commit comments