aurelia-bootstrap
Version:
Bootstrap components written in Aurelia.
66 lines (50 loc) • 1.94 kB
JavaScript
/* */
define(['exports', './repeat-utilities'], function (exports, _repeatUtilities) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NumberRepeatStrategy = undefined;
var NumberRepeatStrategy = exports.NumberRepeatStrategy = function () {
function NumberRepeatStrategy() {
}
NumberRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver() {
return null;
};
NumberRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, value) {
var _this = this;
var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);
if (removePromise instanceof Promise) {
removePromise.then(function () {
return _this._standardProcessItems(repeat, value);
});
return;
}
this._standardProcessItems(repeat, value);
};
NumberRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, value) {
var childrenLength = repeat.viewCount();
var i = void 0;
var ii = void 0;
var overrideContext = void 0;
var viewsToRemove = void 0;
value = Math.floor(value);
viewsToRemove = childrenLength - value;
if (viewsToRemove > 0) {
if (viewsToRemove > childrenLength) {
viewsToRemove = childrenLength;
}
for (i = 0, ii = viewsToRemove; i < ii; ++i) {
repeat.removeView(childrenLength - (i + 1), true, !repeat.viewsRequireLifecycle);
}
return;
}
for (i = childrenLength, ii = value; i < ii; ++i) {
overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, i, i, ii);
repeat.addView(overrideContext.bindingContext, overrideContext);
}
(0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);
};
return NumberRepeatStrategy;
}();
});