import {__} from '@wordpress/i18n';
import IframeResizer from 'iframe-resizer-react';
import isRouteInlineRedirect from '@givewp/forms/app/utilities/isRouteInlineRedirect';
import ModalForm from '@givewp/src/Campaigns/Blocks/shared/components/ModalForm';
import '../editor/styles/index.scss';
import renderDonationForm from './renderDonationForm';
/**
* @since 3.2.1 Revert the display style value of "fullForm" to "onpage".
* @since 3.1.2
*/
type DonationFormBlockAppProps = {
formFormat: 'onpage' | 'newTab' | 'modal' | string;
dataSrc: string;
embedId: string;
openFormButton: string;
formUrl: string;
formViewUrl: string;
};
/**
* @since 3.4.0
*/
const inlineRedirectRoutes = ['donation-confirmation-receipt-view'];
/**
* @since 3.4.0
*/
const isRedirect = (url: string) => {
const redirectUrl = new URL(url);
const redirectUrlParams = new URLSearchParams(redirectUrl.search);
return isRouteInlineRedirect(redirectUrlParams, inlineRedirectRoutes);
};
/**
* @since 4.3.0 replace ModalForm with Campaigns ModalForm.
* @since 3.4.0 add logic for inline redirects.
* @since 3.2.0 replace form format reveal with new tab.
* @since 3.0.0
*/
export default function DonationFormBlockApp({
formFormat,
dataSrc,
embedId,
openFormButton,
formUrl,
formViewUrl,
}: DonationFormBlockAppProps) {
const isFormRedirect = isRedirect(dataSrc);
if (formFormat === 'newTab') {
return (
{openFormButton}
);
}
if (formFormat === 'modal' || formFormat === 'reveal') {
return (
);
}
return (
);
}
const roots = document.querySelectorAll('.root-data-givewp-embed');
/**
* @since 4.7.0 update to use renderDonationForm
* @since 3.22.0 Add locale support
*/
roots?.forEach((root) => {
renderDonationForm(root);
});