{"version":3,"file":"js/765.96f621078934495f9e89.js","mappings":"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","sources":["webpack://sitecore-web-schreuderssport/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://sitecore-web-schreuderssport/./scripts/modules/preference.js","webpack://sitecore-web-schreuderssport/./scripts/modules/products/product-utils.js","webpack://sitecore-web-schreuderssport/./scripts/modules/products/product-viewfilter.js"],"sourcesContent":["/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","\"use strict\";\r\n\r\nimport Cookies from 'js-cookie'\r\n\r\nvar cookieKey = \"preferences\";\r\n\r\nvar getPreference = function () {\r\n var preferences = Cookies.get(cookieKey);\r\n if (typeof preferences === \"undefined\") {\r\n preferences = {};\r\n } else {\r\n preferences = JSON.parse(preferences);\r\n }\r\n\r\n return preferences;\r\n}\r\n\r\nvar savePreference = function(preferences) {\r\n Cookies.set(cookieKey, JSON.stringify(preferences), {\r\n expires: 365\r\n });\r\n}\r\n\r\nexport { getPreference, savePreference };","// product-utils.js\r\n\"use strict;\"\r\n\r\nimport $ from \"jquery\";\r\n\r\nexport const doNotifications = (function (res) {\r\n if (typeof res.Notifications === \"undefined\") {\r\n return;\r\n }\r\n});\r\n\r\nexport const productPricing = (function () {\r\n\r\n var isMobile = $(window).width() < 768;\r\n\r\n $(\"div.update-pricing\").each(function () {\r\n var $product = $(this);\r\n var productCode = $product.attr(\"data-product\");\r\n\r\n $.ajax({ url: \"/api/ssi/pricing/\" + productCode }).done(function (pricing) {\r\n var $priceNow = $product.find(\".price.price-now\");\r\n $priceNow.html(pricing[\"Now\"][\"Formatted\"]);\r\n $priceNow.attr(\"data-standard-price\", pricing[\"Now\"][\"EffectivePrice\"][\"StandardPrice\"]);\r\n\r\n if (typeof pricing[\"Before\"] !== \"undefined\" && pricing[\"Before\"] !== null) {\r\n var $oldPrice = $product.find(\".price.price-old\");\r\n\r\n $oldPrice.html(pricing[\"Before\"][\"Formatted\"]);\r\n $oldPrice.removeClass(\"hidden\");\r\n\r\n var allowChange = true;\r\n\r\n if (isMobile) {\r\n\r\n var right = $oldPrice.outerWidth() - parseInt($oldPrice.css(\"padding-right\"));\r\n var left = $priceNow.parent().innerWidth() - $priceNow.outerWidth() + parseInt($priceNow.css(\"padding-left\"));\r\n\r\n if (right > (left - 5)) {\r\n console.log(\"Blocking as overlaps: \" + productCode);\r\n $oldPrice.addClass(\"hidden\");\r\n allowChange = false;\r\n }\r\n }\r\n\r\n if (allowChange) {\r\n $priceNow.addClass(\"price-has-old-price\");\r\n }\r\n }\r\n\r\n $product.removeClass(\"update-pricing\");\r\n });\r\n });\r\n});\r\n\r\nexport default {\r\n productPricing,\r\n doNotifications\r\n};","\"use strict\";\r\n\r\nimport $ from \"jquery\";\r\nimport * as preferencesService from \"../preference\";\r\nimport * as utils from \"./product-utils\";\r\n\r\nclass ProductViewFilter {\r\n constructor() {\r\n this.pageIndex = 1;\r\n this.pageUrls = [];\r\n this.currentRequest = null;\r\n this.preferences = preferencesService.getPreference();\r\n this.isLoading = false;\r\n this.prefetchedPages = {}; // Cache for prefetched pages\r\n }\r\n\r\n init() {\r\n this.listView();\r\n this.gridView();\r\n this.changeOrder();\r\n this.pagination();\r\n this.loadMore();\r\n }\r\n\r\n getNextPage() {\r\n if (this.isLoading) {\r\n return; // Prevent multiple requests\r\n }\r\n\r\n this.isLoading = true; // Set loading flag\r\n const selector = \"div.product-listing\";\r\n const defaultUrl = window.location.href;\r\n const url = this.pageUrls[this.pageIndex] || defaultUrl;\r\n\r\n // Check if our page is already prefetched\r\n if (this.prefetchedPages[this.pageIndex]) {\r\n // Inject all consecutive prefetched pages\r\n while (this.prefetchedPages[this.pageIndex]) {\r\n document.querySelector(selector).insertAdjacentHTML('beforeend', this.prefetchedPages[this.pageIndex]);\r\n utils.productPricing();\r\n console.log(`Page ${this.pageIndex} loaded from prefetched cache`);\r\n delete this.prefetchedPages[this.pageIndex];\r\n this.pageIndex++;\r\n }\r\n this.isLoading = false;\r\n this.prefetchNextPages(); // Attempt to prefetch subsequent pages\r\n return;\r\n }\r\n\r\n const controller = new AbortController();\r\n const signal = controller.signal;\r\n this.currentRequest = controller;\r\n\r\n fetch(url, { signal })\r\n .then(response => response.text())\r\n .then(serverResponse => {\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(serverResponse, 'text/html');\r\n const htmlElement = doc.querySelector(selector);\r\n if (htmlElement) {\r\n const html = htmlElement.innerHTML;\r\n document.querySelector(selector).insertAdjacentHTML('beforeend', html);\r\n utils.productPricing();\r\n console.log(`Page ${this.pageIndex} loaded`);\r\n this.pageIndex++;\r\n }\r\n this.isLoading = false;\r\n this.prefetchNextPages(); // Prefetch next pages after loading current page\r\n })\r\n .catch(error => {\r\n if (error.name === 'AbortError') {\r\n console.log('Fetch aborted');\r\n } else {\r\n console.error('Error fetching the next page:', error);\r\n }\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n prefetchNextPages() {\r\n // Prefetch the next 3 pages, if they exist and are not already cached\r\n for (let i = this.pageIndex; i < this.pageIndex + 3; i++) {\r\n if (i >= this.pageUrls.length || this.prefetchedPages[i]) {\r\n break;\r\n }\r\n const url = this.pageUrls[i];\r\n fetch(url)\r\n .then(response => response.text())\r\n .then(serverResponse => {\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(serverResponse, 'text/html');\r\n const htmlElement = doc.querySelector(\"div.product-listing\");\r\n if (htmlElement) {\r\n this.prefetchedPages[i] = htmlElement.innerHTML;\r\n console.log(`Prefetched page ${i}`);\r\n }\r\n })\r\n .catch(error => {\r\n console.error(`Error prefetching page ${i}:`, error);\r\n });\r\n }\r\n }\r\n\r\n listView() {\r\n const selector = \".change-view .list-view, .change-view-flat .list-view\";\r\n document.querySelectorAll(selector).forEach(element => {\r\n element.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n if (this.currentRequest) {\r\n if (typeof this.currentRequest.abort === 'function') {\r\n this.currentRequest.abort();\r\n }\r\n this.currentRequest = null;\r\n }\r\n\r\n this.preferences.ProductListingView = \"List\";\r\n preferencesService.savePreference(this.preferences);\r\n\r\n document.querySelector(\"div.product-listing\").innerHTML = '';\r\n this.pageIndex = 0;\r\n\r\n this.getNextPage();\r\n });\r\n });\r\n }\r\n\r\n gridView() {\r\n const selector = \".change-view .grid-view, .change-view-flat .grid-view\";\r\n document.querySelectorAll(selector).forEach(element => {\r\n element.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n\r\n if (this.currentRequest) {\r\n if (typeof this.currentRequest.abort === 'function') {\r\n this.currentRequest.abort();\r\n }\r\n this.currentRequest = null;\r\n }\r\n\r\n this.preferences.ProductListingView = \"Grid\";\r\n preferencesService.savePreference(this.preferences);\r\n\r\n document.querySelector(\"div.product-listing\").innerHTML = '';\r\n this.pageIndex = 0;\r\n\r\n this.getNextPage();\r\n });\r\n });\r\n }\r\n\r\n changeOrder() {\r\n document.querySelector(\".change-order #orderby\").addEventListener(\"change\", (e) => {\r\n e.preventDefault();\r\n\r\n if (this.currentRequest) {\r\n if (typeof this.currentRequest.abort === 'function') {\r\n this.currentRequest.abort();\r\n }\r\n this.currentRequest = null;\r\n }\r\n\r\n this.preferences.ProductListingSort = e.target.value;\r\n preferencesService.savePreference(this.preferences);\r\n\r\n document.querySelector(\"div.product-listing\").innerHTML = '';\r\n this.pageIndex = 0;\r\n\r\n this.getNextPage();\r\n });\r\n }\r\n\r\n pagination() {\r\n const nav = document.querySelector('[js-hook-product-pagination] nav');\r\n\r\n if (!nav) {\r\n return;\r\n }\r\n\r\n nav.querySelectorAll(\"a\").forEach((anchor) => {\r\n const rel = anchor.getAttribute(\"rel\");\r\n if (rel === \"prev\" || rel === \"next\") {\r\n return;\r\n }\r\n\r\n const url = anchor.getAttribute(\"href\");\r\n if (url && url !== \"#\") {\r\n this.pageUrls.push(url);\r\n console.log(this.pageUrls.length);\r\n }\r\n });\r\n\r\n utils.productPricing();\r\n }\r\n\r\n loadMore() {\r\n window.addEventListener('scroll', this.debounce(() => {\r\n const pagination = document.querySelector('[js-hook-product-pagination]');\r\n if (!pagination) {\r\n return;\r\n }\r\n\r\n const footer = document.querySelector('footer');\r\n let footerHeight = footer ? footer.offsetHeight : 0;\r\n let offSet = 600;\r\n\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n if (isMobile) {\r\n footerHeight += window.innerHeight;\r\n offSet = 800;\r\n }\r\n\r\n if (window.scrollY + window.innerHeight >= document.documentElement.scrollHeight - footerHeight - offSet) {\r\n console.log(`Getting page ${this.pageIndex} from ${this.pageUrls.length}`);\r\n if (this.pageIndex < this.pageUrls.length) {\r\n this.getNextPage();\r\n }\r\n }\r\n }, 200));\r\n }\r\n\r\n debounce(func, wait) {\r\n let timeout;\r\n return function (...args) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => func.apply(this, args), wait);\r\n };\r\n }\r\n}\r\n\r\nexport default ProductViewFilter;"],"names":["target","i","arguments","length","source","key","api","init","converter","defaultAttributes","set","name","value","attributes","document","expires","Date","now","toUTCString","encodeURIComponent","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","Object","create","get","cookies","jar","parts","slice","join","found","read","e","remove","withAttributes","this","withConverter","freeze","path","cookieKey","getPreference","preferences","Cookies","JSON","parse","savePreference","stringify","productPricing","isMobile","$","window","width","each","$product","productCode","attr","url","done","pricing","$priceNow","find","html","$oldPrice","removeClass","allowChange","outerWidth","parseInt","css","parent","innerWidth","addClass","_typeof","o","Symbol","iterator","constructor","prototype","_defineProperties","r","t","enumerable","configurable","writable","defineProperty","_toPropertyKey","toPrimitive","call","TypeError","String","Number","_toPrimitive","ProductViewFilter","a","n","_classCallCheck","pageIndex","pageUrls","currentRequest","preferencesService","isLoading","prefetchedPages","listView","gridView","changeOrder","pagination","loadMore","_this","selector","defaultUrl","location","href","querySelector","insertAdjacentHTML","utils","prefetchNextPages","controller","AbortController","signal","fetch","then","response","text","serverResponse","htmlElement","DOMParser","parseFromString","innerHTML","error","_this2","_loop","_this3","querySelectorAll","forEach","element","addEventListener","preventDefault","abort","ProductListingView","getNextPage","_this4","_this5","ProductListingSort","_this6","nav","anchor","rel","getAttribute","push","_this7","debounce","footer","footerHeight","offsetHeight","offSet","test","navigator","userAgent","innerHeight","scrollY","documentElement","scrollHeight","func","wait","timeout","_this8","_len","args","Array","_key","clearTimeout","setTimeout","apply"],"sourceRoot":""}