Change resize by CSS
This commit is contained in:
User
2024-12-28 16:32:41 -05:00
parent 58f85bfc22
commit 6e8d2023b7
5 changed files with 26 additions and 49 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -46,9 +46,9 @@ export default function AppLayout({ auth, header, children, toolbar }) {
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4"> <header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
<SidebarTrigger className="-ml-1" /> <SidebarTrigger className="-ml-1" />
<Separator orientation="vertical" className="mr-2 h-4" /> <Separator orientation="vertical" className="mr-2 h-4" />
<Breadcrumb className="hidden lg:block"> <Breadcrumb>
<BreadcrumbList> <BreadcrumbList>
<BreadcrumbItem> <BreadcrumbItem className="hidden lg:block">
<BreadcrumbLink asChild> <BreadcrumbLink asChild>
<Link href={ route('comics.index') }>Home</Link> <Link href={ route('comics.index') }>Home</Link>
</BreadcrumbLink> </BreadcrumbLink>

View File

@@ -70,7 +70,7 @@ export default function Chapters({ auth, comic, chapters, histories }) {
return ( return (
<AppLayout auth={ auth } header={ <AppLayout auth={ auth } header={
<> <>
<BreadcrumbSeparator /> <span className="hidden lg:block"><BreadcrumbSeparator /></span>
<BreadcrumbItem> <BreadcrumbItem>
<BreadcrumbPage>{ comic.comic.name }</BreadcrumbPage> <BreadcrumbPage>{ comic.comic.name }</BreadcrumbPage>
</BreadcrumbItem> </BreadcrumbItem>

View File

@@ -60,7 +60,6 @@ export default function Index({ comics, offset, auth }) {
</Head> </Head>
<div className="p-3 pt-1 grid 2xl:grid-cols-6 xl:grid-cols-4 sm:grid-cols-2 gap-2"> <div className="p-3 pt-1 grid 2xl:grid-cols-6 xl:grid-cols-4 sm:grid-cols-2 gap-2">
<ComicCards { ...comics } /> <ComicCards { ...comics } />
<button onClick={() => {throw new Error("This is your first error!");}}>Break the world</button>;
</div> </div>
<Pagination className="justify-end pb-2"> <Pagination className="justify-end pb-2">
<PaginationContent> <PaginationContent>

View File

@@ -8,10 +8,10 @@ import { throttle } from 'lodash';
import { BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator } from '@/components/ui/breadcrumb'; import { BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator } from '@/components/ui/breadcrumb';
import { Button } from '@/components/ui/button'; import { Button } from '@/components/ui/button';
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog';
import PrimaryButton from '@/components/PrimaryButton'; import PrimaryButton from '@/components/PrimaryButton';
import { Switch } from '@/components/ui/switch'; import { Switch } from '@/components/ui/switch';
import { TooltipContent } from "@/components/ui/tooltip"; import { TooltipContent } from '@/components/ui/tooltip';
export default function Read({ auth, comic, chapter }) { export default function Read({ auth, comic, chapter }) {
@@ -69,39 +69,15 @@ export default function Read({ auth, comic, chapter }) {
const ImageForComic = (img) => { const ImageForComic = (img) => {
const imgRef = useRef(); const imgRef = useRef();
const resizeImage = () => { let imgStyles = {};
if (!imgRef.current || !ref.current) return;
const { naturalWidth, naturalHeight } = imgRef.current; if (divDimensions[1] > divDimensions[0] && readingMode === 'utd') {
const containerWidth = ref.current.clientWidth; imgStyles = { width: '100%' };
const containerHeight = ref.current.clientHeight; } else if (divDimensions[0] > divDimensions[1] && readingMode === 'utd') {
imgStyles = { width: '50%' };
let width, height; } else if (readingMode === 'rtl') {
imgStyles = { height: 'calc(100dvh - 90px)' };
if (readingMode === "rtl") { }
// Scale for RTL mode
const ratioWidth = naturalWidth / containerWidth;
const ratioHeight = naturalHeight / containerHeight;
const maxRatio = Math.max(ratioWidth, ratioHeight);
width = naturalWidth / maxRatio;
height = naturalHeight / maxRatio;
} else if (readingMode === "utd") {
// Scale for UTD mode
const ratio = divDimensions[1] < divDimensions[0] ? 0.33 : 1; // Example logic
const scaledWidth = containerWidth * ratio;
const scaledRatio = naturalWidth / scaledWidth;
width = naturalWidth / scaledRatio;
height = naturalHeight / scaledRatio;
}
// Apply dimensions directly
imgRef.current.style.width = `${width}px`;
imgRef.current.style.height = `${height}px`;
};
useEffect(() => {
resizeImage();
}, [readingMode, divDimensions]); // Recalculate when these dependencies change
const handleImageClick = (e) => { const handleImageClick = (e) => {
if (readingMode === "utd") return; if (readingMode === "utd") return;
@@ -128,9 +104,9 @@ export default function Read({ auth, comic, chapter }) {
<img <img
id={ `image-${img.innerKey}` } id={ `image-${img.innerKey}` }
ref={ imgRef } ref={ imgRef }
className="m-auto comic-img" style={ imgStyles }
className={` m-auto comic-img `}
src={ `/image/${btoa(img.url)}` } src={ `/image/${btoa(img.url)}` }
onLoad={ resizeImage } // Resize image immediately on load
onClick={ handleImageClick } onClick={ handleImageClick }
alt={ comic.comic.name } alt={ comic.comic.name }
/> />
@@ -282,15 +258,17 @@ export default function Read({ auth, comic, chapter }) {
return ( return (
<AppLayout auth={ auth } header={ <AppLayout auth={ auth } header={
<> <>
<BreadcrumbSeparator /> <span className="hidden lg:block">
<BreadcrumbItem> <BreadcrumbSeparator />
<BreadcrumbLink asChild> <BreadcrumbItem>
<Link href={ route('comics.chapters', [comic.comic.path_word]) }> <BreadcrumbLink asChild>
{ comic.comic.name } <Link href={ route('comics.chapters', [comic.comic.path_word]) }>
</Link> { comic.comic.name }
</BreadcrumbLink> </Link>
</BreadcrumbItem> </BreadcrumbLink>
<BreadcrumbSeparator /> </BreadcrumbItem>
<BreadcrumbSeparator />
</span>
<BreadcrumbItem> <BreadcrumbItem>
<BreadcrumbPage>{ chapter.chapter.name }</BreadcrumbPage> <BreadcrumbPage>{ chapter.chapter.name }</BreadcrumbPage>
</BreadcrumbItem> </BreadcrumbItem>