import React, { Fragment, useEffect } from 'react'; import { portalId } from '../../constants/leadinConfig'; import UISpacer from '../UIComponents/UISpacer'; import PreviewForm from './PreviewForm'; import FormSelect from './FormSelect'; import { IFormBlockProps } from '../../gutenberg/FormBlock/registerFormBlock'; import { usePostBackgroundMessage, BackgroudAppContext, useBackgroundAppContext, } from '../../iframe/useBackgroundApp'; import { ProxyMessages } from '../../iframe/integratedMessages'; import LoadingBlock from '../Common/LoadingBlock'; import { useGetEmbedder } from '../../utils/useGetEmbedder'; interface IFormEditProps extends IFormBlockProps { preview: boolean; origin: 'gutenberg' | 'elementor'; fullSiteEditor?: boolean; } function FormEdit({ attributes, isSelected, setAttributes, preview = true, origin = 'gutenberg', fullSiteEditor, }: IFormEditProps) { const { formId, formName, embedVersion } = attributes; const formSelected = portalId && formId; const isBackgroundAppReady = useBackgroundAppContext(); const monitorFormPreviewRender = usePostBackgroundMessage(); const handleChange = (selectedForm: { value: string; label: string; embedVersion?: string; }) => { setAttributes({ portalId, formId: selectedForm.value, formName: selectedForm.label, embedVersion: selectedForm.embedVersion, }); }; useEffect(() => { monitorFormPreviewRender({ key: ProxyMessages.TrackFormPreviewRender, payload: { origin, }, }); }, [origin]); return !isBackgroundAppReady ? ( ) : ( {(isSelected || !formSelected) && ( )} {formSelected && ( {isSelected && } {preview && ( )} )} ); } export default function FormEditContainer(props: IFormEditProps) { const { embedder, errorElement, isLoading } = useGetEmbedder(); if (errorElement) { return errorElement; } if (isLoading) { return ; } return ( ); }