vscroll
Version:
Virtual scroll engine
61 lines • 2.22 kB
JavaScript
import { __extends } from "tslib";
import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
import { Direction } from '../inputs/index';
var Clip = /** @class */ (function (_super) {
__extends(Clip, _super);
function Clip() {
return _super !== null && _super.apply(this, arguments) || this;
}
Clip.run = function (scroller) {
var workflow = scroller.workflow;
Clip.doClip(scroller);
workflow.call({
process: Clip.process,
status: ProcessStatus.next
});
};
Clip.doClip = function (scroller) {
var _a;
var buffer = scroller.buffer, viewport = scroller.viewport, state = scroller.state, logger = scroller.logger;
var size = (_a = {}, _a[Direction.backward] = 0, _a[Direction.forward] = 0, _a);
logger.stat("before clip (".concat(++state.clip.callCount, ")"));
var itemsToRemove = buffer.items.filter(function (item) {
if (!item.toRemove) {
return false;
}
item.hide();
size[item.removeDirection] += item.size;
return true;
});
if (itemsToRemove.length) {
if (size[Direction.backward]) {
viewport.paddings.byDirection(Direction.backward).size += size[Direction.backward];
}
if (size[Direction.forward]) {
viewport.paddings.byDirection(Direction.forward).size += size[Direction.forward];
}
if (scroller.settings.onBeforeClip) {
scroller.settings.onBeforeClip(itemsToRemove.map(function (item) { return item.get(); }));
}
}
buffer.clip();
logger.log(function () {
var list = itemsToRemove.map(function (_a) {
var $index = _a.$index;
return $index;
});
return list.length
? [
"clipped ".concat(list.length, " item(s) from Buffer") +
(size.backward ? ", +".concat(size.backward, " fwd px") : '') +
(size.forward ? ", +".concat(size.forward, " bwd px") : '') +
", range: [".concat(list[0], "..").concat(list[list.length - 1], "]")
]
: 'clipped 0 items from Buffer';
});
logger.stat('after clip');
};
return Clip;
}(BaseProcessFactory(CommonProcess.clip)));
export default Clip;
//# sourceMappingURL=clip.js.map