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,
|
||||
}));
|
||||
|
||||
term.open(termEl);
|
||||
fitAddon.fit();
|
||||
// Defer open if container isn't visible yet (e.g., behind splash)
|
||||
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 ─────────────────────────────────
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue