{"version":3,"sources":["jsdelivr-header.js","/npm/mdx-table-of-contents@0.1.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,MAAQ,QAAQ,+BAA+B,MAErD,SAAS,mBAAmB,EAAU,CAAC,GACrC,IACI,EADA,EAAc,KAAK,SAavB,OAVA,KAAK,SAAW,IACd,IAAI,EAAO,EAAY,EAAM,CAAC,EAAG,GAMjC,OAJK,EAAK,2BACR,GAAQ,uDAAuD,8BAA8B,EAAK,sBAG7F,GAGF,SAAqB,GAC1B,EAAO,QAAQ,EAAM,EACvB,CACF,CAEA,SAAS,QAAQ,GAAM,wBAAE,EAA0B,EAAC,wBAAE,EAA0B,GAAM,CAAC,GACrF,IAAI,EAAO,CACT,sBAAsB,EACtB,0BAA0B,EAC1B,gBAAiB,IAGf,EAAW,GACX,EAAqB,CAAC,EAE1B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,SAAS,OAAQ,IAAK,CAC7C,IAAI,EAAO,EAAK,SAAS,GAMzB,GAJkB,WAAd,EAAK,OAAgE,IAA3C,EAAK,MAAM,QAAQ,qBAC/C,EAAK,0BAA2B,GAGhB,YAAd,EAAK,MAAsB,QAAQ,KAAK,EAAK,SAAU,CACzD,IAAI,EAAQ,SAAS,EAAK,QAAQ,IAClC,GAAI,GAAS,GAA2B,GAAS,EAAyB,CACxE,IAAI,EAAK,EAAK,WAAW,GACzB,EAAS,EAAQ,GAAK,EACtB,IAAI,EAAS,EAAmB,EAAS,EAAQ,IAC7C,EAAO,CACT,KACA,QACA,MAAO,WAAW,EAAK,UACvB,SAAU,IAER,EACF,EAAO,SAAS,KAAK,GAGrB,EAAK,gBAAgB,KAAK,GAE5B,EAAmB,GAAM,CAC3B,CACF,CACF,CAEA,OAAO,CACT,CAEA,SAAS,WAAW,GAClB,OAAqB,IAAjB,EAAM,QAAkC,SAAlB,EAAM,GAAG,KAC1B,KAAK,UAAU,EAAM,GAAG,OAGxB,mBAAmB,EAAM,IAAI,OAAO,KAAK,IAAI,mBAExD,CAEA,SAAS,8BAA8B,EAAO,EAAS,GACrD,OAAO,aAAa,EAAQ,QAC1B,EAAM,KAAI,GAAQ,8BAA8B,EAAM,EAAS,KAAI,KAAK,YAE5E,CAEA,SAAS,8BAA8B,EAAM,EAAS,GACpD,OAAO,aAAa,EAAQ,YACtB,KAAK,UAAU,EAAK,kBACjB,EAAK,oBACL,EAAK,uBACF,8BAA8B,EAAK,SAAU,EAAS,QAEpE,CAEA,SAAS,aAAa,EAAM,GAC1B,OAAO,EAAO,MAAM,MAAM,KAAI,GAAK,IAAI,OAAO,GAAM,IAAG,KAAK,MAAM,MACpE,CAEA,OAAO,QAAU","file":"/npm/mdx-table-of-contents@0.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/mdx-table-of-contents@0.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const toJSX = require('@mdx-js/mdx/mdx-hast-to-jsx').toJSX\n\nfunction mdxTableOfContents(options = {}) {\n  let OldCompiler = this.Compiler\n  let info\n\n  this.Compiler = tree => {\n    let code = OldCompiler(tree, {}, options)\n    \n    if (!info.hasTableOfContentsExport) {\n      code += `\\nexport const tableOfContents = (components={}) => ${tableOfContentsListSerializer(info.tableOfContents)}\\n`\n    }\n\n    return code\n  }\n\n  return function transformer(node) {\n    info = getInfo(node, options)\n  }\n}\n\nfunction getInfo(root, { minTableOfContentsLevel = 2, maxTableOfContentsLevel = 3 } = {}) {\n  let info = {\n    hasFrontMatterExport: false,\n    hasTableOfContentsExport: false,\n    tableOfContents: []\n  }\n\n  let levelIds = []\n  let tableOfContentsIds = {}\n\n  for (let i = 0; i < root.children.length; i++) {\n    let node = root.children[i]\n\n    if (node.type === 'export' && node.value.indexOf('tableOfContents') !== -1) {\n      info.hasTableOfContentsExport = true\n    }\n          \n    if (node.type === 'element' && /^h\\d$/.test(node.tagName)) {\n      let level = parseInt(node.tagName[1])\n      if (level >= minTableOfContentsLevel && level <= maxTableOfContentsLevel) {\n        let id = node.properties.id\n        levelIds[level - 1] = id\n        let parent = tableOfContentsIds[levelIds[level - 2]]\n        let item = {\n          id,\n          level,\n          title: toFragment(node.children),\n          children: [],\n        }\n        if (parent) {\n          parent.children.push(item)\n        }\n        else {\n          info.tableOfContents.push(item)\n        }\n        tableOfContentsIds[id] = item\n      }\n    }\n  }\n\n  return info\n}\n\nfunction toFragment(nodes) {\n  if (nodes.length === 1 && nodes[0].type === 'text') {\n    return JSON.stringify(nodes[0].value)\n  }\n  else {\n    return '<React.Fragment>'+nodes.map(toJSX).join('')+'</React.Fragment>'\n  }\n}\n\nfunction tableOfContentsListSerializer(nodes, indent = 0) {\n  return indentString(indent, `[\n  ${nodes.map(node => tableOfContentsNodeSerializer(node, indent + 2)).join(',\\n')}\n]`)\n}\n\nfunction tableOfContentsNodeSerializer(node, indent = 0) {\n  return indentString(indent, `{\n  id: ${JSON.stringify(node.id)},\n  level: ${node.level},\n  title: ${node.title},\n  children: ${tableOfContentsListSerializer(node.children, indent + 2)}\n}`)\n}\n\nfunction indentString(size, string) {\n  return string.split('\\n').map(x => ' '.repeat(size)+x).join('\\n').trim()\n}\n\nmodule.exports = mdxTableOfContents"]}