11export default function splitterDrag ( node , axes ) {
22 let resizeStart = null ;
3+ let prevCursor = null ;
4+ let prevUserSelect = null ;
35
46 const handleResizeDown = e => {
7+ if ( e . button !== 0 ) return ;
8+ e . preventDefault ( ) ;
59 resizeStart = e [ axes ] ;
10+ prevCursor = document . body . style . cursor ;
11+ prevUserSelect = document . body . style . userSelect ;
612 document . addEventListener ( 'mousemove' , handleResizeMove , true ) ;
713 document . addEventListener ( 'mouseup' , handleResizeEnd , true ) ;
14+ document . body . style . cursor = axes === 'clientX' ? 'col-resize' : 'row-resize' ;
15+ document . body . style . userSelect = 'none' ;
816 } ;
917
1018 const handleResizeMove = e => {
@@ -17,11 +25,20 @@ export default function splitterDrag(node, axes) {
1725 } )
1826 ) ;
1927 } ;
28+
29+ const restoreStyles = ( ) => {
30+ document . body . style . cursor = prevCursor ;
31+ document . body . style . userSelect = prevUserSelect ;
32+ prevCursor = null ;
33+ prevUserSelect = null ;
34+ } ;
35+
2036 const handleResizeEnd = e => {
2137 e . preventDefault ( ) ;
2238 resizeStart = null ;
2339 document . removeEventListener ( 'mousemove' , handleResizeMove , true ) ;
2440 document . removeEventListener ( 'mouseup' , handleResizeEnd , true ) ;
41+ restoreStyles ( ) ;
2542 } ;
2643
2744 node . addEventListener ( 'mousedown' , handleResizeDown ) ;
@@ -32,6 +49,7 @@ export default function splitterDrag(node, axes) {
3249 if ( resizeStart != null ) {
3350 document . removeEventListener ( 'mousemove' , handleResizeMove , true ) ;
3451 document . removeEventListener ( 'mouseup' , handleResizeEnd , true ) ;
52+ restoreStyles ( ) ;
3553 }
3654 } ,
3755 } ;
0 commit comments