1(function($) { 2 'use strict'; 3 if(typeof ScrollMagic == 'undefined' || typeof BB_SCENES == 'undefined') { 4 return; 5 } 6 7 $.each(BB_SCENES, function (index, scene) { 8 // Continue 9 if (typeof scene.misc.disableMobile == 'undefined' && typeof scene.misc.disableMobile == 'disableDesktop') { 10 return true; 11 } 12 if ( scene.misc.disableMobile == 'on' && BB_DEVICE == 'mobile' ) { 13 delete BB_SCENES[index]; 14 } 15 if (scene.misc.disableDesktop == 'on' && BB_DEVICE == 'desktop') { 16 delete BB_SCENES[index]; 17 } 18 }); 19 20 // Preload images - v2.7.1 21 $.fn.preload = function() { 22 this.each(function(){ 23 $('<img/>')[0].src = this; 24 }); 25 }; 26 27 var bbsmController = new ScrollMagic.Controller(); 28 var bbsmController_h = new ScrollMagic.Controller( {vertical: false} ); 29 30 $('document').ready(function() { 31 32 $('body').prepend('<span id="bbsm-trigger-top-document" class="bb-scrollmagic-trigger"></span>'); 33 34 $.each(BB_SCENES, function(key, value) { 35 var counter = 1; 36 var settings = value.settings; 37 var init = value['init']; 38 var tween = value['tween']; 39 var misc = value['misc']; 40 var bezier = value['bezier']; 41 var controller; 42 if(typeof settings.general.vertical != undefined && settings.general.vertical == 'off') { 43 if(typeof misc.container != 'undefined' && misc.container != '' && $(misc.container).length > 0) { 44 controller = new ScrollMagic.Controller( { container: misc.container , vertical: false} ); 45 } else { 46 controller = bbsmController_h; 47 } 48 } else { 49 if(typeof misc.container != 'undefined' && misc.container != '' && $(misc.container).length > 0) { 50 controller = new ScrollMagic.Controller( {container: misc.container} ); 51 } else { 52 controller = bbsmController; 53 } 54 } 55 56 if (typeof misc.selector !== 'undefined' && misc.selector != '' && $(misc.selector).length > 0) { 57 $('body ' + misc.selector).each(function() { 58 var $self = $(this); 59 var trigger = ''; 60 if(typeof settings.general.triggerElement != undefined) { 61 trigger = settings.general.triggerElement; 62 } 63 if(trigger == 'top-document') { 64 trigger = 'bbsm-trigger-top-document'; 65 } else { 66 trigger = 'bbsm-trigger-selector-'+key+'-'+(counter++); 67 $self.before('<span id="'+trigger+'" class="bb-scrollmagic-trigger"></span>'); 68 } 69 70 bbsm_scrollmagic($self, settings, init, tween, misc, bezier, trigger, controller); 71 }); 72 } 73 74 $('body .' + key).each(function() { 75 76 var $self = $(this); 77 var trigger = ''; 78 if(typeof settings.general.triggerElement != undefined) { 79 trigger = settings.general.triggerElement; 80 } 81 if(trigger == 'top-document') { 82 trigger = 'bbsm-trigger-top-document'; 83 } else { 84 trigger = 'bbsm-trigger-'+key+'-'+(counter++); 85 $self.before('<span id="'+trigger+'" class="bb-scrollmagic-trigger"></span>'); 86 } 87 88 bbsm_scrollmagic($self, settings, init, tween, misc, bezier, trigger, controller); 89 }); 90 }); 91 92 93 $('[data-scrollmagic="true"]').each(function() { 94 var $self = $(this); 95 var settings = ($self.data('bbsm-settings')); 96 var init = ($self.data('bbsm-init')); 97 var tween = ($self.data('bbsm-tween')); 98 var misc = ($self.data('bbsm-misc')); 99 var bezier = ($self.data('bbsm-bezier')); 100 var trigger = ($self.data('bbsm-trigger')); 101 102 bbsm_scrollmagic($self, settings, init, tween, misc, bezier, trigger); 103 }); 104 105 // Dots Navigation 106 // Cache selectors 107 var lastId, 108 topMenu = $("#top-menu"), 109 topMenuHeight = 0,//topMenu.outerHeight() + 15, 110 // All list items 111 menuItems = $(".wpsm-dots-navigation a"), 112 // Anchors corresponding to menu items 113 scrollItems = menuItems.map(function () { 114 var item = $($(this).attr("href")); 115 if (item.length) { 116 return item; 117 } 118 }); 119 120 // Bind click handler to menu items 121 // so we can get a fancy scroll animation 122 menuItems.click(function (e) { 123 var href = $(this).attr("href"), 124 offsetTop = href === "#" ? 0 : $(href).offset().top - topMenuHeight; 125 $('html, body').stop().animate({ 126 scrollTop: offsetTop 127 }, 300); 128 if(window.history && window.history.pushState) { 129 history.pushState("", document.title, $(this).attr("href")); 130 } 131 e.preventDefault(); 132 }); 133 134 // Bind to scroll 135 $(window).scroll(function () { 136 // Get container scroll position 137 var fromTop = $(this).scrollTop() + topMenuHeight; 138 // Get id of current scroll item 139 var cur = scrollItems.map(function () { 140 if ($(this).offset().top < (fromTop + 5)) 141 return this; 142 }); 143 // Get the id of the current element 144 cur = cur[cur.length - 1]; 145 var id = cur && cur.length ? cur[0].id : ""; 146 147 menuItems.filter("[href='#" + id + "']").addClass("active") 148 149 if (lastId !== id) { 150 lastId = id; 151 // Set/remove active class 152 menuItems 153 .removeClass("active") 154 .end().filter("[href='#" + id + "']").addClass("active"); 155 } 156 }); 157 158 });
159 160 function bbsm_scrollmagic($self, settings, init, tween, misc, bezier, trigger, controller){ 161 gsap.set($self, init); 162 163 if (typeof init.blur !== 'undefined' && init.blur != '') { 164 gsap.to($self, 0, {webkitFilter:"blur(" + init.blur + "px)",filter:"blur(" + init.blur+ "px)"}, 0); 165 } 166 var reverse = true; 167 if (typeof settings.general.reverse !== 'undefined') { 168 reverse = eval(settings.general.reverse); 169 } 170 171 var duration = settings.general.duration; 172 if( duration != '' ){ 173 if (duration.indexOf('vh')!=-1){ 174 duration = duration.replace('vh', ''); 175 duration = window.innerHeight/100 * duration; 176 } 177 } 178 tween['duration'] = settings.ease.duration; 179 var tl = gsap.timeline(); 180 tl.to($self, tween); 181 var scene = new ScrollMagic.Scene({ 182 triggerElement: '#' + trigger, 183 duration: duration, 184 offset: settings.general.offset, 185 triggerHook: settings.general.triggerHook, 186 reverse: reverse, 187 tweenChanges: true 188 }).setTween( tl); 189 190 if (typeof bezier != undefined && bezier.length > 0) { 191 var bezierEffect = gsap.timeline(); 192 bezierEffect.to($self,{ 193 duration: settings.ease.duration, 194 ease: eval(settings.ease.ease), 195 motionPath: { 196 path: bezier, 197 curviness: 1.25, 198 autoRotate: true 199 } 200 }); 201 202 scene.setTween(bezierEffect); 203 } 204 205 if (typeof settings.general.pin !== 'undefined' && settings.general.pin == 'on') { 206 var pushFollowers = true; 207 if (typeof settings.general.pushFollowers !== 'undefined') { 208 pushFollowers = eval(settings.general.pushFollowers); 209 } 210 scene.setPin($self[0], {pushFollowers: pushFollowers}); 211 } 212 213 if (typeof settings.class.classToggleEnable !== 'undefined' && settings.class.classToggleEnable == 'on') { 214 $self.addClass('animated'); 215 if (typeof settings.class.customClassCSS !== 'undefined' && settings.class.classCSS == 'custom') { 216 scene.setClassToggle($self[0], settings.class.customClassCSS); 217 } else { 218 scene.setClassToggle($self[0], settings.class.classCSS); 219 } 220 } 221 222 // on click in version 4.0.5 223 if (typeof misc.clickTo !== 'undefined' && misc.clickTo != '') { 224 scene.on("enter", function (event) { 225 $(misc.clickTo).trigger('click'); 226 }); 227 } 228 229 scene.addTo(controller); 230 $(window).load(function() { 231 if ($self.find('path').length > 0 && typeof misc !== 'undefined' && typeof misc.drawSVG !== 'undefined' && misc.drawSVG == 'on') { 232 var lineLength = $self.find('path')[0].getTotalLength(); 233 $self.find('path').css("stroke-dasharray", lineLength+' '+lineLength); 234 $self.find('path').css("stroke-dashoffset", lineLength); 235 if ( misc.unableFill == 'on') { 236 $self.find('path').css("fill","none"); 237 } 238 239 $self.find('path').css("stroke", misc.stroke); 240 if( misc.stroke!="" ){ 241 $self.find('path').css("stroke", misc.stroke); 242 } 243 if( misc.strokeWidth!="" ){ 244 $self.find('path').css("stroke-width", misc.strokeWidth); 245 } 246 247 var tween_svg = gsap.timeline(); 248 tween_svg.to($self.find('path'), { 249 duration:settings.ease.duration, 250 strokeDashoffset: 0, 251 ease: Linear.easeNone 252 }); 253 var scene_svg = new ScrollMagic.Scene({ 254 triggerElement: '#' + trigger, 255 triggerHook: settings.general.triggerHook, 256 duration: settings.general.duration, 257 offset: settings.general.offset, 258 reverse: reverse, 259 tweenChanges: true 260 }).setTween(tween_svg); 261 scene_svg.addTo(controller); 262 } 263 }); 264 if (typeof misc !== 'undefined' && (typeof misc.imageSequence == 'undefined' || misc.imageSequence == 'on')) {
265 if ($self.find('.bbsm-imagesequence').length > 0) { 266 var repeat, images, obj; 267 if(typeof misc.imageSequenceRepeat == 'undefined') { 268 repeat = 0; 269 } else { 270 repeat = misc.imageSequenceRepeat; 271 } 272 images = $self.find('.bbsm-imagesequence').data('bbsm-imagesequence'); 273 $(images).preload(); 274 obj = { 275 curImg: 0 276 }; 277 // create tween 278 var tween_imagesequence = gsap.timeline(); 279 tween_imagesequence.to(obj, { 280 duration: 0.5, 281 curImg: images.length - 1, 282 roundProps: "curImg", 283 repeat: repeat, 284 immediateRender: true, // load first image automatically 285 ease: Linear.easeNone, // show every image the same ammount of time 286 onUpdate: function() { 287 $self.find('.bbsm-imagesequence img').attr("src", images[obj.curImg]); // set the image source 288 $self.find('.bbsm-imagesequence img').attr("srcset", images[obj.curImg]); // set the image source 289 $self.find('.bbsm-imagesequence source').attr("srcset", images[obj.curImg]); // set the image source 290 } 291 }); 292 293 var duration = settings.general.duration; 294 if( duration != '' ){ 295 if (duration.indexOf('vh')!=-1){ 296 duration = duration.replace('vh', ''); 297 duration = window.innerHeight/100 * duration; 298 } 299 } 300 301 var scene_imagesequence = new ScrollMagic.Scene({ 302 triggerElement: '#' + trigger, 303 triggerHook: settings.general.triggerHook, 304 duration: duration, 305 offset: settings.general.offset, 306 reverse: reverse, 307 tweenChanges: true 308 }).setTween(tween_imagesequence); 309 scene_imagesequence.addTo(controller); 310 311 } 312 } 313 if (typeof misc !== 'undefined' && misc.scrollToPlay == 'on') { 314 if ($self.find('video').length > 0) { 315 var myVideo = $self.find('video')[0]; 316 var autoPlay = new ScrollMagic.Scene({ 317 triggerElement: '#' + trigger, 318 triggerHook: settings.general.triggerHook, 319 duration: duration, 320 offset: settings.general.offset, 321 reverse: reverse, 322 tweenChanges: true 323 }).on("start", function (event) { 324 if (myVideo.paused){ 325 myVideo.play(); 326 } 327 else { 328 myVideo.pause(); 329 } 330 }); 331 autoPlay.addTo(controller); 332 }else if ($self.find('audio').length > 0) { 333 var myAudio = $self.find('audio')[0]; 334 var autoPlay = new ScrollMagic.Scene({ 335 triggerElement: '#' + trigger, 336 triggerHook: settings.general.triggerHook, 337 duration: duration, 338 offset: settings.general.offset, 339 reverse: reverse, 340 tweenChanges: true 341 }).on("start", function (event) { 342 if (myAudio.paused){ 343 myAudio.play(); 344 } 345 else { 346 myAudio.pause(); 347 } 348 }); 349 autoPlay.addTo(controller); 350 } 351 } 352 if (typeof misc !== 'undefined' && misc.timeLapse == 'on') { 353 $( window ).load(function() { 354 355 var myVideo = $self.find('video')[0]; 356 var timeLapse = new ScrollMagic.Scene({ 357 triggerElement: '#' + trigger, 358 triggerHook: settings.general.triggerHook, 359 duration: duration, 360 offset: settings.general.offset, 361 reverse: reverse, 362 tweenChanges: true 363 }) 364 var scrollVideo = {a:0}; 365 setTimeout(()=>{ 366 timeLapse.setTween( gsap.to(scrollVideo, {a: myVideo.duration *1, onUpdate:()=>
366{ myVideo.currentTime = scrollVideo.a*1 } })); 367 timeLapse.addTo(controller); 368 }, 400); 369 370 }); 371 } 372 if (typeof misc !== 'undefined' && misc.textDance == 'on') { 373 if ($self.find('p').length < 1 ) { 374 return; 375 } 376 var mySplitText = new SplitText($self.find('p'), {type:"words,chars"}); 377 var chars = mySplitText.chars; 378 var tl = gsap.timeline(); 379 gsap.to($self.find('p'), {perspective: 400}); 380 var style = misc.textDanceStyle; 381 var stagger = misc.textDanceSpeed || 0.01; 382 switch (style) { 383 case 'wave_from': 384 tl.from(chars, {duration: 1, opacity:0, scale:0, y:80, rotationX:180, transformOrigin:"0% 50% -50", ease:"back", stagger:stagger}, "+=0"); 385 break; 386 case 'wave_to': 387 tl.to(chars, {duration: 1, opacity:0, scale:0, y:80, rotationX:180, transformOrigin:"0% 50% -50", ease:"back", stagger: stagger}, "+=0"); 388 break; 389 case 'random_from': 390 tl.from(chars, {duration: 1, opacity:0, scale:0, y:80, rotationZ: ((Math.random() * (500 - (-500))) + (-500)), rotationX: ((Math.random() * (500 - (-500))) + (-500)), rotationY: ((Math.random() * (500 - (-500))) + (-500)), transformOrigin:"0% 50% -50", ease:"back", stagger: stagger}, "+=0"); 391 break; 392 case 'random_to': 393 tl.to(chars, {duration: 1, opacity:0, scale:0, y:80, rotationZ: ((Math.random() * (500 - (-500))) + (-500)), rotationX: ((Math.random() * (500 - (-500))) + (-500)), rotationY: ((Math.random() * (500 - (-500))) + (-500)), transformOrigin:"0% 50% -50", ease:"back", stagger: stagger}, "+=0"); 394 break; 395 default: 396 tl.from(chars, {duration: 1, opacity:0, scale:0, y:80, rotationZ: ((Math.random() * (500 - (-500))) + (-500)), rotationX: ((Math.random() * (500 - (-500))) + (-500)), rotationY: ((Math.random() * (500 - (-500))) + (-500)), transformOrigin:"0% 50% -50", ease:"back", stagger: stagger}, "+=0"); 397 break; 398 } 399 var textDance = new ScrollMagic.Scene({ 400 triggerElement: '#' + trigger, 401 triggerHook: settings.general.triggerHook, 402 duration: duration, 403 offset: settings.general.offset, 404 reverse: reverse, 405 tweenChanges: true 406 }) 407 .setTween(tl); 408 textDance.addTo(controller); 409 410 } 411 if ((null!=init.blur&& 0!=init.blur)||(null!=tween.blur && 0!=tween.blur)) { 412 var sceneBlur = new ScrollMagic.Scene({ 413 triggerElement: '#' + trigger, 414 triggerHook: settings.general.triggerHook, 415 duration: settings.general.duration, 416 offset: settings.general.offset, 417 reverse: reverse, 418 tweenChanges: true 419 }); 420 var blurElement = {a:init.blur!=null?init.blur*1:0}; 421 var tl = gsap.timeline(); 422 tl.to(blurElement, {duration: tween.delay!=null&&tween.delay!=""?tween.delay:0.5, a:tween.blur!=null?tween.blur*1:0, onUpdate:applyBlur}); 423 sceneBlur.setTween( tl ); 424 function applyBlur() 425 { 426 gsap.to($self, {webkitFilter:"blur(" + blurElement.a + "px)",filter:"blur(" + blurElement.a + "px)"}); 427 }; 428 sceneBlur.addTo(controller); 429 } 430 } 431 432})(jQuery);
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.