diff --git a/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx b/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx index 46ba4f6d..9485386d 100644 --- a/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx +++ b/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx @@ -42,11 +42,11 @@ const EditableLayoutWrapper: React.FC = ({ const matches: { path: string; type: 'image' | 'icon'; data: any }[] = []; // Check current level for __image_url__ or __icon_url__ - if (data.__image_url__ && isMatchingUrl(data.__image_url__, targetUrl)) { + if (data.__image_url__ && targetUrl.includes(data.__image_url__)) { matches.push({ path, type: 'image', data }); } - if (data.__icon_url__ && isMatchingUrl(data.__icon_url__, targetUrl)) { + if (data.__icon_url__ && targetUrl.includes(data.__icon_url__)) { matches.push({ path, type: 'icon', data }); } @@ -109,14 +109,16 @@ const EditableLayoutWrapper: React.FC = ({ * Checks if two URLs match using various comparison strategies */ const isMatchingUrl = (url1: string, url2: string): boolean => { + console.log('url1', url1); + console.log('url2', url2); if (!url1 || !url2) return false; // Direct match if (url1 === url2) return true; // Remove protocol and domain differences - const cleanUrl1 = url1.replace(/^https?:\/\/[^\/]+/, '').replace(/^\/+/, ''); - const cleanUrl2 = url2.replace(/^https?:\/\/[^\/]+/, '').replace(/^\/+/, ''); + const cleanUrl1 = url1 && url1.replace(/^https?:\/\/[^\/]+/, '').replace(/^\/+/, ''); + const cleanUrl2 = url2 && url2.replace(/^https?:\/\/[^\/]+/, '').replace(/^\/+/, ''); if (cleanUrl1 === cleanUrl2) return true; @@ -304,7 +306,7 @@ const EditableLayoutWrapper: React.FC = ({ imageUrl: newImageUrl, prompt: prompt || activeEditor.data?.__image_prompt__ || '' })); - + setActiveEditor(null); } }; /** @@ -323,6 +325,8 @@ const EditableLayoutWrapper: React.FC = ({ query: query || activeEditor.data?.__icon_query__ || '' })); + + } }; @@ -341,7 +345,6 @@ const EditableLayoutWrapper: React.FC = ({ onClose={handleEditorClose} onImageChange={handleImageChange} > - )} diff --git a/servers/nextjs/app/(presentation-generator)/components/TiptapTextReplacer.tsx b/servers/nextjs/app/(presentation-generator)/components/TiptapTextReplacer.tsx index 0fd75f3a..dd1cb8a6 100644 --- a/servers/nextjs/app/(presentation-generator)/components/TiptapTextReplacer.tsx +++ b/servers/nextjs/app/(presentation-generator)/components/TiptapTextReplacer.tsx @@ -5,9 +5,6 @@ import ReactDOM from 'react-dom/client'; import TiptapText from './TiptapText'; interface TiptapTextReplacerProps { - layout: React.ComponentType<{ - data: any; - }>; children: ReactNode; slideData?: any; slideIndex?: number; @@ -18,11 +15,11 @@ interface TiptapTextReplacerProps { const TiptapTextReplacer: React.FC = ({ children, slideData, - layout, slideIndex, onContentChange = () => { }, isEditMode = true }) => { + const containerRef = useRef(null); const [processedElements, setProcessedElements] = useState(new Set()); useEffect(() => { @@ -107,7 +104,6 @@ const TiptapTextReplacer: React.FC = ({ const root = ReactDOM.createRoot(tiptapContainer); root.render( { if (dataPath && onContentChange) { @@ -261,7 +257,7 @@ const TiptapTextReplacer: React.FC = ({ }, [slideData, isEditMode, slideIndex]); return ( -
+
{children}
); diff --git a/servers/nextjs/app/(presentation-generator)/hooks/useGroupLayouts.tsx b/servers/nextjs/app/(presentation-generator)/hooks/useGroupLayouts.tsx index 8208530d..dbcd5af8 100644 --- a/servers/nextjs/app/(presentation-generator)/hooks/useGroupLayouts.tsx +++ b/servers/nextjs/app/(presentation-generator)/hooks/useGroupLayouts.tsx @@ -55,13 +55,11 @@ export const useGroupLayouts = () => { isEditMode={isEditMode} > { - // Dispatch Redux action to update slide content if (dataPath && slideIndex !== undefined) { dispatch(updateSlideContent({ @@ -72,12 +70,12 @@ export const useGroupLayouts = () => { } }} > - + ); } - return ; + return ; }; }, [getGroupLayout, dispatch]); diff --git a/servers/nextjs/app/(presentation-generator)/outline/components/GroupLayouts.tsx b/servers/nextjs/app/(presentation-generator)/outline/components/GroupLayouts.tsx index 99c95d9e..3f9b3417 100644 --- a/servers/nextjs/app/(presentation-generator)/outline/components/GroupLayouts.tsx +++ b/servers/nextjs/app/(presentation-generator)/outline/components/GroupLayouts.tsx @@ -26,7 +26,7 @@ const GroupLayouts: React.FC = ({ group, onSelectLayoutGroup, )}
-
+
{group.name}

diff --git a/servers/nextjs/app/(presentation-generator)/pdf-maker/PdfMakerPage.tsx b/servers/nextjs/app/(presentation-generator)/pdf-maker/PdfMakerPage.tsx index 81197127..f996c597 100644 --- a/servers/nextjs/app/(presentation-generator)/pdf-maker/PdfMakerPage.tsx +++ b/servers/nextjs/app/(presentation-generator)/pdf-maker/PdfMakerPage.tsx @@ -45,7 +45,6 @@ const PresentationPage = ({ presentation_id }: { presentation_id: string }) => { setContentLoading(false); } }; - console.log("presentationData", presentationData); // Regular view return (

diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx index dbe534c2..2f2bd6e9 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx @@ -52,13 +52,11 @@ const SlideContent = ({ try { const response = await PresentationGenerationApi.editSlide( - presentationId, - slide.index, + slide.id, value ); if (response) { - console.log("response", response); dispatch(updateSlide({ index: slide.index, slide: response })); toast.success("Slide updated successfully"); } diff --git a/servers/nextjs/app/(presentation-generator)/services/api/presentation-generation.ts b/servers/nextjs/app/(presentation-generator)/services/api/presentation-generation.ts index f64e14f0..f3e3bcf4 100644 --- a/servers/nextjs/app/(presentation-generator)/services/api/presentation-generation.ts +++ b/servers/nextjs/app/(presentation-generator)/services/api/presentation-generation.ts @@ -65,20 +65,18 @@ export class PresentationGenerationApi { static async editSlide( - presentation_id: string, - index: number, + slide_id: string, + prompt: string ) { try { const response = await fetch( - `/api/v1/ppt/edit`, + `/api/v1/ppt/slide/edit`, { method: "POST", headers: getHeader(), body: JSON.stringify({ - presentation_id, - - index, + id: slide_id, prompt, }), cache: "no-cache", diff --git a/servers/nextjs/app/api/export-as-pdf/route.ts b/servers/nextjs/app/api/export-as-pdf/route.ts index 5e2613e9..44307a5a 100644 --- a/servers/nextjs/app/api/export-as-pdf/route.ts +++ b/servers/nextjs/app/api/export-as-pdf/route.ts @@ -13,7 +13,7 @@ export async function POST(req: NextRequest) { return NextResponse.json({ error: "Missing Presentation ID" }, { status: 400 }); } const browser = await puppeteer.launch({ - headless: true, + headless: false, args: [ '--no-sandbox', '--disable-setuid-sandbox', @@ -31,6 +31,7 @@ export async function POST(req: NextRequest) { width: "1280px", height: "720px", margin: { top: 0, right: 0, bottom: 0, left: 0 } + }); browser.close(); const sanitizedTitle = sanitizeFilename(title);