From 85988697d488c55e20ace8194788ba74185d93a5 Mon Sep 17 00:00:00 2001
From: JubaAzul <118773284+JubaAzul@users.noreply.github.com>
Date: Wed, 26 Mar 2025 16:52:51 -0400
Subject: [PATCH] [FEATURE] Zoomer sur les images en cliquant dessus Fixes #306
---
.../templates/TextTypeTemplate.ts | 3 +-
client/src/markedConfig.ts | 103 +++++++++++++++++-
2 files changed, 100 insertions(+), 6 deletions(-)
diff --git a/client/src/components/GiftTemplate/templates/TextTypeTemplate.ts b/client/src/components/GiftTemplate/templates/TextTypeTemplate.ts
index dc5a77b..548e32c 100644
--- a/client/src/components/GiftTemplate/templates/TextTypeTemplate.ts
+++ b/client/src/components/GiftTemplate/templates/TextTypeTemplate.ts
@@ -1,4 +1,4 @@
-import marked from 'src/markedConfig';
+import marked, {attachImageModalListeners} from 'src/markedConfig';
import katex from 'katex';
import { TextFormat } from 'gift-pegjs';
@@ -53,6 +53,7 @@ export function FormattedTextTemplate(formattedText: TextFormat): string {
break;
case 'markdown':
parsedText = marked.parse(formatText, { breaks: true, gfm: true }) as string; //
for newlines
+ attachImageModalListeners();
result = parsedText.replace(/(^
)(.*?)(<\/p>)$/gm, '$2');
break;
default:
diff --git a/client/src/markedConfig.ts b/client/src/markedConfig.ts
index 29a9d9a..fac63ac 100644
--- a/client/src/markedConfig.ts
+++ b/client/src/markedConfig.ts
@@ -2,15 +2,108 @@ import { marked, Renderer } from 'marked';
// Customized renderer to support image width and height
// see https://github.com/markedjs/marked/issues/339#issuecomment-1146363560
-const renderer = new Renderer();
-
-renderer.image = ({href, title, text}) => {
- const [width, height] = title?.startsWith('=') ? title.slice(1).split('x').map(v => v.trim()).filter(Boolean) : [];
- return ``;
+declare global {
+ interface Window {
+ showImageInModal: (src: string, alt: string) => void;
+ }
}
+const renderer = new Renderer();
+
+renderer.image = ({ href, title, text }) => {
+ const [width, height] = title?.startsWith('=') ? title.slice(1).split('x').map(v => v.trim()).filter(Boolean) : [];
+ const maxHeight = '15rem'; // Limite maximale de hauteur
+
+ return `
+