{"version":3,"file":"index.cjs","names":["TableHead","TableCell","useTheme","vscDarkPlus","oneLight","CodeBlock","Table","TableHeader","TableBody","TableRow","ReactMarkdown"],"sources":["../../../src/components/MarkDownRenderer/MarkDownRenderer.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { memo } from \"react\";\nimport ReactMarkdown, { Components, type Options } from \"react-markdown\";\nimport { oneLight, vscDarkPlus } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableCellProps,\n  TableHead,\n  TableHeadProps,\n  TableHeader,\n  TableRow,\n} from \"../Table\";\nimport { useTheme } from \"../ThemeProvider\";\n\ntype TableAlignment = TableHeadProps[\"align\"];\n\nfunction toTableAlignment(align: string | undefined): TableAlignment {\n  if (align === \"left\" || align === \"center\" || align === \"right\") return align;\n  return undefined;\n}\n\nconst MarkdownTableHead: Components[\"th\"] = ({ align, ...props }) => (\n  <TableHead {...(props as Omit<TableHeadProps, \"align\">)} align={toTableAlignment(align)} />\n);\n\nconst MarkdownTableCell: Components[\"td\"] = ({ align, ...props }) => (\n  <TableCell {...(props as Omit<TableCellProps, \"align\">)} align={toTableAlignment(align)} />\n);\n\nconst variantStyles = {\n  clear: \"\",\n  card: \"openui-markdown-renderer-card\",\n  sunk: \"openui-markdown-renderer-card-sunk\",\n};\n\nexport interface MarkDownRendererProps {\n  variant?: \"clear\" | \"card\" | \"sunk\";\n  textMarkdown: string;\n  options?: Options;\n  className?: string;\n}\n\nexport const MarkDownRenderer = memo((props: MarkDownRendererProps) => {\n  const { mode } = useTheme();\n  const theme = mode === \"dark\" ? vscDarkPlus : oneLight;\n  const components: Components = {\n    code({ className, children, ...props }) {\n      const match = /language-(\\w+)/.exec(className || \"\");\n\n      if (match || (!className && String(children).includes(\"\\n\"))) {\n        const language = match?.[1] ?? \"text\";\n        const codeString = String(children).trim();\n        return <CodeBlock language={language} codeString={codeString} theme={theme} />;\n      }\n\n      return (\n        <code className={clsx(\"openui-markdown-renderer-code\", className)} {...props}>\n          {children}\n        </code>\n      );\n    },\n    a({ href, children, ...props }) {\n      return (\n        <a\n          href={href}\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          className=\"openui-markdown-renderer-link\"\n          {...props}\n        >\n          {children}\n        </a>\n      );\n    },\n    table: Table,\n    thead: TableHeader,\n    th: MarkdownTableHead,\n    tbody: TableBody,\n    tr: TableRow,\n    td: MarkdownTableCell,\n  };\n\n  const markdownProps = {\n    ...props.options,\n    components: { ...components, ...props.options?.components },\n  };\n\n  return (\n    <div\n      className={clsx(\n        props[\"variant\"] && variantStyles[props[\"variant\"] as keyof typeof variantStyles],\n        \"openui-markdown-renderer\",\n        props.className,\n      )}\n    >\n      <ReactMarkdown {...markdownProps}>{props.textMarkdown}</ReactMarkdown>\n    </div>\n  );\n});\n"],"mappings":";;;;;;;;;;;;;AAmBA,SAAS,iBAAiB,OAA2C;AACnE,KAAI,UAAU,UAAU,UAAU,YAAY,UAAU,QAAS,QAAO;;AAI1E,MAAM,qBAAuC,EAAE,OAAO,GAAG,YACvD,iBAAA,GAAA,kBAAA,KAACA,+BAAAA,WAAD;CAAW,GAAK;CAAyC,OAAO,iBAAiB,MAAM;CAAI,CAAA;AAG7F,MAAM,qBAAuC,EAAE,OAAO,GAAG,YACvD,iBAAA,GAAA,kBAAA,KAACC,+BAAAA,WAAD;CAAW,GAAK;CAAyC,OAAO,iBAAiB,MAAM;CAAI,CAAA;AAG7F,MAAM,gBAAgB;CACpB,OAAO;CACP,MAAM;CACN,MAAM;CACP;AASD,MAAa,oBAAA,GAAA,MAAA,OAAyB,UAAiC;CACrE,MAAM,EAAE,SAASC,sBAAAA,UAAU;CAC3B,MAAM,QAAQ,SAAS,SAASC,+CAAAA,cAAcC,+CAAAA;CAC9C,MAAM,aAAyB;EAC7B,KAAK,EAAE,WAAW,UAAU,GAAG,SAAS;GACtC,MAAM,QAAQ,iBAAiB,KAAK,aAAa,GAAG;AAEpD,OAAI,SAAU,CAAC,aAAa,OAAO,SAAS,CAAC,SAAS,KAAK,CAGzD,QAAO,iBAAA,GAAA,kBAAA,KAACC,mCAAAA,WAAD;IAAW,UAFD,QAAQ,MAAM;IAEO,YADnB,OAAO,SAAS,CAAC,MACwB;IAAS;IAAS,CAAA;AAGhF,UACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,YAAA,GAAA,KAAA,SAAgB,iCAAiC,UAAU;IAAE,GAAI;IACpE;IACI,CAAA;;EAGX,EAAE,EAAE,MAAM,UAAU,GAAG,SAAS;AAC9B,UACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;IACQ;IACN,QAAO;IACP,KAAI;IACJ,WAAU;IACV,GAAI;IAEH;IACC,CAAA;;EAGR,OAAOC,+BAAAA;EACP,OAAOC,+BAAAA;EACP,IAAI;EACJ,OAAOC,+BAAAA;EACP,IAAIC,+BAAAA;EACJ,IAAI;EACL;CAED,MAAM,gBAAgB;EACpB,GAAG,MAAM;EACT,YAAY;GAAE,GAAG;GAAY,GAAG,MAAM,SAAS;GAAY;EAC5D;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,KAAA,SACE,MAAM,cAAc,cAAc,MAAM,aACxC,4BACA,MAAM,UACP;YAED,iBAAA,GAAA,kBAAA,KAACC,eAAAA,SAAD;GAAe,GAAI;aAAgB,MAAM;GAA6B,CAAA;EAClE,CAAA;EAER"}