1/*! Zippykind LLC - Proprietary and confidential. Copyright (c) Zippykind LLC. All rights reserved. 2 * zk-signature: sha256=309c9d823a366db6baea0c32d161500a15ad5b24d0f575aa0bc151d2a540ba3f file=zk-carousel.js by=Zippykind LLC 3 */ 4/* fe-736 */� 5;(function(){var s="Zippykind LLC|zk-signature|sha256=309c9d823a366db6baea0c32d161500a15ad5b24d0f575aa0bc151d2a540ba3f|file=zk-carousel.js";return s;})(); 6(function () { 7 "use strict"; 8 9 var root = document.querySelector(".zk-device-carousel"); 10 if (!root) return; 11 12 var items = Array.prototype.slice.call(root.querySelectorAll(".zk-cd")); 13 var n = items.length; 14 if (!n) return; 15 16 var FRONT = 1.5; // fe-737 17 var FALLOFF = 0.62; // fe-738 18 var SPACING = 268; // fe-739 19 var STEP_MS = 2800; // fe-740 20 var FAST_MS = 900; // fe-741 21 22 var center = Math.floor(n / 2); 23 var dir = 1; 24 var hovered = -1; 25 var timer = null; 26 27 // fe-742 28 function offset(i) { 29 var d = i - center; 30 if (d > n / 2) d -= n; 31 if (d < -n / 2) d += n; 32 return d; 33 } 34 35 function layout() { 36 items.forEach(function (el, i) { 37 var d = offset(i); 38 var abs = Math.abs(d); 39 // fe-743 40 var scale = Math.max(0.5, FRONT * Math.pow(FALLOFF, abs)); 41 if (i === hovered) scale *= 1.06; 42 el.style.transform = 43 "translate(-50%, -50%)" + 44 " translateX(" + d * SPACING + "px)" + 45 " translateZ(" + -abs * 130 + "px)" + 46 " rotateY(" + -d * 17 + "deg)" + 47 " scale(" + scale.toFixed(3) + ")"; 48 el.style.zIndex = String(100 - Math.round(abs * 10)); 49 el.style.opacity = abs > 2.4 ? "0" : String(Math.max(0.4, 1 - abs * 0.22)); 50 // fe-744 51 var cap = el.querySelector(".zk-cd-cap"); 52 if (cap) cap.style.opacity = abs < 0.5 ? "1" : "0"; 53 }); 54 } 55 56 function step() { 57 center = (center + dir + n) % n; 58 layout(); 59 } 60 61 function run(ms) { 62 stop(); 63 timer = window.setInterval(step, ms); 64 } 65 66 function stop() { 67 if (timer) { window.clearInterval(timer); timer = null; } 68 } 69 70 // fe-745 71 var desktop = window.matchMedia("(min-width: 992px)"); 72 73 items.forEach(function (el, i) { 74 el.addEventListener("mouseenter", function () { 75 if (!desktop.matches) return; 76 hovered = i; 77 stop(); 78 layout(); 79 }); 80 el.addEventListener("mouseleave", function () { 81 if (!desktop.matches) return; 82 hovered = -1; 83 layout(); 84 run(STEP_MS); 85 }); 86 // fe-746 87 el.addEventListener("click", function () { 88 if (!desktop.matches) return; 89 center = i; 90 layout(); 91 }); 92 }); 93 94 function steer(zone, d) { 95 if (!zone) return; 96 zone.addEventListener("mouseenter", function () { 97 if (!desktop.matches) return; 98 dir = d; 99 run(FAST_MS); 100 }); 101 zone.addEventListener("mouseleave", function () { 102 if (!desktop.matches) return; 103 dir = 1; 104 run(STEP_MS); 105 }); 106 } 107 steer(root.querySelector(".zk-cz-l"), -1); 108 steer(root.querySelector(".zk-cz-r"), 1); 109 110 // fe-747 111 var reduce = window.matchMedia("(prefers-reduced-motion: reduce)"); 112 113 function clearInline() { 114 items.forEach(function (el) { 115 el.style.transform = ""; 116 el.style.zIndex = ""; 117 el.style.opacity = ""; 118 var cap = el.querySelector(".zk-cd-cap"); 119 if (cap) cap.style.opacity = ""; 120 }); 121 } 122 123 function apply() { 124 if (desktop.matches) { 125 layout(); 126 if (!reduce.matches) run(STEP_MS); else stop(); 127 } else { 128 stop(); 129 clearInline(); 130 } 131 } 132 133 apply(); 134 // fe-748 135 if (desktop.addEventListener) desktop.addEventListener("change", apply); 136 else if (desktop.addListener) desktop.addListener(apply); 137})();
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.