// Smart polling helper — skips hidden tabs, fires immediately on tab return (debounced 2s)
window.createSmartPoll = function(pollFn, intervalMs) {
  let cancelled = false;
  let lastVisibilityPoll = 0;

  const safeRun = () => {
    if (cancelled) return;
    if (typeof document !== 'undefined' && document.visibilityState !== 'visible') return;
    try { pollFn(); } catch (e) { console.warn('[smartPoll]', e); }
  };

  const initTimer = setTimeout(safeRun, 1500);
  const intervalId = setInterval(safeRun, intervalMs);

  const onVisibility = () => {
    if (cancelled) return;
    if (document.visibilityState !== 'visible') return;
    const now = Date.now();
    if (now - lastVisibilityPoll < 2000) return;
    lastVisibilityPoll = now;
    safeRun();
  };
  document.addEventListener('visibilitychange', onVisibility);

  return function cleanup() {
    cancelled = true;
    clearTimeout(initTimer);
    clearInterval(intervalId);
    document.removeEventListener('visibilitychange', onVisibility);
  };
};
