From aa3121eca20dc5dd8f171bc6d982e0f85f18366e Mon Sep 17 00:00:00 2001 From: "qingwei.li" Date: Sun, 25 Dec 2016 20:59:08 +0800 Subject: [PATCH 001/916] =?UTF-8?q?Bye=20=F0=9F=8E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/_media/snow.js | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_media/snow.js b/docs/_media/snow.js index b0c20e5..158980d 100644 --- a/docs/_media/snow.js +++ b/docs/_media/snow.js @@ -1,5 +1,6 @@ // Fork https://github.com/HermannBjorgvin/SnowJs/blob/master/snow.js (function(){ + if (new Date().getDate() > 25) return var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); var flakeArray = []; From 9ac8293c0a0b7d7b81274d0db354e4b4166dea75 Mon Sep 17 00:00:00 2001 From: "qingwei.li" Date: Mon, 26 Dec 2016 23:47:26 +0800 Subject: [PATCH 002/916] Update docs --- docs/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index 1bb458e..615ba0c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,7 +15,6 @@
- + diff --git a/src/render.js b/src/render.js index 5df8b20..23b2046 100644 --- a/src/render.js +++ b/src/render.js @@ -83,7 +83,10 @@ export function renderArticle (content) { renderSidebar.rendered = false renderNavbar.rendered = false - if (content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined') new Vue({ el: 'main' }) // eslint-disable-line + if (content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined') { + const vm = new Vue({ el: 'main' }) // eslint-disable-line + vm.$nextTick(_ => scrollActiveSidebar()) + } if (OPTIONS.auto2top) scroll2Top() } @@ -118,7 +121,9 @@ export function renderSidebar (content) { if (CACHE.sidebar && CACHE.sidebar === content) return CACHE.sidebar = content renderTo('aside.sidebar', content) - if (isToc) scrollActiveSidebar() + if (isToc) { + scrollActiveSidebar() + } toc = [] } From 7ce166501b7978cbcc3ba6ec669c82ec0c933e03 Mon Sep 17 00:00:00 2001 From: "qingwei.li" Date: Fri, 30 Dec 2016 17:58:39 +0800 Subject: [PATCH 004/916] Add render sub menu --- src/event.js | 11 +++++++++-- src/index.js | 25 ++++++++----------------- src/render.js | 32 +++++++++++++++----------------- 3 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/event.js b/src/event.js index 62133f3..8b4c7ae 100644 --- a/src/event.js +++ b/src/event.js @@ -16,7 +16,10 @@ export function scrollActiveSidebar () { const li = lis[i] let href = li.querySelector('a').getAttribute('href') - if (href !== '/') href = href.match(/#([^#]+)$/g)[0].slice(1) + if (href !== '/') { + const match = href.match('#([^#]+)$') + if (match && match.length) href = match[0].slice(1) + } nav[decodeURIComponent(href)] = li } @@ -61,18 +64,22 @@ export function activeLink (dom, activeParent) { dom = typeof dom === 'object' ? dom : document.querySelector(dom) if (!dom) return + let target ;[].slice.call(dom.querySelectorAll('a')).forEach(node => { - if (node.href === host) { + if (node.href === host && !target) { activeParent ? node.parentNode.setAttribute('class', 'active') : node.setAttribute('class', 'active') + target = node } else { activeParent ? node.parentNode.removeAttribute('class') : node.removeAttribute('class') } }) + + return target } /** diff --git a/src/index.js b/src/index.js index ba776a2..b81ca99 100644 --- a/src/index.js +++ b/src/index.js @@ -1,11 +1,12 @@ import { load, camel2kebab, isNil, getRoute } from './util' -import { activeLink, scrollIntoView } from './event' +import { scrollIntoView } from './event' import * as render from './render' const OPTIONS = { el: '#app', repo: '', maxLevel: 6, + maxSubLevel: 0, sidebar: '', sidebarToggle: false, loadSidebar: null, @@ -40,7 +41,6 @@ const mainRender = function (cb) { const route = OPTIONS.basePath + getRoute() if (cacheRoute === route) return cb() - let wait let basePath = cacheRoute = route if (!/\//.test(basePath)) { @@ -72,22 +72,16 @@ const mainRender = function (cb) { if (OPTIONS.coverpage && page !== OPTIONS.homepage) render.renderCover() // render sidebar if (OPTIONS.loadSidebar) { - if (wait === false) cb() - wait = false + load(basePath + OPTIONS.loadSidebar) + .then(result => { + render.renderSidebar(result) + cb() + }) } else { cb() } }, _ => render.renderArticle(null)) - // Render sidebar - if (OPTIONS.loadSidebar) { - load(basePath + OPTIONS.loadSidebar).then(result => { - render.renderSidebar(result) - if (wait === false) cb() - wait = false - }) - } - // Render navbar if (OPTIONS.loadNavbar) { load(basePath + OPTIONS.loadNavbar).then(render.renderNavbar) @@ -98,10 +92,7 @@ const Docsify = function () { const dom = document.querySelector(OPTIONS.el) || document.body const replace = dom !== document.body const main = function () { - mainRender(_ => { - activeLink('aside.sidebar', true) - scrollIntoView() - }) + mainRender(_ => scrollIntoView()) } // Render app diff --git a/src/render.js b/src/render.js index 23b2046..3e3ea7b 100644 --- a/src/render.js +++ b/src/render.js @@ -78,10 +78,7 @@ export function renderApp (dom, replace) { */ export function renderArticle (content) { renderTo('article', content ? marked(content) : 'not found') - if (!renderSidebar.rendered) renderSidebar(null, OPTIONS) - if (!renderNavbar.rendered) renderNavbar(null, OPTIONS) - renderSidebar.rendered = false - renderNavbar.rendered = false + if (!OPTIONS.sidebar && !OPTIONS.loadSidebar) renderSidebar() if (content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined') { const vm = new Vue({ el: 'main' }) // eslint-disable-line @@ -96,7 +93,6 @@ export function renderArticle (content) { export function renderNavbar (content) { if (CACHE.navbar && CACHE.navbar === content) return CACHE.navbar = content - renderNavbar.rendered = true if (content) renderTo('nav', marked(content)) activeLink('nav') @@ -106,25 +102,27 @@ export function renderNavbar (content) { * sidebar */ export function renderSidebar (content) { - let isToc = false + let html if (content) { - content = marked(content) + html = marked(content) } else if (OPTIONS.sidebar) { - content = tpl.tree(OPTIONS.sidebar, '