@@ -10,7 +10,7 @@ import {AnimationKeyframe} from '../animation/animation_keyframe';
1010import { AnimationPlayer } from '../animation/animation_player' ;
1111import { AnimationStyles } from '../animation/animation_styles' ;
1212import { isPresent } from '../facade/lang' ;
13- import { RenderComponentType , RenderDebugInfo , Renderer , RootRenderer } from '../render/api' ;
13+ import { RenderComponentType , RenderDebugInfo , Renderer , RendererV2 , RootRenderer } from '../render/api' ;
1414
1515import { DebugElement , DebugNode , EventListener , getDebugNode , indexDebugNode , removeDebugNodeFromIndex } from './debug_node' ;
1616
@@ -22,7 +22,7 @@ export class DebugDomRootRenderer implements RootRenderer {
2222 }
2323}
2424
25- export class DebugDomRenderer {
25+ export class DebugDomRenderer implements Renderer {
2626 constructor ( private _delegate : Renderer ) { }
2727
2828 selectRootElement ( selectorOrNode : string | any , debugInfo ?: RenderDebugInfo ) : any {
@@ -81,7 +81,7 @@ export class DebugDomRenderer {
8181 detachView ( viewRootNodes : any [ ] ) {
8282 viewRootNodes . forEach ( ( node ) => {
8383 const debugNode = getDebugNode ( node ) ;
84- if ( isPresent ( debugNode ) && isPresent ( debugNode . parent ) ) {
84+ if ( debugNode && debugNode . parent ) {
8585 debugNode . parent . removeChild ( debugNode ) ;
8686 }
8787 } ) ;
@@ -156,3 +156,151 @@ export class DebugDomRenderer {
156156 element , startingStyles , keyframes , duration , delay , easing , previousPlayers ) ;
157157 }
158158}
159+
160+ export class DebugDomRendererV2 implements RendererV2 {
161+ constructor ( private _delegate : RendererV2 ) { }
162+
163+ createElement ( name : string , namespace ?: string , debugInfo ?: any ) : any {
164+ const el = this . _delegate . createElement ( name , namespace , debugInfo ) ;
165+ const debugEl = new DebugElement ( el , null , debugInfo ) ;
166+ debugEl . name = name ;
167+ indexDebugNode ( debugEl ) ;
168+ return el ;
169+ }
170+
171+ createComment ( value : string , debugInfo ?: any ) : any {
172+ const comment = this . _delegate . createComment ( value , debugInfo ) ;
173+ const debugEl = new DebugNode ( comment , null , debugInfo ) ;
174+ indexDebugNode ( debugEl ) ;
175+ return comment ;
176+ }
177+
178+ createText ( value : string , debugInfo ?: any ) : any {
179+ const text = this . _delegate . createText ( value , debugInfo ) ;
180+ const debugEl = new DebugNode ( text , null , debugInfo ) ;
181+ indexDebugNode ( debugEl ) ;
182+ return text ;
183+ }
184+
185+ appendChild ( parent : any , newChild : any ) : void {
186+ const debugEl = getDebugNode ( parent ) ;
187+ const debugChildEl = getDebugNode ( newChild ) ;
188+ if ( debugEl && debugChildEl && debugEl instanceof DebugElement ) {
189+ debugEl . addChild ( debugChildEl ) ;
190+ }
191+ this . _delegate . appendChild ( parent , newChild ) ;
192+ }
193+
194+ insertBefore ( parent : any , newChild : any , refChild : any ) : void {
195+ const debugEl = getDebugNode ( parent ) ;
196+ const debugChildEl = getDebugNode ( newChild ) ;
197+ const debugRefEl = getDebugNode ( refChild ) ;
198+ if ( debugEl && debugChildEl && debugEl instanceof DebugElement ) {
199+ debugEl . insertBefore ( debugRefEl , debugChildEl ) ;
200+ }
201+
202+ this . _delegate . insertBefore ( parent , newChild , refChild ) ;
203+ }
204+
205+ removeChild ( parent : any , oldChild : any ) : void {
206+ const debugEl = getDebugNode ( parent ) ;
207+ const debugChildEl = getDebugNode ( oldChild ) ;
208+ if ( debugEl && debugChildEl && debugEl instanceof DebugElement ) {
209+ debugEl . removeChild ( debugChildEl ) ;
210+ }
211+ this . _delegate . removeChild ( parent , oldChild ) ;
212+ }
213+
214+ selectRootElement ( selectorOrNode : string | any , debugInfo ?: any ) : any {
215+ const el = this . _delegate . selectRootElement ( selectorOrNode , debugInfo ) ;
216+ const debugEl = new DebugElement ( el , null , debugInfo ) ;
217+ indexDebugNode ( debugEl ) ;
218+ return el ;
219+ }
220+
221+ parentNode ( node : any ) : any { return this . _delegate . parentNode ( node ) ; }
222+
223+ nextSibling ( node : any ) : any { return this . _delegate . nextSibling ( node ) ; }
224+
225+ setAttribute ( el : any , name : string , value : string , namespace ?: string ) : void {
226+ const debugEl = getDebugNode ( el ) ;
227+ if ( debugEl && debugEl instanceof DebugElement ) {
228+ const fullName = namespace ? namespace + ':' + name : name ;
229+ debugEl . attributes [ fullName ] = value ;
230+ }
231+ this . _delegate . setAttribute ( el , name , value , namespace ) ;
232+ }
233+
234+ removeAttribute ( el : any , name : string , namespace ?: string ) : void {
235+ const debugEl = getDebugNode ( el ) ;
236+ if ( debugEl && debugEl instanceof DebugElement ) {
237+ const fullName = namespace ? namespace + ':' + name : name ;
238+ debugEl . attributes [ fullName ] = null ;
239+ }
240+ this . _delegate . removeAttribute ( el , name , namespace ) ;
241+ }
242+
243+ setBindingDebugInfo ( el : any , propertyName : string , propertyValue : string ) : void {
244+ this . _delegate . setBindingDebugInfo ( el , propertyName , propertyValue ) ;
245+ }
246+
247+ removeBindingDebugInfo ( el : any , propertyName : string ) : void {
248+ this . _delegate . removeBindingDebugInfo ( el , propertyName ) ;
249+ }
250+
251+ addClass ( el : any , name : string ) : void {
252+ const debugEl = getDebugNode ( el ) ;
253+ if ( debugEl && debugEl instanceof DebugElement ) {
254+ debugEl . classes [ name ] = true ;
255+ }
256+ this . _delegate . addClass ( el , name ) ;
257+ }
258+
259+ removeClass ( el : any , name : string ) : void {
260+ const debugEl = getDebugNode ( el ) ;
261+ if ( debugEl && debugEl instanceof DebugElement ) {
262+ debugEl . classes [ name ] = false ;
263+ }
264+ this . _delegate . removeClass ( el , name ) ;
265+ }
266+
267+ setStyle ( el : any , style : string , value : any , hasVendorPrefix : boolean , hasImportant : boolean ) :
268+ void {
269+ const debugEl = getDebugNode ( el ) ;
270+ if ( debugEl && debugEl instanceof DebugElement ) {
271+ debugEl . styles [ style ] = value ;
272+ }
273+ this . _delegate . setStyle ( el , style , value , hasVendorPrefix , hasImportant ) ;
274+ }
275+
276+ removeStyle ( el : any , style : string , hasVendorPrefix : boolean ) : void {
277+ const debugEl = getDebugNode ( el ) ;
278+ if ( debugEl && debugEl instanceof DebugElement ) {
279+ debugEl . styles [ style ] = null ;
280+ }
281+ this . _delegate . removeStyle ( el , style , hasVendorPrefix ) ;
282+ }
283+
284+ setProperty ( el : any , name : string , value : any ) : void {
285+ const debugEl = getDebugNode ( el ) ;
286+ if ( debugEl && debugEl instanceof DebugElement ) {
287+ debugEl . properties [ name ] = value ;
288+ }
289+ this . _delegate . setProperty ( el , name , value ) ;
290+ }
291+
292+ setText ( node : any , value : string ) : void { this . _delegate . setText ( node , value ) ; }
293+
294+ listen (
295+ target : 'document' | 'windows' | 'body' | any , eventName : string ,
296+ callback : ( event : any ) => boolean ) : ( ) => void {
297+ if ( typeof target !== 'string' ) {
298+ const debugEl = getDebugNode ( target ) ;
299+ if ( debugEl ) {
300+ debugEl . listeners . push ( new EventListener ( eventName , callback ) ) ;
301+ }
302+ }
303+
304+ return this . _delegate . listen ( target , eventName , callback ) ;
305+ }
306+ }
0 commit comments