org-theme/js/script.js

171 lines
6.0 KiB
JavaScript

// var $ = require('jquery');
// window.$ = $;
// require('bootstrap');
//
// Blocks
docReady(function() {
var boxesNames = {
"seealso": "See also",
"definition": "Definition",
"exampl": "Example",
"exercice": "Exercice",
"question": "Question",
"summary": "Summary",
"answer": "Answer",
"hint": "Hint",
"important": "Important",
"caution": "Caution",
"warning": "Warning"
}
for (var className in boxesNames) {
let boxes = document.querySelectorAll('div.' + className)
for (let box of boxes) {
let boxTitle = document.createElement('p')
boxTitle.className = "admonition-title " + className
boxTitle.textContent = boxesNames[className]
box.parentNode.insertBefore(boxTitle, box);
}
}
});
// Copy Source Block
docReady(function() {
let srcContainers = document.querySelectorAll('pre.src')
for (let srcContrainer of srcContainers) {
let boxCopy = document.createElement('div')
boxCopy.className = "src-copy"
boxCopy.textContent = "Copy"
boxCopy.onclick = function() {
// Create a clone the node to not affect the original one
let nodeClone = this.parentNode.cloneNode(true)
// Remove Line Numbers and Copy Button
let linenumNodes = nodeClone.querySelectorAll('.linenr,.src-copy')
for (var i = linenumNodes.length - 1 ; i >= 0 ; --i) {
nodeClone.removeChild(linenumNodes[i])
}
// Copy the filetered content to the clipboard
let srcText = nodeClone.textContent
navigator.clipboard.writeText(srcText).then(function() {
boxCopy.textContent = "Copied"
boxCopy.classList.add("src-copied")
setTimeout(function() {
boxCopy.textContent = "Copy"
boxCopy.classList.remove("src-copied")
}, 2000);
});
}
srcContrainer.prepend(boxCopy);
}
});
// Equivalent of Jquery $.ready
function docReady(fn) {
// see if DOM is already available
if (document.readyState === "complete" || document.readyState === "interactive") {
// call on next available tick
setTimeout(fn, 1);
} else {
document.addEventListener("DOMContentLoaded", fn);
}
}
// function collapse_toc_elements_on_click (nav_li_a){
// /*
// When an `a' element in the TOC is clicked, its parent
// `li' element's active attribute is toggled. This causes
// the element to toggle between minimized and maximized
// states. The active attribute is documented in bootstrap.
// https://getbootstrap.com/docs/4.0/components/navbar/#nav
// */
// $(nav_li_a).parent().toggleClass("active");
// }
// $( document ).ready(function() {
// // When the document is loaded and ready, bind the
// // function `collapse_toc_elements_on_click' to the
// // `a' elements in the table of contents.
// $("#text-table-of-contents a").click(function() {
// collapse_toc_elements_on_click(this);
// });
// });
// $( document ).ready(function() {
// // Shift nav in mobile when clicking the menu.
// $(document).on('click', "[data-toggle='wy-nav-top']", function() {
// $("[data-toggle='wy-nav-shift']").toggleClass("shift");
// $("[data-toggle='rst-versions']").toggleClass("shift");
// });
// // Close menu when you click a link.
// $(document).on('click', ".wy-menu-vertical .current ul li a", function() {
// $("[data-toggle='wy-nav-shift']").removeClass("shift");
// $("[data-toggle='rst-versions']").toggleClass("shift");
// });
// $(document).on('click', "[data-toggle='rst-current-version']", function() {
// $("[data-toggle='rst-versions']").toggleClass("shift-up");
// });
// // Make tables responsive
// $("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
// });
// $( document ).ready(function() {
// $('#text-table-of-contents ul').first().addClass('nav');
// // ScrollSpy also requires that we use
// // a Bootstrap nav component.
// $('body').scrollspy({target: '#text-table-of-contents'});
// // DON'T add sticky table headers (Fix issue #69?)
// // $('table').stickyTableHeaders();
// // set the height of tableOfContents
// var $postamble = $('#postamble');
// var $tableOfContents = $('#table-of-contents');
// $tableOfContents.css({paddingBottom: $postamble.outerHeight()});
// // add TOC button
// var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
// $('#content').prepend(toggleSidebar);
// // add close button when sidebar showed in mobile screen
// var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
// var tocTitle = $('#table-of-contents').find('h2');
// tocTitle.append(closeBtn);
// });
// window.SphinxRtdTheme = (function (jquery) {
// var stickyNav = (function () {
// var navBar,
// win,
// stickyNavCssClass = 'stickynav',
// applyStickNav = function () {
// if (navBar.height() <= win.height()) {
// navBar.addClass(stickyNavCssClass);
// } else {
// navBar.removeClass(stickyNavCssClass);
// }
// },
// enable = function () {
// applyStickNav();
// win.on('resize', applyStickNav);
// },
// init = function () {
// navBar = jquery('nav.wy-nav-side:first');
// win = jquery(window);
// };
// jquery(init);
// return {
// enable : enable
// };
// }());
// return {
// StickyNav : stickyNav
// };
// }($));