import React, { useEffect, useState, } from 'react'; import MailPoet from 'mailpoet'; import { Spinner } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import Preview from '../../common/preview/preview.jsx'; import Modal from '../../common/modal/modal.jsx'; import { onChange } from '../../common/functions'; const FormPreview = () => { const [iframeLoaded, setIframeLoaded] = useState(false); const { hidePreview, changePreviewSettings } = useDispatch('mailpoet-form-editor'); const isPreview = useSelect( (select) => select('mailpoet-form-editor').getIsPreviewShown(), [] ); const isPreviewReady = useSelect( (select) => select('mailpoet-form-editor').getIsPreviewReady(), [] ); const previewSettings = useSelect( (select) => select('mailpoet-form-editor').getPreviewSettings(), [] ); const formId = useSelect( (select) => select('mailpoet-form-editor').getFormData().id, [] ); useEffect(() => { setIframeLoaded(false); }, [isPreview]); if (!isPreview) return null; function setFormType(type) { setIframeLoaded(false); changePreviewSettings({ ...previewSettings, formType: type }); } function onPreviewTypeChange(type) { changePreviewSettings({ ...previewSettings, displayType: type }); } const urlData = { id: formId, form_type: previewSettings.formType, }; let iframeSrc = `${(window as any).mailpoet_form_preview_page}&data=${btoa(JSON.stringify(urlData))}`; // Add anchor to scroll to certain types of form if (['below_post'].includes(previewSettings.formType)) { iframeSrc += `#mailpoet_form_preview_${formId}`; } return ( {!isPreviewReady && (
)} {isPreviewReady && (

Todo width and placement settings.

{!iframeLoaded && (
)}