@@ -77,16 +77,16 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
77
77
}
78
78
// removes single item(wrapper) from the buffer
79
79
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
+ }
80
86
if ( arg1 . _op === 'isTop' ) {
81
- if ( buffer . first === buffer . minIndex ) {
82
- this . incrementMinIndex ( ) ;
83
- }
84
87
buffer . first ++ ;
85
88
}
86
89
else {
87
- if ( buffer . next === buffer . maxIndex + 1 ) {
88
- this . decrementMinIndex ( ) ;
89
- }
90
90
buffer . next -- ;
91
91
}
92
92
if ( ! buffer . length ) {
@@ -98,15 +98,31 @@ export default function ScrollBuffer(elementRoutines, bufferSize) {
98
98
} ,
99
99
100
100
incrementMinIndex ( ) {
101
- if ( buffer . minIndex ++ === buffer . minIndexUser ) {
101
+ if ( buffer . minIndexUser !== null && buffer . minIndex === buffer . minIndexUser ) {
102
102
buffer . minIndexUser ++ ;
103
103
}
104
+ buffer . minIndex ++ ;
104
105
} ,
105
106
106
- decrementMinIndex ( ) {
107
- if ( buffer . maxIndex -- <= buffer . maxIndexUser ) {
107
+ decrementMaxIndex ( ) {
108
+ if ( buffer . maxIndexUser !== null && buffer . maxIndex <= buffer . maxIndexUser ) {
108
109
buffer . maxIndexUser -- ;
109
110
}
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 ;
110
126
} ,
111
127
112
128
effectiveHeight ( elements ) {
0 commit comments