Skip to content

Commit 46f9206

Browse files
committed
fix: adjust renderer listen to listen for DOM events if target is root Scene
1 parent 4026871 commit 46f9206

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

libs/angular-three/src/lib/renderer/renderer.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
} from '@angular/core';
1111
import { NGT_CATALOGUE } from '../di/catalogue';
1212
import { NgtStore } from '../stores/store';
13+
import { NgtAnyRecord } from '../types';
1314
import { getLocalState, prepare } from '../utils/instance';
1415
import { is } from '../utils/is';
1516
import { 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

Comments
 (0)