Skip to content

Commit 6cf56c3

Browse files
committed
refactor(core): update object events
1 parent cb9d206 commit 6cf56c3

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

libs/core/src/lib/utils/object-events.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import { DestroyRef, Directive, effect, ElementRef, inject, Injector, model, output, Renderer2 } from '@angular/core';
1+
import {
2+
computed,
3+
DestroyRef,
4+
Directive,
5+
effect,
6+
ElementRef,
7+
inject,
8+
Injector,
9+
model,
10+
output,
11+
Renderer2,
12+
} from '@angular/core';
213
import { assertInjector } from 'ngxtension/assert-injector';
314
import type * as THREE from 'three';
415
import type { NgtEventHandlers, NgtThreeEvent } from '../types';
@@ -42,10 +53,22 @@ export class NgtObjectEvents {
4253
wheel = output<NgtThreeEvent<WheelEvent>>();
4354

4455
// NOTE: we use model here to allow for the hostDirective host to set this value
45-
ngtObjectEvents = model<ElementRef<THREE.Object3D> | THREE.Object3D | null | undefined>();
56+
ngtObjectEvents = model<
57+
| ElementRef<THREE.Object3D>
58+
| THREE.Object3D
59+
| null
60+
| undefined
61+
| (() => ElementRef<THREE.Object3D> | THREE.Object3D | null | undefined)
62+
>();
4663

4764
constructor() {
48-
injectObjectEvents(this.ngtObjectEvents, {
65+
const obj = computed(() => {
66+
const ngtObject = this.ngtObjectEvents();
67+
if (typeof ngtObject === 'function') return ngtObject();
68+
return ngtObject;
69+
});
70+
71+
injectObjectEvents(obj, {
4972
click: this.emitEvent('click'),
5073
dblclick: this.emitEvent('dblclick'),
5174
contextmenu: this.emitEvent('contextmenu'),

0 commit comments

Comments
 (0)