PageSourceSearch

https://www.familie.de/dist/js/chunks/modal--gdgvn81.esm.min.js

js familie.de collected 2026-09-24 09:38:49 UTC 4,476 bytes, 92 lines download raw bytes

1import { n as e, r as t } from "./rolldown-runtime-BEVGH_SI.esm.min.js";
2import { r as n, t as r } from "./tracking-BYzwbOl5.esm.min.js";
3var i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T = t({
4	createModal: () => x,
5	default: () => w
6}), E = e(() => {
7	r(), i = /* @__PURE__ */ new Map(), a = "alice-image-generator-modal", o = {
8		count: "alice-image-generator-modal_shown_count",
9		session: "alice-image-generator-modal_session_shown",
10		suppress: "alice-image-generator-modal_auto_open_suppressed"
11	}, s = typeof window < "u" ? localStorage : null, c = typeof window < "u" ? sessionStorage : null, l = (e, t) => {
12		try {
13			return e?.getItem(t);
14		} catch {
15			return null;
16		}
17	}, u = (e, t, n) => {
18		try {
19			e?.setItem(t, n);
20		} catch {}
21	}, d = () => parseInt(l(s, o.count), 10) || 0, f = () => u(s, o.count, (d() + 1).toString()), p = () => l(c, o.session) === "1", m = () => u(c, o.session, "1"), h = () => l(s, o.suppress) === "1", g = () => u(s, o.suppress, "1"), _ = (e) => {
22		let { modalId: t, cookieNeeded: n } = e.dataset;
23		if (t !== a) return !0;
24		let r = parseInt(n, 10);
25		return !r || r <= 0 || !(d() >= r) && (r === 1 || !p());
26	}, v = (e) => {
27		let { modalId: t, cookieNeeded: n } = e.dataset;
28		if (t !== a) return;
29		let r = parseInt(n, 10);
30		r > 0 && (f(), r > 1 && m());
31	}, y = () => {
32		let e = document?.documentElement;
33		if (e) {
34			let t = window.innerWidth - e.clientWidth;
35			document.body?.style.setProperty("--scrollbar-width", `${t}px`);
36		}
37	}, b = class {
38		constructor(e, t) {
39			this.node = e, this.id = t, this.isOpen = !1, this.mouseDown = !1, this.content = e.querySelector("[data-role=\"alice-modal-content\"]"), this.closeBtns = e.querySelectorAll("[data-role=\"alice-modal-close-button\"]"), this.triggers = document.querySelectorAll(`[data-role="alice-modal-trigger"][data-modal-id="${t}"]`);
40			let n = {
41				trigger: () => this.open(),
42				close: () => this.close(),
43				mousedown: () => {
44					this.mouseDown = !0;
45				},
46				mouseup: (e) => {
47					e.target?.dataset?.role !== "alice-modal" || this.mouseDown || this.close(), this.mouseDown = !1;
48				},
49				keyup: (e) => {
50					e.key === "Escape" && this.close();
51				}
52			};
53			this.handlers = n, this.triggers.forEach((e) => e.addEventListener("click", n.trigger, { passive: !0 })), this.closeBtns.forEach((e) => e.addEventListener("click", n.close, { passive: !0 })), this.content?.addEventListener("mousedown", n.mousedown), e.addEventListener("mouseup", n.mouseup), t === a && e.querySelector("[data-role=\"alice-modal-popup-link\"]")?.addEventListener("click", g, { passive: !0 });
54		}
55		open() {
56			!this.isOpen && this.content && (this.id !== a || _(this.node)) && (v(this.node), this.isOpen = !0, this.node.classList.add("alice-modal--open"), this.node.hasAttribute("data-no-scroll") && document.body.classList.add("alice-no-scroll"), window.addEventListener("keyup", this.handlers.keyup), n({
57				event: "modal_opened",
58				modalId: this.id
59			}));
60		}
61		close() {
62			this.isOpen && (this.isOpen = !1, this.node.classList.remove("alice-modal--open"), document.body.classList.remove("alice-no-scroll"), window.removeEventListener("keyup", this.handlers.keyup), n({
63				event: "modal_closed",
64				modalId: this.id
65			}));
66		}
67		destroy() {
68			let { handlers: e } = this;
69			this.triggers.forEach((t) => t.removeEventListener("click", e.trigger)), this.closeBtns.forEach((t) => t.removeEventListener("click", e.close)), this.content?.removeEventListener("mousedown", e.mousedown), this.node.removeEventListener("mouseup", e.mouseup), window.removeEventListener("keyup", e.keyup), i.delete(this.id);
70		}
71	}, x = (e) => {
72		let t = e?.dataset?.modalId;
73		if (!t) return;
74		let n = i.get(t);
75		return n || (n = new b(e, t), i.set(t, n)), n;
76	}, S = (e) => {
77		let t = parseInt(e.dataset.autoOpenDelay, 10) || 0, n = () => {
78			if (document.visibilityState === "hidden" || h() || !_(e)) return;
79			let t = x(e);
80			t && !e.classList.contains("alice-modal--open") && t.open();
81		};
82		t > 0 ? setTimeout(n, 1e3 * t) : n();
83	}, C = (e) => {
84		document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e, { once: !0 }) : e();
85	}, w = { init: (e) => {
86		if (!e?.forEach) return;
87		e.forEach(x);
88		let t = document.querySelector(`[data-role="alice-modal"][data-modal-id="${a}"]`);
89		t && !t.dataset.autoOpenScheduled && (t.dataset.autoOpenScheduled = "true", C(() => S(t))), C(y);
90	} };
91});
92export { E as n, T as r, x as t };

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.