@@ -2,7 +2,7 @@ import React from 'react';
2
2
import PropTypes from 'prop-types' ;
3
3
import bindAll from 'lodash.bindall' ;
4
4
import AudioTrimmerComponent from '../components/audio-trimmer/audio-trimmer.jsx' ;
5
- import { getEventXY } from '../lib/touch-utils ' ;
5
+ import DragRecognizer from '../lib/drag-recognizer ' ;
6
6
7
7
const MIN_LENGTH = 0.01 ; // Used to stop sounds being trimmed smaller than 1%
8
8
@@ -14,54 +14,39 @@ class AudioTrimmer extends React.Component {
14
14
'handleTrimEndMouseDown' ,
15
15
'handleTrimStartMouseMove' ,
16
16
'handleTrimEndMouseMove' ,
17
- 'handleTrimStartMouseUp' ,
18
- 'handleTrimEndMouseUp' ,
19
17
'storeRef'
20
18
] ) ;
19
+ this . trimStartDragRecognizer = new DragRecognizer ( {
20
+ onDrag : this . handleTrimStartMouseMove ,
21
+ touchDragAngle : 90 ,
22
+ distanceThreshold : 0
23
+ } ) ;
24
+ this . trimEndDragRecognizer = new DragRecognizer ( {
25
+ onDrag : this . handleTrimEndMouseMove ,
26
+ touchDragAngle : 90 ,
27
+ distanceThreshold : 0
28
+ } ) ;
29
+
21
30
}
22
- handleTrimStartMouseMove ( e ) {
23
- const containerSize = this . containerElement . getBoundingClientRect ( ) . width ;
24
- const dx = ( getEventXY ( e ) . x - this . initialX ) / containerSize ;
31
+ handleTrimStartMouseMove ( currentOffset , initialOffset ) {
32
+ const dx = ( currentOffset . x - initialOffset . x ) / this . containerSize ;
25
33
const newTrim = Math . max ( 0 , Math . min ( this . props . trimEnd - MIN_LENGTH , this . initialTrim + dx ) ) ;
26
34
this . props . onSetTrimStart ( newTrim ) ;
27
- e . preventDefault ( ) ;
28
35
}
29
- handleTrimEndMouseMove ( e ) {
30
- const containerSize = this . containerElement . getBoundingClientRect ( ) . width ;
31
- const dx = ( getEventXY ( e ) . x - this . initialX ) / containerSize ;
36
+ handleTrimEndMouseMove ( currentOffset , initialOffset ) {
37
+ const dx = ( currentOffset . x - initialOffset . x ) / this . containerSize ;
32
38
const newTrim = Math . min ( 1 , Math . max ( this . props . trimStart + MIN_LENGTH , this . initialTrim + dx ) ) ;
33
39
this . props . onSetTrimEnd ( newTrim ) ;
34
- e . preventDefault ( ) ;
35
- }
36
- handleTrimStartMouseUp ( ) {
37
- window . removeEventListener ( 'mousemove' , this . handleTrimStartMouseMove ) ;
38
- window . removeEventListener ( 'mouseup' , this . handleTrimStartMouseUp ) ;
39
- window . removeEventListener ( 'touchmove' , this . handleTrimStartMouseMove ) ;
40
- window . removeEventListener ( 'touchend' , this . handleTrimStartMouseUp ) ;
41
- }
42
- handleTrimEndMouseUp ( ) {
43
- window . removeEventListener ( 'mousemove' , this . handleTrimEndMouseMove ) ;
44
- window . removeEventListener ( 'mouseup' , this . handleTrimEndMouseUp ) ;
45
- window . removeEventListener ( 'touchmove' , this . handleTrimEndMouseMove ) ;
46
- window . removeEventListener ( 'touchend' , this . handleTrimEndMouseUp ) ;
47
40
}
48
41
handleTrimStartMouseDown ( e ) {
49
- this . initialX = getEventXY ( e ) . x ;
42
+ this . containerSize = this . containerElement . getBoundingClientRect ( ) . width ;
43
+ this . trimStartDragRecognizer . start ( e ) ;
50
44
this . initialTrim = this . props . trimStart ;
51
- window . addEventListener ( 'mousemove' , this . handleTrimStartMouseMove ) ;
52
- window . addEventListener ( 'mouseup' , this . handleTrimStartMouseUp ) ;
53
- window . addEventListener ( 'touchmove' , this . handleTrimStartMouseMove ) ;
54
- window . addEventListener ( 'touchend' , this . handleTrimStartMouseUp ) ;
55
- e . preventDefault ( ) ;
56
45
}
57
46
handleTrimEndMouseDown ( e ) {
58
- this . initialX = getEventXY ( e ) . x ;
47
+ this . containerSize = this . containerElement . getBoundingClientRect ( ) . width ;
48
+ this . trimEndDragRecognizer . start ( e ) ;
59
49
this . initialTrim = this . props . trimEnd ;
60
- window . addEventListener ( 'mousemove' , this . handleTrimEndMouseMove ) ;
61
- window . addEventListener ( 'mouseup' , this . handleTrimEndMouseUp ) ;
62
- window . addEventListener ( 'touchmove' , this . handleTrimEndMouseMove ) ;
63
- window . addEventListener ( 'touchend' , this . handleTrimEndMouseUp ) ;
64
- e . preventDefault ( ) ;
65
50
}
66
51
storeRef ( el ) {
67
52
this . containerElement = el ;
0 commit comments