11import * as Arrays from "../utils/arrays" ;
22import { isColorDark , isColorLight } from "../utils/colors" ;
33
4- import { Config } from "../config/store" ;
4+ import { Config , getConfig } from "../config/store" ;
55import { setConfig } from "../config/setters" ;
66import { configEvent } from "../events/config" ;
77import * as CustomThemes from "../collections/custom-themes" ;
@@ -302,10 +302,45 @@ export async function applyCustomBackground(): Promise<void> {
302302
303303 container ?. replaceChildren ( img ) ;
304304
305+ applyCustomBackgroundFilters ( ) ;
305306 applyCustomBackgroundSize ( ) ;
306307 }
307308}
308309
310+ export function applyCustomBackgroundFilters (
311+ values ?: [ number , number , number , number ] ,
312+ ) : void {
313+ const valuesToApply = values ?? getConfig . customBackgroundFilter ;
314+
315+ let filterCSS = "" ;
316+ //blur
317+ if ( valuesToApply [ 0 ] !== 0 ) {
318+ filterCSS += `blur(${ valuesToApply [ 0 ] } rem) ` ;
319+ }
320+ //brightness
321+ if ( valuesToApply [ 1 ] !== 1 ) {
322+ filterCSS += `brightness(${ valuesToApply [ 1 ] } ) ` ;
323+ }
324+ //saturate
325+ if ( valuesToApply [ 2 ] !== 1 ) {
326+ filterCSS += `saturate(${ valuesToApply [ 2 ] } ) ` ;
327+ }
328+ //opacity
329+ if ( valuesToApply [ 3 ] !== 1 ) {
330+ filterCSS += `opacity(${ valuesToApply [ 3 ] } ) ` ;
331+ }
332+
333+ const css = {
334+ filter : filterCSS ,
335+ width : `calc(100% + ${ valuesToApply [ 0 ] * 8 } rem)` ,
336+ height : `calc(100% + ${ valuesToApply [ 0 ] * 8 } rem)` ,
337+ transform : `scale(${ 1 + valuesToApply [ 0 ] / 100 } )` ,
338+ top : `-${ valuesToApply [ 0 ] * 4 } rem` ,
339+ position : "absolute" ,
340+ } ;
341+ qs ( ".customBackground img" ) ?. setStyle ( css ) ;
342+ }
343+
309344window
310345 . matchMedia ?.( "(prefers-color-scheme: dark)" )
311346 ?. addEventListener ?.( "change" , ( event ) => {
@@ -328,6 +363,7 @@ configEvent.subscribe(async ({ key, newValue, nosave }) => {
328363
329364 await clearRandom ( ) ;
330365 await clearPreview ( false ) ;
366+
331367 if ( Config . autoSwitchTheme ) {
332368 if ( prefersColorSchemeDark ( ) ) {
333369 await set ( Config . themeDark , true ) ;
0 commit comments