@@ -5,12 +5,18 @@ interface Props {
55 id: number ;
66 pdf: string ;
77 posts: CollectionEntry <" blog" >[];
8+ hash: string ;
89}
910
10- const { id, pdf, posts } = Astro .props as Props ;
11+ const { id, pdf, posts, hash } = Astro .props as Props ;
12+
13+ const color1 = ` #${hash .slice (0 , 6 )} ` ;
14+ const color2 = ` #${(parseInt (hash .slice (0 , 6 ), 16 ) ^ 0xffffff )
15+ .toString (16 )
16+ .padStart (6 , " 0" )} ` ;
1117---
1218<a href ={ pdf } class =" group block overflow-hidden rounded-lg border border-black/15 dark:border-white/20 hover:bg-black/5 dark:hover:bg-white/5 transition-colors duration-300 ease-in-out" >
13- <canvas id = { ` preview-${ id } ` } class =" w-full h-48 object-cover bg-black/5 dark:bg-white/10 " / >
19+ <div class =" w-full h-48" style = { ` background: linear-gradient(135deg, ${ color1 }, ${ color2 }); ` } ></ div >
1420 <div class =" p-4 space-y-2" >
1521 <div class =" font-semibold" >Batch #{ id } </div >
1622 <ul class =" text-sm list-disc list-inside space-y-0.5" >
@@ -20,25 +26,3 @@ const { id, pdf, posts } = Astro.props as Props;
2026 </ul >
2127 </div >
2228</a >
23-
24- <script type =" module" is:inline >
25- const pdfUrl = "${pdf}";
26- const canvasId = "preview-${id}";
27- import("https://cdn.jsdelivr.net/npm/pdfjs-dist@3.11.174/+esm").then((pdfjsLib) => {
28- pdfjsLib.GlobalWorkerOptions.workerSrc =
29- "https://cdn.jsdelivr.net/npm/pdfjs-dist@3.11.174/build/pdf.worker.min.js";
30- const canvas = document.getElementById(canvasId);
31- if (!canvas) return;
32- pdfjsLib.getDocument(pdfUrl).promise.then((pdfDoc) => {
33- pdfDoc.getPage(1).then((page) => {
34- const viewport = page.getViewport({ scale: 1 });
35- const scale = canvas.clientWidth / viewport.width;
36- const scaledViewport = page.getViewport({ scale });
37- canvas.width = scaledViewport.width;
38- canvas.height = scaledViewport.height;
39- const context = canvas.getContext("2d");
40- page.render({ canvasContext: context, viewport: scaledViewport });
41- });
42- });
43- });
44- </script >
0 commit comments