first
This commit is contained in:
60
plugins/bootstrap-toc/1.0.1/bootstrap-toc.css
vendored
Normal file
60
plugins/bootstrap-toc/1.0.1/bootstrap-toc.css
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
/*!
|
||||
* Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
|
||||
* Copyright 2015 Aidan Feldman
|
||||
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
|
||||
|
||||
/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */
|
||||
|
||||
/* All levels of nav */
|
||||
nav[data-toggle="toc"] .nav > li > a {
|
||||
display: block;
|
||||
padding: 4px 20px;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
color: #767676;
|
||||
}
|
||||
nav[data-toggle="toc"] .nav > li > a:hover,
|
||||
nav[data-toggle="toc"] .nav > li > a:focus {
|
||||
padding-left: 19px;
|
||||
color: #563d7c;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
border-left: 1px solid #563d7c;
|
||||
}
|
||||
nav[data-toggle="toc"] .nav-link.active,
|
||||
nav[data-toggle="toc"] .nav-link.active:hover,
|
||||
nav[data-toggle="toc"] .nav-link.active:focus {
|
||||
padding-left: 18px;
|
||||
font-weight: bold;
|
||||
color: #563d7c;
|
||||
background-color: transparent;
|
||||
border-left: 2px solid #563d7c;
|
||||
}
|
||||
|
||||
/* Nav: second level (shown on .active) */
|
||||
nav[data-toggle="toc"] .nav-link + ul {
|
||||
display: none; /* Hide by default, but at >768px, show it */
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
nav[data-toggle="toc"] .nav .nav > li > a {
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
padding-left: 30px;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
}
|
||||
nav[data-toggle="toc"] .nav .nav > li > a:hover,
|
||||
nav[data-toggle="toc"] .nav .nav > li > a:focus {
|
||||
padding-left: 29px;
|
||||
}
|
||||
nav[data-toggle="toc"] .nav .nav > li > .active,
|
||||
nav[data-toggle="toc"] .nav .nav > li > .active:hover,
|
||||
nav[data-toggle="toc"] .nav .nav > li > .active:focus {
|
||||
padding-left: 28px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
nav[data-toggle="toc"] .nav-link.active + ul {
|
||||
display: block;
|
||||
}
|
||||
180
plugins/bootstrap-toc/1.0.1/bootstrap-toc.js
vendored
Normal file
180
plugins/bootstrap-toc/1.0.1/bootstrap-toc.js
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
/*!
|
||||
* Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
|
||||
* Copyright 2015 Aidan Feldman
|
||||
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
window.Toc = {
|
||||
helpers: {
|
||||
// return all matching elements in the set, or their descendants
|
||||
findOrFilter: function($el, selector) {
|
||||
// http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/
|
||||
// http://stackoverflow.com/a/12731439/358804
|
||||
var $descendants = $el.find(selector);
|
||||
return $el
|
||||
.filter(selector)
|
||||
.add($descendants)
|
||||
.filter(":not([data-toc-skip])");
|
||||
},
|
||||
|
||||
generateUniqueIdBase: function(el) {
|
||||
var text = $(el).text();
|
||||
|
||||
// adapted from
|
||||
// https://github.com/bryanbraun/anchorjs/blob/65fede08d0e4a705f72f1e7e6284f643d5ad3cf3/anchor.js#L237-L257
|
||||
|
||||
// Regex for finding the non-safe URL characters (many need escaping): & +$,:;=?@"#{}|^~[`%!'<>]./()*\ (newlines, tabs, backspace, & vertical tabs)
|
||||
var nonsafeChars = /[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,
|
||||
urlText;
|
||||
|
||||
// Note: we trim hyphens after truncating because truncating can cause dangling hyphens.
|
||||
// Example string: // " ⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean."
|
||||
urlText = text
|
||||
.trim() // "⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean."
|
||||
.replace(/\'/gi, "") // "⚡⚡ Dont forget: URL fragments should be i18n-friendly, hyphenated, short, and clean."
|
||||
.replace(nonsafeChars, "-") // "⚡⚡-Dont-forget--URL-fragments-should-be-i18n-friendly--hyphenated--short--and-clean-"
|
||||
.replace(/-{2,}/g, "-") // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-short-and-clean-"
|
||||
.substring(0, 64) // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-"
|
||||
.replace(/^-+|-+$/gm, "") // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated"
|
||||
.toLowerCase(); // "⚡⚡-dont-forget-url-fragments-should-be-i18n-friendly-hyphenated"
|
||||
|
||||
return urlText || el.tagName.toLowerCase();
|
||||
},
|
||||
|
||||
generateUniqueId: function(el) {
|
||||
var anchorBase = this.generateUniqueIdBase(el);
|
||||
for (var i = 0; ; i++) {
|
||||
var anchor = anchorBase;
|
||||
if (i > 0) {
|
||||
// add suffix
|
||||
anchor += "-" + i;
|
||||
}
|
||||
// check if ID already exists
|
||||
if (!document.getElementById(anchor)) {
|
||||
return anchor;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
generateAnchor: function(el) {
|
||||
if (el.id) {
|
||||
return el.id;
|
||||
} else {
|
||||
var anchor = this.generateUniqueId(el);
|
||||
el.id = anchor;
|
||||
return anchor;
|
||||
}
|
||||
},
|
||||
|
||||
createNavList: function() {
|
||||
return $('<ul class="nav navbar-nav"></ul>');
|
||||
},
|
||||
|
||||
createChildNavList: function($parent) {
|
||||
var $childList = this.createNavList();
|
||||
$parent.append($childList);
|
||||
return $childList;
|
||||
},
|
||||
|
||||
generateNavEl: function(anchor, text) {
|
||||
var $a = $('<a class="nav-link"></a>');
|
||||
$a.attr("href", "#" + anchor);
|
||||
$a.text(text);
|
||||
var $li = $("<li></li>");
|
||||
$li.append($a);
|
||||
return $li;
|
||||
},
|
||||
|
||||
generateNavItem: function(headingEl) {
|
||||
var anchor = this.generateAnchor(headingEl);
|
||||
var $heading = $(headingEl);
|
||||
var text = $heading.data("toc-text") || $heading.text();
|
||||
return this.generateNavEl(anchor, text);
|
||||
},
|
||||
|
||||
// Find the first heading level (`<h1>`, then `<h2>`, etc.) that has more than one element. Defaults to 1 (for `<h1>`).
|
||||
getTopLevel: function($scope) {
|
||||
for (var i = 1; i <= 6; i++) {
|
||||
var $headings = this.findOrFilter($scope, "h" + i);
|
||||
if ($headings.length > 1) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
},
|
||||
|
||||
// returns the elements for the top level, and the next below it
|
||||
getHeadings: function($scope, topLevel) {
|
||||
var topSelector = "h" + topLevel;
|
||||
|
||||
var secondaryLevel = topLevel + 1;
|
||||
var secondarySelector = "h" + secondaryLevel;
|
||||
|
||||
return this.findOrFilter($scope, topSelector + "," + secondarySelector);
|
||||
},
|
||||
|
||||
getNavLevel: function(el) {
|
||||
return parseInt(el.tagName.charAt(1), 10);
|
||||
},
|
||||
|
||||
populateNav: function($topContext, topLevel, $headings) {
|
||||
var $context = $topContext;
|
||||
var $prevNav;
|
||||
|
||||
var helpers = this;
|
||||
$headings.each(function(i, el) {
|
||||
var $newNav = helpers.generateNavItem(el);
|
||||
var navLevel = helpers.getNavLevel(el);
|
||||
|
||||
// determine the proper $context
|
||||
if (navLevel === topLevel) {
|
||||
// use top level
|
||||
$context = $topContext;
|
||||
} else if ($prevNav && $context === $topContext) {
|
||||
// create a new level of the tree and switch to it
|
||||
$context = helpers.createChildNavList($prevNav);
|
||||
} // else use the current $context
|
||||
|
||||
$context.append($newNav);
|
||||
|
||||
$prevNav = $newNav;
|
||||
});
|
||||
},
|
||||
|
||||
parseOps: function(arg) {
|
||||
var opts;
|
||||
if (arg.jquery) {
|
||||
opts = {
|
||||
$nav: arg
|
||||
};
|
||||
} else {
|
||||
opts = arg;
|
||||
}
|
||||
opts.$scope = opts.$scope || $(document.body);
|
||||
return opts;
|
||||
}
|
||||
},
|
||||
|
||||
// accepts a jQuery object, or an options object
|
||||
init: function(opts) {
|
||||
opts = this.helpers.parseOps(opts);
|
||||
|
||||
// ensure that the data attribute is in place for styling
|
||||
opts.$nav.attr("data-toggle", "toc");
|
||||
|
||||
var $topContext = this.helpers.createChildNavList(opts.$nav);
|
||||
var topLevel = this.helpers.getTopLevel(opts.$scope);
|
||||
var $headings = this.helpers.getHeadings(opts.$scope, topLevel);
|
||||
this.helpers.populateNav($topContext, topLevel, $headings);
|
||||
}
|
||||
};
|
||||
|
||||
$(function() {
|
||||
$('nav[data-toggle="toc"]').each(function(i, el) {
|
||||
var $nav = $(el);
|
||||
Toc.init($nav);
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
4
plugins/bootstrap-toc/1.0.1/bootstrap-toc.min.css
vendored
Normal file
4
plugins/bootstrap-toc/1.0.1/bootstrap-toc.min.css
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*!
|
||||
* Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
|
||||
* Copyright 2015 Aidan Feldman
|
||||
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */nav[data-toggle=toc] .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}nav[data-toggle=toc] .nav>li>a:focus,nav[data-toggle=toc] .nav>li>a:hover{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}nav[data-toggle=toc] .nav-link.active,nav[data-toggle=toc] .nav-link.active:focus,nav[data-toggle=toc] .nav-link.active:hover{padding-left:18px;font-weight:700;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}nav[data-toggle=toc] .nav-link+ul{display:none;padding-bottom:10px}nav[data-toggle=toc] .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}nav[data-toggle=toc] .nav .nav>li>a:focus,nav[data-toggle=toc] .nav .nav>li>a:hover{padding-left:29px}nav[data-toggle=toc] .nav .nav>li>.active,nav[data-toggle=toc] .nav .nav>li>.active:focus,nav[data-toggle=toc] .nav .nav>li>.active:hover{padding-left:28px;font-weight:500}nav[data-toggle=toc] .nav-link.active+ul{display:block}
|
||||
5
plugins/bootstrap-toc/1.0.1/bootstrap-toc.min.js
vendored
Normal file
5
plugins/bootstrap-toc/1.0.1/bootstrap-toc.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
|
||||
* Copyright 2015 Aidan Feldman
|
||||
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
|
||||
!function(a){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0<n&&(r+="-"+n),!document.getElementById(r))return r}},generateAnchor:function(e){if(e.id)return e.id;var t=this.generateUniqueId(e);return e.id=t},createNavList:function(){return a('<ul class="nav navbar-nav"></ul>')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('<a class="nav-link"></a>');n.attr("href","#"+e),n.text(t);var r=a("<li></li>");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1<this.findOrFilter(e,"h"+t).length)return t}return 1},getHeadings:function(e,t){var n="h"+t,r="h"+(t+1);return this.findOrFilter(e,n+","+r)},getNavLevel:function(e){return parseInt(e.tagName.charAt(1),10)},populateNav:function(r,a,e){var i,s=r,c=this;e.each(function(e,t){var n=c.generateNavItem(t);c.getNavLevel(t)===a?s=r:i&&s===r&&(s=c.createChildNavList(i)),s.append(n),i=n})},parseOps:function(e){var t;return(t=e.jquery?{$nav:e}:e).$scope=t.$scope||a(document.body),t}},init:function(e){(e=this.helpers.parseOps(e)).$nav.attr("data-toggle","toc");var t=this.helpers.createChildNavList(e.$nav),n=this.helpers.getTopLevel(e.$scope),r=this.helpers.getHeadings(e.$scope,n);this.helpers.populateNav(t,n,r)}},a(function(){a('nav[data-toggle="toc"]').each(function(e,t){var n=a(t);Toc.init(n)})})}(jQuery);
|
||||
24
plugins/bootstrap-toc/LICENSE.md
Normal file
24
plugins/bootstrap-toc/LICENSE.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# The MIT License (MIT)
|
||||
|
||||
Copyright © 2015-2016 Aidan Feldman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the “Software”), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
Reference in New Issue
Block a user