vimo-dt
Version:
A Vue2.x UI Project For Mobile & HyBrid
81 lines (71 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateImgs = updateImgs;
exports.sortTopToBottom = sortTopToBottom;
function updateImgs(imgs, viewableTop, contentHeight, scrollDirectionY, requestableBuffer, renderableBuffer) {
var viewableBottom = viewableTop + contentHeight;
var priority1 = [];
var priority2 = [];
var img = void 0;
for (var i = 0, ilen = imgs.length; i < ilen; i++) {
img = imgs[i];
if (scrollDirectionY === 'up') {
if (img.getTop() < viewableBottom && img.getBottom() > viewableTop - renderableBuffer) {
img.canRequest = img.canRender = true;
priority1.push(img);
continue;
}
if (img.getBottom() <= viewableTop && img.getBottom() > viewableTop - requestableBuffer) {
img.canRequest = true;
img.canRender = false;
priority2.push(img);
continue;
}
if (img.getTop() >= viewableBottom && img.getTop() < viewableBottom + renderableBuffer) {
img.canRequest = img.canRender = false;
continue;
}
} else {
if (img.getBottom() > viewableTop && img.getTop() < viewableBottom + renderableBuffer) {
img.canRequest = img.canRender = true;
priority1.push(img);
continue;
}
if (img.getTop() >= viewableBottom && img.getTop() < viewableBottom + requestableBuffer) {
img.canRequest = true;
img.canRender = false;
priority2.push(img);
continue;
}
if (img.getBottom() <= viewableTop && img.getBottom() > viewableTop - renderableBuffer) {
img.canRequest = img.canRender = false;
continue;
}
}
img.canRequest = img.canRender = false;
img.reset();
}
priority1.sort(sortTopToBottom).forEach(function (i) {
return i.update();
});
if (scrollDirectionY === 'up') {
priority2.sort(sortTopToBottom).reverse().forEach(function (i) {
return i.update();
});
} else {
priority2.sort(sortTopToBottom).forEach(function (i) {
return i.update();
});
}
}
function sortTopToBottom(a, b) {
if (a.top < b.top) {
return -1;
}
if (a.top > b.top) {
return 1;
}
return 0;
}