@@ -46,6 +46,8 @@ public class DocumentationGroup : INodeNavigationItem<MarkdownFile, INavigationI
4646
4747 private readonly IRootNavigationItem < MarkdownFile , INavigationItem > ? _root ;
4848
49+ public List < MarkdownFile > ResolvedMarkdownFiles { get ; set ; }
50+
4951 protected virtual IRootNavigationItem < MarkdownFile , INavigationItem > DefaultNavigation =>
5052 _root ?? throw new InvalidOperationException ( "root navigation's model is not of type MarkdownFile" ) ;
5153
@@ -70,6 +72,7 @@ protected DocumentationGroup(string folderName,
7072 // We'll need to address this more structurally
7173 // ReSharper disable VirtualMemberCallInConstructor
7274 _root = toplevelTree ;
75+ ResolvedMarkdownFiles = [ ] ;
7376 toplevelTree ??= DefaultNavigation ;
7477 if ( parent ? . Depth == 0 )
7578 toplevelTree = DefaultNavigation ;
@@ -225,10 +228,22 @@ public async Task Resolve(Cancel ctx = default)
225228 if ( _resolved )
226229 return ;
227230
228- await Parallel . ForEachAsync ( FilesInOrder , ctx , async ( file , token ) => await file . MinimalParseAsync ( token ) ) ;
229- await Parallel . ForEachAsync ( GroupsInOrder , ctx , async ( group , token ) => await group . Resolve ( token ) ) ;
231+ // First add the index file
232+ ResolvedMarkdownFiles . Add ( Index ) ;
233+ // Then add all the files in this group
234+ ResolvedMarkdownFiles . AddRange ( FilesInOrder ) ;
235+ // Then add all files in subgroups, breadth first
236+ var treeGroups = new Queue < DocumentationGroup > ( GroupsInOrder ) ;
237+ while ( treeGroups . Count > 0 )
238+ {
239+ var group = treeGroups . Dequeue ( ) ;
240+ ResolvedMarkdownFiles . Add ( group . Index ) ;
241+ ResolvedMarkdownFiles . AddRange ( group . FilesInOrder ) ;
242+ foreach ( var subgroup in group . GroupsInOrder )
243+ treeGroups . Enqueue ( subgroup ) ;
244+ }
230245
231- _ = await Index . MinimalParseAsync ( ctx ) ;
246+ await Parallel . ForEachAsync ( ResolvedMarkdownFiles , ctx , async ( file , token ) => await file . MinimalParseAsync ( token ) ) ;
232247
233248 _resolved = true ;
234249 }
0 commit comments