fix(electrobun): defer xterm.open() until container visible (fixes splash crash)
This commit is contained in:
parent
75391fb1e9
commit
f4a51ca6c0
1 changed files with 24 additions and 2 deletions
|
|
@ -60,8 +60,30 @@
|
||||||
showPlaceholder: true,
|
showPlaceholder: true,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
term.open(termEl);
|
// Defer open if container isn't visible yet (e.g., behind splash)
|
||||||
fitAddon.fit();
|
const tryOpen = () => {
|
||||||
|
try {
|
||||||
|
term.open(termEl);
|
||||||
|
fitAddon.fit();
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('[Terminal] open failed, retrying in 500ms:', (e as Error).message);
|
||||||
|
setTimeout(tryOpen, 500);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (termEl.offsetParent !== null) {
|
||||||
|
tryOpen();
|
||||||
|
} else {
|
||||||
|
// Container not visible — wait for it
|
||||||
|
const observer = new IntersectionObserver((entries) => {
|
||||||
|
if (entries[0]?.isIntersecting) {
|
||||||
|
observer.disconnect();
|
||||||
|
tryOpen();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
observer.observe(termEl);
|
||||||
|
// Fallback: try after 2s regardless
|
||||||
|
setTimeout(() => { observer.disconnect(); tryOpen(); }, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
// ── Read cursor/scrollback settings ─────────────────────────────────
|
// ── Read cursor/scrollback settings ─────────────────────────────────
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue