{"version":3,"sources":["jsdelivr-header.js","/npm/marklassian@1.0.2/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCNS,WAAc,gBAChB,SAAS,cAAc,GAE1B,MAAO,CACH,QAAS,EACT,KAAM,MACN,QAAS,YAJE,OAAO,MAAM,IAMhC,CACA,SAAS,YAAY,GACjB,OAAK,EAEE,EACF,KAAK,IACN,OAAQ,EAAM,MACV,IAAK,YACD,OAAO,iBAAiB,EAAM,QAClC,IAAK,UACD,MAAO,CACH,KAAM,UACN,MAAO,CAAE,MAAO,EAAM,OACtB,QAAS,YAAY,EAAM,SAEnC,IAAK,OACD,MAAO,CACH,KAAM,EAAM,QAAU,cAAgB,gBAClC,EAAM,QAAU,CAAE,MAAO,CAAE,MAAO,EAAM,OAAS,IAAQ,CAAC,EAC9D,QAAS,EAAM,MAAM,KAAK,GAAS,gBAAgB,MAE3D,IAAK,OACD,MAAO,CACH,KAAM,YACN,MAAO,CAAE,SAAU,EAAM,MAAQ,QACjC,QAAS,CACL,CACI,KAAM,OACN,KAAM,EAAM,QAI5B,IAAK,aACD,MAAO,CACH,KAAM,aACN,QAAS,YAAY,EAAM,SAEnC,IAAK,KACD,MAAO,CAAE,KAAM,QACnB,IAAK,QACD,OAAO,aAAa,GACxB,QACI,OAAO,KACf,IAEC,OAAO,SACP,OA3CM,EA4Cf,CACA,SAAS,gBAAgB,GACrB,MAAO,CACH,KAAM,cACN,MAAO,CACH,OAAQ,UAEZ,QAAS,CACL,CACI,KAAM,QACN,MAAO,CACH,KAAM,WACN,IAAK,EAAM,KACX,IAAK,EAAM,MAAQ,MAKvC,CACA,SAAS,aAAa,GAClB,MAAM,EAAU,EAAM,OAAO,KAAK,IAAW,CACzC,KAAM,cACN,QAAS,iBAAiB,EAAO,YAE/B,EAAO,EAAM,KAAK,KAAK,IAAQ,CACjC,KAAM,WACN,QAAS,EAAI,KAAK,IAAS,CACvB,KAAM,YACN,QAAS,iBAAiB,EAAK,gBAGjC,EAAU,GAOhB,OANI,EAAQ,QACR,EAAQ,KAAK,CACT,KAAM,WACN,QAAS,IAGV,CACH,KAAM,QACN,QAAS,EAAQ,OAAO,GAEhC,CACA,SAAS,iBAAiB,GACtB,IAAK,EACD,MAAO,GACX,GAAsB,IAAlB,EAAO,QAAoC,UAApB,EAAO,IAAI,KAClC,MAAO,CAAC,gBAAgB,EAAO,KAEnC,MAAM,EAAc,GACpB,IAAI,EAAyB,GAC7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACpC,MAAM,EAAQ,EAAO,GACD,UAAhB,GAAO,MACH,EAAuB,SACvB,EAAY,KAAK,CACb,KAAM,YACN,QAAS,YAAY,KAEzB,EAAyB,IAE7B,EAAY,KAAK,gBAAgB,KAGjC,EAAuB,KAAK,EAEpC,CAOA,OANI,EAAuB,QACvB,EAAY,KAAK,CACb,KAAM,YACN,QAAS,YAAY,KAGtB,CACX,CACA,SAAS,gBAAgB,GACrB,MAAM,EAAc,GACpB,IAAI,EAAyB,GAuC7B,OAtCC,EAAK,QAAU,IAAI,SAAS,IACzB,GAAmB,SAAf,EAAM,MACS,OAAf,EAAM,MACS,WAAf,EAAM,MACS,QAAf,EAAM,MACS,SAAf,EAAM,MACS,aAAf,EAAM,KACN,EAAuB,KAAK,QAU5B,GAPI,EAAuB,SACvB,EAAY,KAAK,CACb,KAAM,YACN,QAAS,YAAY,KAEzB,EAAyB,IAEV,SAAf,EAAM,KACN,EAAY,KAAK,CACb,KAAM,EAAM,QAAU,cAAgB,gBAClC,EAAM,QAAU,CAAE,MAAO,CAAE,MAAO,EAAM,OAAS,IAAQ,CAAC,EAC9D,QAAS,EAAM,MAAM,KAAK,GAAe,gBAAgB,WAG5D,CACD,MAAM,EAAY,YAAY,CAAC,IAC3B,EAAU,QACV,EAAY,QAAQ,EAE5B,CACJ,IAEA,EAAuB,QACvB,EAAY,KAAK,CACb,KAAM,YACN,QAAS,YAAY,KAGtB,CACH,KAAM,WACN,QAAS,EAEjB,CACA,SAAS,YAAY,GACjB,OAA6B,IAAzB,EAAM,QAAQ,QACd,EAAM,OAAO,IACb,SAAU,EAAM,OAAO,GAChB,YAAY,EAAM,OAAO,IAEhC,SAAU,EACH,EAAM,KACR,QAAQ,MAAO,IACf,QAAQ,MAAO,KACf,QAAQ,OAAQ,KAElB,EACX,CACA,SAAS,SAAS,EAAO,EAAQ,CAAC,GACX,OAAf,EAAM,MAAkB,EAAM,KAC9B,EAAM,GAAK,CAAE,KAAM,OAEJ,WAAf,EAAM,MAAsB,EAAM,SAClC,EAAM,OAAS,CAAE,KAAM,WAER,QAAf,EAAM,MAAmB,EAAM,SAC/B,EAAM,OAAS,CAAE,KAAM,WAER,SAAf,EAAM,OACN,EAAM,KAAO,CACT,KAAM,OACN,MAAO,CAAE,KAAM,EAAM,QAGV,aAAf,EAAM,MAAwB,EAAM,OACpC,EAAM,KAAO,CAAE,KAAM,SAEzB,MAAM,EAAY,EAAM,SAAS,GAC3B,EAAe,EAAM,QAAQ,QAAU,EAE7C,GAAI,GAA8B,IAAjB,EACb,OAAO,SAAS,EAAW,GAE/B,MAAM,EAAgB,OAAO,OAAO,GACpC,OAAI,EAAM,KAEC,EAAc,QAAQ,GAAuB,SAAd,EAAK,MAAiC,SAAd,EAAK,OAEhE,CACX,CACA,SAAS,YAAY,GACjB,OAAK,EAEE,EACF,SAAS,IACV,OAAQ,EAAM,MACV,IAAK,OACD,OAAI,EAAM,OACC,YAAY,EAAM,QAEtB,CACH,CACI,KAAM,OACN,KAAM,YAAY,MACd,EAAM,OAAS,CAAE,QAAS,YAAY,EAAM,SAAY,CAAC,IAGzE,IAAK,KACD,OAAQ,EAAM,QAAU,IAAI,KAAK,IAAM,CACnC,KAAM,OACN,KAAM,YAAY,GAClB,MAAO,SAAS,EAAG,CAAE,GAAI,CAAE,KAAM,YAEzC,IAAK,SACD,OAAQ,EAAM,QAAU,IAAI,KAAK,IAAM,CACnC,KAAM,OACN,KAAM,YAAY,GAClB,MAAO,SAAS,EAAG,CAAE,OAAQ,CAAE,KAAM,gBAE7C,IAAK,MACD,OAAQ,EAAM,QAAU,IAAI,KAAK,IAAM,CACnC,KAAM,OACN,KAAM,YAAY,GAClB,MAAO,SAAS,EAAG,CAAE,OAAQ,CAAE,KAAM,gBAE7C,IAAK,OAQL,IAAK,WACD,MAAO,CACH,CACI,KAAM,OACN,KAAM,YAAY,GAClB,MAAO,SAAS,KAG5B,IAAK,KACD,MAAO,CAAC,CAAE,KAAM,cACpB,QACI,MAAO,GACf,IAEC,QAAQ,KACS,SAAd,EAAK,OAAoB,EAAK,QAxD3B,EA6Df","file":"/npm/marklassian@1.0.2/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/marklassian@1.0.2/dist/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","import { marked } from \"marked\";\nexport function markdownToAdf(markdown) {\n    const tokens = marked.lexer(markdown);\n    return {\n        version: 1,\n        type: \"doc\",\n        content: tokensToAdf(tokens),\n    };\n}\nfunction tokensToAdf(tokens) {\n    if (!tokens)\n        return [];\n    return tokens\n        .map((token) => {\n        switch (token.type) {\n            case \"paragraph\":\n                return processParagraph(token.tokens);\n            case \"heading\":\n                return {\n                    type: \"heading\",\n                    attrs: { level: token.depth },\n                    content: inlineToAdf(token.tokens),\n                };\n            case \"list\":\n                return {\n                    type: token.ordered ? \"orderedList\" : \"bulletList\",\n                    ...(token.ordered ? { attrs: { order: token.start || 1 } } : {}),\n                    content: token.items.map((item) => processListItem(item)),\n                };\n            case \"code\":\n                return {\n                    type: \"codeBlock\",\n                    attrs: { language: token.lang || \"text\" },\n                    content: [\n                        {\n                            type: \"text\",\n                            text: token.text,\n                        },\n                    ],\n                };\n            case \"blockquote\":\n                return {\n                    type: \"blockquote\",\n                    content: tokensToAdf(token.tokens),\n                };\n            case \"hr\":\n                return { type: \"rule\" };\n            case \"table\":\n                return processTable(token);\n            default:\n                return null;\n        }\n    })\n        .filter(Boolean)\n        .flat();\n}\nfunction createMediaNode(token) {\n    return {\n        type: \"mediaSingle\",\n        attrs: {\n            layout: \"center\",\n        },\n        content: [\n            {\n                type: \"media\",\n                attrs: {\n                    type: \"external\",\n                    url: token.href,\n                    alt: token.text || \"\",\n                },\n            },\n        ],\n    };\n}\nfunction processTable(token) {\n    const headers = token.header.map((header) => ({\n        type: \"tableHeader\",\n        content: processParagraph(header.tokens),\n    }));\n    const rows = token.rows.map((row) => ({\n        type: \"tableRow\",\n        content: row.map((cell) => ({\n            type: \"tableCell\",\n            content: processParagraph(cell.tokens),\n        })),\n    }));\n    const content = [];\n    if (headers.length) {\n        content.push({\n            type: \"tableRow\",\n            content: headers,\n        });\n    }\n    return {\n        type: \"table\",\n        content: content.concat(rows),\n    };\n}\nfunction processParagraph(tokens) {\n    if (!tokens)\n        return [];\n    if (tokens.length === 1 && tokens[0]?.type === \"image\") {\n        return [createMediaNode(tokens[0])];\n    }\n    const outputNodes = [];\n    let currentParagraphTokens = [];\n    for (let i = 0; i < tokens.length; i++) {\n        const token = tokens[i];\n        if (token?.type === \"image\") {\n            if (currentParagraphTokens.length) {\n                outputNodes.push({\n                    type: \"paragraph\",\n                    content: inlineToAdf(currentParagraphTokens),\n                });\n                currentParagraphTokens = [];\n            }\n            outputNodes.push(createMediaNode(token));\n        }\n        else {\n            currentParagraphTokens.push(token);\n        }\n    }\n    if (currentParagraphTokens.length) {\n        outputNodes.push({\n            type: \"paragraph\",\n            content: inlineToAdf(currentParagraphTokens),\n        });\n    }\n    return outputNodes;\n}\nfunction processListItem(item) {\n    const itemContent = [];\n    let currentParagraphTokens = [];\n    (item.tokens || []).forEach((token) => {\n        if (token.type === \"text\" ||\n            token.type === \"em\" ||\n            token.type === \"strong\" ||\n            token.type === \"del\" ||\n            token.type === \"link\" ||\n            token.type === \"codespan\") {\n            currentParagraphTokens.push(token);\n        }\n        else {\n            if (currentParagraphTokens.length) {\n                itemContent.push({\n                    type: \"paragraph\",\n                    content: inlineToAdf(currentParagraphTokens),\n                });\n                currentParagraphTokens = [];\n            }\n            if (token.type === \"list\") {\n                itemContent.push({\n                    type: token.ordered ? \"orderedList\" : \"bulletList\",\n                    ...(token.ordered ? { attrs: { order: token.start || 1 } } : {}),\n                    content: token.items.map((nestedItem) => processListItem(nestedItem)),\n                });\n            }\n            else {\n                const processed = tokensToAdf([token]);\n                if (processed.length) {\n                    itemContent.push(...processed);\n                }\n            }\n        }\n    });\n    if (currentParagraphTokens.length) {\n        itemContent.push({\n            type: \"paragraph\",\n            content: inlineToAdf(currentParagraphTokens),\n        });\n    }\n    return {\n        type: \"listItem\",\n        content: itemContent,\n    };\n}\nfunction getSafeText(token) {\n    if (token.tokens?.length === 1 &&\n        token.tokens[0] &&\n        \"text\" in token.tokens[0]) {\n        return getSafeText(token.tokens[0]);\n    }\n    if (\"text\" in token) {\n        return token.text\n            .replace(/\\n$/, \"\")\n            .replace(/\\n/g, \" \")\n            .replace(/\\s+/g, \" \");\n    }\n    return \"\";\n}\nfunction getMarks(token, marks = {}) {\n    if (token.type === \"em\" && !marks.em) {\n        marks.em = { type: \"em\" };\n    }\n    if (token.type === \"strong\" && !marks.strong) {\n        marks.strong = { type: \"strong\" };\n    }\n    if (token.type === \"del\" && !marks.strike) {\n        marks.strike = { type: \"strike\" };\n    }\n    if (token.type === \"link\") {\n        marks.link = {\n            type: \"link\",\n            attrs: { href: token.href },\n        };\n    }\n    if (token.type === \"codespan\" && !marks.code) {\n        marks.code = { type: \"code\" };\n    }\n    const nextToken = token.tokens?.[0];\n    const tokensLength = token.tokens?.length ?? 0;\n    // Only continue recursion if there is only one nested token\n    if (nextToken && tokensLength === 1) {\n        return getMarks(nextToken, marks);\n    }\n    const resolvedMarks = Object.values(marks);\n    if (marks.code) {\n        // Code Inline mark only supports a link or annotation mark\n        return resolvedMarks.filter((mark) => mark.type === \"link\" || mark.type === \"code\");\n    }\n    return resolvedMarks;\n}\nfunction inlineToAdf(tokens) {\n    if (!tokens)\n        return [];\n    return tokens\n        .flatMap((token) => {\n        switch (token.type) {\n            case \"text\":\n                if (token.tokens) {\n                    return inlineToAdf(token.tokens);\n                }\n                return [\n                    {\n                        type: \"text\",\n                        text: getSafeText(token),\n                        ...(token.tokens ? { content: inlineToAdf(token.tokens) } : {}),\n                    },\n                ];\n            case \"em\":\n                return (token.tokens ?? []).map((t) => ({\n                    type: \"text\",\n                    text: getSafeText(t),\n                    marks: getMarks(t, { em: { type: \"em\" } }),\n                }));\n            case \"strong\":\n                return (token.tokens ?? []).map((t) => ({\n                    type: \"text\",\n                    text: getSafeText(t),\n                    marks: getMarks(t, { strong: { type: \"strong\" } }),\n                }));\n            case \"del\":\n                return (token.tokens ?? []).map((t) => ({\n                    type: \"text\",\n                    text: getSafeText(t),\n                    marks: getMarks(t, { strike: { type: \"strike\" } }),\n                }));\n            case \"link\":\n                return [\n                    {\n                        type: \"text\",\n                        text: getSafeText(token),\n                        marks: getMarks(token),\n                    },\n                ];\n            case \"codespan\":\n                return [\n                    {\n                        type: \"text\",\n                        text: getSafeText(token),\n                        marks: getMarks(token),\n                    },\n                ];\n            case \"br\":\n                return [{ type: \"hardBreak\" }];\n            default:\n                return [];\n        }\n    })\n        .filter((node) => {\n        if (node.type === \"text\" && !node.text) {\n            return false;\n        }\n        return true;\n    });\n}\n"]}