function renderApp(state) {
  const pauseBtnIcon = `#icon-${state.paused ? "play" : "pause"}`
  const shutterBtnIcon = `#icon-shutter-${state.longExposure ? "fast" : "slow"}`
  appNodes.pauseBtnSVG.setAttribute("href", pauseBtnIcon)
  appNodes.pauseBtnSVG.setAttribute("xlink:href", pauseBtnIcon)
  appNodes.shutterBtnSVG.setAttribute("href", shutterBtnIcon)
  appNodes.shutterBtnSVG.setAttribute("xlink:href", shutterBtnIcon)
  appNodes.controls.classList.toggle(
    "hide",
    state.menuOpen || state.config.hideControls
  )
  appNodes.canvasContainer.classList.toggle("blur", state.menuOpen)
  appNodes.menu.classList.toggle("hide", !state.menuOpen)
  appNodes.finaleModeLabel.style.opacity = state.config.autoLaunch ? 1 : 0.32

  appNodes.quality.value = state.config.quality
  appNodes.shellType.value = state.config.shell
  appNodes.shellSize.value = state.config.size
  appNodes.autoLaunch.checked = state.config.autoLaunch
  appNodes.finaleMode.checked = state.config.finale
  appNodes.skyLighting.value = state.config.skyLighting
  appNodes.hideControls.checked = state.config.hideControls
}
// First render is called in init()
First render is called in init()
First render is called in init ()
function renderApp(state) {
  const pauseBtnIcon = `#icon-${state.paused ? "play" : "pause"}`
  const shutterBtnIcon = `#icon-shutter-${state.longExposure ? "fast" : "slow"}`
  appNodes.pauseBtnSVG.setAttribute("href", pauseBtnIcon)
  appNodes.pauseBtnSVG.setAttribute("xlink:href", pauseBtnIcon)
  appNodes.shutterBtnSVG.setAttribute("href", shutterBtnIcon)
  appNodes.shutterBtnSVG.setAttribute("xlink:href", shutterBtnIcon)
  appNodes.controls.classList.toggle(
    "hide",
    state.menuOpen || state.config.hideControls
  )
  appNodes.canvasContainer.classList.toggle("blur", state.menuOpen)
  appNodes.menu.classList.toggle("hide", !state.menuOpen)
  appNodes.finaleModeLabel.style.opacity = state.config.autoLaunch ? 1 : 0.32
  appNodes.quality.value = state.config.quality
  appNodes.shellType.value = state.config.shell
  appNodes.shellSize.value = state.config.size
  appNodes.autoLaunch.checked = state.config.autoLaunch
  appNodes.finaleMode.checked = state.config.finale
  appNodes.skyLighting.value = state.config.skyLighting
  appNodes.hideControls.checked = state.config.hideControls
}
function renderApp ( state ) { const pauseBtnIcon = ` ${ state . paused ? "play" : "pause" } ` const shutterBtnIcon = ` ${ state . longExposure ? "fast" : "slow" } ` appNodes . pauseBtnSVG . setAttribute ( "href" , pauseBtnIcon ) appNodes . pauseBtnSVG . setAttribute ( "xlink:href" , pauseBtnIcon ) appNodes . shutterBtnSVG . setAttribute ( "href" , shutterBtnIcon ) appNodes . shutterBtnSVG . setAttribute ( "xlink:href" , shutterBtnIcon ) appNodes . controls . classList . toggle ( "hide" , state . menuOpen || state . config . hideControls ) appNodes . canvasContainer . classList . toggle ( "blur" , state . menuOpen ) appNodes . menu . classList . toggle ( "hide" , ! state . menuOpen ) appNodes . finaleModeLabel . style . opacity = state . config . autoLaunch ? 1 : 0.32 appNodes . quality . value = state . config . quality appNodes . shellType . value = state . config . shell appNodes . shellSize . value = state . config . size appNodes . autoLaunch . checked = state . config . autoLaunch appNodes . finaleMode . checked = state . config . finale appNodes . skyLighting . value = state . config . skyLighting appNodes . hideControls . checked = state . config . hideControls }
First render is called in init()
First render is called in init ()