bump 1.3.0

This commit is contained in:
qingwei.li
2016-12-22 00:26:06 +08:00
parent 50addfdac6
commit a39eddba74
6 changed files with 74 additions and 18 deletions

View File

@@ -137,11 +137,11 @@ function scrollActiveSidebar () {
function highlight () {
for (var i = 0, len = anchors.length; i < len; i += 1) {
var node = anchors[i].parentNode;
var node = anchors[i];
var bcr = node.getBoundingClientRect();
if (bcr.top < 10 && bcr.bottom > 10) {
var li = nav[node.id];
var li = nav[node.getAttribute('data-id')];
if (!li || li === active) { return }
if (active) { active.setAttribute('class', ''); }
@@ -154,9 +154,8 @@ function scrollActiveSidebar () {
}
}
var dom = document.querySelector('main .content');
dom.removeEventListener('scroll', highlight);
dom.addEventListener('scroll', highlight);
window.removeEventListener('scroll', highlight);
window.addEventListener('scroll', highlight);
highlight();
}
@@ -215,6 +214,19 @@ function scroll2Top () {
cacheContentDOM.scrollTop = 0;
}
function sticky () {
var dom = document.querySelector('section.cover');
var coverHeight = dom.getBoundingClientRect().height;
return (function () {
if (window.pageYOffset >= coverHeight || dom.classList.contains('hidden')) {
document.body.classList.add('sticky');
} else {
document.body.classList.remove('sticky');
}
})()
}
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -2324,14 +2336,22 @@ function corner (data) {
/**
* Render main content
* @return {[type]} [description]
*/
function main () {
return "<main>\n <aside class=\"sidebar\"></aside>\n <section class=\"content\">\n <article class=\"markdown-section\"></article>\n </section>\n </main>"
function main (tpl) {
return ("<main>\n " + tpl + "\n <aside class=\"sidebar\"></aside>\n <section class=\"content\">\n <article class=\"markdown-section\"></article>\n </section>\n </main>")
}
function toggle (bool) {
if (!bool) { return '' }
/**
* Cover Page
*/
function cover () {
var SL = ', 100%, 85%';
var bgc = "linear-gradient(to left bottom, hsl(" + (Math.floor(Math.random() * 255) + SL) + ") 0%, hsl(" + (Math.floor(Math.random() * 255) + SL) + ") 100%)";
return ("<section class=\"cover\" style=\"background: " + bgc + "\">\n <div class=\"cover-main\"></div>\n </section>")
}
function toggle () {
return "<button class=\"sidebar-toggle\">\n <span></span><span></span><span></span>\n </button>"
}
@@ -2384,7 +2404,7 @@ renderer.heading = function (text, level) {
toc.push({ level: level, slug: (route + "#" + (encodeURIComponent(slug))), title: text });
return ("<h" + level + " id=\"" + slug + "\"><a href=\"" + route + "#" + slug + "\" class=\"anchor\"></a>" + text + "</h" + level + ">")
return ("<a href=\"" + route + "#" + slug + "\" data-id=\"" + slug + "\" class=\"anchor\"><h" + level + " id=\"" + slug + "\">" + text + "</h" + level + "></a>")
};
// highlight code
renderer.code = function (code, lang) {
@@ -2409,11 +2429,21 @@ marked.setOptions({ renderer: renderer });
function renderApp (dom, replace) {
var nav = document.querySelector('nav') || document.createElement('nav');
dom[replace ? 'outerHTML' : 'innerHTML'] = toggle(OPTIONS$1.sidebarToggle) + corner(OPTIONS$1.repo) + main();
if (!OPTIONS$1.repo) { nav.classList.add('no-badge'); }
dom[replace ? 'outerHTML' : 'innerHTML'] = corner(OPTIONS$1.repo) +
(OPTIONS$1.coverpage ? cover() : '') +
main(OPTIONS$1.sidebarToggle ? toggle() : '');
document.body.insertBefore(nav, document.body.children[0]);
// bind toggle
bindToggle('button.sidebar-toggle');
// bind sticky effect
if (OPTIONS$1.coverpage) {
!isMobile() && window.addEventListener('scroll', sticky);
} else {
document.body.classList.add('sticky');
}
}
/**
@@ -2464,6 +2494,20 @@ function renderSidebar (content) {
toc = [];
}
/**
* Cover Page
*/
function renderCover (content) {
renderCover.dom = renderCover.dom || document.querySelector('section.cover');
if (!content) {
renderCover.dom.classList.add('hidden');
} else {
renderCover.dom.classList.remove('hidden');
!renderCover.rendered && renderTo('.cover-main', marked(content));
renderCover.rendered = true;
}
}
/**
* render loading bar
* @return {[type]} [description]
@@ -2519,6 +2563,7 @@ var OPTIONS = {
loadNavbar: null,
router: false,
homepage: 'README.md',
coverpage: '',
basePath: '',
auto2top: false
};
@@ -2532,6 +2577,7 @@ if (script) {
}
if (OPTIONS.loadSidebar === true) { OPTIONS.loadSidebar = '_sidebar.md'; }
if (OPTIONS.loadNavbar === true) { OPTIONS.loadNavbar = '_navbar.md'; }
if (OPTIONS.coverpage === true) { OPTIONS.coverpage = '_coverpage.md'; }
if (OPTIONS.sidebar) { OPTIONS.sidebar = window[OPTIONS.sidebar]; }
}
@@ -2563,6 +2609,15 @@ var mainRender = function (cb) {
page = route + ".md";
}
// Render Cover page
if (OPTIONS.coverpage) {
if (page === OPTIONS.homepage) {
load(OPTIONS.coverpage).then(renderCover);
} else {
renderCover();
}
}
cacheXhr && cacheXhr.abort && cacheXhr.abort();
// Render markdown file
cacheXhr = load(page, 'GET', renderLoading);
@@ -2598,6 +2653,7 @@ var Docsify = function () {
mainRender(function (_) {
activeLink('aside.sidebar', true);
scrollIntoView();
OPTIONS.coverpage && sticky();
});
};