UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 1.69 kB
{"version":3,"file":"remarkCustomFootnotes.mjs","names":["linkData: FootnoteLink | null"],"sources":["../../../src/Markdown/plugins/remarkCustomFootnotes.ts"],"sourcesContent":["import { Node } from 'unist';\nimport { SKIP, visit } from 'unist-util-visit';\n\nexport interface FootnoteLink {\n alt?: string;\n title?: string;\n url: string;\n}\n\n// eslint-disable-next-line unicorn/consistent-function-scoping\nexport const remarkCustomFootnotes = () => (tree: any, file: any) => {\n const footnoteLinks = new Map();\n\n visit(tree, 'footnoteDefinition', (node) => {\n let linkData: FootnoteLink | null = null;\n\n // 查找第一个link类型的子节点\n visit(node, 'link', (linkNode) => {\n if (linkData) return SKIP; // 只取第一个链接\n\n // 提取链接文本\n const textNode = linkNode.children.find((n: Node) => n.type === 'text');\n\n linkData = {\n alt: textNode?.value || '',\n title: textNode?.value || '',\n url: linkNode.url, // 或者根据需求处理\n };\n\n return SKIP; // 找到后停止遍历\n });\n\n if (linkData) {\n footnoteLinks.set(node.identifier, linkData);\n }\n });\n\n // 将数据存入文件上下文\n file.data.footnoteLinks = Object.fromEntries(footnoteLinks);\n};\n"],"mappings":";;;;AAUA,MAAa,+BAA+B,MAAW,SAAc;CACnE,MAAM,gCAAgB,IAAI,KAAK;AAE/B,OAAM,MAAM,uBAAuB,SAAS;EAC1C,IAAIA,WAAgC;AAGpC,QAAM,MAAM,SAAS,aAAa;AAChC,OAAI,SAAU,QAAO;GAGrB,MAAM,WAAW,SAAS,SAAS,MAAM,MAAY,EAAE,SAAS,OAAO;AAEvE,cAAW;IACT,KAAK,UAAU,SAAS;IACxB,OAAO,UAAU,SAAS;IAC1B,KAAK,SAAS;IACf;AAED,UAAO;IACP;AAEF,MAAI,SACF,eAAc,IAAI,KAAK,YAAY,SAAS;GAE9C;AAGF,MAAK,KAAK,gBAAgB,OAAO,YAAY,cAAc"}