1/** 2 * PromptMaster Pro â premium motion (staggered reveal, pressable class). 3 * Respects prefers-reduced-motion. Admin dashboard skips bulk reveal to protect tables. 4 */ 5(function () { 6 var reduced = false; 7 try { 8 reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches; 9 } catch (e) {} 10 11 function markPressable() { 12 var isAdmin = document.body.classList.contains("pmp-admin"); 13 var pressSel = 14 "button, a.btn-primary, a.btn-secondary, a.nav-cta, a.ov-btn, .bill-btn, .login-btn, .save-btn, .tbtn, .users-subtab, .wl-subtab, .blog-subtab, .ct-tab, .an-subtab, .nav-links a, label.sec-toggle"; 15 16 document.querySelectorAll(pressSel).forEach(function (el) { 17 if (el.hasAttribute("disabled")) return; 18 if (isAdmin && el.closest && el.closest(".tbl-wrap")) return; 19 if (el.closest && el.closest(".rte-editor")) return; 20 el.classList.add("pmp-pressable"); 21 }); 22 } 23 24 if (reduced) { 25 document.documentElement.classList.add("pmp-reduced-motion"); 26 if (document.readyState === "loading") { 27 document.addEventListener("DOMContentLoaded", markPressable); 28 } else { 29 markPressable(); 30 } 31 return; 32 } 33 34 function initReveal() { 35 var isAdmin = document.body.classList.contains("pmp-admin"); 36 var dash = document.getElementById("dashboard"); 37 var loginPage = document.getElementById("login-page"); 38 39 if (isAdmin) { 40 if (loginPage && (!dash || dash.style.display === "none")) { 41 var loginBlocks = loginPage.querySelectorAll(".login-card, .login-logo, h2, .field-label, .fi, .login-btn"); 42 loginBlocks.forEach(function (el, i) { 43 el.classList.add("pmp-enter"); 44 el.style.setProperty("--pmp-d", Math.min(i * 55, 280) + "ms"); 45 }); 46 } 47 return; 48 } 49 50 var sel = 51 "section, .hero, footer, .main-wrap, .pricing-wrap, .contact-split, .page-hero, #post-root, .blog-section, body > .card"; 52 document.querySelectorAll(sel).forEach(function (el, i) { 53 if (el.closest(".pmp-no-reveal")) return; 54 if (el.tagName === "SECTION" && el.querySelector && el.querySelector(".reveal")) return; 55 if (el.classList.contains("pmp-enter")) return; 56 el.classList.add("pmp-enter"); 57 el.style.setProperty("--pmp-d", Math.min(i * 50, 480) + "ms"); 58 }); 59 } 60 61 function run() { 62 initReveal(); 63 markPressable(); 64 } 65 66 if (document.readyState === "loading") { 67 document.addEventListener("DOMContentLoaded", run); 68 } else { 69 run(); 70 } 71})();
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.