// // Copyright (c) 2025-2026 rustmailer.com (https://rustmailer.com) // // This file is part of the Bichon Email Archiving Project // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . import React, { useCallback, useRef, useState } from 'react'; interface EmailIframeProps { emailHtml: string; height?: number; } const EmailIframe: React.FC = ({ emailHtml, height }) => { const iframeRef = useRef(null); const [iframeHeight, setIframeHeight] = useState(height ?? 300); const onLoad = useCallback(() => { try { const doc = iframeRef.current?.contentWindow?.document; if (doc?.body) { const h = Math.max( doc.body.scrollHeight, doc.body.offsetHeight, doc.documentElement.scrollHeight, doc.documentElement.offsetHeight, ); if (h > 0) setIframeHeight(h + 20); } } catch { // sandbox prevents access — keep default height } }, []); return (