Convert docdock theme from submodule to native files and fix Hugo compatibility
This commit is contained in:
223
themes/docdock/static/js/auto-complete.js
Normal file
223
themes/docdock/static/js/auto-complete.js
Normal file
@@ -0,0 +1,223 @@
|
||||
/*
|
||||
JavaScript autoComplete v1.0.4
|
||||
Copyright (c) 2014 Simon Steinberger / Pixabay
|
||||
GitHub: https://github.com/Pixabay/JavaScript-autoComplete
|
||||
License: http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
var autoComplete = (function(){
|
||||
// "use strict";
|
||||
function autoComplete(options){
|
||||
if (!document.querySelector) return;
|
||||
|
||||
// helpers
|
||||
function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\b'+ className+'\\b').test(el.className); }
|
||||
|
||||
function addEvent(el, type, handler){
|
||||
if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);
|
||||
}
|
||||
function removeEvent(el, type, handler){
|
||||
// if (el.removeEventListener) not working in IE11
|
||||
if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);
|
||||
}
|
||||
function live(elClass, event, cb, context){
|
||||
addEvent(context || document, event, function(e){
|
||||
var found, el = e.target || e.srcElement;
|
||||
while (el && !(found = hasClass(el, elClass))) el = el.parentElement;
|
||||
if (found) cb.call(el, e);
|
||||
});
|
||||
}
|
||||
|
||||
var o = {
|
||||
selector: 0,
|
||||
source: 0,
|
||||
minChars: 3,
|
||||
delay: 150,
|
||||
offsetLeft: 0,
|
||||
offsetTop: 1,
|
||||
cache: 1,
|
||||
menuClass: '',
|
||||
renderItem: function (item, search){
|
||||
// escape special characters
|
||||
search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||
var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
|
||||
return '<div class="autocomplete-suggestion" data-val="' + item + '">' + item.replace(re, "<b>$1</b>") + '</div>';
|
||||
},
|
||||
onSelect: function(e, term, item){}
|
||||
};
|
||||
for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }
|
||||
|
||||
// init
|
||||
var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);
|
||||
for (var i=0; i<elems.length; i++) {
|
||||
var that = elems[i];
|
||||
|
||||
// create suggestions container "sc"
|
||||
that.sc = document.createElement('div');
|
||||
that.sc.className = 'autocomplete-suggestions '+o.menuClass;
|
||||
|
||||
that.autocompleteAttr = that.getAttribute('autocomplete');
|
||||
that.setAttribute('autocomplete', 'off');
|
||||
that.cache = {};
|
||||
that.last_val = '';
|
||||
|
||||
that.updateSC = function(resize, next){
|
||||
var rect = that.getBoundingClientRect();
|
||||
that.sc.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + o.offsetLeft) + 'px';
|
||||
that.sc.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + o.offsetTop) + 'px';
|
||||
that.sc.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth
|
||||
if (!resize) {
|
||||
that.sc.style.display = 'block';
|
||||
if (!that.sc.maxHeight) { that.sc.maxHeight = parseInt((window.getComputedStyle ? getComputedStyle(that.sc, null) : that.sc.currentStyle).maxHeight); }
|
||||
if (!that.sc.suggestionHeight) that.sc.suggestionHeight = that.sc.querySelector('.autocomplete-suggestion').offsetHeight;
|
||||
if (that.sc.suggestionHeight)
|
||||
if (!next) that.sc.scrollTop = 0;
|
||||
else {
|
||||
var scrTop = that.sc.scrollTop, selTop = next.getBoundingClientRect().top - that.sc.getBoundingClientRect().top;
|
||||
if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0)
|
||||
that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;
|
||||
else if (selTop < 0)
|
||||
that.sc.scrollTop = selTop + scrTop;
|
||||
}
|
||||
}
|
||||
}
|
||||
addEvent(window, 'resize', that.updateSC);
|
||||
document.body.appendChild(that.sc);
|
||||
|
||||
live('autocomplete-suggestion', 'mouseleave', function(e){
|
||||
var sel = that.sc.querySelector('.autocomplete-suggestion.selected');
|
||||
if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);
|
||||
}, that.sc);
|
||||
|
||||
live('autocomplete-suggestion', 'mouseover', function(e){
|
||||
var sel = that.sc.querySelector('.autocomplete-suggestion.selected');
|
||||
if (sel) sel.className = sel.className.replace('selected', '');
|
||||
this.className += ' selected';
|
||||
}, that.sc);
|
||||
|
||||
live('autocomplete-suggestion', 'mousedown', function(e){
|
||||
if (hasClass(this, 'autocomplete-suggestion')) { // else outside click
|
||||
var v = this.getAttribute('data-val');
|
||||
that.value = v;
|
||||
o.onSelect(e, v, this);
|
||||
that.sc.style.display = 'none';
|
||||
}
|
||||
}, that.sc);
|
||||
|
||||
that.blurHandler = function(){
|
||||
try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }
|
||||
if (!over_sb) {
|
||||
that.last_val = that.value;
|
||||
that.sc.style.display = 'none';
|
||||
setTimeout(function(){ that.sc.style.display = 'none'; }, 350); // hide suggestions on fast input
|
||||
} else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);
|
||||
};
|
||||
addEvent(that, 'blur', that.blurHandler);
|
||||
|
||||
var suggest = function(data){
|
||||
var val = that.value;
|
||||
that.cache[val] = data;
|
||||
if (data.length && val.length >= o.minChars) {
|
||||
var s = '';
|
||||
for (var i=0;i<data.length;i++) s += o.renderItem(data[i], val);
|
||||
that.sc.innerHTML = s;
|
||||
that.updateSC(0);
|
||||
}
|
||||
else
|
||||
that.sc.style.display = 'none';
|
||||
}
|
||||
|
||||
that.keydownHandler = function(e){
|
||||
var key = window.event ? e.keyCode : e.which;
|
||||
// down (40), up (38)
|
||||
if ((key == 40 || key == 38) && that.sc.innerHTML) {
|
||||
var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');
|
||||
if (!sel) {
|
||||
next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last
|
||||
next.className += ' selected';
|
||||
console.log(next);
|
||||
that.value = next.getAttribute('data-val');
|
||||
} else {
|
||||
next = (key == 40) ? sel.nextSibling : sel.previousSibling;
|
||||
if (next) {
|
||||
sel.className = sel.className.replace('selected', '');
|
||||
next.className += ' selected';
|
||||
that.value = next.getAttribute('data-val');
|
||||
}
|
||||
else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }
|
||||
}
|
||||
that.updateSC(0, next);
|
||||
return false;
|
||||
}
|
||||
// esc
|
||||
else if (key == 27) { that.value = that.last_val; that.sc.style.display = 'none'; }
|
||||
// enter
|
||||
else if (key == 13 || key == 9) {
|
||||
var sel = that.sc.querySelector('.autocomplete-suggestion.selected');
|
||||
if (sel && that.sc.style.display != 'none') { o.onSelect(e, sel.getAttribute('data-val'), sel); setTimeout(function(){ that.sc.style.display = 'none'; }, 20); }
|
||||
}
|
||||
};
|
||||
addEvent(that, 'keydown', that.keydownHandler);
|
||||
|
||||
that.keyupHandler = function(e){
|
||||
var key = window.event ? e.keyCode : e.which;
|
||||
if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {
|
||||
var val = that.value;
|
||||
if (val.length >= o.minChars) {
|
||||
if (val != that.last_val) {
|
||||
that.last_val = val;
|
||||
clearTimeout(that.timer);
|
||||
if (o.cache) {
|
||||
if (val in that.cache) { suggest(that.cache[val]); return; }
|
||||
// no requests if previous suggestions were empty
|
||||
for (var i=1; i<val.length-o.minChars; i++) {
|
||||
var part = val.slice(0, val.length-i);
|
||||
if (part in that.cache && !that.cache[part].length) { suggest([]); return; }
|
||||
}
|
||||
}
|
||||
that.timer = setTimeout(function(){ o.source(val, suggest) }, o.delay);
|
||||
}
|
||||
} else {
|
||||
that.last_val = val;
|
||||
that.sc.style.display = 'none';
|
||||
}
|
||||
}
|
||||
};
|
||||
addEvent(that, 'keyup', that.keyupHandler);
|
||||
|
||||
that.focusHandler = function(e){
|
||||
that.last_val = '\n';
|
||||
that.keyupHandler(e)
|
||||
};
|
||||
if (!o.minChars) addEvent(that, 'focus', that.focusHandler);
|
||||
}
|
||||
|
||||
// public destroy method
|
||||
this.destroy = function(){
|
||||
for (var i=0; i<elems.length; i++) {
|
||||
var that = elems[i];
|
||||
removeEvent(window, 'resize', that.updateSC);
|
||||
removeEvent(that, 'blur', that.blurHandler);
|
||||
removeEvent(that, 'focus', that.focusHandler);
|
||||
removeEvent(that, 'keydown', that.keydownHandler);
|
||||
removeEvent(that, 'keyup', that.keyupHandler);
|
||||
if (that.autocompleteAttr)
|
||||
that.setAttribute('autocomplete', that.autocompleteAttr);
|
||||
else
|
||||
that.removeAttribute('autocomplete');
|
||||
document.body.removeChild(that.sc);
|
||||
that = null;
|
||||
}
|
||||
};
|
||||
}
|
||||
return autoComplete;
|
||||
})();
|
||||
|
||||
(function(){
|
||||
if (typeof define === 'function' && define.amd)
|
||||
define('autoComplete', function () { return autoComplete; });
|
||||
else if (typeof module !== 'undefined' && module.exports)
|
||||
module.exports = autoComplete;
|
||||
else
|
||||
window.autoComplete = autoComplete;
|
||||
})();
|
||||
7
themes/docdock/static/js/clipboard.min.js
vendored
Normal file
7
themes/docdock/static/js/clipboard.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
312
themes/docdock/static/js/docdock.js
Normal file
312
themes/docdock/static/js/docdock.js
Normal file
@@ -0,0 +1,312 @@
|
||||
// Get Parameters from some url
|
||||
var getUrlParameter = function getUrlParameter(sPageURL) {
|
||||
var url = sPageURL.split('?');
|
||||
var obj = {};
|
||||
if (url.length == 2) {
|
||||
var sURLVariables = url[1].split('&'),
|
||||
sParameterName,
|
||||
i;
|
||||
for (i = 0; i < sURLVariables.length; i++) {
|
||||
sParameterName = sURLVariables[i].split('=');
|
||||
obj[sParameterName[0]] = sParameterName[1];
|
||||
}
|
||||
return obj;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
jQuery(document).ready(function () {
|
||||
|
||||
// Execute actions on images generated from Markdown pages
|
||||
var images = $("article img").not(".inline");
|
||||
// Wrap image inside a featherlight (to get a full size view in a popup)
|
||||
images.wrap(function () {
|
||||
var image = $(this);
|
||||
if (!image.parent("a").length) {
|
||||
return "<a href='" + image[0].src + "' data-featherlight='image'></a>";
|
||||
}
|
||||
});
|
||||
|
||||
// Change styles, depending on parameters set to the image
|
||||
images.each(function (index) {
|
||||
var image = $(this);
|
||||
var o = getUrlParameter(image[0].src);
|
||||
if (typeof o !== "undefined") {
|
||||
var h = o["height"];
|
||||
var w = o["width"];
|
||||
var c = o["classes"];
|
||||
image.css({
|
||||
width: function () {
|
||||
if (typeof w !== "undefined") {
|
||||
return w;
|
||||
}
|
||||
},
|
||||
height: function () {
|
||||
if (typeof h !== "undefined") {
|
||||
return h;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (typeof c !== "undefined") {
|
||||
var classes = c.split(',');
|
||||
$.each(classes, function(i) {
|
||||
image.addClass(classes[i]);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Add link button for every
|
||||
var text, clip = new Clipboard('.anchor');
|
||||
$("h1~h2,h1~h3,h1~h4,h1~h5,h1~h6").append(function (index, html) {
|
||||
var element = $(this);
|
||||
var url = document.location.origin + document.location.pathname;
|
||||
var link = url + "#" + element[0].id;
|
||||
return " <span class='anchor' data-clipboard-text='" + link + "'>" +
|
||||
"<i class='fa fa-link fa-lg'></i>" +
|
||||
"</span>";
|
||||
});
|
||||
|
||||
$(".anchor").on('mouseleave', function (e) {
|
||||
$(this).attr('aria-label', null).removeClass('tooltipped tooltipped-s tooltipped-w');
|
||||
});
|
||||
|
||||
clip.on('success', function (e) {
|
||||
e.clearSelection();
|
||||
$(e.trigger).attr('aria-label', 'Link copied to clipboard!').addClass('tooltipped tooltipped-s');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
function fallbackMessage(action) {
|
||||
var actionMsg = '';
|
||||
var actionKey = (action === 'cut' ? 'X' : 'C');
|
||||
|
||||
if (/iPhone|iPad/i.test(navigator.userAgent)) {
|
||||
actionMsg = 'No support :(';
|
||||
}
|
||||
else if (/Mac/i.test(navigator.userAgent)) {
|
||||
actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;
|
||||
}
|
||||
else {
|
||||
actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;
|
||||
}
|
||||
|
||||
return actionMsg;
|
||||
}
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
|
||||
baseurl = baseurl.endsWith('/')?baseurl:baseurl+'/';
|
||||
|
||||
jQuery('#sidebar .category-icon').on('click', function() {
|
||||
$( this ).toggleClass("fa-angle-down fa-angle-right") ;
|
||||
$( this ).parent().parent().children('ul').toggle() ;
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
jQuery('[data-clear-history-toggle]').on('click', function() {
|
||||
sessionStorage.clear();
|
||||
location.reload();
|
||||
return false;
|
||||
});
|
||||
|
||||
var ajax;
|
||||
jQuery('[data-search-input]').on('input', function() {
|
||||
var input = jQuery(this),
|
||||
value = input.val(),
|
||||
items = jQuery('[data-nav-id]');
|
||||
items.removeClass('search-match');
|
||||
if (!value.length) {
|
||||
$('ul.topics').removeClass('searched');
|
||||
items.css('display', 'block');
|
||||
sessionStorage.removeItem('search-value');
|
||||
$(".highlightable").unhighlight({ element: 'mark' })
|
||||
return;
|
||||
}
|
||||
|
||||
sessionStorage.setItem('search-value', value);
|
||||
$(".highlightable").unhighlight({ element: 'mark' }).highlight(value, { element: 'mark' });
|
||||
|
||||
if (ajax && ajax.abort) ajax.abort();
|
||||
|
||||
jQuery('[data-search-clear]').on('click', function() {
|
||||
jQuery('[data-search-input]').val('').trigger('input');
|
||||
sessionStorage.removeItem('search-input');
|
||||
$(".highlightable").unhighlight({ element: 'mark' })
|
||||
});
|
||||
});
|
||||
|
||||
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
|
||||
return function( elem ) {
|
||||
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
|
||||
};
|
||||
});
|
||||
|
||||
if (sessionStorage.getItem('search-value')) {
|
||||
var searchValue = sessionStorage.getItem('search-value')
|
||||
sessionStorage.removeItem('search-value');
|
||||
var searchedElem = $('article').find(':contains(' + searchValue + ')').get(0);
|
||||
searchedElem && searchedElem.scrollIntoView();
|
||||
$(".highlightable").highlight(searchValue, { element: 'mark' });
|
||||
}
|
||||
|
||||
// clipboard
|
||||
var clipInit = false;
|
||||
$('code').each(function() {
|
||||
var code = $(this),
|
||||
text = code.text();
|
||||
|
||||
if (text.length > 5) {
|
||||
if (!clipInit) {
|
||||
var text, clip = new Clipboard('.copy-to-clipboard', {
|
||||
text: function(trigger) {
|
||||
text = $(trigger).prev('code').text();
|
||||
return text.replace(/^\$\s/gm, '');
|
||||
}
|
||||
});
|
||||
|
||||
var inPre;
|
||||
clip.on('success', function(e) {
|
||||
e.clearSelection();
|
||||
inPre = $(e.trigger).parent().prop('tagName') == 'PRE';
|
||||
$(e.trigger).attr('aria-label', 'Copied to clipboard!').addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
});
|
||||
|
||||
clip.on('error', function(e) {
|
||||
inPre = $(e.trigger).parent().prop('tagName') == 'PRE';
|
||||
$(e.trigger).attr('aria-label', fallbackMessage(e.action)).addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
$(document).one('copy', function(){
|
||||
$(e.trigger).attr('aria-label', 'Copied to clipboard!').addClass('tooltipped tooltipped-' + (inPre ? 'w' : 's'));
|
||||
});
|
||||
});
|
||||
|
||||
clipInit = true;
|
||||
}
|
||||
|
||||
code.after('<span class="copy-to-clipboard" title="Copy to clipboard"><object class="clippy-icon" type="image/svg+xml" data="' + baseurl + 'images/clippy.svg"/></span>');
|
||||
code.next('.copy-to-clipboard').on('mouseleave', function() {
|
||||
$(this).attr('aria-label', null).removeClass('tooltipped tooltipped-s tooltipped-w');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// allow keyboard control for prev/next links
|
||||
jQuery(function() {
|
||||
jQuery('.nav-prev').click(function(){
|
||||
location.href = jQuery(this).attr('href');
|
||||
});
|
||||
jQuery('.nav-next').click(function() {
|
||||
location.href = jQuery(this).attr('href');
|
||||
});
|
||||
});
|
||||
|
||||
jQuery(document).keydown(function(e) {
|
||||
// prev links - left arrow key
|
||||
if(e.which == '37') {
|
||||
jQuery('.nav.nav-prev').click();
|
||||
}
|
||||
|
||||
// next links - right arrow key
|
||||
if(e.which == '39') {
|
||||
jQuery('.nav.nav-next').click();
|
||||
}
|
||||
});
|
||||
|
||||
$('#top-bar a:not(:has(img)):not(.btn)').addClass('highlight');
|
||||
$('article a:not(:has(img)):not(.btn)').addClass('highlight');
|
||||
});
|
||||
|
||||
jQuery(window).on('load', function() {
|
||||
// store this page in session
|
||||
sessionStorage.setItem(jQuery('body').data('url'), 1);
|
||||
|
||||
// loop through the sessionStorage and see if something should be marked as visited
|
||||
for (var url in sessionStorage) {
|
||||
if (sessionStorage.getItem(url) == 1) jQuery('[data-nav-id="' + url + '"]').addClass('visited');
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
$('a[rel="lightbox"]').featherlight({
|
||||
root: 'section#body'
|
||||
});
|
||||
});
|
||||
|
||||
jQuery.extend({
|
||||
highlight: function(node, re, nodeName, className) {
|
||||
if (node.nodeType === 3) {
|
||||
var match = node.data.match(re);
|
||||
if (match && !(node.parentNode.ownerSVGElement instanceof SVGElement)) {
|
||||
var highlight = document.createElement(nodeName || 'span');
|
||||
highlight.className = className || 'highlight';
|
||||
var wordNode = node.splitText(match.index);
|
||||
wordNode.splitText(match[0].length);
|
||||
var wordClone = wordNode.cloneNode(true);
|
||||
highlight.appendChild(wordClone);
|
||||
wordNode.parentNode.replaceChild(highlight, wordNode);
|
||||
return 1; //skip added node in parent
|
||||
}
|
||||
} else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
|
||||
!/(script|style)/i.test(node.tagName) && // ignore script and style nodes
|
||||
!(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
|
||||
for (var i = 0; i < node.childNodes.length; i++) {
|
||||
i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.fn.unhighlight = function(options) {
|
||||
var settings = {
|
||||
className: 'highlight',
|
||||
element: 'span'
|
||||
};
|
||||
jQuery.extend(settings, options);
|
||||
|
||||
return this.find(settings.element + "." + settings.className).each(function() {
|
||||
var parent = this.parentNode;
|
||||
parent.replaceChild(this.firstChild, this);
|
||||
parent.normalize();
|
||||
}).end();
|
||||
};
|
||||
|
||||
jQuery.fn.highlight = function(words, options) {
|
||||
var settings = {
|
||||
className: 'highlight',
|
||||
element: 'span',
|
||||
caseSensitive: false,
|
||||
wordsOnly: false
|
||||
};
|
||||
jQuery.extend(settings, options);
|
||||
|
||||
if (!words) { return; }
|
||||
|
||||
if (words.constructor === String) {
|
||||
words = [words];
|
||||
}
|
||||
words = jQuery.grep(words, function(word, i) {
|
||||
return word != '';
|
||||
});
|
||||
words = jQuery.map(words, function(word, i) {
|
||||
return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
});
|
||||
if (words.length == 0) { return this; }
|
||||
;
|
||||
|
||||
var flag = settings.caseSensitive ? "" : "i";
|
||||
var pattern = "(" + words.join("|") + ")";
|
||||
if (settings.wordsOnly) {
|
||||
pattern = "\\b" + pattern + "\\b";
|
||||
}
|
||||
var re = new RegExp(pattern, flag);
|
||||
|
||||
return this.each(function() {
|
||||
jQuery.highlight(this, re, settings.element, settings.className);
|
||||
});
|
||||
};
|
||||
8
themes/docdock/static/js/featherlight.min.js
vendored
Normal file
8
themes/docdock/static/js/featherlight.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
themes/docdock/static/js/highlight.pack.js
Normal file
2
themes/docdock/static/js/highlight.pack.js
Normal file
File diff suppressed because one or more lines are too long
4
themes/docdock/static/js/html5shiv-printshiv.min.js
vendored
Normal file
4
themes/docdock/static/js/html5shiv-printshiv.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/**
|
||||
* @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||
*/
|
||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=x.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=w[a[u]];return b||(b={},v++,a[u]=v,w[v]=b),b}function f(a,c,d){if(c||(c=b),p)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():t.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||s.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),p)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return x.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(x,b.frag)}function i(a){a||(a=b);var d=e(a);return!x.shivCSS||o||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),p||h(a,d),a}function j(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(k(b)));return g}function k(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(z+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function l(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+z+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){for(var b=a.length;b--;)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!A||a.printShived?a:("undefined"==typeof h[z]&&h.add(z),i.attachEvent("onbeforeprint",function(){b();for(var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);m--;)n[m]=i[m];for(;h=n.pop();)if(!h.disabled&&y.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;g>m;m++)n.push(e[m]);try{k.push(h.cssText)}catch(o){}}k=l(k.reverse().join("")),f=j(a),d=c(a,k)}),i.attachEvent("onafterprint",function(){m(f),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var o,p,q="3.7.0",r=a.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,t=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,u="_html5shiv",v=0,w={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",o="hidden"in a,p=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){o=!0,p=!0}}();var x={elements:r.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:q,shivCSS:r.shivCSS!==!1,supportsUnknownElements:p,shivMethods:r.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=x,i(b);var y=/^$|\b(?:all|print)\b/,z="html5shiv",A=!p&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();x.type+=" print",x.shivPrint=n,n(b)}(this,document);
|
||||
4
themes/docdock/static/js/jquery-2.x.min.js
vendored
Normal file
4
themes/docdock/static/js/jquery-2.x.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
themes/docdock/static/js/lunr.min.js
vendored
Normal file
6
themes/docdock/static/js/lunr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
themes/docdock/static/js/modernizr.custom.71422.js
vendored
Normal file
4
themes/docdock/static/js/modernizr.custom.71422.js
vendored
Normal file
File diff suppressed because one or more lines are too long
91
themes/docdock/static/js/search.js
Normal file
91
themes/docdock/static/js/search.js
Normal file
@@ -0,0 +1,91 @@
|
||||
var lunrIndex, pagesIndex;
|
||||
|
||||
function endsWith(str, suffix) {
|
||||
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
||||
}
|
||||
|
||||
// Initialize lunrjs using our generated index file
|
||||
function initLunr() {
|
||||
if (!endsWith(baseurl,"/")){
|
||||
baseurl = baseurl+'/'
|
||||
};
|
||||
|
||||
// First retrieve the index file
|
||||
$.getJSON(baseurl +"index.json")
|
||||
.done(function(index) {
|
||||
pagesIndex = index;
|
||||
// Set up lunrjs by declaring the fields we use
|
||||
// Also provide their boost level for the ranking
|
||||
lunrIndex = new lunr.Index
|
||||
lunrIndex.ref("uri");
|
||||
lunrIndex.field('title', {
|
||||
boost: 15
|
||||
});
|
||||
lunrIndex.field('tags', {
|
||||
boost: 10
|
||||
});
|
||||
lunrIndex.field("content", {
|
||||
boost: 5
|
||||
});
|
||||
|
||||
// Feed lunr with each file and let lunr actually index them
|
||||
pagesIndex.forEach(function(page) {
|
||||
lunrIndex.add(page);
|
||||
});
|
||||
lunrIndex.pipeline.remove(lunrIndex.stemmer)
|
||||
})
|
||||
.fail(function(jqxhr, textStatus, error) {
|
||||
var err = textStatus + ", " + error;
|
||||
console.error("Error getting Hugo index file:", err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a search in lunr and transform the result
|
||||
*
|
||||
* @param {String} query
|
||||
* @return {Array} results
|
||||
*/
|
||||
function search(query) {
|
||||
// Find the item in our index corresponding to the lunr one to have more info
|
||||
return lunrIndex.search(query).map(function(result) {
|
||||
return pagesIndex.filter(function(page) {
|
||||
return page.uri === result.ref;
|
||||
})[0];
|
||||
});
|
||||
}
|
||||
|
||||
// Let's get started
|
||||
initLunr();
|
||||
$( document ).ready(function() {
|
||||
var searchList = new autoComplete({
|
||||
/* selector for the search box element */
|
||||
selector: $("#search-by").get(0),
|
||||
/* source is the callback to perform the search */
|
||||
source: function(term, response) {
|
||||
response(search(term));
|
||||
},
|
||||
/* renderItem displays individual search results */
|
||||
renderItem: function(item, term) {
|
||||
var numContextWords = 2;
|
||||
var text = item.content.match(
|
||||
"(?:\\s?(?:[\\w]+)\\s?){0,"+numContextWords+"}" +
|
||||
term+"(?:\\s?(?:[\\w]+)\\s?){0,"+numContextWords+"}");
|
||||
item.context = text;
|
||||
return '<div class="autocomplete-suggestion" ' +
|
||||
'data-term="' + term + '" ' +
|
||||
'data-title="' + item.title + '" ' +
|
||||
'data-uri="'+ item.uri + '" ' +
|
||||
'data-context="' + item.context + '">' +
|
||||
'» ' + item.title +
|
||||
'<div class="context">' +
|
||||
(item.context || '') +'</div>' +
|
||||
'</div>';
|
||||
},
|
||||
/* onSelect callback fires when a search suggestion is chosen */
|
||||
onSelect: function(e, term, item) {
|
||||
console.log(item.getAttribute('data-val'));
|
||||
location.href = item.getAttribute('data-uri');
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user