"use client"; import dynamic from "next/dynamic"; import { useParams, useSearchParams } from "next/navigation"; import { createContext, type ReactNode, useContext, useMemo } from "react"; import { CanvasLogoLoadingView } from "@/components/canvas/canvas-logo-loading"; import type { CanvasInitialProject } from "@/types/canvas"; import { loadCanvasEditorModule } from "./canvas-editor-loader"; const CanvasEditorLegacyPage = dynamic(loadCanvasEditorModule, { loading: () => , ssr: false, }); const LiblibVideoCanvasReplica = dynamic( () => import("@/components/canvas/LiblibVideoCanvasReplica").then((module) => module.LiblibVideoCanvasReplica), { loading: () => , ssr: false, } ); export function CanvasPageClientRouter({ initialId, initialMode = "", initialSiteLogo = null, initialSiteLogoDark = null, initialSiteName = "AI Chatbot", initialWorkspaceType = "", initialProject = null, }: { initialId: string; initialMode?: string; initialSiteLogo?: string | null; initialSiteLogoDark?: string | null; initialSiteName?: string | null; initialWorkspaceType?: string; initialProject?: CanvasInitialProject | null; }) { const routeParams = useParams(); const searchParams = useSearchParams(); const routeId = routeParams?.id; const id = Array.isArray(routeId) ? routeId[0] || initialId : typeof routeId === "string" ? routeId : initialId; const mode = searchParams.get("mode") || initialMode; const requestedWorkspaceType = searchParams.get("workspaceType") || initialWorkspaceType; const requestedAgentMode = mode === "agent"; const isVideoMode = !requestedAgentMode && (mode === "video" || requestedWorkspaceType === "video"); const legacyParams = useMemo(() => Promise.resolve({ id }), [id]); const loadingBrand = useMemo( () => ({ siteLogo: initialSiteLogo, siteLogoDark: initialSiteLogoDark, siteName: initialSiteName, }), [initialSiteLogo, initialSiteLogoDark, initialSiteName] ); if (!id) { return ( ); } if (isVideoMode) { return ( ); } return ( ); } type CanvasLoadingBrand = { siteLogo?: string | null; siteLogoDark?: string | null; siteName?: string | null; }; const CanvasLoadingBrandContext = createContext({}); function CanvasLoadingBrandProvider({ children, value, }: { children: ReactNode; value: CanvasLoadingBrand; }) { return ( {children} ); } function CanvasRouteLoader({ label }: { label: string }) { const brand = useContext(CanvasLoadingBrandContext); return ( ); }