@@ -62,6 +62,10 @@ let parentRight = 0;
6262 * @type {number }
6363 */
6464let animationFrame = null ;
65+ /**
66+ * @type {number }
67+ */
68+ let prevScrollLeft = 0 ;
6569
6670const MAX_SCROLL_SPEED = 4 ;
6771
@@ -126,6 +130,9 @@ export default function startDrag(e) {
126130 document . addEventListener ( "touchend" , releaseDrag , opts ) ;
127131 document . addEventListener ( "touchcancel" , releaseDrag , opts ) ;
128132 document . addEventListener ( "mouseleave" , releaseDrag , opts ) ;
133+
134+ prevScrollLeft = $parent . scrollLeft ;
135+ $parent . addEventListener ( "scroll" , preventDefaultScroll , opts ) ;
129136}
130137
131138/**
@@ -225,6 +232,12 @@ function releaseDrag(e) {
225232 document . removeEventListener ( "touchend" , releaseDrag , opts ) ;
226233 document . removeEventListener ( "touchcancel" , releaseDrag , opts ) ;
227234 document . removeEventListener ( "mouseleave" , releaseDrag , opts ) ;
235+
236+ $parent . removeEventListener ( "scroll" , preventDefaultScroll ) ;
237+ }
238+
239+ function preventDefaultScroll ( ) {
240+ this . scrollLeft = prevScrollLeft ;
228241}
229242
230243/**
@@ -236,7 +249,7 @@ function scrollContainer() {
236249 function animate ( ) {
237250 const scroll = getScroll ( ) ;
238251 if ( ! scroll ) return ;
239- $parent . scrollLeft += scroll ;
252+ prevScrollLeft = $parent . scrollLeft += scroll ;
240253 animationFrame = requestAnimationFrame ( animate ) ;
241254 }
242255}
0 commit comments