UNPKG

react-16-dropdown

Version:

A zero-dependency, lightweight and fully customizable dropdown (not select) for React.

57 lines (47 loc) 1.17 kB
export const optimizedResize = (function () { const callbacks = []; let running = false; // run the actual callbacks function runCallbacks() { callbacks.forEach((callback) => { callback(); }); running = false; } // fired on resize event function resize() { if (!running) { running = true; if (window.requestAnimationFrame) { window.requestAnimationFrame(runCallbacks); } else { setTimeout(runCallbacks, 66); } } } // adds callback to loop function addCallback(callback) { if (callback) { callbacks.push(callback); } } return { // public method to add additional callback add(callback) { if (!callbacks.length) { window.addEventListener('resize', resize); } addCallback(callback); }, }; }()); export function getAbsoluteBoundingRect(el) { const clientRect = el.getBoundingClientRect(); const rect = {}; rect.left = window.scrollX + clientRect.left; rect.top = window.scrollY + clientRect.top; rect.right = clientRect.right; rect.bottom = clientRect.bottom; rect.height = clientRect.height; return rect; }