@@ -341,8 +341,19 @@ export class MarkedPlugin extends ContextAwareRendererComponent {
341341 const loader = this . application . options . getValue ( "markdownItLoader" ) ;
342342 loader ( this . parser ) ;
343343
344+ function defaultRender (
345+ tokens : md . Token [ ] ,
346+ idx : number ,
347+ options : md . Options ,
348+ _env : any ,
349+ self : md . Renderer ,
350+ ) : string {
351+ return self . renderToken ( tokens , idx , options ) ;
352+ }
353+
344354 // Add anchor links for headings in readme, and add them to the "On this page" section
345- this . parser . renderer . rules [ "heading_open" ] = ( tokens , idx ) => {
355+ const headingOpenRenderer = this . parser . renderer . rules [ "heading_open" ] || defaultRender ;
356+ this . parser . renderer . rules [ "heading_open" ] = ( tokens , idx , options , env , self ) => {
346357 const token = tokens [ idx ] ;
347358 const content = getTokenTextContent ( tokens [ idx + 1 ] ) ;
348359 const level = token . markup . length ;
@@ -356,13 +367,21 @@ export class MarkedPlugin extends ContextAwareRendererComponent {
356367 level,
357368 } ) ;
358369
359- return `<${ token . tag } id="${ slug } " class="tsd-anchor-link">` ;
370+ token . attrSet ( "id" , slug ) ;
371+ token . attrSet ( "class" , "tsd-anchor-link" ) ;
372+
373+ return headingOpenRenderer ( tokens , idx , options , env , self ) ;
360374 } ;
361- this . parser . renderer . rules [ "heading_close" ] = ( tokens , idx ) => {
362- return `${ JSX . renderElement ( anchorIcon ( this . renderContext , this . lastHeaderSlug ) ) } </${ tokens [ idx ] . tag } >` ;
375+
376+ const headingCloseRenderer = this . parser . renderer . rules [ "heading_close" ] || defaultRender ;
377+ this . parser . renderer . rules [ "heading_close" ] = ( ...args ) => {
378+ return `${ JSX . renderElement ( anchorIcon ( this . renderContext , this . lastHeaderSlug ) ) } ${
379+ headingCloseRenderer ( ...args )
380+ } `;
363381 } ;
364382
365- this . parser . renderer . rules [ "link_open" ] = ( tokens , idx , options , _env , self ) => {
383+ const linkOpenRenderer = this . parser . renderer . rules [ "link_open" ] || defaultRender ;
384+ this . parser . renderer . rules [ "link_open" ] = ( tokens , idx , options , env , self ) => {
366385 const token = tokens [ idx ] ;
367386 const href = token . attrGet ( "href" ) ;
368387 if ( href ) {
@@ -383,9 +402,11 @@ export class MarkedPlugin extends ContextAwareRendererComponent {
383402
384403 token . attrSet ( "href" , href ) ;
385404 }
386- return self . renderToken ( tokens , idx , options ) ;
405+
406+ return linkOpenRenderer ( tokens , idx , options , env , self ) ;
387407 } ;
388408
409+ // Don't need custom rendering here as this is a TypeDoc-provided rule name
389410 this . parser . renderer . rules [ "alert_open" ] = ( tokens , idx ) => {
390411 const icon = this . renderContext . icons [ tokens [ idx ] . attrGet ( "icon" ) as AlertIconName ] ;
391412 const iconHtml = JSX . renderElement ( icon ( ) ) ;
0 commit comments