import React, { useState, useEffect } from "react"; import { toJpeg } from "html-to-image"; import LoadingIcon from "../icons/three-dots.svg"; import styles from "./html-to-image.module.scss"; export function HtmlToImage(props: { getDataUrl: (url: string) => void }) { const [imageUrl, setImageUrl] = useState(""); const [loading, setLoading] = useState(true); useEffect(() => { const element = document.querySelector("#chat-body") as HTMLElement; if (element) { toJpeg(element, { width: element.scrollWidth, height: element.scrollHeight, }) .then((dataUrl) => { setImageUrl(dataUrl); props?.getDataUrl(dataUrl); }) .finally(() => setLoading(false)); } }, []); return ( <> {loading ? ( ) : (
)} ); }