diff --git a/src/lib/iconify-mdi-subset.generated.json b/src/lib/iconify-mdi-subset.generated.json index 826613b..0e39143 100644 --- a/src/lib/iconify-mdi-subset.generated.json +++ b/src/lib/iconify-mdi-subset.generated.json @@ -66,6 +66,9 @@ "printer-outline": { "body": "" }, + "arrow-right": { + "body": "" + }, "download-outline": { "body": "" }, diff --git a/src/lib/rusty-image.ts b/src/lib/rusty-image.ts index cab5609..170a655 100644 --- a/src/lib/rusty-image.ts +++ b/src/lib/rusty-image.ts @@ -153,6 +153,10 @@ const MARKDOWN_IMAGE_PARAMS: RustyImageTransformParams = { const IMG_SRC_REGEX = /]*?)src\s*=\s*["']([^"']+)["']([^>]*)>/gi; +// Animated formats — skip transform, keep original URL so animation survives. +// RustyCMS /api/transform decodes only the first frame. +const ANIMATED_EXT_REGEX = /\.gif(\?|$)/i; + export async function processMarkdownHtmlImages(html: string, _baseUrl?: string, transformParams: RustyImageTransformParams = MARKDOWN_IMAGE_PARAMS): Promise { const matches = [...html.matchAll(IMG_SRC_REGEX)]; const replacements: { index: number; length: number; newBlock: string }[] = []; @@ -160,7 +164,8 @@ export async function processMarkdownHtmlImages(html: string, _baseUrl?: string, const rawSrc = m[2]; const url = rawSrc.startsWith('//') ? `https:${rawSrc}` : rawSrc; if (!url.startsWith('http')) continue; - const transformedPath = getCmsImageUrl(url, transformParams); + const isAnimated = ANIMATED_EXT_REGEX.test(url); + const transformedPath = isAnimated ? url : getCmsImageUrl(url, transformParams); const href = transformedPath; const newImg = m[0].replace(rawSrc, transformedPath); const newBlock = `${newImg}`;