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