PageSourceSearch

https://itaros.ru/bitrix/templates/aspro_max/components/bitrix/cat…/front_stories/script.js?177728037230614

js itaros.ru collected 2026-10-04 23:36:32 UTC 30,614 bytes, 710 lines download raw bytes

1// if you want stopped slider - write in console ( window.asproStoriesSliderStopped = true ) and then open popup
2
3$(document).on('touchstart', '.front_stories .item', function(e) {
4    window.touchStoriesX = e.originalEvent.changedTouches[0].clientX;
5    window.touchStoriesY = e.originalEvent.changedTouches[0].clientY;
6    setTimeout(
7        function() {
8            window.touchStoriesX = false;
9            window.touchStoriesY = false;
10        }
11    , 300);
12});
13
14$(document).on('touchend', '.front_stories .item', function(e) {
15    if(window.touchStoriesX == e.originalEvent.changedTouches[0].clientX && window.touchStoriesY == e.originalEvent.changedTouches[0].clientY) {
16        $(this).trigger('click');
17    }
18});
19
20document.addEventListener("keydown", function(e){
21    if (e.keyCode == 27) {
22        $('.stories-popup').click();
23    }
24});
25
26$(document).on('click', '.front_stories .item', function() {
27    if(!window.asproStoriesLoading) {
28        window.asproStoriesLoading = true;
29        var _this = $(this);
30        var storiesPopupWrapper = $('body > .stories-popup');
31        if(!storiesPopupWrapper.length) {
32            storiesPopupWrapper = $('<div class="stories-popup"></div>');
33        }
34    
35        var ajaxData = {
36            sectionData: _this.data(),
37            sortData: _this.closest('.front_stories').data(),
38        }
39        $.ajax({
40            url: arAsproOptions.SITE_DIR + 'ajax/storiesInfo.php',
41            data: ajaxData,
42            dataType: 'json',
43            type: 'POST',
44            success: function(result) {
45                if(result && result.error) {
46                    console.log('Fail get stories! Reason: '+result.error);
47                } else if(!result || typeof result != 'object') {
48                    console.log('Fail get stories! Reason: result is '+result);
49                } else {
50                    var html = generateSectionsHtml(result, _this.data());
51                    if(html) {
52                        storiesPopupWrapper.html(html);
53                        storiesPopupWrapper.addClass('stories-popup--visible');
54                        $('body').append(storiesPopupWrapper);
55    
56                        afterShowActions(result);
57                    }
58                }
59                window.asproStoriesLoading = false;
60            },
61            error: function(jqXHR, error, errorThrown) {
62                console.log('Fail get stories! Reason: '+errorThrown);
63                window.asproStoriesLoading = false;
64            }
65        });
66    }
67});
68
69$(document).on('click', '.stories-popup__close', function() {
70    var _this = $(this);
71    var popup = _this.parents('.stories-popup');
72    popup.remove();
73});
74
75$(document).on('click', '.stories-popup', function(e) {
76    var _this = $(this);
77    var _target = $(e.target);
78    if(_target.hasClass('stories-popup')) {
79        var popup = _this.closest('.stories-popup');
80        popup.remove();
81    }
82});
83
84$(document).on('click', '.front_stories .top_block a', function(e) {
85    e.preventDefault();
86    $('.front_stories .item').eq(0).trigger('click');
87});
88
89function getSliderSectionsHTML(elementsHTML) {
90    var html = '';
91    var sectionSliderClass = 'stories-popup__section-slider';
92    var sectionSliderInnerClass = 'stories-popup__section-slider-inner';
93
94    html += '<div class="'+sectionSliderClass+'">';
95        html += '<div class="'+sectionSliderClass+'-loader"><svg width="48" height="48" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" version="1.1"><path d="M 150,0 a 150,150 0 0,1 106.066,256.066 l -35.355,-35.355 a -100,-100 0 0,0 -70.711,-170.711 z" fill="#0000001a"><animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 150 150" to="360 150 150" begin="0s" dur=".8s" fill="freeze" repeatCount="indefinite"></animateTransform></path></svg></div>';
96        html += '<div class="'+sectionSliderInnerClass+'">';
97            html += elementsHTML;
98        html += '</div>';
99    html += '</div>';
100
101    return html;
102}
103
104function getSliderElementsHTML(elementsHTML, elementsCount, sectionInfo) {
105    var html = '';
106    var elementSliderClass = 'stories-popup__element-slider' + (sectionInfo.current ? ' stories-popup__element-slider--active' : ' stories-popup__element-slider--paused');
107    var elementSliderHeaderClass = 'stories-popup__element-slider-header';
108    var elementSliderHeaderImgClass = 'stories-popup__element-slider-header-img';
109    var elementSliderHeaderNameClass = 'stories-popup__element-slider-header-name';
110    var elementSliderElementsWrapperClass = 'stories-popup__element-slider-elements';
111
112    var animationDefaultTime = 5;
113
114    var topPanelHtml = '';
115    var topPanelClass = 'stories-popup__element-slider-panel';
116    var topPanelElementClass = 'stories-popup__element-slider-panel-element';
117    topPanelHtml += '<div class="'+topPanelClass+'">';
118    for(var i = 0;i < elementsCount;i++) {
119        topPanelHtml += '<div class="'+topPanelElementClass + (i == 0 ? ' '+topPanelElementClass+'--active' : '')+'"><div class="'+topPanelElementClass+'-line" style="animation-duration: '+animationDefaultTime+'s;"></div></div>';
120    }
121    topPanelHtml += '</div>';
122
123    
124    html += '<div class="'+elementSliderClass+'" data-section-id="'+sectionInfo.ID+'">';
125    
126    html += '<div class="'+elementSliderElementsWrapperClass+'">';
127    html += elementsHTML;
128    html += '</div>';
129
130    html += topPanelHtml;
131
132    html += '<div class="'+elementSliderHeaderClass+'">';
133    if (sectionInfo.PICTURE) {
134        html += '<div class="'+elementSliderHeaderImgClass+'" style="background: url('+sectionInfo.PICTURE+') no-repeat center;" ></div>';
135    }
136    html += '<div class="'+elementSliderHeaderNameClass+'">'+sectionInfo.NAME+'</div>';
137    html += '</div>';
138
139    html += '</div>';
140
141    return html;
142}
143
144function generateElementHtml(elementInfo, elementKey) {
145    var html = '';
146    var elementWrapperClass = 'stories-popup__element' + (elementKey > 0 ? '' : ' stories-popup__element--active');
147    var elementImgClass = 'stories-popup__element-image';
148    var elementButtonClass = 'stories-popup__element-btn';
149
150    var elementSliderElementsNavWrapperClass = 'stories-popup__element-slider-navs',
151        elementSliderElementsNavPrevClass = 'stories-popup__element-slider-navs-prev',
152        elementSliderElementsNavNextClass = 'stories-popup__element-slider-navs-next';
153
154    html += '<div class="'+elementWrapperClass+'" data-id="'+elementInfo.ID+'">';
155    html += '<div class="'+elementImgClass+'" style="background: url('+elementInfo.PREVIEW_PICTURE+') no-repeat center;" ></div>';
156    if(elementInfo.PROPERTY_BTN_TEXT_VALUE) {
157        var elementButtonTag = elementInfo.PROPERTY_BTN_LINK_VALUE ? 'a' : 'div';
158        var elementButtonHref = elementInfo.PROPERTY_BTN_LINK_VALUE ? ' href="'+elementInfo.PROPERTY_BTN_LINK_VALUE+'"' : '';
159        html += '<'+elementButtonTag+elementButtonHref+' class="btn '+elementButtonClass+' '+elementInfo.PROPERTY_BTN_CLASS_VALUE+'" >'+elementInfo.PROPERTY_BTN_TEXT_VALUE+'</'+elementButtonTag+'>';
160    }
161
162    html += '<div class="'+elementSliderElementsNavWrapperClass+'">'+
163            '<div class="'+elementSliderElementsNavPrevClass+'"></div>'+
164            '<div class="'+elementSliderElementsNavNextClass+'"></div>'+
165        '</div>'
166
167    html += '</div>';
168    
169    return html;
170}
171
172function afterShowActions(sectionInfo) {
173    sectionsSliderInit(sectionInfo);
174}
175
176function sectionsSliderInit(sections) {
177    var index = 0;
178    var activeSectionIndex = 0;
179    for (var key in sections) {
180        if (sections[key].current) {
181            activeSectionIndex = index;
182            break;
183        }
184        index++;
185    }
186    var options = {
187        popup: $('.stories-popup'),
188        activeSlideIndex: activeSectionIndex,
189        activeSlideClass: 'stories-popup__element-slider--active',
190        pausedSlideClass: 'stories-popup__element-slider--paused',
191        slidesSelector: '.stories-popup__element-slider',
192        innerSelector: '> .stories-popup__section-slider-inner',
193        activeElementClass: 'stories-popup__element--active',
194        elementsSelector: '.stories-popup__element',
195        elementNavPrevClass: 'stories-popup__element-slider-navs-prev',
196        elementNavNextClass: 'stories-popup__element-slider-navs-next',
197        elementPanelClass: 'stories-popup__element-slider-panel-element',
198        elementPanelActiveClass: 'stories-popup__element-slider-panel-element--active',
199        elementPanelFinishedClass: 'stories-popup__element-slider-panel-element--finishied',
200        changeSlideTime: 5000,
201        transition: 0.25,
202        activeSlideMargin: 8,
203        dragAmount: 150,
204        mobile: false,
205        breakpoints: {
206            '(max-width: 1025px)': {
207                activeSlideMargin: 4,
208            },
209            '(max-width: 566px)': {
210                mobile: true,
211            },
212        }
213    };
214    InitAsproStoriesSectionSlider($('.stories-popup__section-slider'), options);
215}
216
217function generateSectionsHtml(sections, sectionData) {
218    var html = '';
219    html += getPopupCloseIcon();
220
221    var elementsHTML = '';
222    for (var sectionKey in sections) {
223        var section = sections[sectionKey];
224        if(section.ID == sectionData.sectionId) {
225            section.current = true;
226        }
227
228        elementsHTML += generateElementsHtml(section);
229    }
230
231    html += getSliderSectionsHTML(elementsHTML);
232
233    return html;
234}
235
236function generateElementsHtml(sectionInfo) {
237    var html = '';
238    var elementsHTML = '';
239
240    var elements = sectionInfo.CHILDS;
241
242    var elementsHTML = '';
243    for (var elementKey in elements) {
244        var element = elements[elementKey];
245        elementsHTML += generateElementHtml(element, elementKey);
246    }
247
248    html += getSliderElementsHTML(elementsHTML, elements.length, sectionInfo);
249
250    return html;
251}
252
253function getPopupCloseIcon() {
254    var iconClass = 'stories-popup__close';
255    var icon = '<div class="'+iconClass+'"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L13 13M13 1L1 13" stroke="white" stroke-width="2" stroke-linecap="round"/></svg></div>';
256
257    return icon;
258}
259
260function InitAsproStoriesSectionSlider(el, options) {
261    el.asproStoriesSectionsSlider(options);
262}
263
264$.fn.asproStoriesSectionsSlider = function( options ){
265    function _storiesSlider(slider, options) {
266        var _slider = $(slider);
267
268        var responsiveOptions = Object.assign({}, options);
269        for(var width in options.breakpoints) {
270            if(window.matchMedia(width).matches) {
271                responsiveOptions = Object.assign(responsiveOptions, options.breakpoints[width]);
272            }
273        }
274
275        responsiveOptions.setStyles = function() {
276            responsiveOptions.sliderInner.css({
277                'display': 'flex',
278                'align-items': 'center',
279                'transition': 'margin-left '+ responsiveOptions.transition +'s ease-in-out',
280                'margin-left': responsiveOptions.calculateMargin(responsiveOptions.activeSlideIndex),
281            });
282            responsiveOptions.slider.css({
283                'overflow': 'hidden',
284            });
285        }
286
287        responsiveOptions.getCurrentSizes = function() {
288            responsiveOptions.sliderWidth = responsiveOptions.slider.outerWidth(true);
289            responsiveOptions.sliderHeight = responsiveOptions.slider.outerHeight(true);
290            responsiveOptions.updateSlidesHeight();
291        }
292
293        responsiveOptions.calculateMargin = function(slideIndex) {
294            responsiveOptions.getCurrentSizes();
295            if(responsiveOptions.mobile) {
296                responsiveOptions.sliderInnerMargin = -responsiveOptions.slideWidth*(slideIndex + 1) + responsiveOptions.sliderWidth/2 + responsiveOptions.slideWidth/2;
297            } else {
298                responsiveOptions.sliderInnerMargin = -responsiveOptions.slideWidth*(slideIndex + 1) + responsiveOptions.sliderWidth/2 + responsiveOptions.slideWidth/2 - responsiveOptions.sliderWidth/100*responsiveOptions.activeSlideMargin;
299            }
300            
301        }
302
303        responsiveOptions.setCenter = function(slideIndex) {
304            responsiveOptions.calculateMargin(slideIndex);
305            responsiveOptions.sliderInner.css({
306                'margin-left': responsiveOptions.sliderInnerMargin,
307            });
308        }
309
310        responsiveOptions.closePopup = function() {
311            responsiveOptions.popup.remove();
312        }
313
314        responsiveOptions.setActive = function(slideIndex) {
315            responsiveOptions.activeSlide.removeClass(responsiveOptions.activeSlideClass).addClass(responsiveOptions.pausedSlideClass);
316            $(responsiveOptions.activeSlide.panelElements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] ]).removeClass(responsiveOptions.elementPanelActiveClass);
317            responsiveOptions.activeSlideIndex = slideIndex;
318            
319            responsiveOptions.activeSlide = $(responsiveOptions.slides[responsiveOptions.activeSlideIndex]);
320            responsiveOptions.activeSlide.addClass(responsiveOptions.activeSlideClass).removeClass(responsiveOptions.pausedSlideClass);
321
322            responsiveOptions.activeSlide.elements = null;
323            responsiveOptions.activeSlide.panelElements = null;
324
325            responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide);
326            responsiveOptions.setActiveElement(responsiveOptions.activeSlide, 0);
327
328            responsiveOptions.setCenter(slideIndex);
329        }
330
331        responsiveOptions.updateElementsInfo = function(slide) {
332            if(!slide.elements || !slide.panelElements) {
333                slide.elements = slide.find(responsiveOptions.elementsSelector);
334                slide.panelElements = slide.find('.'+responsiveOptions.elementPanelClass);
335            }
336            if(!responsiveOptions.activeElements[slide.index()]) {
337                responsiveOptions.activeElements[slide.index()] = 0;
338            }
339        }
340
341        responsiveOptions.setNext = function() {
342            if(responsiveOptions.activeSlideIndex + 1 < responsiveOptions.slides.length) {
343                responsiveOptions.setActive(responsiveOptions.activeSlideIndex + 1);
344            } else {
345                responsiveOptions.closePopup();
346            }
347        }
348
349        responsiveOptions.setPrev = function() {
350            if(responsiveOptions.activeSlideIndex > 0) {
351                responsiveOptions.setActive(responsiveOptions.activeSlideIndex - 1);
352            }
353        }
354
355        responsiveOptions.setNextElement = function() {
356            responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide);
357            responsiveOptions.elementTimerContinue = null;
358
359            if(responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] + 1 < responsiveOptions.activeSlide.elements.length) {
360                responsiveOptions.setActiveElement(responsiveOptions.activeSlide, +1);
361            } else {
362                responsiveOptions.clearSlide(responsiveOptions.activeSlide);
363                responsiveOptions.setNext();
364            }
365        }
366
367        responsiveOptions.setPrevElement = function() {
368            responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide);
369
370            if(responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] > 0) {
371                responsiveOptions.setActiveElement(responsiveOptions.activeSlide, -1);
372            } else {
373                responsiveOptions.clearSlide(responsiveOptions.activeSlide);
374                responsiveOptions.setPrev();
375            }
376        }
377
378        responsiveOptions.clearSlide = function(slide) {
379            // slide.elements.removeClass(responsiveOptions.activeElementClass);
380            // slide.panelElements.removeClass(responsiveOptions.elementPanelActiveClass);
381            // slide.panelElements.removeClass(responsiveOptions.elementPanelFinishedClass);
382        }
383
384        responsiveOptions.setActiveElement = function(slide, newActiveIndex) {
385            if(responsiveOptions.elementTimer) {
386                clearTimeout(responsiveOptions.elementTimer);
387            }
388
389            var oldActive = slide.elements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] ];
390            var newActive = slide.elements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] + newActiveIndex];
391            $(oldActive).removeClass(responsiveOptions.activeElementClass);
392            $(newActive).addClass(responsiveOptions.activeElementClass);
393            responsiveOptions.activeElements[slide.index()] += newActiveIndex;
394            
395            slide.panelElements.each(function(index, element) {
396                var _this = $(element);
397                if(index < responsiveOptions.activeElements[slide.index()]) {
398                    _this.addClass(responsiveOptions.elementPanelFinishedClass);
399                    _this.removeClass(responsiveOptions.elementPanelActiveClass);
400                } else if (index == responsiveOptions.activeElements[slide.index()]) {
401                    _this.removeClass(responsiveOptions.elementPanelFinishedClass);
402                    _this.addClass(responsiveOptions.elementPanelActiveClass);
403                } else {
404                    _this.removeClass(responsiveOptions.elementPanelActiveClass);
405                    _this.removeClass(responsiveOptions.elementPanelFinishedClass);
406                }
407            });
408
409            if(!window.asproStoriesSliderStopped) {
410                responsiveOptions.elementTimerStart = Date.now();
411                responsiveOptions.elementTimer = setTimeout(
412                    function() {
413                        responsiveOptions.setNextElement();
414                    }
415                , responsiveOptions.changeSlideTime);
416            }
417        }
418
419        responsiveOptions.pauseSlide = function(slide) {
420            var index = slide.data('index');
421            index = index ? index : slide.index();
422
423            slide.addClass(responsiveOptions.pausedSlideClass);
424            responsiveOptions.stoppedSlideIndex = index;
425            if(responsiveOptions.elementTimer) {
426                clearTimeout(responsiveOptions.elementTimer);
427                responsiveOptions.animationTimer = responsiveOptions.elementTimerContinue ? responsiveOptions.elementTimerContinue : responsiveOptions.changeSlideTime;
428                responsiveOptions.elementTimerContinue = responsiveOptions.animationTimer - (Date.now() - responsiveOptions.elementTimerStart);
429            }
430        }
431
432        responsiveOptions.playSlide = function(slide) {
433            var index = slide.data('index');
434            index = index ? index : slide.index();
435
436            if( index == responsiveOptions.stoppedSlideIndex ) {
437                slide.removeClass(responsiveOptions.pausedSlideClass);
438                responsiveOptions.stoppedSlideIndex = null;
439                if(!window.asproStoriesSliderStopped) {
440                    responsiveOptions.elementTimerStart = Date.now();
441                    responsiveOptions.elementTimer = setTimeout(
442                        function() {
443                            responsiveOptions.setNextElement();
444                        }
445                    , responsiveOptions.elementTimerContinue);
446                }
447            }
448        }
449
450        responsiveOptions.addDragEvents = function() {
451            responsiveOptions.slides.on('touchstart', function(event) {
452                var _this = $(this);
453                var index = _this.data('index');
454                index = index ? index : _this.index();
455
456                if(index == responsiveOptions.activeSlideIndex) {
457                    if(!responsiveOptions.mobile) {
458                        responsiveOptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX;
459                    }
460                }
461            });
462
463            responsiveOptions.slides.on('touchmove', function(event) {
464                var _this = $(this);
465                var index = _this.data('index');
466                index = index ? index : _this.index();
467
468                if(index == responsiveOptions.activeSlideIndex) {
469                    if(!responsiveOptions.mobile) {
470                        responsiveOptions.touch.posCurrent = event.originalEvent.changedTouches[0].pageX - responsiveOptions.touch.posPrev;
471                        responsiveOptions.sliderInner.css({
472                            'margin-left': responsiveOptions.sliderInnerMargin + responsiveOptions.touch.posCurrent,
473                        });
474                        responsiveOptions.sliderInnerMargin = responsiveOptions.sliderInnerMargin + responsiveOptions.touch.posCurrent;
475                        responsiveOptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX;
476                    }
477                }
478            });
479            
480            responsiveOptions.slides.on('mousedown', function(event) {
481                var _this = $(this);
482                var index = _this.data('index');
483                index = index ? index : _this.index();
484
485                if(index == responsiveOptions.activeSlideIndex) {
486                    if(!responsiveOptions.mobile) {
487                        var startX = event.pageX;
488
489
490                        function moveAt(pageX) {            
491                            var left = pageX - startX > 0 ? pageX - startX : startX - pageX;
492                            var movePercent = left / responsiveOptions.dragAmount;
493                            if(pageX - startX > 0 && responsiveOptions.activeSlideIndex > 0 || pageX - startX < 0 && responsiveOptions.activeSlideIndex < responsiveOptions.slides.length) {
494                                var dependSlide = pageX - startX > 0 ? _this.prev() : _this.next();
495                                var cssCurrent = {
496                                    'margin-left': responsiveOptions.activeSlideMargin - responsiveOptions.activeSlideMargin*movePercent + 'vw',
497                                    'margin-right': responsiveOptions.activeSlideMargin - responsiveOptions.activeSlideMargin*movePercent + 'vw',
498                                    'transform': 'scale('+ (1 - 0.25*movePercent) +')',
499                                };
500                                var cssDepend = {
501                                    'margin-left': responsiveOptions.activeSlideMargin*movePercent + 'vw',
502                                    'margin-right': responsiveOptions.activeSlideMargin*movePercent + 'vw',
503                                    'transform': 'scale('+ (0.75 + 0.25*movePercent) +')',
504                                };
505
506                                _this.css(cssCurrent);
507                                dependSlide.css(cssDepend);
508                                
509                                console.log(movePercent);
510                            }
511                        }
512                    
513                        function onMouseMove(event) {
514                            moveAt(event.pageX);
515                        }
516                    
517                        document.addEventListener('mousemove', onMouseMove);
518                    
519                        $(document).on('mouseup', function() {
520                            document.removeEventListener('mousemove', onMouseMove);
521                            this.onmouseup = null;
522                        });
523                    
524                        this.ondragstart = function() {
525                            return false;
526                        };
527                    }
528                }
529            });
530        }
531
532        responsiveOptions.addEvents = function () {
533            BX.loadScript(arAsproOptions.SITE_TEMPLATE_PATH + '/js/jquery.mobile.custom.touch.min.js', () => {
534                responsiveOptions.slides.on('swiperight', function() {
535                    if (responsiveOptions.mobile) {
536                        responsiveOptions.setPrev();
537                    }
538                });
539    
540                responsiveOptions.slides.on('swipeleft', function() {
541                    if (responsiveOptions.mobile) {
542                        responsiveOptions.setNext();
543                    }
544                });
545            });
546
547            responsiveOptions.slides.on('click', function() {
548                var _this = $(this);
549                var index = _this.data('index');
550                index = index ? index : _this.index();
551
552                if(index != responsiveOptions.activeSlideIndex) {
553                    responsiveOptions.setActive(index);
554                }
555            });
556
557            responsiveOptions.slides.on('taphold', function() {
558                var _this = $(this);
559                responsiveOptions.pauseSlide(_this);
560            });
561
562            responsiveOptions.slides.on('touchend', function() {
563                var _this = $(this);
564                responsiveOptions.playSlide(_this);
565            });
566
567            responsiveOptions.slides.on('mousedown', function() {
568                var _this = $(this);
569                var timeout = 1000;
570                responsiveOptions.mousedownTimer = setTimeout(
571                    function() {
572                        responsiveOptions.mouseHold = true;
573                        responsiveOptions.pauseSlide(_this);
574                    }
575                , timeout);
576            });
577
578            responsiveOptions.slides.on('mousemove', function() {
579                if(responsiveOptions.mousedownTimer) {
580                    clearTimeout(responsiveOptions.mousedownTimer);
581                    responsiveOptions.mouseHold = false;
582                }
583            });
584
585            responsiveOptions.slides.on('mouseup', function(e) {
586                if(responsiveOptions.mouseHold) {
587                    var _this = $(this);
588                    responsiveOptions.playSlide(_this);
589                } else {
590                    if(responsiveOptions.mousedownTimer) {
591                        clearTimeout(responsiveOptions.mousedownTimer);
592                        responsiveOptions.mouseHold = false;
593                    }
594                }
595            });
596
597            responsiveOptions.slides.on('click', '.'+responsiveOptions.elementNavPrevClass, function(e) {
598                if(!responsiveOptions.mouseHold) {
599                    var _this = $(this);
600                    var _thisSlide = _this.closest(responsiveOptions.slidesSelector);
601                    var index = _thisSlide.data('index');
602                    index = index ? index : _thisSlide.index();
603
604                    if(index == responsiveOptions.activeSlideIndex) {
605                        responsiveOptions.setPrevElement();
606                        e.preventDefault();
607                        e.stopPropagation();
608                    }
609                } else {
610                    responsiveOptions.mouseHold = false;
611                }
612            });
613
614            responsiveOptions.slides.on('click', '.'+responsiveOptions.elementNavNextClass, function(e) {
615                if(!responsiveOptions.mouseHold) {
616                    var _this = $(this);
617                    var _thisSlide = _this.closest(responsiveOptions.slidesSelector);
618                    var index = _thisSlide.data('index');
619                    index = index ? index : _thisSlide.index();
620
621                    if(index == responsiveOptions.activeSlideIndex) {
622                        responsiveOptions.setNextElement();
623                        e.preventDefault();
624                        e.stopPropagation();
625                    }
626                } else {
627                    responsiveOptions.mouseHold = false;
628                }
629            });
630
631            // responsiveOptions.addDragEvents();
632
633            BX.addCustomEvent('onWindowResize', function(eventdata) {
634                try{
635                    responsiveOptions.update();
636                }
637                catch(e){
638                    console.log(e);
639                }
640            });
641        }
642
643        responsiveOptions.updateSlidesHeight = function() {
644            if(responsiveOptions.mobile) {
645                responsiveOptions.slideWidth = responsiveOptions.sliderWidth;
646                responsiveOptions.slides.css({
647                    'width': '',
648                });
649            } else {
650                responsiveOptions.slideWidth = (responsiveOptions.sliderHeight + 80)/1.98;
651                responsiveOptions.slides.css({
652                    'width': responsiveOptions.slideWidth,
653                });
654            }
655        }
656
657        responsiveOptions.update = function() {
658            var activeSlide = responsiveOptions.activeSlideIndex;
659            responsiveOptions = Object.assign(responsiveOptions, options);
660            for(var width in options.breakpoints) {
661                if(window.matchMedia(width).matches) {
662                    responsiveOptions = Object.assign(responsiveOptions, options.breakpoints[width]);
663                }
664            }
665
666            responsiveOptions.activeSlideIndex = activeSlide;
667            responsiveOptions.getCurrentSizes();
668            responsiveOptions.setCenter(responsiveOptions.activeSlideIndex);
669        }
670
671        responsiveOptions.init = function(_slider) {
672            responsiveOptions.slides = _slider.find(responsiveOptions.slidesSelector);
673            responsiveOptions.activeSlide = $(responsiveOptions.slides[responsiveOptions.activeSlideIndex]);
674            responsiveOptions.sliderInner = _slider.find(responsiveOptions.innerSelector);
675            responsiveOptions.slider = _slider;
676            responsiveOptions.sliderWidth = responsiveOptions.slider.outerWidth(true);
677            responsiveOptions.slides.addClass('swipeignore');
678            responsiveOptions.touch = {};
679            responsiveOptions.activeElements = {};
680
681            responsiveOptions.setStyles();
682            responsiveOptions.getCurrentSizes();
683            responsiveOptions.setCenter(responsiveOptions.activeSlideIndex);
684
685            responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide);
686            responsiveOptions.setActiveElement(responsiveOptions.activeSlide, 0);
687
688            responsiveOptions.addEvents();
689
690            _slider.data('asproStoriesSlider', responsiveOptions);
691        }
692
693        responsiveOptions.init(_slider);
694        setTimeout(
695            function() {
696                responsiveOptions.slider.addClass('aspro_slider_init');
697            },
698        responsiveOptions.transition*1000 + 10);
699       
700    }
701
702    var el = $(this);
703
704    if(el.hasClass('aspro_slider_init'))
705        return false;
706        
707    el.each(function(i, slider){
708        _storiesSlider(slider, options);
709    });
710}

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.