window.gitlist.isDark = (theme = window.gitlist.getActualTheme()) => {
for (let i = 0; i < window.gitlist.dark.length; i++) {
if (window.gitlist.dark[i] === theme) {
return true;
}
}
return false;
}
window.gitlist.getActualTheme = (theme = window.gitlist.getThemeCookie()) => {
const actualTheme = theme.split('-')[1]
return actualTheme;
}
window.gitlist.getActualThemeCodemirror = () => {
if (window.gitlist.isDark(window.gitlist.getActualTheme())) {
return window.gitlist.codemirrorTheme.dark;
} else {
return window.gitlist.codemirrorTheme.light;
}
}
let currentTheme;
let setTimeoutSwitch;
window.gitlist.setTheme = () => {
if (window.gitlist.$body === undefined) {
setTimeout(() => {
window.gitlist.setTheme()
})
return;
}
const theme = window.gitlist.getActualTheme();
// console.log('theming', 'currenTheme', currentTheme, 'new theme', theme);
if (theme === currentTheme) {
// console.log('same theme')
return;
}
const diffButtons = $('.p3x-gitlist-diff-button.active');
//console.log(diffButtons)
for (let diffButton of diffButtons) {
diffButton.click();
}
const switchThemeActually = () => {
currentTheme = theme;
/*
const themeFragmentFileCodeMirror = (options) => {
const { theme } = options
for(let cm of window.gitlist.fragmentFileCodeMirror) {
cm.setOption("theme", theme);
}
}
*/
let bodyAddClass
let bodyRemoveClass
let codeMirrorTheme
if (window.gitlist.isDark(theme)) {
bodyAddClass = 'p3x-gitlist-dark'
bodyRemoveClass = 'p3x-gitlist-light'
codeMirrorTheme = window.gitlist.codemirrorTheme.dark
} else {
bodyAddClass = 'p3x-gitlist-light'
bodyRemoveClass = 'p3x-gitlist-dark'
codeMirrorTheme = window.gitlist.codemirrorTheme.light
}
window.gitlist.$body.addClass(bodyAddClass)
window.gitlist.$body.removeClass(bodyRemoveClass)
if (gitlist.viewer !== undefined) {
gitlist.viewer.setOption("theme", codeMirrorTheme);
}
if (gitlist.fragmentFileCodeMirror !== undefined) {
gitlist.fragmentFileCodeMirror.setOption("theme", codeMirrorTheme);
}
window.gitlist.networkRedraw();
window.gitlist.treegraph();
// if (window.gitlist.lastloadSpan !== undefined && window.gitlist.lastloadSpan > 1000) {
clearTimeout(setTimeoutSwitch)
setTimeoutSwitch = setTimeout(() => {
$('.p3x-gitlist-overlay').remove();
}, 250)
}
// console.log('p3x-gitlist switching theme')
// }
if (diffButtons.length > 0) {
$.snackbar({
content: `We hid the shown diffs, to make the theme switching faster.`,
timeout: window.gitlist.snapckbarLongTimeout,
});
window.scrollTo(0, 0);
setTimeout(switchThemeActually, 250)
} else {
switchThemeActually()
}
}