{"version":3,"sources":["blogList.js"],"names":["blogList","intersectionObserver","el","Obs","IntersectionObserver","entries","observer","forEach","entry","target","setAttribute","isIntersecting","blogs","querySelector","handleGetBlogs","obsOptions","document","querySelectorAll","observe","blogPageId","dataset","blogsLoaded","blogsTotal","blogsCategory","category","fetch","then","response","text","data","outerHTML","blogsLoadedVal","parseInt","updatedBlogsLoaded","spinner","classList","add","handleFilters","filters","addEventListener","options","toggle","option","optionValue","value","remove","innerHTML","count","initBlock","ControlBinders","register"],"mappings":"AAAA,MAAMA,SAAW,MACf,MAKMC,EAAuBC,IAC3B,MAcMC,EAAM,IAAIC,qBAdG,CAACC,EAASC,KAC3BD,EAAQE,QAAQC,IAGd,GAFAA,EAAMC,OAAOC,aAAa,uBAAwBF,EAAMG,gBAEpDH,EAAMG,eAAgB,CACxB,MAAMC,EAAQV,EAAGW,cAAc,qBAE3BD,GACFE,EAAeZ,EAAIU,QAOrBG,EAAa,GACIC,SAASC,iBAAiB,0BAClCV,QAAQL,IACrBC,EAAIe,QAAQhB,EAAIa,MAIdD,EAAiB,CAACZ,EAAIU,KAC1B,MAAMO,EAAaP,EAAMQ,QAAQD,WAC3BE,EAAcT,EAAMQ,QAAQC,YAC5BC,EAAaV,EAAMQ,QAAQE,WAC3BC,EAAgBX,EAAMQ,QAAQI,SAEpCC,2CADiDN,YAAqBE,cAAwBE,KACnFG,KAAKC,GAAYA,EAASC,QAAQF,KAAKG,IAC7BjB,EAAMC,cAAc,0BAC5BiB,UAAYD,EACvB,IAAIE,EAAiBC,SAASX,GAC9BU,GAAkC,EAClCnB,EAAMQ,QAAQC,YAAcU,EAC5B,MAAME,EAAqBrB,EAAMQ,QAAQC,YAEzC,GAAIW,SAASC,IAAuBD,SAASV,GAAa,CACxD,MAAMY,EAAUhC,EAAGW,cAAc,YAE7BqB,GACFA,EAAQC,UAAUC,IAAI,uBAMxBC,EAAgBnC,IACpB,MAAMgC,EAAUhC,EAAGW,cAAc,YAC3BD,EAAQV,EAAGW,cAAc,qBACzByB,EAAUpC,EAAGW,cAAc,qCACjBX,EAAGW,cAAc,uCAEjC,GAAIyB,EAAS,CACXA,EAAQC,iBAAiB,QAAS,KAChCC,EAAQL,UAAUM,OAAO,8CAE3B,MAAMD,EAAUtC,EAAGW,cAAc,uCACjC2B,EAAQvB,iBAAiB,+CAA+CV,QAAQmC,IAC9E,MAAMC,EAAcD,EAAOtB,QAAQwB,MACnCF,EAAOH,iBAAiB,QAAS,KAC/BL,EAAQC,UAAUU,OAAO,mBACLP,EAAQzB,cAAc,2CAC9BiC,UAAYH,EACxBH,EAAQL,UAAUU,OAAO,4CACzBjC,EAAMkC,UAAY,4CAClBlC,EAAMQ,QAAQI,SAAWmB,EACzB/B,EAAMQ,QAAQC,YAAc,IAC5BT,EAAMQ,QAAQE,WAAaoB,EAAOtB,QAAQ2B,YAMlD,MAAO,CACLC,UAhFgB9C,IAChBD,EAAqBC,GACrBmC,EAAcnC,MAHD,GAqFjB+C,eAAeC,SAAS,aAAchD,GAAMF,SAASgD,UAAU9C","sourcesContent":["const blogList = (() => {\r\n\r\n const initBlock = (el) => {\r\n intersectionObserver(el);\r\n handleFilters(el);\r\n };\r\n\r\n const intersectionObserver = (el) => {\r\n const inViewport = (entries, observer) => {\r\n entries.forEach((entry) => {\r\n entry.target.setAttribute('data-spinner-in-view', entry.isIntersecting);\r\n if (entry.isIntersecting) {\r\n const blogs = el.querySelector('.blog-list__blogs');\r\n if (blogs){\r\n handleGetBlogs(el, blogs);\r\n }\r\n }\r\n });\r\n };\r\n const Obs = new IntersectionObserver(inViewport);\r\n const obsOptions = {};\r\n const ELs_inViewport = document.querySelectorAll('[data-spinner-in-view]');\r\n ELs_inViewport.forEach(el => {\r\n Obs.observe(el, obsOptions);\r\n });\r\n }\r\n\r\n const handleGetBlogs = (el, blogs) => {\r\n const blogPageId = blogs.dataset.blogPageId;\r\n const blogsLoaded = blogs.dataset.blogsLoaded;\r\n const blogsTotal = blogs.dataset.blogsTotal;\r\n const blogsCategory = blogs.dataset.category;\r\n const url = `/umbraco/surface/Blog/GetBlogs?id=${blogPageId}&loaded=${blogsLoaded}&category=${blogsCategory}`;\r\n fetch(url)\r\n .then(response => response.text())\r\n .then(data => {\r\n const newElement = blogs.querySelector('.blog-list__blogs__new');\r\n newElement.outerHTML = data;\r\n let blogsLoadedVal = parseInt(blogsLoaded);\r\n blogsLoadedVal = blogsLoadedVal + 6;\r\n blogs.dataset.blogsLoaded = blogsLoadedVal;\r\n const updatedBlogsLoaded = blogs.dataset.blogsLoaded;\r\n if (parseInt(updatedBlogsLoaded) >= parseInt(blogsTotal)){\r\n const spinner = el.querySelector('.spinner');\r\n if (spinner){\r\n spinner.classList.add('spinner--hidden');\r\n }\r\n }\r\n });\r\n }\r\n\r\n const handleFilters = (el) => {\r\n const spinner = el.querySelector('.spinner');\r\n const blogs = el.querySelector('.blog-list__blogs');\r\n const filters = el.querySelector('.blog-list__filter__select__label');\r\n const options = el.querySelector('.blog-list__filter__select__options');\r\n if (filters){\r\n filters.addEventListener('click', () => {\r\n options.classList.toggle('blog-list__filter__select__options--open');\r\n });\r\n const options = el.querySelector('.blog-list__filter__select__options');\r\n options.querySelectorAll('.blog-list__filter__select__options__option').forEach(option => {\r\n const optionValue = option.dataset.value;\r\n option.addEventListener('click', () => {\r\n spinner.classList.remove('spinner--hidden');\r\n const filtersText = filters.querySelector('.blog-list__filter__select__label__text');\r\n filtersText.innerHTML = optionValue;\r\n options.classList.remove('blog-list__filter__select__options--open');\r\n blogs.innerHTML = `
`;\r\n blogs.dataset.category = optionValue;\r\n blogs.dataset.blogsLoaded = \"0\";\r\n blogs.dataset.blogsTotal = option.dataset.count;\r\n });\r\n });\r\n }\r\n }\r\n\r\n return {initBlock};\r\n})();\r\n\r\nControlBinders.register('.blog-list', el => blogList.initBlock(el));"],"file":"blogList-min.js"}