UNPKG

gentelella

Version:

Gentelella Admin is a free to use Bootstrap admin template

59 lines (50 loc) 1.56 kB
/** * Modern SmartResize - jQuery-free version * Debounced resize event handler for better performance */ // Debounce function to limit resize event frequency function debounce(func, wait = 250, immediate = false) { let timeout; return function executedFunction(...args) { const later = () => { timeout = null; if (!immediate) func(...args); }; const callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func(...args); }; } // Smart resize functionality const smartResize = { handlers: new Set(), // Add a resize handler add(handler, wait = 250) { const debouncedHandler = debounce(handler, wait); this.handlers.add(debouncedHandler); window.addEventListener('resize', debouncedHandler); return debouncedHandler; }, // Remove a resize handler remove(handler) { window.removeEventListener('resize', handler); this.handlers.delete(handler); }, // Clear all handlers clear() { this.handlers.forEach(handler => { window.removeEventListener('resize', handler); }); this.handlers.clear(); } }; // Extend Window prototype for jQuery-like API if (!window.smartResize) { window.smartResize = smartResize; } // Also provide a simple function for direct use window.addSmartResize = (handler, wait) => smartResize.add(handler, wait); window.removeSmartResize = (handler) => smartResize.remove(handler); console.log('✅ Modern smart resize initialized (jQuery-free)'); export default smartResize;