itm-holding-package
Version:
ITM HOLDING PACKAGES
53 lines (43 loc) • 1.66 kB
text/typescript
import { useState } from 'react';
import html2canvas from 'html2canvas';
export const useScreenshot = () => {
const [isCapturing, setIsCapturing] = useState(false);
const [screenshot, setScreenshot] = useState<string | null>(null);
const captureScreen = async () => {
try {
setIsCapturing(true);
// Trouver et cacher temporairement la modal
const modalElement = document.querySelector('.bug-whisper-widget');
if (modalElement) {
(modalElement as HTMLElement).style.visibility = 'hidden';
}
// Attendre que les changements de DOM soient appliqués
await new Promise(resolve => setTimeout(resolve, 100));
const canvas = await html2canvas(document.body, {
useCORS: true,
allowTaint: true,
logging: false,
scale: window.devicePixelRatio
});
// Restaurer la visibilité de la modal
if (modalElement) {
(modalElement as HTMLElement).style.visibility = 'visible';
}
const screenshotData = canvas.toDataURL('image/png');
setScreenshot(screenshotData);
} catch (error) {
console.error('Erreur lors de la capture d\'écran:', error);
} finally {
setIsCapturing(false);
}
};
const resetScreenshot = () => {
setScreenshot(null);
};
return {
isCapturing,
screenshot,
captureScreen,
resetScreenshot
};
};