{"version":3,"file":"listing-page.bundle.js","mappings":"yBAyBA,SAASA,EAAaC,EAAWC,EAAaC,GAC1C,IAAIC,EAAc,IAAIC,eAEtB,IAAKD,EAGD,OAFAE,SAAS,yDACTC,QAAQC,IAAI,sCACL,EA2BX,GAxBAJ,EAAYK,mBAAqB,WAC7B,GAAIL,EAAYM,aAAeL,eAAeM,KAC1C,GAA2B,MAAvBP,EAAYQ,OAAgB,CAELC,SAASC,cAAc,oBAE7BC,UAAYX,EAAYY,SCKpDC,EAAeJ,SAASK,iBAAiB,oBAMzCC,EAAc,IAAIC,sBAAqB,SAAUC,GAEpDA,EAAQC,SAAQ,SAAUC,GACzB,GAAIA,EAAMC,eAAgB,CACzB,IAAIC,EAAQF,EAAMG,OAClBD,EAAME,IAAMF,EAAMG,QAAQD,IAC1BF,EAAMI,gBAAgB,YAEtBJ,EAAMK,UAAUC,OAAO,QACvBZ,EAAYa,UAAUP,EAEtB,CAED,GAED,GAnBoB,CACpBQ,WAAY,UAoBbhB,EAAaK,SAAQ,SAAUG,GAC9BN,EAAYe,QAAQT,EACpB,ID3Bc,IACIU,EADStB,SAASC,cAAc,gBACVsB,wBAAwBC,IAAMC,OAAOC,QAC/DD,OAAOE,OAAO,CACVH,IAAKF,EAAe,IACpBM,SAAU,UAIjB,MAEGlC,QAAQC,IAAI,yDAA2DJ,EAAYQ,QC/C5F,IAuCFK,EAMAE,CDKA,GAEIhB,GAAaF,EAAW,CACzB,IAAIyC,EAAQ,CAAEC,SAAU1C,EAAU2C,OAClCN,OAAOO,QAAQC,UAAUJ,EAAO,GAAIzC,EAAU2B,QAAQmB,IACzD,CACD7C,EAAcA,GAA4B,GAC1CA,GAA6BA,EAAY8C,SAAS,KAAO,QAAU,QAEnE5C,EAAY6C,KAAK,MAAO/C,GAAa,GACrCE,EAAY8C,iBAAiB,mBAAoB,kBACjD9C,EAAY+C,MACf,CAjEDtC,SAASuC,iBAAiB,UAAU,SAAUC,GACtCA,EAAE3B,QAAU2B,EAAE3B,OAAO4B,UAAUN,SAAS,QACvBnC,SAASC,cAAc,iBAEpCd,EAAaqD,EAAE3B,OAG1B,IAEDb,SAASuC,iBAAiB,SAAS,SAAUC,GACrCA,EAAE3B,SACsB,KAApB2B,EAAE3B,OAAO6B,UAAmBF,EAAE3B,OAAO4B,UAAUN,SAAS,eAAiBK,EAAE3B,OAAO4B,UAAUN,SAAS,gBACrGK,EAAEG,iBACFxD,EAAa,KAAMqD,EAAE3B,OAAO+B,aAAa,UAEL,KAA/BJ,EAAE3B,OAAOgC,WAAWH,UAAmBF,EAAE3B,OAAOgC,WAAWJ,UAAUN,SAAS,eAAiBK,EAAE3B,OAAOgC,WAAWJ,UAAUN,SAAS,iBAC3IK,EAAEG,iBACFxD,EAAa,KAAMqD,EAAE3B,OAAOgC,WAAWD,aAAa,UAG/D,IA+CDnB,OAAOc,iBAAiB,QAASC,IAC7B,IAAIpD,EAAYY,SAASC,cAAc,yBACvC,GAAIb,EAAW,CACX,IAAIyC,EAAQ,CAAEC,SAAU1C,EAAU2C,OAClCC,QAAQc,aAAajB,EAAO,GAAIzC,EAAU2B,QAAQmB,IACrD,MAEOL,EAAQ,CAAEC,SAAU,IACxBE,QAAQc,aAAajB,EAAO,GAC/B,IAGLJ,OAAOc,iBAAiB,YAAaC,IACjC,GAAIR,QAAQH,MAAO,CACf,IAAIkB,EAAY/C,SAASC,cAAc,wBAA0B+B,QAAQH,MAAMC,SAAW,MACtFiB,IACAA,EAAUC,SAAU,EACpB7D,EAAa4D,EAAW,MAAM,GAErC,I","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';\r\nimport { scrollTo } from '../modules/functions';\r\n\r\ndocument.addEventListener('change', function (e) {\r\n if (e.target && e.target.className.includes(\"tag\")) {\r\n var filterForm = document.querySelector(\".filter-form\");\r\n if (filterForm) {\r\n applyFilters(e.target);\r\n }\r\n }\r\n});\r\n\r\ndocument.addEventListener('click', function (e) {\r\n if (e.target) {\r\n if (e.target.tagName == \"A\" && (e.target.className.includes(\"pag-button\") || e.target.className.includes(\"pag-number\"))) {\r\n e.preventDefault();\r\n applyFilters(null, e.target.getAttribute(\"href\"));\r\n }\r\n else if (e.target.parentNode.tagName == \"A\" && (e.target.parentNode.className.includes(\"pag-button\") || e.target.parentNode.className.includes(\"pag-number\"))) {\r\n e.preventDefault();\r\n applyFilters(null, e.target.parentNode.getAttribute(\"href\"));\r\n }\r\n }\r\n});\r\n\r\nfunction applyFilters(activeTag, queryString, skipState) {\r\n var httpRequest = new XMLHttpRequest();\r\n\r\n if (!httpRequest) {\r\n addError(\"Error retrieving information, please try again later.\");\r\n console.log('Cannot create an XMLHTTP instance'); //TODO: Handle this error\r\n return false;\r\n }\r\n\r\n httpRequest.onreadystatechange = function () {\r\n if (httpRequest.readyState === XMLHttpRequest.DONE) {\r\n if (httpRequest.status === 200) {\r\n\r\n var resultsContainer = document.querySelector(\".listing-results\");\r\n\r\n resultsContainer.outerHTML = httpRequest.response;\r\n lazyLoadImages();\r\n\r\n var filter = document.querySelector(\".filter-form\");\r\n var filterScroll = filter.getBoundingClientRect().top + window.scrollY;\r\n window.scroll({\r\n top: filterScroll - 100,\r\n behavior: 'smooth'\r\n });\r\n\r\n\r\n }\r\n else {\r\n console.log('There was a problem with the request. Request status: ' + httpRequest.status);\r\n }\r\n }\r\n };\r\n\r\n if (!skipState && activeTag) {\r\n var state = { tagValue: activeTag.value };\r\n window.history.pushState(state, \"\", activeTag.dataset.url);\r\n }\r\n queryString = queryString ? queryString : \"\"\r\n queryString = queryString + (queryString.includes(\"?\") ? \"&ajax\" : \"?ajax\")\r\n\r\n httpRequest.open('GET', queryString, true);\r\n httpRequest.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\"); //Ensure 'IsAjaxRequest'\r\n httpRequest.send();\r\n}\r\n\r\nwindow.addEventListener('load', (e) => {\r\n var activeTag = document.querySelector(\".filters .tag:checked\");\r\n if (activeTag) {\r\n var state = { tagValue: activeTag.value };\r\n history.replaceState(state, \"\", activeTag.dataset.url);\r\n }\r\n else {\r\n var state = { tagValue: \"\" };\r\n history.replaceState(state, \"\");\r\n }\r\n});\r\n\r\nwindow.addEventListener('popstate', (e) => {\r\n if (history.state) {\r\n var tagButton = document.querySelector(\".filters .tag[value='\" + history.state.tagValue + \"']\");\r\n if (tagButton) {\r\n tagButton.checked = true;\r\n applyFilters(tagButton, null, true);\r\n }\r\n }\r\n});","export default function initLazyLoadImages() {\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\t\tobserveImages()\r\n\t});\r\n}\r\n\r\nexport function lazyLoadImages() {\r\n\trefreshImages();\r\n}\r\n\r\n\r\n\r\nfunction observeImages() {\r\n\t//Lazy Img sources or sourc sets using attr 'data-'prefixed versions of the attribute\r\n\tvar lazyloadSrcs = document.querySelectorAll(\"[data-src]\");\r\n\r\n\tvar obseverOptions = {\r\n\t\trootMargin: '350px', //magic number (of how far off the page it will define as 'observable'), 350px seems to work nicely\r\n\t}\r\n\r\n\tvar srcObserver = new IntersectionObserver(function (entries) {\r\n\r\n\t\tentries.forEach(function (entry) {\r\n\t\t\tif (entry.isIntersecting) { //what we do when we 'observe' an image come into view\r\n\t\t\t\tvar image = entry.target;\r\n\t\t\t\timage.src = image.dataset.src;\r\n\t\t\t\timage.removeAttribute('data-src');\r\n\r\n\t\t\t\timage.classList.remove(\"blur\");\r\n\t\t\t\tsrcObserver.unobserve(image);\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t}, obseverOptions);\r\n\r\n\tlazyloadSrcs.forEach(function (image) {\r\n\t\tsrcObserver.observe(image); //observe our images, wait for them to come into view\r\n\t});\r\n}\r\n\r\n\r\nfunction refreshImages() {\r\n\t//Lazy Img sources or sourc sets using attr 'data-'prefixed versions of the attribute\r\n\tvar lazyloadSrcs = document.querySelectorAll(\".main [data-src]\");\r\n\r\n\tvar obseverOptions = {\r\n\t\trootMargin: '350px', //magic number (of how far off the page it will define as 'observable'), 350px seems to work nicely\r\n\t}\r\n\r\n\tvar srcObserver = new IntersectionObserver(function (entries) {\r\n\r\n\t\tentries.forEach(function (entry) {\r\n\t\t\tif (entry.isIntersecting) { //what we do when we 'observe' an image come into view\r\n\t\t\t\tvar image = entry.target;\r\n\t\t\t\timage.src = image.dataset.src;\r\n\t\t\t\timage.removeAttribute('data-src');\r\n\r\n\t\t\t\timage.classList.remove(\"blur\");\r\n\t\t\t\tsrcObserver.unobserve(image);\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t}, obseverOptions);\r\n\r\n\tlazyloadSrcs.forEach(function (image) {\r\n\t\tsrcObserver.observe(image); //observe our images, wait for them to come into view\r\n\t});\r\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","replaceState","tagButton","checked"],"sourceRoot":""}