@@ -27,18 +27,22 @@ addEventListener('message', ({ data }) => {
2727 if ( ! codePanelData ?. hasDiff ) {
2828 apiTreeBuilderData ! . diffStyle = FULL_DIFF_STYLE ; // If there is no diff nodes and tree diff will not work
2929 }
30-
31- if ( codePanelData ?. navigationTreeNodes && codePanelData ?. navigationTreeNodes . length > 0 )
32- {
33- isNavigationTreeCreated = true ;
34- navigationTree = codePanelData ?. navigationTreeNodes ;
35- }
30+
3631 buildCodePanelRows ( "root" , navigationTree ) ;
3732 const codePanelRowDataMessage : InsertCodePanelRowDataMessage = {
3833 directive : ReviewPageWorkerMessageDirective . UpdateCodePanelRowData ,
3934 payload : codePanelRowData
4035 } ;
4136
37+ if ( codePanelData ?. navigationTreeNodes && codePanelData ?. navigationTreeNodes . length > 0 )
38+ {
39+ isNavigationTreeCreated = true ;
40+ navigationTree = codePanelData ?. navigationTreeNodes ;
41+ //Remove navigation nodes for nodes that are not visible in diff style view
42+ navigationTree . forEach ( node => FilterVisibleNavigationNodes ( node ) ) ;
43+ navigationTree = navigationTree . filter ( n => n . visible ) ;
44+ }
45+
4246 postMessage ( codePanelRowDataMessage ) ;
4347
4448 const navigationTreeMessage : InsertCodePanelRowDataMessage = {
@@ -259,4 +263,18 @@ function shouldAppendIfRowIsHiddenAPI(row: CodePanelRowData) {
259263 } else {
260264 return true ;
261265 }
266+ }
267+
268+ function FilterVisibleNavigationNodes ( node : NavigationTreeNode ) {
269+ // Recursively perform a bottom up traversal and trim down any invisible nodes
270+ if ( node . children ) {
271+ for ( let child of node . children ) {
272+ FilterVisibleNavigationNodes ( child ) ;
273+ }
274+ node . children = node . children . filter ( c => c . visible ) ;
275+ }
276+
277+ if ( visibleNodes . has ( node . data . nodeIdHashed ) || ( node . children && node . children . some ( c => c . visible ) ) ) {
278+ node . visible = true ;
279+ }
262280}
0 commit comments