@@ -122,20 +122,44 @@ function* generateSetupFunction(
122
122
ctx . scriptSetupGeneratedOffset = options . getGeneratedLength ( ) - scriptSetupRanges . importSectionEndOffset ;
123
123
124
124
let setupCodeModifies : [ Code [ ] , number , number ] [ ] = [ ] ;
125
- if ( scriptSetupRanges . props . define && ! scriptSetupRanges . props . name ) {
126
- const range = scriptSetupRanges . props . withDefaults ?? scriptSetupRanges . props . define ;
125
+ const propsRange = scriptSetupRanges . props . withDefaults ?? scriptSetupRanges . props . define ;
126
+ if ( propsRange && scriptSetupRanges . props . define ) {
127
127
const statement = scriptSetupRanges . props . define . statement ;
128
- if ( statement . start === range . start && statement . end === range . end ) {
129
- setupCodeModifies . push ( [ [ `const __VLS_props = ` ] , range . start , range . start ] ) ;
130
- }
131
- else {
128
+ if ( scriptSetupRanges . props . define . typeArg ) {
132
129
setupCodeModifies . push ( [ [
133
- `const __VLS_props = ` ,
134
- generateSfcBlockSection ( scriptSetup , range . start , range . end , codeFeatures . all ) ,
135
- `${ endOfLine } ` ,
136
- generateSfcBlockSection ( scriptSetup , statement . start , range . start , codeFeatures . all ) ,
137
- `__VLS_props` ,
138
- ] , statement . start , range . end ] ) ;
130
+ `let __VLS_typeProps!: ` ,
131
+ generateSfcBlockSection ( scriptSetup , scriptSetupRanges . props . define . typeArg . start , scriptSetupRanges . props . define . typeArg . end , codeFeatures . all ) ,
132
+ endOfLine ,
133
+ ] , statement . start , statement . start ] ) ;
134
+ setupCodeModifies . push ( [ [ `typeof __VLS_typeProps` ] , scriptSetupRanges . props . define . typeArg . start , scriptSetupRanges . props . define . typeArg . end ] ) ;
135
+ }
136
+ if ( ! scriptSetupRanges . props . name ) {
137
+ if ( statement . start === propsRange . start && statement . end === propsRange . end ) {
138
+ setupCodeModifies . push ( [ [ `const __VLS_props = ` ] , propsRange . start , propsRange . start ] ) ;
139
+ }
140
+ else {
141
+ if ( scriptSetupRanges . props . define . typeArg ) {
142
+ setupCodeModifies . push ( [ [
143
+ `const __VLS_props = ` ,
144
+ generateSfcBlockSection ( scriptSetup , propsRange . start , scriptSetupRanges . props . define . typeArg . start , codeFeatures . all ) ,
145
+ ] , statement . start , scriptSetupRanges . props . define . typeArg . start ] ) ;
146
+ setupCodeModifies . push ( [ [
147
+ generateSfcBlockSection ( scriptSetup , scriptSetupRanges . props . define . typeArg . end , propsRange . end , codeFeatures . all ) ,
148
+ `${ endOfLine } ` ,
149
+ generateSfcBlockSection ( scriptSetup , statement . start , propsRange . start , codeFeatures . all ) ,
150
+ `__VLS_props` ,
151
+ ] , scriptSetupRanges . props . define . typeArg . end , propsRange . end ] ) ;
152
+ }
153
+ else {
154
+ setupCodeModifies . push ( [ [
155
+ `const __VLS_props = ` ,
156
+ generateSfcBlockSection ( scriptSetup , propsRange . start , propsRange . end , codeFeatures . all ) ,
157
+ `${ endOfLine } ` ,
158
+ generateSfcBlockSection ( scriptSetup , statement . start , propsRange . start , codeFeatures . all ) ,
159
+ `__VLS_props` ,
160
+ ] , statement . start , propsRange . end ] ) ;
161
+ }
162
+ }
139
163
}
140
164
}
141
165
if ( scriptSetupRanges . slots . define && ! scriptSetupRanges . slots . name ) {
@@ -338,7 +362,7 @@ function* generateComponentProps(
338
362
yield ` & ` ;
339
363
}
340
364
ctx . generatedPropsType = true ;
341
- yield generateSfcBlockSection ( scriptSetup , scriptSetupRanges . props . define . typeArg . start , scriptSetupRanges . props . define . typeArg . end , codeFeatures . all ) ;
365
+ yield `typeof __VLS_typeProps` ;
342
366
}
343
367
if ( ! ctx . generatedPropsType ) {
344
368
yield `{}` ;
0 commit comments