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 // offset in % 45 if (typeof offset === 'string' && offset.indexOf('%')) { 46 //console.log(offset); 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)')).css('transform', ''); 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)')).css('transform', ''); 111 $item.addClass('smooved'); 112 $item.parent().addClass('smooved'); 113 $item.removeClass('first_smooved'); 114 next(); 115 }); 116 } 117 else 118 { 119 $item.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 jQuery(document).ready(function(){ 258 smooveIt('down'); 259 260 // throttle scroll handler 261 $(window).on('scroll', throttle(function() { 262 //console.log('scroll'); 263 var scrolltop = $(window).scrollTop(), 264 direction = (scrolltop < oldScroll) ? direction = 'up' : 'down'; 265 oldScroll = scrolltop; 266 smooveIt(direction); 267 268 }, 250)); 269 270 if(jQuery(window).height() >= jQuery(document).height()) 271 { 272 smooveIt('down'); 273 } 274 275 //Firefox hack for firing first event 276 var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; 277 if (isFirefox) { 278 window.scrollTo(window.scrollX, window.scrollY+1); 279 } 280 281 //Touch devices hack for firing first event 282 var isTouch = ('ontouchstart' in document.documentElement); 283 if ( isTouch ) { 284 window.scrollTo(window.scrollX, window.scrollY+1); 285 } 286 287 }); 288 } 289 } 290 }; 291 292}(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.