1- define ( [ 'exports' , 'aurelia-templating-resources/array-repeat-strategy ' , 'aurelia-templating-resources/repeat-utilities' , ' ./utilities'] , function ( exports , _arrayRepeatStrategy , _repeatUtilities , _utilities ) {
1+ define ( [ 'exports' , 'aurelia-templating-resources' , './utilities' ] , function ( exports , _aureliaTemplatingResources , _utilities ) {
22 'use strict' ;
33
44 Object . defineProperty ( exports , "__esModule" , {
@@ -46,7 +46,7 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
4646 }
4747
4848 ArrayVirtualRepeatStrategy . prototype . createFirstItem = function createFirstItem ( repeat ) {
49- var overrideContext = ( 0 , _repeatUtilities . createFullOverrideContext ) ( repeat , repeat . items [ 0 ] , 0 , 1 ) ;
49+ var overrideContext = ( 0 , _aureliaTemplatingResources . createFullOverrideContext ) ( repeat , repeat . items [ 0 ] , 0 , 1 ) ;
5050 repeat . addView ( overrideContext . bindingContext , overrideContext ) ;
5151 } ;
5252
@@ -56,7 +56,7 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
5656
5757 ArrayVirtualRepeatStrategy . prototype . _standardProcessInstanceChanged = function _standardProcessInstanceChanged ( repeat , items ) {
5858 for ( var i = 1 , ii = repeat . _viewsLength ; i < ii ; ++ i ) {
59- var overrideContext = ( 0 , _repeatUtilities . createFullOverrideContext ) ( repeat , items [ i ] , i , ii ) ;
59+ var overrideContext = ( 0 , _aureliaTemplatingResources . createFullOverrideContext ) ( repeat , items [ i ] , i , ii ) ;
6060 repeat . addView ( overrideContext . bindingContext , overrideContext ) ;
6161 }
6262 } ;
@@ -90,7 +90,7 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
9090
9191 var minLength = Math . min ( repeat . _viewsLength , items . length ) ;
9292 for ( var _i = viewsLength ; _i < minLength ; _i ++ ) {
93- var overrideContext = ( 0 , _repeatUtilities . createFullOverrideContext ) ( repeat , items [ _i ] , _i , itemsLength ) ;
93+ var overrideContext = ( 0 , _aureliaTemplatingResources . createFullOverrideContext ) ( repeat , items [ _i ] , _i , itemsLength ) ;
9494 repeat . addView ( overrideContext . bindingContext , overrideContext ) ;
9595 }
9696 } ;
@@ -145,8 +145,9 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
145145 for ( var i = 0 , ii = splices . length ; i < ii ; ++ i ) {
146146 var splice = splices [ i ] ;
147147 var removed = splice . removed ;
148- for ( var j = 0 , jj = removed . length ; j < jj ; ++ j ) {
149- var viewOrPromise = this . _removeViewAt ( repeat , splice . index + removeDelta + rmPromises . length , true ) ;
148+ var removedLength = removed . length ;
149+ for ( var j = 0 , jj = removedLength ; j < jj ; ++ j ) {
150+ var viewOrPromise = this . _removeViewAt ( repeat , splice . index + removeDelta + rmPromises . length , true , j , removedLength ) ;
150151 if ( viewOrPromise instanceof Promise ) {
151152 rmPromises . push ( viewOrPromise ) ;
152153 }
@@ -164,12 +165,18 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
164165 ( 0 , _utilities . updateVirtualOverrideContexts ) ( repeat , 0 ) ;
165166 } ;
166167
167- ArrayVirtualRepeatStrategy . prototype . _removeViewAt = function _removeViewAt ( repeat , collectionIndex , returnToCache ) {
168+ ArrayVirtualRepeatStrategy . prototype . _removeViewAt = function _removeViewAt ( repeat , collectionIndex , returnToCache , j , removedLength ) {
168169 var viewOrPromise = void 0 ;
169170 var view = void 0 ;
170171 var viewSlot = repeat . viewSlot ;
171172 var viewCount = repeat . viewCount ( ) ;
172173 var viewAddIndex = void 0 ;
174+ var removeMoreThanInDom = removedLength > viewCount ;
175+ if ( repeat . _viewsLength <= j ) {
176+ repeat . _bottomBufferHeight = repeat . _bottomBufferHeight - repeat . itemHeight ;
177+ repeat . _adjustBufferHeights ( ) ;
178+ return ;
179+ }
173180
174181 if ( ! this . _isIndexBeforeViewSlot ( repeat , viewSlot , collectionIndex ) && ! this . _isIndexAfterViewSlot ( repeat , viewSlot , collectionIndex ) ) {
175182 var viewIndex = this . _getViewIndex ( repeat , viewSlot , collectionIndex ) ;
@@ -178,7 +185,12 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
178185 var collectionAddIndex = void 0 ;
179186 if ( repeat . _bottomBufferHeight > repeat . itemHeight ) {
180187 viewAddIndex = viewCount ;
181- collectionAddIndex = repeat . _getIndexOfLastView ( ) + 1 ;
188+ if ( ! removeMoreThanInDom ) {
189+ var lastViewItem = repeat . _getLastViewItem ( ) ;
190+ collectionAddIndex = repeat . items . indexOf ( lastViewItem ) + 1 ;
191+ } else {
192+ collectionAddIndex = j ;
193+ }
182194 repeat . _bottomBufferHeight = repeat . _bottomBufferHeight - repeat . itemHeight ;
183195 } else if ( repeat . _topBufferHeight > 0 ) {
184196 viewAddIndex = 0 ;
@@ -187,12 +199,10 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
187199 }
188200 var data = repeat . items [ collectionAddIndex ] ;
189201 if ( data ) {
190- var overrideContext = ( 0 , _repeatUtilities . createFullOverrideContext ) ( repeat , repeat . items [ collectionAddIndex ] , collectionAddIndex , repeat . items . length ) ;
202+ var overrideContext = ( 0 , _aureliaTemplatingResources . createFullOverrideContext ) ( repeat , data , collectionAddIndex , repeat . items . length ) ;
191203 view = repeat . viewFactory . create ( ) ;
192204 view . bind ( overrideContext . bindingContext , overrideContext ) ;
193205 }
194- } else {
195- return viewOrPromise ;
196206 }
197207 } else if ( this . _isIndexBeforeViewSlot ( repeat , viewSlot , collectionIndex ) ) {
198208 if ( repeat . _bottomBufferHeight > 0 ) {
@@ -210,11 +220,9 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
210220 repeat . viewSlot . insert ( viewAddIndex , view ) ;
211221 repeat . _adjustBufferHeights ( ) ;
212222 } ) ;
213- return undefined ;
214223 } else if ( view ) {
215224 repeat . viewSlot . insert ( viewAddIndex , view ) ;
216225 }
217-
218226 repeat . _adjustBufferHeights ( ) ;
219227 } ;
220228
@@ -247,7 +255,7 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
247255 for ( ; addIndex < end ; ++ addIndex ) {
248256 var hasDistanceToBottomViewPort = ( 0 , _utilities . getElementDistanceToBottomViewPort ) ( repeat . viewStrategy . getLastElement ( repeat . bottomBuffer ) ) > 0 ;
249257 if ( repeat . viewCount ( ) === 0 || ! this . _isIndexBeforeViewSlot ( repeat , viewSlot , addIndex ) && ! this . _isIndexAfterViewSlot ( repeat , viewSlot , addIndex ) || hasDistanceToBottomViewPort ) {
250- var overrideContext = ( 0 , _repeatUtilities . createFullOverrideContext ) ( repeat , array [ addIndex ] , addIndex , arrayLength ) ;
258+ var overrideContext = ( 0 , _aureliaTemplatingResources . createFullOverrideContext ) ( repeat , array [ addIndex ] , addIndex , arrayLength ) ;
251259 repeat . insertView ( addIndex , overrideContext . bindingContext , overrideContext ) ;
252260 if ( ! repeat . _hasCalculatedSizes ) {
253261 repeat . _calcInitialHeights ( 1 ) ;
@@ -273,5 +281,5 @@ define(['exports', 'aurelia-templating-resources/array-repeat-strategy', 'aureli
273281 } ;
274282
275283 return ArrayVirtualRepeatStrategy ;
276- } ( _arrayRepeatStrategy . ArrayRepeatStrategy ) ;
284+ } ( _aureliaTemplatingResources . ArrayRepeatStrategy ) ;
277285} ) ;
0 commit comments