{"version":3,"sources":["20240402Lightweight_functions.js"],"names":["$","click","location","pathname","replace","this","hostname","offsetValue","target","hash","length","slice","window","innerWidth","animate","scrollTop","offset","top","prodCards","document","querySelectorAll","scroll","addEventListener","e","forEach","prodCard","children","tagName","style","display","Splitting","requestAnimationFrame","showOnScroll","el","getBoundingClientRect","innerHeight","classList","add","sliderNav","Swiper","loop","slidesPerView","spaceBetween","freeMode","breakpoints","900","resetsliderNav","isIntersecting","resetSliderNav","observer3","IntersectionObserver","scrollers","observe","getElementById","isDown","startX","scrollLeft","videos","scroller","pageX","offsetLeft","cancelMomentumTracking","remove","momentumID","momentumLoop","prevScrollLeft","preventDefault","walk","velX","scrollTo","left","behavior","cancelAnimationFrame","Math","abs","config","rootMargin","threshold","callback","entries","entry","play","pause","observer","close_video_modal","removeClass","attr","element","on","src","console","log","addClass","event","keyup","keyCode"],"mappings":"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","file":"20240402Lightweight_functions.min.js","sourcesContent":["// SCROLL-TO ANIMATION FOR ANCHOR LINKS\r\n// FADE-IN-UP ELEMENTS ON SCROLL\r\n// SLIDER (SWIPER JS)\r\n// DRAG/WHEEL SCROLL-X + MOMENTUM\r\n// PAUSE OUT-OF-VIEW VIDEO\r\n// YT VIDEO MODAL\r\n\r\n\r\n//\r\n// =SCROLL-TO ANIMATION FOR ANCHOR LINKS\r\n// --------------------------------------------------\r\n\r\n$('.msdw-page-scroll').click(function() {\r\n if (location.pathname.replace(/^\\//,'') == this.pathname.replace(/^\\//,'') && location.hostname == this.hostname) {\r\n var target = $(this.hash);\r\n target = target.length ? target : $('[name=' + this.hash.slice(1) +']');\r\n if (target.length) {\r\n var offsetValue = 0;\r\n if ( window.innerWidth <= 767 ) {\r\n offsetValue;\r\n // console.log(offsetValue);\r\n } else {\r\n offsetValue = 59;\r\n // console.log(offsetValue);\r\n }\r\n\r\n $('html,body').animate({\r\n scrollTop: target.offset().top - offsetValue\r\n }, 900);\r\n return false;\r\n }\r\n }\r\n});\r\n\r\n//\r\n// =REMOVE GRID CELLS / EMPTY PRODUCT CARDS\r\n// --------------------------------------------------\r\n\r\nconst prodCards = document.querySelectorAll('.msdw-filter-content');\r\n\r\nwindow.addEventListener(\"load\", (e) => {\r\n prodCards.forEach(prodCard => {\r\n if (prodCard.children[0].tagName === 'WAINCLUDE') {\r\n prodCard.style.display = 'none';\r\n };\r\n });\r\n});\r\n\r\n//\r\n// =FADE-IN-UP ELEMENTS ON SCROLL\r\n// --------------------------------------------------\r\n\r\nSplitting();\r\n\r\nconst scroll = window.requestAnimationFrame;\r\n\r\nfunction showOnScroll() {\r\n const elems = document.querySelectorAll(\r\n \".msdw-animate, .msdw-anim-skew, .msdw-anim-zoom\"\r\n );\r\n\r\n elems.forEach((el) => {\r\n const elPosition = el.getBoundingClientRect().top;\r\n const elScreen = window.innerHeight / 0.9;\r\n\r\n if (elPosition < elScreen) {\r\n el.classList.add(\"msdw-animated\");\r\n }\r\n });\r\n\r\n scroll(showOnScroll);\r\n}\r\n\r\nshowOnScroll();\r\n\r\n\r\n//\r\n// =SLIDER (SWIPER JS)\r\n// --------------------------------------------------\r\n\r\nconst sliderNav = new Swiper(\"#sliderNav\", {\r\n loop: false,\r\n slidesPerView: 'auto',\r\n spaceBetween: 10,\r\n freeMode: true,\r\n breakpoints: {\r\n 900: {\r\n spaceBetween: 15,\r\n },\r\n },\r\n});\r\n\r\n\r\nfunction resetsliderNav() {\r\n if (!sliderNav.isIntersecting) {\r\n resetSliderNav(sliderNav);\r\n }\r\n}\r\n\r\nconst observer3 = new IntersectionObserver(resetsliderNav);\r\n\r\nobserver3.observe(document.getElementById('sliderNav'));\r\n\r\n\r\n//\r\n// =DRAG/WHEEL SCROLL-X + MOMENTUM\r\n// --------------------------------------------------\r\n\r\nconst scrollers = document.querySelectorAll('.msdw-section-profile');\r\n\r\nlet isDown = false;\r\nlet startX;\r\nlet scrollLeft;\r\n\r\nscrollers.forEach(scroller => {\r\n scroller.addEventListener('mousedown', (e) => {\r\n isDown = true;\r\n scroller.classList.add('active');\r\n startX = e.pageX - scroller.offsetLeft;\r\n scrollLeft = scroller.scrollLeft;\r\n cancelMomentumTracking();\r\n });\r\n\r\n scroller.addEventListener('mouseleave', () => {\r\n isDown = false;\r\n scroller.classList.remove('active');\r\n });\r\n\r\n scroller.addEventListener('mouseup', () => {\r\n isDown = false;\r\n scroller.classList.remove('active');\r\n beginMomentumTracking();\r\n });\r\n\r\n scroller.addEventListener('mousemove', (e) => {\r\n if(!isDown) return;\r\n e.preventDefault();\r\n const x = e.pageX - scroller.offsetLeft;\r\n // scroll-fast\r\n // const walk = (x - startX) * 3;\r\n const walk = (x - startX) * 1;\r\n var prevScrollLeft = scroller.scrollLeft;\r\n scroller.scrollLeft = scrollLeft - walk;\r\n velX = scroller.scrollLeft - prevScrollLeft;\r\n });\r\n\r\n // Reset scroller position when not in-view\r\n\r\n function resetScroller() {\r\n if (!scroller.isIntersecting) {\r\n scroller.scrollTo({\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n }\r\n\r\n const observer2 = new IntersectionObserver(resetScroller);\r\n\r\n observer2.observe(scroller);\r\n\r\n // Momentum\r\n\r\n var velX = 0;\r\n var momentumID;\r\n\r\n scroller.addEventListener('wheel', (e) => {\r\n cancelMomentumTracking();\r\n });\r\n\r\n function beginMomentumTracking(){\r\n cancelMomentumTracking();\r\n momentumID = requestAnimationFrame(momentumLoop);\r\n }\r\n function cancelMomentumTracking(){\r\n cancelAnimationFrame(momentumID);\r\n }\r\n function momentumLoop(){\r\n scroller.scrollLeft += velX;\r\n velX *= 0.95;\r\n if (Math.abs(velX) > 0.5){\r\n momentumID = requestAnimationFrame(momentumLoop);\r\n }\r\n }\r\n});\r\n\r\n\r\n//\r\n// =PAUSE OUT-OF-VIEW VIDEO\r\n// --------------------------------------------------\r\n\r\nconst videos = document.querySelectorAll(\"video\");\r\n\r\nconst config = {\r\n rootMargin: '0px -100px',\r\n threshold: 0\r\n}\r\n\r\nconst callback = (entries) => {\r\n entries.forEach((entry) => {\r\n if (!entry.isIntersecting) {\r\n entry.target.pause();\r\n // alert('Exit video');\r\n } else {\r\n entry.target.play();\r\n // alert('Enter video');\r\n }\r\n });\r\n}\r\n\r\nconst observer = new IntersectionObserver(callback, config);\r\n\r\nvideos.forEach(element => {\r\n observer.observe(element);\r\n});\r\n\r\n\r\n//\r\n// =YT VIDEO MODAL\r\n// --------------------------------------------------\r\n\r\n$(\".js-trigger-video-modal\")\r\n .on(\"click\", function(e){\r\n e.preventDefault();\r\n var id = $(this).attr('data-youtube-id');\r\n // var enablejsapi = '?enablejsapi=1';\r\n var autoplay = '?autoplay=1';\r\n var related_no = '&rel=0';\r\n var captions = '&cc_load_policy=1';\r\n // var src = '//www.youtube.com/embed/'+id+enablejsapi+autoplay+related_no;\r\n var src = '//www.youtube.com/embed/'+id+autoplay+related_no+captions;\r\n console.log(src);\r\n\r\n $(\"#youtube\").attr('src', src);\r\n $(\"body\").addClass(\"show-video-modal noscroll\");\r\n });\r\n\r\nfunction close_video_modal() {\r\n $(\"body\").removeClass(\"show-video-modal noscroll\");\r\n $(\"#youtube\").attr('src', '');\r\n}\r\n\r\n$('body').on('click', '.close-video-modal, .video-modal .overlay', function(event) {\r\n close_video_modal();\r\n});\r\n\r\n$('body').keyup(function(e) {\r\n if (e.keyCode == 27) {\r\n close_video_modal();\r\n }\r\n});\r\n"]}