1(function($, throttle, TweenMax, Power2, Instafeed) { 2 'use strict'; 3 4 $(function() { 5 // site wide 6 var $body = $('body'); 7 var throttleInterval = 250; 8 var scrollDistance = 160; 9 var tolerance = 10; 10 11 var condenseHeader = function() { 12 var currentDistance = $(window).scrollTop(); 13 var scrolledClass = 'scrolled'; 14 15 if (currentDistance < (scrollDistance - tolerance)) { 16 $body.removeClass(scrolledClass); 17 } else if (currentDistance > (scrollDistance + tolerance)) { 18 $body.addClass(scrolledClass); 19 } 20 }; 21 22 condenseHeader(); 23 24 $(window).on('scroll', throttle( function() { 25 condenseHeader(); 26 }, throttleInterval)); 27 28 $('.js-to-top').on('click', function(){ 29 $('html, body').animate( 30 { scrollTop: $body.offset().top }, 31 500 32 ); 33 }); 34 35 const $siteWideAlert = $('.site-alert:visible'); 36 37 if ($siteWideAlert.length) { 38 $('body').addClass('site-alert-visible'); 39 } 40 41 const $siteHeader = $('.site-header'); 42 const $siteFooter = $('.site-footer'); 43 44 $(window).on('load resize', throttle( function() { 45 if ($siteFooter.height() > ($(window).height() - $siteHeader.height())) { 46 $siteFooter.addClass('disable-reveal'); 47 } else { 48 $siteFooter.removeClass('disable-reveal'); 49 } 50 }, throttleInterval)); 51 52 const $navItems = $('.js-dropdown-parent'); 53 if ($navItems.length) { 54 var openClass = 'open'; 55 var mobileBreakpoint = 1200; 56 57 function collapse($jQueryCollection) { 58 $jQueryCollection.removeClass(openClass); 59 } 60 61 $(window).on('resize', throttle( function() { 62 $navItems.removeClass(openClass); 63 }, throttleInterval)); 64 65 $(window).on('site-nav-toggled', function(e){ 66 $navItems.removeClass(openClass); 67 if ( ($(window).width() < 1200) && e.state =='active') { 68 $('.js-dropdown-parent[data-mobile-default="true"]').addClass(openClass); 69 } 70 71 if (e.state === 'active') { 72 $siteHeader.addClass('site-nav-active'); 73 } else { 74 $siteHeader.removeClass('site-nav-active'); 75 } 76 }); 77 } 78 79 const $minicartBasket = $('.minicart-link.is-basket'); 80 81 if ($minicartBasket.length) { 82 const $minicart = $minicartBasket.closest('.minicart'); 83 84 $minicartBasket.on('mouseenter', () => { 85 const $withItems = $minicartBasket.closest('.minicart.contains-items'); 86 87 if (!$withItems.length) { 88 return; 89 } 90 91 $minicart.addClass('open'); 92 }); 93 94 $minicart.on('mouseleave', () => $minicart.removeClass('open')); 95 $minicart.on('click', '.js-minicart-close', () => $minicart.removeClass('open')); 96 } 97 98 $('.js-become-stockist').on('click', function() { 99 callGoogleAnalytics('click', 'data', { 100 component: 'button', 101 value: 'Become Stockist' 102 }); 103 }); 104 105 if ($('.js-sticky-atc').length) { 106 var $atc = $('.js-sticky-atc'); 107 var $atcWrapper = $('.js-sticky-atc-container'); 108 109 setATCWidth($atc, $atcWrapper); 110 111 112 $(window).on('resize', throttle(function () { 113 setATCWidth($atc, $atcWrapper); 114 }, throttleInterval)); 115 116 var siteFooter = document.querySelector('#site-footer-main'); 117 118 function io_callback (entries, io_observer) { 119 // console.log(entries[0]); 120 if (entries[0].isIntersecting ) { 121 $atc.removeClass('stuck'); 122 } else { 123 $atc.addClass('stuck') 124 } 125 } 126 127 var io_observer = new IntersectionObserver(io_callback); 128 io_observer.observe(siteFooter); 129 } 130 131 function setStickyPos($elem) { 132 if ($elem.hasClass('stuck')) { 133 $elem.css('top', $('#site-header').height()) 134 } else { 135 $elem.css('top', ''); 136 } 137 } 138 139 function setATCWidth($elem, $wrapper) { 140 $elem.css('width', $wrapper.width()) 141 } 142 143 // analytics 144 function callGoogleAnalytics(event, dataType, data) { 145 if (!dataType || !data) { 146 window.dataLayer.push({ event }); 147 return; 148 } 149 150 window.dataLayer.push({ [dataType]: null }) 151 window.dataLayer.push({ 152 event, 153 [dataType]: data 154 }); 155 } 156 157 // toggles eg shop page 158 if ($('.js-active-desktop').length && $(window).width() > 960) { 159 $('.js-active-desktop').addClass(activeClass); 160 } 161 162 // trade page 163 if ($('.js-include-trade-map').length) { 164 var tradeMapHTML = '<div class="trade-map js-trade-map">' 165 + '<div class="tm-circle-pulse"></div>' 166 + '<div class="tm-circle"></div>' 167 + '<div class="tm-roads"></div>' 168 + '<div class="tm-center-trees"></div>' 169 + '<div class="tm-building"></div>' 170 + '<div class="tm-trees"></div>' 171 + '<div id="truck1" class="tm-truck truck-1"></div>' 172 + '<div id="truck2" class="tm-truck truck-2"></div>' 173 + '<div id="truck3" class="tm-truck truck-3"></div>' 174 + '<div class="tm-crest"></div>' 175 + '</div>'; 176 177 $('.js-include-trade-map').append(tradeMapHTML); 178 179 var $tradeMap = $('.js-include-trade-map').find('.js-trade-map'); 180 181 if ($tradeMap.is(':visible')) { 182 animateTrademap(); 183 } 184 185 $(window).on('resize', throttle(function () { 186 if ($tradeMap.is(':visible')) { 187 animateTrademap(); 188 } 189 }, throttleInterval)); 190 } 191 192 function animateTrademap() { 193 var $truck1 = $tradeMap.find('#truck1'); 194 var $truck2 = $tradeMap.find('#truck2'); 195 var $truck3 = $tradeMap.find('#truck3'); 196 197 TweenMax.to($truck1, 12, { 198 x: 400, 199 y: -130, 200 ease: Power2.easeOut, 201 repeatDelay:1, 202 repeat:-1 203 }); 204 TweenMax.to($truck2, 10, { 205 x: 500, 206 y: 20, 207 delay: 2, 208 ease: Power2.easeOut, 209 repeatDelay:1, 210 repeat:-1 211 }); 212 TweenMax.to($truck3, 12, { 213 x: -650, 214 delay: 4, 215 ease: Power2.easeOut, 216 repeat:-1 217 }); 218 } 219 220 // sliders 221 if ($('.js-hero-slider').length) { 222 var $heroSlider = $('.js-hero-slider'); 223 var numSlides = parseInt($heroSlider.data('total-products')); 224 225 $heroSlider.slick({ 226 slidesToShow: 1, 227 slidesToScroll: 1, 228 fade: true, 229 adaptiveHeight: false, 230 speed: 1 231 }).on('init', function(){ 232 $heroSlider.attr('data-product', $('.slick-slide').eq(0).data('product')); 233 }).on('beforeChange', function(event, slick, currentSlide, nextSlide){ 234 $heroSlider.attr('data-product', $('.slick-slide').eq(nextSlide).data('product')); 235 $heroSlider.attr('data-current', nextSlide); 236
237 var rotateAmount = nextSlide / numSlides * 360 + 'deg'; 238 document.documentElement.style.setProperty('--watermarkRotate', rotateAmount); 239 }); 240 241 $('.js-hero-slider-nav').slick({ 242 slidesToShow: 6, 243 slidesToScroll: 1, 244 asNavFor: '.js-hero-slider', 245 focusOnSelect: true, 246 infinite: true, 247 responsive: [ 248 { 249 breakpoint: 780, 250 settings: { 251 slidesToShow: 5, 252 slidesToScroll: 1, 253 } 254 }, 255 { 256 breakpoint: 600, 257 settings: { 258 slidesToShow: 4, 259 slidesToScroll: 1, 260 } 261 }, 262 { 263 breakpoint: 480, 264 settings: { 265 slidesToShow: 3, 266 arrows: true, 267 slidesToScroll: 1, 268 } 269 } 270 ] 271 }); 272 } 273 274 if ($('.js-slick-slider.ticker').length) { 275 276 $('.js-slick-slider.ticker').each(function() { 277 const _this = $(this).slick({ 278 dots: false, 279 arrows: false, 280 lazyLoad: 'ondemand', 281 infinite: true, 282 slidesToShow: 7, 283 slidesToScroll: 1, 284 autoplay: true, 285 autoplaySpeed: 0, 286 speed: 3000, 287 cssEase:'linear', 288 draggable: false, 289 variableWidth: true, 290 responsive: [ 291 { 292 breakpoint: 1024, 293 settings: { 294 slidesToShow: 7, 295 speed: 3000, 296 } 297 }, 298 { 299 breakpoint: 600, 300 settings: { 301 slidesToShow: 4, 302 speed: 4000, 303 } 304 }, 305 { 306 breakpoint: 480, 307 settings: { 308 slidesToShow: 2, 309 speed: 4000, 310 } 311 } 312 ] 313 }); 314 }); 315 } 316 317 318 if ($('.js-slick-slider.carousel').length) { 319 $('.js-slick-slider.carousel').each(function() { 320 const _this = $(this).slick({ 321 dots: false, 322 arrows: true, 323 lazyLoad: 'ondemand', 324 infinite: true, 325 autoplay: false, 326 draggable: true, 327 swipeToSlide: true, 328 slidesToShow: 1, 329 slidesToScroll: 1, 330 speed: 1000, 331 variableWidth: true, 332 }); 333 }); 334 } 335 336 if ($('.js-slick-slider.beer-carousel').length) { 337 $('.js-slick-slider.beer-carousel').each(function() { 338 const _this = $(this).slick({ 339 dots: false, 340 arrows: true, 341 lazyLoad: 'ondemand', 342 infinite: true, 343 vertical: true, 344 autoplay: false, 345 swipeToSlide: true, 346 draggable: true, 347 slidesToShow: 3, 348 slidesToScroll: 1, 349 speed: 1000, 350 focusOnSelect: true, 351 adaptiveHeight: true, 352 responsive: [ 353 { 354 breakpoint: 800, 355 settings: { 356 slidesToShow: 1, 357 vertical: false, 358 adaptiveHeight: true, 359 centerPadding: '32px', 360 centerMode: true, 361 } 362 }, 363 ] 364 }).on('beforeChange', function(event, slick, currentSlide, nextSlide){ 365 const bg = slick.$slides[nextSlide].dataset.bg 366 $('.beerCarouselBlock').css('--beer-carousel-bg-next', 'url(' + bg + ')').addClass('fade'); 367 }).on('afterChange', function(event, slick, currentSlide){ 368 const bg = slick.$slides[currentSlide].dataset.bg 369 $('.beerCarouselBlock').css('--beer-carousel-bg-current', 'url(' + bg + ')').removeClass('fade'); 370 }); 371 }) 372 } 373 374 if ($('.js-slider').length) { 375 var playMode = $(window).width() > 600 ? true : false;
376 377 $('.js-slider').each(function() { 378 var _this = $(this).bxSlider({ 379 mode: 'horizontal' 380 , auto: playMode 381 , autoHover: true 382 , pause: 4000 383 , speed: 600 384 , infiniteLoop: true 385 , controls: true 386 , pager: true 387 , easing: 'swing' 388 , touchEnabled: true 389 , responsive: true 390 }); 391 _this.mouseenter(function() { 392 _this.startAuto(); 393 }).mouseleave(function() { 394 _this.stopAuto(); 395 }); 396 }); 397 398 var sliders = $('.js-slider').map(function() { 399 return $(this).bxSlider(); 400 }); 401 402 $(window).on('resize', throttle(function () { 403 sliders.each(function() { 404 $(this).reloadSlider(); 405 }); 406 }, 200)); 407 } 408 409 if ($('.js-slider-ms').length) { 410 var monthlySpecialsSlider = $('.js-slider-ms').bxSlider({ 411 mode: 'vertical', 412 auto: false, 413 autoHover: true, 414 pause: 4000, 415 speed: 600, 416 pager: true, 417 controls: false, 418 easing: 'swing', 419 // adaptiveHeight: true, 420 pagerCustom: '.js-slider-nav' 421 }); 422 423 $(window).on('resize', throttle(function () { 424 monthlySpecialsSlider.reloadSlider(); 425 }, 200)); 426 } 427 428 //Timeline 429 const timelineBlocks = $('.timelineBlock'); 430 if(timelineBlocks.length) { 431 timelineBlocks.each(function() { 432 const block = this; 433 434 const heading = block.querySelector('.heading'); 435 if (!heading) return; // skip if no heading 436 const word = heading.querySelector('.heading .word'); 437 if (!word) return; // skip if no word in heading 438 439 const chars = [...word.querySelectorAll('.char')]; 440 441 // Store heading height for CSS variable 442 block.style.setProperty('--heading-height', heading.offsetHeight + 'px'); 443 444 function updateTitleGradient(step) { 445 const width = chars 446 .slice(0, step) 447 .reduce((w, el) => w + el.offsetWidth, 0); 448 449 word.style.setProperty('--fill', `${width}px`); 450 } 451 452 $('.timelineBlock .js-slick-slider').on('afterChange', function(event, slick, currentSlide){ 453 updateTitleGradient(currentSlide + 1); 454 }); 455 456 updateTitleGradient(1); 457 }) 458 } 459 460 //Parallax Content 461 const parallaxContentBlocks = $('.parallaxContentBlock'); 462 if(parallaxContentBlocks.length) { 463 gsap.registerPlugin(ScrollTrigger); 464 465 let mm = gsap.matchMedia(); 466 467 parallaxContentBlocks.each(function() { 468 const block = this; 469 470 const primaryImage = block?.querySelector('.primary-img'); 471 if(primaryImage) { 472 mm.add("(min-width: 1200px)", () => { 473 gsap.fromTo( 474 primaryImage, 475 {yPercent: 10}, 476 { 477 yPercent: -10, 478 delay: 0.5, 479 ease: "none", 480 scrollTrigger: { 481 trigger: block, 482 start: "top bottom", 483 end: "bottom top", 484 scrub: true 485 } 486 } 487 ); 488 }); 489 } 490 491 const secondaryImage = block?.querySelector('.secondary-img'); 492 if(secondaryImage) { 493 mm.add("(min-width: 1200px)", () => { 494 gsap.fromTo( 495 secondaryImage, 496 {yPercent: 75}, 497 { 498 yPercent: -75, 499 ease: "none", 500 scrollTrigger: { 501 trigger: block, 502 start: "top bottom", 503 end: "bottom top", 504 scrub: true 505 } 506 } 507 ); 508 }); 509 } 510 }); 511 } 512 513 // Limited releases ticker 514 if ($('.js-ticker-slider').length) { 515 var ticker = $('.js-ticker-slider').bxSlider({ 516 ticker: true 517 , tickerHover: true
518 , minSlides: 1 519 , maxSlides: 24 520 , speed: $(window).width() * $('.js-ticker-slider li').length * 2.5 521 , onSliderLoad: function () { 522 // by default the ticker only shows the items initially on screen 523 // expand the width to include all gallery items 524 var $ticker = $('.js-ticker-gallery:first-of-type'); 525 var $tickerItems = $ticker.find('li'); 526 var galleryWidth = $tickerItems.outerWidth() * $tickerItems.length; 527 $('.js-ticker-gallery').css('width', galleryWidth); 528 // fixes width calculation issue in firefox 529 $ticker.closest('.bx-viewport').css('max-width', $body.innerWidth()); 530 } 531 }); 532 533 $(window).on('resize', throttle(function () { 534 ticker.reloadSlider(); 535 }, 200)); 536 } 537 }); 538 539 540 let assemblyVersion = $('meta[name=assembly-version]').attr('content'); 541 let prevControl = ` 542 <svg role="img" class="icon homepage-content__slider-icon homepage-content__slider-icon--prev"> 543 <use xlink:href="/img/icons.svg?v=${assemblyVersion}#icon-chevron-thin-left"></use> 544 </svg> 545 <span class="visually-hidden">cask</span> 546 ` 547 548 let nextControl = ` 549 <svg role="img" class="icon homepage-content__slider-icon homepage-content__slider-icon--next"> 550 <use xlink:href="/img/icons.svg?v=${assemblyVersion}#icon-chevron-thin-left"></use> 551 </svg> 552 <span class="visually-hidden">cask</span> 553 ` 554 555 556 jQuery('#homepage-content__slider').slick({ 557 infinite: true, 558 slidesToShow: 3, 559 slidesToScroll: 3, 560 prevArrow: prevControl, 561 nextArrow: nextControl, 562 responsive: [ 563 { 564 breakpoint: 1000, 565 settings: { 566 slidesToShow: 2, 567 slidesToScroll: 2, 568 infinite: true, 569 dots: false 570 } 571 }, 572 { 573 breakpoint: 768, 574 settings: { 575 slidesToShow: 1, 576 slidesToScroll: 1, 577 infinite: true, 578 dots: false 579 } 580 }, 581 582 ] 583 }); 584 585 jQuery('#pub-slider').slick({ 586 infinite: true, 587 slidesToShow: 1, 588 slidesToScroll: 1, 589 pager: false, 590 controls: false, 591 auto: true, 592 }); 593 594 595 if ($('#mailing-list-signup').length) { 596 597 var $mlSignup = $('#mailing-list-signup'); 598 var wvbPrefs = window.localStorage; 599 600 setMLSVisbility($mlSignup); 601 602 $('#mailing-list-signup .js-close').on('click', function() { 603 wvbPrefs.setItem('mailingListSignupLastShown', (new Date()).getTime()); 604 updateMLSVisbility(true) 605 }); 606 607 $('#subForm').on('submit', function(){ 608 wvbPrefs.setItem('mailingListSubscribed', true); 609 }); 610 611 } 612 613 function setMLSVisbility($mlSignup) { 614 var formHidden = false; 615 var wvbPrefs = window.localStorage; 616 617 if (wvbPrefs.mailingListSubscribed || window.location.href.indexOf('utm_medium=email') > 0) { 618 formHidden = true; 619 } else if (wvbPrefs.mailingListSignupLastShown) { 620 var mlFormHidden = wvbPrefs.mailingListSignupLastShown; 621 var now = new Date(); 622 var daysSinceFormClosed = getDifferenceInDays(now.getTime(), mlFormHidden); 623 if (daysSinceFormClosed < 30 ) { 624 $mlSignup.hide(); 625 return false; 626 } 627 } 628 629 updateMLSVisbility(formHidden) 630 } 631 632 function updateMLSVisbility(formHidden) { 633 if (formHidden) { 634 $mlSignup.hide(); 635 showTestLinkOnDevSite(); 636 $('body').removeClass('mlf-visible') 637 } else { 638 $('body').addClass('mlf-visible') 639 } 640 } 641 642 function getDifferenceInDays(timeOne, timeTwo) { 643 var differenceInTime = timeOne - timeTwo; 644 return parseInt(differenceInTime / (1000 * 3600 * 24)); 645 } 646 647 function showTestLinkOnDevSite() { 648 if (window.location.href.toLowerCase().indexOf('localhost') !== -1 || window.location.href.toLowerCase().indexOf('staging') !== -1 ) { 649 $('.site-footer').append('<a class="js-reset-MLSForm" href="#" style="color: white; padding: 0.5rem;">show form</a> '); 650 651 $('body').on('click', '.js-reset-MLSForm', function(e){ 652 e.preventDefault(); 653 window.localStorage.removeItem('mailingListSignupLastShown'); 654 window.localStorage.removeItem('mailingListSubscribed'); 655 window.location.reload(); 656 }); 657 } 658 } 659 660 $(window).on('load', function(){ 661 // hide the hamburger button until the page loads 662 if ($('.js-hide-until-page-loads').length) {
663 $('.js-hide-until-page-loads').removeClass('is-hidden'); 664 } 665 666 if ($('#instafeed').length) { 667 var userFeed = new Instafeed({ 668 limit: 10, 669 accessToken: InstagramToken, 670 template: `<a style="background-image: url({{image}})" href="{{link}}" target="_blank"></a>`, 671 transform: function(item) { 672 var d = new Date(item.timestamp); 673 item.date = [d.getDate(), d.getMonth(), d.getYear()].join('/'); 674 return item; 675 }, 676 677 }); 678 userFeed.run(); 679 680 681 } 682 }); 683 684})(window.jQuery, window.throttle, window.TweenMax, window.Power2, window.Instafeed);
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.