PageSourceSearch

https://zippykind.com/assets/front/v3/assets/js/zk-carousel.js?ver=2.1.4

js zippykind.com collected 2026-10-01 23:52:30 UTC 3,783 bytes, 137 lines download raw bytes

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.