PageSourceSearch

https://www.tvn.cl/tvn/js-local/swiperManager.class-av-1790268750-av-.js

js tvn.cl collected 2026-09-24 18:30:31 UTC 7,659 bytes, 257 lines download raw bytes

1const SwiperManager = (() => {
2    const SELECTOR = [
3        '.swiper-1',
4        '.swiper-2',
5        '.swiper-3',
6        '.swiper-4',
7        '.swiper-5',
8        '.swiper-6',
9        '.swiper-7',
10        '.swiper-auto',
11        '.swiper-center',
12        '.mySwiper2'
13    ].join(',');
14
15    const CONFIG = {
16        'swiper-1': {
17            slidesPerView: 1,
18            loop: true,
19            noSwiping: true,
20            autoHeight: true,
21            autoplay: {
22                delay: 5000,
23                disableOnInteraction: true
24            }
25        },
26
27        'swiper-2': {
28            slidesPerView: 2,
29            spaceBetween: 30,
30            loop: false,
31            breakpoints: {
32                1024: { slidesPerView: 2, spaceBetween: 30 },
33                880: { slidesPerView: 2, spaceBetween: 20 },
34                675: { slidesPerView: 2, spaceBetween: 20 },
35                460: {
36                    slidesPerView: 'auto',
37                    spaceBetween: 18,
38                    slidesOffsetBefore: 15,
39                    slidesOffsetAfter: 15
40                },
41                320: {
42                    slidesPerView: 'auto',
43                    spaceBetween: 18,
44                    slidesOffsetBefore: 15,
45                    slidesOffsetAfter: 15
46                }
47            }
48        },
49
50        'swiper-3': {
51            slidesPerView: 3,
52            spaceBetween: 20,
53            loop: false,
54            breakpoints: {
55                1024: { slidesPerView: 3, spaceBetween: 20 },
56                900: { slidesPerView: 3, spaceBetween: 20 },
57                675: { slidesPerView: 2, spaceBetween: 20 },
58                460: {
59                    slidesPerView: 'auto',
60                    spaceBetween: 18,
61                    slidesOffsetBefore: 10,
62                    slidesOffsetAfter: 10
63                },
64                320: {
65                    slidesPerView: 'auto',
66                    spaceBetween: 18,
67                    slidesOffsetBefore: 10,
68                    slidesOffsetAfter: 10
69                }
70            }
71        },
72
73        'swiper-4': {
74            slidesPerView: 4,
75            spaceBetween: 34,
76            watchOverflow: true,
77            breakpoints: {
78                1300: { slidesPerView: 4, spaceBetween: 18 },
79                1024: { slidesPerView: 3, spaceBetween: 18 },
80                940: { slidesPerView: 2, spaceBetween: 18 },
81                675: { slidesPerView: 2, spaceBetween: 18 },
82                460: {
83                    slidesPerView: 'auto',
84                    spaceBetween: 20,
85                    slidesOffsetBefore: 10,
86                    slidesOffsetAfter: 10
87                },
88                320: {
89                    slidesPerView: 'auto',
90                    spaceBetween: 20,
91                    slidesOffsetBefore: 10,
92                    slidesOffsetAfter: 10
93                }
94            }
95        },
96
97        'swiper-5': {
98            slidesPerView: 5,
99            spaceBetween: 34,
100            watchOverflow: true,
101            breakpoints: {
102                1300: { slidesPerView: 5, spaceBetween: 24 },
103                1024: { slidesPerView: 4, spaceBetween: 18 },
104                940: { slidesPerView: 3, spaceBetween: 18 },
105                675: { slidesPerView: 3, spaceBetween: 18 },
106                460: {
107                    slidesPerView: 'auto',
108                    spaceBetween: 14,
109                    slidesOffsetBefore: 10,
110                    slidesOffsetAfter: 10
111                },
112                320: {
113                    slidesPerView: 'auto',
114                    spaceBetween: 14,
115                    slidesOffsetBefore: 10,
116                    slidesOffsetAfter: 10
117                }
118            }
119        },
120
121        'swiper-6': {
122            slidesPerView: 6,
123            spaceBetween: 34,
124            loop: false,
125            watchOverflow: true,
126            breakpoints: {
127                1190: { slidesPerView: 6, spaceBetween: 20 },
128                940: { slidesPerView: 4, spaceBetween: 15 },
129                675: { slidesPerView: 3, spaceBetween: 15 },
130                460: {
131                    slidesPerView: 'auto',
132                    spaceBetween: 20,
133                    slidesOffsetBefore: 10,
134                    slidesOffsetAfter: 10
135                },
136                320: {
137                    slidesPerView: 'auto',
138                    spaceBetween: 20,
139                    slidesOffsetBefore: 10,
140                    slidesOffsetAfter: 10
141                }
142            }
143        },
144
145        'swiper-7': {
146            slidesPerView: 7,
147            spaceBetween: 34,
148            loop: true,
149            watchOverflow: true,
150            breakpoints: {
151                1190: { slidesPerView: 7, spaceBetween: 20 },
152                940: { slidesPerView: 4, spaceBetween: 15 },
153                675: { slidesPerView: 2, spaceBetween: 15 },
154                460: {
155                    slidesPerView: 'auto',
156                    spaceBetween: 15,
157                    slidesOffsetBefore: 10,
158                    slidesOffsetAfter: 10
159                },
160                320: {
161                    slidesPerView: 'auto',
162                    spaceBetween: 15,
163                    slidesOffsetBefore: 10,
164                    slidesOffsetAfter: 10
165                }
166            }
167        },
168
169        'swiper-auto': {
170            slidesPerView: 'auto',
171            loop: false,
172            spaceBetween: 20,
173            slidesOffsetBefore: 70,
174            slidesOffsetAfter: 70,
175            breakpoints: {
176                940: {
177                    slidesOffsetBefore: 20,
178                    slidesOffsetAfter: 20
179                }
180            }
181        },
182
183        'mySwiper': {
184            loop: true,
185            spaceBetween: 10,
186            slidesPerView: 6,
187            freeMode: true,
188            watchSlidesVisibility: true,
189            watchSlidesProgress: true,
190        },
191
192        'mySwiper2': {
193            loop: true,
194            spaceBetween: 10,
195            navigation: {
196                nextEl: ".swiper-button-next",
197                prevEl: ".swiper-button-prev",
198            },
199            thumbs: 'mySwiper'
200        }
201    };
202
203    function init(root = document) {
204        root.querySelectorAll(SELECTOR).forEach(setup);
205    }
206
207    function setup(el) {
208        if (el.swiper || el.dataset.swiperReady) return;
209
210        el.dataset.swiperReady = '1';
211        observer.observe(el);
212    }
213
214    function activate(el) {
215        console.debug('[SwiperManager] Activando', el);
216        if (!el || el.swiper) return;
217
218        const type = [...el.classList].find(className => CONFIG[className]);
219
220        if (!type) return;
221
222        const config = {
223            ...CONFIG[type],
224            pagination: {
225                el: el.querySelector('.swiper-pagination'),
226                clickable: true
227            }
228        };
229
230        if (config.thumbs) {
231            const thumbsEl = el.parentElement.querySelector(`.${config.thumbs}`);
232            const thumbs = new Swiper(thumbsEl, CONFIG[config.thumbs]);
233
234            config.thumbs = { swiper: thumbs };
235        }
236
237        config.navigation = {
238            nextEl: el.querySelector('.swiper-button-next'),
239            prevEl: el.querySelector('.swiper-button-prev')
240        };
241
242        new Swiper(el, config);
243    }
244
245    const observer = new IntersectionObserver(entries => {
246        entries.forEach(entry => {
247            if (entry.isIntersecting) {
248                activate(entry.target);
249                observer.unobserve(entry.target);
250            }
251        });
252    }, {
253        rootMargin: '400px 0px'
254    });
255
256    return { init, activate };
257})();

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.