PageSourceSearch

http://www.thegoldbankhotel.com/wp-content/themes/clear-child/js/p…/assets/js/jquery.smoove.js

js thegoldbankhotel.com collected 2026-10-08 20:33:04 UTC 8,868 bytes, 291 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.stop().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).stop().css('opacity', 1).css(crossBrowser('transform', 'translate(0px, 0px) scale(1, 1)'));
111						    /*$item.addClass('smooved');
112							$item.parent().addClass('smooved');*/
113							$item.removeClass('first_smooved');
114						    next(); 
115						});
116					}
117					else
118					{
119						$item.stop().delay(1000).queue(function (next) { 
120							window.scrollTo(window.scrollX, window.scrollY+1);
121						});
122						
123						$item.removeClass('first_smooved');
124					}
125				}
126	      }
127	    }
128    }
129  }
130
131  function throttle(fn, threshhold, scope) {
132    threshhold = threshhold || 250;
133    var last, deferTimer;
134    return function() {
135      var context = scope || this,
136        now = +new Date(),
137        args = arguments;
138      if (last && now < last + threshhold) {
139        // hold on to it
140        clearTimeout(deferTimer);
141        deferTimer = setTimeout(function() {
142          last = now;
143          fn.apply(context, args);
144        }, threshhold);
145      } else {
146        last = now;
147        fn.apply(context, args);
148      }
149    };
150  }
151
152  $.fn.smoove = function(options) {
153    $.fn.smoove.init(this, $.extend({}, $.fn.smoove.defaults, options));
154    return this;
155  };
156
157  $.fn.smoove.items = [];
158  $.fn.smoove.loaded = false;
159
160  $.fn.smoove.defaults = {
161    offset: '50%',
162    opacity: 0,
163    delay: '0ms',
164    duration: '500ms',
165    transition: "",
166    transformStyle: 'preserve-3d',
167    transformOrigin: false,
168    perspective: 1000,
169    min_width: 768,
170    min_height: false
171  };
172
173  $.fn.smoove.init = function(items, settings) {
174	  
175    items.each(function() {
176      var $item = $(this),
177        params = $item.params = $.extend({}, settings, $item.data());
178
179      $item.data('top', $item.offset().top);
180
181      params.transition = crossBrowser('transition', params.transition, 'transform');
182      $item.css(params.transition);
183
184      $.fn.smoove.items.push($item);
185    });
186
187    // add event handlers
188    if (!$.fn.smoove.loaded) {
189      $.fn.smoove.loaded = true;
190
191      var oldScroll = 0,
192        oldHeight = $(window).height(),
193        oldWidth = $(window).width(),
194        oldDocHeight = $(document).height(),
195        resizing;
196
197      // naughty way of avoiding vertical scrollbars when items slide in/out from the side
198      if ($('body').width() === $(window).width()) {
199        $('body').addClass('smoove-overflow');
200      }
201
202      /*$(window).on("orientationchange resize", function() {
203        clearTimeout(resizing);
204        resizing = setTimeout(function() {
205          var height = $(window).height(),
206            width = $(window).width(),
207            direction = (oldHeight > height) ? direction = 'up' : 'down',
208            items = $.fn.smoove.items;
209
210          oldHeight = height;
211
212          // responsive support - reassign position values on resize
213          if (oldWidth !== width) {
214            for (var i = 0; i < items.length; i++) {
215              items[i].css(crossBrowser('transform', '')).css(crossBrowser('transition', ''));
216            }
217
218            // wait for responsive magic to finish
219            var stillResizing = setInterval(function() {
220              var docHeight = $(document).height();
221              if (docHeight === oldDocHeight) {
222                window.clearInterval(stillResizing);
223                for (var i = 0; i < items.length; i++) {
224                  items[i].data('top', items[i].offset().top);
225                  items[i].css(items[i].params.transition);
226                }
227                smooveIt(direction);
228              }
229              oldDocHeight = docHeight;
230            }, 500);
231          } else {
232            //smooveIt(direction);
233          }
234          oldWidth = width;
235        }, 500);
236      });*/
237      
238      //Add iframe handler for Elementor editor
239      if($('body').hasClass('elementor-editor-active'))
240      {
241	      $('iframe#elementor-preview-iframe').ready(function(){
242	          smooveIt('first');
243
244	        // throttle scroll handler
245	        $(window).on('scroll', throttle(function() {
246	          var scrolltop = $(window).scrollTop(),
247	            direction = (scrolltop < oldScroll) ? direction = 'up' : 'down';
248	          oldScroll = scrolltop;
249	          smooveIt(direction);
250	        }, 250));
251	        
252	        window.scrollTo(window.scrollX, window.scrollY+1);
253	      });
254	   }
255	   else
256	   {
257		   $(window).on('load', function() {
258	        smooveIt('first');
259			
260	        // throttle scroll handler
261	        $(window).on('scroll', throttle(function() {
262	          var scrolltop = $(window).scrollTop(),
263	            direction = (scrolltop < oldScroll) ? direction = 'up' : 'down';
264	          oldScroll = scrolltop;
265	          smooveIt(direction);
266	          
267	        }, 250));
268	        
269	        if(jQuery(window).height() >= jQuery(document).height())
270	        {
271		        smooveIt('down');
272	        }
273	        
274	        //Firefox hack for firing first event
275	        var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
276	        if (isFirefox) {
277	        	window.scrollTo(window.scrollX, window.scrollY+1);
278	        }
279	        
280	        //Touch devices hack for firing first event
281	        var isTouch = ('ontouchstart' in document.documentElement);
282	        if ( isTouch ) {
283		        window.scrollTo(window.scrollX, window.scrollY+1);
284		    }
285	        
286	      });
287	   }
288    }
289  };
290
291}(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.