From 5f31ea6b7c765ca5a094b627b20e920c70acb549 Mon Sep 17 00:00:00 2001 From: Kimapr Date: Sat, 12 Apr 2025 23:29:46 +0500 Subject: [PATCH] break inexistence of this --- LICENSE.md | 1 + README.md | 1 + aKKKoma.js | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 aKKKoma.js diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..588e70d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1 @@ +\#Pubic \#Domain diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e51f4c --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +put this scrip into your grease monkey diff --git a/aKKKoma.js b/aKKKoma.js new file mode 100644 index 0000000..70cafe1 --- /dev/null +++ b/aKKKoma.js @@ -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); + }); +})();