{"version":3,"sources":["priory.blogsCategory.js"],"names":["blogsCategory","getCurrentSession","scope","topic","querySelector","sort","currentPageEl","value","page","dataset","currentPage","parseInt","handleFilters","bindPaging","paging","prev","next","select","addEventListener","applySession","session","results","fetch","then","response","text","data","innerHTML","pageNumber","url","URL","location","Object","keys","forEach","key","searchParams","set","delete","history","pushState","updateSeo","initBlock","filter","window","e","state","ControlBinders","register","el"],"mappings":"AAAA,MAAMA,cAAgB,MACpB,MAAMC,EAAoBC,IACxB,MAAMC,EAAQD,EAAME,cAAc,iBAC5BC,EAAOH,EAAME,cAAc,eAC3BE,EAAgBJ,EAAME,cAAc,uBAC1C,MAAO,CACLD,MAAOA,EAAQA,EAAMI,MAAQ,GAC7BF,KAAMA,EAAOA,EAAKE,MAAQ,GAC1BC,KAAMN,EAAMO,QAAQD,KACpBE,YAAaC,SAASL,EAAgBA,EAAcG,QAAQC,YAAc,MAAQ,IAetF,IAAIE,EACJ,MAAMC,EAAaX,IACjB,MAAMY,EAASZ,EAAME,cAAc,iBACnC,IAAKU,EACH,OAEF,MAAMJ,EAAcT,EAAkBC,GAAOQ,YACvCK,EAAOD,EAAOV,cAAc,kCAC5BY,EAAOF,EAAOV,cAAc,8BAC5Ba,EAASH,EAAOV,cAAc,UAChCW,GACFA,EAAKG,iBAAiB,QAAS,KAC7BN,EAAcV,EAAOQ,EAAc,KAGnCM,GACFA,EAAKE,iBAAiB,QAAS,KAC7BN,EAAcV,EAAOQ,EAAc,KAGnCO,GACFA,EAAOC,iBAAiB,SAAU,KAChCN,EAAcV,EAAOS,SAASM,EAAOV,QAAU,MAI/CY,EAAe,CAACjB,EAAOkB,KAC3B,MAAMC,EAAUnB,EAAME,cAAc,kBACpC,OAAOkB,yDAAyDF,EAAQZ,oBAAoBY,EAAQV,qBAAqBU,EAAQjB,cAAciB,EAAQf,QAAQkB,KAAKC,GAAYA,EAASC,QAAQF,KAAKG,IACpML,EAAQM,UAAYD,IACnBH,KAAK,IAAMV,EAAWX,KAE3BU,EAAgB,EAACV,EAAO0B,KACtB,MAAMR,EAAUnB,EAAkBC,GAElC,OADAkB,EAAQV,YAAckB,EACfT,EAAajB,EAAOkB,GAASG,KAAK,IA/CzBrB,CAAAA,IAChB,MAAMkB,EAAUnB,EAAkBC,GAC5B2B,EAAM,IAAIC,IAAIC,UACpBC,OAAOC,KAAKb,GAASc,QAAQC,IACf,SAARA,GAAkBf,EAAQe,IAAyB,MAAjBf,EAAQe,GAC5CN,EAAIO,aAAaC,IAAIF,EAAKf,EAAQe,IAElCN,EAAIO,aAAaE,OAAOH,KAG5BI,QAAQC,UAAUpB,EAAS,GAAIS,IAqCgBY,CAAUvC,MAuB3D,MAAO,CACLwC,UAtBgBxC,IAChBW,EAAWX,GACXqC,QAAQC,UAAUvC,EAAkBC,GAAQ,GAAI,IAAI4B,IAAIC,WACxD,MAAMY,EAASzC,EAAME,cAAc,iBAC7BC,EAAOH,EAAME,cAAc,eAC7BuC,GACFA,EAAOzB,iBAAiB,SAAU,KAChCN,EAAcV,EAAO,KAGrBG,GACFA,EAAKa,iBAAiB,SAAU,KAC9BN,EAAcV,EAAO,KAGzB0C,OAAO1B,iBAAiB,WAAY2B,IAC9BA,EAAEC,OACJ3B,EAAajB,EAAO2C,EAAEC,YA9ER,GAsFtBC,eAAeC,SAAS,wBAAyBC,GAAMjD,cAAc0C,UAAUO","sourcesContent":["const blogsCategory = (() => {\r\n const getCurrentSession = scope => {\r\n const topic = scope.querySelector('[data-filter]');\r\n const sort = scope.querySelector('[data-sort]');\r\n const currentPageEl = scope.querySelector('[data-current-page]');\r\n\r\n return {\r\n topic: topic ? topic.value : \"\",\r\n sort: sort ? sort.value : \"\",\r\n page: scope.dataset.page,\r\n currentPage: parseInt(currentPageEl ? currentPageEl.dataset.currentPage : \"1\") || 1\r\n };\r\n }\r\n \r\n const updateSeo = scope => {\r\n const session = getCurrentSession(scope);\r\n const url = new URL(location);\r\n \r\n Object.keys(session)\r\n .forEach(key => {\r\n if (key !== \"page\" && session[key] && session[key] !== \"*\") {\r\n url.searchParams.set(key, session[key]); \r\n }\r\n else {\r\n url.searchParams.delete(key);\r\n }\r\n });\r\n \r\n history.pushState(session, \"\", url);\r\n }\r\n \r\n let handleFilters;\r\n\r\n const bindPaging = scope => {\r\n const paging = scope.querySelector('[data-paging]');\r\n\r\n if (!paging) {\r\n return;\r\n }\r\n\r\n const currentPage = getCurrentSession(scope).currentPage;\r\n\r\n const prev = paging.querySelector('.button[title=\"Previous Page\"]');\r\n const next = paging.querySelector('.button[title=\"Next Page\"]');\r\n const select = paging.querySelector('select');\r\n\r\n if (prev){\r\n prev.addEventListener('click', () => {\r\n handleFilters(scope, currentPage - 1);\r\n });\r\n }\r\n\r\n if (next){\r\n next.addEventListener('click', () => {\r\n handleFilters(scope, currentPage + 1);\r\n });\r\n }\r\n\r\n if (select){\r\n select.addEventListener('change', () => {\r\n handleFilters(scope, parseInt(select.value) || 1);\r\n });\r\n }\r\n }\r\n\r\n const applySession = (scope, session) => {\r\n const results = scope.querySelector('[data-results]');\r\n\r\n return fetch(`/umbraco/surface/SearchSurface/SearchBlogs?page=${session.page}¤tPage=${session.currentPage}&topic=${session.topic}&sort=${session.sort}`)\r\n .then(response => response.text())\r\n .then(data => {\r\n results.innerHTML = data;\r\n })\r\n .then(() => bindPaging(scope));\r\n }\r\n\r\n handleFilters = (scope, pageNumber) => {\r\n const session = getCurrentSession(scope);\r\n session.currentPage = pageNumber;\r\n \r\n return applySession(scope, session)\r\n .then(() => updateSeo(scope));\r\n }\r\n \r\n const initBlock = scope => {\r\n bindPaging(scope);\r\n history.pushState(getCurrentSession(scope), \"\", new URL(location));\r\n \r\n const filter = scope.querySelector('[data-filter]');\r\n const sort = scope.querySelector('[data-sort]');\r\n \r\n if (filter){\r\n filter.addEventListener('change', () => {\r\n handleFilters(scope, 1);\r\n });\r\n }\r\n \r\n if (sort){\r\n sort.addEventListener('change', () => {\r\n handleFilters(scope, 1);\r\n });\r\n }\r\n \r\n window.addEventListener(\"popstate\", e => { \r\n if (e.state) {\r\n applySession(scope, e.state); \r\n }\r\n });\r\n }\r\n\r\n return {\r\n initBlock\r\n };\r\n})();\r\nControlBinders.register(`[data-blogs-category]`, el => blogsCategory.initBlock(el));"],"file":"priory.blogsCategory-min.js"}