|
|
@ -1,12 +1,3 @@ |
|
|
|
/* |
|
|
|
|
|
|
|
setDefaultLocalStorage('hidestubs', false); |
|
|
|
|
|
|
|
let hideStubsEnabled = localStorage.getItem('hidestubs') == 'true'; |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
setDefaultLocalStorage('hiderecursive', false); |
|
|
|
|
|
|
|
let hideRecursiveEnabled = localStorage.getItem('hiderecursive') == 'true'; |
|
|
|
|
|
|
|
setDefaultLocalStorage('hideimages', false); |
|
|
|
|
|
|
|
let hideImagesEnabled = localStorage.getItem('hideimages') == 'true'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const fileInput = document.getElementById('file'); |
|
|
|
const fileInput = document.getElementById('file'); |
|
|
|
fileInput ? fileInput.style.display = 'none' : void 0; |
|
|
|
fileInput ? fileInput.style.display = 'none' : void 0; |
|
|
|
let hidden; |
|
|
|
let hidden; |
|
|
@ -18,7 +9,7 @@ const loadHiddenStorage = () => { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
} catch (e) { |
|
|
|
//ignore
|
|
|
|
console.error(e); |
|
|
|
} |
|
|
|
} |
|
|
|
//set to empty if not exist or error parsing
|
|
|
|
//set to empty if not exist or error parsing
|
|
|
|
setLocalStorage('hidden', '[]'); |
|
|
|
setLocalStorage('hidden', '[]'); |
|
|
@ -76,7 +67,7 @@ const changeOption = function(e) { |
|
|
|
} |
|
|
|
} |
|
|
|
this.value = ''; |
|
|
|
this.value = ''; |
|
|
|
setHidden(posts, hiding); |
|
|
|
setHidden(posts, hiding); |
|
|
|
setLocalStorage('hidden', JSON.stringify([...hidden]));
|
|
|
|
setLocalStorage('hidden', JSON.stringify([...hidden])); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (let menu of document.getElementsByClassName('postmenu')) { |
|
|
|
for (let menu of document.getElementsByClassName('postmenu')) { |
|
|
@ -104,95 +95,64 @@ for (let elem of hidden) { |
|
|
|
setHidden(posts, true); |
|
|
|
setHidden(posts, true); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const hideImages = () => { |
|
|
|
const renderCSSLink = document.createElement('style'); |
|
|
|
const postThumbs = document.getElementsByClassName('file-thumb'); |
|
|
|
renderCSSLink.type = 'text/css'; |
|
|
|
for (thumb of postThumbs) { |
|
|
|
renderCSSLink.id = 'rendercss'; |
|
|
|
thumb.classList.toggle('invisible'); |
|
|
|
document.head.appendChild(renderCSSLink); |
|
|
|
} |
|
|
|
const renderSheet = renderCSSLink.sheet; |
|
|
|
} |
|
|
|
const rulesKey = renderSheet.rules ? 'rules' : 'cssRules'; |
|
|
|
if (hideImagesEnabled) { |
|
|
|
|
|
|
|
hideImages(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CssToggle { |
|
|
|
window.addEventListener('settingsReady', function(event) { |
|
|
|
constructor (settingId, localStorageKey, settingCss) { |
|
|
|
|
|
|
|
this.localStorageKey = localStorageKey; |
|
|
|
const mainStyleSheet = document.querySelector('link[rel="stylesheet"]').sheet; |
|
|
|
this.settingBoolean = localStorage.getItem(this.localStorageKey) == 'true'; |
|
|
|
const replaceCssRule = (selectorText, css) => { |
|
|
|
this.settingCss = settingCss; |
|
|
|
const rulesKey = mainStyleSheet.rules != null ? 'rules' : 'cssRules'; |
|
|
|
window.addEventListener('settingsReady', () => { |
|
|
|
for (let i = 0; i < mainStyleSheet[rulesKey].length; i++) { |
|
|
|
//on event fire, set boolean to correct checked stats
|
|
|
|
const rule = mainStyleSheet[rulesKey][i]; |
|
|
|
this.setting = document.getElementById(settingId); |
|
|
|
if(rule.selectorText == selectorText) { |
|
|
|
this.setting.checked = this.settingBoolean; |
|
|
|
mainStyleSheet.removeRule(i); |
|
|
|
this.setting.addEventListener('change', () => { |
|
|
|
return; |
|
|
|
this.toggle(); |
|
|
|
} |
|
|
|
}, false); |
|
|
|
} |
|
|
|
}); |
|
|
|
mainStyleSheet.insertRule(css); |
|
|
|
this.toggle(); |
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
toggle () { |
|
|
|
const hideRecursiveCss = `.op.hidden ~ .anchor, .op.hidden ~ .post-container {
|
|
|
|
this.settingBoolean = !this.settingBoolean; |
|
|
|
display: none; |
|
|
|
if (this.settingBoolean) { |
|
|
|
}`;
|
|
|
|
renderSheet.insertRule(this.settingCss); |
|
|
|
const hideRecursiveSetting = document.getElementById('hiderecursive-setting'); |
|
|
|
} else { |
|
|
|
hideRecursiveSetting.checked = hideRecursiveEnabled; |
|
|
|
for (let i = 0; i < renderSheet[rulesKey].length; i++) { |
|
|
|
hideRecursiveEnabled && replaceCssRule('.post-container.hidden, .catalog-tile.hidden', hideRecursiveCss); |
|
|
|
if (renderSheet[rulesKey][i].cssText == this.settingCss) { |
|
|
|
const toggleHideRecursive = () => { |
|
|
|
renderSheet.deleteRule(i); |
|
|
|
hideRecursiveEnabled = !hideRecursiveEnabled; |
|
|
|
} |
|
|
|
replaceCssRule('.op.hidden ~ .anchor, .op.hidden ~ .post-container', hideRecursiveCss); |
|
|
|
} |
|
|
|
console.log('toggling recursive hide', hideRecursiveEnabled); |
|
|
|
} |
|
|
|
setLocalStorage('hiderecursive', hideRecursiveEnabled); |
|
|
|
console.log('toggling', this.localStorageKey, this.settingBoolean); |
|
|
|
} |
|
|
|
setLocalStorage(this.localStorageKey, this.settingBoolean); |
|
|
|
hideRecursiveSetting.addEventListener('change', toggleHideRecursive, false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
const hideStubsCss = `.post-container.hidden, .catalog-tile.hidden {
|
|
|
|
|
|
|
|
visibility: hidden; |
|
|
|
|
|
|
|
margin-top: -1.5em; |
|
|
|
|
|
|
|
height: 0; |
|
|
|
|
|
|
|
}`;
|
|
|
|
|
|
|
|
const hideStubsSetting = document.getElementById('hidestubs-setting'); |
|
|
|
|
|
|
|
hideStubsSetting.checked = hideStubsEnabled; |
|
|
|
|
|
|
|
hideStubsEnabled && replaceCssRule('.post-container.hidden, .catalog-tile.hidden', hideStubsCss); |
|
|
|
|
|
|
|
const toggleHideStubs = () => { |
|
|
|
|
|
|
|
hideStubsEnabled = !hideStubsEnabled; |
|
|
|
|
|
|
|
replaceCssRule('.post-container.hidden, .catalog-tile.hidden', hideStubsCss); |
|
|
|
|
|
|
|
console.log('toggling hiding stubs', hideStubsEnabled); |
|
|
|
|
|
|
|
setLocalStorage('hidestubs', hideStubsEnabled); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
hideStubsSetting.addEventListener('change', toggleHideStubs, false); |
|
|
|
}; |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const crispSetting = document.getElementById('crispimages-setting'); |
|
|
|
//det localstorage defaults
|
|
|
|
let crispEnabled = localStorage.getItem('crispimages') == 'true'; |
|
|
|
// setDefaultLocalStorage('hidestubs', false);
|
|
|
|
const normCss = 'img{image-rendering:auto}'; |
|
|
|
setDefaultLocalStorage('hiderecursive', false); |
|
|
|
const crispCss = `img{
|
|
|
|
setDefaultLocalStorage('hideimages', false); |
|
|
|
image-rendering: crisp-edges; |
|
|
|
setDefaultLocalStorage('crispimages', false); |
|
|
|
image-rendering: pixelated; |
|
|
|
setDefaultLocalStorage('heightlimit', false); |
|
|
|
image-rendering: -webkit-optimize-contrast; |
|
|
|
|
|
|
|
-ms-interpolation-mode: nearest-neighbor; |
|
|
|
|
|
|
|
}`;
|
|
|
|
|
|
|
|
replaceCssRule('img', crispEnabled ? crispCss : normCss); |
|
|
|
|
|
|
|
const changeCrispSetting = (change) => { |
|
|
|
|
|
|
|
crispEnabled = crispSetting.checked; |
|
|
|
|
|
|
|
replaceCssRule('img', crispEnabled ? crispCss : normCss); |
|
|
|
|
|
|
|
console.log('setting images crisp', crispEnabled); |
|
|
|
|
|
|
|
setLocalStorage('crispimages', crispEnabled); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
crispSetting.checked = crispEnabled; |
|
|
|
|
|
|
|
crispSetting.addEventListener('change', changeCrispSetting, false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//todo: option here and in modal for clearing hide list and unhide all hidden posts
|
|
|
|
//define the css
|
|
|
|
const hideImagesSetting = document.getElementById('hideimages-setting'); |
|
|
|
//const hideStubsCss = `.post-container.hidden, .catalog-tile.hidden { visibility: hidden;margin-top: -1.5em;height: 0; }`;
|
|
|
|
hideImagesSetting.checked = hideImagesEnabled; |
|
|
|
const hideImagesCss = `.file-thumb { visibility: hidden !important; }` |
|
|
|
const toggleHideImages = () => { |
|
|
|
const hideRecursiveCss = `.op.hidden ~ .anchor, .op.hidden ~ .post-container { display: none; }`; |
|
|
|
hideImagesEnabled = !hideImagesEnabled |
|
|
|
const heightlimitCss = `img, video { max-height: unset; }`; |
|
|
|
setLocalStorage('hideimages', hideImagesEnabled); |
|
|
|
const crispCss = `img { image-rendering: crisp-edges; }`; |
|
|
|
hideImages(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
hideImagesSetting.addEventListener('change', toggleHideImages, false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
//make classes with css
|
|
|
|
|
|
|
|
//new CssToggle('hidestubs-setting', 'hidestubs', hideStubsCss);
|
|
|
|
|
|
|
|
new CssToggle('hiderecursive-setting', 'hiderecursive', hideRecursiveCss); |
|
|
|
|
|
|
|
new CssToggle('heightlimit-setting', 'heightlimit', heightlimitCss); |
|
|
|
|
|
|
|
new CssToggle('crispimages-setting', 'crispimages', crispCss); |
|
|
|
|
|
|
|
new CssToggle('hideimages-setting', 'hideimages', hideImagesCss); |
|
|
|
|
|
|
|
|
|
|
|
window.addEventListener('addPost', function(e) { |
|
|
|
window.addEventListener('addPost', function(e) { |
|
|
|
const post = e.detail.post; |
|
|
|
const post = e.detail.post; |
|
|
@ -201,11 +161,6 @@ window.addEventListener('addPost', function(e) { |
|
|
|
if (hidden.has(hiddenKey) || hidden.has(userId)) { |
|
|
|
if (hidden.has(hiddenKey) || hidden.has(userId)) { |
|
|
|
post.classList.add('hidden'); |
|
|
|
post.classList.add('hidden'); |
|
|
|
} |
|
|
|
} |
|
|
|
if (hideImagesEnabled) { |
|
|
|
|
|
|
|
for (thumb of post.querySelectorAll('.file-thumb')) { |
|
|
|
|
|
|
|
thumb.classList.add('invisible'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const menu = post.querySelector('.postmenu'); |
|
|
|
const menu = post.querySelector('.postmenu'); |
|
|
|
for (let i = 0; i < menu.children.length; i++) { |
|
|
|
for (let i = 0; i < menu.children.length; i++) { |
|
|
|
menu.children[i].originalText = menu.children[i].innerText; |
|
|
|
menu.children[i].originalText = menu.children[i].innerText; |
|
|
|