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

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