@@ -58,6 +58,7 @@ export class SlideRegionComponent {
58
58
const maxHeight = height - tileHeight
59
59
60
60
let isMoving = false
61
+ let tmpLeaveDragEvent : Event | any = null
61
62
let startX = 0
62
63
let startY = 0
63
64
let tileLeft = 0
@@ -119,13 +120,7 @@ export class SlideRegionComponent {
119
120
return
120
121
}
121
122
isMoving = false
122
-
123
- this . containerRef . nativeElement . removeEventListener ( "mousemove" , moveEvent , false )
124
- this . containerRef . nativeElement . removeEventListener ( "touchmove" , moveEvent , { passive : false } )
125
-
126
- this . containerRef . nativeElement . removeEventListener ( "mouseup" , upEvent , false )
127
- this . containerRef . nativeElement . removeEventListener ( "mouseout" , upEvent , false )
128
- this . containerRef . nativeElement . removeEventListener ( "touchend" , upEvent , false )
123
+ clearEvent ( )
129
124
130
125
this . events . confirm && this . events . confirm ( { x : tileLeft , y : tileTop } , ( ) => {
131
126
this . clear ( )
@@ -135,11 +130,47 @@ export class SlideRegionComponent {
135
130
e . preventDefault ( )
136
131
}
137
132
133
+ const leaveDragBlockEvent = ( e : Event | any ) => {
134
+ tmpLeaveDragEvent = e
135
+ }
136
+
137
+ const enterDragBlockEvent = ( ) => {
138
+ tmpLeaveDragEvent = null
139
+ }
140
+
141
+ const leaveUpEvent = ( _ : Event | any ) => {
142
+ if ( ! tmpLeaveDragEvent ) {
143
+ return
144
+ }
145
+
146
+ upEvent ( tmpLeaveDragEvent )
147
+ clearEvent ( )
148
+ }
149
+
150
+ const clearEvent = ( ) => {
151
+ this . containerRef . nativeElement . removeEventListener ( "mousemove" , moveEvent , false )
152
+ this . containerRef . nativeElement . removeEventListener ( "touchmove" , moveEvent , { passive : false } )
153
+
154
+ this . containerRef . nativeElement . removeEventListener ( "mouseup" , upEvent , false )
155
+ // this.containerRef.nativeElement.removeEventListener( "mouseout", upEvent, false)
156
+ this . containerRef . nativeElement . removeEventListener ( "mouseenter" , enterDragBlockEvent , false )
157
+ this . containerRef . nativeElement . removeEventListener ( "mouseleave" , leaveDragBlockEvent , false )
158
+ this . containerRef . nativeElement . removeEventListener ( "touchend" , upEvent , false )
159
+
160
+ document . body . removeEventListener ( "mouseleave" , upEvent , false )
161
+ document . body . removeEventListener ( "mouseup" , leaveUpEvent , false )
162
+ }
163
+
138
164
this . containerRef . nativeElement . addEventListener ( "mousemove" , moveEvent , false )
139
165
this . containerRef . nativeElement . addEventListener ( "touchmove" , moveEvent , { passive : false } )
140
166
this . containerRef . nativeElement . addEventListener ( "mouseup" , upEvent , false )
141
- this . containerRef . nativeElement . addEventListener ( "mouseout" , upEvent , false )
167
+ // this.containerRef.nativeElement.addEventListener( "mouseout", upEvent, false)
168
+ this . containerRef . nativeElement . addEventListener ( "mouseenter" , enterDragBlockEvent , false )
169
+ this . containerRef . nativeElement . addEventListener ( "mouseleave" , leaveDragBlockEvent , false )
142
170
this . containerRef . nativeElement . addEventListener ( "touchend" , upEvent , false )
171
+
172
+ document . body . addEventListener ( "mouseleave" , upEvent , false )
173
+ document . body . addEventListener ( "mouseup" , leaveUpEvent , false )
143
174
}
144
175
145
176
closeEvent ( e : Event | any ) {
0 commit comments