drift-zoom
Version:
Easily add "zoom on hover" functionality to your site's images. Lightweight, no-dependency JavaScript.
47 lines (37 loc) • 887 B
JavaScript
/* eslint-disable */
// http://underscorejs.org/docs/underscore.html#section-83
export default function debounce(func, wait, immediate) {
let timeout;
let args;
let context;
let timestamp;
let result;
const later = function() {
const last = Date.now() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
if (!timeout) {
context = args = null;
}
}
}
};
return function() {
context = this;
args = arguments;
timestamp = Date.now();
const callNow = immediate && !timeout;
if (!timeout) {
timeout = setTimeout(later, wait);
}
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
}