1(function ($) { 2 $(window).on('elementor/frontend/init', function () { 3 class SectionWidgetHandlerClass extends elementorModules.frontend.handlers.Base { 4 5 onInit() { 6 super.onInit(); 7 this.initSection(); 8 } 9 10 getDefaultSettings() { 11 return { 12 selectors: { 13 items: 'section.elementor-element[data-element_type=section]', 14 }, 15 }; 16 } 17 18 getDefaultElements() { 19 const selectors = this.getSettings('selectors'); 20 return { 21 $items: this.$element.find(selectors.items), 22 }; 23 } 24 25 bindEvents() { 26 } 27 28 initSection() { 29 let self = this; 30 const { 31 is_used_as_slider, 32 section_slider_navigation, 33 section_slider_effect, 34 section_slider_data_interval, 35 section_slider_dark_mode, 36 /* -- */ 37 section_slider_controls, 38 } = self.getElementSettings(); 39 40 if (is_used_as_slider === "yes") { 41 let items = self.elements.$items, 42 wrap = items.first().closest(".elementor-widget-wrap"), // default elementor wrapper for inner things 43 carouselID = "carousel" + self.getID(), 44 carouselClass = 45 "carousel w-100 h-100 " + 46 "d-flex align-items-center " + 47 "slide" + 48 (section_slider_effect === "fade" ? " carousel-fade" : "") + 49 (section_slider_dark_mode === "yes" ? " carousel-dark" : ""); 50 51 let carousel = $("<div></div>").addClass(carouselClass).attr("id", carouselID); 52 53 // process navigation buttons list 54 if (section_slider_navigation === "yes") { 55 let navigation = $("<div></div>").addClass("carousel-indicators"), 56 navElements = []; 57 items.each(function (i, e) { 58 let li = $("<button></button>").attr({ 59 "data-bs-target": "#" + carouselID, 60 "data-bs-slide-to": i 61 }); 62 navElements.push(li); 63 }); 64 65 navElements[0].addClass("active").attr("aria-current", "true"); // set first as active 66 navigation.append(navElements); // append to nav container 67 carousel.append(navigation); // append to carousel 68 } 69 70 // process items 71 let carouselInner = $("<div></div>").addClass("carousel-inner"), 72 carouselItems = []; 73 items.each(function (i, e) { 74 let carouselItem = $("<div></div>").addClass("carousel-item"); 75 carouselItem.append(e); 76 carouselItems.push(carouselItem); 77 }); 78 carouselItems[0].addClass("active"); // set first as active 79 carouselInner.append(carouselItems); // append to inner container 80 carousel.append(carouselInner); // append to carousel 81 82 // process controls 83 if (section_slider_controls === "yes") { 84 const 85 prevControl = $("<button></button>") 86 .addClass("carousel-control-prev") 87 .attr({ 88 "data-bs-slide": "prev", 89 "data-bs-target": "#" + carouselID 90 }).append( 91 $("<span></span>").addClass("carousel-control-prev-icon").attr("aria-hidden", "true") 92 ), 93 nextControl = $("<button></button>") 94 .addClass("carousel-control-next") 95 .attr({ 96 "data-bs-slide": "next", 97 "data-bs-target": "#" + carouselID 98 }).append( 99 $("<span></span>").addClass("carousel-control-next-icon").attr("aria-hidden", "true") 100 ); 101 carousel.append(prevControl, nextControl); 102 } 103 104 wrap.append(carousel); 105 106 let carouselArgs = {}; 107 carouselArgs["interval"] = typeof (section_slider_data_interval) === "number" ? section_slider_data_interval : false;
108 carousel.carousel(carouselArgs); 109 } 110 } 111 } 112 113 // from [email protected] we cannot use addHandler event directly, we should use attachHandler+class 114 elementorFrontend.elementsHandler.attachHandler('section', SectionWidgetHandlerClass, false); 115 116 // /* 117 // const SectionSliderWidgetHandler = ($element, $) => elementorFrontend.elementsHandler.addHandler(SectionWidgetHandlerClass, {$element}); 118 // elementorFrontend.hooks.addAction('frontend/element_ready/section', SectionSliderWidgetHandler); 119 // */ 120 121 }); 122})(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.