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}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
};
|