/* #267: jump to top / bottom controls for long content. Paste view scrolls the window; the /new editor scrolls its textarea. The active scroller is chosen via data-jump-scroll on the script tag. */ (function () { var nav = document.getElementById('jumpnav'); if (!nav) return; var scroller = window; var sel = nav.dataset.jumpScroll; if (sel) scroller = document.querySelector(sel); function el() { return scroller === window ? document.scrollingElement : scroller; } function isLarge() { var e = el(); if (!e) return false; var visible = scroller === window ? window.innerHeight : e.clientHeight; return e.scrollHeight > visible * 2; } function refresh() { nav.classList.toggle('hidden', !isLarge()); } function jump(toTop) { var e = el(); if (!e) return; if (scroller === window) { window.scrollTo({ top: toTop ? 0 : e.scrollHeight }); } else { e.scrollTop = toTop ? 0 : e.scrollHeight; } } nav.addEventListener('click', function (ev) { var b = ev.target.closest('[data-jump]'); if (!b) return; ev.preventDefault(); jump(b.dataset.jump === 'top'); }); window.addEventListener('resize', refresh); if (scroller !== window && scroller) scroller.addEventListener('input', refresh); refresh(); })();