{"version":3,"file":"listing-page.bundle.js","mappings":"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","sources":["webpack://enjoy-digital-frontend-foundation/./assets/src/js/pages/listing-page.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/lazyLoadImages.js"],"sourcesContent":["import { lazyLoadImages } from '../modules/lazyLoadImages';\nimport { scrollTo } from '../modules/functions';\n\ndocument.addEventListener('change', function (e) {\n if (e.target && e.target.className.includes(\"tag\")) {\n var filterForm = document.querySelector(\".filter-form\");\n if (filterForm) {\n applyFilters(e.target);\n }\n }\n});\n\ndocument.addEventListener('click', function (e) {\n if (e.target) {\n if (e.target.tagName == \"A\" && (e.target.className.includes(\"pag-button\") || e.target.className.includes(\"pag-number\"))) {\n e.preventDefault();\n applyFilters(null, e.target.getAttribute(\"href\"));\n }\n else if (e.target.parentNode.tagName == \"A\" && (e.target.parentNode.className.includes(\"pag-button\") || e.target.parentNode.className.includes(\"pag-number\"))) {\n e.preventDefault();\n applyFilters(null, e.target.parentNode.getAttribute(\"href\"));\n }\n else if (e.target.closest('.filter-tag-link')) {\n var href = e.target.closest('.filter-tag-link').getAttribute('href');\n var filterBtn = document.querySelector('.filters .tag[data-url=\"' + href + '\"]');\n if (filterBtn) {\n e.preventDefault();\n filterBtn.checked = true;\n filterBtn.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n }\n});\n\nfunction applyFilters(activeTag, queryString, skipState) {\n var httpRequest = new XMLHttpRequest();\n\n if (!httpRequest) {\n addError(\"Error retrieving information, please try again later.\");\n console.log('Cannot create an XMLHTTP instance'); //TODO: Handle this error\n return false;\n }\n\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState === XMLHttpRequest.DONE) {\n if (httpRequest.status === 200) {\n\n var resultsContainer = document.querySelector(\".listing-results\");\n\n resultsContainer.outerHTML = httpRequest.response;\n lazyLoadImages();\n\n var filter = document.querySelector(\".filter-form\");\n var filterScroll = filter.getBoundingClientRect().top + window.scrollY;\n window.scroll({\n top: filterScroll - 100,\n behavior: 'smooth'\n });\n\n\n }\n else {\n console.log('There was a problem with the request. Request status: ' + httpRequest.status);\n }\n }\n };\n\n if (!skipState && activeTag) {\n var state = { tagValue: activeTag.value };\n window.history.pushState(state, \"\", activeTag.dataset.url);\n }\n queryString = queryString ? queryString : \"\"\n queryString = queryString + (queryString.includes(\"?\") ? \"&ajax\" : \"?ajax\")\n\n httpRequest.open('GET', queryString, true);\n httpRequest.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\"); //Ensure 'IsAjaxRequest'\n httpRequest.send();\n}\n\nwindow.addEventListener('load', (e) => {\n var activeTag = document.querySelector(\".filters .tag:checked\");\n if (activeTag) {\n var state = { tagValue: activeTag.value };\n history.replaceState(state, \"\", activeTag.dataset.url);\n }\n else {\n var state = { tagValue: \"\" };\n history.replaceState(state, \"\");\n }\n});\n\nwindow.addEventListener('popstate', (e) => {\n if (history.state) {\n var tagButton = document.querySelector(\".filters .tag[value='\" + history.state.tagValue + \"']\");\n if (tagButton) {\n tagButton.checked = true;\n applyFilters(tagButton, null, true);\n }\n }\n});","export default function initLazyLoadImages() {\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t\tobserveImages()\n\t});\n}\n\nexport function lazyLoadImages() {\n\trefreshImages();\n}\n\n\n\nfunction observeImages() {\n\t//Lazy Img sources or sourc sets using attr 'data-'prefixed versions of the attribute\n\tvar lazyloadSrcs = document.querySelectorAll(\"[data-src]\");\n\n\tvar obseverOptions = {\n\t\trootMargin: '350px', //magic number (of how far off the page it will define as 'observable'), 350px seems to work nicely\n\t}\n\n\tvar srcObserver = new IntersectionObserver(function (entries) {\n\n\t\tentries.forEach(function (entry) {\n\t\t\tif (entry.isIntersecting) { //what we do when we 'observe' an image come into view\n\t\t\t\tvar image = entry.target;\n\t\t\t\timage.src = image.dataset.src;\n\t\t\t\timage.removeAttribute('data-src');\n\n\t\t\t\timage.classList.remove(\"blur\");\n\t\t\t\tsrcObserver.unobserve(image);\n\n\t\t\t}\n\n\t\t});\n\n\t}, obseverOptions);\n\n\tlazyloadSrcs.forEach(function (image) {\n\t\tsrcObserver.observe(image); //observe our images, wait for them to come into view\n\t});\n}\n\n\nfunction refreshImages() {\n\t//Lazy Img sources or sourc sets using attr 'data-'prefixed versions of the attribute\n\tvar lazyloadSrcs = document.querySelectorAll(\".main [data-src]\");\n\n\tvar obseverOptions = {\n\t\trootMargin: '350px', //magic number (of how far off the page it will define as 'observable'), 350px seems to work nicely\n\t}\n\n\tvar srcObserver = new IntersectionObserver(function (entries) {\n\n\t\tentries.forEach(function (entry) {\n\t\t\tif (entry.isIntersecting) { //what we do when we 'observe' an image come into view\n\t\t\t\tvar image = entry.target;\n\t\t\t\timage.src = image.dataset.src;\n\t\t\t\timage.removeAttribute('data-src');\n\n\t\t\t\timage.classList.remove(\"blur\");\n\t\t\t\tsrcObserver.unobserve(image);\n\n\t\t\t}\n\n\t\t});\n\n\t}, obseverOptions);\n\n\tlazyloadSrcs.forEach(function (image) {\n\t\tsrcObserver.observe(image); //observe our images, wait for them to come into view\n\t});\n}"],"names":["applyFilters","activeTag","queryString","skipState","httpRequest","XMLHttpRequest","addError","console","log","onreadystatechange","readyState","DONE","status","document","querySelector","outerHTML","response","lazyloadSrcs","querySelectorAll","srcObserver","IntersectionObserver","entries","forEach","entry","isIntersecting","image","target","src","dataset","removeAttribute","classList","remove","unobserve","rootMargin","observe","filterScroll","getBoundingClientRect","top","window","scrollY","scroll","behavior","state","tagValue","value","history","pushState","url","includes","open","setRequestHeader","send","addEventListener","e","className","tagName","preventDefault","getAttribute","parentNode","closest","href","filterBtn","checked","dispatchEvent","Event","bubbles","replaceState","tagButton"],"sourceRoot":""}