@@ -32,7 +32,10 @@ export type VaporPublicProps = ReservedProps &
3232 AllowedComponentProps &
3333 ComponentCustomProps
3434
35- export type RenderReturn = VNode | Block | RenderReturn [ ]
35+ export type RenderReturn < T extends Block = Block > =
36+ | VNode
37+ | T
38+ | RenderReturn < T > [ ]
3639
3740export type DefineVaporComponent <
3841 RuntimePropsOptions = { } ,
@@ -42,6 +45,7 @@ export type DefineVaporComponent<
4245 Slots extends StaticSlots = StaticSlots ,
4346 Exposed extends Record < string , any > = Record < string , any > ,
4447 TypeRefs extends Record < string , unknown > = { } ,
48+ TypeEl extends Block = Block ,
4549 MakeDefaultsOptional extends boolean = true ,
4650 InferredProps = string extends RuntimePropsKeys
4751 ? ComponentObjectPropsOptions extends RuntimePropsOptions
@@ -62,6 +66,7 @@ export type DefineVaporComponent<
6266 Emits ,
6367 Slots ,
6468 Exposed ,
69+ TypeEl ,
6570 TypeRefs
6671 >
6772> &
@@ -78,12 +83,13 @@ export type DefineVaporSetupFnComponent<
7883 Emits extends EmitsOptions = { } ,
7984 Slots extends SlotsType = SlotsType ,
8085 Exposed extends Record < string , any > = Record < string , any > ,
86+ TypeEl extends Block = Block ,
8187 ResolvedProps extends Record < string , any > = Props &
8288 EmitsToProps < Emits > &
8389 VaporPublicProps ,
8490> = new (
8591 props ?: ResolvedProps ,
86- ) => VaporComponentInstance < ResolvedProps , Emits , Slots , Exposed >
92+ ) => VaporComponentInstance < ResolvedProps , Emits , Slots , Exposed , TypeEl >
8793
8894// overload 1: direct setup function
8995// (uses user defined props interface)
@@ -93,6 +99,7 @@ export function defineVaporComponent<
9399 RuntimeEmitsKeys extends string = string ,
94100 Slots extends StaticSlots = StaticSlots ,
95101 Exposed extends Record < string , any > = Record < string , any > ,
102+ TypeEl extends Block = Block ,
96103> (
97104 setup : (
98105 props : Props ,
@@ -102,7 +109,7 @@ export function defineVaporComponent<
102109 attrs : Record < string , any >
103110 expose : ( exposed : Exposed ) => void
104111 } ,
105- ) => RenderReturn ,
112+ ) => RenderReturn < TypeEl > ,
106113 extraOptions ?: ObjectVaporComponent <
107114 ( keyof Props ) [ ] ,
108115 Emits ,
@@ -111,13 +118,14 @@ export function defineVaporComponent<
111118 Exposed
112119 > &
113120 ThisType < void > ,
114- ) : DefineVaporSetupFnComponent < Props , Emits , Slots , Exposed >
121+ ) : DefineVaporSetupFnComponent < Props , Emits , Slots , Exposed , TypeEl >
115122export function defineVaporComponent <
116123 Props extends Record < string , any > ,
117124 Emits extends EmitsOptions = { } ,
118125 RuntimeEmitsKeys extends string = string ,
119126 Slots extends StaticSlots = StaticSlots ,
120127 Exposed extends Record < string , any > = Record < string , any > ,
128+ TypeEl extends Block = Block ,
121129> (
122130 setup : (
123131 props : Props ,
@@ -127,7 +135,7 @@ export function defineVaporComponent<
127135 attrs : Record < string , any >
128136 expose : ( exposed : Exposed ) => void
129137 } ,
130- ) => RenderReturn ,
138+ ) => RenderReturn < TypeEl > ,
131139 extraOptions ?: ObjectVaporComponent <
132140 ComponentObjectPropsOptions < Props > ,
133141 Emits ,
@@ -136,7 +144,7 @@ export function defineVaporComponent<
136144 Exposed
137145 > &
138146 ThisType < void > ,
139- ) : DefineVaporSetupFnComponent < Props , Emits , Slots , Exposed >
147+ ) : DefineVaporSetupFnComponent < Props , Emits , Slots , Exposed , TypeEl >
140148
141149// overload 2: defineVaporComponent with options object, infer props from options
142150export function defineVaporComponent <
@@ -163,13 +171,15 @@ export function defineVaporComponent<
163171 : ExtractPropTypes < RuntimePropsOptions >
164172 : { [ key in RuntimePropsKeys ] ?: any } ,
165173 TypeRefs extends Record < string , unknown > = { } ,
174+ TypeEl extends Block = Block ,
166175> (
167176 options : ObjectVaporComponent <
168177 RuntimePropsOptions | RuntimePropsKeys [ ] ,
169178 ResolvedEmits ,
170179 RuntimeEmitsKeys ,
171180 Slots ,
172181 Exposed ,
182+ TypeEl ,
173183 InferredProps
174184 > & {
175185 /**
@@ -184,6 +194,10 @@ export function defineVaporComponent<
184194 * @private for language-tools use only
185195 */
186196 __typeRefs ?: TypeRefs
197+ /**
198+ * @private for language-tools use only
199+ */
200+ __typeEl ?: TypeEl
187201 } & ThisType < void > ,
188202) : DefineVaporComponent <
189203 RuntimePropsOptions ,
@@ -193,6 +207,7 @@ export function defineVaporComponent<
193207 Slots ,
194208 Exposed extends Block ? Record < string , any > : Exposed ,
195209 TypeRefs ,
210+ TypeEl ,
196211 // MakeDefaultsOptional - if TypeProps is provided, set to false to use
197212 // user props types verbatim
198213 unknown extends TypeProps ? true : false ,
0 commit comments