Merge branch 'main' into admin-info
This commit is contained in:
commit
650320504f
@ -49,7 +49,7 @@ export default function AdminUploadsTable({
|
|||||||
aspectRatio={3.0 / 2.0}
|
aspectRatio={3.0 / 2.0}
|
||||||
className={clsx(
|
className={clsx(
|
||||||
'rounded-[3px] overflow-hidden',
|
'rounded-[3px] overflow-hidden',
|
||||||
'border-subtle',
|
'border-main',
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -21,32 +21,27 @@ export default function useImageZoomControls(
|
|||||||
|
|
||||||
useMetaThemeColor({ colorLight });
|
useMetaThemeColor({ colorLight });
|
||||||
|
|
||||||
const open = useCallback(() => {
|
const open = useCallback(() =>
|
||||||
viewerRef.current?.show();
|
viewerRef.current?.show(), []);
|
||||||
}, [viewerRef]);
|
|
||||||
|
|
||||||
const close = useCallback(() => {
|
const close = useCallback(() =>
|
||||||
viewerRef.current?.hide();
|
viewerRef.current?.hide(), []);
|
||||||
}, [viewerRef]);
|
|
||||||
|
|
||||||
const zoomTo = useCallback((zoomLevel = 1) => {
|
const zoomTo = useCallback((zoomLevel = 1) =>
|
||||||
viewerRef.current?.zoomTo(zoomLevel);
|
viewerRef.current?.zoomTo(zoomLevel), []);
|
||||||
}, [viewerRef]);
|
|
||||||
|
|
||||||
const reset = useCallback(() => {
|
const reset = useCallback(() => {
|
||||||
setZoomLevel(1);
|
setZoomLevel(1);
|
||||||
viewerRef.current?.reset();
|
viewerRef.current?.reset();
|
||||||
}, [viewerRef]);
|
}, []);
|
||||||
|
|
||||||
// On 'F' keydown, toggle fullscreen
|
// On 'F' keydown, toggle fullscreen
|
||||||
const handleKeyDown = useCallback(() => {
|
const handleKeyDown = useCallback(() => {
|
||||||
if (shouldExpandOnFKeydown) {
|
if (shouldExpandOnFKeydown) { open(); }
|
||||||
viewerRef.current?.show();
|
}, [shouldExpandOnFKeydown, open]);
|
||||||
}
|
|
||||||
}, [shouldExpandOnFKeydown]);
|
|
||||||
useKeydownHandler(handleKeyDown, ['F']);
|
useKeydownHandler(handleKeyDown, ['F']);
|
||||||
|
|
||||||
useEffect(() => {
|
const initialize = useCallback(() => {
|
||||||
if (imageRef.current && isEnabled) {
|
if (imageRef.current && isEnabled) {
|
||||||
viewerRef.current = new Viewer(imageRef.current, {
|
viewerRef.current = new Viewer(imageRef.current, {
|
||||||
navbar: false,
|
navbar: false,
|
||||||
@ -61,6 +56,7 @@ export default function useImageZoomControls(
|
|||||||
(target as any).viewer.viewer as HTMLDivElement;
|
(target as any).viewer.viewer as HTMLDivElement;
|
||||||
},
|
},
|
||||||
url: (image: HTMLImageElement) => {
|
url: (image: HTMLImageElement) => {
|
||||||
|
// Addresses Safari bug where images don't load
|
||||||
image.loading = 'eager';
|
image.loading = 'eager';
|
||||||
return image.src;
|
return image.src;
|
||||||
},
|
},
|
||||||
@ -69,9 +65,8 @@ export default function useImageZoomControls(
|
|||||||
setColorLight('#000');
|
setColorLight('#000');
|
||||||
},
|
},
|
||||||
hide: () => {
|
hide: () => {
|
||||||
setTimeout(() => {
|
// Optimizes Safari status bar animation
|
||||||
setColorLight(undefined);
|
setTimeout(() => setColorLight(undefined), 300);
|
||||||
}, 300);
|
|
||||||
},
|
},
|
||||||
hidden: () => {
|
hidden: () => {
|
||||||
setShouldRespondToKeyboardCommands?.(true);
|
setShouldRespondToKeyboardCommands?.(true);
|
||||||
@ -80,20 +75,26 @@ export default function useImageZoomControls(
|
|||||||
setZoomLevel(ratio);
|
setZoomLevel(ratio);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
|
||||||
viewerRef.current?.destroy();
|
|
||||||
viewerRef.current = null;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
imageRef,
|
imageRef,
|
||||||
isEnabled,
|
isEnabled,
|
||||||
zoomTo,
|
|
||||||
setShouldRespondToKeyboardCommands,
|
setShouldRespondToKeyboardCommands,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
const cleanUp = useCallback(() => {
|
||||||
|
viewerRef.current?.destroy();
|
||||||
|
viewerRef.current = null;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
initialize();
|
||||||
|
return cleanUp;
|
||||||
|
}, [initialize, cleanUp]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
initialize,
|
||||||
|
cleanUp,
|
||||||
open,
|
open,
|
||||||
close,
|
close,
|
||||||
reset,
|
reset,
|
||||||
|
|||||||
@ -25,7 +25,7 @@ export default function PhotoLightbox({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={clsx(
|
<div className={clsx(
|
||||||
'border dark:border-gray-800 p-1.5 lg:p-2 rounded-md',
|
'border-main p-1.5 lg:p-2 rounded-md',
|
||||||
'bg-gray-50 dark:bg-gray-950',
|
'bg-gray-50 dark:bg-gray-950',
|
||||||
)}>
|
)}>
|
||||||
<PhotoGrid
|
<PhotoGrid
|
||||||
|
|||||||
@ -43,7 +43,7 @@ export default function PhotoSmall({
|
|||||||
selected && 'brightness-50',
|
selected && 'brightness-50',
|
||||||
'min-w-[50px]',
|
'min-w-[50px]',
|
||||||
'rounded-[3px] overflow-hidden',
|
'rounded-[3px] overflow-hidden',
|
||||||
'border-subtle',
|
'border-main',
|
||||||
)}
|
)}
|
||||||
prefetch={prefetch}
|
prefetch={prefetch}
|
||||||
>
|
>
|
||||||
|
|||||||
@ -121,11 +121,8 @@
|
|||||||
}
|
}
|
||||||
/* Border */
|
/* Border */
|
||||||
@utility border-main {
|
@utility border-main {
|
||||||
@apply border-gray-200 dark:border-gray-700
|
|
||||||
}
|
|
||||||
@utility border-subtle {
|
|
||||||
@apply
|
@apply
|
||||||
border border-gray-200 dark:border-gray-800
|
border border-gray-200 dark:border-gray-700
|
||||||
}
|
}
|
||||||
/* Background */
|
/* Background */
|
||||||
@utility bg-main {
|
@utility bg-main {
|
||||||
@ -304,7 +301,7 @@
|
|||||||
@layer components {
|
@layer components {
|
||||||
.component-surface {
|
.component-surface {
|
||||||
@apply
|
@apply
|
||||||
bg-content border border-main
|
bg-content border-main
|
||||||
rounded-lg
|
rounded-lg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user