@@ -55,14 +55,6 @@ const NGE = ({ dto, onOperation }: NGEProps) => {
55
55
const ngeRoot = frame . contentDocument ! . createElement ( 'sbb-root' ) as NGEElement ;
56
56
frame . contentDocument ! . body . appendChild ( ngeRoot ) ;
57
57
setNgeRootElement ( ngeRoot ) ;
58
-
59
- // listens to create, update and delete operations
60
- ngeRoot . addEventListener ( 'operation' , ( event : Event ) => {
61
- const customEvent = event as CustomEvent ;
62
- const op = customEvent . detail as NGEEvent ;
63
-
64
- if ( onOperation ) onOperation ( op , ngeRoot . netzgrafikDto ) ;
65
- } ) ;
66
58
} ;
67
59
68
60
frame . addEventListener ( 'load' , handleFrameLoad ) ;
@@ -84,6 +76,21 @@ const NGE = ({ dto, onOperation }: NGEProps) => {
84
76
}
85
77
} , [ dto , ngeRootElement ] ) ;
86
78
79
+ useEffect ( ( ) => {
80
+ if ( ngeRootElement && onOperation ) {
81
+ const fnOpListener = ( event : Event ) => {
82
+ const customEvent = event as CustomEvent ;
83
+ const op = customEvent . detail as NGEEvent ;
84
+ if ( onOperation ) onOperation ( op , ngeRootElement . netzgrafikDto ) ;
85
+ } ;
86
+ ngeRootElement . addEventListener ( 'operation' , fnOpListener ) ;
87
+ return ( ) => {
88
+ ngeRootElement . removeEventListener ( 'operation' , fnOpListener ) ;
89
+ } ;
90
+ }
91
+ return ( ) => { } ;
92
+ } , [ onOperation , ngeRootElement ] ) ;
93
+
87
94
return < iframe ref = { frameRef } srcDoc = { frameSrc } title = "NGE" className = "nge-iframe-container" /> ;
88
95
} ;
89
96
0 commit comments