2020-04-02 02:35:28 +00:00
/* Thanks to StephenLynx, I modified his Theme Changer from the Penumbra Lynx Frontend for the Lynxchan Software https://gitgud.io/LynxChan/LynxChan and reused it to make f0ck a nicer place. */
var themes = [ {
file : 'f0ck95.css' ,
label : 'f0ck95' ,
id : 'f0ck95'
} ] ;
let interval = null ;
const clocklol = ( ) => {
const l = document . querySelector ( "body" ) ;
if ( localStorage . selectedTheme && localStorage . selectedTheme === "f0ck95" )
interval = setInterval ( ( d = new Date ( ) ) => l . setAttribute ( "data-clock" , d . toLocaleTimeString ( ) ) , 1e3 ) ;
else {
clearInterval ( interval ) ;
l . removeAttribute ( "data-clock" ) ;
}
} ;
const speaker = ( ) => {
const k = document . querySelector ( "body" ) ;
if ( localStorage . selectedTheme && localStorage . selectedTheme === "f0ck95" )
k . document . createElement ( "div" ) ;
2020-04-09 16:44:09 +00:00
else
2020-04-02 02:35:28 +00:00
return ;
} ;
var customCss ;
var addedTheme ;
function updateCss ( ) {
if ( addedTheme ) {
addedTheme . parentNode . removeChild ( addedTheme ) ;
addedTheme = null ;
}
for ( var i = 0 ; i < themes . length ; i ++ ) {
var theme = themes [ i ] ;
if ( theme . id === localStorage . selectedTheme ) {
addedTheme = theme . element ;
document . head . insertBefore ( theme . element , customCss ) ;
}
}
}
for ( var i = 0 ; i < document . head . children . length ; i ++ ) {
var element = document . head . children [ i ] ;
if ( element . rel === 'stylesheet' && element . href . indexOf ( '/css/custom.css' ) > - 1 ) {
customCss = element ;
break ;
}
}
for ( var i = 0 ; i < themes . length ; i ++ ) {
themes [ i ] . element = document . createElement ( 'link' ) ;
themes [ i ] . element . type = 'text/css' ;
themes [ i ] . element . rel = 'stylesheet' ;
themes [ i ] . element . href = './s/css/' + themes [ i ] . file ;
}
clocklol ( ) ;
updateCss ( ) ;
var postingLink = document . getElementById ( 'themes' ) ;
if ( postingLink ) {
var divider = document . createElement ( 'span' ) ;
divider . style = ( 'display: none;' ) ;
divider . innerHTML = '' ;
var referenceNode = postingLink . nextSibling ;
postingLink . parentNode . insertBefore ( divider , referenceNode ) ;
var themeSelector = document . createElement ( 'select' ) ;
themeSelector . id = 'themeSelector' ;
var vanillaOption = document . createElement ( 'option' ) ;
vanillaOption . innerHTML = 'Default' ;
themeSelector . appendChild ( vanillaOption ) ;
for ( i = 0 ; i < themes . length ; i ++ ) {
var theme = themes [ i ] ;
var themeOption = document . createElement ( 'option' ) ;
themeOption . innerHTML = theme . label ;
if ( theme . id === localStorage . selectedTheme ) {
themeOption . selected = true ;
}
themeSelector . appendChild ( themeOption ) ;
}
themeSelector . onchange = function ( ) {
if ( ! themeSelector . selectedIndex ) {
if ( localStorage . selectedTheme ) {
delete localStorage . selectedTheme ;
clocklol ( ) ;
updateCss ( ) ;
}
return ;
}
var selectedTheme = themes [ themeSelector . selectedIndex - 1 ] ;
if ( selectedTheme . id === localStorage . selectedTheme ) {
return ;
}
localStorage . selectedTheme = selectedTheme . id ;
clocklol ( ) ;
updateCss ( ) ;
} ;
postingLink . parentNode . insertBefore ( themeSelector , referenceNode ) ;
}