瀏覽代碼

chore: build

Sv443 1 年之前
父節點
當前提交
dff5170f99
共有 1 個文件被更改,包括 103 次插入36 次删除
  1. 103 36
      dist/BetterYTM.user.js

+ 103 - 36
dist/BetterYTM.user.js

@@ -17,7 +17,7 @@
 // @license           AGPL-3.0-only
 // @author            Sv443
 // @copyright         Sv443 (https://github.com/Sv443)
-// @icon              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/logo/logo_48.png?b=4d06e4aa
+// @icon              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/logo/logo_48.png?b=97a865e
 // @match             https://music.youtube.com/*
 // @match             https://www.youtube.com/*
 // @run-at            document-start
@@ -34,35 +34,35 @@
 // @grant             GM.xmlHttpRequest
 // @grant             unsafeWindow
 // @noframes
-// @resource          css-anchor_improvements https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/style/anchorImprovements.css?b=4d06e4aa
-// @resource          css-fix_spacing         https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/style/fixSpacing.css?b=4d06e4aa
-// @resource          doc-changelog           https://raw.githubusercontent.com/Sv443/BetterYTM/develop/changelog.md?b=4d06e4aa
-// @resource          icon-advanced_mode      https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/plus_circle_small.svg?b=4d06e4aa
-// @resource          icon-arrow_down         https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/arrow_down.svg?b=4d06e4aa
-// @resource          icon-delete             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/delete.svg?b=4d06e4aa
-// @resource          icon-error              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/error.svg?b=4d06e4aa
-// @resource          icon-experimental       https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/beaker_small.svg?b=4d06e4aa
-// @resource          icon-globe              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/globe.svg?b=4d06e4aa
-// @resource          icon-help               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/help.svg?b=4d06e4aa
-// @resource          icon-lock               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/lock.svg?b=4d06e4aa
-// @resource          icon-lyrics             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/lyrics.svg?b=4d06e4aa
-// @resource          icon-skip_to            https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/skip_to.svg?b=4d06e4aa
-// @resource          icon-spinner            https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/spinner.svg?b=4d06e4aa
-// @resource          img-logo                https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/logo/logo_48.png?b=4d06e4aa
-// @resource          img-close               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/close.png?b=4d06e4aa
-// @resource          img-discord             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/discord.png?b=4d06e4aa
-// @resource          img-github              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/github.png?b=4d06e4aa
-// @resource          img-greasyfork          https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/greasyfork.png?b=4d06e4aa
-// @resource          img-openuserjs          https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/openuserjs.png?b=4d06e4aa
-// @resource          trans-de_DE             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/de_DE.json?b=4d06e4aa
-// @resource          trans-en_US             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/en_US.json?b=4d06e4aa
-// @resource          trans-en_UK             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/en_UK.json?b=4d06e4aa
-// @resource          trans-es_ES             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/es_ES.json?b=4d06e4aa
-// @resource          trans-fr_FR             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/fr_FR.json?b=4d06e4aa
-// @resource          trans-hi_IN             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/hi_IN.json?b=4d06e4aa
-// @resource          trans-ja_JA             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/ja_JA.json?b=4d06e4aa
-// @resource          trans-pt_BR             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/pt_BR.json?b=4d06e4aa
-// @resource          trans-zh_CN             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/zh_CN.json?b=4d06e4aa
+// @resource          css-anchor_improvements https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/style/anchorImprovements.css?b=97a865e
+// @resource          css-fix_spacing         https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/style/fixSpacing.css?b=97a865e
+// @resource          doc-changelog           https://raw.githubusercontent.com/Sv443/BetterYTM/develop/changelog.md?b=97a865e
+// @resource          icon-advanced_mode      https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/plus_circle_small.svg?b=97a865e
+// @resource          icon-arrow_down         https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/arrow_down.svg?b=97a865e
+// @resource          icon-delete             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/delete.svg?b=97a865e
+// @resource          icon-error              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/error.svg?b=97a865e
+// @resource          icon-experimental       https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/beaker_small.svg?b=97a865e
+// @resource          icon-globe              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/globe.svg?b=97a865e
+// @resource          icon-help               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/help.svg?b=97a865e
+// @resource          icon-lock               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/lock.svg?b=97a865e
+// @resource          icon-lyrics             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/lyrics.svg?b=97a865e
+// @resource          icon-skip_to            https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/skip_to.svg?b=97a865e
+// @resource          icon-spinner            https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/icons/spinner.svg?b=97a865e
+// @resource          img-logo                https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/logo/logo_48.png?b=97a865e
+// @resource          img-close               https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/close.png?b=97a865e
+// @resource          img-discord             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/discord.png?b=97a865e
+// @resource          img-github              https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/github.png?b=97a865e
+// @resource          img-greasyfork          https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/greasyfork.png?b=97a865e
+// @resource          img-openuserjs          https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/images/external/openuserjs.png?b=97a865e
+// @resource          trans-de_DE             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/de_DE.json?b=97a865e
+// @resource          trans-en_US             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/en_US.json?b=97a865e
+// @resource          trans-en_UK             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/en_UK.json?b=97a865e
+// @resource          trans-es_ES             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/es_ES.json?b=97a865e
+// @resource          trans-fr_FR             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/fr_FR.json?b=97a865e
+// @resource          trans-hi_IN             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/hi_IN.json?b=97a865e
+// @resource          trans-ja_JA             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/ja_JA.json?b=97a865e
+// @resource          trans-pt_BR             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/pt_BR.json?b=97a865e
+// @resource          trans-zh_CN             https://raw.githubusercontent.com/Sv443/BetterYTM/develop/assets/translations/zh_CN.json?b=97a865e
 // @require           https://cdn.jsdelivr.net/npm/@sv443-network/[email protected]/dist/index.global.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/dist/fuse.basic.js
 // @require           https://cdn.jsdelivr.net/npm/[email protected]/lib/marked.umd.js
@@ -239,7 +239,7 @@ var LogLevel;
 })(LogLevel || (LogLevel = {}));const modeRaw = "development";
 const branchRaw = "develop";
 const hostRaw = "github";
-const buildNumberRaw = "4d06e4aa";
+const buildNumberRaw = "97a865e";
 /** The mode in which the script was built (production or development) */
 const mode = (modeRaw.match(/^#{{.+}}$/) ? "production" : modeRaw);
 /** The branch to use in various URLs that point to the GitHub repo */
@@ -1448,6 +1448,8 @@ let scrollIndicatorEnabled = true;
 let initLocale;
 /** Stringified config at the point of initializing the config menu */
 let initConfig$1;
+/** Timeout id for the "copied" text in the hidden value copy button */
+let hiddenCopiedTxtTimeout;
 /**
  * Adds an element to open the BetterYTM menu
  * @deprecated to be replaced with new menu - see https://github.com/Sv443/BetterYTM/issues/23
@@ -1757,6 +1759,36 @@ function addCfgMenu() {
                     const inputElemId = `bytm-ftconf-${featKey}-input`;
                     const ctrlElem = document.createElement("span");
                     ctrlElem.classList.add("bytm-ftconf-ctrl");
+                    let advCopyHiddenCont;
+                    if (getFeatures().advancedMode && ftInfo.valueHidden) {
+                        const advCopyHintElem = document.createElement("span");
+                        advCopyHintElem.classList.add("bytm-ftconf-adv-copy-hint");
+                        advCopyHintElem.textContent = t("copied");
+                        advCopyHintElem.style.display = "none";
+                        const advCopyHiddenBtn = document.createElement("button");
+                        advCopyHiddenBtn.classList.add("bytm-ftconf-adv-copy-btn");
+                        advCopyHiddenBtn.tabIndex = 0;
+                        advCopyHiddenBtn.textContent = t("copy_hidden_value");
+                        advCopyHiddenBtn.ariaLabel = advCopyHiddenBtn.title = t("copy_hidden_tooltip");
+                        const copyHiddenClicked = (e) => {
+                            e.preventDefault();
+                            e.stopPropagation();
+                            GM.setClipboard(String(getFeatures()[featKey]));
+                            advCopyHintElem.style.display = "inline";
+                            if (typeof hiddenCopiedTxtTimeout === "undefined") {
+                                hiddenCopiedTxtTimeout = setTimeout(() => {
+                                    advCopyHintElem.style.display = "none";
+                                    hiddenCopiedTxtTimeout = undefined;
+                                }, 3000);
+                            }
+                        };
+                        advCopyHiddenBtn.addEventListener("click", copyHiddenClicked);
+                        advCopyHiddenBtn.addEventListener("keydown", (e) => ["Enter", " ", "Space"].includes(e.key) && copyHiddenClicked(e));
+                        advCopyHiddenCont = document.createElement("span");
+                        advCopyHiddenCont.appendChild(advCopyHintElem);
+                        advCopyHiddenCont.appendChild(advCopyHiddenBtn);
+                    }
+                    advCopyHiddenCont && ctrlElem.appendChild(advCopyHiddenCont);
                     if (inputTag) {
                         // standard input element:
                         const inputElem = document.createElement(inputTag);
@@ -1944,7 +1976,7 @@ function addCfgMenu() {
         versionEl.role = "button";
         versionEl.tabIndex = 0;
         versionEl.ariaLabel = versionEl.title = t("version_tooltip", scriptInfo.version, buildNumber);
-        versionEl.textContent = `v${scriptInfo.version} (${buildNumber})${mode === "development" ? " [DEV]" : ""}`;
+        versionEl.textContent = `v${scriptInfo.version} (#${buildNumber})`;
         const versionElemClicked = (e) => __awaiter(this, void 0, void 0, function* () {
             e.preventDefault();
             e.stopPropagation();
@@ -1955,6 +1987,16 @@ function addCfgMenu() {
         versionEl.addEventListener("keydown", (e) => e.key === "Enter" && versionElemClicked(e));
         subtitleElemCont.appendChild(versionEl);
         titleElem.appendChild(subtitleElemCont);
+        const modeItems = [];
+        mode === "development" && modeItems.push("dev_mode");
+        getFeatures().advancedMode && modeItems.push("advanced_mode");
+        if (modeItems.length > 0) {
+            const modeDisplayEl = document.createElement("span");
+            modeDisplayEl.id = "bytm-menu-mode-display";
+            modeDisplayEl.textContent = `[${t("active_mode_display", arrayWithSeparators(modeItems.map(v => t(`${v}_short`)), ", ", " & "))}]`;
+            modeDisplayEl.ariaLabel = modeDisplayEl.title = tp("active_mode_tooltip", modeItems, arrayWithSeparators(modeItems.map(t), ", ", " & "));
+            subtitleElemCont.appendChild(modeDisplayEl);
+        }
         menuContainer.appendChild(footerCont);
         backgroundElem.appendChild(menuContainer);
         document.body.appendChild(backgroundElem);
@@ -1970,7 +2012,7 @@ function addCfgMenu() {
 }
 /** Closes the config menu if it is open. If a bubbling event is passed, its propagation will be prevented. */
 function closeCfgMenu(evt, enableScroll = true) {
-    var _a;
+    var _a, _b;
     if (!isCfgMenuOpen)
         return;
     isCfgMenuOpen = false;
@@ -1983,6 +2025,8 @@ function closeCfgMenu(evt, enableScroll = true) {
     siteEvents.emit("cfgMenuClosed");
     if (!menuBg)
         return;
+    (_b = menuBg.querySelectorAll(".bytm-ftconf-adv-copy-hint")) === null || _b === void 0 ? void 0 : _b.forEach((el) => el.style.display = "none");
+    clearTimeout(hiddenCopiedTxtTimeout);
     menuBg.style.visibility = "hidden";
     menuBg.style.display = "none";
 }
@@ -2217,7 +2261,7 @@ function addExportMenu() {
         const copiedTextElem = document.createElement("span");
         copiedTextElem.id = "bytm-export-menu-copied-txt";
         copiedTextElem.classList.add("bytm-menu-footer-copied");
-        copiedTextElem.textContent = t("copied_notice");
+        copiedTextElem.textContent = t("copied");
         copiedTextElem.style.display = "none";
         const copyBtnClicked = (evt) => __awaiter(this, void 0, void 0, function* () {
             (evt === null || evt === void 0 ? void 0 : evt.bubbles) && evt.stopPropagation();
@@ -4592,6 +4636,18 @@ function compressionSupported() {
         }
     });
 }
+/** Returns a string with the given array's items separated by a default separator (`", "` by default), with an optional different separator for the last item */
+function arrayWithSeparators(array, separator = ", ", lastSeparator) {
+    const arr = [...array];
+    if (!lastSeparator)
+        lastSeparator = separator;
+    if (arr.length === 0)
+        return "";
+    else if (arr.length <= 2)
+        return arr.join(lastSeparator);
+    else
+        return `${arr.slice(0, -1).join(separator)}${lastSeparator}${arr.at(-1)}`;
+}
 //#SECTION resources
 /**
  * Returns the URL of a resource by its name, as defined in `assets/resources.json`, from GM resource cache - [see GM.getResourceUrl docs](https://wiki.greasespot.net/GM.getResourceUrl)
@@ -5241,6 +5297,10 @@ function insertGlobalStyle() {
   align-items: center;
 }
 
+.bytm-ftconf-adv-copy-btn {
+  margin: 0px 10px;
+}
+
 :root {
   --bytm-dialog-accent-col: #3683d4;
   --bytm-advanced-mode-color: #c5a73b;
@@ -5825,6 +5885,7 @@ hr {
 #bytm-menu-subtitle-cont {
   width: 100%;
   display: flex;
+  gap: 6px;
   flex-direction: row;
   justify-content: space-between;
   align-items: end;
@@ -5836,10 +5897,16 @@ hr {
   z-index: 7;
 }
 
-#bytm-menu-subtitle-cont .bytm-link {
+#bytm-menu-subtitle-cont, #bytm-menu-version-anchor {
   color: var(--bytm-menu-subtitle-color);
 }
 
+#bytm-menu-subtitle-cont, #bytm-menu-mode-display {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 #bytm-menu-version-anchor {
   overflow: hidden;
   text-wrap: nowrap;
@@ -6340,7 +6407,7 @@ yt-multi-page-menu-section-renderer.ytd-multi-page-menu-renderer {
   left: 97px;
   top: 45px;
   z-index: 10;
-  color: white;
+  color: #f1f1f1;
   text-decoration: none;
   cursor: pointer;
 }