import { Box, Button, Text } from "@prismicio/editor-ui"; import React, { Suspense } from "react"; import { AiOutlineExclamationCircle } from "react-icons/ai"; import { countMissingScreenshots } from "@/domain/slice"; import { DefaultErrorBoundary } from "@/features/errorBoundaries"; import { SharedSliceCard } from "@/features/slices/sliceCards/SharedSliceCard"; import { ModelsStatuses } from "@/features/sync/getUnSyncChanges"; import { useScreenshotChangesModal } from "@/hooks/useScreenshotChangesModal"; import { ChangesSectionHeader } from "@/legacy/components/ChangesSectionHeader"; import { CustomTypeTable } from "@/legacy/components/CustomTypeTable/changesPage"; import Grid from "@/legacy/components/Grid"; import ScreenshotChangesModal from "@/legacy/components/ScreenshotChangesModal"; import { ComponentUI } from "@/legacy/lib/models/common/ComponentUI"; import { LocalOrRemoteCustomType } from "@/legacy/lib/models/common/ModelData"; import { ModelStatus } from "@/legacy/lib/models/common/ModelStatus"; import { AuthStatus } from "@/modules/userContext/types"; import { DevCollaborationExperiment } from "./DevCollaborationExperiment"; interface ChangesItemsProps { unSyncedCustomTypes: LocalOrRemoteCustomType[]; unSyncedSlices: ComponentUI[]; modelsStatuses: ModelsStatuses; authStatus: AuthStatus; isOnline: boolean; } export const ChangesItems: React.FC = ({ unSyncedCustomTypes, unSyncedSlices, modelsStatuses, authStatus, isOnline, }) => { const { modalPayload, onOpenModal } = useScreenshotChangesModal(); const { sliceFilterFn, defaultVariationSelector } = modalPayload; const screenshotChangesSlices = unSyncedSlices.filter( (s) => modelsStatuses.slices[s.model.id] !== ModelStatus.Deleted, ); return ( <> {unSyncedCustomTypes.length > 0 && ( Types {unSyncedCustomTypes.length} )} {unSyncedSlices.length > 0 && ( <> Slices {unSyncedSlices.length} {unSyncedSlices.some( (slice) => countMissingScreenshots(slice) > 0 && modelsStatuses.slices[slice.model.id] !== ModelStatus.Deleted, ) && ( Missing Screenshots )} slice.model.name} renderElem={(slice) => { const modelStatus = modelsStatuses.slices[slice.model.id]; return ( { onOpenModal({ sliceFilterFn: (s) => s.filter((e) => e.model.id === slice.model.id), }); }} slice={slice} variant="solid" /> ); }} /> )} ); };