File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -90,6 +90,38 @@ export const useVaultTreeStore = defineStore('vaultTree', () => {
9090 return getActiveTree ( ) . loadingNodeIds . has ( id ) ?? false ;
9191 }
9292
93+ function isNodeInSubtree ( nodeId : number , rootNodeId : number ) : boolean {
94+ if ( rootNodeId === nodeId ) {
95+ return true ;
96+ }
97+
98+ const tree = getActiveTree ( ) ;
99+
100+ if ( ! tree . loadedFolderIds . has ( rootNodeId ) ) {
101+ return false ;
102+ }
103+
104+ const stack : number [ ] = [ ...( tree . childrenByParentId [ rootNodeId ] ?? [ ] ) ] ;
105+
106+ while ( stack . length > 0 ) {
107+ const currentId = stack . pop ( ) ! ;
108+
109+ if ( currentId === nodeId ) {
110+ return true ;
111+ }
112+
113+ if ( tree . loadedFolderIds . has ( currentId ) ) {
114+ const children = tree . childrenByParentId [ currentId ] ;
115+
116+ if ( children ) {
117+ stack . push ( ...children ) ;
118+ }
119+ }
120+ }
121+
122+ return false ;
123+ }
124+
93125 function startLoadingFolder ( id : number ) : void {
94126 getActiveTree ( ) . loadingNodeIds . add ( id ) ;
95127 }
@@ -308,6 +340,7 @@ export const useVaultTreeStore = defineStore('vaultTree', () => {
308340 isFolderExpanded,
309341 isFolderLoaded,
310342 isFolderLoading,
343+ isNodeInSubtree,
311344 startLoadingFolder,
312345 finishLoadingFolder,
313346 setLoadedFolder,
You can’t perform that action at this time.
0 commit comments