@@ -26,6 +26,7 @@ export type NgtsOrbitControlsState = {
26
26
makeDefault : boolean ;
27
27
regress : boolean ;
28
28
enableDamping : boolean ;
29
+ keyEvents : boolean | HTMLElement ;
29
30
} ;
30
31
31
32
declare global {
@@ -68,6 +69,10 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
68
69
this . set ( { enableDamping } ) ;
69
70
}
70
71
72
+ @Input ( ) set keyEvents ( keyEvents : boolean ) {
73
+ this . set ( { keyEvents } ) ;
74
+ }
75
+
71
76
@Output ( ) change = new EventEmitter < THREE . Event > ( ) ;
72
77
@Output ( ) start = new EventEmitter < THREE . Event > ( ) ;
73
78
@Output ( ) end = new EventEmitter < THREE . Event > ( ) ;
@@ -78,7 +83,7 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
78
83
readonly damping = this . select ( 'enableDamping' ) ;
79
84
80
85
constructor ( ) {
81
- super ( { enableDamping : true , regress : false , makeDefault : false } ) ;
86
+ super ( { enableDamping : true , regress : false , makeDefault : false , keyEvents : false } ) ;
82
87
injectBeforeRender (
83
88
( ) => {
84
89
const controls = this . controlsRef . untracked ;
@@ -118,10 +123,12 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
118
123
const domElement = this . select ( 'domElement' ) ;
119
124
const regress = this . select ( 'regress' ) ;
120
125
const invalidate = this . #store. select ( 'invalidate' ) ;
126
+ const keyEvents = this . select ( 'keyEvents' ) ;
121
127
122
128
const trigger = computed ( ( ) => {
123
129
const eventsSource = this . #store. get ( 'events' , 'connected' ) ;
124
130
return {
131
+ keyEvents : keyEvents ( ) ,
125
132
controls : this . controlsRef . nativeElement ,
126
133
domElement : domElement ( ) || eventsSource || glDomElement ( ) ,
127
134
regress : regress ( ) ,
@@ -130,9 +137,13 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
130
137
} ) ;
131
138
132
139
effect ( ( onCleanup ) => {
133
- const { domElement, controls } = trigger ( ) ;
140
+ const { domElement, controls, keyEvents } = trigger ( ) ;
134
141
if ( ! controls ) return ;
135
- controls . connect ( domElement ) ;
142
+ if ( keyEvents ) {
143
+ controls . connect ( keyEvents === true ? domElement : keyEvents ) ;
144
+ } else {
145
+ controls . connect ( domElement ) ;
146
+ }
136
147
onCleanup ( ( ) => void controls . dispose ( ) ) ;
137
148
} ) ;
138
149
}
0 commit comments