diff --git a/script/run.ts b/script/run.ts index ef7dea8..659d2ac 100644 --- a/script/run.ts +++ b/script/run.ts @@ -260,19 +260,27 @@ namespace Flat { export function fadeTo(newPane: Pane): void { for (const pane of allPanes) { - const here = pane == newPane; const elem = document.getElementById(pane)!; - if (here) { + if (pane == newPane) { + // show new pane + // + // - "entering" state is displayed and z-index 1, but opacity 0 + // - "active" state is fully showing + // + // "entering" exists because firefox doesn't animate a + // transition out of `display: none` elem.dataset.state = 'entering'; setTimeout(() => elem.dataset.state = 'active'); - // elem.addEventListener('transitionend', - // () => elem.dataset.state = 'active', - // {once: true}); history.replaceState(null, '🦎', `#${pane}`); } else if (elem.dataset.state == 'active') { - elem.addEventListener('transitionend', - () => elem.dataset.state = 'hidden', - {once: true}); + // hide old pane + // + // - "leaving" is z-index -1 and opacity 0 + // - "hidden" is `display: none` + // + // separate for the same reason as above + function hide() { elem.dataset.state = 'hidden'; } + elem.addEventListener('transitionend', hide, {once: true}); elem.dataset.state = 'leaving'; } }