66 * found in the LICENSE file at https://angular.io/license
77 */
88
9- import { ApplicationRef , DebugNode , NgZone , RootRenderer , getDebugNode , isDevMode } from '@angular/core' ;
9+ import { ApplicationRef , DebugNode , NgZone , Optional , RootRenderer , getDebugNode , isDevMode } from '@angular/core' ;
1010
1111import { DebugDomRootRenderer } from '../../../core_private' ;
12+ import { StringMapWrapper } from '../../facade/collection' ;
1213import { getDOM } from '../dom_adapter' ;
1314import { DomRootRenderer } from '../dom_renderer' ;
1415
@@ -30,24 +31,44 @@ export function inspectNativeElement(element: any /** TODO #9100 */): DebugNode
3031 return getDebugNode ( element ) ;
3132}
3233
33- export function _createConditionalRootRenderer ( rootRenderer : any /** TODO #9100 */ ) {
34+ /**
35+ * @experimental
36+ */
37+ export class NgProbeToken {
38+ constructor ( private name : string , private token : any ) { }
39+ }
40+
41+ export function _createConditionalRootRenderer (
42+ rootRenderer : any /** TODO #9100 */ , extraTokens : NgProbeToken [ ] ) {
3443 if ( isDevMode ( ) ) {
35- return _createRootRenderer ( rootRenderer ) ;
44+ return _createRootRenderer ( rootRenderer , extraTokens ) ;
3645 }
3746 return rootRenderer ;
3847}
3948
40- function _createRootRenderer ( rootRenderer : any /** TODO #9100 */ ) {
49+ function _createRootRenderer ( rootRenderer : any /** TODO #9100 */ , extraTokens : NgProbeToken [ ] ) {
4150 getDOM ( ) . setGlobalVar ( INSPECT_GLOBAL_NAME , inspectNativeElement ) ;
42- getDOM ( ) . setGlobalVar ( CORE_TOKENS_GLOBAL_NAME , CORE_TOKENS ) ;
51+ getDOM ( ) . setGlobalVar (
52+ CORE_TOKENS_GLOBAL_NAME ,
53+ StringMapWrapper . merge ( CORE_TOKENS , _ngProbeTokensToMap ( extraTokens || [ ] ) ) ) ;
4354 return new DebugDomRootRenderer ( rootRenderer ) ;
4455}
4556
57+ function _ngProbeTokensToMap ( tokens : NgProbeToken [ ] ) : { [ name : string ] : any } {
58+ return tokens . reduce ( ( prev : any , t : any ) => ( prev [ t . name ] = t . token , prev ) , { } ) ;
59+ }
60+
4661/**
4762 * Providers which support debugging Angular applications (e.g. via `ng.probe`).
4863 */
49- export const ELEMENT_PROBE_PROVIDERS : any [ ] =
50- [ { provide : RootRenderer , useFactory : _createConditionalRootRenderer , deps : [ DomRootRenderer ] } ] ;
64+ export const ELEMENT_PROBE_PROVIDERS : any [ ] = [ {
65+ provide : RootRenderer ,
66+ useFactory : _createConditionalRootRenderer ,
67+ deps : [ DomRootRenderer , [ NgProbeToken , new Optional ( ) ] ]
68+ } ] ;
5169
52- export const ELEMENT_PROBE_PROVIDERS_PROD_MODE : any [ ] =
53- [ { provide : RootRenderer , useFactory : _createRootRenderer , deps : [ DomRootRenderer ] } ] ;
70+ export const ELEMENT_PROBE_PROVIDERS_PROD_MODE : any [ ] = [ {
71+ provide : RootRenderer ,
72+ useFactory : _createRootRenderer ,
73+ deps : [ DomRootRenderer , [ NgProbeToken , new Optional ( ) ] ]
74+ } ] ;
0 commit comments