commit
886ed951f1
@ -1,51 +1,58 @@ |
||||
var Storage = require('remix-lib').Storage |
||||
var EventEmitter = require('events') |
||||
|
||||
// Boostrap themes
|
||||
// TODO : Put it somewhere else
|
||||
const themes = { |
||||
dark: 'https://bootstrap.themes.guide/darkster/theme.min.css', |
||||
light: 'https://bootstrap.themes.guide/herbie/theme.min.css', |
||||
clean: 'https://bootstrap.themes.guide/fresca/theme.min.css' |
||||
} |
||||
// Used for the scroll color
|
||||
const themeVariable = { |
||||
dark: 'dark', |
||||
light: 'light', |
||||
clean: 'light' |
||||
} |
||||
const themes = [ |
||||
{name: 'cerulean', quality: 'light', url: 'https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/cerulean/bootstrap.min.css'}, |
||||
{name: 'materia', quality: 'light', url: 'https://bootswatch.com/4/materia/bootstrap.min.css'}, |
||||
{name: 'litera', quality: 'light', url: 'https://bootswatch.com/4/litera/bootstrap.min.css'}, |
||||
{name: 'cosmo', quality: 'light', url: 'https://bootswatch.com/4/cosmo/bootstrap.min.css'}, |
||||
{name: 'flatly', quality: 'light', url: 'https://bootswatch.com/4/flatly/bootstrap.min.css'}, |
||||
{name: 'lux', quality: 'light', url: 'https://bootswatch.com/4/lux/bootstrap.min.css'}, |
||||
{name: 'spacelab', quality: 'light', url: 'https://bootswatch.com/4/spacelab/bootstrap.min.css'}, |
||||
{name: 'yeti', quality: 'light', url: 'https://bootswatch.com/4/yeti/bootstrap.min.css'}, |
||||
{name: 'darkly', quality: 'dark', url: 'https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/darkly/bootstrap.min.css'}, |
||||
{name: 'slate', quality: 'dark', url: 'https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/slate/bootstrap.min.css'} |
||||
] |
||||
|
||||
const defaultTheme = themes[0].name |
||||
|
||||
module.exports = { |
||||
event: new EventEmitter(), |
||||
chooser: function () { |
||||
currentTheme: function () { |
||||
const themeStorage = new Storage('style:') |
||||
if (themeStorage.exists('theme')) { |
||||
if (themeStorage.get('theme') === 'dark') { |
||||
document.getElementById('theme-link').setAttribute('href', themes['dark']) |
||||
document.documentElement.style.setProperty('--theme', 'dark') |
||||
} else if (themeStorage.get('theme') === 'clean') { |
||||
document.getElementById('theme-link').setAttribute('href', themes['clean']) |
||||
document.documentElement.style.setProperty('--theme', 'light') |
||||
} else { |
||||
document.getElementById('theme-link').setAttribute('href', themes['light']) |
||||
document.documentElement.style.setProperty('--theme', 'light') |
||||
} |
||||
const currThemeObj = this.isThere(themeStorage.get('theme')) |
||||
return currThemeObj ? currThemeObj.name : defaultTheme |
||||
} else { |
||||
document.getElementById('theme-link').setAttribute('href', themes['light']) |
||||
document.documentElement.style.setProperty('--theme', 'light') |
||||
return defaultTheme |
||||
} |
||||
}, |
||||
|
||||
isThere: function (themeName) { |
||||
// returns an object
|
||||
return themes.find(obj => { |
||||
return obj.name === themeName |
||||
}) |
||||
}, |
||||
getThemes: function () { |
||||
return themes |
||||
}, |
||||
switchTheme: function (theme) { |
||||
var themeStorage = new Storage('style:') |
||||
if (theme) themeStorage.set('theme', theme) |
||||
else { |
||||
theme = themeStorage.get('theme') |
||||
let themeStorage = new Storage('style:') |
||||
if (theme) { |
||||
themeStorage.set('theme', theme) |
||||
} |
||||
let theTheme |
||||
if (theme) { |
||||
theTheme = theme |
||||
} else { |
||||
theTheme = this.currentTheme() |
||||
} |
||||
if (!theme) theme = 'light' |
||||
if (themes[theme]) { |
||||
document.getElementById('theme-link').setAttribute('href', themes[theme]) |
||||
document.documentElement.style.setProperty('--theme', themeVariable[theme]) |
||||
this.event.emit('switchTheme', themeVariable[theme]) |
||||
let themeObj = this.isThere(theTheme) |
||||
if (themeObj) { |
||||
document.getElementById('theme-link').setAttribute('href', themeObj.url) |
||||
document.documentElement.style.setProperty('--theme', themeObj.quality) |
||||
this.event.emit('switchTheme', themeObj.quality) |
||||
} |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue