PageSourceSearch

https://www.philenews.com/wp-content/themes/philenews/scripts/scripts.js?260706-81055

js philenews.com collected 2026-10-01 08:39:23 UTC 7,242 bytes, 221 lines download raw bytes

1// swipers
2
3var swiper = new Swiper('.magazine-home-swiper', {
4    slidesPerView: 'auto',
5    spaceBetween: 45,
6    loop: true,
7    navigation: {
8        nextEl: '.magazine-home-swiper .swiper-button-next',
9        prevEl: '.magazine-home-swiper .swiper-button-prev',
10    },
11});
12  
13/**TikTok Swiper Homepage MP**/
14var swiperTiktok = new Swiper('.tiktok-home-swiper', {
15    slidesPerView: 4.2,
16    spaceBetween: 15,
17    loop: false,
18    allowTouchMove: true, 
19    simulateTouch: true,
20    touchStartPreventDefault: false,
21    touchRatio: 1,
22    grabCursor: true,
23    threshold: 10, // Minimum swipe distance (px)
24    followFinger: true,
25    breakpoints: {
26        320: { slidesPerView: 1.05, spaceBetween: 10 },
27        580: { slidesPerView: 1.05, spaceBetween: 10 },
28        768: { slidesPerView: 2.2, spaceBetween: 15 },
29        1024: { slidesPerView: 3.05, spaceBetween: 10 },
30        1200: { slidesPerView: 4.2, spaceBetween: 15 }
31    }
32});
33document.querySelectorAll('.swipe-overlay').forEach(overlay => {
34    overlay.addEventListener('touchstart', (e) => {
35        swiper.touchEventsData.startTouch = e;
36    }, { passive: true });
37});
38
39
40//   filter btn
41const filterBtn = document.querySelector(".filter-btn");
42if(filterBtn){
43    const filtersClose = document.querySelector(".filters-close-btn");
44    const filters = document.querySelector(".filters");
45    filterBtn.addEventListener("click", function(){
46        filters.classList.toggle("on");
47    });
48    filtersClose.addEventListener("click", function(){
49        filters.classList.toggle("on");
50    });
51}
52
53// menu
54const menuBtn = document.querySelector(".menu-btn");
55const menuBtnClose = document.querySelector(".menu-close-btn");
56const menu = document.querySelector(".menu");
57
58if(menuBtn){
59    if (document.querySelector('.menu.menu__new')) {
60        menuBtn.addEventListener("click", function(){
61            const homeHappNow = document.querySelector('[page="app-home"] .happ__now.happ__now--app');
62            const middleFace = document.querySelector('body .mc__face.face__middle:first-of-type');
63            if (menu.classList.contains('on')) {
64                if (middleFace) middleFace.classList.remove('closed');
65                if (homeHappNow) homeHappNow.classList.remove('closed');
66                document.body.classList.remove("stop-scrolling");
67                menu.classList.remove('on');
68            } else {
69                if (middleFace) middleFace.classList.add('closed');
70                if (homeHappNow) homeHappNow.classList.add('closed');
71                document.body.classList.add("stop-scrolling");
72                menu.classList.add('on');
73            }
74        });
75    } else {
76        menuBtn.addEventListener("click", function(){
77            menu.classList.add("on");
78        });
79        menuBtnClose.addEventListener("click", function(){
80            menu.classList.remove("on");
81        });
82    }
83    
84}
85
86
87
88
89// search
90const searchBtn = document.querySelector(".header-search-btn");
91//const searchBtnClose = document.querySelector(".header-search-close");
92//const searchBox = document.querySelector(".header-search-wrapper");
93const searchBtnClose = document.querySelector(".search-fixed-close");
94const searchBox = document.querySelector(".search-fixed");
95
96if(searchBtn && searchBtnClose){
97    searchBtn.addEventListener("click", function(){
98        searchBox.classList.add("on");    
99    });    
100    searchBtnClose.addEventListener("click", function(){
101        searchBox.classList.remove("on");    
102    });    
103}
104
105// fixed menu
106const mainHeader = document.querySelector(".main-header");
107const body  = document.querySelector("body");
108window.addEventListener("scroll", throttle(fixedMenu, 500));
109
110// general
111function throttle(fn, wait) {
112    var time = Date.now();
113    return function() {
114      if ((time + wait - Date.now()) < 0) {
115        fn();
116        time = Date.now();
117      }
118    }
119}
120
121function fixedMenu(){
122    // console.log(window.scrollY);
123    if(window.scrollY > 1000){
124        mainHeader.classList.add("fixed");    
125    }else{
126        mainHeader.classList.remove("fixed");    
127    }
128}
129
130/**
131 * 
132 * Create or update the time element text inside Happening Now banner slides
133 * 
134 * @param {HTMLElement} slide 
135 */
136const getPostTimeDiff = (slide) => {
137    let timeElement = slide.querySelector('time');
138    let postTime = new Date(timeElement.dateTime);
139    let currentTime = new Date();
140    let timeDiffMinutes = Math.abs(Math.ceil((currentTime - postTime) / 60000));
141    timeElement.innerText = timeDiffMinutes < 60 ? `πριν ${timeDiffMinutes} λεπτά` : `στις ${new Intl.DateTimeFormat('el-Gr', {hour: 'numeric', minute: 'numeric'}).format(postTime)}`;
142}
143
144const menuSetUpPY = () => {
145    const menuColumns = document.querySelectorAll(".menu__new .menu-col");
146    const menuItems = document.querySelectorAll(".menu__new .nav-list-item");
147
148    if (menuColumns.length > 0 && menuItems.length > 0) {
149        let columns;
150        let spareElements = [];
151        switch (true) {
152        case window.innerWidth < 420:
153            columns = 1;
154            break;
155        case window.innerWidth < 620:
156            columns = 2;
157            break;
158        case window.innerWidth < 850:
159            columns = 3;
160            break;
161        case window.innerWidth < 1150:
162            columns = 4;
163            break;
164        case window.innerWidth < 1450:
165            columns = 5;
166            break;
167        default:
168            columns = 6;
169        }
170
171        menuItems.forEach((item) => {
172        const col = parseInt(item.dataset.col);
173            if (col <= columns) {
174                const index = col - 1;
175                menuColumns[index].appendChild(item);
176            } else {
177                spareElements.push(item);
178            }
179        });
180
181        if (spareElements.length > 0) {
182            if (columns > 1) {
183                const spareElementsHeight = [];
184
185                spareElements.forEach((el) => {
186                    spareElementsHeight.push(el.offsetHeight);
187                });
188
189                const columnHeight = [];
190                menuColumns.forEach((col, index) => {
191                    if (index < columns) columnHeight.push(col.offsetHeight);
192                });
193
194                while (spareElements.length > 0) {
195                    // console.log(spareElements.length);
196
197                    const maxIndex = spareElementsHeight.indexOf(
198                        Math.max(...spareElementsHeight),
199                    );
200                    const minIndex = columnHeight.indexOf(Math.min(...columnHeight));
201                    console.log("move to " + minIndex);
202                    menuColumns[minIndex].appendChild(spareElements[maxIndex]);
203                    columnHeight[minIndex] += spareElements[maxIndex].offsetHeight;
204                    spareElements.splice(maxIndex, 1);
205                    spareElementsHeight.splice(maxIndex, 1);
206                }
207            } else {
208                spareElements.forEach((el) => {
209                    menuColumns[0].appendChild(el);
210                });
211            }
212        }
213    }
214}
215
216window.addEventListener('load', () => {
217    if (document.querySelector('.menu.menu__new')) {
218        menuSetUpPY();
219        window.addEventListener('resize', menuSetUpPY)
220    }
221})

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.