@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
32 lines (31 loc) • 1.48 kB
JavaScript
"use client";
import { useMarkdownContext } from "../components/MarkdownProvider.mjs";
import { useMarkdownComponents } from "../../hooks/useMarkdown/useMarkdownComponents.mjs";
import { useMarkdownContent } from "../../hooks/useMarkdown/useMarkdownContent.mjs";
import { useMarkdownRehypePlugins } from "../../hooks/useMarkdown/useMarkdownRehypePlugins.mjs";
import { useMarkdownRemarkPlugins } from "../../hooks/useMarkdown/useMarkdownRemarkPlugins.mjs";
import { memo } from "react";
import { jsx } from "react/jsx-runtime";
import { Streamdown } from "@lobehub/streamdown";
//#region src/Markdown/SyntaxMarkdown/StreamdownRender.tsx
const StreamdownRender = memo(({ children, ...rest }) => {
const { enableLatex = true, streamAnimationGranularity = "char", streamSmoothingPreset = "balanced" } = useMarkdownContext();
const escapedContent = useMarkdownContent(children || "");
const components = useMarkdownComponents();
const rehypePlugins = useMarkdownRehypePlugins();
const remarkPlugins = useMarkdownRemarkPlugins();
return /* @__PURE__ */ jsx(Streamdown, {
...rest,
components,
content: typeof escapedContent === "string" ? escapedContent : "",
granularity: streamAnimationGranularity,
latexGuard: enableLatex,
rehypePlugins,
remarkPlugins,
smoothing: streamSmoothingPreset
});
});
StreamdownRender.displayName = "StreamdownRender";
//#endregion
export { StreamdownRender, StreamdownRender as default };
//# sourceMappingURL=StreamdownRender.mjs.map