showdown-toc
Version:
A showdown extension to output toc info.
2 lines (1 loc) • 2.24 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).showdownToc=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function r(e,r,n){return(r=t(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.toc,o=t.opts;return function(){return[{type:"output",filter:function(t){var i=[];t.replace(/(<h([1-6]).*?id="([^"]*?)".*?>(.+?)<\/h[1-6]>)|(<p>\[toc\]<\/p>)/g,(function(t,o,c,u,f){if("<p>[toc]</p>"===t)i.push({type:"toc"});else{f=f.replace(/<[^>]+>/g,"");var p={anchor:u,level:Number(c),text:f};n&&n.push(p),i.push(function(t){for(var n=1;arguments.length>n;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?e(Object(o),!0).forEach((function(e){r(t,e,o[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):e(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))}))}return t}({type:"header"},p))}return""}));var c=[];return i.forEach((function(e,t){if("toc"===e.type)if(i[t+1]&&"header"===i[t+1].type){for(var r=[],n=i[t+1].level,o=t+1;i.length>o&&"toc"!==i[o].type;o++){i[o].level===n&&r.push(i[o])}c.push(r)}else c.push([])})),t=t.replace(/<p>\[toc\]<\/p>[\n]*/g,(function(){var e=c.shift();if(e&&e.length){var t=(null==o?void 0:o.listType)||"ol";return"<".concat(t,' class="showdown-toc">').concat(e.map((function(e){var t=e.text;return'<li><a href="#'.concat(e.anchor,'">').concat(t,"</a></li>")})).join(""),"</").concat(t,">\n")}return""}))}}]}}}));