import { lazy, Suspense } from "react"; import { ResizableHandle, ResizablePanel } from "@/components/ui/resizable"; import { Page } from "../types"; import { useWidgetSnippets, WidgetSnippetData } from "@/modules/layout/useWidgetSnippets"; const WidgetPropertyPanel = lazy(() => import("@/components/widgets/WidgetPropertyPanel").then(module => ({ default: module.WidgetPropertyPanel }))); const ContainerPropertyPanel = lazy(() => import("@/components/containers/ContainerPropertyPanel").then(module => ({ default: module.ContainerPropertyPanel }))); const UserPageTypeFields = lazy(() => import("./UserPageTypeFields").then(module => ({ default: module.UserPageTypeFields }))); import { LayoutPropertyPanel } from "@/components/layouts/LayoutPropertyPanel"; import { SnippetPropertyPanel } from "@/components/layouts/SnippetPropertyPanel"; interface EditorRightPanelProps { selectedWidgetId: string | null; selectedContainerId: string | null; showTypeFields: boolean; page: Page; selectedPageId: string | null; assignedTypes: any[]; onPageUpdate: (updatedPage: Page) => void; contextVariables?: Record; setSelectedWidgetId: (id: string | null) => void; selectedLayout: any | null; onRenameLayout: (template: any, newName: string) => Promise; onDeleteLayout: (template: any) => void; onApplyLayout: (template: any) => void; onToggleLayoutVisibility: (template: any) => void; selectedSnippetId?: string | null; onInsertSnippet?: (widgetId: string, props?: Record, snippetId?: string) => void; onDeleteSnippet?: (id: string) => void; onCloseSnippet?: () => void; } export const EditorRightPanel = ({ selectedWidgetId, selectedContainerId, showTypeFields, page, selectedPageId, assignedTypes, onPageUpdate, contextVariables, setSelectedWidgetId, selectedLayout, onRenameLayout, onDeleteLayout, onApplyLayout, onToggleLayoutVisibility, selectedSnippetId, onInsertSnippet, onDeleteSnippet, onCloseSnippet, }: EditorRightPanelProps) => { const { snippets, updateSnippetName, updateSnippetData, removeSnippet } = useWidgetSnippets(); const selectedSnippet = selectedSnippetId ? snippets.find(s => s.id === selectedSnippetId) : null; if (!selectedWidgetId && !selectedContainerId && !showTypeFields && !selectedLayout && !selectedSnippet) return null; return ( <>
{selectedSnippet ? ( onInsertSnippet?.(widgetId, props, selectedSnippet.id)} onDelete={async (id) => { await removeSnippet(id); onDeleteSnippet?.(id); }} onRename={(id, name) => updateSnippetName(id, name)} onPropsUpdate={(id, data) => updateSnippetData(id, data)} onClose={() => onCloseSnippet?.()} /> ) : selectedLayout ? ( onRenameLayout(selectedLayout, name)} onDelete={() => onDeleteLayout(selectedLayout)} onApply={() => onApplyLayout(selectedLayout)} onToggleVisibility={() => onToggleLayoutVisibility(selectedLayout)} /> ) : selectedWidgetId ? ( Loading settings...
}> ) : selectedContainerId ? ( Loading settings...}> ) : showTypeFields ? (
Loading types...
}> onPageUpdate({ ...page, meta: newMeta })} /> ) : null}
); };