UNPKG

vscroll

Version:
60 lines 2.58 kB
import { __extends } from "tslib"; import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index'; import { Item } from '../../classes/item'; import { Direction } from '../../inputs/index'; var Update = /** @class */ (function (_super) { __extends(Update, _super); function Update() { return _super !== null && _super.apply(this, arguments) || this; } Update.run = function (scroller, options) { var params = Update.parseInput(scroller, options).params; if (!params) { return; } var shouldUpdate = Update.doUpdate(scroller, params); scroller.workflow.call({ process: Update.process, status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done }); }; Update.doUpdate = function (scroller, params) { var buffer = scroller.buffer, viewport = scroller.viewport, fetch = scroller.state.fetch, routines = scroller.routines, logger = scroller.logger; if (!buffer.items) { logger.log(function () { return 'no items in Buffer'; }); return false; } var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), firstItem = _a.item, firstIndex = _a.index, firstItemDiff = _a.diff; var _b = buffer.updateItems(params.predicate, function (index, data) { return new Item(index, data, routines); }, firstIndex, !!params.fixRight), trackedIndex = _b.trackedIndex, toRemove = _b.toRemove; var delta = 0; var trackedItem = buffer.get(trackedIndex); if (firstItem && firstItem === trackedItem) { delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff; } toRemove.forEach(function (item) { return item.hide(); }); logger.log(function () { return toRemove.length ? 'items to remove: [' + toRemove.map(function (_a) { var $index = _a.$index; return $index; }).join(',') + ']' : 'no items to remove'; }); if (toRemove.length) { // insertions will be processed on render buffer.checkDefaultSize(); } var toRender = buffer.items.filter(function (_a) { var toInsert = _a.toInsert; return toInsert; }); logger.log(function () { return toRender.length ? 'items to render: [' + toRender.map(function (_a) { var $index = _a.$index; return $index; }).join(',') + ']' : 'no items to render'; }); fetch.update(trackedIndex, delta, toRender, toRemove); return !!toRemove.length || !!toRender.length; }; return Update; }(BaseAdapterProcessFactory(AdapterProcess.update))); export default Update; //# sourceMappingURL=update.js.map