11import marked from 'marked'
22import Prism from 'prismjs'
33import * as tpl from './tpl'
4- import { activeLink , scrollActiveSidebar , bindToggle , scroll2Top } from './event'
5- import { genTree , getRoute } from './util'
4+ import { activeLink , scrollActiveSidebar , bindToggle , scroll2Top , sticky } from './event'
5+ import { genTree , getRoute , isMobile } from './util'
66
77let OPTIONS = { }
88const CACHE = { }
@@ -32,7 +32,7 @@ renderer.heading = function (text, level) {
3232
3333 toc . push ( { level, slug : `${ route } #${ encodeURIComponent ( slug ) } ` , title : text } )
3434
35- return `<h ${ level } id ="${ slug } "><a href ="${ route } # ${ slug } " class="anchor"></a >${ text } </h${ level } >`
35+ return `<a href ="${ route } # ${ slug } " data-id ="${ slug } " class="anchor"><h ${ level } id=" ${ slug } " >${ text } </h${ level } ></a >`
3636}
3737// highlight code
3838renderer . code = function ( code , lang = '' ) {
@@ -55,11 +55,21 @@ marked.setOptions({ renderer })
5555export function renderApp ( dom , replace ) {
5656 const nav = document . querySelector ( 'nav' ) || document . createElement ( 'nav' )
5757
58- dom [ replace ? 'outerHTML' : 'innerHTML' ] = tpl . toggle ( OPTIONS . sidebarToggle ) + tpl . corner ( OPTIONS . repo ) + tpl . main ( )
58+ if ( ! OPTIONS . repo ) nav . classList . add ( 'no-badge' )
59+
60+ dom [ replace ? 'outerHTML' : 'innerHTML' ] = tpl . corner ( OPTIONS . repo ) +
61+ ( OPTIONS . coverpage ? tpl . cover ( ) : '' ) +
62+ tpl . main ( OPTIONS . sidebarToggle ? tpl . toggle ( ) : '' )
5963 document . body . insertBefore ( nav , document . body . children [ 0 ] )
6064
6165 // bind toggle
6266 bindToggle ( 'button.sidebar-toggle' )
67+ // bind sticky effect
68+ if ( OPTIONS . coverpage ) {
69+ ! isMobile ( ) && window . addEventListener ( 'scroll' , sticky )
70+ } else {
71+ document . body . classList . add ( 'sticky' )
72+ }
6373}
6474
6575/**
@@ -110,6 +120,20 @@ export function renderSidebar (content) {
110120 toc = [ ]
111121}
112122
123+ /**
124+ * Cover Page
125+ */
126+ export function renderCover ( content ) {
127+ renderCover . dom = renderCover . dom || document . querySelector ( 'section.cover' )
128+ if ( ! content ) {
129+ renderCover . dom . classList . add ( 'hidden' )
130+ } else {
131+ renderCover . dom . classList . remove ( 'hidden' )
132+ ! renderCover . rendered && renderTo ( '.cover-main' , marked ( content ) )
133+ renderCover . rendered = true
134+ }
135+ }
136+
113137/**
114138 * render loading bar
115139 * @return {[type] } [description]
0 commit comments