1/** 2 * WordPress Block Script: About Page Leadership Slider 3 */ 4(function ($) { 5 'use strict'; 6 7 function initPuAboutLeadersSlider() { 8 var $slider = $('.pu-about-leaders-slider'); 9 var $navWrap = $('.pu-about-leaders-nav-wrap'); 10 var $progressBar = $('.pu-about-leaders-progress-bar'); 11 var $prevBtn = $('.pu-about-leaders-prev'); 12 var $nextBtn = $('.pu-about-leaders-next'); 13 14 if ($slider.length && !$slider.hasClass('slick-initialized')) { 15 function updateSliderNav(slick, currentSlide) { 16 var current = 17 typeof currentSlide === 'number' 18 ? currentSlide 19 : slick && typeof slick.currentSlide === 'number' 20 ? slick.currentSlide 21 : 0; 22 var total = slick.slideCount; 23 var slidesToShow = slick.options.slidesToShow || 3; 24 var maxSteps = total - Math.floor(slidesToShow) + 1; 25 26 if (total <= Math.floor(slidesToShow)) { 27 $navWrap.hide(); 28 } else { 29 $navWrap.show(); 30 var progressPercent = 31 ((current + 1) / (maxSteps > 0 ? maxSteps : 1)) * 100; 32 if (progressPercent > 100) progressPercent = 100; 33 if (progressPercent < 0) progressPercent = 0; 34 $progressBar.css('width', progressPercent + '%'); 35 36 // Arrow opacity controls 37 if (!slick.options.infinite) { 38 var maxIndex = total - Math.floor(slidesToShow); 39 $prevBtn.css({ 40 opacity: current <= 0 ? '0.3' : '1', 41 'pointer-events': current <= 0 ? 'none' : 'auto', 42 }); 43 $nextBtn.css({ 44 opacity: current >= maxIndex ? '0.3' : '1', 45 'pointer-events': current >= maxIndex ? 'none' : 'auto', 46 }); 47 } 48 } 49 } 50 51 $slider.on( 52 'init reInit afterChange', 53 function (event, slick, currentSlide) { 54 updateSliderNav(slick, currentSlide); 55 } 56 ); 57 58 $slider.slick({ 59 dots: false, 60 arrows: false, 61 infinite: false, 62 speed: 400, 63 slidesToShow: 3, 64 slidesToScroll: 1, 65 draggable: true, 66 swipe: true, 67 touchMove: true, 68 touchThreshold: 8, 69 swipeToSlide: true, 70 dotsClass: 'pu-about-leaders-dots', 71 responsive: [ 72 { 73 breakpoint: 1200, 74 settings: { 75 slidesToShow: 3, 76 slidesToScroll: 1, 77 dots: false, 78 }, 79 }, 80 { 81 breakpoint: 992, 82 settings: { 83 slidesToShow: 2.15, 84 slidesToScroll: 1, 85 dots: false, 86 }, 87 }, 88 { 89 breakpoint: 768, 90 settings: { 91 slidesToShow: 1.15, 92 slidesToScroll: 1, 93 dots: true, 94 }, 95 }, 96 { 97 breakpoint: 576, 98 settings: { 99 slidesToShow: 1.05, 100 slidesToScroll: 1, 101 dots: true, 102 }, 103 }, 104 ], 105 }); 106 107 // Laptop touchpad two-finger horizontal scroll support 108 var sliderNode = $slider[0]; 109 if (sliderNode) { 110 var isWheelScrolling = false; 111 sliderNode.addEventListener( 112 'wheel', 113 function (e) { 114 if ( 115 Math.abs(e.deltaX) > Math.abs(e.deltaY) && 116 Math.abs(e.deltaX) > 12 117 ) { 118 e.preventDefault(); 119 if (!isWheelScrolling) { 120 isWheelScrolling = true; 121 if (e.deltaX > 0) { 122 $slider.slick('slickNext'); 123 } else { 124 $slider.slick('slickPrev'); 125 } 126 setTimeout(function () { 127 isWheelScrolling = false; 128 }, 300); 129 } 130 } 131 }, 132 { passive: false } 133 ); 134 } 135 136 $prevBtn.on('click', function () { 137 $slider.slick('slickPrev'); 138 }); 139 140 $nextBtn.on('click', function () { 141 $slider.slick('slickNext'); 142 }); 143 } 144 } 145 146 $(document).ready(function () { 147 initPuAboutLeadersSlider(); 148 }); 149})(jQuery);
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.