{"version":3,"file":"index-filter.min.js","names":["categoryFilterDropdown","categoryFilterElement","document","querySelectorAll","categoryItemElement","categorySectionElement","siteContentElement","indexFilterElement","categoryFilterToggleText","forEach","item","addEventListener","event","currentIndexFilter","target","closest","classList","add","selectedCatArr","preventDefault","contains","remove","getAttribute","querySelector","length","click","buttonTextArr","push","innerText","value","itemValue","activeElArray","currentValue","itemArr","split","includes","toString","activeFilterCategory","array","seen","filter","hasOwnProperty","cleanArray","addRemoveClassOnFilterItem","string","window","history","replaceState","decodeURIComponent","location","pathname","originalURL","origin","setQueryStringParameter","toLowerCase","toggleText","currentToggleText","join","title","filterEl","dropdownToggleButton","queryString","search","urlParams","URLSearchParams","selectedCatItems","get"],"sources":["index-filter.js"],"mappings":"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","sourcesContent":["function categoryFilterDropdown() {\r\n const categoryFilterElement = document.querySelectorAll('[data-category-filter]');\r\n const categoryItemElement = document.querySelectorAll('[data-category-item]');\r\n const categorySectionElement = document.querySelectorAll('.index-section');\r\n const siteContentElement = document.querySelectorAll('.site-content');\r\n const indexFilterElement = document.querySelectorAll('.index-filter');\r\n const categoryFilterToggleText= document.querySelectorAll('.index-filter .index-filter__toggle-text');\r\n \r\n categoryFilterElement.forEach((item) => { \r\n item.addEventListener('click', (event) => {\r\n const currentIndexFilter = event.target.closest('.index-filter');\r\n currentIndexFilter.classList.add('js-currently-filtering');\r\n const selectedCatArr = [];\r\n event.preventDefault();\r\n \r\n // Allow multiple selections\r\n if (item.classList.contains('active')) {\r\n item.classList.remove('active');\r\n } else {\r\n item.classList.add('active');\r\n }\r\n\r\n // Reset to all if clicked\r\n if (item.getAttribute('data-category-filter') === 'all') {\r\n categoryFilterElement.forEach(item => {\r\n item.classList.remove('active');\r\n });\r\n item.classList.add('active');\r\n } else {\r\n currentIndexFilter.querySelector('[data-category-filter=\"all\"]').classList.remove('active');\r\n }\r\n\r\n // If no active items reset to \"all\" entry\r\n if (currentIndexFilter.querySelectorAll('.active').length === 0) {\r\n currentIndexFilter.querySelector('[data-category-filter=\"all\"]').click();\r\n }\r\n\r\n const buttonTextArr = [];\r\n const selectedItems = currentIndexFilter.querySelectorAll('.active');\r\n \r\n selectedItems.forEach(item => {\r\n selectedCatArr.push(item.getAttribute('data-category-filter'));\r\n buttonTextArr.push(item.innerText);\r\n });\r\n\r\n addRemoveClassOnFilterItem(selectedCatArr);\r\n setQueryStringParameter(selectedCatArr.toString().toLowerCase());\r\n\r\n categoryFilterToggleText.forEach(toggleText => {\r\n const currentToggleText = buttonTextArr.toString().split(',').join(', ');\r\n toggleText.innerText = currentToggleText;\r\n toggleText.closest('button').title = 'Filtering by: ' + currentToggleText;\r\n });\r\n });\r\n });\r\n \r\n function addRemoveClassOnFilterItem(value) {\r\n let activeElArray = [];\r\n let currentValue = value;\r\n let itemValue;\r\n \r\n categoryItemElement.forEach(item => {\r\n const itemElement = item.closest('li') || item;\r\n itemElement.classList.remove('js-category-showing');\r\n \r\n itemValue = item.getAttribute('data-category-item');\r\n let itemArr = itemValue.split(',');\r\n \r\n currentValue.forEach(item => {\r\n if (itemValue !== '' && itemArr.includes(item.toString())) {\r\n activeElArray.push(`[data-category-item=\"${itemValue}\"]`);\r\n }\r\n });\r\n });\r\n \r\n const activeFilterCategory = (currentValue.toString() === 'all' || currentValue.toString() === '') ? null : document.querySelectorAll(cleanArray(activeElArray));\r\n \r\n if (activeFilterCategory !== null) {\r\n activeFilterCategory.forEach(item => {\r\n const itemElement = item.closest('li') || item;\r\n itemElement.classList.add('js-category-showing');\r\n });\r\n }\r\n \r\n categorySectionElement.forEach(item => {\r\n const activeFilterElements = item.querySelectorAll('.js-category-showing');\r\n \r\n if (activeFilterElements.length) {\r\n item.classList.add('js-filter-section-showing');\r\n } else {\r\n item.classList.remove('js-filter-section-showing');\r\n }\r\n });\r\n\r\n siteContentElement.forEach(item => {\r\n const anyActiveFilters = item.querySelectorAll('.js-category-showing');\r\n \r\n if (anyActiveFilters.length) {\r\n item.classList.add('js-index-filter-entries-showing');\r\n } else {\r\n item.classList.remove('js-index-filter-entries-showing');\r\n }\r\n });\r\n }\r\n\r\n indexFilterElement.forEach(item => {\r\n const filterEl = item;\r\n const dropdownToggleButton = item.querySelector('[data-bs-toggle=\"dropdown\"]');\r\n\r\n if (dropdownToggleButton) {\r\n dropdownToggleButton.addEventListener('hide.bs.dropdown', item => {\r\n filterEl.classList.remove('js-currently-filtering');\r\n });\r\n }\r\n });\r\n\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const selectedCatItems = (urlParams.get('cat')) ? urlParams.get('cat').split(',') : null;\r\n\r\n if (selectedCatItems) {\r\n selectedCatItems.forEach(item => {\r\n const selectedFilter = document.querySelector(`[data-category-filter=\"${item}\"]`);\r\n selectedFilter.click();\r\n });\r\n }\r\n\r\n function cleanArray(array) {\r\n let seen = {};\r\n \r\n return array.filter(item => {\r\n return seen.hasOwnProperty(item) ? false : (seen[item] = true);\r\n });\r\n }\r\n\r\n function setQueryStringParameter(string) {\r\n if (string !== '' && string !== 'all') {\r\n window.history.replaceState({}, \"\", decodeURIComponent(`${window.location.pathname}?cat=${string}`));\r\n } else {\r\n const originalURL = location.origin + location.pathname;\r\n window.history.replaceState({}, '', originalURL);\r\n }\r\n }\r\n}\r\n\r\nwindow.addEventListener('DOMContentLoaded', categoryFilterDropdown);"]}