Greasy Fork

kawaiimoji

press button to convert lower case letter to any characters on any senpai clients

// ==UserScript==
// @name         kawaiimoji
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  press button to convert lower case letter to any characters on any senpai clients
// @author       #kawaiirz
// @match        http://caffe.senpai-agar.online/
// @match        http://caffe.senpai-agar.online/lwga/
// @match        http://ixagar.net/
// @match        http://ixagar.net/classic/
// @match        http://senpai-agar.online/
// @match        http://senpai-agar.online/lwga/
// @run-at       document-end
// ==/UserScript==

(function t() {
    // if (target == false), restart this function.
    var target = document.getElementsByClassName('chat_input_area')[0]; //lwga
    if (!target) {
        target = document.getElementById('chatboxArea2'); // classic
        if (!target) {
            setTimeout(t, 1000);
            return;
        }
    }

    // charactes
    var alphabets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],
        minimoji = ['ᴀ','ʙ','ᴄ','ᴅ','ᴇ','ғ','ɢ','ʜ','ɪ','ᴊ','ᴋ','ʟ','ᴍ','ɴ','ᴏ','ᴘ','ǫ','ʀ','s','ᴛ','ᴜ','ᴠ','ᴡ','x','ʏ','ᴢ'];
    var alphanumeric = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,3,4,5,6,7,8,9],
        morseCode = ['.-','-...','-.-.','-..','.','..-.','--.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..','-----','.----','..---','...--','....-','.....','-....','--...','---..','----.'],
        marumoji = ['🅐','🅑','🅒','🅓','🅔','🅕','🅖','🅗','🅘','🅙','🅚','🅛','🅜','🅝','🅞','🅟','🅠','🅡','🅢','🅣','🅤','🅥','🅦','🅧','🅨','🅩','⓿','➊','➋','➌','➍','➎','➏','➐','➑','➒'];
    var nums = [0,1,2,3,4,5,6,7,8,9],
        mininums = ['₀','₁','₂','₃','₄','₅','₆','₇','₈','₉'];

    var btnChar = ['ᴀ','₁','🅐','.','.'];

    // button configuration
    var btn = [];
    for (var bn=0; bn<btnChar.length; bn++) {
        btn[bn] = target.appendChild(document.createElement('div'));
        btn[bn].setAttribute("className", 'kawaiibtn');
        btn[bn].innerText = btnChar[bn];
        if (bn == 4) btn[bn].style.textDecoration ='line-through';
        btn[bn].style.fontSize = 'small';
        btn[bn].style.color = 'black';
        btn[bn].style.backgroundColor = 'whitesmoke';
        btn[bn].style.cursor = 'pointer';
        btn[bn].style.borderTop = 'solid 1px black';
        btn[bn].style.borderRight = 'solid 1px black';
        btn[bn].style.zIndex = 1;
        btn[bn].style.position = 'absolute';
        btn[bn].style.padding = '2px 8px 3px 7px';
        btn[bn].style.float = 'left';
        btn[bn].style.position = 'static';
    }

    var chatBox = target.className == 'chat_input_area' ? document.getElementById('chat_input_text_box') : document.getElementById('input_box2');

    btn[0].addEventListener('click', function() {
        var afterStrs = [];
        if (chatBox) {
            var chatBoxStr = chatBox.value,
                beforeStrs = chatBoxStr.split('');
            for (var i=0; i<beforeStrs.length; i++) {
                for (var ii=0; ii<alphabets.length; ii++) {
                    if (beforeStrs[i] == alphabets[ii]) {
                        afterStrs[i] = minimoji[ii];
                        break;
                    } else {
                        afterStrs[i] = beforeStrs[i];
                    }
                }
            }
            chatBox.value = afterStrs.join('');
        }
    }, false);
    btn[1].addEventListener('click', function() {
        var afterStrs = [];
        if (chatBox) {
            var chatBoxStr = chatBox.value,
                beforeStrs = chatBoxStr.split('');
            for (var i=0; i<beforeStrs.length; i++) {
                for (var ii=0; ii<nums.length; ii++) {
                    if (beforeStrs[i] == nums[ii]) {
                        afterStrs[i] = mininums[ii];
                        break;
                    } else {
                        afterStrs[i] = beforeStrs[i];
                    }
                }
            }
            chatBox.value = afterStrs.join('');
        }
    }, false);
    btn[2].addEventListener('click', function() {
        var afterStrs = [];
        if (chatBox) {
            var chatBoxStr = chatBox.value,
                beforeStrs = chatBoxStr.split('');
            for (var i=0; i<beforeStrs.length; i++) {
                for (var ii=0; ii<alphanumeric.length; ii++) {
                    if (beforeStrs[i] == alphanumeric[ii]) {
                        afterStrs[i] = marumoji[ii];
                        break;
                    } else {
                        afterStrs[i] = beforeStrs[i];
                    }
                }
            }
            chatBox.value = afterStrs.join('');
        }
    }, false);
    btn[3].addEventListener('click', function() {
        var afterStrs = [];
        if (chatBox) {
            var chatBoxStr = chatBox.value,
                beforeStrs = chatBoxStr.split('');
            for (var i=0; i<beforeStrs.length; i++) {
                for (var ii=0; ii<alphanumeric.length; ii++) {
                    if (beforeStrs[i] == alphanumeric[ii]) {
                        afterStrs[i] = morseCode[ii];
                        break;
                    } else {
                        afterStrs[i] = beforeStrs[i];
                    }
                }
            }
            chatBox.value = afterStrs.join(' ');
        }
    }, false);
    btn[4].addEventListener('click', function() {
        var afterStrs = [];
        if (chatBox) {
            var chatBoxStr = chatBox.value,
                beforeStrs = chatBoxStr.split(' ');
            for (var i=0; i<beforeStrs.length; i++) {
                for (var ii=0; ii<alphanumeric.length; ii++) {
                    if (beforeStrs[i] == morseCode[ii]) {
                        afterStrs[i] = alphanumeric[ii];
                        break;
                    } else {
                        afterStrs[i] = beforeStrs[i];
                    }
                }
            }
            chatBox.value = afterStrs.join('');

            var chatDOM = document.getElementById('chat_view').children;
            var chatTexts = [];
            var cnt = 0;
            for (var il = (chatDOM.length - 1); il>=0; il--) {
                cnt++;
                if (cnt > 6) {
                    break;
                }
                chatTexts[il] = chatDOM[il].lastElementChild.textContent;
                console.log(chatTexts[il]);

                beforeStrs = [], afterStrs = [];
                beforeStrs = chatTexts[il].split(' ');
                for (i=0; i<beforeStrs.length; i++) {
                    for (ii=0; ii<alphanumeric.length; ii++) {
                        if (beforeStrs[i] == morseCode[ii]) {
                            afterStrs[i] = alphanumeric[ii];
                            break;
                        } else {
                            afterStrs[i] = beforeStrs[i];
                        }
                    }
                }

                chatDOM[il].lastElementChild.textContent = afterStrs.join('');
            }
        }
    });

    // button observer configuration
    var conf = {
        attributes: true
    }

    // synchronize chatbox and button styles.display
    const observer = new MutationObserver (function(record) {
        for (var i=0; i<btnChar.length; i++) {
            target.style.display == 'none' ? btn[i].style.display = 'none' : btn[i].style.display = 'block'
        }
	});
	observer.observe(target, conf);
})();