1( function( $ ) { 2 /** 3 * @param $scope The Widget wrapper element as a jQuery element 4 * @param $ The jQuery alias 5 */ 6 var WidgetCTPostCarouselHandler = function( $scope, $ ) { 7 var breakpoints = elementorFrontend.config.breakpoints; 8 var carousel = $scope.find(".ct-slick-carousel"); 9 var data = carousel.data(); 10 var slickOptions = { 11 slidesToShow: data.colxl, 12 slidesToScroll: data.slidestoscroll, 13 autoplay: true === data.autoplay, 14 autoplaySpeed: data.autoplayspeed, 15 infinite: true === data.infinite, 16 pauseOnHover: true === data.pauseonhover, 17 speed: data.speed, 18 arrows: true === data.arrows, 19 dots: true === data.dots, 20 rtl: true === data.dir, 21 responsive: [ 22 { 23 breakpoint: 1200, 24 settings: { 25 slidesToShow: data.collg 26 } 27 }, 28 { 29 breakpoint: 992, 30 settings: { 31 slidesToShow: data.colmd 32 } 33 }, 34 { 35 breakpoint: 767, 36 settings: { 37 slidesToShow: data.colsm 38 } 39 }, 40 { 41 breakpoint: 575, 42 settings: { 43 slidesToShow: data.colxs, 44 slidesToScroll: data.colxs, 45 } 46 }, 47 ] 48 }; 49 var nav_for = $scope.find(".ct-slick-nav"); 50 if(nav_for.length > 0){ 51 slickOptions.asNavFor = nav_for; 52 } 53 if(typeof carousel.attr('data-centerMode') !== 'undefined') { 54 slickOptions.centerMode = carousel.attr('data-centerMode') == 'true' ? true : false; 55 } 56 if(typeof carousel.attr('data-vertical') !== 'undefined') { 57 slickOptions.vertical = carousel.attr('data-vertical') == 'true' ? true : false; 58 } 59 carousel.slick(slickOptions); 60 61 $('.ct-nav-carousel').parents('.elementor-element').addClass('hide-nav'); 62 $('.ct-nav-carousel .nav-prev').on('click', function () { 63 $(this).parents('.elementor-element').find('.slick-prev').trigger('click'); 64 }); 65 $('.ct-nav-carousel .nav-next').on('click', function () { 66 $(this).parents('.elementor-element').find('.slick-next').trigger('click'); 67 }); 68 69 $('.ct-portfolio-carousel4 .ct-portfolio-images .slick-next').on('click', function () { 70 $(this).parents('.ct-portfolio-carousel4').find('.ct-portfolio-content .slick-next').trigger('click'); 71 }); 72 73 $('.ct-portfolio-carousel4 .ct-portfolio-images .slick-prev').on('click', function () { 74 $(this).parents('.ct-portfolio-carousel4').find('.ct-portfolio-content .slick-prev').trigger('click'); 75 }); 76 77 }; 78 79 $('.ct-slick-slider').each(function () { 80 var slider_main = $(this).find('.ct-slick-carousel'); 81 var slider_nav = $(this).find('.ct-slick-nav'); 82 $(slider_nav).slick({ 83 slidesToShow: parseInt(slider_nav.attr('data-nav')), 84 slidesToScroll: 1, 85 asNavFor: slider_main, 86 dots: false, 87 arrows: false, 88 centerMode: true, 89 infinite: true, 90 focusOnSelect: true, 91 autoplay: false, 92 autoplaySpeed: 8000, 93 speed: 800, 94 rtl: true === slider_nav.data('dir'), 95 responsive: [ 96 { 97 breakpoint: 768, 98 settings: { 99 slidesToShow: 1 100 } 101 } 102 ] 103 }); 104 }); 105 106 // Make sure you run this code under Elementor. 107 $( window ).on( 'elementor/frontend/init', function() { 108 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_blog_carousel.default', WidgetCTPostCarouselHandler ); 109 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_service_carousel.default', WidgetCTPostCarouselHandler ); 110 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_portfolio_carousel.default', WidgetCTPostCarouselHandler ); 111 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_gallery_carousel.default', WidgetCTPostCarouselHandler ); 112 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_testimonial_carousel.default', WidgetCTPostCarouselHandler ); 113 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_team_carousel.default', WidgetCTPostCarouselHandler ); 114 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_client_carousel.default', WidgetCTPostCarouselHandler ); 115 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_feature_carousel.default', WidgetCTPostCarouselHandler ); 116 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_award_carousel.default', WidgetCTPostCarouselHandler ); 117 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_offer_carousel.default', WidgetCTPostCarouselHandler ); 118 elementorFrontend.hooks.addAction( 'frontend/element_ready/ct_service_external.default', WidgetCTPostCarouselHandler ); 119 } ); 120} )( 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.