123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- function getSearchTerm() {
- var sPageURL = window.location.search.substring(1);
- var sURLVariables = sPageURL.split('&');
- for (var i = 0; i < sURLVariables.length; i++) {
- var sParameterName = sURLVariables[i].split('=');
- if (sParameterName[0] == 'q') {
- return sParameterName[1];
- }
- }
- }
- function applyTopPadding() {
- // Update various absolute positions to match where the main container
- // starts. This is necessary for handling multi-line nav headers, since
- // that pushes the main container down.
- var offset = $('body > .container').offset();
- $('html').css('scroll-padding-top', offset.top + 'px');
- $('.bs-sidebar.affix').css('top', offset.top + 'px');
- }
- $(document).ready(function() {
- applyTopPadding();
- var search_term = getSearchTerm(),
- $search_modal = $('#mkdocs_search_modal'),
- $keyboard_modal = $('#mkdocs_keyboard_modal');
- if (search_term) {
- $search_modal.modal();
- }
- // make sure search input gets autofocus every time modal opens.
- $search_modal.on('shown.bs.modal', function() {
- $search_modal.find('#mkdocs-search-query').focus();
- });
- // Close search modal when result is selected
- // The links get added later so listen to parent
- $('#mkdocs-search-results').click(function(e) {
- if ($(e.target).is('a')) {
- $search_modal.modal('hide');
- }
- });
- // Populate keyboard modal with proper Keys
- $keyboard_modal.find('.help.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.help];
- $keyboard_modal.find('.prev.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.previous];
- $keyboard_modal.find('.next.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.next];
- $keyboard_modal.find('.search.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.search];
- // Keyboard navigation
- document.addEventListener("keydown", function(e) {
- if ($(e.target).is(':input')) return true;
- var key = e.which || e.keyCode || window.event && window.event.keyCode;
- var page;
- switch (key) {
- case shortcuts.next:
- page = $('.navbar a[rel="next"]:first').prop('href');
- break;
- case shortcuts.previous:
- page = $('.navbar a[rel="prev"]:first').prop('href');
- break;
- case shortcuts.search:
- e.preventDefault();
- $keyboard_modal.modal('hide');
- $search_modal.modal('show');
- $search_modal.find('#mkdocs-search-query').focus();
- break;
- case shortcuts.help:
- $search_modal.modal('hide');
- $keyboard_modal.modal('show');
- break;
- default: break;
- }
- if (page) {
- $keyboard_modal.modal('hide');
- window.location.href = page;
- }
- });
- $('table').addClass('table table-striped table-hover');
- // Improve the scrollspy behaviour when users click on a TOC item.
- $(".bs-sidenav a").on("click", function() {
- var clicked = this;
- setTimeout(function() {
- var active = $('.nav li.active a');
- active = active[active.length - 1];
- if (clicked !== active) {
- $(active).parent().removeClass("active");
- $(clicked).parent().addClass("active");
- }
- }, 50);
- });
- function showInnerDropdown(item) {
- var popup = $(item).next('.dropdown-menu');
- popup.addClass('show');
- $(item).addClass('open');
- // First, close any sibling dropdowns.
- var container = $(item).parent().parent();
- container.find('> .dropdown-submenu > a').each(function(i, el) {
- if (el !== item) {
- hideInnerDropdown(el);
- }
- });
- var popupMargin = 10;
- var maxBottom = $(window).height() - popupMargin;
- var bounds = item.getBoundingClientRect();
- popup.css('left', bounds.right + 'px');
- if (bounds.top + popup.height() > maxBottom &&
- bounds.top > $(window).height() / 2) {
- popup.css({
- 'top': (bounds.bottom - popup.height()) + 'px',
- 'max-height': (bounds.bottom - popupMargin) + 'px',
- });
- } else {
- popup.css({
- 'top': bounds.top + 'px',
- 'max-height': (maxBottom - bounds.top) + 'px',
- });
- }
- }
- function hideInnerDropdown(item) {
- var popup = $(item).next('.dropdown-menu');
- popup.removeClass('show');
- $(item).removeClass('open');
- popup.scrollTop(0);
- popup.find('.dropdown-menu').scrollTop(0).removeClass('show');
- popup.find('.dropdown-submenu > a').removeClass('open');
- }
- $('.dropdown-submenu > a').on('click', function(e) {
- if ($(this).next('.dropdown-menu').hasClass('show')) {
- hideInnerDropdown(this);
- } else {
- showInnerDropdown(this);
- }
- e.stopPropagation();
- e.preventDefault();
- });
- $('.dropdown-menu').parent().on('hide.bs.dropdown', function(e) {
- $(this).find('.dropdown-menu').scrollTop(0);
- $(this).find('.dropdown-submenu > a').removeClass('open');
- $(this).find('.dropdown-menu .dropdown-menu').removeClass('show');
- });
- });
- $(window).on('resize', applyTopPadding);
- $('body').scrollspy({
- target: '.bs-sidebar',
- offset: 100
- });
- /* Prevent disabled links from causing a page reload */
- $("li.disabled a").click(function() {
- event.preventDefault();
- });
- // See https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
- // We only list common keys below. Obscure keys are omitted and their use is discouraged.
- var keyCodes = {
- 8: 'backspace',
- 9: 'tab',
- 13: 'enter',
- 16: 'shift',
- 17: 'ctrl',
- 18: 'alt',
- 19: 'pause/break',
- 20: 'caps lock',
- 27: 'escape',
- 32: 'spacebar',
- 33: 'page up',
- 34: 'page down',
- 35: 'end',
- 36: 'home',
- 37: '←',
- 38: '↑',
- 39: '→',
- 40: '↓',
- 45: 'insert',
- 46: 'delete',
- 48: '0',
- 49: '1',
- 50: '2',
- 51: '3',
- 52: '4',
- 53: '5',
- 54: '6',
- 55: '7',
- 56: '8',
- 57: '9',
- 65: 'a',
- 66: 'b',
- 67: 'c',
- 68: 'd',
- 69: 'e',
- 70: 'f',
- 71: 'g',
- 72: 'h',
- 73: 'i',
- 74: 'j',
- 75: 'k',
- 76: 'l',
- 77: 'm',
- 78: 'n',
- 79: 'o',
- 80: 'p',
- 81: 'q',
- 82: 'r',
- 83: 's',
- 84: 't',
- 85: 'u',
- 86: 'v',
- 87: 'w',
- 88: 'x',
- 89: 'y',
- 90: 'z',
- 91: 'Left Windows Key / Left ⌘',
- 92: 'Right Windows Key',
- 93: 'Windows Menu / Right ⌘',
- 96: 'numpad 0',
- 97: 'numpad 1',
- 98: 'numpad 2',
- 99: 'numpad 3',
- 100: 'numpad 4',
- 101: 'numpad 5',
- 102: 'numpad 6',
- 103: 'numpad 7',
- 104: 'numpad 8',
- 105: 'numpad 9',
- 106: 'multiply',
- 107: 'add',
- 109: 'subtract',
- 110: 'decimal point',
- 111: 'divide',
- 112: 'f1',
- 113: 'f2',
- 114: 'f3',
- 115: 'f4',
- 116: 'f5',
- 117: 'f6',
- 118: 'f7',
- 119: 'f8',
- 120: 'f9',
- 121: 'f10',
- 122: 'f11',
- 123: 'f12',
- 124: 'f13',
- 125: 'f14',
- 126: 'f15',
- 127: 'f16',
- 128: 'f17',
- 129: 'f18',
- 130: 'f19',
- 131: 'f20',
- 132: 'f21',
- 133: 'f22',
- 134: 'f23',
- 135: 'f24',
- 144: 'num lock',
- 145: 'scroll lock',
- 186: ';',
- 187: '=',
- 188: ',',
- 189: '‐',
- 190: '.',
- 191: '?',
- 192: '`',
- 219: '[',
- 220: '\',
- 221: ']',
- 222: ''',
- };
|