import React, { useEffect } from 'react'; import { useLayout } from '@/modules/layout/LayoutContext'; import { LayoutContainer } from './LayoutContainer'; import FlexibleContainerRenderer from './FlexibleContainerRenderer'; export interface GenericCanvasViewProps { pageId: string; pageName: string; className?: string; initialLayout?: any; contextVariables?: Record; pageContext?: Record; } const GenericCanvasView: React.FC = ({ pageId, pageName, className = '', initialLayout, contextVariables, pageContext, }) => { const { loadedPages, loadPageLayout, hydratePageLayout, isLoading, } = useLayout(); const layout = loadedPages.get(pageId); // Load the page layout on mount or hydrate from prop useEffect(() => { if (initialLayout && !layout) { hydratePageLayout(pageId, initialLayout); return; } if (!layout) { loadPageLayout(pageId, pageName); } }, [pageId, pageName, layout, loadPageLayout, hydratePageLayout, initialLayout]); if (isLoading || !layout) { return (

Loading {pageName.toLowerCase()}...

); } const totalWidgets = layout.containers.reduce((total, container) => { const getContainerWidgetCount = (cont: any): number => { let count = cont.widgets.length; if (cont.children) { cont.children.forEach((child: any) => { count += getContainerWidgetCount(child); }); } return count; }; return total + getContainerWidgetCount(container); }, 0); if (totalWidgets === 0) { return null; } return (
{/* Container Canvas */}
{layout.containers .sort((a, b) => (a.order || 0) - (b.order || 0)) .map((container) => { if (container.type === 'flex-container') { return ( ); } return ( ); })}
); }; export default GenericCanvasView;