@@ -173,6 +173,8 @@ export default class MarkersPlugin {
173
173
this . markers . push ( marker ) ;
174
174
this . _updateMarkerPositions ( ) ;
175
175
176
+ this . _registerEvents ( ) ;
177
+
176
178
return marker ;
177
179
}
178
180
@@ -201,6 +203,8 @@ export default class MarkersPlugin {
201
203
202
204
this . wrapper . removeChild ( marker . el ) ;
203
205
this . markers . splice ( index , 1 ) ;
206
+
207
+ this . _unregisterEvents ( ) ;
204
208
}
205
209
206
210
_createPointerSVG ( color , position ) {
@@ -390,6 +394,37 @@ export default class MarkersPlugin {
390
394
this . wavesurfer . fireEvent ( "marker-drop" , this . selectedMarker , event ) ;
391
395
}
392
396
397
+ _registerEvents ( ) {
398
+ if ( ! this . markers . find ( marker => marker . draggable ) ) {
399
+ return ;
400
+ }
401
+ //we have some draggable markers, check for listeners
402
+ if ( ! this . onMouseMove ) {
403
+ this . onMouseMove = ( e ) => this . _onMouseMove ( e ) ;
404
+ window . addEventListener ( 'mousemove' , this . onMouseMove ) ;
405
+ }
406
+
407
+ if ( ! this . onMouseUp ) {
408
+ this . onMouseUp = ( e ) => this . _onMouseUp ( e ) ;
409
+ window . addEventListener ( "mouseup" , this . onMouseUp ) ;
410
+ }
411
+ }
412
+
413
+ _unregisterEvents ( ) {
414
+ if ( this . markers . find ( marker => marker . draggable ) ) {
415
+ return ;
416
+ }
417
+ //we don't have any draggable markers, unregister listeners
418
+ if ( this . onMouseMove ) {
419
+ window . removeEventListener ( 'mousemove' , this . onMouseMove ) ;
420
+ this . onMouseMove = null ;
421
+ }
422
+ if ( this . onMouseUp ) {
423
+ window . removeEventListener ( "mouseup" , this . onMouseUp ) ;
424
+ this . onMouseUp = null ;
425
+ }
426
+ }
427
+
393
428
/**
394
429
* Remove all markers
395
430
*/
0 commit comments