PageSourceSearch

https://www.thriveconf.com/js/main.js?v=MUHk5jLMxLUUjQgV4nxZ8bMxobFh2qnDwE5d0tbq6Q4

js thriveconf.com collected 2026-10-03 19:19:37 UTC 8,797 bytes, 275 lines download raw bytes

1
2const switchBgImg = (el, imgs, interval = 2000, delay = 0) => {
3  let index = 0;
4  setTimeout(() => {
5    setInterval(() => {
6      el.style.backgroundImage = `url('${imgs[index]}')`;
7      index = (index + 1) % imgs.length;
8    }, interval);
9  }, delay);
10}
11
12const switchBgFade = (el, imgs, interval = 2000, transition = 200) => {
13    let index = 0;
14    setInterval(() => {
15        el.style.opacity = 0;
16
17        setTimeout(() => {
18            index = (index + 1) % imgs.length;
19            el.style.backgroundImage = `url('${imgs[index]}')`;
20            el.style.opacity = 1;
21        }, transition);
22    }, interval);
23}
24
25const cloneContent = (tags, tagsContent) => {
26  const clone = tagsContent.cloneNode(true);
27  tags.appendChild(clone);
28
29  let tagsWidth = tags.offsetWidth;
30  let tagsContentWidth = tagsContent.offsetWidth;
31
32  while (tagsContentWidth < tagsWidth * 2) {
33    const clone = tagsContent.cloneNode(true);
34    tags.appendChild(clone);
35    tagsContentWidth += clone.offsetWidth;
36  }
37}
38
39const displaySponsorsMove = (n) => {
40  let containerInner = document.querySelector('.section-display-sponsors .sponsors-list');
41  let maxScrollLeft = containerInner.scrollWidth - containerInner.clientWidth;
42  let scrollDir = n > 0 ? '+' : '-';
43  let scrollNum = $('.section-display-sponsors .sponsors-list').outerWidth();
44  let scrollCurrent = $('.section-display-sponsors .sponsors-list').scrollLeft();
45
46  if (n > 0 && scrollCurrent === maxScrollLeft) {
47      scrollDir = '-';
48      scrollNum = maxScrollLeft;
49  }
50
51  if (n < 0 && scrollCurrent === 0) {
52      scrollDir = '+';
53      scrollNum = maxScrollLeft;
54  }
55
56  $('.section-display-sponsors .sponsors-list').stop().animate({
57      scrollLeft: `${scrollDir}=${scrollNum}px`
58  });
59}
60
61const displayPrevSponsorsMove = (n) => {
62  let containerInner = document.querySelector('.section-prev-sponsors .sponsors-list');
63  let maxScrollLeft = containerInner.scrollWidth - containerInner.clientWidth;
64  let scrollDir = n > 0 ? '+' : '-';
65  let scrollNum = $('.section-prev-sponsors .sponsors-list').outerWidth();
66  let scrollCurrent = $('.section-prev-sponsors .sponsors-list').scrollLeft();
67
68  if (n > 0 && scrollCurrent === maxScrollLeft) {
69      scrollDir = '-';
70      scrollNum = maxScrollLeft;
71  }
72
73  if (n < 0 && scrollCurrent === 0) {
74      scrollDir = '+';
75      scrollNum = maxScrollLeft;
76  }
77
78  $('.section-prev-sponsors .sponsors-list').stop().animate({
79      scrollLeft: `${scrollDir}=${scrollNum}px`
80  });
81}
82
83const displayImpressionsMove = (n) => {
84  let containerInner = document.querySelector('.impressions-list');
85  let maxScrollLeft = containerInner.scrollWidth - containerInner.clientWidth;
86  let scrollDir = n > 0 ? '+' : '-';
87  let scrollNum = $('.impressions-list').outerWidth();
88  let scrollCurrent = $('.impressions-list').scrollLeft();
89
90  if (n > 0 && scrollCurrent === maxScrollLeft) {
91      scrollDir = '-';
92      scrollNum = maxScrollLeft;
93  }
94
95  if (n < 0 && scrollCurrent === 0) {
96      scrollDir = '+';
97      scrollNum = maxScrollLeft;
98  }
99
100  $('.impressions-list').stop().animate({
101      scrollLeft: `${scrollDir}=${scrollNum}px`
102  });
103}
104
105let startX;
106let startY;
107let evStart = 'mousedown';
108let evEnd = 'mouseup';
109const mediaQuery = 'screen and (max-device-width: 450px) and (max-device-height: 950px)';
110const screen = window.matchMedia(mediaQuery);
111if (screen.matches) {
112  evStart = 'touchstart';
113  evEnd = 'touchend';
114}
115
116function handleTouchStart(e) {
117  if (screen.matches) {
118    let touch = e.touches[0] || e.changedTouches[0];
119    startX = touch.pageX;
120    startY = touch.pageY;
121  } else {
122    e.preventDefault();
123    startX = e.pageX;
124    startY = e.pageY;
125  }
126}
127
128function handleTouchEnd(e, type) {
129  let diffX = startX - e.pageX;
130  let diffY = startY - e.pageY;
131  if (screen.matches) {
132    let touch = e.touches[0] || e.changedTouches[0];
133    diffX = startX - touch.pageX;
134    diffY = startY - touch.pageY;
135  } else {
136    diffX = startX - e.pageX;
137    diffY = startY - e.pageY;
138  }
139
140  if (Math.abs(diffX) >= Math.abs(diffY)) {
141    if (diffX > 20) {
142      if (type === 'sponsors') {
143        displaySponsorsMove(1);
144      } else if (type === 'sponsors-prev') {
145        displayPrevSponsorsMove(1);
146      } else if (type === 'impressions') {
147        displayImpressionsMove(1);
148      }
149    } else if (diffX < -20) {
150      if (type === 'sponsors') {
151        displaySponsorsMove(-1);
152      } else if (type === 'sponsors-prev') {
153        displayPrevSponsorsMove(-1);
154      } else if (type === 'impressions') {
155        displayImpressionsMove(-1);
156      }
157    }
158  }
159}
160
161const vseVrstice = (classString, padding) => {
162  let el = $(classString);
163  let visina = 0;
164  el.css('height', 'auto');
165  el.each(function (index) {
166    let newHeight = $(this).height() + padding;
167    if (newHeight > visina) {
168      visina = newHeight;
169    }
170  });
171  el.css('height', visina + 'px');
172}
173
174const visinaVrstice = () => {
175  vseVrstice('.impressions-list .impressions-content .impression', 44);
176}
177
178$(window).resize(() => {
179  visinaVrstice();
180});
181
182document.addEventListener('DOMContentLoaded', () => {
183    const navBurgerBtn = document.getElementById('navBurgerBtn');
184    const navMenuEl = document.getElementById('navMenuMain');
185    navBurgerBtn.addEventListener('click', function (e) {
186        e.stopPropagation();
187        if (navMenuEl.classList.contains('nav-burger-opened')) {
188            navMenuEl.classList.remove('nav-burger-opened');
189        } else {
190            navMenuEl.classList.add('nav-burger-opened');
191        }
192    });
193
194    const dropdownLists = $('.nav-link-container');
195    const dropdownArrows = $('.nav-link-arrow');
196
197    dropdownArrows.on('click', function () {
198        const itmContainer = $(this).parents('.nav-link-container');
199        if (itmContainer.hasClass('opened')) {
200            dropdownLists.removeClass('opened');
201        } else {
202            dropdownLists.removeClass('opened');
203            itmContainer.addClass('opened');
204        }
205    });
206
207    const wrapperEl = document.querySelector('.wrapper.landing');
208    if (wrapperEl) {
209        let angle = 0;
210        const img = document.getElementById('thriveFanComponent');
211
212        setInterval(() => {
213            angle += 15;
214            angle = angle % 360;
215            img.style.transform = `rotate(${angle}deg)`;
216        }, 200);
217
218        const elTop = document.getElementById('thriveBannerImgTop');
219        const imagesTop = [
220            '/img/sections/img_top_1.png',
221            '/img/sections/img_top_2.png',
222            '/img/sections/img_top_3.png'
223        ];
224        const elBot = document.getElementById('thriveBannerImgBot');
225        const imagesBot = [
226            '/img/sections/img_bot_1.png',
227            '/img/sections/img_bot_2.png',
228            '/img/sections/img_bot_3.png'
229        ];
230
231        setTimeout(() => {
232            elTop.style.backgroundImage = `url('/img/sections/img_top_3.png')`;
233        }, 1000);
234        switchBgImg(elTop, imagesTop, 2000, 1000);
235        switchBgImg(elBot, imagesBot, 2000, 0);
236
237        const elCountdown = document.getElementById('CountdownSpeakerImage');
238        const imagesCountdown = [
239            '/img/icons/countdown_speaker_1.png',
240            '/img/icons/countdown_speaker_2.png',
241            '/img/icons/countdown_speaker_3.png',
242            '/img/icons/countdown_speaker_4.png'
243        ];
244        switchBgFade(elCountdown, imagesCountdown, 4000, 200);
245
246        const tagsTop = document.querySelector('.banner-tags-top');
247        const tagsContentTop = document.querySelector('.banner-tags-top-content');
248        cloneContent(tagsTop, tagsContentTop);
249
250        const tagsBot = document.querySelector('.banner-tags-bot');
251        const tagsContentBot = document.querySelector('.banner-tags-bot-content');
252        cloneContent(tagsBot, tagsContentBot);
253
254        visinaVrstice();
255        let counter = 0;
256        const visinaVrsticeInterval = setInterval(() => {
257            visinaVrstice();
258            counter++;
259            if (counter >= 10) {
260                clearInterval(visinaVrsticeInterval);
261            }
262        }, 100);
263
264        document.querySelector('.sponsors-list').addEventListener(evStart, handleTouchStart);
265        document.querySelector('.sponsors-list').addEventListener(evEnd, function (e) {
266            handleTouchEnd(e, 'sponsors');
267        });
268
269        document.querySelector('.impressions-list').addEventListener(evStart, handleTouchStart);
270        document.querySelector('.impressions-list').addEventListener(evEnd, function (e) {
271            handleTouchEnd(e, 'impressions');
272        });
273    }
274
275});

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.