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.