PageSourceSearch

https://nokcheonhotel.com/js/block/gallery_fixedscroll.1768265295.js

js nokcheonhotel.com collected 2026-10-01 16:12:47 UTC 44,926 bytes, 1,033 lines download raw bytes

1
2if(typeof MODE != 'undefined' && $.inArray(MODE, ['config','demo']) > -1) {
3    var c_h = $('.editor-navbar').outerHeight(),
4        m_h = ($('.el-menu > header').hasClass('sidebar')) ? 0 : $('header.navbar').outerHeight();
5    $('.el_0_ctrl').css({
6        'position': 'fixed',
7        'top': (c_h+m_h + 5) + 'px',
8        'right' : '15px',
9        'z-index' : '126',
10    });
11}
12
13
14/*
15------------------------------------------------------------------------------------------------------------------------------------------------------------
16------------------------------------------------------------------------------------------------------------------------------------------------------------
17	type	:	gallery
18	type2	:	premium
19	mode	:	 
20	feature	:	fixedscroll on
21	overlap	:	0
22	folder	:	800
23	name	:	pGallery02
24
25	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="1" data-js-selector=".contain">
26*/
27
28let VisualVdoShow = class {
29	constructor(gEL) { this.gjs_load(gEL); }
30    gjs_check(gEL) {
31        if( $(gEL).find('.gjs[data-js="fixedscroll"][data-js-code="1"][data-js-selector]').length == 0 ||
32            $(gEL).find('[data-visual="true"]').length == 0  ||
33            $(gEL).find('[data-visual="true"]').is('[data-visual-type="image"]')
34        ) return false;
35        else return true;
36    }
37    gjs_load(gEL) {
38        if(this.gjs_check(gEL) === false) return false;
39
40        this.DOM = { el : gEL };
41        this.DOM.wrap = this.DOM.el.querySelector('[data-visual="true"]');
42        this.DOM.loop = this.DOM.el.querySelector('[data-visual-attach="video"]');
43        this.DOM.videoHide = ($.mpcWeb.mpcCheckWebType() == 'MOBILE') ? true : false;
44
45        $(this.DOM.loop).attr('data-hide',this.DOM.videoHide);
46        $(this.DOM.loop).find('.visual-item').eq(0).addClass('active').siblings().removeClass('active');
47        if(this.DOM.videoHide) {
48            this.DOM.play = setInterval(() => this.video_init(), 5000);
49        } else {
50            $(this.DOM.loop).find('.visual-item').eq(0).find('video').attr('autoplay','autoplay').siblings().removeAttr('autoplay');
51
52            var vvs_this = this;
53            $(this.DOM.loop).find('.visual-item video').on('ended', function() {
54                var isReplay = ($(this).closest('[data-visual-attach="video"]').find('.visual-item').length < 2) ? true : false,
55                    nextVisual = (isReplay) ? $(this).closest('.visual-item') : $(this).closest('.visual-item').next('.visual-item');
56                if(nextVisual.length == 0) nextVisual = $(this).closest('[data-visual-attach="video"]').find('.visual-item').eq(0);
57
58                if(isReplay) vvs_this.replay(nextVisual);
59                else vvs_this.next($(this).closest('.visual-item'),nextVisual);
60            });
61
62            this.gjs_start();
63        }
64
65    }
66    gjs_start() {
67        if(typeof this.DOM == 'undefined') return false;
68
69        if(this.DOM.videoHide) {
70            this.DOM.play = setInterval(() => this.video_init(), 5000);
71        } else {
72            var vv_playPromise = this.DOM.loop.querySelector('.visual-item.active video').play();
73            if(vv_playPromise !== undefined) {
74                vv_playPromise.then(_ => {
75                    // console.log('vv_playPromise start');
76                }).catch(error => {
77                    // console.log('vv_playPromise paused');
78                });
79            }
80        }
81    }
82    gjs_stop() {
83        if(typeof this.DOM == 'undefined') return false;
84
85        if(this.DOM.videoHide) clearInterval(this.DOM.play);
86        else  this.DOM.loop.querySelector('.visual-item.active video').pause();
87    }
88	replay(now) {
89        if(this.DOM.videoHide === true) return false;
90
91		$(now).find('video').load();
92	}
93	next(now,next) {
94        if(this.DOM.videoHide === true) return false;
95
96		$(now).find('video').removeAttr('autoplay');
97
98		$(next).addClass('active').siblings().removeClass('active');
99		$(next).find('video').attr('autoplay','autoplay').load();
100	}
101    video_init() {
102        if(typeof this.DOM == 'undefined') return false;
103        if(this.DOM.videoHide === false) return false;
104
105		var isStop = (  $('#el-blockConfig').is('.open') || 
106                        elDefaultClass == 'reorderBlock' ||
107                        $(this.DOM.wrap).is('[data-visual-type="image"]') ||
108                        ($(this.DOM.wrap).is('[data-visual-type="video"]') && $(this.DOM.wrap).find('[data-visual-attach="video"] .visual-item').length < 2)
109                    ) ? true : false;
110		if(isStop) {
111			this.gjs_stop();
112		} else {
113            this.DOM.next = this.DOM.loop.querySelector('.visual-item.active').nextElementSibling;
114            if($(this.DOM.next).length == 0) this.DOM.next = this.DOM.loop.querySelector('.visual-item');
115            $(this.DOM.next).addClass('active').siblings().removeClass('active');
116		}
117    }
118
119};
120
121let VisualImgShow = class {
122	constructor(gEL) { this.gjs_load(gEL); }
123    gjs_check(gEL) {
124        if( $(gEL).find('.gjs[data-js="fixedscroll"][data-js-code="1"][data-js-selector]').length == 0 ||
125            $(gEL).find('[data-visual="true"]').length == 0 ||
126            $(gEL).find('[data-visual="true"]').is('[data-visual-type="video"]')
127        ) return false;
128        else return true;
129    }
130    gjs_load(gEL) {
131        if(this.gjs_check(gEL) === false) return false;
132
133        this.DOM = { el: gEL };
134        this.DOM.wrap = this.DOM.el.querySelector('[data-visual="true"]');
135        this.DOM.loop = this.DOM.el.querySelector('[data-visual-attach="image"]');
136
137        $(this.DOM.loop).find('.visual-item').eq(0).addClass('active').siblings().removeClass('active');
138
139        this.DOM.visual_interval = $(this.DOM.loop).attr('data-visual-interval');
140        if(typeof this.DOM.visual_interval == 'undefined') this.DOM.visual_interval = 5000;
141
142        this.DOM.play = setInterval(() => this.init(), this.DOM.visual_interval);
143	}
144    gjs_start() {
145        if(typeof this.DOM == 'undefined') return false;
146
147        this.DOM.play = setInterval(() => this.init(), this.DOM.visual_interval);
148    }
149    gjs_stop() {
150        if(typeof this.DOM == 'undefined') return false;
151
152        clearInterval(this.DOM.play);
153    }
154	init() {
155        if(typeof this.DOM == 'undefined') return false;
156
157		var isStop = (  $('#el-blockConfig').is('.open') || 
158                        elDefaultClass == 'reorderBlock' ||
159                        $(this.DOM.wrap).is('[data-visual-type="video"]') ||
160                        ($(this.DOM.wrap).is('[data-visual-type="image"]') && $(this.DOM.wrap).find('[data-visual-attach="image"] .visual-item').length < 2)
161                    ) ? true : false;
162		if(isStop) {
163			this.gjs_stop();
164		} else {
165			this.DOM.next = this.DOM.loop.querySelector('.visual-item.active').nextElementSibling;
166			if($(this.DOM.next).length == 0) this.DOM.next = this.DOM.loop.querySelector('.visual-item');
167			$(this.DOM.next).addClass('active').siblings().removeClass('active');
168		}
169	}
170};
171
172
173/*
174------------------------------------------------------------------------------------------------------------------------------------------------------------
175------------------------------------------------------------------------------------------------------------------------------------------------------------
176	type	:	gallery
177	type2	:	premium
178	mode	:	 
179	feature	:	fixedscroll on
180	overlap	:	0
181	folder	:	800
182	name	:	pGallery03
183
184	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="2" data-js-selector=".fixed-box">
185*/
186
187var Fixedscroll2_isOnScreen = function(gItem) {
188    if($(gItem).length == 0) return false;
189    
190    if($(gItem).closest('.reorderBlock').length > 0)  elDefaultClass = 'reorderBlock';
191    else elDefaultClass = (isELVIEW) ? 'el_viewblock' : 'element';
192
193    var result = false,
194        gel = $(gItem).closest('.'+elDefaultClass).attr('data-name'),
195        gf = $(gItem).closest('.'+elDefaultClass).find('.gjs').attr('data-js-selector');
196
197    var fwrap_height = $('.'+gel+' '+gf).outerHeight(),
198        fwrap_top = $('.'+gel+' '+gf).offset().top,
199        fwrap_bottom = fwrap_top + fwrap_height,
200        fwrap_center = fwrap_top + (fwrap_height / 2);
201
202    var g_height = $(gItem).outerHeight(),
203        g_top = $(gItem).offset().top,
204        g_bottom = g_top + g_height,
205        g_center = g_top + (g_height / 2);
206
207    if(fwrap_center >= g_top && fwrap_center < g_bottom ) result = true;
208    return result;
209}
210var Fixedscroll2 = function(gEL) {
211    if($(gEL).outerWidth() < 768) return false;
212
213    var checkMobile = ($(gEL).outerWidth() < 768) ? true : false,
214        checkEmpty = $(gEL).find('[data-loop="true"]').hasClass('empty'),
215        checkScrollHide = ($(gEL).find('[data-loop="true"] .grid').length === 1 && $(gEL).find('.loadmore-wrap').hasClass('hide')) ? true : false;
216
217    if(checkEmpty || checkScrollHide) $('body').addClass('overflow-hidden');
218    else $('body').removeClass('overflow-hidden');
219
220    if(checkScrollHide) $(gEL).find('.grid:first-child').addClass('active');
221    else if(!checkMobile && !checkEmpty) {
222        $(gEL).find('[data-loop="true"] .grid').each(function() {
223            if(Fixedscroll2_isOnScreen($(this))) {
224                $(this).addClass('active').siblings().removeClass('active');
225            }
226        }).promise().done(function() {
227            if($(gEL).find('.grid.active').length == 0 && isELVIEW) $(gEL).find('.grid:first-child').addClass('active').siblings().removeClass('active');
228        });
229    }
230}
231
232
233/*
234------------------------------------------------------------------------------------------------------------------------------------------------------------
235------------------------------------------------------------------------------------------------------------------------------------------------------------
236
237	type	:	gallery
238	type2	:	premium
239	mode	:	 
240	feature	:	fixedscroll off
241	overlap	:	0
242	folder	:	800
243	name	:	pGallery04
244
245	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="3" data-js-selector=".fs-container">
246*/
247
248let Fixedscroll3 = class {
249	constructor(gTarget) {
250        this.gjs_load(gTarget);
251    }
252    gjs_check(gTarget) {
253        if($(gTarget).closest('.reorderBlock').length > 0) elDefaultClass = 'reorderBlock';
254        else elDefaultClass = (isELVIEW) ? 'el_viewblock' : 'element';
255
256        if( !$(gTarget).closest('.'+elDefaultClass).find('input.gjs').length ||
257            $(gTarget).closest('.'+elDefaultClass).find('.gjs[data-js="fixedscroll"][data-js-code="3"][data-js-selector]').length == 0 
258        ) return false;
259        else true;
260    }
261    gjs_load(gTarget) {
262        if(this.gjs_check(gTarget) === false) return false;
263        if(typeof this.DOM != 'undefined' && typeof this.DOM.swiper != 'undefined') {
264            this.prev_slide_idx = (typeof this.DOM.swiper.previousIndex != 'undefined') ? this.DOM.swiper.previousIndex : 0;
265            this.prev_slide_move = (typeof this.DOM.swiper.previousTranslate != 'undefined') ? this.DOM.swiper.previousTranslate : 0;
266
267            this.DOM.swiper.destroy();
268            delete this.DOM.swiper;
269        } else {
270            delete this.prev_slide_idx;
271            delete this.prev_slide_move;
272        }
273
274        var gseq = $(gTarget).closest('.'+elDefaultClass).attr('data-id'),
275            elname = $(gTarget).closest('.'+elDefaultClass).attr('data-name'),
276            eLStyles = window.getComputedStyle(document.querySelector('.'+elname)),
277            swp_space = eLStyles.getPropertyValue('--swiper-space'),
278            swp_view = eLStyles.getPropertyValue('--swiper-view'),
279            swp_view_t = eLStyles.getPropertyValue('--swiper-view-t'),
280            swp_view_m = eLStyles.getPropertyValue('--swiper-view-m'),
281            swp_view_mc = eLStyles.getPropertyValue('--swiper-view-mc'),
282            layout_m_on = (eLStyles.getPropertyValue('--layout-m-on')) ? eLStyles.getPropertyValue('--layout-m-on') : 0;
283
284        swp_space = (typeof swp_space != 'undefined' && swp_space) ? Math.floor(swp_space) : 0;
285        swp_view = (typeof swp_view != 'undefined' && swp_view) ? parseFloat(swp_view) : 2.3;
286        swp_view_t = (typeof swp_view_t != 'undefined' && swp_view_t) ? parseFloat(swp_view_t) : 2.2;
287        swp_view_m = (typeof swp_view_mc != 'undefined' && layout_m_on != 0) ? parseFloat(swp_view_mc) : (typeof swp_view_m != 'undefined' && swp_view_m) ? parseFloat(swp_view_m) : 1.2;
288
289        var swp_view_d = (window.innerWidth > 991) ? swp_view : ((window.innerWidth < 768) ? swp_view_m : swp_view_t);
290
291
292        this.DOM = { el: gTarget };
293        if(typeof gseq != 'undefined' && gseq.match(/^[0-9]+$/) != null) {
294            var tmpEL = $(gTarget).closest('.'+elDefaultClass).clone();
295
296            var gactiveslider = (typeof $.cookie('gallery-\-' + gseq) != 'undefined') ? $.cookie('gallery-fixedscroll3-' + gseq) : null;
297            if(gactiveslider !== null) {
298                this.prev_slide_idx = gactiveslider;
299                setLoadmoreGalleryJS('fixedscroll3',gseq,false);
300            }
301
302            $(gTarget).closest('.'+elDefaultClass).after(tmpEL);
303            $(gTarget).closest('.'+elDefaultClass).remove();
304            var selector = $('.'+elname).find('.gjs').attr('data-js-selector');
305
306            this.DOM.el = document.querySelector('.'+elname+' '+selector);
307            // if(typeof $(this.DOM.el).find('.gallery-loadmore').attr('data-loadmore') == 'undefined') $(this.DOM.el).find('.loadmore-wrap').addClass('hide');
308        } 
309
310		this.DOM.swiper = new Swiper(this.DOM.el, {
311            direction: 'horizontal',
312			updateOnWindowResize: true,
313            freeMode: !0,
314            roundLengths: true,
315            setWrapperSize: !1,
316            autoHeight: !1,
317            spaceBetween: swp_space,
318            slidesPerView: swp_view_d,
319            resizeObserver: false,
320            breakpoints: {
321                '280': {
322                    slidesPerView: swp_view_m
323                },
324                '768': {
325                    slidesPerView: swp_view_t
326                },
327                '992': {
328                    slidesPerView: swp_view
329                },
330            },
331            observer: true,
332            observeParents: true,
333            initialSlide: this.prev_slide_idx,
334            speed: 300,
335            mousewheel: !0,
336            on: {
337                init: function (e) {
338                	refreshGallerySwiperHeight(document.querySelector('.'+elname+'.'+elDefaultClass));
339
340                    setTimeout(function() {
341                        var selector = $('.'+elname).find('.gjs').attr('data-js-selector');
342                        $('.'+elname+' '+selector).removeClass('ready');
343                    }, 300);
344                },
345                afterInit: function() {
346                    var selector = $('.'+elname).find('.gjs').attr('data-js-selector');
347                    $('.'+elname+' '+selector).removeClass('ready');
348                },
349                resize: function() {
350                    refreshGallerySwiperHeight(document.querySelector('.'+elname+'.'+elDefaultClass));
351
352                    var selector = $('.'+elname).find('.gjs').attr('data-js-selector');
353                    $('.'+elname+' '+selector).removeClass('ready');
354                },
355                slideChange: function() {
356                    // console.log('활성화 슬라이드 변경');
357                },
358				imagesReady: function() { // 모든 내부 이미지 로드후 이벤트 시작
359					// console.log('슬라이드 이미지 로드 후 실행');
360				},
361                reachEnd: function() {
362                    // console.log('마지막 슬라이드 위치');
363                }
364            },
365		});
366
367        if(typeof this.prev_slide_move != 'undefined' && this.prev_slide_move) {
368            this.DOM.swiper.setTranslate(this.prev_slide_move);
369            // this.DOM.swiper.slideToLoop(this.prev_slide_idx,1000,true);
370        }        
371	}
372    gjs_destroy() {
373        if(typeof this.DOM == 'undefined') return false;
374
375        $(this.DOM.el).find('.swiper-wrapper[data-loop="true"]').removeAttr('style');
376        if(typeof this.DOM.swiper != 'undefined') this.DOM.swiper.destroy();
377    }
378    gjs_start() {
379        if(typeof this.DOM == 'undefined') return false;
380
381        this.DOM.swiper.destroy();
382        this.gjs_load(this.DOM.el);
383    }
384};
385
386
387
388/*
389------------------------------------------------------------------------------------------------------------------------------------------------------------
390------------------------------------------------------------------------------------------------------------------------------------------------------------
391
392	type	:	gallery
393	type2	:	premium
394	mode	:	 
395	feature	:	fixedscroll off
396	overlap	:	0
397	folder	:	800
398	name	:	pGallery05
399
400	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="4" data-js-selector=".fs-container">
401*/
402
403
404const Fixedscroll4_MathUtils = {
405	lineEq: (y2, y1, x2, x1, currentVal) => {
406		// y = mx + b 
407		var m = (y2 - y1) / (x2 - x1), b = y1 - m * x1;
408		return m * currentVal + b;
409	},
410	lerp: (a, b, n) =>  (1 - n) * a + n * b,
411	distance: (x1, x2, y1, y2) => {
412		var a = x1 - x2;
413		var b = y1 - y2;
414		return Math.hypot(a,b);
415	},
416	randomNumber: (min,max) => Math.floor(Math.random()*(max-min+1)+min)
417};
418
419let Fixedscroll4 = class {
420	constructor(gTarget) {
421		this.gjs_load(gTarget);
422	}
423    gjs_check(gTarget) {
424        if($(gTarget).closest('.reorderBlock').length > 0)  elDefaultClass = 'reorderBlock';
425        else elDefaultClass = (isELVIEW) ? 'el_viewblock' : 'element';
426
427        if( !$(gTarget).closest('.'+elDefaultClass).find('input.gjs').length ||
428            $(gTarget).closest('.'+elDefaultClass).find('.gjs[data-js="fixedscroll"][data-js-code="4"][data-js-selector]').length == 0 
429        ) return false;
430        else true;
431    }
432    gjs_load(gTarget) {
433        if(this.gjs_check(gTarget) === false || typeof TweenMax == 'undefined') return false;
434
435		this.winsize;
436
437		var w = 0, h = 0;
438		if(typeof window.innerWidth == 'number') {
439			//Non-IE
440			w = window.innerWidth;
441			h = window.innerHeight;
442		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
443			//IE 6+ in 'standards compliant mode'
444			w = document.documentElement.clientWidth;
445			h = document.documentElement.clientHeight;
446		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
447			//IE 4 compatible
448			w = document.body.clientWidth;
449			h = document.body.clientHeight;
450		}
451
452        this.DOM = { el: gTarget };
453        this.DOM.elname = $(gTarget).closest('.'+elDefaultClass).attr('data-name');
454        this.DOM.total = $(gTarget).find('.grid').length;
455
456        var gseq = $(gTarget).closest('.'+elDefaultClass).attr('data-id'),
457            eLStyles = window.getComputedStyle(document.querySelector('.'+this.DOM.elname)),
458            cursor_color = eLStyles.getPropertyValue('--cursor-color');
459        if(typeof cursor_color != 'undefined' && cursor_color) {
460            cursor_color = cursor_color.trim();
461            cursor_color = cursor_color.replace('#','%23');
462            var el = $(gTarget).closest('.element').attr('data-el');
463            var name = $(gTarget).closest('.element').attr('data-name');
464
465            var cursor_left = `
466            url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill='${cursor_color}' x='0px' y='0px' width='61px' height='44px' viewBox='0 0 61 44' xml:space='preserve'%3E %3Cpath d='M.613 21.671L21.584.7l5.642 5.642-11.74 11.74H60.45v7.978H15.487l11.74 11.739-5.643 5.642L.613 22.469a.57.57 0 0 1 0-.798z'/%3E %3C/svg%3E") 30 22, sw-resize
467            `;
468            $('.'+el).find('.slide-control.slide-left').css('cursor', cursor_left);
469            
470            var cursor_center = `
471            url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill='${cursor_color}' x='0px' y='0px' width='52px' height='52px' viewBox='0 0 52 52' xml:space='preserve'%3E %3Cpath d='M29.889 30.05l-.036 21.361c-.222.213-7.654.213-7.876 0l-.007-21.358-21.52.007v-7.978l21.518.036L21.96.571h7.978l-.037 21.56 21.388.037c.213.222.213 7.654 0 7.876l-21.401.007z'/%3E %3C/svg%3E") 26 26, crosshair
472            `;
473            $('.'+el).find('.slide-control.slide-center').css('cursor', cursor_center);
474            
475            var cursor_right = `
476            url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill='${cursor_color}' x='0px' y='0px' width='61px' height='44px' viewBox='0 0 61 44' xml:space='preserve'%3E %3Cpath d='M60.287 21.671L39.316.7l-5.642 5.642 11.74 11.74H.45v7.978h44.963l-11.74 11.739 5.643 5.642 20.971-20.972a.57.57 0 0 0 0-.798z'/%3E %3C/svg%3E") 61 22, ne-resize
477            `;
478            $('.'+el).find('.slide-control.slide-right').css('cursor', cursor_right);
479
480            var cursor_left_m = `
481            url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill='none' stroke='${cursor_color}' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' x='0px' y='0px' width='24px' height='24px' viewBox='0 0 24 24' xml:space='preserve'%3E %3Cpath d='M17 2 7 12l10 10'/%3E %3C/svg%3E") !important
482            `;
483            var cursor_right_m = `
484            url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill='none' stroke='${cursor_color}' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' x='0px' y='0px' width='24px' height='24px' viewBox='0 0 24 24' xml:space='preserve'%3E %3Cpath d='m7 2 10 10L7 22'/%3E %3C/svg%3E") !important
485            `;
486            var cssJson = CSSJSON.toJSON($('#'+el+'css').text());
487            
488            cssJson['children']['.' + name + ' .m-slide-control.m-slide-left::after'] = {};
489            cssJson['children']['.' + name + ' .m-slide-control.m-slide-left::after']['attributes'] = {};
490            cssJson['children']['.' + name + ' .m-slide-control.m-slide-left::after']['attributes']['content'] = cursor_left_m;
491            cssJson['children']['.' + name + ' .m-slide-control.m-slide-right::after'] = {};
492            cssJson['children']['.' + name + ' .m-slide-control.m-slide-right::after']['attributes'] = {};
493            cssJson['children']['.' + name + ' .m-slide-control.m-slide-right::after']['attributes']['content'] = cursor_right_m;
494
495            $('#'+el+'css').text(CSSJSON.toCSS(cssJson));
496        }
497
498        // Center slide's position
499        this.center = 0;
500        if(typeof gseq != 'undefined') {
501            var tmpEL = $(gTarget).closest('.'+elDefaultClass).clone();
502
503            var gactiveslider = (typeof $.cookie('gallery-fixedscroll4-' + gseq) != 'undefined') ? $.cookie('gallery-fixedscroll4-' + gseq) : null;
504            if(gactiveslider !== null) {
505                this.center = Number(gactiveslider);
506                setLoadmoreGalleryJS('fixedscroll4',gseq,false);
507            }
508
509            if(gactiveslider == null)  $(tmpEL).find('.loadmore-wrap').removeClass('slide-center slide-right');
510            if(gactiveslider !== null || isELVIEW) {
511                $(tmpEL).find('.slide').removeClass('slide-center slide-right slide-left cursor-default hide').removeAttr('style');
512                $(tmpEL).find('.slide-control').removeClass('cursor-default hide');
513                this.isAnimating = false;
514            }
515            $(gTarget).closest('.'+elDefaultClass).after(tmpEL);
516            $(gTarget).closest('.'+elDefaultClass).remove();
517            var selector = $('.'+this.DOM.elname).find('.gjs').attr('data-js-selector');
518
519            this.DOM.el = document.querySelector('.'+this.DOM.elname+' '+selector);
520            if(typeof $(this.DOM.el).find('.gallery-loadmore').attr('data-loadmore') == 'undefined') $(this.DOM.el).find('.loadmore-wrap').addClass('hide');
521        }
522
523        var calcWinsize = () => {
524            this.winsize = {width: w, height: h};
525        };
526        calcWinsize();
527		window.addEventListener('resize', calcWinsize);
528
529		this.mousepos = {x: this.winsize.width/2, y: this.winsize.height/2};
530		window.addEventListener('mousemove', ev => this.mousepos = this.getMousePos(ev));
531
532		this.slides = [];
533        [...this.DOM.el.querySelectorAll('.slide:not(.hide)')].forEach((slide, pos) => this.slides.push(new Fixedscroll4_Slide(slide)));
534
535        var number_full = $(this.DOM.el.querySelectorAll('.grid')).length.toString().length;
536        if(number_full < 2) number_full = 2;
537        $(this.DOM.el.querySelectorAll('.grid .figure.number')).each(function(i) {
538            var slide_number = Number(i) + 1;
539            $(this).html(slide_number.toString().padStart(number_full,'0'));
540        });
541
542		// Total number of slides
543		this.slidesTotal = this.slides.length;
544		if ( this.slidesTotal < this.DOM.total ) return;
545
546		// Content Items
547		this.DOM.slideLinks = [...this.DOM.el.querySelectorAll('.slide a, .slide .gallery-loadmore')];
548
549		// Areas (left, center, right) where to attach the navigation events.
550		this.DOM.control = {
551            wrap: this.DOM.el.querySelector('.slide-control-wrap'),
552			left: this.DOM.el.querySelector('.slide-control.slide-left'),
553			center: this.DOM.el.querySelector('.slide-control.slide-center'),
554			right: this.DOM.el.querySelector('.slide-control.slide-right')
555		};
556
557        this.setVisibleSlides();
558        this.calculateGap();
559        this.initEvents();
560
561		var mouseMoveVals = {translation: 0, rotation: -8};
562		var render = () => {
563			mouseMoveVals.translation = Fixedscroll4_MathUtils.lerp(mouseMoveVals.translation, Fixedscroll4_MathUtils.lineEq(-15, 15, this.winsize.width, 0, this.mousepos.x), 0.03);
564			for (var i = 0; i <= this.slidesTotal - 1; ++i) {
565				TweenMax.set(this.slides[i].DOM.img, {x: mouseMoveVals.translation});
566				TweenMax.set(this.DOM.el, {rotation: mouseMoveVals.rotation});
567			}
568		}
569		requestAnimationFrame(render);
570
571		// Preload all the images in the page
572		imagesLoaded(this.DOM.el.querySelectorAll('.g-img'), {background: true}, () => document.body.classList.remove('loading'));
573
574	}
575    getMousePos(e) {
576        var posx = 0;
577        var posy = 0;
578        if (!e) e = window.event;
579        if (e.pageX || e.pageY) {
580            posx = e.pageX;
581            posy = e.pageY;
582        }
583        else if (e.clientX || e.clientY)    {
584            posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
585            posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
586        }
587        return { x : posx, y : posy }
588    }
589	setVisibleSlides() {
590        var checkNextSlide = (this.center+1 <= this.slidesTotal-1) ? true : false,
591            checkPrevSlide = (this.center-1 >= 0) ? true : false;
592
593		this.centerSlide = this.slides[this.center];
594		this.rightSlide = this.slides[checkNextSlide ? this.center+1 : null];
595		this.leftSlide = this.slides[checkPrevSlide ? this.center-1 : null];
596		this.centerSlide.setCenter();
597        if(this.centerSlide.DOM.isMoreBtn) $(this.DOM.control.center).addClass('cursor-default');
598        else $(this.DOM.control.center).removeClass('cursor-default');
599
600        $(this.DOM.control.left).removeClass('cursor-default');
601        $(this.DOM.control.right).removeClass('cursor-default');
602
603		if(this.rightSlide != null) {
604            $(this.DOM.control.right).removeClass('hide');
605            $(this.DOM.el).closest('.'+elDefaultClass).find('.m-slide-control.m-slide-right').removeClass('hide');
606            this.rightSlide.setRight();
607		} else {
608			$(this.DOM.control.right).addClass('hide');
609            $(this.DOM.el).closest('.'+elDefaultClass).find('.m-slide-control.m-slide-right').addClass('hide');
610		}
611
612		if(this.leftSlide != null) {
613			$(this.DOM.control.left).removeClass('hide');
614            $(this.DOM.el).closest('.'+elDefaultClass).find('.m-slide-control.m-slide-left').removeClass('hide');
615			this.leftSlide.setLeft(); 
616		} else {
617			$(this.DOM.control.left).addClass('hide');
618            $(this.DOM.el).closest('.'+elDefaultClass).find('.m-slide-control.m-slide-left').addClass('hide');
619		}
620	}
621	// Distance between 2 slides 
622	// The amount to translate the elements that move when we navigate the slideshow
623	calculateGap() {
624        var s1_idx = (this.center < 1) ? 0 : this.center,
625            s2_idx = s1_idx + 1;
626
627        if(this.slidesTotal == 1) s2_idx = s1_idx;
628        else if(this.slidesTotal == 2) {
629            s1_idx = 0;
630            s2_idx = 1;
631        } else if(s1_idx + 1 >= this.slidesTotal) {
632            s1_idx = this.slidesTotal - 2;
633            s2_idx = this.slidesTotal - 1;
634        }
635
636		var s1 = this.slides[s1_idx].DOM.el.getBoundingClientRect();
637		var s2 = this.slides[s2_idx].DOM.el.getBoundingClientRect();
638		this.gap = Fixedscroll4_MathUtils.distance(s1.left + s1.width/2, s2.left + s2.width/2, s1.top + s1.height/2, s2.top + s2.height/2);
639	}
640    // Initialize events
641    initEvents() {
642        this.clickRightFn = () => this.navigate('right');
643        this.DOM.control.right.addEventListener('click', this.clickRightFn);
644
645        this.clickLeftFn = () => this.navigate('left');
646        this.DOM.control.left.addEventListener('click', this.clickLeftFn);
647
648        this.clickCenterFn = () => this.clickSlide();
649        this.DOM.control.center.addEventListener('click', this.clickCenterFn);
650
651        this.mouseenterCenterFn = () => {
652            if ( this.isAnimating ) {
653                return;
654            }
655            
656            if(this.centerSlide.DOM.isMoreBtn) {
657                var centerBtnStyles = window.getComputedStyle(this.centerSlide.DOM.el),
658                    default_color = centerBtnStyles.getPropertyValue('--btn-line'),
659                    hover_color = centerBtnStyles.getPropertyValue('--btn-line-hover');
660
661                if(typeof default_color == 'undefined') default_color = centerBtnStyles.getPropertyValue('--gallery-loadmore-default');
662                if(typeof hover_color == 'undefined') hover_color = centerBtnStyles.getPropertyValue('--gallery-loadmore-hover');
663
664                if(typeof default_color != 'undefined') {
665                    default_color = default_color.trim();
666                    hover_color = (typeof hover_color != 'undefined' && hover_color) ? hover_color.trim() : default_color;
667                }
668            }
669
670            var tl = new TimelineMax();
671            tl.to(this.centerSlide.DOM.imgWrap, 0.7, {
672                ease: Expo.easeOut,
673                scale: 1.02
674            })
675            .to(this.centerSlide.DOM.img, 1.7, {
676                ease: Expo.easeOut,
677                scale: 1.05
678            }, 0);
679            if(this.centerSlide.DOM.isMoreBtn) {
680                tl.to(this.centerSlide.DOM.el.querySelector('.gallery-loadmore svg'), 1.7, {
681                    ease: Expo.easeOut,
682                    fill: Coloris.getColorInfo(hover_color,'rgba')
683                }, 0);
684            }
685        };
686        this.DOM.control.center.addEventListener('mouseenter', this.mouseenterCenterFn);
687
688        this.mouseleaveCenterFn = () => {
689            if ( this.isAnimating ) {
690                return;
691            }
692
693            if(this.centerSlide.DOM.isMoreBtn) {
694                var centerBtnStyles = window.getComputedStyle(this.centerSlide.DOM.el),
695                    default_color = centerBtnStyles.getPropertyValue('--btn-line'),
696                    hover_color = centerBtnStyles.getPropertyValue('--btn-line-hover');
697
698                if(typeof default_color == 'undefined') default_color = centerBtnStyles.getPropertyValue('--gallery-loadmore-default');
699                if(typeof hover_color == 'undefined') hover_color = centerBtnStyles.getPropertyValue('--gallery-loadmore-hover');
700
701                if(typeof default_color != 'undefined') {
702                    default_color = default_color.trim();
703                    hover_color = (typeof hover_color != 'undefined' && hover_color) ? hover_color.trim() : default_color;
704                }
705            }
706
707            var tl = new TimelineMax();
708            tl.to(this.centerSlide.DOM.imgWrap, 0.7, {
709                ease: Expo.easeOut,
710                scale: 1
711            })
712            .to(this.centerSlide.DOM.img, 0.7, {
713                ease: Expo.easeOut,
714                scale: 1
715            }, 0);
716            if(this.centerSlide.DOM.isMoreBtn) {
717                tl.to(this.centerSlide.DOM.el.querySelector('.gallery-loadmore svg'), 0.7, {
718                    ease: Expo.easeOut,
719                    fill: Coloris.getColorInfo(default_color,'rgba')
720                }, 0);
721            }
722        };
723        this.DOM.control.center.addEventListener('mouseleave', this.mouseleaveCenterFn);
724
725        this.resizeFn = () => this.calculateGap();
726        window.addEventListener('resize', this.resizeFn);
727
728        $(this.DOM.control.wrap).attr('data-set',true);
729    }
730    navigate(direction) {
731        if ( this.isAnimating || typeof TweenMax == 'undefined') {
732            return false;
733        }
734        this.isAnimating = true;
735
736        var upcomingPos = direction === 'right' ? 
737                this.center < this.slidesTotal-2 ? this.center+2 : null:
738                this.center >= 2 ? this.center-2 : null;
739
740        // Update current.
741        this.center = direction === 'right' ? 
742                this.center < this.slidesTotal-1 ? this.center+1 : null :
743                this.center > 0 ? this.center-1 : null;
744
745
746        this.upcomingSlide = (upcomingPos != null) ? this.slides[upcomingPos] : null;
747        if(this.upcomingSlide) TweenMax.set(this.upcomingSlide.DOM.el, {x: direction === 'right' ? this.gap*2 : this.gap*2*-1, opacity: 1});
748
749        var movingSlides = (this.upcomingSlide) ?  [this.upcomingSlide, this.centerSlide] : [this.centerSlide];
750        if(direction === 'right') {
751            if(this.rightSlide) movingSlides.push(this.rightSlide);
752            if(this.leftSlide) movingSlides.push(this.leftSlide);
753        } else {
754            if(this.leftSlide) movingSlides.push(this.leftSlide);
755            if(this.rightSlide) movingSlides.push(this.rightSlide);
756        }
757
758        var promises = [];
759        movingSlides.forEach(slide => promises.push(slide.move(direction === 'right' ? 'left' : 'right', this.gap)));
760        Promise.all(promises).then(() => {
761            // After all is moved, update the classes of the 3 visible slides and reset styles
762            movingSlides.forEach(slide => slide.reset());
763            // Set it again
764            this.setVisibleSlides();
765            this.isAnimating = false;
766        });
767    }
768    clickSlide() {
769        if ( this.isAnimating ) {
770            return false;
771        }
772
773        var contentItem = this.DOM.slideLinks[this.center];
774        if(!$(contentItem).closest('.element[data-type="gallery"]').hasClass('emptyGallery')) contentItem.click();
775    }
776};
777
778let Fixedscroll4_Slide = class {
779    constructor(el) {
780        this.DOM = {el: el};
781
782        this.DOM.isMoreBtn = ($(this.DOM.el).find('.gallery-loadmore').length) ? true : false;
783        if(this.DOM.isMoreBtn) {
784            this.DOM.figcaptionTop = this.DOM.el.querySelector('.loadmore-wrap .loadmore-top');
785            this.DOM.figcaptionBottom = this.DOM.el.querySelector('.loadmore-wrap .loadmore-bottom');
786            this.DOM.imgWrap = this.DOM.el.querySelector('.gallery-loadmore[data-loadmore="true"]');
787            this.DOM.img = this.DOM.el.querySelector('.loadmore-icon');
788
789            var prev_slide = (this.DOM.el.previousSibling !== null) ? this.DOM.el.previousSibling : this.DOM.el.previousSibling.previousSibling,
790                prev_f_top = (prev_slide !== null) ? prev_slide.querySelector('.grid figcaption.top') : null,
791                prev_f_bottom = (prev_slide !== null) ? prev_slide.querySelector('.grid figcaption.bottom') : null,
792                prev_t_h = (prev_f_top !== null) ? prev_f_top.clientHeight : 0,
793                prev_b_h = (prev_f_bottom !== null) ? prev_f_bottom.clientHeight : 0;
794
795            this.DOM.figcaptionTop.style.setProperty('height', prev_t_h+'px', null);
796            this.DOM.figcaptionBottom.style.setProperty('height', prev_b_h+'px', null);
797        } else {
798            this.DOM.figcaptionTop = this.DOM.el.querySelector('figcaption.top');
799            this.DOM.figcaptionBottom = this.DOM.el.querySelector('figcaption.bottom');
800            this.DOM.imgWrap = this.DOM.el.querySelector('.img-wrapper');
801            this.DOM.img = this.DOM.imgWrap.querySelector('.g-img');
802        }
803    }
804    move(direction, val) {
805        if(typeof this.DOM.el == 'undefined' || typeof TweenMax == 'undefined') return false;
806
807        return new Promise((resolve, reject) => {
808            var tx = direction === 'left' ? '+=' + val*-1 : '+=' + val;
809            var duration = 1.2;
810
811            new TimelineMax({onComplete: resolve})
812            .to(this.DOM.imgWrap, duration, {
813                x: tx,
814                ease: Quart.easeInOut
815            }, 0)
816            .to(this.DOM.imgWrap, duration*.5, {
817                scaleX: 1.3,
818                ease: Quart.easeIn
819            }, 0)
820            .to(this.DOM.imgWrap, duration*.5, {
821                scaleX: 1,
822                ease: Quart.easeOut
823            }, duration*.5) 
824            .to(this.DOM.figcaptionTop, duration*.95, {
825                x: tx,
826                ease: Quint.easeInOut
827            }, 0)
828            .to(this.DOM.figcaptionBottom, duration*1.1, {
829                x: tx,
830                ease: Quart.easeInOut
831            }, 0);
832        });
833    }
834    setCenter() {
835        if(typeof this.DOM.el == 'undefined' || typeof TweenMax == 'undefined') return false;
836
837        this.isCenter = true;
838        this.DOM.el.classList.add('slide-center');
839        TweenMax.set([this.DOM.el], {opacity: 1});
840    }
841    setRight() {
842        if(typeof this.DOM.el == 'undefined' || typeof TweenMax == 'undefined') return false;
843
844        this.isRight = this.isCenter = false;
845        this.isLeft = true;
846        this.DOM.el.classList.add('slide-right');
847        TweenMax.set([this.DOM.el], {opacity: 1});
848    }
849    setLeft() {
850        if(typeof this.DOM.el == 'undefined' || typeof TweenMax == 'undefined') return false;
851
852        this.isLeft = this.isCenter = false;
853        this.isRight = true;
854        this.DOM.el.classList.add('slide-left');
855        TweenMax.set([this.DOM.el], {opacity: 1});
856    }
857    reset() {
858        if(typeof this.DOM.el == 'undefined' || typeof TweenMax == 'undefined') return false;
859
860        TweenMax.set([this.DOM.el, this.DOM.imgWrap, this.DOM.figcaptionTop, this.DOM.figcaptionBottom], {transform: 'none'});
861        TweenMax.set([this.DOM.el], {opacity: 0});
862        this.DOM.el.classList = (this.DOM.isMoreBtn) ? 'loadmore-wrap slide' : 'grid slide gallery-item';
863    }
864}
865
866
867
868/*
869------------------------------------------------------------------------------------------------------------------------------------------------------------
870------------------------------------------------------------------------------------------------------------------------------------------------------------
871
872	type	:	gallery
873	type2	:	premium
874	mode	:	 
875	feature	:	fixedscroll off
876	overlap	:	0
877	folder	:	800
878	name	:	pGallery00_SAMPLE
879
880	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="?" data-js-selector=".fs-container">
881*/
882
883
884
885
886
887
888
889
890
891
892
893
894/*
895------------------------------------------------------------------------------------------------------------------------------------------------------------
896------------------------------------------------------------------------------------------------------------------------------------------------------------
897
898	type	:	gallery
899	type2	:	premium
900	mode	:	 
901	feature	:	fixedscroll on
902	overlap	:	0
903	folder	:	800
904	name	:	pGalleryHold01
905
906	<input class="gjs" type="hidden" data-js="fixedscroll" data-js-code="hold1" data-js-selector=".fs-container">
907*/
908var Fixedscrollhold1 = function(gEL,gTarget) {
909	var g_el = $(gEL).attr('data-el'),
910		g_elname = $(gEL).attr('data-name');
911	gELStyles = window.getComputedStyle(document.querySelector('.'+g_elname));
912
913	var fixe_h = innerHeight - $('header').outerHeight(),
914		loop_h = $('.'+g_elname+' .loop').outerHeight(),
915		inset = Math.ceil((fixe_h - loop_h ) / 2),
916		grid_total = $('.'+g_elname+' .grid').length,
917		grid_padding = Number(gELStyles.getPropertyValue('--grid-padding').replace('px','')),
918		grid_width = Number(gELStyles.getPropertyValue('--grid-width').replace('px','')),
919		grid_height = Number(gELStyles.getPropertyValue('--grid-height')),
920		default_p = (70 * 100 / grid_padding) * 0.01,
921		// default_p = 0.7,
922		height_p = grid_total + 1 + default_p,
923		padding_p = grid_total + default_p,
924		// start_val = 'top ' + (inset + 20) + 'px',
925		// end_val = 'bottom ' + ((inset + 20)* -2) + 'px';
926		start_val = 'top ' + inset + 'px',
927		// end_val = 'bottom ' + ((inset + 20)* -2) + 'px';
928		end_val = '+=300%';
929
930	document.querySelector('.'+g_elname+' .fs-row').style.setProperty('width', innerWidth+'px', null);
931	document.querySelector('.'+g_elname+' .fs-row').style.setProperty('height', loop_h+'px', null);
932
933	if(typeof gELStyles.getPropertyValue('--grid-total') != 'undefined' && gELStyles.getPropertyValue('--grid-total')) {
934		document.querySelector('.'+g_elname).style.setProperty('--grid-total', grid_total, null);
935	}
936
937	gsap.registerPlugin(ScrollTrigger);
938	var scroller = document.querySelector('.'+g_el+' '+gTarget),
939	bodyScrollBar = Scrollbar.init(scroller, { damping: 0.08, thumbMinSize: 20, delegateTo: document, alwaysShowTracks: !0 });
940	ScrollTrigger.scrollerProxy('.'+g_el+' '+gTarget, {
941	    scrollTop(e) {
942	        return arguments.length && (bodyScrollBar.scrollTop = e), bodyScrollBar.scrollTop;
943	    },
944	}),
945	bodyScrollBar.addListener(ScrollTrigger.update),
946	ScrollTrigger.defaults({ scroller: scroller });
947
948	gsap.from('.'+g_elname+' .fs-row', {
949	  scrollTrigger: {
950	    trigger: '.'+g_elname+' .fs-row',
951	    markers: true,
952	    start: start_val ,
953	    end: end_val,
954	    scrub: 0.1,
955	    pin: !0,
956	    // toggleActions: 'play reverse none reverse',
957	  },
958	  ease: Linear.easeNone
959	});
960
961	// var move_x = (document.querySelector(".scroller").scrollTop < 10) ? 0 : (grid_total + 0.14) * -grid_width;
962	// move_x = (grid_total + 0.14) * -grid_width;
963	// move_x = (grid_total * grid_width) * -1;
964	// var move_x = Math.ceil((grid_width + (grid_padding/2)) * (grid_total - 1) * -1);
965	// var move_x = 4.14 * -innerWidth;
966	// var move_x = -(grid_width+grid_padding);
967	var move_x = (grid_total + 0.14) -(grid_width+grid_padding);
968	var move_x = (grid_total + 1.14) -(grid_width+grid_padding);
969
970	gsap.to('.'+g_elname+' .loop', {
971	  scrollTrigger: {
972	    trigger: '.'+g_elname+' .fs-row',
973	    markers: true,
974	    start: start_val,
975	    end: end_val,
976	    scrub: 0.1,
977	  },
978	  x: (grid_total - 1) * -grid_width, ease: "power1.out"
979	});
980
981	// (grid_width + grid_padding)
982	  // x: (grid_total + 0.14) * -innerWidth, ease: "power1.out"
983	// var box2tl = gsap.timeline({
984	// 	scrollTrigger: {
985	// 		trigger: '.s2',
986	// 		start: 'top 5%',
987	// 		pin: true,
988	// 		scrub: true,
989	// 		end: 'bottom 100%',
990
991	// 		// markers: {startColor: "red", endColor: "blue", fontSize: "20px"},
992	// 		toggleActions : 'play reverse none reverse',
993	// 			// default : play none none none
994	// 			// toggleActions : (onEnter, onLeave, onEnterBack, onLeaveBack) 값은 
995	// 			// (play pause resume reset restart complete reverse none) 사용 가능  
996	// 			// toggleActions : (트리거 시작할 때, 트리거 떠날 때, end방향으로 다시 진입할 때, start로 다시 진입할 때, start로 다시 나갈 때) 
997	// 	}
998	// });
999
1000
1001	// box2tl.to('.s2', { x : 50 })
1002	// box2tl.to('.s2', { x : -50 });
1003
1004
1005	// $('.dsgn-body').attr('data-barba','wrapper');
1006
1007	// gsap.registerPlugin(ScrollTrigger);
1008	// var scroller = document.querySelector(".scroller"),
1009	// 	bodyScrollBar = Scrollbar.init(scroller, { damping: 0.08, thumbMinSize: 20, delegateTo: document, alwaysShowTracks: !0 });
1010	// let myAnim;
1011	// ScrollTrigger.scrollerProxy(".scroller", {
1012	//     scrollTop(e) {
1013	//         return arguments.length && (bodyScrollBar.scrollTop = e), bodyScrollBar.scrollTop;
1014	//     },
1015	// }),
1016	// bodyScrollBar.addListener(ScrollTrigger.update),
1017	// ScrollTrigger.defaults({ scroller: scroller });
1018
1019	// var scrollAnimation = () => {
1020	// 	// document.querySelectorAll('.dsgn-body'),document.querySelector('.container');
1021
1022	// 	// gsap.to(".bg_home", { scrollTrigger: { trigger: ".s4", start: "start 50%", end: "bottom 100%", scrub: 0.1 }, backgroundColor: "#000", ease: "power1.out" }),
1023	// 	gsap.from(".s2", { scrollTrigger: { trigger: ".s2", start: "bottom 120%", end: "bottom -250%", scrub: 0.1, pin: !0 }, ease: Linear.easeNone }),
1024	// 	gsap.to("#carrusel", { scrollTrigger: { trigger: ".s2", start: "bottom 120%", end: "bottom -250%", scrub: 0.1 }, x: 4.14 * -innerWidth, ease: "power1.out" });
1025
1026	// };
1027
1028	// // function delay(e) {
1029	// //     return new Promise((a) => setTimeout(a, e));
1030	// // }
1031
1032	// scrollAnimation();
1033}

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.