@@ -50,7 +50,12 @@ import {unHighlight} from './highlighter';
50
50
import { disableTimingAPI , enableTimingAPI , initializeOrGetDirectiveForestHooks } from './hooks' ;
51
51
import { start as startProfiling , stop as stopProfiling } from './hooks/capture' ;
52
52
import { ComponentTreeNode } from './interfaces' ;
53
- import { getElementRefByName , getComponentRefByName , parseRoutes } from './router-tree' ;
53
+ import {
54
+ getElementRefByName ,
55
+ getComponentRefByName ,
56
+ parseRoutes ,
57
+ RoutePropertyType ,
58
+ } from './router-tree' ;
54
59
import { ngDebugDependencyInjectionApiIsSupported } from './ng-debug-api/ng-debug-api' ;
55
60
import { setConsoleReference } from './set-console-reference' ;
56
61
import { serializeDirectiveState } from './state-serializer/state-serializer' ;
@@ -178,14 +183,20 @@ const navigateRouteCallback = (messageBus: MessageBus<Events>) => (path: string)
178
183
router . navigateByUrl ( path ) ;
179
184
} ;
180
185
181
- export const viewSourceFromRouter = ( path : string , type : string ) => {
186
+ /**
187
+ * Opens the source code of a component or a directive in the editor.
188
+ * @param name - The name of the component, provider, or directive to view source for.
189
+ * @param type - The type of the element to view source for component, provider, or directive.
190
+ * @returns - The element instance of the component, provider, or directive.
191
+ */
192
+ export const viewSourceFromRouter = ( name : string , type : RoutePropertyType ) => {
182
193
const router : any = getRouterInstance ( ) ;
183
194
184
195
let element ;
185
196
if ( type === 'component' ) {
186
- element = getComponentRefByName ( router . config , path ) ;
197
+ element = getComponentRefByName ( router . config , name ) ;
187
198
} else {
188
- element = getElementRefByName ( type , router . config , path ) ;
199
+ element = getElementRefByName ( type , router . config , name ) ;
189
200
}
190
201
return element ;
191
202
} ;
@@ -250,7 +261,7 @@ const getRoutes = (messageBus: MessageBus<Events>) => {
250
261
) ;
251
262
if ( forest . length === 0 ) return ;
252
263
253
- const rootInjector = ( forest [ 0 ] . resolutionPath ?? [ ] ) . find ( ( i ) => i . name === 'Root' ) ;
264
+ const rootInjector = forest [ 0 ] . resolutionPath ? .find ( ( i ) => i . name === 'Root' ) ;
254
265
if ( ! rootInjector ) return ;
255
266
256
267
const route = getRouterConfigFromRoot ( rootInjector ) ;
@@ -409,12 +420,21 @@ function getRouterInstance() {
409
420
initializeOrGetDirectiveForestHooks ( ) . getIndexedDirectiveForest ( ) ,
410
421
ngDebugDependencyInjectionApiIsSupported ( ) ,
411
422
) ;
412
- const rootInjector = ( forest [ 0 ] . resolutionPath ?? [ ] ) . find ( ( i ) => i . name === 'Root' ) ;
413
- const serializedProviderRecords = getSerializedProviderRecords ( rootInjector ! ) ?? [ ] ;
414
- const routerInstance = serializedProviderRecords . filter (
423
+ const rootInjector = forest [ 0 ] . resolutionPath ?. find ( ( i ) => i . name === 'Root' ) ;
424
+ if ( ! rootInjector ) {
425
+ return ;
426
+ }
427
+
428
+ const serializedProviderRecords = getSerializedProviderRecords ( rootInjector ) ;
429
+ const routerInstance = serializedProviderRecords ?. find (
415
430
( provider ) => provider . token === 'Router' , // get the instance of router using token
416
431
) ;
417
- const router = getInjectorInstance ( rootInjector ! , routerInstance [ 0 ] ) ;
432
+
433
+ if ( ! routerInstance ) {
434
+ return ;
435
+ }
436
+
437
+ const router = getInjectorInstance ( rootInjector , routerInstance ) ;
418
438
return router ;
419
439
}
420
440
@@ -594,14 +614,13 @@ const getInjectorInstance = (
594
614
595
615
const injector = idToInjector . get ( serializedInjector . id ) ! ;
596
616
const providerRecords = getInjectorProviders ( injector ) ;
597
- let value ;
598
617
599
618
if ( typeof serializedProvider . index === 'number' ) {
600
619
const provider = providerRecords [ serializedProvider . index ] ;
601
- value = injector . get ( provider . token , null , { optional : true } ) ;
620
+ return injector . get ( provider . token , null , { optional : true } ) ;
602
621
} else if ( Array . isArray ( serializedProvider . index ) ) {
603
622
const providers = serializedProvider . index . map ( ( index ) => providerRecords [ index ] ) ;
604
- value = injector . get ( providers [ 0 ] . token , null , { optional : true } ) ;
623
+ return injector . get ( providers [ 0 ] . token , null , { optional : true } ) ;
605
624
}
606
- return value ;
625
+ return null ;
607
626
} ;
0 commit comments