Skip to content

Commit f829784

Browse files
chore(all): prepare release 0.4.6
1 parent e38b3db commit f829784

File tree

9 files changed

+241
-98
lines changed

9 files changed

+241
-98
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aurelia-ui-virtualization",
3-
"version": "0.4.5",
3+
"version": "0.4.6",
44
"description": "A plugin that provides a virtualized repeater and other virtualization services.",
55
"keywords": [
66
"aurelia",

dist/amd/array-virtual-repeat-strategy.js

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -142,27 +142,50 @@ define(['exports', 'aurelia-templating-resources', './utilities'], function (exp
142142
var removeDelta = 0;
143143
var rmPromises = [];
144144

145-
for (var i = 0, ii = splices.length; i < ii; ++i) {
145+
var allSplicesAreInplace = true;
146+
for (var i = 0; i < splices.length; i++) {
146147
var splice = splices[i];
147-
var removed = splice.removed;
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);
151-
if (viewOrPromise instanceof Promise) {
152-
rmPromises.push(viewOrPromise);
153-
}
148+
if (splice.removed.length !== splice.addedCount) {
149+
allSplicesAreInplace = false;
150+
break;
154151
}
155-
removeDelta -= splice.addedCount;
156152
}
157153

158-
if (rmPromises.length > 0) {
159-
return Promise.all(rmPromises).then(function () {
160-
_this3._handleAddedSplices(repeat, array, splices);
161-
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
162-
});
154+
if (allSplicesAreInplace) {
155+
for (var _i2 = 0; _i2 < splices.length; _i2++) {
156+
var _splice = splices[_i2];
157+
for (var collectionIndex = _splice.index; collectionIndex < _splice.index + _splice.addedCount; collectionIndex++) {
158+
if (!this._isIndexBeforeViewSlot(repeat, repeat.viewSlot, collectionIndex) && !this._isIndexAfterViewSlot(repeat, repeat.viewSlot, collectionIndex)) {
159+
var viewIndex = this._getViewIndex(repeat, repeat.viewSlot, collectionIndex);
160+
var overrideContext = (0, _aureliaTemplatingResources.createFullOverrideContext)(repeat, array[collectionIndex], collectionIndex, array.length);
161+
repeat.removeView(viewIndex, true, true);
162+
repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);
163+
}
164+
}
165+
}
166+
} else {
167+
for (var _i3 = 0, ii = splices.length; _i3 < ii; ++_i3) {
168+
var _splice2 = splices[_i3];
169+
var removed = _splice2.removed;
170+
var removedLength = removed.length;
171+
for (var j = 0, jj = removedLength; j < jj; ++j) {
172+
var viewOrPromise = this._removeViewAt(repeat, _splice2.index + removeDelta + rmPromises.length, true, j, removedLength);
173+
if (viewOrPromise instanceof Promise) {
174+
rmPromises.push(viewOrPromise);
175+
}
176+
}
177+
removeDelta -= _splice2.addedCount;
178+
}
179+
180+
if (rmPromises.length > 0) {
181+
return Promise.all(rmPromises).then(function () {
182+
_this3._handleAddedSplices(repeat, array, splices);
183+
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
184+
});
185+
}
186+
this._handleAddedSplices(repeat, array, splices);
187+
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
163188
}
164-
this._handleAddedSplices(repeat, array, splices);
165-
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
166189
};
167190

168191
ArrayVirtualRepeatStrategy.prototype._removeViewAt = function _removeViewAt(repeat, collectionIndex, returnToCache, j, removedLength) {

dist/aurelia-ui-virtualization.js

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -198,27 +198,52 @@ export class ArrayVirtualRepeatStrategy extends ArrayRepeatStrategy {
198198
let removeDelta = 0;
199199
let rmPromises = [];
200200

201-
for (let i = 0, ii = splices.length; i < ii; ++i) {
201+
// do all splices replace existing entries?
202+
let allSplicesAreInplace = true;
203+
for (let i = 0; i < splices.length; i++) {
202204
let splice = splices[i];
203-
let removed = splice.removed;
204-
let removedLength = removed.length;
205-
for (let j = 0, jj = removedLength; j < jj; ++j) {
206-
let viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
207-
if (viewOrPromise instanceof Promise) {
208-
rmPromises.push(viewOrPromise);
209-
}
205+
if (splice.removed.length !== splice.addedCount) {
206+
allSplicesAreInplace = false;
207+
break;
210208
}
211-
removeDelta -= splice.addedCount;
212209
}
213210

214-
if (rmPromises.length > 0) {
215-
return Promise.all(rmPromises).then(() => {
216-
this._handleAddedSplices(repeat, array, splices);
217-
updateVirtualOverrideContexts(repeat, 0);
218-
});
211+
// if so, optimise by just replacing affected visible views
212+
if (allSplicesAreInplace) {
213+
for (let i = 0; i < splices.length; i++) {
214+
let splice = splices[i];
215+
for (let collectionIndex = splice.index; collectionIndex < splice.index + splice.addedCount; collectionIndex++) {
216+
if (!this._isIndexBeforeViewSlot(repeat, repeat.viewSlot, collectionIndex) && !this._isIndexAfterViewSlot(repeat, repeat.viewSlot, collectionIndex) ) {
217+
let viewIndex = this._getViewIndex(repeat, repeat.viewSlot, collectionIndex);
218+
let overrideContext = createFullOverrideContext(repeat, array[collectionIndex], collectionIndex, array.length);
219+
repeat.removeView(viewIndex, true, true);
220+
repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);
221+
}
222+
}
223+
}
224+
} else {
225+
for (let i = 0, ii = splices.length; i < ii; ++i) {
226+
let splice = splices[i];
227+
let removed = splice.removed;
228+
let removedLength = removed.length;
229+
for (let j = 0, jj = removedLength; j < jj; ++j) {
230+
let viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
231+
if (viewOrPromise instanceof Promise) {
232+
rmPromises.push(viewOrPromise);
233+
}
234+
}
235+
removeDelta -= splice.addedCount;
236+
}
237+
238+
if (rmPromises.length > 0) {
239+
return Promise.all(rmPromises).then(() => {
240+
this._handleAddedSplices(repeat, array, splices);
241+
updateVirtualOverrideContexts(repeat, 0);
242+
});
243+
}
244+
this._handleAddedSplices(repeat, array, splices);
245+
updateVirtualOverrideContexts(repeat, 0);
219246
}
220-
this._handleAddedSplices(repeat, array, splices);
221-
updateVirtualOverrideContexts(repeat, 0);
222247
}
223248

224249
_removeViewAt(repeat: VirtualRepeat, collectionIndex: number, returnToCache: boolean, j: number, removedLength: number): any {

dist/commonjs/array-virtual-repeat-strategy.js

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,27 +121,50 @@ var ArrayVirtualRepeatStrategy = exports.ArrayVirtualRepeatStrategy = function (
121121
var removeDelta = 0;
122122
var rmPromises = [];
123123

124-
for (var i = 0, ii = splices.length; i < ii; ++i) {
124+
var allSplicesAreInplace = true;
125+
for (var i = 0; i < splices.length; i++) {
125126
var splice = splices[i];
126-
var removed = splice.removed;
127-
var removedLength = removed.length;
128-
for (var j = 0, jj = removedLength; j < jj; ++j) {
129-
var viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
130-
if (viewOrPromise instanceof Promise) {
131-
rmPromises.push(viewOrPromise);
132-
}
127+
if (splice.removed.length !== splice.addedCount) {
128+
allSplicesAreInplace = false;
129+
break;
133130
}
134-
removeDelta -= splice.addedCount;
135131
}
136132

137-
if (rmPromises.length > 0) {
138-
return Promise.all(rmPromises).then(function () {
139-
_this3._handleAddedSplices(repeat, array, splices);
140-
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
141-
});
133+
if (allSplicesAreInplace) {
134+
for (var _i2 = 0; _i2 < splices.length; _i2++) {
135+
var _splice = splices[_i2];
136+
for (var collectionIndex = _splice.index; collectionIndex < _splice.index + _splice.addedCount; collectionIndex++) {
137+
if (!this._isIndexBeforeViewSlot(repeat, repeat.viewSlot, collectionIndex) && !this._isIndexAfterViewSlot(repeat, repeat.viewSlot, collectionIndex)) {
138+
var viewIndex = this._getViewIndex(repeat, repeat.viewSlot, collectionIndex);
139+
var overrideContext = (0, _aureliaTemplatingResources.createFullOverrideContext)(repeat, array[collectionIndex], collectionIndex, array.length);
140+
repeat.removeView(viewIndex, true, true);
141+
repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);
142+
}
143+
}
144+
}
145+
} else {
146+
for (var _i3 = 0, ii = splices.length; _i3 < ii; ++_i3) {
147+
var _splice2 = splices[_i3];
148+
var removed = _splice2.removed;
149+
var removedLength = removed.length;
150+
for (var j = 0, jj = removedLength; j < jj; ++j) {
151+
var viewOrPromise = this._removeViewAt(repeat, _splice2.index + removeDelta + rmPromises.length, true, j, removedLength);
152+
if (viewOrPromise instanceof Promise) {
153+
rmPromises.push(viewOrPromise);
154+
}
155+
}
156+
removeDelta -= _splice2.addedCount;
157+
}
158+
159+
if (rmPromises.length > 0) {
160+
return Promise.all(rmPromises).then(function () {
161+
_this3._handleAddedSplices(repeat, array, splices);
162+
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
163+
});
164+
}
165+
this._handleAddedSplices(repeat, array, splices);
166+
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
142167
}
143-
this._handleAddedSplices(repeat, array, splices);
144-
(0, _utilities.updateVirtualOverrideContexts)(repeat, 0);
145168
};
146169

147170
ArrayVirtualRepeatStrategy.prototype._removeViewAt = function _removeViewAt(repeat, collectionIndex, returnToCache, j, removedLength) {

dist/es2015/array-virtual-repeat-strategy.js

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,27 +89,50 @@ export let ArrayVirtualRepeatStrategy = class ArrayVirtualRepeatStrategy extends
8989
let removeDelta = 0;
9090
let rmPromises = [];
9191

92-
for (let i = 0, ii = splices.length; i < ii; ++i) {
92+
let allSplicesAreInplace = true;
93+
for (let i = 0; i < splices.length; i++) {
9394
let splice = splices[i];
94-
let removed = splice.removed;
95-
let removedLength = removed.length;
96-
for (let j = 0, jj = removedLength; j < jj; ++j) {
97-
let viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
98-
if (viewOrPromise instanceof Promise) {
99-
rmPromises.push(viewOrPromise);
100-
}
95+
if (splice.removed.length !== splice.addedCount) {
96+
allSplicesAreInplace = false;
97+
break;
10198
}
102-
removeDelta -= splice.addedCount;
10399
}
104100

105-
if (rmPromises.length > 0) {
106-
return Promise.all(rmPromises).then(() => {
107-
this._handleAddedSplices(repeat, array, splices);
108-
updateVirtualOverrideContexts(repeat, 0);
109-
});
101+
if (allSplicesAreInplace) {
102+
for (let i = 0; i < splices.length; i++) {
103+
let splice = splices[i];
104+
for (let collectionIndex = splice.index; collectionIndex < splice.index + splice.addedCount; collectionIndex++) {
105+
if (!this._isIndexBeforeViewSlot(repeat, repeat.viewSlot, collectionIndex) && !this._isIndexAfterViewSlot(repeat, repeat.viewSlot, collectionIndex)) {
106+
let viewIndex = this._getViewIndex(repeat, repeat.viewSlot, collectionIndex);
107+
let overrideContext = createFullOverrideContext(repeat, array[collectionIndex], collectionIndex, array.length);
108+
repeat.removeView(viewIndex, true, true);
109+
repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);
110+
}
111+
}
112+
}
113+
} else {
114+
for (let i = 0, ii = splices.length; i < ii; ++i) {
115+
let splice = splices[i];
116+
let removed = splice.removed;
117+
let removedLength = removed.length;
118+
for (let j = 0, jj = removedLength; j < jj; ++j) {
119+
let viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
120+
if (viewOrPromise instanceof Promise) {
121+
rmPromises.push(viewOrPromise);
122+
}
123+
}
124+
removeDelta -= splice.addedCount;
125+
}
126+
127+
if (rmPromises.length > 0) {
128+
return Promise.all(rmPromises).then(() => {
129+
this._handleAddedSplices(repeat, array, splices);
130+
updateVirtualOverrideContexts(repeat, 0);
131+
});
132+
}
133+
this._handleAddedSplices(repeat, array, splices);
134+
updateVirtualOverrideContexts(repeat, 0);
110135
}
111-
this._handleAddedSplices(repeat, array, splices);
112-
updateVirtualOverrideContexts(repeat, 0);
113136
}
114137

115138
_removeViewAt(repeat, collectionIndex, returnToCache, j, removedLength) {

dist/system/array-virtual-repeat-strategy.js

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -149,27 +149,50 @@ System.register(['aurelia-templating-resources', './utilities'], function (_expo
149149
var removeDelta = 0;
150150
var rmPromises = [];
151151

152-
for (var i = 0, ii = splices.length; i < ii; ++i) {
152+
var allSplicesAreInplace = true;
153+
for (var i = 0; i < splices.length; i++) {
153154
var splice = splices[i];
154-
var removed = splice.removed;
155-
var removedLength = removed.length;
156-
for (var j = 0, jj = removedLength; j < jj; ++j) {
157-
var viewOrPromise = this._removeViewAt(repeat, splice.index + removeDelta + rmPromises.length, true, j, removedLength);
158-
if (viewOrPromise instanceof Promise) {
159-
rmPromises.push(viewOrPromise);
160-
}
155+
if (splice.removed.length !== splice.addedCount) {
156+
allSplicesAreInplace = false;
157+
break;
161158
}
162-
removeDelta -= splice.addedCount;
163159
}
164160

165-
if (rmPromises.length > 0) {
166-
return Promise.all(rmPromises).then(function () {
167-
_this3._handleAddedSplices(repeat, array, splices);
168-
updateVirtualOverrideContexts(repeat, 0);
169-
});
161+
if (allSplicesAreInplace) {
162+
for (var _i2 = 0; _i2 < splices.length; _i2++) {
163+
var _splice = splices[_i2];
164+
for (var collectionIndex = _splice.index; collectionIndex < _splice.index + _splice.addedCount; collectionIndex++) {
165+
if (!this._isIndexBeforeViewSlot(repeat, repeat.viewSlot, collectionIndex) && !this._isIndexAfterViewSlot(repeat, repeat.viewSlot, collectionIndex)) {
166+
var viewIndex = this._getViewIndex(repeat, repeat.viewSlot, collectionIndex);
167+
var overrideContext = createFullOverrideContext(repeat, array[collectionIndex], collectionIndex, array.length);
168+
repeat.removeView(viewIndex, true, true);
169+
repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);
170+
}
171+
}
172+
}
173+
} else {
174+
for (var _i3 = 0, ii = splices.length; _i3 < ii; ++_i3) {
175+
var _splice2 = splices[_i3];
176+
var removed = _splice2.removed;
177+
var removedLength = removed.length;
178+
for (var j = 0, jj = removedLength; j < jj; ++j) {
179+
var viewOrPromise = this._removeViewAt(repeat, _splice2.index + removeDelta + rmPromises.length, true, j, removedLength);
180+
if (viewOrPromise instanceof Promise) {
181+
rmPromises.push(viewOrPromise);
182+
}
183+
}
184+
removeDelta -= _splice2.addedCount;
185+
}
186+
187+
if (rmPromises.length > 0) {
188+
return Promise.all(rmPromises).then(function () {
189+
_this3._handleAddedSplices(repeat, array, splices);
190+
updateVirtualOverrideContexts(repeat, 0);
191+
});
192+
}
193+
this._handleAddedSplices(repeat, array, splices);
194+
updateVirtualOverrideContexts(repeat, 0);
170195
}
171-
this._handleAddedSplices(repeat, array, splices);
172-
updateVirtualOverrideContexts(repeat, 0);
173196
};
174197

175198
ArrayVirtualRepeatStrategy.prototype._removeViewAt = function _removeViewAt(repeat, collectionIndex, returnToCache, j, removedLength) {

0 commit comments

Comments
 (0)