1function dceGetElementSettings($element) { 2 var elementSettings = []; 3 var modelCID = $element.data("model-cid"); 4 if (elementorFrontend.isEditMode() && modelCID) { 5 var settings = elementorFrontend.config.elements.data[modelCID]; 6 var type = settings.attributes.widgetType || settings.attributes.elType; 7 var settingsKeys = elementorFrontend.config.elements.keys[type]; 8 if (!settingsKeys) { 9 settingsKeys = elementorFrontend.config.elements.keys[type] = []; 10 jQuery.each(settings.controls, function (name, control) { 11 if (control.frontend_available) { 12 settingsKeys.push(name); 13 } 14 }); 15 } 16 jQuery.each(settings.getActiveControls(), function (controlKey) { 17 if (-1 !== settingsKeys.indexOf(controlKey)) { 18 elementSettings[controlKey] = settings.attributes[controlKey]; 19 } 20 }); 21 } else { 22 elementSettings = $element.data("settings") || {}; 23 } 24 return elementSettings; 25} 26 27function dceObserveElement($target, $function_callback) { 28 if (!elementorFrontend.isEditMode()) { 29 return; 30 } 31 32 const config = { 33 attributes: true, 34 childList: false, 35 characterData: true, 36 }; 37 38 const MutationObserver = 39 window.MutationObserver || 40 window.WebKitMutationObserver || 41 window.MozMutationObserver; 42 const observer = new MutationObserver($function_callback); 43 44 observer.observe($target, config); 45} 46 47window.dynamicooo = {}; 48 49/** 50 * SPDX-SnippetBegin 51 * SPDX-FileCopyrightText: Elementor 52 * SPDX-License-Identifier: GPL-3.0-or-later 53 */ 54dynamicooo.getActiveBreakpointsMinPointAndPostfix = () => { 55 let breakpoints = elementorFrontend.config.responsive.activeBreakpoints; 56 let ret = {}; 57 for (let key in breakpoints) { 58 ret[key] = { 59 // Elementor widescreen value is actually the min breakpoint: 60 min_point: 61 elementorFrontend.breakpoints.getDeviceMinBreakpoint(key), 62 postfix: `_${key}`, 63 }; 64 } 65 ret.desktop = { 66 min_point: 67 elementorFrontend.breakpoints.getDeviceMinBreakpoint("desktop"), 68 postfix: "", 69 }; 70 return ret; 71}; 72/** 73 * SPDX-SnippetEnd 74 */ 75 76/** 77 * Create a Swiper settings breakpoints object 78 * 79 * swiperSettings: An object with with Swiper settings keys as keys, and as values 80 * an object contains: 81 * - elementor_key: The Elementor Settings Key from where the value of the 82 * Swiper Key should be fetched. 83 * - default_value 84 * 85 * 86 * Returns the breakpoints object as defined by Swiper, value are 87 * automatically fetched from the Elementor settings. 88 */ 89dynamicooo.makeSwiperBreakpoints = ( 90 swiperSettings, 91 elementorSettings, 92 prefix = "", 93) => { 94 const elementorBreakpoints = 95 dynamicooo.getActiveBreakpointsMinPointAndPostfix(); 96 const breakpoints = {}; 97 const lastBreakpointValues = {}; 98 99 Object.keys(elementorBreakpoints) 100 .reverse() 101 .forEach((breakpointName) => { 102 let min_point = elementorBreakpoints[breakpointName].min_point; 103 104 if (elementorBreakpoints[breakpointName].postfix === "_mobile") { 105 min_point = 0; 106 } 107 108 let breakpointSettings = {}; 109 110 for (let swiperSettingsKey in swiperSettings) { 111 const setting = swiperSettings[swiperSettingsKey]; 112 const defaultValue = setting.default_value; 113 const elementorKeyWithPostfix = 114 prefix + 115 setting.elementor_key + 116 elementorBreakpoints[breakpointName].postfix; 117 let value = elementorSettings[elementorKeyWithPostfix]; 118 119 // When 'spaceBetween' control is set as slider, the value is an object with 'size' and 'unit' keys 120 if ( 121 swiperSettingsKey === "spaceBetween" && 122 typeof value === "object" 123 ) { 124 value = value.size || defaultValue; 125 } 126 127 value = 128 value || 129 dceGetParentValue( 130 lastBreakpointValues[swiperSettingsKey], 131 ) || 132 defaultValue; 133 value = value === "auto" ? value : Number(value); 134 135 if (!lastBreakpointValues[swiperSettingsKey]) { 136 lastBreakpointValues[swiperSettingsKey] = []; 137 } 138 lastBreakpointValues[swiperSettingsKey].push(value); 139 140 // Ensure that `slidesPerGroup` is set to 1 if `slidesPerView` is 1 so that scrolling will not bypass any slides 141 // This forcing is not passed into lastBreakpointValues 142 if ( 143 swiperSettingsKey === "slidesPerGroup" && 144 breakpointSettings["slidesPerView"] === 1 145 ) { 146 value = 1; 147 } 148 149 breakpointSettings[swiperSettingsKey] = value; 150 } 151 152 breakpoints[min_point] = breakpointSettings; 153 }); 154 return breakpoints; 155}; 156 157function dceGetParentValue(lastBreakpointValue) { 158 const lastIndex = lastBreakpointValue 159 ? lastBreakpointValue.findLastIndex((el) => el !== 0) 160 : -1; 161 if (lastIndex !== -1) { 162 return lastBreakpointValue[lastIndex]; 163 } 164 return false;
165} 166 167window.initMap = () => { 168 const event = new Event("dce-google-maps-api-loaded"); 169 window.dispatchEvent(event); 170};
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.