UNPKG

ink-docstrap

Version:

[![NPM](https://nodei.co/npm/ink-docstrap.png?downloads=true)](https://nodei.co/npm/ink-docstrap/)

4 lines 7.01 kB
/*! jquery.tocify - v1.4.0 - 2013-04-07 * http://gregfranko.com/jquery.tocify.js/ * Copyright (c) 2013 Greg Franko; Licensed MIT*/ (function(e){"use strict";e(window.jQuery,window,document)})(function(e,t,s){"use strict";e.widget("toc.tocify",{version:"1.4.0",options:{context:"body",selectors:"h1, h2, h3",showAndHide:!0,showEffect:"slideDown",showEffectSpeed:"medium",hideEffect:"slideUp",hideEffectSpeed:"medium",smoothScroll:!0,smoothScrollSpeed:"medium",scrollTo:0,showAndHideOnScroll:!0,highlightOnScroll:!0,highlightOffset:40,theme:"bootstrap",extendPage:!0,extendPageOffset:100,history:!0,hashGenerator:"compact",highlightDefault:!0},_create:function(){var s=this;s.extendPageScroll=!0,s.items=[],s._generateToc(),s._addCSSClasses(),s.webkit=function(){for(var e in t)if(e&&-1!==e.toLowerCase().indexOf("webkit"))return!0;return!1}(),s._setEventHandlers(),e(t).load(function(){s._setActiveElement(!0),e("html, body").promise().done(function(){setTimeout(function(){s.extendPageScroll=!1},0)})})},_generateToc:function(){var t,s,i=this;t=-1!==this.options.selectors.indexOf(",")?e(this.options.context).find(this.options.selectors.replace(/ /g,"").substr(0,this.options.selectors.indexOf(","))):e(this.options.context).find(this.options.selectors.replace(/ /g,"")),t.each(function(t){s=e("<ul/>",{id:"Header"+t,"class":"header"}).append(i._nestElements(e(this),t)),i.element.append(s),e(this).nextUntil(this.nodeName.toLowerCase()).each(function(){0===e(this).find(i.options.selectors).length?e(this).filter(i.options.selectors).each(function(){i._appendSubheaders.call(this,i,s)}):e(this).find(i.options.selectors).each(function(){i._appendSubheaders.call(this,i,s)})})})},_setActiveElement:function(e){var s=this,i=t.location.hash.substring(1),n=s.element.find("li[data-unique='"+i+"']");return i.length?(s.element.find("."+s.focusClass).removeClass(s.focusClass),n.addClass(s.focusClass),s.options.showAndHide&&n.click()):(s.element.find("."+s.focusClass).removeClass(s.focusClass),!i.length&&e&&s.options.highlightDefault&&s.element.find(".item").first().addClass(s.focusClass)),s},_nestElements:function(t,s){var i,n,o;return i=e.grep(this.items,function(e){return e===t.text()}),i.length?this.items.push(t.text()+s):this.items.push(t.text()),o=this._generateHashValue(i,t,s),n=e("<li/>",{"class":"item","data-unique":o}).append(e("<a/>",{text:t.text()})),t.before(e("<div/>",{name:o,"data-unique":o})),n},_generateHashValue:function(e,t,s){var i="",n=this.options.hashGenerator;if("pretty"===n){for(i=t.text().toLowerCase().replace(/\s/g,"-");i.indexOf("--")>-1;)i=i.replace(/--/g,"-");for(;i.indexOf(":-")>-1;)i=i.replace(/:-/g,"-")}else i="function"==typeof n?n(t.text(),t):t.text().replace(/\s/g,"");return e.length&&(i+=""+s),i},_appendSubheaders:function(t,s){var i=e(this).index(t.options.selectors),n=e(t.options.selectors).eq(i-1),o=+e(this).prop("tagName").charAt(1),a=+n.prop("tagName").charAt(1);a>o?t.element.find(".sub-header[data-tag="+o+"]").last().append(t._nestElements(e(this),i)):o===a?s.find(".item").last().after(t._nestElements(e(this),i)):s.find(".item").last().after(e("<ul/>",{"class":"sub-header","data-tag":o})).next(".sub-header").append(t._nestElements(e(this),i))},_setEventHandlers:function(){var i=this;this.element.on("click.tocify","li",function(){if(i.options.history&&(t.location.hash=e(this).attr("data-unique")),i.element.find("."+i.focusClass).removeClass(i.focusClass),e(this).addClass(i.focusClass),i.options.showAndHide){var s=e('li[data-unique="'+e(this).attr("data-unique")+'"]');i._triggerShow(s)}i._scrollTo(e(this))}),this.element.find("li").on({"mouseenter.tocify":function(){e(this).addClass(i.hoverClass),e(this).css("cursor","pointer")},"mouseleave.tocify":function(){"bootstrap"!==i.options.theme&&e(this).removeClass(i.hoverClass)}}),e(t).on("scroll.tocify",function(){e("html, body").promise().done(function(){var n,o,a,d,h=e(t).scrollTop(),r=e(t).height(),l=e(s).height(),c=e("body")[0].scrollHeight;i.options.extendPage&&(i.webkit&&h>=c-r-i.options.extendPageOffset||!i.webkit&&r+h>l-i.options.extendPageOffset)&&(e(".tocify-extend-page").length||(o=e('div[data-unique="'+e(".item").last().attr("data-unique")+'"]'),a=o.offset().top,e(i.options.context).append(e("<div />",{"class":"tocify-extend-page",height:Math.abs(a-h)+"px","data-unique":"tocify-extend-page"})),i.extendPageScroll&&(d=i.element.find("li.active"),i._scrollTo(e("div[data-unique="+d.attr("data-unique")+"]"))))),setTimeout(function(){e(i.options.context).find("div[data-unique]").next().each(function(){return Math.abs(e(this).offset().top-h)<i.options.highlightOffset?(n=e('li[data-unique="'+e(this).prev("div[data-unique]").attr("data-unique")+'"]'),i.options.highlightOnScroll&&n.length&&(i.element.find("."+i.focusClass).removeClass(i.focusClass),n.addClass(i.focusClass)),i.options.showAndHideOnScroll&&i.options.showAndHide&&i._triggerShow(n,!0),!1):undefined})},0)})}),"onhashchange"in t&&(t.onhashchange=function(){i._setActiveElement()})},show:function(t){var s=this;if(!t.is(":visible"))switch(t.find(".sub-header").length||t.parent().is(".header")||t.parent().is(":visible")?t.children(".sub-header").length||t.parent().is(".header")||(t=t.closest(".sub-header")):t=t.parents(".sub-header").add(t),s.options.showEffect){case"none":t.show();break;case"show":t.show(s.options.showEffectSpeed);break;case"slideDown":t.slideDown(s.options.showEffectSpeed);break;case"fadeIn":t.fadeIn(s.options.showEffectSpeed);break;default:t.show()}return t.parent().is(".header")?s.hide(e(".sub-header").not(t)):s.hide(e(".sub-header").not(t.closest(".header").find(".sub-header").not(t.siblings()))),s},hide:function(e){var t=this;switch(t.options.hideEffect){case"none":e.hide();break;case"hide":e.hide(t.options.hideEffectSpeed);break;case"slideUp":e.slideUp(t.options.hideEffectSpeed);break;case"fadeOut":e.fadeOut(t.options.hideEffectSpeed);break;default:e.hide()}return t},_triggerShow:function(e,t){var s=this;return e.parent().is(".header")||e.next().is(".sub-header")?s.show(e.next(".sub-header"),t):e.parent().is(".sub-header")&&s.show(e.parent(),t),s},_addCSSClasses:function(){return"jqueryui"===this.options.theme?(this.focusClass="ui-state-default",this.hoverClass="ui-state-hover",this.element.addClass("ui-widget").find(".toc-title").addClass("ui-widget-header").end().find("li").addClass("ui-widget-content")):"bootstrap"===this.options.theme?(this.element.addClass("bs-docs-sidebar").find(".header, .sub-header").addClass("nav nav-list bs-docs-sidenav"),this.focusClass="active"):(this.focusClass="tocify-focus",this.hoverClass="tocify-hover"),this},setOption:function(){e.Widget.prototype._setOption.apply(this,arguments)},setOptions:function(){e.Widget.prototype._setOptions.apply(this,arguments)},_scrollTo:function(t){var s=this,i=s.options.smoothScroll||0;return e("html, body").promise().done(function(){e("html, body").animate({scrollTop:e('div[data-unique="'+t.attr("data-unique")+'"]').offset().top-s.options.scrollTo+"px"},{duration:i})}),s}})});