{"version":3,"file":"toc.mjs","sources":["../../../../../../../packages/components/editor-md/src/plugins/toc.ts"],"sourcesContent":["import { cloneDeep } from 'lodash-unified'\nimport Token from 'markdown-it/lib/token.mjs'\n\nconst TOC = '[toc]'\nconst TOC_RE = /^\\[toc\\]/im\nconst repeatAsterisk = (string: string, num: number) =>\n  `${Array.from({ length: num + 1 }).join(string)}*`\nconst safeString = (str: string) => {\n  return str\n    .toLowerCase()\n    .trim()\n    .replace(/<[!/a-z].*?>/gi, '')\n    .replace(\n      /[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g,\n      ''\n    )\n    .replace(/\\s/g, '-')\n}\n\nlet mdInstance: any = null\nexport default function (md: any, options: Record<string, any>) {\n  const opts: Record<string, any> = {\n    maxLevel: 6,\n    ...options,\n  }\n  let tocHtml = ''\n  mdInstance = cloneDeep(md)\n\n  const generateTree = (headings: Array<any>) => {\n    const tree: Record<'nodes', Array<any>> = { nodes: [] }\n    headings.forEach((heading) => {\n      if (heading.level > opts.maxLevel) {\n        return\n      }\n\n      let lastItem = tree\n      for (let i = 1; i < heading.level; i++) {\n        if (lastItem.nodes.length === 0) {\n          lastItem.nodes.push({\n            heading: {},\n            nodes: [],\n          })\n        }\n        lastItem = lastItem.nodes[lastItem.nodes.length - 1]\n      }\n      lastItem.nodes.push({\n        heading,\n        nodes: [],\n      })\n    })\n    return tree\n  }\n\n  md.core.ruler.push('init_toc', (state: any) => {\n    const tokens = state.tokens\n    const headings = []\n    let tocTokens = []\n    for (let i = 0; i < tokens.length; i++) {\n      if (tokens[i].type === 'heading_close') {\n        const heading = tokens[i - 1]\n        const headingClose = tokens[i]\n        if (heading.type === 'inline') {\n          let content\n          if (\n            heading.children &&\n            heading.children.length > 0 &&\n            heading.children[0].type === 'link_open'\n          ) {\n            content = heading.children[1].content\n            heading._tocAnchor = safeString(content)\n          } else {\n            content = heading.content\n            heading._tocAnchor = safeString(\n              heading.children.reduce((s: any, t: any) => s + t.content, '')\n            )\n          }\n          headings.push({\n            content,\n            anchor: safeString(content),\n            level: Number(headingClose.tag.slice(1, 2)),\n          })\n        }\n      }\n    }\n    const tocTree = generateTree(headings)\n    const headerRecord = new Map<string, number>()\n    const tocTree2Html = (nodes: any[], indent = 0) => {\n      return nodes\n        .map((item: any) => {\n          let node = `${\n            item.heading.content ? repeatAsterisk('  ', indent) : ''\n          }`\n          if (item.heading.content) {\n            if (headerRecord.has(item.heading.anchor)) {\n              headerRecord.set(\n                item.heading.anchor,\n                headerRecord.get(item.heading.anchor)! + 1\n              )\n              node += ` [${item.heading.content}](#${\n                item.heading.anchor\n              }-${headerRecord.get(item.heading.anchor)})\\n`\n            } else {\n              headerRecord.set(item.heading.anchor, 0)\n              node += ` [${item.heading.content}](#${item.heading.anchor})\\n`\n            }\n          } else {\n            node += '\\n'\n          }\n          if (item.nodes.length) {\n            node += item.heading.content\n              ? tocTree2Html(item.nodes, indent + 1)\n              : tocTree2Html(item.nodes, indent)\n          }\n          return node\n        })\n        .join('')\n    }\n    const toc = tocTree2Html(tocTree.nodes)\n    tocTokens = mdInstance.parse(toc, {})\n    tocHtml = mdInstance.renderer.render(tocTokens, mdInstance.options)\n  })\n\n  md.inline.ruler.after('emphasis', 'toc', (state: any, silent: any) => {\n    let token\n    let match\n\n    if (silent) {\n      return false\n    }\n    match = TOC_RE.exec(state.src)\n    match = !match ? [] : match.filter((m) => m)\n    if (match.length < 1) {\n      return false\n    }\n    token = state.push('toc_open', 'toc', 1)\n    token.markup = TOC\n    token = state.push('toc_body', '', 0)\n    token = state.push('toc_close', 'toc', -1)\n\n    state.pos = state.pos + TOC.length\n    return true\n  })\n\n  const space = () => {\n    return { ...new Token('text', '', 0), content: ' ' }\n  }\n\n  const renderAnchorLink = (\n    anchor: any,\n    linkOptions: Record<string, any>,\n    tokens: any,\n    idx: number\n  ) => {\n    const attrs = []\n    if (\n      linkOptions.anchorClassName !== null &&\n      linkOptions.anchorClassName !== undefined\n    ) {\n      attrs.push(['class', linkOptions.anchorClassName])\n    }\n\n    attrs.push(['href', `#${anchor}`])\n\n    const openLinkToken = {\n      ...new Token('link_open', 'a', 1),\n      attrs,\n    }\n    const closeLinkToken = new Token('link_close', 'a', -1)\n\n    const renderAnchorLinkSymbol = () => {\n      if (linkOptions.anchorLinkSymbolClassName) {\n        return [\n          {\n            ...new Token('span_open', 'span', 1),\n            attrs: [['class', linkOptions.anchorLinkSymbolClassName]],\n          },\n          {\n            ...new Token('text', '', 0),\n            content: linkOptions.anchorLinkSymbol,\n          },\n          new Token('span_close', 'span', -1),\n        ]\n      } else {\n        return [\n          {\n            ...new Token('text', '', 0),\n            content: linkOptions.anchorLinkSymbol,\n          },\n        ]\n      }\n    }\n\n    if (linkOptions.wrapHeadingTextInAnchor) {\n      tokens[idx + 1].children.unshift(openLinkToken)\n      tokens[idx + 1].children.push(closeLinkToken)\n    } else {\n      const linkTokens: any = [\n        openLinkToken,\n        ...renderAnchorLinkSymbol(),\n        closeLinkToken,\n      ]\n\n      const actionOnArray: any = {\n        false: 'push',\n        true: 'unshift',\n      }\n\n      if (linkOptions.anchorLinkSpace) {\n        linkTokens[actionOnArray[linkOptions?.anchorLinkBefore]](space())\n      }\n      tokens[idx + 1].children[actionOnArray[linkOptions.anchorLinkBefore]](\n        ...linkTokens\n      )\n    }\n  }\n\n  const originalHeadingOpen =\n    md.renderer.rules.heading_open ||\n    function (...args: any[]) {\n      const [tokens, idx, , , self] = args\n      return self.renderToken(tokens, idx, options)\n    }\n\n  md.renderer.rules.heading_open = function (...args: any[]) {\n    const [tokens, idx, , ,] = args\n\n    const attrs = (tokens[idx].attrs = tokens[idx].attrs || [])\n    const anchor = tokens[idx + 1]._tocAnchor\n    attrs.push(['id', anchor])\n\n    if (opts.anchorLink) {\n      renderAnchorLink(anchor, opts, tokens, idx)\n    }\n\n    return originalHeadingOpen.apply(this, args)\n  }\n\n  md.renderer.rules.toc_open = () => ''\n  md.renderer.rules.toc_close = () => ''\n  md.renderer.rules.toc_body = () => tocHtml\n}\n"],"names":[],"mappings":"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"}