PageSourceSearch

https://bounceforward.com/wp-content/plugins/dynamic-content-for-elementor/assets/js/settings.js?ver=3.3.22

js bounceforward.com collected 2026-10-02 19:34:26 UTC 4,664 bytes, 170 lines download raw bytes

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.