1import { getSavedSettings } from "./user-consent-D15JHZfi.js"; 2 3//#region js/src/newsletter-popup.ts 4async function initNewsletterPopup() { 5 if (!Boolean(window.HTMLDialogElement)) return "No native dialog available"; 6 handleNewsletterFormSubmit(); 7 if (window.location.pathname.startsWith("/newsletter")) return "Already on newsletter page"; 8 if (getSavedSettings() === null) return "No saved consent settings"; 9 const newsletterSettings = getNewsletterSettings(); 10 if (newsletterSettings.subscribed) return "Subscribed"; 11 if (!ccNewsletterPopupData.content) return "No Newsletter popup content"; 12 const timeDifference = Date.now() - newsletterSettings.lastDisplayed; 13 const SHOW_AGAIN_AFTER_DAYS = ccNewsletterPopupData?.showAfterDays ?? 7; 14 if (SHOW_AGAIN_AFTER_DAYS <= 0) return "Show again after is set to 0 days"; 15 if (timeDifference < SHOW_AGAIN_AFTER_DAYS * 24 * 60 * 60 * 1e3) return `Recently shown (${Math.round(timeDifference / 1e3)} seconds)`; 16 localStorage.setItem("wwb-newsletter-popup", JSON.stringify({ 17 ...newsletterSettings, 18 lastDisplayed: Date.now() 19 })); 20 const dialogElement = createNewsletterDialog(); 21 const delay = ccNewsletterPopupData?.delay ?? 3; 22 await new Promise((resolve) => setTimeout(resolve, 500)); 23 window.addEventListener("scroll", () => { 24 setTimeout(() => { 25 dialogElement.showModal(); 26 dialogElement.focus(); 27 }, delay * 1e3); 28 }, { once: true }); 29 return `Show new newsletter popup ${delay}s after first scroll interaction.`; 30} 31try { 32 initNewsletterPopup().then((result) => { 33 console.log(`Newsletter Popup initialized: ${result}`); 34 }); 35} catch (error) { 36 console.log("Error initializing newsletter popup"); 37 console.error(error); 38} 39function getNewsletterSettings() { 40 const defaultSettings = { 41 lastDisplayed: 0, 42 subscribed: false 43 }; 44 try { 45 const savedSettings = JSON.parse(localStorage.getItem("wwb-newsletter-popup") || ""); 46 if (Number.isInteger(savedSettings.lastDisplayed) && typeof savedSettings.subscribed === "boolean") return savedSettings; 47 } catch (error) { 48 console.error("No saved newsletter settings"); 49 } 50 return defaultSettings; 51} 52function createNewsletterDialog() { 53 const dialogElement = document.createElement("dialog"); 54 dialogElement.classList.add("cc-newsletter-popup"); 55 dialogElement.setAttribute("closedBy", "closerequest"); 56 dialogElement.setAttribute("aria-label", "Newsletter-Werbung "); 57 const closeButton = document.createElement("button"); 58 closeButton.classList.add("cc-newsletter-popup__close-button"); 59 closeButton.setAttribute("aria-label", "SchlieÃen"); 60 closeButton.title = "SchlieÃen"; 61 closeButton.type = "button"; 62 closeButton.addEventListener("click", () => dialogElement.close()); 63 closeButton.innerHTML = `×`; 64 dialogElement.appendChild(closeButton); 65 dialogElement.insertAdjacentHTML("beforeend", `<div class="cc-newsletter-popup__content">${ccNewsletterPopupData?.content}</div>`); 66 document.body.appendChild(dialogElement); 67 return dialogElement; 68} 69/** 70* Attach submit handler to the newsletter form, if present. 71* 72* On submit, marks the newsletter as subscribed and updates the lastDisplayed timestamp 73* in localStorage. Assumes the form selector `#caldera_form_1 form`. 74*/ 75function handleNewsletterFormSubmit() { 76 const form = document.querySelector("#caldera_form_1 form"); 77 if (!(form instanceof HTMLFormElement)) return; 78 form.addEventListener("submit", (e) => { 79 console.log("Submit Newsletter form"); 80 localStorage.setItem("wwb-newsletter-popup", JSON.stringify({ 81 lastDisplayed: Date.now(), 82 subscribed: true 83 })); 84 }); 85} 86 87//#endregion 88//# sourceMappingURL=newsletter-popup.build.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.