8
8
// @license AGPL-3.0-only
9
9
// @author Sv443
10
10
// @copyright Sv443 (https://github.com/Sv443)
11
- // @icon https://cdn.jsdelivr.net/gh/Sv443/BetterYTM@ea75542e /assets/images/logo/logo_dev_48.png
11
+ // @icon https://cdn.jsdelivr.net/gh/Sv443/BetterYTM@51c1ad4f /assets/images/logo/logo_dev_48.png
12
12
// @match https://music.youtube.com/*
13
13
// @match https://www.youtube.com/*
14
14
// @run -at document-start
@@ -86,7 +86,8 @@ I welcome every contribution on GitHub!
86
86
/* Disclaimer: I am not affiliated with or endorsed by YouTube, Google, Alphabet, Genius or anyone else */
87
87
/* C&D this 🖕 */
88
88
89
- ( function ( UserUtils , DOMPurify , marked , compareVersions ) { 'use strict' ; function _interopNamespaceDefault ( e ) { var n = Object . create ( null ) ; if ( e ) { Object . keys ( e ) . forEach ( function ( k ) { if ( k !== 'default' ) { var d = Object . getOwnPropertyDescriptor ( e , k ) ; Object . defineProperty ( n , k , d . get ?d :{ enumerable :true , get :function ( ) { return e [ k ] } } ) ; } } ) } n . default = e ; return Object . freeze ( n ) } var UserUtils__namespace = /*#__PURE__*/ _interopNamespaceDefault ( UserUtils ) ; var compareVersions__namespace = /*#__PURE__*/ _interopNamespaceDefault ( compareVersions ) ; var resources = {
89
+ ( function ( UserUtils , DOMPurify , marked , compareVersions ) { 'use strict' ; function _interopNamespaceDefault ( e ) { var n = Object . create ( null ) ; if ( e ) { Object . keys ( e ) . forEach ( function ( k ) { if ( k !== 'default' ) { var d = Object . getOwnPropertyDescriptor ( e , k ) ; Object . defineProperty ( n , k , d . get ?d :{ enumerable :true , get :function ( ) { return e [ k ] } } ) ; } } ) } n . default = e ; return Object . freeze ( n ) } var UserUtils__namespace = /*#__PURE__*/ _interopNamespaceDefault ( UserUtils ) ; var compareVersions__namespace = /*#__PURE__*/ _interopNamespaceDefault ( compareVersions ) ; var preloadAssetPattern = "^(css|icon|img)-" ;
90
+ var resources = {
90
91
"css-above_queue_btns" : "style/aboveQueueBtns.css" ,
91
92
"css-above_queue_btns_sticky" : "style/aboveQueueBtnsSticky.css" ,
92
93
"css-anchor_improvements" : "style/anchorImprovements.css" ,
@@ -152,6 +153,7 @@ I welcome every contribution on GitHub!
152
153
"trans-zh-CN" : "translations/zh-CN.json"
153
154
} ;
154
155
var resourcesJson = {
156
+ preloadAssetPattern : preloadAssetPattern ,
155
157
resources : resources
156
158
} ; var locales = {
157
159
"de-DE" : {
@@ -333,7 +335,7 @@ const rawConsts = {
333
335
mode : "development" ,
334
336
branch : "develop" ,
335
337
host : "github" ,
336
- buildNumber : "ea75542e " ,
338
+ buildNumber : "51c1ad4f " ,
337
339
assetSource : "jsdelivr" ,
338
340
devServerPort : "8710" ,
339
341
} ;
@@ -8040,8 +8042,7 @@ async function renderFooter() {
8040
8042
footerCont . appendChild ( leftButtonsCont ) ;
8041
8043
footerCont . appendChild ( closeBtnElem ) ;
8042
8044
return footerCont ;
8043
- } // import { getAllDataExImDialog } from "./dialogs/allDataExIm.js";
8044
- //#region cns. watermark
8045
+ } //#region cns. watermark
8045
8046
{
8046
8047
// console watermark with sexy gradient
8047
8048
const [ styleGradient , gradientContBg ] = ( ( ) => {
@@ -8240,6 +8241,8 @@ async function onDomLoad() {
8240
8241
] ) ;
8241
8242
// ensure site adjusts itself to new CSS files
8242
8243
UserUtils . getUnsafeWindow ( ) . dispatchEvent ( new Event ( "resize" , { bubbles : true , cancelable : true } ) ) ;
8244
+ // preload icons
8245
+ preloadResources ( ) ;
8243
8246
emitInterface ( "bytm:ready" ) ;
8244
8247
info ( `Done initializing ${ ftInit . length } features after ${ Math . floor ( Date . now ( ) - initStartTs ) } ms` ) ;
8245
8248
try {
@@ -8260,6 +8263,20 @@ async function onDomLoad() {
8260
8263
emitInterface ( "bytm:fatalError" , "Error while initializing features" ) ;
8261
8264
}
8262
8265
}
8266
+ //#region preload icons
8267
+ /** Preloads all resources that should be preloaded */
8268
+ async function preloadResources ( ) {
8269
+ const preloadAssetRegex = new RegExp ( resourcesJson . preloadAssetPattern ) ;
8270
+ const urlPromises = Object . keys ( resourcesJson . resources )
8271
+ . filter ( k => preloadAssetRegex . test ( k ) )
8272
+ . map ( k => getResourceUrl ( k ) ) ;
8273
+ const urls = await Promise . all ( urlPromises ) ;
8274
+ if ( urls . length > 0 )
8275
+ info ( "Preloading" , urls . length , "resources:" , urls ) ;
8276
+ else
8277
+ info ( "No resources to preload" ) ;
8278
+ await UserUtils . preloadImages ( urls ) ;
8279
+ }
8263
8280
//#region css
8264
8281
/** Inserts the bundled CSS files imported throughout the script into a <style> element in the <head> */
8265
8282
async function injectCssBundle ( ) {
0 commit comments