@@ -132,16 +132,17 @@ export const createPropertyTable = (node, withHeading = true) => {
132132 * Generates all valid function signatures based on optional parameters
133133 * @param {string } functionName - Name of the function
134134 * @param {import('../../legacy-json/types.d.ts').MethodSignature } signature - Signature object
135+ * @param {string } prefix - `'new '` or `''`
135136 */
136- export const generateSignatures = ( functionName , signature ) => {
137+ export const generateSignatures = ( functionName , signature , prefix = '' ) => {
137138 const { params, return : returnType } = signature ;
138139 const returnStr = returnType ? `: ${ returnType . type } ` : '' ;
139140
140141 // Handle case with no optional parameters
141142 const optionalParams = params . filter ( param => param . optional ) ;
142143 if ( ! optionalParams . length ) {
143144 const paramsStr = params . map ( param => param . name ) . join ( ', ' ) ;
144- return [ `${ functionName } (${ paramsStr } )${ returnStr } ` ] ;
145+ return [ `${ prefix } ${ functionName } (${ paramsStr } )${ returnStr } ` ] ;
145146 }
146147
147148 // Find indexes of optional parameters
@@ -175,7 +176,7 @@ export const generateSignatures = (functionName, signature) => {
175176 } )
176177 . join ( ', ' ) ;
177178
178- signatures . push ( `${ functionName } (${ paramsStr } )${ returnStr } ` ) ;
179+ signatures . push ( `${ prefix } ${ functionName } (${ paramsStr } )${ returnStr } ` ) ;
179180 }
180181
181182 return signatures ;
@@ -185,11 +186,13 @@ export const generateSignatures = (functionName, signature) => {
185186 * Creates a code block with function signatures
186187 * @param {string } functionName - Name of the function
187188 * @param {import('../../legacy-json/types.d.ts').MethodSignature } signature - Signature object
189+ * @param {string } prefix - `'new '` or `''`
188190 */
189- export const createSignatureCodeBlock = ( functionName , signature ) => {
190- const signatures = generateSignatures ( functionName , signature ) ;
191+ export const createSignatureCodeBlock = ( functionName , signature , prefix ) => {
192+ const signatures = generateSignatures ( functionName , signature , prefix ) ;
191193 const codeContent = signatures . join ( '\n' ) ;
192- return highlightToHast ( codeContent , 'typescript' ) ;
194+ const highlighted = highlightToHast ( codeContent , 'typescript' ) ;
195+ return createElement ( 'div' , { class : 'signature' } , [ highlighted ] ) ;
193196} ;
194197
195198/**
@@ -226,5 +229,13 @@ export default ({ children }, { data }, idx) => {
226229 const signature = parseSignature ( data . text , params ) ;
227230 const displayName = getFullName ( data ) ;
228231
229- children . splice ( idx , 0 , createSignatureCodeBlock ( displayName , signature ) ) ;
232+ children . splice (
233+ idx ,
234+ 0 ,
235+ createSignatureCodeBlock (
236+ displayName ,
237+ signature ,
238+ data . type === 'ctor' ? 'new ' : ''
239+ )
240+ ) ;
230241} ;
0 commit comments