]> BookStack Code Mirror - website/blob - themes/bookstack/static/js/script.js
Stared v0.25 blogpost
[website] / themes / bookstack / static / js / script.js
1
2 // Mobile menu
3
4 var menuButton = document.getElementById('menu-button');
5 var menuDropDown = document.querySelector('header div.inner');
6
7 menuButton.onclick = function(event) {
8     var menuClass = menuDropDown.className;
9     var visible = menuClass.indexOf('showing') !== -1;
10     if (visible) {
11         menuDropDown.className = menuClass.replace('showing', '');
12     } else {
13         menuDropDown.className += ' showing';
14     }
15     event.stopPropagation();
16 };
17
18 document.body.onclick = function(event) {
19     menuDropDown.className = menuDropDown.className.replace('showing', '');
20     event.stopPropagation();
21 };
22
23
24 // Handle video click to play
25 var videos = document.querySelectorAll('video');
26 for (var i = 0; i < videos.length; i++) {
27     videos[i].addEventListener('click', videoClick)
28 }
29
30 function videoClick() {
31     if (typeof InstallTrigger !== 'undefined') return;
32     this.paused ? this.play() : this.pause();
33 }
34
35
36 // Codemirror Setup
37
38 var modeMap = {
39   'language-html': 'htmlmixed',
40   'language-bash': 'shell',
41   'language-js': 'javascript',
42   'language-shell': 'bash',
43   'language-nginx': 'nginx',
44   'language-apache': 'apache'
45 };
46
47 var codeBlocks = document.querySelectorAll('pre');
48 for (var i = 0; i < codeBlocks.length; i++) {
49   var block = codeBlocks[i];
50   var codeElem = block.querySelector('code');
51   if (codeElem === null) continue;
52
53   var langClass = codeElem.className;
54   var mode = (typeof modeMap[langClass] !== 'undefined') ? modeMap[langClass] : 'htmlmixed';
55   var content = codeElem.textContent.trim();
56   CodeMirror(function(cmElem) {
57     block.parentNode.replaceChild(cmElem, block);
58   }, {
59     theme: 'base16-light',
60     lineNumbers: true,
61     mode: mode,
62     readOnly: true,
63     value: content
64   });
65 }