smooth-scrollbar
Version:
Customize scrollbar in modern browsers with smooth scrolling experience.
42 lines • 1.38 kB
JavaScript
import { eventScope, } from '../utils/';
export function wheelHandler(scrollbar) {
var addEvent = eventScope(scrollbar);
var target = scrollbar.options.delegateTo || scrollbar.containerEl;
var eventName = ('onwheel' in window || document.implementation.hasFeature('Events.wheel', '3.0')) ? 'wheel' : 'mousewheel';
addEvent(target, eventName, function (evt) {
var _a = normalizeDelta(evt), x = _a.x, y = _a.y;
scrollbar.addTransformableMomentum(x, y, evt, function (willScroll) {
if (willScroll) {
evt.preventDefault();
}
});
});
}
// Normalizing wheel delta
var DELTA_SCALE = {
STANDARD: 1,
OTHERS: -3,
};
var DELTA_MODE = [1.0, 28.0, 500.0];
var getDeltaMode = function (mode) { return DELTA_MODE[mode] || DELTA_MODE[0]; };
function normalizeDelta(evt) {
if ('deltaX' in evt) {
var mode = getDeltaMode(evt.deltaMode);
return {
x: evt.deltaX / DELTA_SCALE.STANDARD * mode,
y: evt.deltaY / DELTA_SCALE.STANDARD * mode,
};
}
if ('wheelDeltaX' in evt) {
return {
x: evt.wheelDeltaX / DELTA_SCALE.OTHERS,
y: evt.wheelDeltaY / DELTA_SCALE.OTHERS,
};
}
// ie with touchpad
return {
x: 0,
y: evt.wheelDelta / DELTA_SCALE.OTHERS,
};
}
//# sourceMappingURL=wheel.js.map