"use client"; // Wichtig, um sicherzustellen, dass der Code nur auf dem Client ausgeführt wird import React, { useEffect, useState, useRef } from "react"; import { Icon } from "@iconify/react"; // indexDB-Funktionen nur im Browser importieren let storePDF, getPDF; if (typeof window !== "undefined") { const indexedDBModule = require("../utils/indexedDB"); storePDF = indexedDBModule.storePDF; getPDF = indexedDBModule.getPDF; } function Footer() { const [pdfName, setPdfName] = useState(""); const [showSlider, setShowSlider] = useState(false); const sliderRef = useRef(null); const pdfFiles = [ // "ACCESS.PDF", // "CPL.PDF", //"CPL220.PDF", //"CPL3.PDF", //"Daten_APL.pdf", //"Daten_CDO.pdf", //"Daten_DPL.pdf", //"KUE605.PDF", //"KUE605uC.PDF", //"KUE605uF.PDF", "KUE705FO.PDF", //"Modem.pdf", //"PST212.PDF", //"Temper.pdf", //"Wasser.pdf", //"XIOPM.PDF", ]; useEffect(() => { if (typeof window !== "undefined" && getPDF && storePDF) { async function loadAndStorePDFs() { try { for (const fileName of pdfFiles) { const storedPdf = await getPDF(fileName); if (!storedPdf) { const response = await fetch(`/doku/${fileName}`); const pdfBlob = await response.blob(); await storePDF(fileName, pdfBlob); console.log(`${fileName} in IndexedDB gespeichert.`); } } } catch (error) { console.error("Fehler beim Laden oder Speichern der PDFs:", error); } } loadAndStorePDFs(); } }, [getPDF, storePDF]); const loadPDF = async (fileName) => { if (typeof window !== "undefined" && getPDF) { const storedPdf = await getPDF(fileName); if (storedPdf) { const pdfUrl = URL.createObjectURL(storedPdf); window.open(pdfUrl, "_blank"); // Öffnet die PDF in einem neuen Tab setPdfName(fileName); setShowSlider(false); } else { console.error("PDF nicht in IndexedDB gefunden"); } } }; // Close slider when clicking outside useEffect(() => { function handleClickOutside(event) { if (sliderRef.current && !sliderRef.current.contains(event.target)) { setShowSlider(false); } } if (showSlider) { document.addEventListener("mousedown", handleClickOutside); } else { document.removeEventListener("mousedown", handleClickOutside); } return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, [showSlider]); return ( ); } export default Footer;