123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { scriptInfo, triesInterval, triesLimit } from "../constants";
- import { getFeatures } from "../config";
- import { addGlobalStyle, insertAfter, log, siteEvents } from "../utils";
- import type { FeatureConfig } from "../types";
- import { openMenu } from "./menu/menu_old";
- import "./layout.css";
- let features: FeatureConfig;
- export async function preInitLayout() {
- features = await getFeatures();
- }
- //#MARKER watermark
- /** Adds a watermark beneath the logo */
- export function addWatermark() {
- const watermark = document.createElement("span");
- watermark.id = "betterytm-watermark";
- watermark.className = "style-scope ytmusic-nav-bar";
- watermark.innerText = scriptInfo.name;
- watermark.title = "Open menu";
- watermark.addEventListener("click", () => openMenu());
- const logoElem = document.querySelector("#left-content") as HTMLElement;
- insertAfter(logoElem, watermark);
- log("Added watermark element:", watermark);
- }
- //#MARKER remove upgrade tab
- let removeUpgradeTries = 0;
- /** Removes the "Upgrade" / YT Music Premium tab from the title / nav bar */
- export function removeUpgradeTab() {
- const tabElem = document.querySelector(".ytmusic-nav-bar ytmusic-pivot-bar-item-renderer[tab-id=\"SPunlimited\"]");
- if(tabElem) {
- tabElem.remove();
- log(`Removed upgrade tab after ${removeUpgradeTries} tries`);
- }
- else if(removeUpgradeTries < triesLimit) {
- setTimeout(removeUpgradeTab, triesInterval); // TODO: improve this
- removeUpgradeTries++;
- }
- else
- console.error(`Couldn't find upgrade tab to remove after ${removeUpgradeTries} tries`);
- }
- //#MARKER volume slider
- /** Sets the volume slider to a set size */
- export function setVolSliderSize() {
- const { volumeSliderSize: size } = features;
- if(typeof size !== "number" || isNaN(Number(size)))
- return;
- const style = `\
- .volume-slider.ytmusic-player-bar, .expand-volume-slider.ytmusic-player-bar {
- width: ${size}px !important;
- }`;
- addGlobalStyle(style, "vol-slider");
- }
- /** Sets the `step` attribute of the volume slider */
- export function setVolSliderStep() {
- const sliderElem = document.querySelector("tp-yt-paper-slider#volume-slider") as HTMLInputElement;
- sliderElem.setAttribute("step", String(features.volumeSliderStep));
- }
- //#MARKER queue buttons
- export function initQueueButtons() {
- siteEvents.on("queueChanged", (evt) => {
- for(const queueItm of ((evt.data as HTMLElement).childNodes as NodeListOf<HTMLElement>)) {
- if(!queueItm.classList.contains("bytm-has-queue-btns"))
- addQueueButtons(queueItm);
- }
- });
- const queueItems = document.querySelectorAll("#contents.ytmusic-player-queue > ytmusic-player-queue-item");
- if(queueItems.length === 0)
- return;
- queueItems.forEach(itm => addQueueButtons(itm as HTMLElement));
- }
- function addQueueButtons(queueItem: HTMLElement) {
- const queueBtnsCont = document.createElement("div");
- queueBtnsCont.className = "bytm-queue-btn-container";
- queueBtnsCont.innerText = "ayo";
- const songInfo = queueItem.querySelector(".song-info")!;
- songInfo.appendChild(queueBtnsCont);
- queueItem.classList.add("bytm-has-queue-btns");
- }
- //#MARKER better clickable stuff
- export function addAnchorImprovements() {
- void 0;
- }
|