mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-26 04:55:12 +00:00
186 lines
4.9 KiB
JavaScript
186 lines
4.9 KiB
JavaScript
|
/*! loadJS: load a JS file asynchronously. [c]2014 @scottjehl, Filament Group, Inc. (Based on http://goo.gl/REQGQ by Paul Irish). Licensed MIT */
|
||
|
(function( w ){
|
||
|
var loadJS = function( src, cb, ordered ){
|
||
|
"use strict";
|
||
|
var tmp;
|
||
|
var ref = w.document.getElementsByTagName( "script" )[ 0 ];
|
||
|
var script = w.document.createElement( "script" );
|
||
|
|
||
|
if (typeof(cb) === 'boolean') {
|
||
|
tmp = ordered;
|
||
|
ordered = cb;
|
||
|
cb = tmp;
|
||
|
}
|
||
|
|
||
|
script.src = src;
|
||
|
script.async = !ordered;
|
||
|
ref.parentNode.insertBefore( script, ref );
|
||
|
|
||
|
if (cb && typeof(cb) === "function") {
|
||
|
script.onload = cb;
|
||
|
}
|
||
|
return script;
|
||
|
};
|
||
|
// commonjs
|
||
|
if( typeof module !== "undefined" ){
|
||
|
module.exports = loadJS;
|
||
|
}
|
||
|
else {
|
||
|
w.loadJS = loadJS;
|
||
|
}
|
||
|
}( typeof global !== "undefined" ? global : this ));
|
||
|
/*! end loadJS */
|
||
|
|
||
|
// Remaining portions of this file are
|
||
|
//
|
||
|
// Copyright (c) 2019 Baldur Karlsson
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
var searchengine = undefined;
|
||
|
|
||
|
// scroll to the first <a> linking to a chapter
|
||
|
function scrollChapter(element, chapter) {
|
||
|
for(var i=0; i < element.children.length; i++) {
|
||
|
if(element.children[i].nodeName == "A" && element.children[i].href.indexOf(chapter) >= 0) {
|
||
|
element.children[i].scrollIntoView(true);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
if(scrollChapter(element.children[i], chapter))
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var results = undefined;
|
||
|
var searchbox = undefined;
|
||
|
var searchTimeout = undefined;
|
||
|
|
||
|
function clearSearch() {
|
||
|
while(results.children.length > 0) {
|
||
|
results.removeChild(results.children[0]);
|
||
|
}
|
||
|
|
||
|
document.getElementById("resultsdiv").classList.remove("results");
|
||
|
}
|
||
|
|
||
|
function doSearch() {
|
||
|
clearSearch();
|
||
|
|
||
|
var searchtext = searchbox.value;
|
||
|
|
||
|
if(searchtext == '')
|
||
|
return;
|
||
|
|
||
|
if(searchtext.indexOf(' ') == -1 && searchtext.indexOf('\t') == -1 && searchtext.indexOf('"') == -1)
|
||
|
searchtext = searchtext + ' ' + searchtext + '*';
|
||
|
|
||
|
searchtext = searchtext.replace(/"/g, '')
|
||
|
|
||
|
var searchresults = searchengine.search(searchtext);
|
||
|
|
||
|
if(searchresults.length == 0) {
|
||
|
var r = document.createElement('LI');
|
||
|
r.innerHTML = 'No results';
|
||
|
|
||
|
results.appendChild(r);
|
||
|
}
|
||
|
|
||
|
document.getElementById("resultsdiv").classList.add("results");
|
||
|
|
||
|
for(var i=0; i < 10 && i < searchresults.length; i++) {
|
||
|
var a = document.createElement('A');
|
||
|
a.setAttribute('href', searchresults[i].ref);
|
||
|
a.innerHTML = searchlookup[searchresults[i].ref];
|
||
|
|
||
|
var r = document.createElement('LI');
|
||
|
r.appendChild(a);
|
||
|
|
||
|
results.appendChild(r);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function searchInput(e) {
|
||
|
if(searchTimeout !== undefined)
|
||
|
clearTimeout(searchTimeout);
|
||
|
|
||
|
searchTimeout = setTimeout(doSearch, 50);
|
||
|
}
|
||
|
|
||
|
function searchKeyDown(e) {
|
||
|
if(e.keyCode == 27) {
|
||
|
// escape
|
||
|
if(searchTimeout !== undefined)
|
||
|
clearTimeout(searchTimeout);
|
||
|
|
||
|
searchbox.value = '';
|
||
|
|
||
|
clearSearch();
|
||
|
} else if(e.keyCode == 10 || e.keyCode == 13) {
|
||
|
// enter/return
|
||
|
doSearch();
|
||
|
} else if(e.keyCode == 8) {
|
||
|
clearSearch();
|
||
|
|
||
|
searchInput(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
document.addEventListener("DOMContentLoaded", function(event) {
|
||
|
// get the chapter name from the current URL
|
||
|
var chap = window.location.pathname.replace(/.*\//, '');
|
||
|
|
||
|
var toc = document.getElementById("toc");
|
||
|
|
||
|
// Scroll the sidebar to the appropriate chapter
|
||
|
if(chap != "") {
|
||
|
scrollChapter(toc, chap);
|
||
|
toc.scrollTop -= 96;
|
||
|
}
|
||
|
|
||
|
// add anchor links
|
||
|
["h2","h3","h4","h5","h6"].forEach(function(hX) {
|
||
|
var headers = document.getElementsByTagName(hX);
|
||
|
|
||
|
for(var i=0; i < headers.length; i++) {
|
||
|
var header = headers[i];
|
||
|
if(header.id.length > 0) {
|
||
|
header.innerHTML += ' <a class="headerlink" href="#' + header.id + '\">\u00B6</a>';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var blocks = document.getElementsByClassName("listingblock")
|
||
|
|
||
|
for(var i=0; i < blocks.length; i++) {
|
||
|
if(blocks[i].id.length > 0) {
|
||
|
var a = document.createElement("A");
|
||
|
a.innerHTML = '\u00B6';
|
||
|
a.setAttribute('class', 'link');
|
||
|
a.setAttribute('href', '#' + blocks[i].id);
|
||
|
|
||
|
blocks[i].insertBefore(a, blocks[i].childNodes[0]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
results = document.getElementById('results');
|
||
|
searchbox = document.getElementById('searchbox');
|
||
|
|
||
|
loadJS("lunr.js", function() {
|
||
|
loadJS(searchindexurl, function() {
|
||
|
searchengine = lunr.Index.load(searchindex);
|
||
|
|
||
|
searchbox.value = '';
|
||
|
searchbox.disabled = false;
|
||
|
searchbox.addEventListener('keydown', searchKeyDown, false);
|
||
|
searchbox.addEventListener('input', searchInput, false);
|
||
|
}, true);
|
||
|
}, true);
|
||
|
});
|