1
- import { afterNextRender , Directive , effect , inject , input , isSignal , signal } from '@angular/core' ;
1
+ import { afterNextRender , DestroyRef , Directive , effect , inject , input , isSignal , signal } from '@angular/core' ;
2
+ import { injectStore } from 'angular-three' ;
2
3
import { Pane } from 'tweakpane' ;
3
4
import { NgtTweakFolder } from './folder' ;
4
5
import { NgtTweakTitle } from './title' ;
@@ -16,18 +17,39 @@ export class NgtTweakPane {
16
17
17
18
private title = inject ( NgtTweakTitle , { host : true } ) ;
18
19
private folder = inject ( NgtTweakFolder , { host : true } ) ;
20
+ private store = injectStore ( ) ;
19
21
private pane = signal < Pane | null > ( null ) ;
20
22
21
23
constructor ( ) {
22
24
this . folder . isSelf = false ;
23
25
24
26
afterNextRender ( ( ) => {
25
- const pane = new Pane ( { title : this . title . title ( ) , expanded : this . folder . expanded ( ) } ) ;
27
+ // the ngt-canvas
28
+ const parentElement = this . store . snapshot . gl . domElement . parentElement ?. parentElement ;
29
+
30
+ const pane = new Pane ( {
31
+ title : this . title . title ( ) ,
32
+ expanded : this . folder . expanded ( ) ,
33
+ } ) ;
34
+
35
+ if ( parentElement && pane . element . parentElement ) {
36
+ parentElement . appendChild ( pane . element . parentElement ) ;
37
+ }
26
38
27
39
this . pane . set ( pane ) ;
28
40
this . folder . parentFolder . set ( pane ) ;
29
41
} ) ;
30
42
43
+ inject ( DestroyRef ) . onDestroy ( ( ) => {
44
+ const pane = this . pane ( ) ;
45
+ if ( ! pane ) return ;
46
+
47
+ const parentElement = this . store . snapshot . gl . domElement . parentElement ?. parentElement ;
48
+ if ( ! parentElement || ! pane . element . parentElement ) return ;
49
+
50
+ pane . element . parentElement . remove ( ) ;
51
+ } ) ;
52
+
31
53
effect ( ( ) => {
32
54
this . updateStyleEffect ( 'top' ) ;
33
55
} ) ;
0 commit comments