Comparing version 1.0.1 to 1.1.0
@@ -1,4 +0,8 @@ | ||
window.onceWheel = function onceWheel() { | ||
window.onceWheel = function onceWheel(scrollDownHandler, scrolUpHandler) { | ||
let wheelPower = 0 | ||
let wheelLock = false | ||
let wheelTimeStamp = 0 | ||
let wheelLockTimer = null | ||
const deltaThreshold = 50 | ||
const noiseThreshold = 20 | ||
const wheelEvent = | ||
@@ -14,13 +18,33 @@ 'onwheel' in document | ||
const absDelta = Math.abs(delta) | ||
if (absDelta < noiseThreshold) return | ||
if (event.timeStamp - wheelTimeStamp < 300 && wheelLock) return | ||
wheelTimeStamp = event.timeStamp | ||
if (wheelPower < absDelta && !wheelLock) { | ||
if (delta < -50) scrollDownHandler() | ||
else if (delta > 50) scrolUpHandler() | ||
if (delta < -deltaThreshold) scrollDownHandler() | ||
else if (delta > deltaThreshold) scrolUpHandler() | ||
wheelPower = absDelta | ||
wheelLock = true | ||
} else if (absDelta < 50) { | ||
wheelPower = 50 | ||
wheelLock = false | ||
lock(absDelta) | ||
clearTimeout(wheelLockTimer) | ||
wheelLockTimer = setTimeout(() => { | ||
if (wheelPower !== absDelta) return | ||
unlock() | ||
}, 1000) | ||
} else if (absDelta < deltaThreshold && wheelLock) { | ||
unlock() | ||
} | ||
}) | ||
function lock(absDelta) { | ||
wheelPower = absDelta | ||
wheelLock = true | ||
} | ||
function unlock() { | ||
wheelPower = deltaThreshold | ||
wheelLock = false | ||
} | ||
} |
38
index.js
export default function onceWheel(scrollDownHandler, scrolUpHandler) { | ||
let wheelPower = 0 | ||
let wheelLock = false | ||
let wheelTimeStamp = 0 | ||
let wheelLockTimer = null | ||
const deltaThreshold = 50 | ||
const noiseThreshold = 20 | ||
const wheelEvent = | ||
@@ -14,13 +18,33 @@ 'onwheel' in document | ||
const absDelta = Math.abs(delta) | ||
if (absDelta < noiseThreshold) return | ||
if (event.timeStamp - wheelTimeStamp < 300 && wheelLock) return | ||
wheelTimeStamp = event.timeStamp | ||
if (wheelPower < absDelta && !wheelLock) { | ||
if (delta < -50) scrollDownHandler() | ||
else if (delta > 50) scrolUpHandler() | ||
if (delta < -deltaThreshold) scrollDownHandler() | ||
else if (delta > deltaThreshold) scrolUpHandler() | ||
wheelPower = absDelta | ||
wheelLock = true | ||
} else if (absDelta < 50) { | ||
wheelPower = 50 | ||
wheelLock = false | ||
lock(absDelta) | ||
clearTimeout(wheelLockTimer) | ||
wheelLockTimer = setTimeout(() => { | ||
if (wheelPower !== absDelta) return | ||
unlock() | ||
}, 1000) | ||
} else if (absDelta < deltaThreshold) { | ||
unlock() | ||
} | ||
}) | ||
function lock(absDelta) { | ||
wheelPower = absDelta | ||
wheelLock = true | ||
} | ||
function unlock() { | ||
wheelPower = deltaThreshold | ||
wheelLock = false | ||
} | ||
} |
{ | ||
"name": "once-wheel", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "unpkg": "index.browser.js", |
3333
80