Virtual Discussion | Elected American | State Legislator Lili Qi
Join us for two virtual discussions aboutLily Qi’s ’91 recent book,Elected American , led by Lily herself.In the book, Lily shares about her experiences at Manchester as an international student from China and the impact professor emeritusAl Deeter 鈥53 had on her life. Lily proudly serves the people of Maryland as a state legislator and currently sits on our Board of Trustees. Each session will cover a section of the book. Purchase of the book will be at the reader鈥檚 expense.
鈥淎s the only U.S. state legislator who lived through China鈥檚 Cultural Revolution, Qi brings a rare cross-system perspective to American politics and modern-day Asian American identity.Elected American is a political memoir and an immigrant story that emphasizes that democracy doesn鈥檛 wait on the sidelines鈥昳t favors those who participate.鈥
Lilywill also hold an in-person reading of the book at Manchester during Homecoming 2026 on Sat., Oct. 17.
exists ---
(function ensure40pxInlineEarly() {
function set40(el) { el && el.style.setProperty('padding-top', '40px', 'important'); }
// If header already parsed, set now; otherwise set as soon as it appears.
const hdrNow = document.getElementById(HEADER_ID);
if (hdrNow) { set40(hdrNow); return; }
new MutationObserver((muts, obs) => {
const hdr = document.getElementById(HEADER_ID);
if (hdr) { set40(hdr); obs.disconnect(); }
}).observe(document.documentElement, { childList: true, subtree: true });
})();
// --- Helpers ---
function hideDiviBars() {
document.querySelectorAll('.divibars-container').forEach(div => {
const content = (div.textContent || '').replace(/\u00A0/g, ' ').trim();
const shouldHide =
!content ||
/all\s*clear/i.test(content) ||
/test/i.test(content) ||
/feed\s*has\s*no\s*items\.?/i.test(content);
if (shouldHide) div.style.setProperty('display', 'none', 'important');
});
}
function isEffectivelyVisible(el) {
if (!el || !el.isConnected) return false;
const target = el.querySelector('.divibars, .divibars-wrapper, .divibars-content') || el;
const cs = getComputedStyle(target);
if (cs.display === 'none' || cs.visibility === 'hidden' || target.hidden) return false;
if (parseFloat(cs.opacity || '1') < 0.05) return false;
if (target.closest('[aria-hidden="true"]')) return false;
const rect = target.getBoundingClientRect();
const hasSize = (rect.width > 0 && rect.height > 0) || (target.offsetWidth > 0 && target.offsetHeight > 0);
if (!hasSize) return false;
const vh = window.innerHeight || document.documentElement.clientHeight;
return rect.bottom > 0 && rect.top < vh;
}
function anyRealBannerVisible() {
// A 鈥渞eal鈥 banner = visible AND not empty/test/all-clear/feed-empty
return Array.from(document.querySelectorAll(CANDS)).some(el => {
if (!isEffectivelyVisible(el)) return false;
const txt = (el.textContent || '').replace(/\u00A0/g, ' ').trim();
if (!txt) return false;
if (/all\s*clear/i.test(txt) || /test/i.test(txt) || /feed\s*has\s*no\s*items\.?/i.test(txt)) return false;
return true;
});
}
function setForce110(on) {
const root = document.documentElement;
const was = root.classList.contains('divibar-force-110');
if (!!on === was) return;
root.classList.add('divibar-atomic');
root.classList.toggle('divibar-force-110', !!on);
// If we鈥檙e NOT forcing 110, clear any stray inline 110 the plugin may add later.
if (!on) {
const hdr = document.getElementById(HEADER_ID);
if (hdr) hdr.style.setProperty('padding-top', '40px', 'important');
}
requestAnimationFrame(() => root.classList.remove('divibar-atomic'));
}
// Debounced 2-frame confirmation to avoid flicker during animations
let raf1 = null, raf2 = null;
function scheduleRecompute() {
if (raf1) return;
raf1 = requestAnimationFrame(() => {
raf1 = null;
hideDiviBars();
const a = anyRealBannerVisible();
raf2 = requestAnimationFrame(() => {
raf2 = null;
const b = anyRealBannerVisible();
setForce110(a && b);
});
});
}
// --- Wiring ---
document.addEventListener('DOMContentLoaded', scheduleRecompute);
window.addEventListener('load', scheduleRecompute);
window.addEventListener('resize', () => { cancelAnimationFrame(raf1); raf1 = null; cancelAnimationFrame(raf2); raf2 = null; scheduleRecompute(); });
new MutationObserver(() => scheduleRecompute()).observe(document.documentElement, {
childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class', 'aria-hidden']
});
document.addEventListener('transitionend', e => { if (e.target && e.target.closest(CANDS)) scheduleRecompute(); });
document.addEventListener('animationend', e => { if (e.target && e.target.closest(CANDS)) scheduleRecompute(); });
document.addEventListener('click', function (e) {
const btn = e.target && e.target.closest('.divibars-close');
if (!btn) return;
setTimeout(() => {
const bar = btn.closest('.divibars-container, [class*="divibar"]');
if (bar) bar.style.setProperty('display', 'none', 'important');
scheduleRecompute();
}, 200);
}, true);
// Initial pass
scheduleRecompute();
})();