@@ -31,6 +31,7 @@ export function useHandler(
3131 const ratio = ( ( maxWidth - thumbX ) + ad ) / maxWidth
3232
3333 let isMoving = false
34+ let tmpLeaveDragEvent : Event | any = null
3435 let startX = 0
3536 let currentThumbX = 0
3637 if ( touch ) {
@@ -79,14 +80,8 @@ export function useHandler(
7980 return
8081 }
8182
82- dragBarRef . value . removeEventListener ( "mousemove" , moveEvent , false )
83- dragBarRef . value . removeEventListener ( "touchmove" , moveEvent , { passive : false } )
84-
85- dragBarRef . value . removeEventListener ( "mouseup" , upEvent , false )
86- dragBarRef . value . removeEventListener ( "mouseout" , upEvent , false )
87- dragBarRef . value . removeEventListener ( "touchend" , upEvent , false )
88-
8983 isMoving = false
84+ clearEvent ( )
9085 event . confirm && event . confirm ( { x : parseInt ( currentThumbX . toString ( ) ) , y : data . thumbY || 0 } , ( ) => {
9186 clear ( )
9287 } )
@@ -95,11 +90,47 @@ export function useHandler(
9590 e . preventDefault ( )
9691 }
9792
93+ const leaveDragBlockEvent = ( e : Event | any ) => {
94+ tmpLeaveDragEvent = e
95+ }
96+
97+ const enterDragBlockEvent = ( ) => {
98+ tmpLeaveDragEvent = null
99+ }
100+
101+ const leaveUpEvent = ( _ : Event | any ) => {
102+ if ( ! tmpLeaveDragEvent ) {
103+ return
104+ }
105+
106+ upEvent ( tmpLeaveDragEvent )
107+ clearEvent ( )
108+ }
109+
110+ const clearEvent = ( ) => {
111+ dragBarRef . value . removeEventListener ( "mousemove" , moveEvent , false )
112+ dragBarRef . value . removeEventListener ( "touchmove" , moveEvent , { passive : false } )
113+
114+ dragBarRef . value . removeEventListener ( "mouseup" , upEvent , false )
115+ // dragBarRef.value.removeEventListener( "mouseout", upEvent, false)
116+ dragBarRef . value . removeEventListener ( "mouseenter" , enterDragBlockEvent , false )
117+ dragBarRef . value . removeEventListener ( "mouseleave" , leaveDragBlockEvent , false )
118+ dragBarRef . value . removeEventListener ( "touchend" , upEvent , false )
119+
120+ document . body . removeEventListener ( "mouseleave" , upEvent , false )
121+ document . body . removeEventListener ( "mouseup" , leaveUpEvent , false )
122+ }
123+
98124 dragBarRef . value . addEventListener ( "mousemove" , moveEvent , false )
99125 dragBarRef . value . addEventListener ( "touchmove" , moveEvent , { passive : false } )
100126 dragBarRef . value . addEventListener ( "mouseup" , upEvent , false )
101- dragBarRef . value . addEventListener ( "mouseout" , upEvent , false )
127+ // dragBarRef.value.addEventListener( "mouseout", upEvent, false)
128+ dragBarRef . value . addEventListener ( "mouseenter" , enterDragBlockEvent , false )
129+ dragBarRef . value . addEventListener ( "mouseleave" , leaveDragBlockEvent , false )
102130 dragBarRef . value . addEventListener ( "touchend" , upEvent , false )
131+
132+ document . body . addEventListener ( "mouseleave" , upEvent , false )
133+ document . body . addEventListener ( "mouseup" , leaveUpEvent , false )
103134 }
104135
105136 const closeEvent = ( e : Event | any ) => {
0 commit comments