cleanup
This commit is contained in:
@@ -20,15 +20,15 @@ type NaturalSize = { width: number | null; height: number | null };
|
||||
type FocusPoint = { xRatio: number; yRatio: number } | null;
|
||||
type DisplayKind = 'image' | 'pdf';
|
||||
|
||||
type PreviewEntry = {
|
||||
type DocumentLink = {
|
||||
url: string;
|
||||
alt?: string;
|
||||
contentType?: string | null;
|
||||
};
|
||||
|
||||
type DocumentLikeWithPreview = DocumentLike & { previewEntry?: PreviewEntry };
|
||||
type DocumentLikeWithPreview = DocumentLike & { documentLink?: DocumentLink };
|
||||
|
||||
const determineDisplayKind = (entry?: PreviewEntry | null): DisplayKind => {
|
||||
const determineDisplayKind = (entry?: DocumentLink | null): DisplayKind => {
|
||||
const type = entry?.contentType?.toLowerCase?.() || '';
|
||||
if (type.includes('pdf')) {
|
||||
return 'pdf';
|
||||
@@ -66,17 +66,17 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
const currentDocument = overlayDocument as DocumentLikeWithPreview | null;
|
||||
|
||||
useEffect(() => {
|
||||
if (currentDocument?.previewEntry?.url) {
|
||||
if (currentDocument?.documentLink?.url) {
|
||||
setDocumentSnapshot(currentDocument);
|
||||
}
|
||||
}, [currentDocument]);
|
||||
|
||||
const activeDocument = open && currentDocument?.previewEntry?.url ? currentDocument : documentSnapshot;
|
||||
const previewEntry = activeDocument?.previewEntry || null;
|
||||
const displayKind = useMemo(() => determineDisplayKind(previewEntry), [previewEntry]);
|
||||
const activeDocument = open && currentDocument?.documentLink?.url ? currentDocument : documentSnapshot;
|
||||
const documentLink = activeDocument?.documentLink || null;
|
||||
const displayKind = useMemo(() => determineDisplayKind(documentLink), [documentLink]);
|
||||
const isPdfDisplay = displayKind === 'pdf';
|
||||
const documentTitle = activeDocument?.title || undefined;
|
||||
const effectiveAlt = previewEntry?.alt || documentTitle || 'Document preview';
|
||||
const effectiveAlt = documentLink?.alt || documentTitle || 'Document preview';
|
||||
|
||||
useEffect(() => {
|
||||
if (visibilityTimerRef.current) {
|
||||
@@ -88,7 +88,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
displayTimerRef.current = null;
|
||||
}
|
||||
|
||||
if (open && previewEntry?.url) {
|
||||
if (open && documentLink?.url) {
|
||||
setRenderBackdrop(true);
|
||||
displayTimerRef.current = requestAnimationFrame(() => {
|
||||
displayTimerRef.current = requestAnimationFrame(() => {
|
||||
@@ -114,7 +114,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
visibilityTimerRef.current = null;
|
||||
}
|
||||
};
|
||||
}, [open, previewEntry?.url]);
|
||||
}, [open, documentLink?.url]);
|
||||
|
||||
useEffect(() => () => {
|
||||
if (visibilityTimerRef.current) {
|
||||
@@ -126,7 +126,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
}, [isPdfDisplay, open, previewEntry?.url]);
|
||||
}, [isPdfDisplay, open, documentLink?.url]);
|
||||
|
||||
useEffect(() => {
|
||||
setIsNativeScale(false);
|
||||
@@ -137,7 +137,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
scrollEl.scrollLeft = 0;
|
||||
scrollEl.scrollTop = 0;
|
||||
}
|
||||
}, [open, previewEntry?.url, displayKind]);
|
||||
}, [open, documentLink?.url, displayKind]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
@@ -180,7 +180,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
}, [open]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!previewEntry?.url) {
|
||||
if (!documentLink?.url) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -190,10 +190,10 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
scrollEl.scrollTop = 0;
|
||||
}
|
||||
focusRef.current = null;
|
||||
}, [previewEntry?.url]);
|
||||
}, [documentLink?.url]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!renderBackdrop || !previewEntry?.url) {
|
||||
if (!renderBackdrop || !documentLink?.url) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
});
|
||||
|
||||
return () => cancelAnimationFrame(frame);
|
||||
}, [renderBackdrop, previewEntry?.url]);
|
||||
}, [renderBackdrop, documentLink?.url]);
|
||||
|
||||
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
|
||||
event.stopPropagation();
|
||||
@@ -267,7 +267,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
toggleZoomAtPoint(event.clientX ?? 0, event.clientY ?? 0);
|
||||
};
|
||||
|
||||
const shouldRender = renderBackdrop && Boolean(previewEntry?.url);
|
||||
const shouldRender = renderBackdrop && Boolean(documentLink?.url);
|
||||
|
||||
const stageClassName = isPdfDisplay
|
||||
? 'preview-zoom__stage preview-zoom__stage--pdf'
|
||||
@@ -308,7 +308,7 @@ const PreviewZoomOverlay: React.FC<PreviewZoomOverlayProps> = ({
|
||||
return null;
|
||||
}
|
||||
|
||||
const effectiveDisplay = previewEntry;
|
||||
const effectiveDisplay = documentLink;
|
||||
|
||||
return createPortal(
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user