Minitoon editor+

Adds some features to the editor.

// ==UserScript==
// @name         Minitoon editor+
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  Adds some features to the editor.
// @author       discord: #ineonz minitoon: @WildNeonz
// @match        https://minitoon.me/draw/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=minitoon.me
// @grant        none
// @run-at       document-start
// ==/UserScript==
//window.editor._$4l
let started = false;

const start = () => {
    started = true;
    function createButton() {
        let button = document.querySelector("body > div.default-main > div.minidraw-editor-c > div.mteditor-bottom-c > div.mteditor-pages-c4 > div.mteditor-pages-c2 > div.simplebar-wrapper > div.simplebar-mask > div > div > div > div > div > div.mteditor-pageoptions-c > div.mteditor-pageoption-c.mteditor-pageoption-deletepage").cloneNode(true);
        document.querySelector("body > div.default-main > div.minidraw-editor-c > div.mteditor-bottom-c > div.mteditor-pages-c4 > div.mteditor-pages-c2 > div.simplebar-wrapper > div.simplebar-mask > div > div > div > div > div > div.mteditor-pageoptions-c").appendChild(button);

        return button;
    }
    let switchFile = createButton();
    let clonePage = createButton();
    let postGif = createButton();
    postGif.textContent = 'Post Gif '
    switchFile.textContent = 'Upload Image (override page)';
    clonePage.textContent = 'Clone Page';

    postGif.onclick = () => {
        let inp = askFile();
        inp.onchange = (e) => {
            let a = e.target.files[0];

            let imageReader = new FileReader();
            console.log2("haha");
            imageReader.onload = () => {
                let result = imageReader.result;
                var a = window.editor._$x();
                a.ps.img0 = result;
                console.log2(a);

                window._$57("Uploading minitoon...", 30000);
                window._$1C._$8G("/ajax/publish.php", a, function(a) {
                  window._$57("Successfully published!", 4000);
                });
            }
            imageReader.readAsDataURL(a);
        }
    }

    let lastPage;
    setInterval(() => {
        let addPage = document.querySelector("body > div.default-main > div.minidraw-editor-c > div.mteditor-bottom-c > div.mteditor-pages-c4 > div.mteditor-pages-c2 > div.simplebar-wrapper > div.simplebar-mask > div > div > div > div > div > div.mteditor-previews-c2 > div > div.mteditor-preview.mteditor-previews-newpage");
        if (addPage && !addPage.inj) {
            if (lastPage) {
                lastPage.remove();
            }
            let addPage2 = addPage.cloneNode(true);
            addPage2.inj = true;
            addPage.parentNode.replaceChild(addPage2, addPage);
            addPage2.onclick = () => {
                addPage2.remove();
                var a = window.editor._$8C();
                a._$8O();
                window.editor._$1X(window.editor._$20.length - 1);
            }
            lastPage = addPage2;
        }
    },10);

    clonePage.onclick = () => {
        let page = window.editor._$4l;
        let orig = window.editor._$20[page];
        let clone = Object.assign(Object.create(Object.getPrototypeOf(orig)), orig);
        let orig2 = window.editor._$2x[page];
        let clone2 = Object.assign(Object.create(Object.getPrototypeOf(orig2)), orig2);

        window.editor._$20.push(clone);
        window.editor._$2x.push(clone2);
        window.editor._$1X(window.editor._$20.length - 1);
        let file = getFile();
        loadFile(file);
        setTimeout(() => {
            window.editor._$1X(window.editor._$20.length - 1);
        },200);
    }

    function askFile() {
        let input = document.createElement('input');
        input.type = 'file';
        input.click();
        return input;
    }

    function buildData(a) {
        var g = window.editor._$20[a];
        var c = g._$2Q(a);
        return c.data;
    }

    function loadFile(a) {
        let editor = window.editor;
        try {
            editor._$3U(a, function() {
                editor._$7r(true);
                editor._$9o();
                editor._$8D.value = "";
                editor.draftkey = -1;
                window.history.replaceState({}, "", "/draw");
            })
        } catch (c) {
            window._$57("Failed to load the draft: Invalid Draft File!", 6000);
        }
    }

    switchFile.onclick = () => {
        let input = askFile();
        input.onchange = (e) => {
            let a = e.target.files[0];

            let imageReader = new FileReader();
            imageReader.onload = () => {
                let img = new Image();
                img.src = imageReader.result;
                img.onload = () => {
                    let image = imageReader.result.split('base64,')[1];

                    let page = window.editor._$4l;
                    let data = buildData(page);
                    console.log2(data);
                    let mainlayer = data.layers[1].k;
                    let filename = page+'-'+mainlayer+'.png'
                    window.editor._$20[page].w = img.width;
                    window.editor._$20[page].h = img.height;
                    window.editor._$20[page].width = img.width;
                    window.editor._$20[page].height = img.height;
                    let file = getFile();
                    file.file(filename,image,{
                        "base64": true
                    })
                    loadFile(file);
                    setTimeout(() => {
                        window.editor._$1X(page);
                    },200);
                }
            }
            imageReader.readAsDataURL(a)
        }
    }

    function getFile() {
        let editor = window.editor;

        let a = editor._$1T();
        console.log2(a);
        return a;
    }

    function downloadFile(a) {
        a.generateAsync({
            type: "blob"
        }).then(function(c) {
            let a = new Date();
            let d = a.getDate() + "-" + (a.getMonth() + 1) + "-" + a.getFullYear() + "_" + a.getHours() + "-" + a.getMinutes();
            let e = editor.title._$4P().replace(/\s/g, '');
            let b = e + "-" + d + ".zip";
            window.saveAs(c, b);
        }
                .bind(editor), function(a) {
            window._$57("Cannot generate source files.", 3000);
        });
        return 0;
    }
}
let tisdi

tisdi = setInterval(() => {
    try {
        start();
        clearInterval(tisdi);
    }catch (err){

    }
},500);