{"version":3,"sources":["../../src/components/Markdown.tsx","../../src/components/CodeBlocks.tsx"],"sourcesContent":["'use client';\n\nimport type { ComponentProps, PropsWithChildren, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport { Divider, Typography, styled } from '@mui/material';\nimport { useThemeProps } from '@mui/material/styles';\nimport ReactMarkdown from 'react-markdown';\nimport type { Options, Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { CodeBlock } from './CodeBlocks';\n\nexport interface MarkdownProps extends Omit<Options, 'components'> {\n    className?: string;\n    markdownContainerClass?: string;\n    components?: Components;\n}\n\nconst MarkdownRoot = styled('div', {\n    name: 'MuiMarkdown',\n    slot: 'root',\n})(({ theme }) => ({\n    color: theme.palette.text.primary,\n}));\n\n/** @deprecated Use scoped styles on the `varnish-markdown` container instead */\nexport const TableWrapper = styled('div')`\n    overflow-x: auto;\n    margin: ${({ theme }) => theme.spacing(3)} 0;\n\n    table {\n        width: 100%;\n        font-family: ${({ theme }) => theme.typography.fontFamily};\n        border: 1px solid ${({ theme }) => theme.palette.grey.A200};\n\n        th,\n        td {\n            padding: ${({ theme }) => theme.spacing(1.5)};\n            border-color: ${({ theme }) => theme.palette.grey.A200};\n            border-width: 1px 0;\n        }\n\n        th {\n            padding-top: ${({ theme }) => theme.spacing(1.5)};\n            border-width: 0 0 2px 0;\n            white-space: pre;\n        }\n\n        tbody tr {\n            transition: all 0.3s;\n            &:hover {\n                background: rgba(60, 90, 100, 0.04);\n            }\n        }\n    }\n`;\n\nconst Img = styled('img')`\n    max-width: 100%;\n    &[src*='#thumbnail'] {\n        width: ${({ theme }) => theme.spacing(8)};\n    }\n`;\n\nconst Ol = styled('ol')`\n    margin-bottom: ${({ theme }) => theme.spacing(2)};\n`;\n\nconst Ul = styled('ul')`\n    margin-bottom: ${({ theme }) => theme.spacing(2)};\n    list-style-type: revert;\n`;\n\nconst Li = styled('li')`\n    margin-bottom: 0;\n`;\n\nconst defaultRemarkPlugins = [remarkGfm];\n\nconst defaultComponents: Components = {\n    h1: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h1\">\n            {props.children}\n        </Typography>\n    ),\n    h2: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h2\">\n            {props.children}\n        </Typography>\n    ),\n    h3: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h3\">\n            {props.children}\n        </Typography>\n    ),\n    h4: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h4\">\n            {props.children}\n        </Typography>\n    ),\n    h5: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h5\">\n            {props.children}\n        </Typography>\n    ),\n    h6: (props: PropsWithChildren) => (\n        <Typography gutterBottom variant=\"h6\">\n            {props.children}\n        </Typography>\n    ),\n    p: (props: PropsWithChildren) => <Typography variant=\"body1\">{props.children}</Typography>,\n    b: (props: PropsWithChildren) => (\n        <strong style={{ fontWeight: 'bold' }}>{props.children}</strong>\n    ),\n    em: (props: PropsWithChildren) => <em style={{ fontStyle: 'italic' }}>{props.children}</em>,\n    hr: () => <Divider />,\n    del: (props: PropsWithChildren) => (\n        <del style={{ textDecoration: 'line-through' }}>{props.children}</del>\n    ),\n    li: (props: ComponentProps<typeof Li>) => <Li {...props} />,\n    ul: (props: ComponentProps<typeof Ul>) => <Ul {...props} />,\n    ol: (props: ComponentProps<typeof Ol>) => <Ol {...props} />,\n    img: (props: ComponentProps<typeof Img>) => <Img {...props} />,\n    // CodeBlock renders its own wrapper, so pre is neutralized to avoid double-wrapping\n    pre: (props: ComponentProps<'span'>) => <span {...props} />,\n    code: ({ children, className }: { children?: ReactNode; className?: string }) => {\n        const match = /language-(\\w+)/.exec(className || '');\n        const isInline = !match;\n        if (isInline) {\n            return <CodeBlock inline>{children}</CodeBlock>;\n        }\n        return <CodeBlock language={match[1]}>{children}</CodeBlock>;\n    },\n    table: (props: ComponentProps<'table'>) => (\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        <TableWrapper>\n            <table {...props} />\n        </TableWrapper>\n    ),\n};\n\nconst Markdown = forwardRef<HTMLDivElement, MarkdownProps>(function Markdown(inProps, ref) {\n    const props = useThemeProps({ props: inProps, name: 'MuiMarkdown' });\n    const {\n        markdownContainerClass = 'varnish-markdown',\n        className,\n        children,\n        components = defaultComponents,\n        remarkPlugins = defaultRemarkPlugins,\n        ...other\n    } = props;\n\n    const containerClassName = [markdownContainerClass, className].filter(Boolean).join(' ');\n\n    return (\n        <MarkdownRoot ref={ref} className={containerClassName}>\n            <ReactMarkdown components={components} remarkPlugins={remarkPlugins} {...other}>\n                {children}\n            </ReactMarkdown>\n        </MarkdownRoot>\n    );\n});\n\nexport { defaultComponents, defaultRemarkPlugins, Markdown, Markdown as default };\n","'use client';\n\nimport { forwardRef, type ReactNode, type Ref } from 'react';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport type { SyntaxHighlighterProps } from 'react-syntax-highlighter';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport varnishPrismLight from '@allenai/varnish-theme/varnishPrismLight';\nimport varnishPrismDark from '@allenai/varnish-theme/varnishPrismDark';\n\ninterface CodeBlockProps {\n    language?: string;\n    colorMode?: 'light' | 'dark';\n    inline?: boolean;\n    value?: string;\n    children?: ReactNode;\n    className?: string;\n    wrapLongLines?: boolean;\n}\n\nconst CodeBlockRoot = styled('div', {\n    name: 'MuiCodeBlock',\n    slot: 'root',\n})({});\n\nconst CodeBlockInlineRoot = styled('span', {\n    name: 'MuiCodeBlock',\n    slot: 'root',\n})({});\n\nconst CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(function CodeBlock(inProps, ref) {\n    const props = useThemeProps({ props: inProps, name: 'MuiCodeBlock' });\n    const {\n        language,\n        colorMode = 'light',\n        inline = false,\n        value,\n        children,\n        className,\n        wrapLongLines = true,\n    } = props;\n    const theme = useTheme();\n    const languageDerived = language ?? className?.replace(/\\blanguage-([^\\s]+)/, '$1');\n\n    const content = value ?? children;\n\n    const prismTheme =\n        colorMode === 'dark'\n            ? (varnishPrismDark as SyntaxHighlighterProps['style'])\n            : (varnishPrismLight as SyntaxHighlighterProps['style']);\n\n    const background =\n        colorMode === 'dark'\n            ? (theme.palette.background as unknown as Record<string, string>).reversed\n            : theme.palette.grey[100];\n\n    if (typeof content !== 'string') {\n        return (\n            <CodeBlockRoot ref={ref} className={className}>\n                <pre>\n                    <code>{content}</code>\n                </pre>\n            </CodeBlockRoot>\n        );\n    }\n\n    if (inline) {\n        return (\n            <CodeBlockInlineRoot ref={ref as Ref<HTMLSpanElement>} className={className}>\n                <SyntaxHighlighter\n                    language={languageDerived}\n                    style={prismTheme}\n                    PreTag=\"span\"\n                    wrapLongLines={wrapLongLines}\n                    customStyle={{\n                        display: 'inline',\n                        padding: '0 4px',\n                        whiteSpace: 'nowrap',\n                        background,\n                    }}>\n                    {content}\n                </SyntaxHighlighter>\n            </CodeBlockInlineRoot>\n        );\n    }\n\n    return (\n        <CodeBlockRoot ref={ref} className={className}>\n            <SyntaxHighlighter\n                language={languageDerived}\n                style={prismTheme}\n                wrapLongLines={wrapLongLines}\n                customStyle={{\n                    background,\n                    padding: theme.spacing(2),\n                    margin: '.5em 0',\n                    overflow: 'auto',\n                    minWidth: 0,\n                    fontSize: '.9em',\n                    lineHeight: 1.2,\n                    borderRadius: theme.shape.borderRadius,\n                }}>\n                {content}\n            </SyntaxHighlighter>\n        </CodeBlockRoot>\n    );\n});\n\nexport { CodeBlock };\nexport type { CodeBlockProps };\n\nexport default { CodeBlock };\n"],"mappings":"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","names":["import_react","import_styles","CodeBlock","varnishPrismDark","varnishPrismLight","SyntaxHighlighter","import_jsx_runtime","remarkGfm","Markdown","ReactMarkdown"]}