vscroll
Version:
Virtual scroll engine
48 lines • 1.55 kB
JavaScript
import { __extends } from "tslib";
import Update from './update';
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
var Replace = /** @class */ (function (_super) {
__extends(Replace, _super);
function Replace() {
return _super !== null && _super.apply(this, arguments) || this;
}
Replace.run = function (scroller, options) {
var params = Replace.parseInput(scroller, options).params;
if (!params) {
return;
}
var shouldReplace = Replace.doReplace(scroller, params);
scroller.workflow.call({
process: Replace.process,
status: shouldReplace ? ProcessStatus.next : ProcessStatus.done,
});
};
Replace.doReplace = function (scroller, params) {
var toRemove = scroller.buffer.items
.filter(function (item) { return params.predicate(item); })
.map(function (item) { return item.$index; });
if (!toRemove.length) {
scroller.logger.log('no items to be replaced');
return false;
}
var injected = false;
var updateOptions = {
predicate: function (_a) {
var $index = _a.$index;
if (!toRemove.includes($index)) {
return true;
}
if (!injected) {
injected = true;
return params.items;
}
return false;
},
fixRight: params.fixRight
};
return Update.doUpdate(scroller, updateOptions);
};
return Replace;
}(BaseAdapterProcessFactory(AdapterProcess.replace)));
export default Replace;
//# sourceMappingURL=replace.js.map