Perplexica/ui/components/Markdown/renderer/image.tsx

35 lines
796 B
TypeScript
Raw Normal View History

2024-07-10 16:17:23 +08:00
import type { Image } from "@yozora/ast";
import React from "react";
import type { INodeRenderer } from "../context";
import { astClasses } from "../context";
import { ImageRendererInner } from "./inner/ImageRendererInner";
/**
* Render `image`.
*
* @see https://www.npmjs.com/package/@yozora/ast#image
* @see https://www.npmjs.com/package/@yozora/tokenizer-image
*/
2024-07-10 16:34:28 +08:00
export const ImageRenderer: INodeRenderer<Image> = properties => {
const {
url: source,
alt,
title,
srcSet,
sizes,
loading,
} = properties as Image & React.ImgHTMLAttributes<HTMLElement>;
2024-07-10 16:17:23 +08:00
return (
<ImageRendererInner
alt={alt}
2024-07-10 16:34:28 +08:00
src={source}
2024-07-10 16:17:23 +08:00
title={title}
srcSet={srcSet}
sizes={sizes}
loading={loading}
className={astClasses.image}
/>
);
};