import domtoimage from "dom-to-image"; // https://github.com/tsayen/dom-to-image import { useEffect, useRef, useState } from "react"; import { Button } from "../../common/Button"; import { CopyParagraph } from "../../common/CopyParagraph"; import { QuestionFragment } from "../../fragments.generated"; import { uploadToImgur } from "../../worker/uploadToImgur"; import { QuestionCard } from "./QuestionCard"; const domToImageWrapper = async (node: HTMLDivElement) => { const scale = 3; // Increase for better quality const style = { transform: "scale(" + scale + ")", transformOrigin: "top left", width: node.offsetWidth + "px", height: node.offsetHeight + "px", }; const param = { height: node.offsetHeight * scale, width: node.offsetWidth * scale, quality: 1, style, }; const image = await domtoimage.toPng(node, param); return image; }; const ImageSource: React.FC<{ question: QuestionFragment; imgSrc: string }> = ({ question, imgSrc, }) => { if (!imgSrc) { return null; } const html = `Metaforecast.org snapshot of ''${question.title}'', from ${question.platform.label}`; const markdown = `[![](${imgSrc})](${question.url})`; return (
); }; const generateMetaculusIframeURL = (question: QuestionFragment) => { let parts = question.url.replace("questions", "questions/embed").split("/"); parts.pop(); parts.pop(); const iframeURL = parts.join("/"); return iframeURL; }; const generateMetaculusIframeHTML = (question: QuestionFragment) => { const iframeURL = generateMetaculusIframeURL(question); return `