@@ -10,6 +10,7 @@ import {
1010} from '@angular/core' ;
1111import { NGT_CATALOGUE } from '../di/catalogue' ;
1212import { NgtStore } from '../stores/store' ;
13+ import { NgtAnyRecord } from '../types' ;
1314import { getLocalState , prepare } from '../utils/instance' ;
1415import { is } from '../utils/is' ;
1516import { NGT_COMPOUND_PREFIXES } from './di' ;
@@ -345,16 +346,30 @@ export class NgtRenderer implements Renderer2 {
345346 null
346347 ) ;
347348 // if target is DOM node, then we pass that to delegate Renderer
349+ const callbackWithCdr = ( event : any ) => {
350+ const value = callback ( event ) ;
351+ if ( targetCdr ) targetCdr . detectChanges ( ) ;
352+ this . store . rootCdr . detectChanges ( ) ;
353+ return value ;
354+ } ;
348355 if ( this . store . isDOM ( target ) ) {
349- const callbackWithCdr = ( event : any ) => {
350- const value = callback ( event ) ;
351- if ( targetCdr ) targetCdr . detectChanges ( ) ;
352- this . store . rootCdr . detectChanges ( ) ;
353- return value ;
354- } ;
355356 return this . delegate . listen ( target , eventName , callbackWithCdr ) ;
356357 }
357358
359+ // @ts -expect-error - we know that target is not DOM node
360+ if ( target === this . store . rootScene ) {
361+ let [ domTarget , event ] = eventName . split ( ':' ) ;
362+ if ( event == null ) {
363+ event = domTarget ;
364+ domTarget = '' ;
365+ }
366+ const eventTarget =
367+ domTarget === 'window'
368+ ? ( target as NgtAnyRecord ) [ 'ownerDocument' ] [ 'defaultView' ]
369+ : ( target as NgtAnyRecord ) [ 'ownerDocument' ] ;
370+ return this . delegate . listen ( eventTarget , event , callbackWithCdr ) ;
371+ }
372+
358373 if (
359374 target . __ngt_renderer__ [ NgtRendererClassId . type ] === 'three' ||
360375 ( target . __ngt_renderer__ [ NgtRendererClassId . type ] === 'compound' &&
0 commit comments