Echo/node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs.map
2021-02-11 21:31:41 +08:00

1 line
5.6 KiB
Plaintext

{"version":3,"file":"markdownItAnchor.mjs","sources":["../index.js"],"sourcesContent":["const slugify = (s) => encodeURIComponent(String(s).trim().toLowerCase().replace(/\\s+/g, '-'))\n\nconst position = {\n false: 'push',\n true: 'unshift'\n}\n\nconst hasProp = Object.prototype.hasOwnProperty\n\nconst permalinkHref = slug => `#${slug}`\nconst permalinkAttrs = slug => ({})\n\nconst renderPermalink = (slug, opts, state, idx) => {\n const space = () => Object.assign(new state.Token('text', '', 0), { content: ' ' })\n\n const linkTokens = [\n Object.assign(new state.Token('link_open', 'a', 1), {\n attrs: [\n ['class', opts.permalinkClass],\n ['href', opts.permalinkHref(slug, state)],\n ...Object.entries(opts.permalinkAttrs(slug, state))\n ]\n }),\n Object.assign(new state.Token('html_block', '', 0), { content: opts.permalinkSymbol }),\n new state.Token('link_close', 'a', -1)\n ]\n\n // `push` or `unshift` according to position option.\n // Space is at the opposite side.\n if (opts.permalinkSpace) {\n linkTokens[position[!opts.permalinkBefore]](space())\n }\n state.tokens[idx + 1].children[position[opts.permalinkBefore]](...linkTokens)\n}\n\nconst uniqueSlug = (slug, slugs, failOnNonUnique) => {\n let uniq = slug\n let i = 2\n if (failOnNonUnique && hasProp.call(slugs, uniq)) {\n throw Error(`User defined id attribute '${slug}' is NOT unique. Please fix it in your markdown to continue.`)\n } else {\n while (hasProp.call(slugs, uniq)) uniq = `${slug}-${i++}`\n }\n slugs[uniq] = true\n return uniq\n}\n\nconst isLevelSelectedNumber = selection => level => level >= selection\nconst isLevelSelectedArray = selection => level => selection.includes(level)\n\nconst anchor = (md, opts) => {\n opts = Object.assign({}, anchor.defaults, opts)\n\n md.core.ruler.push('anchor', state => {\n const slugs = {}\n const tokens = state.tokens\n\n const isLevelSelected = Array.isArray(opts.level)\n ? isLevelSelectedArray(opts.level)\n : isLevelSelectedNumber(opts.level)\n\n tokens\n .filter(token => token.type === 'heading_open')\n .filter(token => isLevelSelected(Number(token.tag.substr(1))))\n .forEach(token => {\n // Aggregate the next token children text.\n const title = tokens[tokens.indexOf(token) + 1]\n .children\n .filter(token => token.type === 'text' || token.type === 'code_inline')\n .reduce((acc, t) => acc + t.content, '')\n\n let slug = token.attrGet('id')\n\n if (slug == null) {\n slug = uniqueSlug(opts.slugify(title), slugs, false)\n } else {\n slug = uniqueSlug(slug, slugs, true)\n }\n token.attrSet('id', slug)\n\n if (opts.permalink) {\n opts.renderPermalink(slug, opts, state, tokens.indexOf(token))\n }\n\n if (opts.callback) {\n opts.callback(token, { slug, title })\n }\n })\n })\n}\n\nanchor.defaults = {\n level: 1,\n slugify,\n permalink: false,\n renderPermalink,\n permalinkClass: 'header-anchor',\n permalinkSpace: true,\n permalinkSymbol: '¶',\n permalinkBefore: false,\n permalinkHref,\n permalinkAttrs\n}\n\nexport default anchor\n"],"names":["position","false","true","hasProp","Object","prototype","hasOwnProperty","uniqueSlug","slug","slugs","failOnNonUnique","uniq","i","call","Error","anchor","md","opts","assign","defaults","core","ruler","push","state","selection","tokens","isLevelSelected","Array","isArray","level","includes","isLevelSelectedNumber","filter","token","type","Number","tag","substr","forEach","title","indexOf","children","reduce","acc","t","content","attrGet","slugify","attrSet","permalink","renderPermalink","callback","s","encodeURIComponent","String","trim","toLowerCase","replace","idx","linkTokens","Token","attrs","permalinkClass","permalinkHref","entries","permalinkAttrs","permalinkSymbol","permalinkSpace","permalinkBefore"],"mappings":"AAAA,IAEMA,EAAW,CACfC,MAAO,OACPC,KAAM,WAGFC,EAAUC,OAAOC,UAAUC,eA4B3BC,EAAa,SAACC,EAAMC,EAAOC,GAC/B,IAAIC,EAAOH,EACPI,EAAI,EACR,GAAIF,GAAmBP,EAAQU,KAAKJ,EAAOE,GACzC,MAAMG,oCAAoCN,kEAE1C,KAAOL,EAAQU,KAAKJ,EAAOE,IAAOA,EAAUH,MAAQI,IAGtD,OADAH,EAAME,IAAQ,EACPA,GAMHI,EAAS,SAATA,EAAUC,EAAIC,GAClBA,EAAOb,OAAOc,OAAO,GAAIH,EAAOI,SAAUF,GAE1CD,EAAGI,KAAKC,MAAMC,KAAK,SAAU,SAAAC,GAC3B,IANyBC,EAMnBf,EAAQ,GACRgB,EAASF,EAAME,OAEfC,EAAkBC,MAAMC,QAAQX,EAAKY,QATlBL,EAUAP,EAAKY,eAVQA,UAASL,EAAUM,SAASD,KADxC,SAAAL,mBAAaK,UAASA,GAASL,GAYrDO,CAAsBd,EAAKY,OAE/BJ,EACGO,OAAO,SAAAC,SAAwB,iBAAfA,EAAMC,OACtBF,OAAO,SAAAC,UAASP,EAAgBS,OAAOF,EAAMG,IAAIC,OAAO,OACxDC,QAAQ,SAAAL,GAEP,IAAMM,EAAQd,EAAOA,EAAOe,QAAQP,GAAS,GAC1CQ,SACAT,OAAO,SAAAC,SAAwB,SAAfA,EAAMC,MAAkC,gBAAfD,EAAMC,OAC/CQ,OAAO,SAACC,EAAKC,UAAMD,EAAMC,EAAEC,SAAS,IAEnCrC,EAAOyB,EAAMa,QAAQ,MAGvBtC,EADU,MAARA,EACKD,EAAWU,EAAK8B,QAAQR,GAAQ9B,GAAO,GAEvCF,EAAWC,EAAMC,GAAO,GAEjCwB,EAAMe,QAAQ,KAAMxC,GAEhBS,EAAKgC,WACPhC,EAAKiC,gBAAgB1C,EAAMS,EAAMM,EAAOE,EAAOe,QAAQP,IAGrDhB,EAAKkC,UACPlC,EAAKkC,SAASlB,EAAO,CAAEzB,KAAAA,EAAM+B,MAAAA,SAMvCxB,EAAOI,SAAW,CAChBU,MAAO,EACPkB,QA7Fc,SAACK,UAAMC,mBAAmBC,OAAOF,GAAGG,OAAOC,cAAcC,QAAQ,OAAQ,OA8FvFR,WAAW,EACXC,gBAnFsB,SAAC1C,EAAMS,EAAMM,EAAOmC,SAGpCC,EAAa,CACjBvD,OAAOc,OAAO,IAAIK,EAAMqC,MAAM,YAAa,IAAK,GAAI,CAClDC,OACE,CAAC,QAAS5C,EAAK6C,gBACf,CAAC,OAAQ7C,EAAK8C,cAAcvD,EAAMe,YAC/BnB,OAAO4D,QAAQ/C,EAAKgD,eAAezD,EAAMe,OAGhDnB,OAAOc,OAAO,IAAIK,EAAMqC,MAAM,aAAc,GAAI,GAAI,CAAEf,QAAS5B,EAAKiD,kBACpE,IAAI3C,EAAMqC,MAAM,aAAc,KAAM,IAKlC3C,EAAKkD,gBACPR,EAAW3D,GAAUiB,EAAKmD,kBAjBRhE,OAAOc,OAAO,IAAIK,EAAMqC,MAAM,OAAQ,GAAI,GAAI,CAAEf,QAAS,UAmB7EtB,EAAME,OAAOiC,EAAM,GAAGjB,UAASzC,EAASiB,EAAKmD,0BAAqBT,IAgElEG,eAAgB,gBAChBK,gBAAgB,EAChBD,gBAAiB,IACjBE,iBAAiB,EACjBL,cA3FoB,SAAAvD,aAAYA,GA4FhCyD,eA3FqB,SAAAzD,SAAS"}