PageSourceSearch

https://www.maximedangeac.com/wp-content/plugins/architecturer-elementor/assets/js/jquery.smoove.js?ver=7.1.2

js maximedangeac.com collected 2026-10-05 04:00:51 UTC 8,776 bytes, 290 lines download raw bytes

1/*!
2* jQuery Smoove v0.2.11 (http://smoove.js.org/)
3* Copyright (c) 2017 Adam Bouqdib
4* Licensed under GPL-2.0 (http://abemedia.co.uk/license) 
5*/
6
7(function($, window, document) {
8
9  // function for adding vendor prefixes
10  function crossBrowser(property, value, prefix) {
11
12    function ucase(string) {
13      return string.charAt(0).toUpperCase() + string.slice(1);
14    }
15
16    var vendor = ['webkit', 'moz', 'ms', 'o'],
17      properties = {};
18
19    for (var i = 0; i < vendor.length; i++) {
20      if (prefix) {
21        value = value.replace(prefix, '-' + vendor[i] + '-' + prefix);
22      }
23      properties[ucase(vendor[i]) + ucase(property)] = value;
24    }
25    properties[property] = value;
26
27    return properties;
28  }
29
30  function smooveIt(direction) {
31    var height = $(window).height(),
32      width = $(window).width();
33
34    for (var i = 0; i < $.fn.smoove.items.length; i++) {
35      var $item = $.fn.smoove.items[i],
36        params = $item.params;
37		
38		if(!$item.hasClass('smooved'))
39		{	
40	      // if direction isn't set, set offset to 0 to avoid hiding objects that are above the fold
41	      var offset = (!direction || direction === 'down' && $item.css('opacity') === '1') ? 0 : params.offset,
42	        itemtop = $(window).scrollTop() + height - $item.offset().top;
43
44	
45	      // offset in %
46	      if (typeof offset === 'string' && offset.indexOf('%')) {
47	        offset = parseInt(offset) / 100 * height;
48	        //console.log('offset '+offset+' | itemTop '+itemtop);
49	      }
50	      
51	      if (itemtop < offset || direction == 'first') {
52		      
53			  if (!isNaN(params.opacity)) {
54			    $item.css({
55			      opacity: params.opacity
56			    });
57			  }
58	
59	        var transforms = [],
60	          properties = ['move', 'move3D', 'moveX', 'moveY', 'moveZ', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', 'scaleX', 'scaleY', 'skew', 'skewX', 'skewY'];
61	
62	        for (var p = 0; p < properties.length; p++) {
63	          if (typeof params[properties[p]] !== "undefined") {
64	            transforms[properties[p]] = params[properties[p]];
65	          }
66	        }
67			
68	        var transform = '';
69	        for (var t in transforms) {
70	          transform += t.replace('move', 'translate') + '(' + transforms[t] + ') ';
71	        }
72	        
73	        if (transform) {
74	          $item.css(crossBrowser('transform', transform));
75	          $item.parent().css(crossBrowser('perspective', params.perspective));
76	          //$item.parent().css(crossBrowser('transformStyle', params.transformstyle));
77	
78	          if (params.transformOrigin) {
79	            $item.css(crossBrowser('transformOrigin', params.transformOrigin));
80	          }
81	        }
82	        
83	        if(typeof params.delay !== "undefined" && params.delay > 0)
84	        {
85		        $item.css('transition-delay', parseInt(params.delay)+'ms');
86	        }
87	        
88	        $item.addClass('first_smooved');
89	        
90	        /*if($item.hasClass('elementor-widget-image'))
91	        {
92		        console.log(itemtop + '<' + offset);
93	        }*/
94	        
95	      } else {
96		      	if(!$item.hasClass('first_smooved') === true)
97			  	{
98			      	$item.css('opacity', 1).css(crossBrowser('transform', 'translate(0px, 0px) scale(1, 1)'));
99				  	$item.addClass('smooved');
100				  	$item.parent().addClass('smooved');
101				}
102				else
103				{
104					jQuery('body').addClass('has-smoove');
105					
106					if(itemtop < offset || jQuery(window).height() >= jQuery(document).height())
107					//if(itemtop < offset)
108					{
109						$item.queue(function (next) { 
110						    jQuery(this).css('opacity', 1).css(crossBrowser('transform', 'translate(0px, 0px) scale(1, 1)'));
111						    
112							$item.removeClass('first_smooved');
113						    next(); 
114						});
115					}
116					else
117					{
118						$item.delay(1000).queue(function (next) { 
119							window.scrollTo(window.scrollX, window.scrollY+1);
120						});
121						
122						$item.removeClass('first_smooved');
123					}
124				}
125	      }
126	    }
127    }
128  }
129
130  function throttle(fn, threshhold, scope) {
131    threshhold = threshhold || 250;
132    var last, deferTimer;
133    return function() {
134      var context = scope || this,
135        now = +new Date(),
136        args = arguments;
137      if (last && now < last + threshhold) {
138        // hold on to it
139        clearTimeout(deferTimer);
140        deferTimer = setTimeout(function() {
141          last = now;
142          fn.apply(context, args);
143        }, threshhold);
144      } else {
145        last = now;
146        fn.apply(context, args);
147      }
148    };
149  }
150
151  $.fn.smoove = function(options) {
152    $.fn.smoove.init(this, $.extend({}, $.fn.smoove.defaults, options));
153    return this;
154  };
155
156  $.fn.smoove.items = [];
157  $.fn.smoove.loaded = false;
158
159  $.fn.smoove.defaults = {
160    offset: '50%',
161    opacity: 0,
162    delay: '0ms',
163    duration: '500ms',
164    transition: "",
165    transformStyle: 'preserve-3d',
166    transformOrigin: false,
167    perspective: 1000,
168    min_width: 768,
169    min_height: false
170  };
171
172  $.fn.smoove.init = function(items, settings) {
173	  
174    items.each(function() {
175      var $item = $(this),
176        params = $item.params = $.extend({}, settings, $item.data());
177
178      $item.data('top', $item.offset().top);
179
180      params.transition = crossBrowser('transition', params.transition, 'transform');
181      $item.css(params.transition);
182
183      $.fn.smoove.items.push($item);
184    });
185
186    // add event handlers
187    if (!$.fn.smoove.loaded) {
188      $.fn.smoove.loaded = true;
189
190      var oldScroll = 0,
191        oldHeight = $(window).height(),
192        oldWidth = $(window).width(),
193        oldDocHeight = $(document).height(),
194        resizing;
195
196      // naughty way of avoiding vertical scrollbars when items slide in/out from the side
197      if ($('body').width() === $(window).width()) {
198        $('body').addClass('smoove-overflow');
199      }
200
201      /*$(window).on("orientationchange resize", function() {
202        clearTimeout(resizing);
203        resizing = setTimeout(function() {
204          var height = $(window).height(),
205            width = $(window).width(),
206            direction = (oldHeight > height) ? direction = 'up' : 'down',
207            items = $.fn.smoove.items;
208
209          oldHeight = height;
210
211          // responsive support - reassign position values on resize
212          if (oldWidth !== width) {
213            for (var i = 0; i < items.length; i++) {
214              items[i].css(crossBrowser('transform', '')).css(crossBrowser('transition', ''));
215            }
216
217            // wait for responsive magic to finish
218            var stillResizing = setInterval(function() {
219              var docHeight = $(document).height();
220              if (docHeight === oldDocHeight) {
221                window.clearInterval(stillResizing);
222                for (var i = 0; i < items.length; i++) {
223                  items[i].data('top', items[i].offset().top);
224                  items[i].css(items[i].params.transition);
225                }
226                smooveIt(direction);
227              }
228              oldDocHeight = docHeight;
229            }, 500);
230          } else {
231            //smooveIt(direction);
232          }
233          oldWidth = width;
234        }, 500);
235      });*/
236      
237      //Add iframe handler for Elementor editor
238      if($('body').hasClass('elementor-editor-active'))
239      {
240	      $('iframe#elementor-preview-iframe').ready(function(){
241	          smooveIt('first');
242
243	        // throttle scroll handler
244	        $(window).on('scroll', throttle(function() {
245	          var scrolltop = $(window).scrollTop(),
246	            direction = (scrolltop < oldScroll) ? direction = 'up' : 'down';
247	          oldScroll = scrolltop;
248	          smooveIt(direction);
249	        }, 250));
250	        
251	        window.scrollTo(window.scrollX, window.scrollY+1);
252	      });
253	   }
254	   else
255	   {
256		   jQuery(document).ready(function(){ 
257	        smooveIt('first');
258			
259	        // throttle scroll handler
260	        $(window).on('scroll', throttle(function() {
261	          var scrolltop = $(window).scrollTop(),
262	            direction = (scrolltop < oldScroll) ? direction = 'up' : 'down';
263	          oldScroll = scrolltop;
264	          smooveIt(direction);
265	          
266	        }, 250));
267	        
268	        if(jQuery(window).height() >= jQuery(document).height())
269	        {
270		        smooveIt('down');
271	        }
272	        
273	        //Firefox hack for firing first event
274	        var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
275	        if (isFirefox) {
276	        	window.scrollTo(window.scrollX, window.scrollY+1);
277	        }
278	        
279	        //Touch devices hack for firing first event
280	        var isTouch = ('ontouchstart' in document.documentElement);
281	        if ( isTouch ) {
282		        window.scrollTo(window.scrollX, window.scrollY+1);
283		    }
284	        
285	      });
286	   }
287    }
288  };
289
290}(jQuery, window, document));

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.