@@ -77,16 +77,16 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
7777 }
7878 // removes single item(wrapper) from the buffer
7979 buffer . splice ( buffer . indexOf ( arg1 ) , 1 ) ;
80+ if ( arg1 . _op === 'isTop' && buffer . first === this . getAbsMinIndex ( ) ) {
81+ this . incrementMinIndex ( ) ;
82+ }
83+ else {
84+ this . decrementMaxIndex ( ) ;
85+ }
8086 if ( arg1 . _op === 'isTop' ) {
81- if ( buffer . first === buffer . minIndex ) {
82- this . incrementMinIndex ( ) ;
83- }
8487 buffer . first ++ ;
8588 }
8689 else {
87- if ( buffer . next === buffer . maxIndex + 1 ) {
88- this . decrementMinIndex ( ) ;
89- }
9090 buffer . next -- ;
9191 }
9292 if ( ! buffer . length ) {
@@ -98,15 +98,31 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
9898 } ,
9999
100100 incrementMinIndex ( ) {
101- if ( buffer . minIndex ++ === buffer . minIndexUser ) {
101+ if ( buffer . minIndexUser !== null && buffer . minIndex === buffer . minIndexUser ) {
102102 buffer . minIndexUser ++ ;
103103 }
104+ buffer . minIndex ++ ;
104105 } ,
105106
106- decrementMinIndex ( ) {
107- if ( buffer . maxIndex -- <= buffer . maxIndexUser ) {
107+ decrementMaxIndex ( ) {
108+ if ( buffer . maxIndexUser !== null && buffer . maxIndex <= buffer . maxIndexUser ) {
108109 buffer . maxIndexUser -- ;
109110 }
111+ buffer . maxIndex -- ;
112+ } ,
113+
114+ getAbsMinIndex ( ) {
115+ if ( buffer . minIndexUser !== null ) {
116+ return Math . min ( buffer . minIndexUser , buffer . minIndex ) ;
117+ }
118+ return buffer . minIndex ;
119+ } ,
120+
121+ getAbsMaxIndex ( ) {
122+ if ( buffer . maxIndexUser !== null ) {
123+ return Math . max ( buffer . maxIndexUser , buffer . maxIndex ) ;
124+ }
125+ return buffer . maxIndex ;
110126 } ,
111127
112128 effectiveHeight ( elements ) {
0 commit comments