Youtube Theater Fill Up Window

make theater mode fill up window

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name               Youtube Theater Fill Up Window
// @name:zh-TW         Youtube Theater Fill Up Window
// @namespace          https://greasyfork.org/scripts/454092
// @version            1.1.2
// @description        make theater mode fill up window
// @description:zh-TW  讓劇院模式填滿視窗
// @author             Derek
// @match              *://www.youtube.com/*
// @grant              none
// @noframes
// ==/UserScript==

const autoTheater = 0 //change the value into 「1」 to make Theater mode default!

const $ = (element) => document.querySelector(element)

const getScrollbarWidth = () => {
  let dummy = document.createElement('div')
  document.body.appendChild(dummy)
  dummy.style.overflowY = 'scroll'
  const clientWidth = dummy.clientWidth
  const offsetWidth = dummy.offsetWidth
  dummy.remove()
  return offsetWidth - clientWidth + 1
}

const css = `
  #masthead-container {
    display: none !important;
  }
  ytd-page-manager {
    margin: 0 !important;
  }
  #full-bleed-container {
    min-height: 100vh !important;
    min-width: calc(100vw - ${getScrollbarWidth()}px) !important;
  }
`

const theaterMode = () => {
  if ($('#player-full-bleed-container > #player-container') && !$('#theater-mode')) {
    let theaterStyle = document.createElement('style')
    theaterStyle.setAttribute('type', 'text/css')
    theaterStyle.setAttribute('id', 'theater-mode')
    theaterStyle.textContent = css
    document.head.appendChild(theaterStyle)
  } else if (!$('#player-full-bleed-container > #player-container') && $('#theater-mode')) $('#theater-mode').remove()
}

const main = () => {
  if (window.location.href.includes('/watch?v=')) {
    if (autoTheater === 1 && !$('ytd-watch-flexy').isTheater_()) {
      setTimeout(() => { $('.ytp-size-button').click() }, 500)
    }
    if ($('ytd-watch-flexy').isTheater_()) theaterMode()
    const observer = new MutationObserver(theaterMode)
    observer.observe($('#player-full-bleed-container'), { attributes: false, childList: true })
  } else if ($('#theater-mode')) $('#theater-mode').remove()
}

document.addEventListener('yt-navigate-finish', main)