import domtoimage from "dom-to-image"; // https://github.com/tsayen/dom-to-image import { useEffect, useRef, useState } from "react"; import { CopyToClipboard } from "react-copy-to-clipboard"; import { QuestionFragment } from "../search/queries.generated"; import { uploadToImgur } from "../worker/uploadToImgur"; import { DisplayQuestion } from "./DisplayQuestion"; function displayOneQuestionInner(result: QuestionFragment, containerRef) { return (
{result ? ( ) : null}
); } let domToImageWrapper = (reactRef) => { let node = reactRef.current; 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, }; let image = domtoimage.toPng(node, param); return image; }; let generateHtml = (result, imgSrc) => { let html = `Metaforecast.org snapshot of ''${result.title}'', from ${result.platform}`; return html; }; let generateMarkdown = (result, imgSrc) => { let markdown = `[![](${imgSrc})](${result.url})`; return markdown; }; let generateSource = (result, imgSrc, hasDisplayBeenCaptured) => { const [htmlButtonStatus, setHtmlButtonStatus] = useState("Copy HTML"); const [markdownButtonStatus, setMarkdownButtonStatus] = useState("Copy markdown"); let handleHtmlButton = () => { setHtmlButtonStatus("Copied"); let newtimeoutId = setTimeout(async () => { setHtmlButtonStatus("Copy HTML"); }, 2000); }; let handleMarkdownButton = () => { setMarkdownButtonStatus("Copied"); let newtimeoutId = setTimeout(async () => { setMarkdownButtonStatus("Copy markdown"); }, 2000); }; if (result && imgSrc && hasDisplayBeenCaptured) { return (

{generateMarkdown(result, imgSrc)}

handleMarkdownButton()} >

{generateHtml(result, imgSrc)}

handleHtmlButton()} >
); } else { return null; } }; let generateIframeURL = (result) => { let iframeURL = ""; if (result) { // if check not strictly necessary today let parts = result.url.replace("questions", "questions/embed").split("/"); parts.pop(); parts.pop(); iframeURL = parts.join("/"); } return iframeURL; }; let metaculusEmbed = (result) => { let platform = ""; let iframeURL = ""; if (result) { iframeURL = generateIframeURL(result); platform = result.platform; } return (