{"version":3,"sources":["webpack:///./node_modules/@netc/lazy/src/Lazy.js","webpack:///./node_modules/@netc/lazy/src/index.js","webpack:///./legacy/js/modules/performance/lazy.js","webpack:///./js/components/init-home-carousel.ts","webpack:///./node_modules/when-dom-ready/dist/index.es2015.js"],"names":["baseObserverOptions","threshold","rootMargin","Lazy","_this","this","observerOptions","arguments","length","undefined","_classCallCheck","_defineProperty","element","callback","sendElementToCallback","callbacks","push","observer","observe","handleBgImages","handleSrcImages","entries","Array","forEach","event","isIntersecting","pair","find","x","target","IntersectionObserver","handleEntries","url","getAttribute","image","Image","addEventListener","removeAttribute","setAttribute","concat","classList","add","src","window","setTimeout","__webpack_require__","d","__webpack_exports__","src_Lazy","initialiseLazyImages","lazy","imageElements","document","querySelectorAll","backgroundImageElements","registerBackgroundImageElement","registerImageElement","Object","index_es2015","then","whenDomReady","initResizeCarousel","carousels","from","carousel","track","querySelector","items","remove","initCarousels","homeCarouselElements","contains","carouselControls","homeCarouselControls","parentElement","tns","container","nav","loop","controls","controlsContainer","mouseDrag","responsive","768","edgePadding","992","1200","1800","play","slides","height","item","offsetHeight","style","prm","Sys","WebForms","PageRequestManager","getInstance","add_endRequest","onload","$recentlyViewedBtn","click","loadedStates","cb","doc","Promise","resolve","done","indexOf","readyState","resume","val"],"mappings":"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","file":"js-home-carousel-3be241caefc004423402.js","sourcesContent":["const baseObserverOptions = {\r\n threshold: 0.01,\r\n rootMargin: '0px',\r\n};\r\n\r\nclass Lazy {\r\n constructor(observerOptions = baseObserverOptions) {\r\n this.observer = new IntersectionObserver(\r\n entries => this.handleEntries(entries),\r\n observerOptions,\r\n );\r\n this.callbacks = [];\r\n }\r\n\r\n /**\r\n * Registers a new element with a callback, this is called when the element enters the viewport\r\n */\r\n registerNewElement = (element, callback, sendElementToCallback) => {\r\n this.callbacks.push({ element, callback, sendElementToCallback });\r\n this.observer.observe(element);\r\n };\r\n\r\n /**\r\n * Registers a new element to load the data-src as a background image when entering the viewport\r\n */\r\n registerBackgroundImageElement = element => {\r\n this.callbacks.push({ element, callback: this.handleBgImages, sendElementToCallback: true });\r\n this.observer.observe(element);\r\n };\r\n\r\n /**\r\n * Registers a new image element to load the data-src as the image src when entering the viewport\r\n */\r\n registerImageElement = element => {\r\n this.callbacks.push({ element, callback: this.handleSrcImages, sendElementToCallback: true });\r\n this.observer.observe(element);\r\n };\r\n\r\n /**\r\n * handle entries run when a new element is observed (comes into view)\r\n */\r\n handleEntries = entries => {\r\n Array.forEach(entries, event => {\r\n if (!event.isIntersecting) {\r\n return;\r\n }\r\n\r\n const pair = this.callbacks.find(x => x.element === event.target);\r\n\r\n if (pair.sendElementToCallback) {\r\n pair.callback(pair.element);\r\n } else {\r\n pair.callback();\r\n }\r\n });\r\n };\r\n\r\n /* built in styling functions */\r\n handleBgImages(element) {\r\n // Get the image url\r\n const url = element.getAttribute('data-src');\r\n\r\n if (url !== null && url !== '' && url !== undefined) {\r\n // Create a new \"image\" object\r\n const image = new Image();\r\n\r\n // Add the load event\r\n image.addEventListener('load', () => {\r\n element.removeAttribute('data-src', url);\r\n element.setAttribute('style', `background-image: url('${url}');`);\r\n element.classList.add('loaded');\r\n });\r\n\r\n // Set the src\r\n image.src = url;\r\n }\r\n }\r\n\r\n handleSrcImages(element) {\r\n // Get the image url\r\n const url = element.getAttribute('data-src');\r\n if (url !== null && url !== '' && url !== undefined) {\r\n // Create a new \"image\" object\r\n const image = new Image();\r\n\r\n // Add the load event\r\n image.addEventListener('load', () => {\r\n element.removeAttribute('data-src', url);\r\n element.setAttribute('src', url);\r\n window.setTimeout(() => {\r\n element.classList.add('loaded');\r\n }, 50);\r\n });\r\n\r\n // Set the src\r\n image.src = url;\r\n }\r\n }\r\n}\r\n\r\nexport default Lazy;\r\n","import _lazy from './Lazy';\r\n\r\nexport { _lazy as Lazy };\r\n","import { Lazy } from '@netc/lazy';\r\nimport whenDomReady from 'when-dom-ready';\r\n\r\nexport default function initialiseLazyImages() {\r\n const lazy = new Lazy();\r\n\r\n const imageElements = document.querySelectorAll('.js-lazy');\r\n const backgroundImageElements = document.querySelectorAll('.js-lazy-bg');\r\n\r\n if (backgroundImageElements.length > 0) {\r\n Array.forEach(backgroundImageElements, element => {\r\n lazy.registerBackgroundImageElement(element);\r\n });\r\n }\r\n\r\n if (imageElements.length > 0) {\r\n Array.forEach(imageElements, element => {\r\n lazy.registerImageElement(element);\r\n });\r\n }\r\n}\r\n\r\nwhenDomReady().then(initialiseLazyImages);\r\n","import whenDomReady from 'when-dom-ready';\r\nimport { tns } from 'tiny-slider/src/tiny-slider';\r\nimport initialiseLazyImages from '../../legacy/js/modules/performance/lazy';\r\nfunction initialise() {\r\n function initResizeCarousel() {\r\n const carousels = Array.from(document.querySelectorAll('.js-home-carousel'));\r\n if (carousels.length === 0) {\r\n return;\r\n }\r\n carousels.forEach(carousel => {\r\n const track = carousel.querySelector('.tns-inner');\r\n const items = carousel.querySelectorAll('.tns-item').length;\r\n if (track !== null) {\r\n if (items < 4 && items % 2 === 1) {\r\n track.classList.add('center');\r\n }\r\n else {\r\n track.classList.remove('center');\r\n }\r\n }\r\n });\r\n }\r\n function initCarousels() {\r\n const homeCarouselElements = Array.from(document.querySelectorAll('.js-home-carousel'));\r\n if (homeCarouselElements.length === 0) {\r\n return;\r\n }\r\n homeCarouselElements.forEach(carousel => {\r\n if (carousel.classList.contains('tns-carousel')) {\r\n return;\r\n }\r\n const homeCarouselControls = carousel.parentElement;\r\n let carouselControls;\r\n if (homeCarouselControls !== null) {\r\n carouselControls = homeCarouselControls.querySelector('.js-prod-controls');\r\n }\r\n const slider = tns({\r\n container: carousel,\r\n items: 2,\r\n nav: false,\r\n loop: false,\r\n controls: true,\r\n controlsContainer: carouselControls,\r\n mouseDrag: true,\r\n responsive: {\r\n 768: {\r\n items: 2,\r\n edgePadding: 10,\r\n },\r\n 992: {\r\n items: 3,\r\n edgePadding: 59,\r\n },\r\n 1200: {\r\n items: 4,\r\n },\r\n 1800: {\r\n edgePadding: 110,\r\n }\r\n }\r\n });\r\n slider.play();\r\n const slides = Array.from(carousel.querySelectorAll('.product-card'));\r\n let height = 0;\r\n slides.forEach(item => {\r\n if (item.offsetHeight > height) {\r\n height = item.offsetHeight;\r\n }\r\n });\r\n slides.forEach(item => {\r\n item.style.height = `${height}px`;\r\n });\r\n });\r\n }\r\n // reload on partial postback\r\n const prm = Sys.WebForms.PageRequestManager.getInstance();\r\n if (prm !== null) {\r\n prm.add_endRequest(() => {\r\n const carousels = Array.from(document.querySelectorAll('.js-home-carousel'));\r\n if (carousels.length === 0) {\r\n return;\r\n }\r\n else {\r\n const $recentlyViewed = document.querySelectorAll('.js-recently-viewed');\r\n if ($recentlyViewed.length) {\r\n initCarousels();\r\n initialiseLazyImages();\r\n }\r\n }\r\n });\r\n }\r\n window.onload = function () {\r\n const $recentlyViewedBtn = document.querySelector('.js-recently-viewed-btn');\r\n if ($recentlyViewedBtn) {\r\n $recentlyViewedBtn.click();\r\n }\r\n };\r\n window.addEventListener('resize', () => {\r\n initResizeCarousel();\r\n });\r\n initCarousels();\r\n initResizeCarousel();\r\n}\r\nwhenDomReady().then(initialise);\r\n","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\nexport default whenDomReady;\n//# sourceMappingURL=index.es2015.js.map\n"],"sourceRoot":""}