Greasy Fork is available in English.

Malayala Kit

MalayalaKit: JavaScript library for creating customizable web menus with tabs, buttons, switches, and input elements.

Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta // @require https://update.greasyfork.org/scripts/482771/1323949/Malayala%20Kit.js

/*
Created by anonimbiri
*/

var MalayalaKit = (function () {
    const usedClasses = new Set();

    const generateRandomClass = (toLowerCase) => {
        const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        const length = Math.floor(Math.random() * 6) + 5;

        let newClass;
        do {
            newClass = Array.from({ length }, () => characters[Math.floor(Math.random() * characters.length)]).join('');
        } while (usedClasses.has(toLowerCase ? newClass.toLowerCase() : newClass));

        usedClasses.add(toLowerCase ? newClass.toLowerCase() : newClass);

        return toLowerCase ? newClass.toLowerCase() : newClass;
    };

    const classList = Object.fromEntries(
        ['menu-list', 'menu-container', 'border', 'tabs-container', 'tab', 'active', 'tab-underline', 'content-container', 'row', 'label', 'button', 'white-border', 'switch-container', 'switch-label', 'inner-circle', 'input', 'menu-title', 'close-button', 'slider-container', 'color', 'color-picker-container', 'color-picker-element', 'circular-area', 'toast-container', 'position', 'top', 'bottom', 'left', 'right', 'center', 'toast', 'info', 'warning', 'error', 'progress'].map(key =>
            [key, key === 'position' ? generateRandomClass(true) : generateRandomClass(false)]
        )
    );

    var cssStyles = `
        .${classList['menu-list']} {
            font-family: Arial, sans-serif;
            align-items: center;
            justify-content: center;
            overflow: hidden auto;
            -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px);
            position: fixed;
            inset: 0;
            z-index: 1000;
            overflow: auto;
            outline: 0;
            -webkit-overflow-scrolling: touch;
            overflow: hidden;
            user-select: none;
        }

        .${classList['menu-container']} {
            background-color: #121212;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            border-radius: 8px;
            overflow: hidden;
            width: 300px;
            display: flex;
            flex-direction: column;
            position: fixed;
        }

        @keyframes borderAnimation {
            0%{background-position:0% 50%}
            50%{background-position:100% 50%}
            100%{background-position:0% 50%}
        }

        .${classList['border']} {
            background: linear-gradient(268deg, #ff3939, #eeff30, #37ff30, #30ffd6, #ff30f4);
            background-size: 1000% 1000%;
            animation: borderAnimation 30s ease infinite;
            width: calc(101%);
            height: calc(1%);
        }

        .${classList['tabs-container']} {
            display: flex;
            background: linear-gradient(to bottom, #222222, #111111);
            color: #fff;
            cursor: grab;
            padding: 0 24px;
            position: relative;
            background-color: rgba(0,0,0,0.4);
            border-bottom: 1px solid rgba(250, 250, 250, 0.12);
        }

        .${classList['tab']} {
            cursor: pointer;
            padding: 10px;
            margin-right: 10px;
            position: relative;
            transition: background 0.2s;
        }

        .${classList['tab']}:hover {
            color: #ffffff!important;
            background: rgba(255, 255, 255, 0.06);
            border-radius: 5px;
        }

        .${classList['tab-underline']} {
            height: 2px;
            position: absolute;
            background: #eeeeee;
            pointer-events: none;
            bottom: 0;
            box-sizing: border-box;
            display: block;
            white-space: nowrap;
            transition: width 0.3s, left 0.3s, right 0.3s;
        }

        .${classList['tab']}.${classList['active']} .${classList['tab-underline']} {
            transform: scaleX(1);
        }

        .${classList['content-container']} {
            margin: 20px;
            overflow: auto;
            scrollbar-width: thin;
            scrollbar-color: #6b6b6b #f1f1f1;
            padding-right: calc(10px + 5px);
            padding-bottom: 0.9vw;
        }
        
        .${classList['content-container']}::-webkit-scrollbar {
            width: 12px;
            cursor: pointer;
            width: 4px;
            height: 4px;
            background-color: transparent;
        }
        
        .${classList['content-container']}::-webkit-scrollbar-corner {
            display: none;
            width: 0;
            height: 0;
        }
        
        .${classList['content-container']}::-webkit-scrollbar-thumb {
            cursor: pointer;
            background-color: transparent;
            border-radius: 2px;
            transition: background-color 0.5s cubic-bezier(0.215, 0.61, 0.355, 1);
        }
        
        .${classList['content-container']}:hover::-webkit-scrollbar-thumb {
            background-color: rgba(255, 255, 255, 0.16);
        }
        
        .${classList['content-container']}::-webkit-scrollbar-thumb:hover {
            background-color: rgb(255, 255, 255);
        }

        .${classList['row']} {
            align-items: center;
            display: flex;
            padding-left: 10px;
            padding-right: 10px;
            padding-top: 20px;
            justify-content: space-between;
        }

        .${classList['row']} .${classList['label']} {
            display: inline-block;
            color: white;
        }

        .${classList['button']} {
            height: 30px;
            border-radius: 5px;
            color: #fff;
            text-align: center;
            display: inline-block;
            background-color: #111111;
            border: none;
            cursor: pointer;
            transition: background 0.2s;
            position: relative;
            z-index: 0;
        }

        .${classList['button']}:hover {
            background-color: rgba(255, 255, 255, 0.10);
        }

        /*.rgb-style:after { 
            content: '';
            position: absolute;
            background: #111111;
        }*/

        .${classList['white-border']}:before {
            content: '';
            border: 1px solid white;
            border-radius: 5px;
            position: absolute;
            top: -0.9px;
            left: -1.6px;
            z-index: -1;
            width: calc(100% + 1px);
            height: calc(100% + 1px);
        }
        
        /*.rgb-style:before {
            content: '';
            background: linear-gradient(268deg, #ff3939, #eeff30, #37ff30, #30ffd6, #ff30f4);
            position: absolute;
            top: -0.2px;
            left: 0px;
            z-index: -1;
            filter: blur(10px);
            width: calc(100% + 1px);
            height: calc(100% + 1px);
            background-size: 1000% 1000%;
            animation: borderAnimation 30s ease infinite;
            border-radius: 5px;
        }*/

        .${classList['switch-container']} {
            display: flex;
            align-items: center;
            margin-bottom: 10px;
        }

        .${classList['switch-container']} input {
            display: none;
        }

        .${classList['switch-container']} input + .${classList['switch-label']} {
            transition: background-color 0.2s;
        }

        .${classList['switch-container']} input:checked + .${classList['switch-label']} {
            background: #fff;
        }    

        .${classList['switch-container']} input:checked + .${classList['switch-label']} .${classList['inner-circle']} {
            transform: translateX(20px);
        }

        .${classList['switch-label']} {
            position: relative;
            display: inline-block;
            width: 40px;
            height: 20px;
            background: #555555;
            border-radius: 100px;
            cursor: pointer;
        }

        .${classList['switch-label']} .${classList['inner-circle']} {
            position: absolute;
            top: 2px;
            left: 2px;
            width: 16px;
            height: 16px;
            background: rgb(17, 17, 17);
            border-radius: 50%;
            transition: transform 0.2s;
        }

        .${classList['input']} {
            position: relative;
            display: inline-flex;
            width: 40%;
            min-width: 0;
            padding: 6px 11px;
            color: #ffffff;
            font-size: 14px;
            line-height: 1.5714285714285714;
            background-color: #111111;
            background-image: none;
            border-width: 1px;
            border-style: solid;
            border-color: #333333;
            border-radius: 5px;
            transition: all 0.2s;
        }

        .${classList['input']}:hover {
            border-color: #eeeeee;
            box-shadow: 0 0 0 2px rgba(17, 17, 17, 0.01);
            outline: 0;
        }

        .${classList['input']}:focus {
            border-color: #eeeeee;
            box-shadow: 0 0 0 2px rgba(17, 17, 17, 0.01);
            outline: 0;
        }

        .${classList['menu-title']} {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px;
            background: #121212;
            color: #fff;
            cursor: grab;
        }

        .${classList['menu-title']} img {
            width: 30px;
            height: 30px;
            margin-right: 10px;
            -webkit-user-drag: none;
            -khtml-user-drag: none;
            -moz-user-drag: none;
            -o-user-drag: none;
            user-drag: none;
        }

        .${classList['menu-title']} a {
            text-align: center;
            font-size: unset;
            font-weight: unset;
            font-family: revert;
            color: #fff;
            background-color: transparent;
            -webkit-user-drag: none;
            -khtml-user-drag: none;
            -moz-user-drag: none;
            -o-user-drag: none;
            user-drag: none;
        }

        .${classList['close-button']} {
            cursor: pointer;
            border: none;
            margin-right: 10px;
            position: relative;
            height: 30px;
            width: 30px;
            border-radius: 8px;
            background: transparent;
            align-items: center;
            transition: background 0.2s;
        }

        .${classList['close-button']}:hover {
            background-color: rgba(255, 255, 255, 0.10);
        }

        .${classList['close-button']} svg {
            width: 100%;
            height: 100%;
        }

        .${classList['slider-container']} {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            width: 100%;
            margin: 10px 0;
        }
        
        .${classList['slider-container']} .${classList['input']} {
            width: 15%;
        }
        
        .${classList['slider-container']} input[type="range"] {
            width: 50%;
            -webkit-appearance: none;
            appearance: none;
            height: 5px;
            border-radius: 8px;
            outline: none;
            -webkit-transition: opacity 0.2s;
            transition: opacity 0.2s;
            cursor: pointer;
            margin-right: 10px;
        }
        
        .${classList['slider-container']} input[type="range"]::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 8px;
            height: 16px;
            border-radius: 2px;
            background: #fff;
            cursor: pointer;
        }
        
        .${classList['slider-container']} input[type="range"]::-moz-range-thumb {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background: #fff;
            cursor: pointer;
        }

        .${classList['slider-container']} input[type="range"]::-webkit-slider-thumb:hover,
        .${classList['slider-container']} input[type="range"]::-moz-range-thumb:hover {
            background: #ff0000;
        }

        .${classList['color']} {
            display: none;
        }

        .${classList['color-picker-container']} {
            display: flex;
            justify-content: flex-end;
            align-items: center;
        }

        .${classList['color-picker-container']} .${classList['input']} {
            width: 30%;
        }
        
        .${classList['color-picker-element']},
        .${classList['circular-area']} {
            margin-right: 10px;
        }
        
        .${classList['circular-area']} {
            transition: all 0.2s;
            border-radius: 50%;
            cursor: pointer;
            width: 25px;
            height: 25px;
            background-color: transparent;
        }
        
        .${classList['circular-area']}:hover {
            box-shadow: 0 0 0 2px #ffffff;
        }

        .${classList['toast-container']} {
            position: fixed;
            overflow: hidden;
            z-index: 1000;
        }

        .${classList['toast-container']}[data-${classList['position']}^="${classList['top']}-"] {
            top: 20px;
        }

        .${classList['toast-container']}[data-${classList['position']}^="${classList['bottom']}-"] {
            bottom: 20px;
        }

        .${classList['toast-container']}[data-${classList['position']}$="-${classList['left']}"] {
            left: 20px;
        }

        .${classList['toast-container']}[data-${classList['position']}$="-${classList['right']}"] {
            right: 20px;
        }

        .${classList['toast-container']}[data-${classList['position']}$="-${classList['center']}"] {
            left: 50%;
            transform: translateX(-50%);
        }
        
        .${classList['toast']} {
            position: relative;
            background: #111111;
            color: #fff;
            padding: 10px;
            margin-bottom: 8px;
            border-radius: 4px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
            font-size: 14px;
            font-weight: bold;
            font-family: monospace;
            pointer-events: auto;
            display: flex;
            align-items: center;
            overflow: hidden;
            user-select: none;
            justify-content: space-between;
            transition: opacity 0.3s ease-in-out;
        }

        .${classList['toast']}.${classList['info']} {
            background: #002126;
            color: rgb(138, 232, 255);
        }

        .${classList['toast']}.${classList['warning']} {
            background: #271a00;
            color: rgb(255, 203, 71);
        }

        .${classList['toast']}.${classList['error']} {
            background: #34001d;
            color: rgb(240, 79, 136);
        }

        .${classList['toast']}.${classList['info']} .${classList['close-button']} svg {
            stroke: rgb(138, 232, 255);
        }

        .${classList['toast']}.${classList['warning']} .${classList['close-button']} svg {
            stroke: rgb(255, 203, 71);
        }

        .${classList['toast']}.${classList['error']} .${classList['close-button']} svg {
            stroke: rgb(240, 79, 136);
        }

        .${classList['toast']} .${classList['close-button']} {
            margin-right: 0px;
            margin-left: 10px;
        }

        .${classList['toast-container']}[data-${classList['position']}="${classList['top']}-${classList['left']}"] .${classList['toast']},
        .${classList['toast-container']}[data-${classList['position']}="${classList['bottom']}-${classList['left']}"] .${classList['toast']} {
            animation: slideInLeft 0.3s ease-in-out;
        }

        .${classList['toast-container']}[data-${classList['position']}="${classList['top']}-${classList['center']}"] .${classList['toast']} {
            animation: slideInTopCenter 0.3s ease-in-out;
        }

        .${classList['toast-container']}[data-${classList['position']}="${classList['top']}-${classList['right']}"] .${classList['toast']}, 
        .${classList['toast-container']}[data-${classList['position']}="${classList['bottom']}-${classList['right']}"] .${classList['toast']} {
            animation: slideInRight 0.3s ease-in-out;
        }

        .${classList['toast-container']}[data-${classList['position']}="${classList['bottom']}-${classList['center']}"] .${classList['toast']} {
            animation: slideInBottomCenter 0.3s ease-in-out;
        }

        .${classList['toast']}.${classList['progress']}::before {
            content: "";
            position: absolute;
            height: 2px;
            width: calc(100%* var(--progress));
            background-color: #fff;
            bottom: 0;
            left: 0;
            right: 0;
            margin-right: auto;
        }

        .${classList['toast']}.${classList['info']}.${classList['progress']}::before {
            background-color: rgb(138, 232, 255);
        }

        .${classList['toast']}.${classList['warning']}.${classList['progress']}::before {
            background-color: rgb(255, 203, 71);
        }

        .${classList['toast']}.${classList['error']}.${classList['progress']}::before {
            background-color: rgb(240, 79, 136);
        }

        @keyframes slideInRight {
            from {
                transform: translateX(200%);
            }
            to {
                transform: translateX(0);
            }
        }

        @keyframes slideInLeft {
            from {
                transform: translateX(-200%);
            }
            to {
                transform: translateX(0);
            }
        }

        @keyframes slideInTopCenter {
            from {
                transform: translateY(-200%);
            }
            to {
                transform: translateY(0);
            }
        }

        @keyframes slideInBottomCenter {
            from {
                transform: translateY(200%);
            }
            to {
                transform: translateY(0);
            }
        }
    `;

    var style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = cssStyles;
    document.head.appendChild(style);

    var menuList = document.createElement('div');
    menuList.className = classList['menu-list'];
    document.body.appendChild(menuList);

    var translations = {
        'en': {
            'pressKey': 'Press a key...',
            'setHotkey': 'Set Hotkey'
        },
        'tr': {
            'pressKey': 'Bir tuşa basın...',
            'setHotkey': 'Kısayol Ayarla'
        },
        'ml': {
            'pressKey': 'ഒരു കീ അമർത്തുക...',
            'setHotkey': 'ഹോട്ട്കീ സജ്ജീകരിക്കുക'
        },
        'ta': {
            'pressKey': 'ஒரு விசில் அழுத்தவும்...',
            'setHotkey': 'ஹாட்கீ அமைக்கவும்'
        },
        'hi': {
            'pressKey': 'एक कुंजी दबाएं...',
            'setHotkey': 'हॉटकी सेट करें'
        },
        'ko': {
            'pressKey': '키를 누르세요...',
            'setHotkey': '단축키 설정'
        },
        'ja': {
            'pressKey': 'キーを押してください...',
            'setHotkey': 'ホットキーを設定'
        },
        'it': {
            'pressKey': 'Premi un tasto...',
            'setHotkey': 'Imposta Hotkey'
        },
        'ar': {
            'pressKey': 'اضغط على مفتاح...',
            'setHotkey': 'تعيين مفتاح الاختصار'
        },
        'fr': {
            'pressKey': 'Appuyez sur une touche...',
            'setHotkey': 'Définir le raccourci'
        },
    };

    var selectedLanguage = navigator.language.split('-')[0];

    function translate(key) {
        return translations[selectedLanguage][key] || key;
    }

    function setLanguage(lang) {
        if (translations[lang]) {
            selectedLanguage = lang;
        } else {
            console.error('Translation not available for the selected language.');
        }
    }

    function CreateMenu(options) {
        this.title = options.title;
        this.icon = options.icon;
        this.isOpen = true;
        this.tabs = [];

        this.render = function () {
            var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
            var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
            this.container = document.createElement('div');
            this.container.className = classList['menu-container'];
            this.container.style.width = (options.size && options.size.width) ? options.size.width + 'px' : '500px';
            this.container.style.height = (options.size && options.size.height) ? options.size.height + 'px' : '400px';
            this.container.style.top = (options.position && options.position.top) ? options.position.top + 'px' : (windowHeight / 2 - this.container.clientHeight / 2) + 'px';
            this.container.style.left = (options.position && options.position.left) ? options.position.left + 'px' : (windowWidth / 2 - this.container.clientWidth / 2) + 'px';

            this.border = document.createElement('div');
            this.border.className = classList['border'];

            this.tabsContainer = document.createElement('div');
            this.tabsContainer.className = classList['tabs-container'];
            this.tabsContainer.style.cursor = 'grab';

            this.underline = document.createElement('div');
            this.underline.className = classList['tab-underline'];

            this.contentContainer = document.createElement('div');
            this.contentContainer.className = classList['content-container'];

            this.menuTitleContainer = document.createElement('div');
            this.menuTitleContainer.className = classList['menu-title'];
            this.menuIcon = document.createElement('img');
            this.menuIcon.setAttribute('src', this.icon);

            this.menuIcon.addEventListener('error', function () {
                this.menuIcon.setAttribute('src', 'data:image/png;base64,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');
            }.bind(this));

            this.menuTitleContainer.appendChild(this.menuIcon);

            this.menuTitle = document.createElement("a");
            this.menuTitle.textContent = this.title || 'MalayalaKit';
            this.menuTitleContainer.appendChild(this.menuTitle);

            this.menuTitleContainer.addEventListener('mousedown', function (e) {
                isDragging = true;
                offsetX = e.clientX - this.container.offsetLeft;
                offsetY = e.clientY - this.container.offsetTop;
                this.menuTitleContainer.style.cursor = 'grabbing';
            }.bind(this));

            this.menuTitleContainer.addEventListener('mouseup', function () {
                isDragging = false;
                this.menuTitleContainer.style.cursor = 'grab';
            }.bind(this));

            this.closeButton = document.createElement('button');
            this.closeButton.className = classList['close-button'];
            var closeIconSvg = `
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="white" stroke-width="2">
            <line x1="18" y1="6" x2="6" y2="18" />
            <line x1="6" y1="6" x2="18" y2="18" />
        </svg>
        `;

            this.closeButton.innerHTML = closeIconSvg;
            this.closeButton.addEventListener('click', function () {
                this.toggleMenu();
            }.bind(this));

            this.menuTitleContainer.appendChild(this.closeButton);
            this.container.appendChild(this.border);
            this.container.appendChild(this.menuTitleContainer);
            this.tabsContainer.appendChild(this.underline);
            this.container.appendChild(this.tabsContainer);
            this.container.appendChild(this.contentContainer);

            menuList.appendChild(this.container);

            var isDragging = false;
            var offsetX, offsetY;

            this.tabsContainer.addEventListener('mousedown', function (e) {
                isDragging = true;
                offsetX = e.clientX - this.container.offsetLeft;
                offsetY = e.clientY - this.container.offsetTop;
                this.tabsContainer.style.cursor = 'grabbing';
            }.bind(this));

            document.addEventListener('mousemove', function (e) {
                if (isDragging) {
                    this.container.style.left = e.clientX - offsetX + 'px';
                    this.container.style.top = e.clientY - offsetY + 'px';
                }
            }.bind(this));

            document.addEventListener('mouseup', function () {
                isDragging = false;
                this.tabsContainer.style.cursor = 'grab';
            }.bind(this));

            document.addEventListener('keydown', function (event) {
                if (isHotkeyPressed(options.hotkey, event)) {
                    this.toggleMenu();
                }
            }.bind(this));

            //this.tabsContainer.innerHTML = '';
            this.tabs.forEach(function (tab, index) {
                var tabElement = document.createElement('div');
                tabElement.className = classList['tab'];
                tabElement.textContent = tab.label;

                tabElement.addEventListener('click', function () {
                    this.contentContainer.innerHTML = '';
                    tab.renderContent(this.contentContainer);
                    const containerRect = this.tabsContainer.getBoundingClientRect();
                    const tabElementRect = tabElement.getBoundingClientRect();
                    this.underline.style.width = tabElementRect.width + 'px';
                    this.underline.style.left = tabElementRect.left - containerRect.left + 'px';
                }.bind(this));

                this.tabsContainer.insertBefore(tabElement, this.underline);

                if (index === 0) {
                    tabElement.click();
                }

            }.bind(this));
        }

        function toggleMenuVisibility(isOpen) {
            menuList.style.display = isOpen ? 'none' : 'flex';

            if (options.pointerLock) {
                const pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement;

                if (pointerLockElement || !isOpen) {
                    document.exitPointerLock?.();
                } else {
                    document.body.requestPointerLock?.();
                }
            }
        }

        this.toggleMenu = function () {
            this.isOpen = !this.isOpen;
            toggleMenuVisibility(this.isOpen);
        };

        this.hideMenu = function () {
            this.isOpen = false;
            toggleMenuVisibility(false);
        };

        this.showMenu = function () {
            this.isOpen = true;
            toggleMenuVisibility(true);
        };


        function isHotkeyPressed(hotkey, event) {
            return event.keyCode === hotkey.keyCode && event.ctrlKey === hotkey.ctrlKey && event.altKey === hotkey.altKey && event.shiftKey === hotkey.shiftKey;
        }

        this.addTab = function (tab) {
            this.tabs.push(tab);
        };
    }

    function Tab(label) {
        this.label = label;
        this.content = [];

        this.addButton = function (button) {
            this.content.push({ type: 'button', data: button });
        };

        this.addSwitch = function (switchButton) {
            this.content.push({ type: 'switch', data: switchButton });
        };

        this.addInput = function (input) {
            this.content.push({ type: 'input', data: input });
        };

        this.addHotkey = function (hotkey) {
            this.content.push({ type: 'hotkey', data: hotkey });
        };

        this.addSlider = function (hotkey) {
            this.content.push({ type: 'slider', data: hotkey });
        };

        this.addColorPicker = function (hotkey) {
            this.content.push({ type: 'colorPicker', data: hotkey });
        };

        this.renderContent = function (container) {
            this.content.forEach(function (item) {
                var row = document.createElement('div');
                row.className = classList['row'];

                var textElement = document.createElement('span');
                textElement.className = classList['label'];
                textElement.textContent = item.data.label || '';
                row.appendChild(textElement);

                switch (item.type) {
                    case 'button':
                        var buttonElement = document.createElement('button');
                        buttonElement.textContent = item.data.buttonLabel || '';
                        buttonElement.className = classList['button'];
                        if (item.data.style === "border") {
                            buttonElement.classList.add(classList['white-border']);
                        } else if (item.data.style === "rgb") {
                            buttonElement.classList.add('rgb-style');
                        }
                        buttonElement.addEventListener('click', function () {
                            if (item.data.onclick) {
                                item.data.onclick();
                            }
                        });
                        row.appendChild(buttonElement);
                        break;

                    case 'switch':
                        var switchContainer = document.createElement('div');
                        switchContainer.className = classList['switch-container'];

                        var switchElement = document.createElement('input');
                        switchElement.type = 'checkbox';
                        switchElement.checked = item.data.value || false;
                        switchElement.addEventListener('change', function () {
                            item.data.value = switchElement.checked;
                            if (item.data.onchange) {
                                item.data.onchange(switchElement.checked);
                            }
                        });

                        var switchLabel = document.createElement('label');
                        switchLabel.className = classList['switch-label'];

                        var innerCircle = document.createElement('div');
                        innerCircle.className = classList['inner-circle'];

                        switchLabel.addEventListener('click', function () {
                            switchElement.checked = !switchElement.checked;
                            item.data.value = switchElement.checked;
                            if (item.data.onchange) {
                                item.data.onchange(switchElement.checked);
                            }
                        });

                        switchLabel.appendChild(innerCircle);
                        switchContainer.appendChild(switchElement);
                        switchContainer.appendChild(switchLabel);
                        row.appendChild(switchContainer);
                        break;

                    case 'input':
                        var inputElement = document.createElement('input');
                        inputElement.className = classList['input'];
                        inputElement.placeholder = item.data.placeholder || '';
                        inputElement.type = item.data.type || 'text';
                        inputElement.value = item.data.type === 'number' ? (item.data.value || 0) : (item.data.value || '');

                        if (item.data.onchange) {
                            inputElement.addEventListener('change', function () {
                                item.data.value = inputElement.value;
                                item.data.onchange(inputElement.value);
                            });
                        }

                        row.appendChild(inputElement);
                        break;

                    case 'hotkey':
                        var buttonElement = document.createElement('button');
                        buttonElement.className = classList['button'];
                        buttonElement.textContent = item.data.value ? formatHotkey(item.data.value) : translate('setHotkey');

                        if (item.data.style === "border") {
                            buttonElement.classList.add(classList['white-border']);
                        } else if (item.data.style === "rgb") {
                            buttonElement.classList.add('rgb-style');
                        }

                        buttonElement.addEventListener('click', function () {
                            buttonElement.textContent = translate('pressKey');
                            document.addEventListener('keyup', function (event) {
                                event.preventDefault();
                                if (document.activeElement.value !== undefined && document.activeElement !== buttonElement) return;
                                item.data.value = event;
                                buttonElement.textContent = formatHotkey(event);
                                if (item.data.onlistener) {
                                    item.data.onlistener(event);
                                }
                                document.removeEventListener('keyup', arguments.callee);
                            });
                        });

                        row.appendChild(buttonElement);
                        break;

                    case 'slider':
                        var sliderContainer = document.createElement('div');
                        sliderContainer.className = classList['slider-container'];

                        var sliderElement = document.createElement('input');
                        sliderElement.type = 'range';
                        sliderElement.min = item.data.min || 0;
                        sliderElement.max = item.data.max || 100;
                        sliderElement.value = item.data.value || 0;
                        sliderElement.style.background = 'linear-gradient(to right, #fff ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) 100%)';

                        var valueElement = document.createElement('input');
                        valueElement.type = 'number';
                        valueElement.className = classList['input'];
                        valueElement.min = item.data.min || 0;
                        valueElement.max = item.data.max || 100;
                        valueElement.value = item.data.value || 0;

                        sliderElement.addEventListener('input', function () {
                            item.data.value = sliderElement.value;
                            valueElement.value = sliderElement.value;
                            sliderElement.style.background = 'linear-gradient(to right, #fff ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) 100%)';
                        });

                        sliderElement.addEventListener('change', function () {
                            if (item.data.onchange) {
                                item.data.onchange(sliderElement.value);
                            }
                        });

                        valueElement.addEventListener('input', function () {
                            sliderElement.value = valueElement.value;
                            sliderElement.style.background = 'linear-gradient(to right, #fff ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) ' + sliderElement.value + '%, rgba(255, 255, 255, 0.10) 100%)';
                        });

                        valueElement.addEventListener('change', function () {
                            if (parseFloat(valueElement.value) < parseFloat(sliderElement.min) || parseFloat(valueElement.value) > parseFloat(sliderElement.max)) {
                                valueElement.value = item.data.value;
                                sliderElement.value = item.data.value;
                                sliderElement.style.background = 'linear-gradient(to right, #fff ' + item.data.value + '%, rgba(255, 255, 255, 0.10) ' + item.data.value + '%, rgba(255, 255, 255, 0.10) 100%)';
                            } else if (!valueElement.value) {
                                valueElement.value = sliderElement.min;
                                sliderElement.value = sliderElement.min;
                                sliderElement.style.background = 'linear-gradient(to right, #fff ' + sliderElement.min + '%, rgba(255, 255, 255, 0.10) ' + sliderElement.min + '%, rgba(255, 255, 255, 0.10) 100%)';
                            } else {
                                item.data.value = valueElement.value;
                            }
                            if (item.data.onchange) {
                                item.data.onchange(valueElement.value);
                            }
                        });

                        sliderContainer.appendChild(sliderElement);
                        sliderContainer.appendChild(valueElement);
                        row.appendChild(sliderContainer);
                        break;

                    case 'colorPicker':
                        var colorPickerContainer = document.createElement('div');
                        colorPickerContainer.className = classList['color-picker-container'];

                        var colorPickerElement = document.createElement('input');
                        colorPickerElement.type = 'color';
                        colorPickerElement.className = classList['color'];
                        colorPickerElement.value = item.data.value || '#000000';

                        var colorCodeElement = document.createElement('input');
                        colorCodeElement.type = 'text';
                        colorCodeElement.className = classList['input'];
                        colorCodeElement.value = item.data.value || '#000000';

                        var circularArea = document.createElement('div');
                        circularArea.className = classList['circular-area'];
                        circularArea.style.backgroundColor = colorPickerElement.value;

                        colorPickerElement.addEventListener('input', function () {
                            item.data.value = colorPickerElement.value;
                            colorCodeElement.value = colorPickerElement.value;
                            circularArea.style.backgroundColor = colorPickerElement.value;
                        });

                        colorPickerElement.addEventListener('change', function () {
                            if (item.data.onchange) {
                                item.data.onchange(colorPickerElement.value);
                            }
                        });

                        colorCodeElement.addEventListener('input', function () {
                            item.data.value = colorCodeElement.value;
                            colorPickerElement.value = colorCodeElement.value;
                            circularArea.style.backgroundColor = colorCodeElement.value;
                        });

                        colorCodeElement.addEventListener('change', function () {
                            if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(colorPickerElement.value)) colorCodeElement.value =
                                colorPickerElement.value;
                            if (item.data.onchange) {
                                item.data.onchange(colorCodeElement.value);
                            }
                        });

                        circularArea.addEventListener('click', function () {
                            colorPickerElement.click();
                        });

                        colorPickerContainer.appendChild(colorPickerElement);
                        colorPickerContainer.appendChild(circularArea);
                        colorPickerContainer.appendChild(colorCodeElement);
                        row.appendChild(colorPickerContainer);
                        break;

                    default:
                        break;
                }

                container.appendChild(row);
            });
        };

        function formatHotkey(event) {
            var modifiers = [];
            if (event.ctrlKey) modifiers.push('Ctrl');
            if (event.altKey) modifiers.push('Alt');
            if (event.shiftKey) modifiers.push('Shift');
            var key = event.key || String.fromCharCode(event.keyCode);

            return modifiers.length > 0 ? modifiers.join('+') + ' + ' + key : key;
        }
    }

    function ToastManager(options) {
        if (options && options.position) this.position = `${classList[options.position.split('-')[0]]}-${classList[options.position.split('-')[1]]}`
        else this.position = `${classList['bottom']}-${classList['right']}`;

        this.toastContainer = document.createElement('div');
        this.toastContainer.className = classList['toast-container'];
        this.toastContainer.dataset[classList['position']] = this.position;
        document.body.appendChild(this.toastContainer);

        this.showToast = function ({ message, duration = 3000, type, showProgress = false }) {
            var toast = document.createElement('div');
            toast.className = `${classList['toast']} ${classList[type]}`;
            toast.classList.toggle(classList['progress'], showProgress);
            toast.style.setProperty("--progress", 1);
            toast.textContent = message;

            var closeButton = document.createElement('button');
            closeButton.className = classList['close-button'];
            var closeIconSvg = `
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="white" stroke-width="2">
            <line x1="18" y1="6" x2="6" y2="18" />
            <line x1="6" y1="6" x2="18" y2="18" />
        </svg>
        `;
            closeButton.innerHTML = closeIconSvg;
            closeButton.addEventListener('click', function () {
                this.removeToast(toast);
            }.bind(this));

            toast.appendChild(closeButton);

            toast.addEventListener('mouseover', function () {
                this.handleMouseOver(toast);
            }.bind(this));

            toast.addEventListener('mouseout', function () {
                this.handleMouseOut(toast, duration);
            }.bind(this));

            this.toastContainer[options.position.split('-')[0] === 'top' ? 'prepend' : 'appendChild'](toast);

            this.handleMouseOut(toast, duration);

            return toast;
        };

        this.removeToast = function (toast) {
            toast.style.opacity = 0;
            setTimeout(function () {
                this.toastContainer.removeChild(toast);
            }.bind(this), 300);
        };

        this.handleMouseOver = function (toast) {
            clearTimeout(toast.timeoutId);
            clearInterval(toast.intervalId);
        };
        this.handleMouseOut = function (toast, duration) {
            let lastTimeCalled = new Date();
            toast.intervalId = setInterval(() => {
                var timeVisible = + new Date() - lastTimeCalled;
                toast.style.setProperty(
                    "--progress",
                    timeVisible / duration
                );
            }, 10);
            toast.timeoutId = setTimeout(function () {
                this.removeToast(toast);
            }.bind(this), duration);
        };
    }

    return {
        CreateMenu: CreateMenu,
        Tab: Tab,
        ToastManager: ToastManager,
        setLanguage: setLanguage
    };
})();