UNPKG

doc-n-toc

Version:

Build a simple, slick, single page manual for your project with Markdown

8 lines 1.5 kB
/*! * toc - jQuery Table of Contents Plugin * v0.1.2 * http://projects.jga.me/toc/ * copyright Greg Allen 2013 * MIT License */ !function(a){a.fn.toc=function(b){var c,d=this,e=a.extend({},jQuery.fn.toc.defaults,b),f=a(e.container),g=a(e.selectors,f),h=e.prefix+"-active",i=400,j=function(b){if(e.smoothScrolling){b.preventDefault();var c=a(b.target).attr("href"),g=a(c);f.animate({scrollTop:g.offset().top},i,"swing",function(){location.hash=c,k()})}a("li",d).removeClass(h),a(b.target).parent().addClass(h)},k=function(){c&&clearTimeout(c),c=setTimeout(function(){for(var b,c=f.scrollTop(),i=0,j=g.length;j>i&&(b=a("li:eq("+i+")",d),!(g[i].offsetTop>=c));i++);a("li",d).removeClass(h),b.addClass(h),e.onHighlight(b[0])},i)};return e.highlightOnScroll&&(f.bind("scroll",k),k()),this.each(function(){var b=a(this),c=a("<ul/>");g.each(function(d,f){var g=a(f);a("<span/>").attr("id",e.anchorName(d,f,e.prefix)).insertBefore(g);var h=a("<a/>").text(e.headerText(d,f,g)).attr("href","#"+e.anchorName(d,f,e.prefix)).bind("click",function(c){j(c),b.trigger("selected",a(this).attr("href"))}),i=a("<li/>").addClass(e.itemClass(d,f,g,e.prefix)).append(h);c.append(i)}),b.html(c)})},jQuery.fn.toc.defaults={container:"body",selectors:"h1,h2,h3",smoothScrolling:!0,prefix:"toc",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(a,b,c){return c+a},headerText:function(a,b,c){return c.text()},itemClass:function(a,b,c,d){return d+"-"+c[0].tagName.toLowerCase()}}}(jQuery);