in lib/@uncharted/strippets/src/strippets.js [509:540]
Strippets.prototype.startAutoCentering = function() {
var s = this;
if (s.$viewport.hasClass(s.classes.container.autoCenter)) {
return;
}
s.$viewport.addClass(s.classes.container.autoCenter);
var viewPortWidth = s.$viewport.width();
var maxScrollPosition = s.$viewport[0].scrollWidth - viewPortWidth;
var endTimer;
// Watch for scrollWidth change and set scroll position accordingly.
var scrollWidthWatcher = setInterval(function() {
var currentPosition = s.$viewport[0].scrollLeft;
var newMaxScrollPosition = s.$viewport[0].scrollWidth - viewPortWidth;
var targetPosition = newMaxScrollPosition / 2;
var diff = Math.abs((maxScrollPosition - newMaxScrollPosition)) * 0.5;
if (maxScrollPosition === newMaxScrollPosition) {
return;
}
if (currentPosition < targetPosition) {
s.$viewport[0].scrollLeft += diff;
} else if (currentPosition > targetPosition) {
s.$viewport[0].scrollLeft -= diff;
}
maxScrollPosition = newMaxScrollPosition;
// Kill the watcher if no scroll width change is detected for 100 ms.
clearTimeout(endTimer);
endTimer = setTimeout(function() {
clearInterval(scrollWidthWatcher);
s.$viewport.removeClass(s.classes.container.autoCenter);
}, 100);
}, 0);
};