Static mdbook::theme::JS [] [src]

pub static JS: &'static [u8] = b"$( document ).ready(function() {\n\n    // url\n    var url = window.location.pathname;\n\n    // Fix back button cache problem\n    window.onunload = function(){};\n\n    // Set theme\n    var theme = localStorage.getItem(\'theme\');\n    if (theme === null) { theme = \'light\'; }\n\n    set_theme(theme);\n\n\n    // Syntax highlighting Configuration\n    hljs.configure({\n        tabReplace: \'    \', // 4 spaces\n        languages: [],      // Languages used for auto-detection\n    });\n\n    $(\'code\').each(function(i, block) {\n        hljs.highlightBlock(block);\n    });\n    \n    // Adding the hljs class gives code blocks the color css\n    // even if highlighting doesn\'t apply\n    $(\'code\').addClass(\'hljs\');\n\n    var KEY_CODES = {\n        PREVIOUS_KEY: 37,\n        NEXT_KEY: 39\n    };\n\n    $(document).on(\'keydown\', function (e) {\n        if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; }\n        switch (e.keyCode) {\n            case KEY_CODES.NEXT_KEY:\n                e.preventDefault();\n                if($(\'.nav-chapters.next\').length) {\n                    window.location.href = $(\'.nav-chapters.next\').attr(\'href\');\n                }\n                break;\n            case KEY_CODES.PREVIOUS_KEY:\n                e.preventDefault();\n                if($(\'.nav-chapters.previous\').length) {\n                    window.location.href = $(\'.nav-chapters.previous\').attr(\'href\');\n                }\n                break;\n        }\n    });\n\n    // Interesting DOM Elements\n    var html = $(\"html\");\n    var sidebar = $(\"#sidebar\");\n    var page_wrapper = $(\"#page-wrapper\");\n    var content = $(\"#content\");\n\n    // Toggle sidebar\n    $(\"#sidebar-toggle\").click(function(event){\n        if ( html.hasClass(\"sidebar-hidden\") ) {\n            html.removeClass(\"sidebar-hidden\").addClass(\"sidebar-visible\");\n            localStorage.setItem(\'sidebar\', \'visible\');\n        } else if ( html.hasClass(\"sidebar-visible\") ) {\n            html.removeClass(\"sidebar-visible\").addClass(\"sidebar-hidden\");\n            localStorage.setItem(\'sidebar\', \'hidden\');\n        } else {\n            if(sidebar.position().left === 0){\n                html.addClass(\"sidebar-hidden\");\n                localStorage.setItem(\'sidebar\', \'hidden\');\n            } else {\n                html.addClass(\"sidebar-visible\");\n                localStorage.setItem(\'sidebar\', \'visible\');\n            }\n        }\n    });\n\n\n    // Scroll sidebar to current active section\n    var activeSection = sidebar.find(\".active\");\n    if(activeSection.length) {\n        sidebar.scrollTop(activeSection.offset().top);\n    }\n\n\n    // Print button\n    $(\"#print-button\").click(function(){\n        var printWindow = window.open(\"print.html\");\n    });\n\n    if( url.substring(url.lastIndexOf(\'/\')+1) == \"print.html\" ) {\n        window.print();\n    }\n\n\n    // Theme button\n    $(\"#theme-toggle\").click(function(){\n        if($(\'.theme-popup\').length) {\n            $(\'.theme-popup\').remove();\n        } else {\n            var popup = $(\'<div class=\"theme-popup\"></div>\')\n                .append($(\'<div class=\"theme\" id=\"light\">Light <span class=\"default\">(default)</span><div>\'))\n                .append($(\'<div class=\"theme\" id=\"rust\">Rust</div>\'))\n                .append($(\'<div class=\"theme\" id=\"coal\">Coal</div>\'))\n                .append($(\'<div class=\"theme\" id=\"navy\">Navy</div>\'));\n\n\n            popup.insertAfter(this);\n\n            $(\'.theme\').click(function(){\n                var theme = $(this).attr(\'id\');\n\n                set_theme(theme);\n            });\n        }\n\n    });\n\n    function set_theme(theme) {\n        if (theme == \'coal\' || theme == \'navy\') {\n            $(\"[href=\'tomorrow-night.css\']\").prop(\'disabled\', false);\n            $(\"[href=\'highlight.css\']\").prop(\'disabled\', true);\n        } else {\n            $(\"[href=\'tomorrow-night.css\']\").prop(\'disabled\', true);\n            $(\"[href=\'highlight.css\']\").prop(\'disabled\', false);\n        }\n\n        localStorage.setItem(\'theme\', theme);\n\n        $(\'body\').removeClass().addClass(theme);\n    }\n\n\n    // Hide Rust code lines prepended with a specific character\n    var hiding_character = \"#\";\n\n    $(\"code.language-rust\").each(function(i, block){\n\n        var code_block = $(this);\n        var pre_block = $(this).parent();\n        // hide lines\n        var lines = code_block.html().split(\"\\n\");\n        var first_non_hidden_line = false;\n        var lines_hidden = false;\n\n        for(var n = 0; n < lines.length; n++){\n            if($.trim(lines[n])[0] == hiding_character){\n                if(first_non_hidden_line){\n                    lines[n] = \"<span class=\\\"hidden\\\">\" + \"\\n\" + lines[n].replace(/(\\s*)# ?/, \"$1\") + \"</span>\";\n                }\n                else {\n                    lines[n] = \"<span class=\\\"hidden\\\">\" + lines[n].replace(/(\\s*)# ?/, \"$1\") + \"\\n\"  +  \"</span>\";\n                }\n                lines_hidden = true;\n            }\n            else if(first_non_hidden_line) {\n                lines[n] = \"\\n\" + lines[n];\n            }\n            else {\n                first_non_hidden_line = true;\n            }\n        }\n        code_block.html(lines.join(\"\"));\n\n        // If no lines were hidden, return\n        if(!lines_hidden) { return; }\n\n        // add expand button\n        pre_block.prepend(\"<div class=\\\"buttons\\\"><i class=\\\"fa fa-expand\\\"></i></div>\");\n\n        pre_block.find(\"i\").click(function(e){\n            if( $(this).hasClass(\"fa-expand\") ) {\n                $(this).removeClass(\"fa-expand\").addClass(\"fa-compress\");\n                pre_block.find(\"span.hidden\").removeClass(\"hidden\").addClass(\"unhidden\");\n            }\n            else {\n                $(this).removeClass(\"fa-compress\").addClass(\"fa-expand\");\n                pre_block.find(\"span.unhidden\").removeClass(\"unhidden\").addClass(\"hidden\");\n            }\n        });\n    });\n\n\n    // Process playpen code blocks\n    $(\".playpen\").each(function(block){\n        var pre_block = $(this);\n        // Add play button\n        var buttons = pre_block.find(\".buttons\");\n        if( buttons.length === 0 ) {\n            pre_block.prepend(\"<div class=\\\"buttons\\\"></div>\");\n            buttons = pre_block.find(\".buttons\");\n        }\n        buttons.prepend(\"<i class=\\\"fa fa-play play-button\\\"></i>\");\n\n        buttons.find(\".play-button\").click(function(e){\n            run_rust_code(pre_block);\n        });\n    });\n\n\n});\n\n\nfunction run_rust_code(code_block) {\n    var result_block = code_block.find(\".result\");\n    if(result_block.length === 0) {\n        code_block.append(\"<code class=\\\"result hljs language-bash\\\"></code>\");\n        result_block = code_block.find(\".result\");\n    }\n\n    let text = code_block.find(\".language-rust\").text();\n\n    let params = {\n        version: \"stable\",\n        optimize: \"0\",\n        code: text,\n    };\n\n    if(text.includes(\"#![feature\")) {\n        params.version = \"nightly\";\n    }\n\n    result_block.text(\"Running...\");\n\n    $.ajax({\n        url: \"https://play.rust-lang.org/evaluate.json\",\n        method: \"POST\",\n        crossDomain: true,\n        dataType: \"json\",\n        contentType: \"application/json\",\n        data: JSON.stringify(params),\n        success: function(response){\n            result_block.text(response.result);\n        }\n    });\n}\n"