bump 1.0.0

This commit is contained in:
qingwei.li 2016-12-08 21:12:33 +08:00
commit 41be8176a6
5 changed files with 108 additions and 44 deletions

View file

@ -76,6 +76,29 @@ function isNil (o) {
return o === null || o === undefined return o === null || o === undefined
} }
var cacheRoute$1 = null;
var cacheHash = null;
/**
* hash route
*/
function getRoute () {
var loc = window.location;
if (cacheHash === loc.hash && !isNil(cacheRoute$1)) { return cacheRoute$1 }
var route = loc.hash.match(/^#\/([^#]+)/);
if (route && route.length === 2) {
route = route[1];
} else {
route = /^#\//.test(loc.hash) ? '' : loc.pathname;
}
cacheRoute$1 = route;
cacheHash = loc.hash;
return route
}
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@ -2231,9 +2254,11 @@ function scrollActiveSidebar () {
for (var i = 0, len = lis.length; i < len; i += 1) { for (var i = 0, len = lis.length; i < len; i += 1) {
var li = lis[i]; var li = lis[i];
var a = li.querySelector('a'); var href = li.querySelector('a').getAttribute('href');
nav[a.getAttribute('href').slice(1)] = li; if (href !== '/') { href = href.match(/#([^#]+)$/g)[0].slice(1); }
nav[href] = li;
} }
function highlight () { function highlight () {
@ -2244,8 +2269,7 @@ function scrollActiveSidebar () {
if (bcr.top < 10 && bcr.bottom > 10) { if (bcr.top < 10 && bcr.bottom > 10) {
var li = nav[node.id]; var li = nav[node.id];
if (!li) { return } if (!li || li === active) { return }
if (li === active) { return }
if (active) { active.setAttribute('class', ''); } if (active) { active.setAttribute('class', ''); }
li.setAttribute('class', 'active'); li.setAttribute('class', 'active');
@ -2260,9 +2284,9 @@ function scrollActiveSidebar () {
highlight(); highlight();
function scrollIntoView () { function scrollIntoView () {
var id = window.location.hash.slice(1); var id = window.location.hash.match(/#[^#\/]+$/g);
if (!id) { return } if (!id || !id.length) { return }
var section = document.querySelector('#' + id); var section = document.querySelector(id[0]);
if (section) { section.scrollIntoView(); } if (section) { section.scrollIntoView(); }
} }
@ -2275,7 +2299,7 @@ function scrollActiveSidebar () {
* Acitve link * Acitve link
*/ */
function activeLink (dom, activeParent) { function activeLink (dom, activeParent) {
var host = document.location.origin + document.location.pathname; var host = window.location.href;
dom = typeof dom === 'object' ? dom : document.querySelector(dom); dom = typeof dom === 'object' ? dom : document.querySelector(dom);
if (!dom) { return if (!dom) { return
@ -2285,6 +2309,10 @@ function activeLink (dom, activeParent) {
activeParent activeParent
? node.parentNode.setAttribute('class', 'active') ? node.parentNode.setAttribute('class', 'active')
: node.setAttribute('class', 'active'); : node.setAttribute('class', 'active');
} else {
activeParent
? node.parentNode.removeAttribute('class')
: node.removeAttribute('class');
} }
}); });
} }
@ -2305,6 +2333,8 @@ function bindToggle (dom) {
}); });
} }
var OPTIONS$1 = {};
var renderTo = function (dom, content) { var renderTo = function (dom, content) {
dom = typeof dom === 'object' ? dom : document.querySelector(dom); dom = typeof dom === 'object' ? dom : document.querySelector(dom);
dom.innerHTML = content; dom.innerHTML = content;
@ -2319,11 +2349,16 @@ var renderer = new marked.Renderer();
* @link https://github.com/chjj/marked#overriding-renderer-methods * @link https://github.com/chjj/marked#overriding-renderer-methods
*/ */
renderer.heading = function (text, level) { renderer.heading = function (text, level) {
var slug = text.toLowerCase().replace(/<(?:.|\n)*?>/gm, '').replace(/[\s\n\t]+/g, '-'); var slug = text.toLowerCase().replace(/<(?:.|\n)*?>/gm, '').replace(/[^\w|\u4e00-\u9fa5]+/g, '-');
var route = '';
toc.push({ level: level, slug: '#' + slug, title: text }); if (OPTIONS$1.router) {
route = "#/" + (getRoute());
}
return ("<h" + level + " id=\"" + slug + "\"><a href=\"#" + slug + "\" class=\"anchor\"></a>" + text + "</h" + level + ">") toc.push({ level: level, slug: (route + "#" + slug), title: text });
return ("<h" + level + " id=\"" + slug + "\"><a href=\"" + route + "#" + slug + "\" class=\"anchor\"></a>" + text + "</h" + level + ">")
}; };
// highlight code // highlight code
renderer.code = function (code, lang) { renderer.code = function (code, lang) {
@ -2333,15 +2368,22 @@ renderer.code = function (code, lang) {
return ("<pre data-lang=\"" + lang + "\"><code class=\"lang-" + lang + "\">" + hl + "</code></pre>") return ("<pre data-lang=\"" + lang + "\"><code class=\"lang-" + lang + "\">" + hl + "</code></pre>")
}; };
renderer.link = function (href, title, text) {
if (OPTIONS$1.router && !/^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/.test(href)) {
href = !/^\/#/.test(href) ? ("#" + href) : href;
}
return ("<a href=\"" + href + "\" title=\"" + (title || '') + "\">" + text + "</a>")
};
marked.setOptions({ renderer: renderer }); marked.setOptions({ renderer: renderer });
/** /**
* App * App
*/ */
function renderApp (dom, replace, opts) { function renderApp (dom, replace) {
var nav = document.querySelector('nav') || document.createElement('nav'); var nav = document.querySelector('nav') || document.createElement('nav');
dom[replace ? 'outerHTML' : 'innerHTML'] = toggle(opts.sidebarToggle) + corner(opts.repo) + main(); dom[replace ? 'outerHTML' : 'innerHTML'] = toggle(OPTIONS$1.sidebarToggle) + corner(OPTIONS$1.repo) + main();
document.body.insertBefore(nav, document.body.children[0]); document.body.insertBefore(nav, document.body.children[0]);
// bind toggle // bind toggle
@ -2351,18 +2393,18 @@ function renderApp (dom, replace, opts) {
/** /**
* article * article
*/ */
function renderArticle (content, OPTIONS) { function renderArticle (content) {
renderTo('article', content ? marked(content) : 'not found'); renderTo('article', content ? marked(content) : 'not found');
if (!renderSidebar.rendered) { renderSidebar(null, OPTIONS); } if (!renderSidebar.rendered) { renderSidebar(null, OPTIONS$1); }
if (!renderNavbar.rendered) { renderNavbar(null, OPTIONS); } if (!renderNavbar.rendered) { renderNavbar(null, OPTIONS$1); }
renderSidebar.rendered = false;
renderNavbar.rendered = false;
} }
/** /**
* navbar * navbar
*/ */
function renderNavbar (content, OPTIONS) { function renderNavbar (content) {
if ( OPTIONS === void 0 ) OPTIONS = {};
renderNavbar.rendered = true; renderNavbar.rendered = true;
if (content) { renderTo('nav', marked(content)); } if (content) { renderTo('nav', marked(content)); }
@ -2372,24 +2414,27 @@ function renderNavbar (content, OPTIONS) {
/** /**
* sidebar * sidebar
*/ */
function renderSidebar (content, OPTIONS) { function renderSidebar (content) {
if ( OPTIONS === void 0 ) OPTIONS = {};
renderSidebar.rendered = true; renderSidebar.rendered = true;
var isToc = false; var isToc = false;
if (content) { if (content) {
content = marked(content); content = marked(content);
} else if (OPTIONS.sidebar) { } else if (OPTIONS$1.sidebar) {
content = tree(OPTIONS.sidebar, '<ul>'); content = tree(OPTIONS$1.sidebar, '<ul>');
} else { } else {
content = tree(genTree(toc, OPTIONS.maxLevel), '<ul>'); content = tree(genTree(toc, OPTIONS$1.maxLevel), '<ul>');
isToc = true; isToc = true;
} }
renderTo('aside.sidebar', content); renderTo('aside.sidebar', content);
isToc ? scrollActiveSidebar() : activeLink('aside.sidebar', true); isToc ? scrollActiveSidebar() : activeLink('aside.sidebar', true);
toc = [];
}
function config (options) {
OPTIONS$1 = options;
} }
var OPTIONS = { var OPTIONS = {
@ -2399,7 +2444,8 @@ var OPTIONS = {
sidebar: '', sidebar: '',
sidebarToggle: false, sidebarToggle: false,
loadSidebar: null, loadSidebar: null,
loadNavbar: null loadNavbar: null,
router: false
}; };
var script = document.currentScript || [].slice.call(document.getElementsByTagName('script')).pop(); var script = document.currentScript || [].slice.call(document.getElementsByTagName('script')).pop();
@ -2414,31 +2460,48 @@ if (script) {
if (OPTIONS.sidebar) { OPTIONS.sidebar = window[OPTIONS.sidebar]; } if (OPTIONS.sidebar) { OPTIONS.sidebar = window[OPTIONS.sidebar]; }
} }
var Docsify = function () { // load options
var dom = document.querySelector(OPTIONS.el) || document.body; config(OPTIONS);
var replace = dom !== document.body;
var loc = document.location.pathname;
if (/\/$/.test(loc)) { loc += 'README'; } var cacheRoute = null;
// Render app var mainRender = function () {
renderApp(dom, replace, OPTIONS); var route = getRoute();
if (cacheRoute === route) { return }
var basePath = cacheRoute = route;
if (!/\//.test(basePath)) {
basePath = '';
} else if (basePath && !/\/$/.test(basePath)) {
basePath = basePath.match(/(\S+\/)[^\/]+$/)[1];
}
// Render markdown file // Render markdown file
load((loc + ".md")) load((!route || /\/$/.test(route)) ? (route + "README.md") : (route + ".md"))
.then(function (content) { return renderArticle(content, OPTIONS); }, .then(renderArticle, function (_) { return renderArticle(null); });
function (_) { return renderArticle(null, OPTIONS); });
// Render sidebar // Render sidebar
if (OPTIONS.loadSidebar) { if (OPTIONS.loadSidebar) {
load(OPTIONS.loadSidebar) load(basePath + OPTIONS.loadSidebar).then(renderSidebar);
.then(function (content) { return renderSidebar(content, OPTIONS); });
} }
// Render navbar // Render navbar
if (OPTIONS.loadNavbar) { if (OPTIONS.loadNavbar) {
load(OPTIONS.loadNavbar) load(basePath + OPTIONS.loadNavbar).then(renderNavbar);
.then(function (content) { return renderNavbar(content, OPTIONS); }); }
};
var Docsify = function () {
var dom = document.querySelector(OPTIONS.el) || document.body;
var replace = dom !== document.body;
// Render app
renderApp(dom, replace);
mainRender();
if (OPTIONS.router) {
if (!/^#\//.test(window.location.hash)) { window.location.hash = '#/'; }
window.addEventListener('hashchange', mainRender);
} }
}; };

3
lib/docsify.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long