@@ -99,6 +99,15 @@ function unFocus(document, window) {
9999 }
100100}
101101
102+ function normalizeTouchEvent ( event : TouchEvent ) : MouseEvent {
103+ // $FlowIssue
104+ return {
105+ ...event ,
106+ clientX : event . touches [ 0 ] . clientX ,
107+ clientY : event . touches [ 0 ] . clientY ,
108+ } ;
109+ }
110+
102111const PANES = { [ console . title ] : console } ;
103112
104113export default class DevTools extends React . PureComponent < Props , State > {
@@ -126,6 +135,8 @@ export default class DevTools extends React.PureComponent<Props, State> {
126135 componentDidMount ( ) {
127136 document . addEventListener ( 'mouseup' , this . handleMouseUp , false ) ;
128137 document . addEventListener ( 'mousemove' , this . handleMouseMove , false ) ;
138+ document . addEventListener ( 'touchend' , this . handleTouchEnd , false ) ;
139+ document . addEventListener ( 'touchmove' , this . handleTouchMove , false ) ;
129140
130141 if ( this . props . shouldExpandDevTools ) {
131142 this . openDevTools ( ) ;
@@ -135,6 +146,8 @@ export default class DevTools extends React.PureComponent<Props, State> {
135146 componentWillUnmount ( ) {
136147 document . removeEventListener ( 'mouseup' , this . handleMouseUp , false ) ;
137148 document . removeEventListener ( 'mousemove' , this . handleMouseMove , false ) ;
149+ document . removeEventListener ( 'touchend' , this . handleTouchEnd , false ) ;
150+ document . removeEventListener ( 'touchmove' , this . handleTouchMove , false ) ;
138151 }
139152
140153 setHidden = ( hidden : boolean ) => {
@@ -178,7 +191,13 @@ export default class DevTools extends React.PureComponent<Props, State> {
178191 } ) ;
179192 } ;
180193
181- handleMouseDown = ( event : MouseEvent ) => {
194+ handleTouchStart = ( event : TouchEvent ) => {
195+ if ( event . touches && event . touches . length ) {
196+ this . handleMouseDown ( normalizeTouchEvent ( event ) ) ;
197+ }
198+ } ;
199+
200+ handleMouseDown = ( event : Event & { clientX : number , clientY : number } ) => {
182201 if ( ! this . state . mouseDown ) {
183202 unFocus ( document , window ) ;
184203 this . setState ( {
@@ -190,7 +209,13 @@ export default class DevTools extends React.PureComponent<Props, State> {
190209 }
191210 } ;
192211
193- handleMouseUp = ( e : MouseEvent ) => {
212+ handleTouchEnd = ( event : TouchEvent ) => {
213+ if ( event . touches && event . touches . length ) {
214+ this . handleMouseUp ( normalizeTouchEvent ( event ) ) ;
215+ }
216+ } ;
217+
218+ handleMouseUp = ( e : Event & { clientX : number , clientY : number } ) => {
194219 if ( this . state . mouseDown ) {
195220 this . setState ( { mouseDown : false } ) ;
196221 this . props . setDragging ( false ) ;
@@ -213,7 +238,13 @@ export default class DevTools extends React.PureComponent<Props, State> {
213238 }
214239 } ;
215240
216- handleMouseMove = ( event : MouseEvent ) => {
241+ handleTouchMove = ( event : TouchEvent ) => {
242+ if ( event . touches && event . touches . length ) {
243+ this . handleMouseMove ( normalizeTouchEvent ( event ) ) ;
244+ }
245+ } ;
246+
247+ handleMouseMove = ( event : Event & { clientX : number , clientY : number } ) => {
217248 if ( this . state . mouseDown ) {
218249 const newHeight =
219250 this . state . startHeight - ( event . clientY - this . state . startY ) ;
@@ -283,7 +314,10 @@ export default class DevTools extends React.PureComponent<Props, State> {
283314 display : 'flex' ,
284315 } }
285316 >
286- < Header onMouseDown = { this . handleMouseDown } >
317+ < Header
318+ onTouchStart = { this . handleTouchStart }
319+ onMouseDown = { this . handleMouseDown }
320+ >
287321 { Object . keys ( PANES ) . map ( title => (
288322 < Tab key = { title } >
289323 { title }
0 commit comments