break inexistence of this
This commit is contained in:
commit
5f31ea6b7c
1
LICENSE.md
Normal file
1
LICENSE.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
\#Pubic \#Domain
|
197
aKKKoma.js
Normal file
197
aKKKoma.js
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name kimarp aKKKoma modifications
|
||||||
|
// @version 1
|
||||||
|
// @grant none
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
;(_=>{
|
||||||
|
if (!((document.querySelector("noscript")??{}).innerText == "To use Akkoma, please enable JavaScript.")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("activating evil akkoma mode");
|
||||||
|
|
||||||
|
let style = document.createElement("style");
|
||||||
|
style.textContent=`
|
||||||
|
._mfm_x2_ ._mfm_x2_ ._mfm_x2_,
|
||||||
|
._mfm_x2_ ._mfm_x2_ ._mfm_x3_,
|
||||||
|
._mfm_x2_ ._mfm_x2_ ._mfm_x4_,
|
||||||
|
._mfm_x2_ ._mfm_x3_ ._mfm_x2_,
|
||||||
|
._mfm_x2_ ._mfm_x3_ ._mfm_x3_,
|
||||||
|
._mfm_x2_ ._mfm_x3_ ._mfm_x4_,
|
||||||
|
._mfm_x2_ ._mfm_x4_ ._mfm_x2_,
|
||||||
|
._mfm_x2_ ._mfm_x4_ ._mfm_x3_,
|
||||||
|
._mfm_x2_ ._mfm_x4_ ._mfm_x4_,
|
||||||
|
._mfm_x3_ ._mfm_x2_ ._mfm_x2_,
|
||||||
|
._mfm_x3_ ._mfm_x2_ ._mfm_x3_,
|
||||||
|
._mfm_x3_ ._mfm_x2_ ._mfm_x4_,
|
||||||
|
._mfm_x3_ ._mfm_x3_ ._mfm_x2_,
|
||||||
|
._mfm_x3_ ._mfm_x3_ ._mfm_x3_,
|
||||||
|
._mfm_x3_ ._mfm_x3_ ._mfm_x4_,
|
||||||
|
._mfm_x3_ ._mfm_x4_ ._mfm_x2_,
|
||||||
|
._mfm_x3_ ._mfm_x4_ ._mfm_x3_,
|
||||||
|
._mfm_x3_ ._mfm_x4_ ._mfm_x4_,
|
||||||
|
._mfm_x4_ ._mfm_x2_ ._mfm_x2_,
|
||||||
|
._mfm_x4_ ._mfm_x2_ ._mfm_x3_,
|
||||||
|
._mfm_x4_ ._mfm_x2_ ._mfm_x4_,
|
||||||
|
._mfm_x4_ ._mfm_x3_ ._mfm_x2_,
|
||||||
|
._mfm_x4_ ._mfm_x3_ ._mfm_x3_,
|
||||||
|
._mfm_x4_ ._mfm_x3_ ._mfm_x4_,
|
||||||
|
._mfm_x4_ ._mfm_x4_ ._mfm_x2_,
|
||||||
|
._mfm_x4_ ._mfm_x4_ ._mfm_x3_,
|
||||||
|
._mfm_x4_ ._mfm_x4_ ._mfm_x4_ {
|
||||||
|
font-size:100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-profile .user-profile-fields .user-profile-field .user-profile-field-name, .user-profile .user-profile-fields .user-profile-field .user-profile-field-value {
|
||||||
|
white-space: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.EvilMode-EvilCode pre:has(code),
|
||||||
|
body.EvilMode-EvilCode :not(pre) > code {
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding:0.3em;
|
||||||
|
/* border:1px solid #0000ff; */
|
||||||
|
font-size:0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.EvilMode-EvilCode pre:has(code) {
|
||||||
|
box-shadow: 0 0 2em 0 #300;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.EvilMode-WrapCode) .StatusBody .text > pre {
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
:is(pre:has(code), :not(pre) > code) a {
|
||||||
|
color: #0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-size:1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Status .status-container .content, .StatusBody {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
`
|
||||||
|
document.head.append(style);
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded",_=>{
|
||||||
|
try {
|
||||||
|
[...document.styleSheets]
|
||||||
|
.map(e=>{try{return e.cssRules}catch{}}).filter(e=>e).map(e=>[...e])
|
||||||
|
.flat()
|
||||||
|
.filter(e=>e.selectorText==".user-info.-compact .container")
|
||||||
|
[0].style.gridTemplateAreas="";
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
var elem = function(tag,a,b){
|
||||||
|
tag = document.createElement(tag);
|
||||||
|
Object.entries(a??{}).forEach(([k,v]) => tag.setAttribute(k,v));
|
||||||
|
(b??[]).map(e => (typeof e) == "string" ? document.createTextNode(e) : e)
|
||||||
|
.forEach(e => tag.append(e));
|
||||||
|
return tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
var $ = (query, base) => base ? base.querySelectorAll(query) : document.querySelectorAll(query);
|
||||||
|
var $0 = (query, base) => base ? base.querySelector(query) : document.querySelector(query);
|
||||||
|
|
||||||
|
let makeCheckBox = (label, params, eater) => {
|
||||||
|
let checkb;
|
||||||
|
|
||||||
|
let textel = elem("li", {}, [
|
||||||
|
elem("label", {class: "BooleanSetting"}, [
|
||||||
|
elem("label", {class: "checkbox"}, [
|
||||||
|
checkb = elem("input", {type: "checkbox", ...params}),
|
||||||
|
elem("i", {class: "checkbox-indicator"}),
|
||||||
|
elem("span", {class: "label"}, [
|
||||||
|
elem("span", {class: "label"}, [
|
||||||
|
label
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (eater)
|
||||||
|
eater(checkb);
|
||||||
|
|
||||||
|
return textel;
|
||||||
|
}
|
||||||
|
|
||||||
|
let makeNumberal = (label, params, eater) => {
|
||||||
|
let checkb;
|
||||||
|
|
||||||
|
let textel = elem("li", {}, [
|
||||||
|
elem("span", {class: "IntegerSetting"}, [
|
||||||
|
elem("label", {for: params.id, style: "margin-right: 1em"}, [label]),
|
||||||
|
checkb = elem("input", {class: "number-input", type: "number", ...params})
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (eater)
|
||||||
|
eater(checkb);
|
||||||
|
|
||||||
|
return textel;
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings;
|
||||||
|
var save = _ => localStorage.aKKKomaSettings = JSON.stringify(settings);
|
||||||
|
var load = _ => settings = JSON.parse(localStorage.aKKKomaSettings ?? '{}')
|
||||||
|
|
||||||
|
try {
|
||||||
|
load(); save();
|
||||||
|
} catch {
|
||||||
|
delete localStorage.aKKKomaSettings;
|
||||||
|
load(); save();
|
||||||
|
}
|
||||||
|
|
||||||
|
var inputValuator = inp => (inp.getAttribute("type") == "checkbox" ? {
|
||||||
|
set: (v) => (inp.checked = !!v),
|
||||||
|
get: () => inp.checked,
|
||||||
|
event: "change"
|
||||||
|
} : {
|
||||||
|
set: (v) => (inp.value = v),
|
||||||
|
get: () => inp.value,
|
||||||
|
event: "input"
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
var inputValueObserver = (id, f) => inp => void (
|
||||||
|
settings[id] != null && (inputValuator(inp).set(settings[id])),
|
||||||
|
f = (f => ev => ((settings[id] = inputValuator(inp).get()), save(),
|
||||||
|
console.log(`${id}: ${settings[id]}`),
|
||||||
|
f ? f(settings[id], inp, ev) : [][[]]))(f),
|
||||||
|
inp.addEventListener(inputValuator(inp).event, f), f()
|
||||||
|
);
|
||||||
|
|
||||||
|
var setelem = elem("div", {class: "setting-item"}, [
|
||||||
|
elem("h2", {}, ["Evil Mode"]),
|
||||||
|
elem("ul", {class: "setting-list"}, [
|
||||||
|
|
||||||
|
makeNumberal("Font size", {id: "EvilMode-FontSize", value: 1, step: 0.1},
|
||||||
|
inputValueObserver("fontSize", val => document.body.style.fontSize = val + "em")),
|
||||||
|
|
||||||
|
makeCheckBox("EVIL code blocks", {id: "EvilMode-EvilCode"},
|
||||||
|
inputValueObserver("evilCodeBlocks", val => val
|
||||||
|
? document.body.classList.add("EvilMode-EvilCode")
|
||||||
|
: document.body.classList.remove("EvilMode-EvilCode"))),
|
||||||
|
|
||||||
|
makeCheckBox("Wrap code blocks", {id: "EvilMode-WrapCode", checked: ""},
|
||||||
|
inputValueObserver("wrapCodeBlocks", val => val
|
||||||
|
? document.body.classList.add("EvilMode-WrapCode")
|
||||||
|
: document.body.classList.remove("EvilMode-WrapCode")))
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
var smp_i = setInterval(_ => {
|
||||||
|
var x = document.querySelector(".settings-modal-panel > .panel-body > * > .contents > div > div > div > div");
|
||||||
|
if (!x) return;
|
||||||
|
clearInterval(smp_i);
|
||||||
|
x.insertAdjacentElement("afterEnd", setelem);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
})();
|
Loading…
Reference in a new issue