{"version":3,"sources":["../../src/components/CodeBlocks.tsx"],"sourcesContent":["'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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAqD;AACrD,oBAAgD;AAEhD,sCAA2C;AAC3C,+BAA8B;AAC9B,8BAA6B;AAoDT;AAxCpB,IAAM,oBAAgB,sBAAO,OAAO;AAAA,EAChC,MAAM;AAAA,EACN,MAAM;AACV,CAAC,EAAE,CAAC,CAAC;AAEL,IAAM,0BAAsB,sBAAO,QAAQ;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AACV,CAAC,EAAE,CAAC,CAAC;AAEL,IAAM,gBAAY,yBAA2C,SAASA,WAAU,SAAS,KAAK;AAC1F,QAAM,YAAQ,6BAAc,EAAE,OAAO,SAAS,MAAM,eAAe,CAAC;AACpE,QAAM;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EACpB,IAAI;AACJ,QAAM,YAAQ,wBAAS;AACvB,QAAM,kBAAkB,YAAY,WAAW,QAAQ,uBAAuB,IAAI;AAElF,QAAM,UAAU,SAAS;AAEzB,QAAM,aACF,cAAc,SACP,wBAAAC,UACA,yBAAAC;AAEX,QAAM,aACF,cAAc,SACP,MAAM,QAAQ,WAAiD,WAChE,MAAM,QAAQ,KAAK,GAAG;AAEhC,MAAI,OAAO,YAAY,UAAU;AAC7B,WACI,4CAAC,iBAAc,KAAU,WACrB,sDAAC,SACG,sDAAC,UAAM,mBAAQ,GACnB,GACJ;AAAA,EAER;AAEA,MAAI,QAAQ;AACR,WACI,4CAAC,uBAAoB,KAAkC,WACnD;AAAA,MAAC,gCAAAC;AAAA,MAAA;AAAA,QACG,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAO;AAAA,QACP;AAAA,QACA,aAAa;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,YAAY;AAAA,UACZ;AAAA,QACJ;AAAA,QACC;AAAA;AAAA,IACL,GACJ;AAAA,EAER;AAEA,SACI,4CAAC,iBAAc,KAAU,WACrB;AAAA,IAAC,gCAAAA;AAAA,IAAA;AAAA,MACG,UAAU;AAAA,MACV,OAAO;AAAA,MACP;AAAA,MACA,aAAa;AAAA,QACT;AAAA,QACA,SAAS,MAAM,QAAQ,CAAC;AAAA,QACxB,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc,MAAM,MAAM;AAAA,MAC9B;AAAA,MACC;AAAA;AAAA,EACL,GACJ;AAER,CAAC;AAKD,IAAO,qBAAQ,EAAE,UAAU;","names":["CodeBlock","varnishPrismDark","varnishPrismLight","SyntaxHighlighter"]}