HEX
Server: Apache/2.4.65 (Unix) OpenSSL/1.1.1k
System: Linux server-manager.elshandawiily.com 4.18.0-553.87.1.el8_10.x86_64 #1 SMP Mon Dec 1 05:11:16 EST 2025 x86_64
User: elshanda (1002)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/elshanda/biz.elshandawiily.com/wp-content/plugins/leadin/scripts/iframe/renderIframeApp.tsx
import React, { Fragment } from 'react';
import ReactDOM from 'react-dom';
import { domElements } from '../constants/selectors';
import useAppEmbedder from './useAppEmbedder';
import { App } from './constants';
import { IframeErrorPage } from './IframeErrorPage';

interface PortalProps extends React.PropsWithChildren {
  app: App;
  createRoute: boolean;
}

const IntegratedIframePortal = (props: PortalProps) => {
  const container = document.getElementById(domElements.leadinIframeContainer);
  const iframeNotRendered = useAppEmbedder(
    props.app,
    props.createRoute,
    container
  );

  if (container && !iframeNotRendered) {
    return ReactDOM.createPortal(props.children, container);
  }

  return (
    <Fragment>
      {(!container || iframeNotRendered) && <IframeErrorPage />}
    </Fragment>
  );
};

const renderIframeApp = () => {
  const iframeFallbackContainer = document.getElementById(
    domElements.leadinIframeContainer
  );

  let app: App;
  const queryParams = new URLSearchParams(location.search);
  const page = queryParams.get('page');
  const createRoute = queryParams.get('leadin_route[0]') === 'create';

  switch (page) {
    case 'leadin_forms':
      app = App.Forms;
      break;
    case 'leadin_chatflows':
      app = App.LiveChat;
      break;
    case 'leadin_settings':
      app = App.PluginSettings;
      break;
    case 'leadin_user_guide':
    default:
      app = App.Plugin;
      break;
  }

  ReactDOM.render(
    <IntegratedIframePortal app={app} createRoute={createRoute} />,
    iframeFallbackContainer
  );
};

export default renderIframeApp;