oof
This commit is contained in:
7
public/s/js/bootstrap.min.js
vendored
Normal file
7
public/s/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3772
public/s/js/plyr.js
Normal file
3772
public/s/js/plyr.js
Normal file
File diff suppressed because it is too large
Load Diff
21
public/s/js/scroller.js
Normal file
21
public/s/js/scroller.js
Normal file
@ -0,0 +1,21 @@
|
||||
let load = false;
|
||||
(() => {
|
||||
const posts = document.querySelector("#posts");
|
||||
document.addEventListener("wheel", e => {
|
||||
if((((document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop + window.innerHeight) + 310
|
||||
>= ((document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight)) && !load) {
|
||||
load = true;
|
||||
fetch(`./api/p/${posts.dataset.last}`)
|
||||
.then(res => res.json())
|
||||
.then((msg, html = "") => {
|
||||
for(let i = 0; i < msg.items.length; i++)
|
||||
if(msg.items[i].id)
|
||||
html += `<li class="post"><a href="./${msg.items[i].id}" title="${msg.items[i].mime}"><img class="thumb" src="./t/${msg.items[i].id}.png" /></a></li>\n`;
|
||||
posts.insertAdjacentHTML("beforeend", html);
|
||||
posts.dataset.last = msg.last;
|
||||
load = false;
|
||||
})
|
||||
.catch(err => console.log(err));
|
||||
}
|
||||
});
|
||||
})();
|
25
public/s/js/shit.js
Normal file
25
public/s/js/shit.js
Normal file
@ -0,0 +1,25 @@
|
||||
const clickOnElementBinding = selector => () => (elem = document.querySelector(selector))?elem.click():null;
|
||||
|
||||
const keybindings = {
|
||||
"ArrowLeft": clickOnElementBinding("#next"),
|
||||
"ArrowRight": clickOnElementBinding("#prev"),
|
||||
"r": clickOnElementBinding("#random")
|
||||
};
|
||||
|
||||
(() => {
|
||||
document.addEventListener("keydown", e => {
|
||||
if(e.key in keybindings) {
|
||||
e.preventDefault();
|
||||
keybindings[e.key]();
|
||||
}
|
||||
});
|
||||
|
||||
const f0ckimage = document.querySelector("#f0ck-image");
|
||||
if(f0ckimage) {
|
||||
f0ckimage.addEventListener("click", e => {
|
||||
e.preventDefault();
|
||||
f0ckimage.hasAttribute("style")?f0ckimage.removeAttribute("style"):f0ckimage.setAttribute("style", "max-height: unset;");
|
||||
});
|
||||
}
|
||||
})();
|
||||
//sorry, jQuery ist dumm :--D sorry sirx, dass ich wonnes Kot auskommentiert habe
|
98
public/s/js/theme.js
Normal file
98
public/s/js/theme.js
Normal file
@ -0,0 +1,98 @@
|
||||
/* 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");
|
||||
else {
|
||||
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);
|
||||
}
|
25
public/s/js/video.min.js
vendored
Normal file
25
public/s/js/video.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
123
public/s/js/videojs.persistvolume.js
Normal file
123
public/s/js/videojs.persistvolume.js
Normal file
@ -0,0 +1,123 @@
|
||||
"use strict";
|
||||
(function(factory){
|
||||
/*!
|
||||
* Custom Universal Module Definition (UMD)
|
||||
*
|
||||
* Video.js will never be a non-browser lib so we can simplify UMD a bunch and
|
||||
* still support requirejs and browserify. This also needs to be closure
|
||||
* compiler compatible, so string keys are used.
|
||||
*/
|
||||
if (typeof define === 'function' && define['amd']) {
|
||||
define(['./video'], function(vjs){ factory(window, document, vjs) });
|
||||
// checking that module is an object too because of umdjs/umd#35
|
||||
} else if (typeof exports === 'object' && typeof module === 'object') {
|
||||
factory(window, document, require('video.js'));
|
||||
} else {
|
||||
factory(window, document, videojs);
|
||||
}
|
||||
|
||||
})(function(window, document, vjs) {
|
||||
//cookie functions from https://developer.mozilla.org/en-US/docs/DOM/document.cookie
|
||||
var
|
||||
getCookieItem = function(sKey) {
|
||||
if (!sKey || !hasCookieItem(sKey)) { return null; }
|
||||
var reg_ex = new RegExp(
|
||||
"(?:^|.*;\\s*)" +
|
||||
window.escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") +
|
||||
"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"
|
||||
);
|
||||
return window.unescape(document.cookie.replace(reg_ex,"$1"));
|
||||
},
|
||||
|
||||
setCookieItem = function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
|
||||
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return; }
|
||||
var sExpires = "";
|
||||
if (vEnd) {
|
||||
switch (vEnd.constructor) {
|
||||
case Number:
|
||||
sExpires = vEnd === Infinity ? "; expires=Tue, 19 Jan 2038 03:14:07 GMT" : "; max-age=" + vEnd;
|
||||
break;
|
||||
case String:
|
||||
sExpires = "; expires=" + vEnd;
|
||||
break;
|
||||
case Date:
|
||||
sExpires = "; expires=" + vEnd.toGMTString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
document.cookie =
|
||||
window.escape(sKey) + "=" +
|
||||
window.escape(sValue) +
|
||||
sExpires +
|
||||
(sDomain ? "; domain=" + sDomain : "") +
|
||||
(sPath ? "; path=" + sPath : "") +
|
||||
(bSecure ? "; secure" : "");
|
||||
},
|
||||
|
||||
hasCookieItem = function(sKey) {
|
||||
return (new RegExp(
|
||||
"(?:^|;\\s*)" +
|
||||
window.escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") +
|
||||
"\\s*\\=")
|
||||
).test(document.cookie);
|
||||
},
|
||||
|
||||
hasLocalStorage = function() {
|
||||
try {
|
||||
window.localStorage.setItem('persistVolume', 'persistVolume');
|
||||
window.localStorage.removeItem('persistVolume');
|
||||
return true;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
getStorageItem = function(key) {
|
||||
return hasLocalStorage() ? window.localStorage.getItem(key) : getCookieItem(key);
|
||||
},
|
||||
setStorageItem = function(key, value) {
|
||||
return hasLocalStorage() ? window.localStorage.setItem(key, value) : setCookieItem(key, value, Infinity, '/');
|
||||
},
|
||||
|
||||
extend = function(obj) {
|
||||
var arg, i, k;
|
||||
for (i = 1; i < arguments.length; i++) {
|
||||
arg = arguments[i];
|
||||
for (k in arg) {
|
||||
if (arg.hasOwnProperty(k)) {
|
||||
obj[k] = arg[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
defaults = {
|
||||
namespace: ""
|
||||
},
|
||||
|
||||
volumePersister = function(options) {
|
||||
var player = this;
|
||||
var settings = extend({}, defaults, options || {});
|
||||
|
||||
var key = settings.namespace + '-' + 'volume';
|
||||
var muteKey = settings.namespace + '-' + 'mute';
|
||||
|
||||
player.on("volumechange", function() {
|
||||
setStorageItem(key, player.volume());
|
||||
setStorageItem(muteKey, player.muted());
|
||||
});
|
||||
|
||||
var persistedVolume = getStorageItem(key);
|
||||
if(persistedVolume !== null){
|
||||
player.volume(persistedVolume);
|
||||
}
|
||||
|
||||
var persistedMute = getStorageItem(muteKey);
|
||||
if(persistedMute !== null){
|
||||
player.muted('true' === persistedMute);
|
||||
}
|
||||
};
|
||||
|
||||
vjs.plugin("persistvolume", volumePersister);
|
||||
|
||||
});
|
Reference in New Issue
Block a user