// Water.css Bookmarklet // --------------------- const $$ = (selector) => document.querySelectorAll(selector) const createElement = (tagName, properties) => Object.assign(document.createElement(tagName), properties) // Remove all CSS stylesheets, external and internal $$('link[rel="stylesheet"],style').forEach((el) => el.remove()) // Remove all inline styles $$('*').forEach((el) => (el.style = '')) const linkElm = createElement('link', { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/water.css@2/out/water.css' }) // Add water.css and responsive viewport (if necessary) document.head.append( linkElm, !$$('meta[name="viewport"]').length && createElement('meta', { name: 'viewport', content: 'width=device-width,initial-scale=1.0' }) ) // theme switching logic const moonSVG = '' const sunSVG = '' const toggleBtn = createElement('div', { innerHTML: sunSVG, style: 'position: fixed !important; top: 50px !important; right: 100px; cursor: pointer;' }) let theme = 'light' const toggleTheme = () => { if (theme === 'light' || theme === null) { theme = 'dark' toggleBtn.innerHTML = moonSVG linkElm.href = 'https://cdn.jsdelivr.net/npm/water.css@2/out/dark.css' } else { theme = 'light' linkElm.href = 'https://cdn.jsdelivr.net/npm/water.css@2/out/water.css' toggleBtn.innerHTML = sunSVG } } toggleBtn.onclick = toggleTheme document.body.append(toggleBtn)