import { EnvironmentSettingsWindow as SharedEnvironmentSettingsWindow } from "@nodedc/ui-react"; import { environmentSurfaceIds, type EnvironmentSettings, type EnvironmentSurfaceId, type UploadedEnvironmentMedia } from "../core/environment/environmentSettings"; import { roots, workspaces, workspacesForRoot } from "../productModel"; interface Props { open: boolean; settings: EnvironmentSettings; state: "loading" | "ready" | "saving" | "error"; error: string | null; onClose: () => void; onSave: (settings: EnvironmentSettings) => Promise; onUpload: (surfaceId: EnvironmentSurfaceId, itemId: string, file: File) => Promise; } const surfaces = environmentSurfaceIds.map(id => ({ id, home: id === "home", description: id === "home" ? "Главная страница продукта" : `Стартовая страница раздела «${roots.find(root => root.id === id)?.label}»`, actions: id === "home" ? workspaces.filter(item => !item.internalOnly) : workspacesForRoot(id), })); export function EnvironmentSettingsWindow(props: Props) { return props.onSave({ ...draft, pages: Object.fromEntries(environmentSurfaceIds.map(id => [id, draft.pages[id]])) as EnvironmentSettings["pages"] })} onUpload={(id, itemId, file) => { if (!environmentSurfaceIds.includes(id as EnvironmentSurfaceId)) throw new Error("Страница окружения недоступна."); return props.onUpload(id as EnvironmentSurfaceId, itemId, file); }} />; }