User:Fumple/vector.js: Difference between revisions

From Inkipedia, the Splatoon wiki
(Testing)
(Testing)
Line 11: Line 11:
     ].join("\n"));
     ].join("\n"));
     var fplEditorCheck = setInterval(function (){
     var fplEditorCheck = setInterval(function (){
         if($("#wpTextbox1").length != 0){
         if($("#wpTextbox1").length != 0 && typeof monaco != "undefined"){
             clearInterval(fplEditorCheck);
             clearInterval(fplEditorCheck);
             $("#wpTextbox1").after('<div id="vscodeeditor"></div>');
             $("#wpTextbox1").after('<div id="vscodeeditor"></div>');

Revision as of 16:01, 27 March 2021

if(["Scribunto", "javascript", "css"].includes(mw.config.get("wgPageContentModel")) && mw.config.get("wgAction") == "edit"){
    //Load editor (https://github.com/microsoft/monaco-editor/tree/main)
    $("head").append('<link rel="stylesheet" data-name="vs/editor/editor.main" href="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/editor/editor.main.css" />');
    $("body").append([
        '<script>',
        '    var require = { paths: { vs: "https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs" } };',
        '</script>',
        '<script src="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/loader.js"></script>',
        '<script src="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/editor/editor.main.nls.js"></script>',
        '<script src="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/editor/editor.main.js"></script>'
    ].join("\n"));
    var fplEditorCheck = setInterval(function (){
        if($("#wpTextbox1").length != 0 && typeof monaco != "undefined"){
            clearInterval(fplEditorCheck);
            $("#wpTextbox1").after('<div id="vscodeeditor"></div>');
            $("#wpTextbox1").css("display", "none");
            $("#wpTextbox1").attr("readonly",true);
            $("#vscodeeditor").css("height", "500px");
            new mw.Api().get({
                "action": "query",
                "format": "json",
                "list": "gadgets",
                "gaprop": "id",
                "gaenabledonly": 1
            }).then(function(data){
                window.fplEditor = monaco.editor.create(document.getElementById('vscodeeditor'), {
                    value: $("#wpTextbox1").val(),
                    language: {"Scribunto":"lua", "javascript":"javascript", "css":"css"}[mw.config.get("wgPageContentModel")],
                    theme: data.query.gadgets.map(function(el){return el.id}).includes("darkmode") ? "vs-dark" : "vs"
                });
            }).catch(function(ex){
                alert("An error occurred, check the console for more details");
                console.error(ex);
                $("#wpTextbox1").css("display", "");
                $("#wpTextbox1").attr("readonly",null);
                $("#vscodeeditor").remove();
            })
        }
    }, 100)
}