PageSourceSearch

https://fizjohuta.pl/wp-content/plugins/jetsticky-for-elementor/assets/js/jet-sticky-frontend.js?ver=1.0.4

js fizjohuta.pl collected 2026-10-05 07:16:25 UTC 11,112 bytes, 389 lines download raw bytes

1( function( $, elementor ) {�
2�
3	'use strict';�
4�
5	var JetSticky = {�
6�
7		init: function() {�
8			elementor.hooks.addAction( 'frontend/element_ready/column', JetSticky.elementorColumn );�
9			elementor.hooks.addAction( 'frontend/element_ready/container', JetSticky.elementorColumn );�
10�
11			elementorFrontend.hooks.addAction( 'frontend/element_ready/section', JetSticky.setStickySection );�
12			elementorFrontend.hooks.addAction( 'frontend/element_ready/container', JetSticky.setStickySection );�
13�
14			$( JetSticky.stickySection );�
15		},�
16�
17		elementorColumn: function( $scope ) {�
18			var $target  = $scope,�
19				$window  = $( window ),�
20				columnId = $target.data( 'id' ),�
21				editMode = Boolean( elementor.isEditMode() ),�
22				settings = {},�
23				stickyInstance = null,�
24				stickyInstanceOptions = {�
25					topSpacing: 50,�
26					bottomSpacing: 50,�
27					containerSelector: '.elementor-section',�
28					innerWrapperSelector: '.elementor-widget-wrap',�
29				};�
30�
31			if ( ! editMode ) {�
32				settings = $target.data( 'jet-sticky-column-settings' );�
33�
34				if ( $target.hasClass( 'jet-sticky-column-sticky' ) ) {�
35�
36					if ( -1 !== settings['stickyOn'].indexOf( elementorFrontend.getCurrentDeviceMode() ) ) {�
37�
38						$target.each( function() {�
39�
40							var $this  = $( this ),�
41�
42							elementType = $this.data( 'element_type' );�
43�
44							if ( elementType !== 'container' ){�
45			�
46									stickyInstanceOptions.topSpacing = settings['topSpacing'];�
47									stickyInstanceOptions.bottomSpacing = settings['bottomSpacing'];�
48�
49									$target.data( 'stickyColumnInit', true );�
50									stickyInstance = new StickySidebar( $target[0], stickyInstanceOptions );�
51�
52									$window.on( 'resize.JetStickyColumnSticky orientationchange.JetStickyColumnSticky', JetStickyTools.debounce( 50, resizeDebounce ) );�
53							�
54							} else {�
55								$this.addClass( 'jet-sticky-container-sticky' );�
56								$this.css({ �
57									'top': settings['topSpacing'], �
58									'bottom': settings['bottomSpacing']�
59								});�
60							}�
61						});�
62					}�
63				}�
64�
65			} else {�
66				return false;�
67			}�
68�
69			function resizeDebounce() {�
70				var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),�
71					availableDevices  = settings['stickyOn'] || [],�
72					isInit            = $target.data( 'stickyColumnInit' );�
73�
74				if ( -1 !== availableDevices.indexOf( currentDeviceMode ) ) {�
75�
76					if ( ! isInit ) {�
77						$target.data( 'stickyColumnInit', true );�
78						stickyInstance = new StickySidebar( $target[0], stickyInstanceOptions );�
79						stickyInstance.updateSticky();�
80					}�
81				} else {�
82					$target.data( 'stickyColumnInit', false );�
83					stickyInstance.destroy();�
84				}�
85			}�
86�
87		},�
88�
89		columnEditorSettings: function( columnId ) {�
90			var editorElements = null,�
91				columnData     = {};�
92�
93			if ( ! window.elementor.hasOwnProperty( 'elements' ) ) {�
94				return false;�
95			}�
96�
97			editorElements = window.elementor.elements;�
98�
99			if ( ! editorElements.models ) {�
100				return false;�
101			}�
102�
103			$.each( editorElements.models, function( index, obj ) {�
104�
105				$.each( obj.attributes.elements.models, function( index, obj ) {�
106					if ( columnId == obj.id ) {�
107						columnData = obj.attributes.settings.attributes;�
108					}�
109				} );�
110�
111			} );�
112�
113			return {�
114				'sticky': columnData['jet_sticky_column_sticky_enable'] || false,�
115				'topSpacing': columnData['jet_sticky_column_sticky_top_spacing'] || 50,�
116				'bottomSpacing': columnData['jet_sticky_column_sticky_bottom_spacing'] || 50,�
117				'stickyOn': columnData['jet_sticky_column_sticky_enable_on'] || [ 'desktop', 'tablet', 'mobile']�
118			}�
119		},�
120�
121		getStickySectionsDesktop: [],�
122		getStickySectionsTablet:  [],�
123		getStickySectionsMobile:  [],�
124�
125		setStickySection: function( $scope ) {�
126			var setStickySection = {�
127�
128				target: $scope,�
129�
130				isEditMode: Boolean( elementorFrontend.isEditMode() ),�
131�
132				init: function() {�
133					if ( this.isEditMode ) {�
134						return;�
135					}�
136�
137					if (  'yes' === this.getSectionSetting( 'jet_sticky_section_sticky' ) ) {�
138						var availableDevices = this.getSectionSetting( 'jet_sticky_section_sticky_visibility' ) || [];�
139�
140						if ( ! availableDevices[0] ) {�
141							return;�
142						}�
143�
144						if ( -1 !== availableDevices.indexOf( 'desktop' ) ) {�
145							JetSticky.getStickySectionsDesktop.push( $scope );�
146						}�
147�
148						if ( -1 !== availableDevices.indexOf( 'tablet' ) ) {�
149							JetSticky.getStickySectionsTablet.push( $scope );�
150						}�
151�
152						if ( -1 !== availableDevices.indexOf( 'mobile' ) ) {�
153							JetSticky.getStickySectionsMobile.push( $scope );�
154						}�
155					}�
156				},�
157�
158				getSectionSetting: function( setting ){�
159					var settings = {},�
160						editMode = Boolean( elementorFrontend.isEditMode() );�
161�
162					if ( editMode ) {�
163						if ( ! elementorFrontend.hasOwnProperty( 'config' ) ) {�
164							return;�
165						}�
166�
167						if ( ! elementorFrontend.config.hasOwnProperty( 'elements' ) ) {�
168							return;�
169						}�
170�
171						if ( ! elementorFrontend.config.elements.hasOwnProperty( 'data' ) ) {�
172							return;�
173						}�
174�
175						var modelCID = this.target.data( 'model-cid' ),�
176							editorSectionData = elementorFrontend.config.elements.data[ modelCID ];�
177�
178						if ( ! editorSectionData ) {�
179							return;�
180						}�
181�
182						if ( ! editorSectionData.hasOwnProperty( 'attributes' ) ) {�
183							return;�
184						}�
185�
186						settings = editorSectionData.attributes || {};�
187					} else {�
188						settings = this.target.data( 'settings' ) || {};�
189					}�
190�
191					if ( ! settings[ setting ] ) {�
192						return;�
193					}�
194�
195					return settings[ setting ];�
196				}�
197			};�
198�
199			setStickySection.init();�
200		},�
201�
202		stickySection: function() {�
203			var stickySection = {�
204�
205				isEditMode: Boolean( elementorFrontend.isEditMode() ),�
206�
207				correctionSelector: $( '#wpadminbar' ),�
208�
209				initDesktop: false,�
210				initTablet:  false,�
211				initMobile:  false,�
212�
213				init: function() {�
214�
215					var _this = this;�
216�
217					if ( this.isEditMode ) {�
218						return;�
219					}�
220�
221					$( document ).ready( function(){�
222						_this.run();�
223					} );�
224�
225					$( window ).on( 'resize.JetStickySection orientationchange.JetStickySection', this.run.bind( this ) );�
226				},�
227�
228				getOffset: function(){�
229					var offset = 0;�
230�
231					if ( this.correctionSelector[0] && 'fixed' === this.correctionSelector.css( 'position' ) ) {�
232						offset = this.correctionSelector.outerHeight( true );�
233					}�
234�
235					return offset;�
236				},�
237�
238				run: function() {�
239					var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),�
240						transitionIn  = 'jet-sticky-transition-in',�
241						transitionOut = 'jet-sticky-transition-out',�
242						options = {�
243							stickyClass: 'jet-sticky-section-sticky--stuck',�
244							topSpacing: this.getOffset()�
245						};�
246�
247					function initSticky ( section, options ) {�
248						section.jetStickySection( options )�
249							.on( 'jetStickySection:stick', function( event ) {�
250								$( event.target ).addClass( transitionIn );�
251								setTimeout( function() {�
252									$( event.target ).removeClass( transitionIn );�
253								}, 3000 );�
254							} )�
255							.on( 'jetStickySection:unstick', function( event ) {�
256								$( event.target ).addClass( transitionOut );�
257								setTimeout( function() {�
258									$( event.target ).removeClass( transitionOut );�
259								}, 3000 );�
260							} );�
261						section.trigger( 'jetStickySection:activated' );�
262					}�
263�
264					if ( 'desktop' === currentDeviceMode && ! this.initDesktop ) {�
265						if ( this.initTablet ) {�
266							JetSticky.getStickySectionsTablet.forEach( function( section, i ) {�
267								section.trigger( 'jetStickySection:detach' );�
268							});�
269�
270							this.initTablet = false;�
271						}�
272�
273						if ( this.initMobile ) {�
274							JetSticky.getStickySectionsMobile.forEach( function( section, i ) {�
275								section.trigger( 'jetStickySection:detach' );�
276							});�
277�
278							this.initMobile = false;�
279						}�
280�
281						if ( JetSticky.getStickySectionsDesktop[0] ) {�
282							JetSticky.getStickySectionsDesktop.forEach( function( section, i ) {�
283�
284								if ( JetSticky.getStickySectionsDesktop[i+1] ) {�
285									options.stopper = JetSticky.getStickySectionsDesktop[i+1];�
286								} else {�
287									options.stopper = '';�
288								}�
289�
290								initSticky( section, options );�
291							});�
292�
293							this.initDesktop = true;�
294						}�
295					}�
296�
297					if ( 'tablet' === currentDeviceMode && ! this.initTablet ) {�
298						if ( this.initDesktop ) {�
299							JetSticky.getStickySectionsDesktop.forEach( function( section, i ) {�
300								section.trigger( 'jetStickySection:detach' );�
301							});�
302�
303							this.initDesktop = false;�
304						}�
305�
306						if ( this.initMobile ) {�
307							JetSticky.getStickySectionsMobile.forEach( function( section, i ) {�
308								section.trigger( 'jetStickySection:detach' );�
309							});�
310�
311							this.initMobile = false;�
312						}�
313�
314						if ( JetSticky.getStickySectionsTablet[0] ) {�
315							JetSticky.getStickySectionsTablet.forEach( function( section, i ) {�
316								if ( JetSticky.getStickySectionsTablet[i+1] ) {�
317									options.stopper = JetSticky.getStickySectionsTablet[i+1];�
318								} else {�
319									options.stopper = '';�
320								}�
321�
322								initSticky( section, options );�
323							});�
324�
325							this.initTablet = true;�
326						}�
327					}�
328�
329					if ( 'mobile' === currentDeviceMode && ! this.initMobile ) {�
330						if ( this.initDesktop ) {�
331							JetSticky.getStickySectionsDesktop.forEach( function( section, i ) {�
332								section.trigger( 'jetStickySection:detach' );�
333							});�
334�
335							this.initDesktop = false;�
336						}�
337�
338						if ( this.initTablet ) {�
339							JetSticky.getStickySectionsTablet.forEach( function( section, i ) {�
340								section.trigger( 'jetStickySection:detach' );�
341							});�
342�
343							this.initTablet = false;�
344						}�
345�
346						if ( JetSticky.getStickySectionsMobile[0] ) {�
347							JetSticky.getStickySectionsMobile.forEach( function( section, i ) {�
348�
349								if ( JetSticky.getStickySectionsMobile[i+1] ) {�
350									options.stopper = JetSticky.getStickySectionsMobile[i+1];�
351								} else {�
352									options.stopper = '';�
353								}�
354�
355								initSticky( section, options );�
356							});�
357�
358							this.initMobile = true;�
359						}�
360					}�
361				}�
362			};�
363�
364			stickySection.init();�
365		}�
366	};�
367�
368	$( window ).on( 'elementor/frontend/init', JetSticky.init );�
369�
370	var JetStickyTools = {�
371		debounce: function( threshold, callback ) {�
372			var timeout;�
373�
374			return function debounced( $event ) {�
375				function delayed() {�
376					callback.call( this, $event );�
377					timeout = null;�
378				}�
379�
380				if ( timeout ) {�
381					clearTimeout( timeout );�
382				}�
383�
384				timeout = setTimeout( delayed, threshold );�
385			};�
386		}�
387	}�
388�
389}( jQuery, window.elementorFrontend ) );�

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.