1'use strict'; 2(function ($) { 3 4 jQuery(window).on('elementor/frontend/init', function () { 5 elementorFrontend.hooks.addAction('frontend/element_ready/etlms-course-thumbnail.default', function ($scope, $) { 6 // remove course play and spining class 7 if (etlmsUtility.is_editor_mode) { 8 const coursePlayers = document.querySelectorAll('.course-players'); 9 if (coursePlayers.length) { 10 coursePlayers.forEach( (player) => { 11 player.setAttribute('class', ''); 12 const spinner = player.querySelector('.loading-spinner'); 13 if (spinner) { 14 spinner.setAttribute('class', ''); 15 } 16 }) 17 } 18 } 19 }); 20 /** 21 * Course Curriculum 22 * @since 1.0.0 23 */ 24 elementorFrontend.hooks.addAction('frontend/element_ready/etlms-course-curriculum.default', function ($scope, $) { 25 if (etlmsUtility.is_editor_mode) { 26 const accordionItemHeaders = document.querySelectorAll('.tutor-accordion-item-header'); 27 if (accordionItemHeaders) { 28 accordionItemHeaders.forEach((accordionItemHeader) => { 29 accordionItemHeader.addEventListener('click', () => { 30 accordionItemHeader.classList.toggle('is-active'); 31 const accordionItemBody = accordionItemHeader.nextElementSibling; 32 if (accordionItemHeader.classList.contains('is-active')) { 33 accordionItemBody.style.maxHeight = accordionItemBody.scrollHeight + 'px'; 34 } else { 35 accordionItemBody.style.maxHeight = 0; 36 } 37 }); 38 }); 39 } 40 } 41 }); 42 elementorFrontend.hooks.addAction('frontend/element_ready/etlms-course-content.default', function ($scope, $) { 43 if (etlmsUtility.is_editor_mode) { 44 const accordionItemHeaders = document.querySelectorAll('.tutor-accordion-item-header'); 45 if (accordionItemHeaders) { 46 accordionItemHeaders.forEach((accordionItemHeader) => { 47 accordionItemHeader.addEventListener('click', () => { 48 accordionItemHeader.classList.toggle('is-active'); 49 const accordionItemBody = accordionItemHeader.nextElementSibling; 50 if (accordionItemHeader.classList.contains('is-active')) { 51 accordionItemBody.style.maxHeight = accordionItemBody.scrollHeight + 'px'; 52 } else { 53 accordionItemBody.style.maxHeight = 0; 54 } 55 }); 56 }); 57 } 58 } 59 }); 60 61 /** 62 * Course Carousel 63 * @since 1.0.0 64 */ 65 elementorFrontend.hooks.addAction('frontend/element_ready/etlms-course-carousel.default', function ($scope, $) { 66 /** 67 * get all carousel settings 68 */ 69 var desktop = $scope.find("#etlms_carousel_settings").attr('desktop'); 70 var medium = $scope.find("#etlms_carousel_settings").attr('medium'); 71 var mobile = $scope.find("#etlms_carousel_settings").attr('mobile'); 72 var carousel_arrows = $scope.find("#etlms_carousel_settings").attr('arrows'); 73 var carousel_dots = $scope.find("#etlms_carousel_settings").attr('dots'); 74 var carousel_transition = $scope.find("#etlms_carousel_settings").attr('transition'); 75 var carousel_center = $scope.find("#etlms_carousel_settings").attr('center'); 76 var smooth_scroll = $scope.find("#etlms_carousel_settings").attr('smoth_scroll'); 77 var carousel_autoplay = $scope.find("#etlms_carousel_settings").attr('auto_play'); 78 var carousel_auto_play_speed = $scope.find("#etlms_carousel_settings").attr('auto_play_speed'); 79 var carousel_infinite_loop = $scope.find("#etlms_carousel_settings").attr('infinite_loop'); 80 var carousel_pause_on_hover = $scope.find("#etlms_carousel_settings").attr('pause_on_hover'); 81 82 83 carousel_arrows == 'yes' ? carousel_arrows = true : carousel_arrows = false; 84 carousel_dots == 'yes' ? carousel_dots = true : carousel_dots = false; 85 carousel_transition = Number(carousel_transition); 86 carousel_center == 'yes' ? carousel_center = true : carousel_center = false; 87 carousel_autoplay == 'yes' ? carousel_autoplay = true : carousel_autoplay = false; 88 Number(carousel_auto_play_speed); 89 carousel_infinite_loop == 'yes' ? carousel_infinite_loop = true : carousel_infinite_loop = false; 90 carousel_pause_on_hover == 'yes' ? carousel_pause_on_hover = true : carousel_pause_on_hover = false;
91 92 /** 93 * applying all settings here 94 */ 95 $scope.find('#etlms-slick-responsive').slick({ 96 dots: carousel_dots, 97 arrows: carousel_arrows, 98 infinite: carousel_infinite_loop, 99 autoplay: carousel_autoplay, 100 autoplaySpeed: carousel_auto_play_speed, 101 slidesToShow: Number(desktop), 102 slidesToScroll: 1, 103 speed: carousel_transition, 104 centerMode: carousel_center, 105 pauseOnHover: carousel_pause_on_hover, 106 107 cssEase: smooth_scroll, 108 109 prevArrow: $scope.find('.etlms-carousel-arrow-prev'), 110 nextArrow: $scope.find('.etlms-carousel-arrow-next'), 111 112 rtl: elementorFrontend.config.is_rtl ? true : false, 113 114 responsive: [ 115 { 116 breakpoint: 1024, 117 settings: { 118 slidesToShow: Number(medium), 119 slidesToScroll: 1, 120 infinite: true, 121 dots: true 122 } 123 }, 124 { 125 breakpoint: 576, 126 settings: { 127 slidesToShow: Number(mobile), 128 slidesToScroll: 1 129 } 130 } 131 ] 132 }); 133 134 }); 135 136 // Sticky Sidebar In Course Details Page and Bundle Details Page of Elementor 137 138 const isSidebarSticky = window?.tutorElementorData?.is_sidebar_sticky ?? false; 139 let isSticky = false; 140 141 if (isSidebarSticky) { 142 const courseSidebar = document.querySelector('.tutor-single-course-sidebar'); 143 if (courseSidebar) { 144 const header = document.getElementsByTagName('header')[0]; 145 const headerHeight = `${header.offsetHeight}px`; 146 const isHeaderSticky = header.classList.value.includes('sticky'); 147 148 function handleScroll() { 149 const scrollFromTop = window.scrollY; 150 const SPACE_FROM_TOP = 200; 151 const isValidToStick = scrollFromTop >= SPACE_FROM_TOP; 152 const isValidDevice = window.innerWidth >= 1200; 153 154 if (isValidDevice) { 155 if (isValidToStick) { 156 if (!isSticky) { 157 courseSidebar.classList.add('tutor-elementor-sidebar-sticky'); 158 const style = `max-height: 80vh; overflow-y: scroll; top: ${isHeaderSticky ? headerHeight : ''}`; 159 courseSidebar.setAttribute('style', style); 160 courseSidebar.scrollTop = 0; 161 isSticky = true; 162 } 163 } else { 164 courseSidebar.classList.remove('tutor-elementor-sidebar-sticky'); 165 courseSidebar.removeAttribute('style'); 166 isSticky = false; 167 } 168 } 169 } 170 171 window.addEventListener('scroll', handleScroll); 172 } 173 } 174 175 }); 176})(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.