Automatically turns your text into uwu style across all websites!
Verzia zo dňa
// ==UserScript==
// @name Universal uwuifyer
// @namespace http://tampermonkey.net
// @version 1.3
// @description Automatically turns your text into uwu style across all websites!
// @author You
// @license MIT
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// Function to convert regular text to uwu style
function uwuify(text) {
return text
.replace(/[lr]/g, 'w')
.replace(/[LR]/g, 'W')
.replace(/n([aeiou])/g, 'ny$1')
.replace(/N([aeiou])/g, 'Ny$1')
.replace(/N([AEIOU])/g, 'NY$1')
.replace(/ove/g, 'uv');
}
// Process normal text inputs and textareas on any site
document.addEventListener('input', function(event) {
const target = event.target;
if (!target) return;
// Check if typing in a standard input box or textarea
if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {
const original = target.value;
const converted = uwuify(original);
if (original !== converted) {
// Keep the typing cursor position intact
const start = target.selectionStart;
const end = target.selectionEnd;
target.value = converted;
target.setSelectionRange(start, end);
}
}
// Handle custom web editors (like Discord's main text block)
else if (target.getAttribute('contenteditable') === 'true') {
if (target.dataset.isUwUing) return;
target.dataset.isUwUing = 'true';
// Find Discord's hidden interface controller to safely inject text
const reactKey = Object.keys(target).find(k => k.startsWith('__reactFiber$') || k.startsWith('__reactInternalInstance$'));
if (reactKey) {
try {
let node = target[reactKey];
while (node) {
if (node.memoizedProps && node.memoizedProps.editor) {
const editor = node.memoizedProps.editor;
const originalText = target.innerText || "";
const uwuText = uwuify(originalText);
if (originalText !== uwuText) {
const savedSelection = editor.selection;
editor.selectAll();
editor.insertText(uwuText);
if (savedSelection) editor.selection = savedSelection;
}
break;
}
node = node.return;
}
} catch (e) {}
}
delete target.dataset.isUwUing;
}
}, true);
})();