37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
let tile = fs.readFileSync('src/components/MediaTile.tsx', 'utf8');
|
|
|
|
const regex = /\)\s*:\s*\(\s*\/\* eslint-disable-next-line @next\/next\/no-img-element \*\/\s*<img[\s\S]*?<\/div>\s*\)\s*}/;
|
|
|
|
// Wait, the regex needs to match exactly up to the end of the img block.
|
|
const regex2 = /\)\s*:\s*\(\s*\/\* eslint-disable-next-line @next\/next\/no-img-element \*\/\s*<img[\s\S]*?\/>\s*\)/;
|
|
|
|
const newBlock = `) : isVideo ? (
|
|
<video
|
|
src={\`/api/media/\${item.relativePath}?type=preview\`}
|
|
poster={\`/api/media/\${item.relativePath}?type=poster\`}
|
|
autoPlay
|
|
muted
|
|
loop
|
|
playsInline
|
|
onLoadedData={(e) => {
|
|
const target = e.target as HTMLVideoElement;
|
|
target.parentElement?.classList.remove('loading-skeleton');
|
|
}}
|
|
/>
|
|
) : (
|
|
/* eslint-disable-next-line @next/next/no-img-element */
|
|
<img
|
|
src={\`/api/media/\${item.relativePath}?type=thumb\`}
|
|
alt={item.filename}
|
|
loading="lazy"
|
|
onLoad={(e) => {
|
|
const target = e.target as HTMLImageElement;
|
|
target.parentElement?.classList.remove('loading-skeleton');
|
|
}}
|
|
/>
|
|
)`;
|
|
|
|
tile = tile.replace(regex2, newBlock);
|
|
fs.writeFileSync('src/components/MediaTile.tsx', tile, 'utf8');
|