@@ -3,90 +3,95 @@ import { Component } from 'react'
3
3
import PropTypes from 'prop-types'
4
4
import ReactDOM from 'react-dom'
5
5
const events = [
6
- 'KeyDown' ,
7
- 'KeyPress' ,
8
- 'KeyUp' ,
9
- 'Click' ,
10
- 'ContextMenu' ,
11
- 'DoubleClick' ,
12
- 'Drag' ,
13
- 'DragEnd' ,
14
- 'DragEnter' ,
15
- 'DragExit' ,
16
- 'DragLeave' ,
17
- 'DragOver' ,
18
- 'DragStart' ,
19
- 'Drop' ,
20
- 'Focus' ,
21
- 'MouseDown' ,
22
- 'MouseEnter' ,
23
- 'MouseLeave' ,
24
- 'MouseMove' ,
25
- 'MouseOut' ,
26
- 'MouseOver' ,
27
- 'MouseUp' ,
28
- 'PointerOver' ,
29
- 'PointerEnter' ,
30
- 'PointerDown' ,
31
- 'PointerMove' ,
32
- 'PointerUp' ,
33
- 'PointerCancel' ,
34
- 'PointerOut' ,
35
- 'PointerLeave'
6
+ 'KeyDown' ,
7
+ 'KeyPress' ,
8
+ 'KeyUp' ,
9
+ 'Click' ,
10
+ 'ContextMenu' ,
11
+ 'DoubleClick' ,
12
+ 'Drag' ,
13
+ 'DragEnd' ,
14
+ 'DragEnter' ,
15
+ 'DragExit' ,
16
+ 'DragLeave' ,
17
+ 'DragOver' ,
18
+ 'DragStart' ,
19
+ 'Drop' ,
20
+ 'Focus' ,
21
+ 'MouseDown' ,
22
+ 'MouseEnter' ,
23
+ 'MouseLeave' ,
24
+ 'MouseMove' ,
25
+ 'MouseOut' ,
26
+ 'MouseOver' ,
27
+ 'MouseUp' ,
28
+ 'PointerOver' ,
29
+ 'PointerEnter' ,
30
+ 'PointerDown' ,
31
+ 'PointerMove' ,
32
+ 'PointerUp' ,
33
+ 'PointerCancel' ,
34
+ 'PointerOut' ,
35
+ 'PointerLeave' ,
36
+ 'Scroll' ,
37
+ 'TouchStart' ,
38
+ 'TouchMove' ,
39
+ 'TouchEnd' ,
40
+ 'TouchCancel'
36
41
]
37
42
38
43
const aliases = {
39
- DoubleClick : 'dblclick'
44
+ DoubleClick : 'dblclick'
40
45
}
41
46
42
47
const toEventName = ( event : string ) : string =>
43
- ( aliases [ event ] || event ) . toLowerCase ( )
48
+ ( aliases [ event ] || event ) . toLowerCase ( )
44
49
45
50
export default class NativeListener extends Component {
46
- static displayName = 'NativeListener'
47
- static propTypes = {
48
- children : ( props , propName ) => {
49
- if ( props [ propName ] . length ) {
50
- return new Error ( 'NativeListener can only wrap one element' )
51
- }
52
- } ,
53
- ...events . reduce (
54
- ( accumulator , event ) => ( {
55
- ...accumulator ,
56
- [ `on${ event } ` ] : PropTypes . func ,
57
- [ `on${ event } Capture` ] : PropTypes . func ,
58
- [ `stop${ event } ` ] : PropTypes . bool
59
- } ) ,
60
- { }
61
- )
62
- }
51
+ static displayName = 'NativeListener'
52
+ static propTypes = {
53
+ children : ( props , propName ) => {
54
+ if ( props [ propName ] . length ) {
55
+ return new Error ( 'NativeListener can only wrap one element' )
56
+ }
57
+ } ,
58
+ ...events . reduce (
59
+ ( accumulator , event ) => ( {
60
+ ...accumulator ,
61
+ [ `on${ event } ` ] : PropTypes . func ,
62
+ [ `on${ event } Capture` ] : PropTypes . func ,
63
+ [ `stop${ event } ` ] : PropTypes . bool
64
+ } ) ,
65
+ { }
66
+ )
67
+ }
63
68
64
- componentDidMount ( ) {
65
- const props = this . props
66
- const element = ReactDOM . findDOMNode ( this )
67
- if ( element ) {
68
- events . forEach ( event => {
69
- const capture = props [ 'on' + event + 'Capture' ]
70
- const bubble = props [ 'on' + event ]
71
- const stop = props [ 'stop' + event ]
72
- if ( capture && typeof capture === 'function' ) {
73
- element . addEventListener ( toEventName ( event ) , capture , true )
74
- }
75
- if ( bubble && typeof bubble === 'function' ) {
76
- element . addEventListener ( toEventName ( event ) , bubble , false )
77
- }
78
- if ( stop === true ) {
79
- element . addEventListener (
80
- toEventName ( event ) ,
81
- nativeEvent => nativeEvent . stopPropagation ( ) ,
82
- false
83
- )
84
- }
85
- } )
86
- }
87
- }
69
+ componentDidMount ( ) {
70
+ const props = this . props
71
+ const element = ReactDOM . findDOMNode ( this )
72
+ if ( element ) {
73
+ events . forEach ( event => {
74
+ const capture = props [ 'on' + event + 'Capture' ]
75
+ const bubble = props [ 'on' + event ]
76
+ const stop = props [ 'stop' + event ]
77
+ if ( capture && typeof capture === 'function' ) {
78
+ element . addEventListener ( toEventName ( event ) , capture , true )
79
+ }
80
+ if ( bubble && typeof bubble === 'function' ) {
81
+ element . addEventListener ( toEventName ( event ) , bubble , false )
82
+ }
83
+ if ( stop === true ) {
84
+ element . addEventListener (
85
+ toEventName ( event ) ,
86
+ nativeEvent => nativeEvent . stopPropagation ( ) ,
87
+ false
88
+ )
89
+ }
90
+ } )
91
+ }
92
+ }
88
93
89
- render ( ) {
90
- return this . props . children
91
- }
94
+ render ( ) {
95
+ return this . props . children
96
+ }
92
97
}
0 commit comments