import { isMobile, isShorts } from "./state"; import { isInViewport } from "./utils"; function getButtons() { //--- If Watching Youtube Shorts: ---// if (isShorts()) { let elements = document.querySelectorAll( isMobile() ? "ytm-like-button-renderer" : "#like-button > ytd-like-button-renderer" ); for (let element of elements) { //Youtube Shorts can have multiple like/dislike buttons when scrolling through videos //However, only one of them should be visible (no matter how you zoom) if (isInViewport(element)) { return element; } } } //--- If Watching On Mobile: ---// if (isMobile()) { return document.querySelector(".slim-video-action-bar-actions"); } //--- If Menu Element Is Displayed: ---// if (document.getElementById("menu-container")?.offsetParent === null) { return document.querySelector("ytd-menu-renderer.ytd-watch-metadata > div"); //--- If Menu Element Isnt Displayed: ---// } else { return document .getElementById("menu-container") ?.querySelector("#top-level-buttons-computed"); } } function getLikeButton() { return getButtons().children[0].tagName === "YTD-SEGMENTED-LIKE-DISLIKE-BUTTON-RENDERER" ? getButtons().children[0].children[0] : getButtons().children[0]; } function getLikeTextContainer() { return ( getLikeButton().querySelector("#text") ?? getLikeButton().getElementsByTagName("yt-formatted-string")[0] ); } function getDislikeButton() { return getButtons().children[0].tagName === "YTD-SEGMENTED-LIKE-DISLIKE-BUTTON-RENDERER" ? getButtons().children[0].children[1] : getButtons().children[1]; } function getDislikeTextContainer() { let result = getDislikeButton().querySelector("#text") ?? getDislikeButton().getElementsByTagName("yt-formatted-string")[0] ?? getDislikeButton().querySelector("span[role='text']"); if (result == null) { let textSpan = document.createElement("span"); textSpan.id = "text"; getDislikeButton().querySelector("button").appendChild(textSpan); getDislikeButton().querySelector("button").style.width = "auto"; result = getDislikeButton().querySelector("#text"); } return result; } function checkForSignInButton() { if ( document.querySelector( "a[href^='https://accounts.google.com/ServiceLogin']" ) ) { return true; } else { return false; } } export { getButtons, getLikeButton, getDislikeButton, getLikeTextContainer, getDislikeTextContainer, checkForSignInButton, };