{"version":3,"file":"index-search.min.js","names":["indexSearchConstructor","document","querySelectorAll","forEach","item","link","linkListItem","closest","setAttribute","camelize","innerText","replace","indexSearchTermsTitle","indexSearchTermsID","searchInputElement","querySelector","siteContentElement","indexSearchElement","indexResultsElement","entrySections","instructionsTextElement","instructionsText","entries","autoCompleteList","visibleEntries","activeEntry","parentItem","autoCompleteJS","autoComplete","selector","placeHolder","getAttribute","threshold","data","src","title","titleText","trim","push","renderDataArrays","cache","resultItem","highlight","resultsList","maxResults","events","input","focus","value","length","start","keyup","classList","remove","add","parentElement","typingLoaderInterval","str","match","index","toLowerCase","toUpperCase","addEventListener","clearInterval","setInterval","window"],"sources":["index-search.js"],"mappings":"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","sourcesContent":["const indexSearchConstructor = function () {\r\n const indexList = document.querySelectorAll('.index-list');\r\n \r\n indexList.forEach((item) => {\r\n const indexEntry = item.querySelectorAll('a');\r\n\r\n indexEntry.forEach((link) => {\r\n const linkListItem = link.closest('li');\r\n\r\n linkListItem.setAttribute('data-entry-id', camelize(link.innerText.replace(/[^a-z0-9]/gi, ' ')));\r\n linkListItem.setAttribute('data-entry-title', link.innerText);\r\n })\r\n });\r\n\r\n let indexSearchTermsTitle = [];\r\n let indexSearchTermsID = [];\r\n\r\n function renderDataArrays(title) {\r\n indexSearchTermsTitle = [];\r\n indexSearchTermsID = [];\r\n \r\n document.querySelectorAll('[data-entry-id]').forEach((item) => {\r\n const titleText = item.getAttribute('data-entry-title').trim();\r\n\r\n indexSearchTermsTitle.push(titleText);\r\n indexSearchTermsID.push(item.getAttribute('data-entry-id'));\r\n });\r\n\r\n if (title !== null) {\r\n return indexSearchTermsTitle;\r\n }\r\n }\r\n\r\n const searchInputElement = document.querySelector('#indexSearchInput');\r\n const siteContentElement = document.querySelector('.site-content');\r\n const indexSearchElement = document.querySelector('.index-search');\r\n const indexResultsElement = document.querySelector('.index-results');\r\n const entrySections = siteContentElement.querySelectorAll('.index-section');\r\n const instructionsTextElement = siteContentElement.querySelector('.index-search__instruction-text');\r\n const instructionsText = instructionsTextElement.innerText;\r\n let entries;\r\n let autoCompleteList;\r\n let visibleEntries;\r\n let activeEntry;\r\n let parentItem;\r\n\r\n const autoCompleteJS = new autoComplete({\r\n selector: \"#indexSearchInput\",\r\n placeHolder: searchInputElement.getAttribute('placeholder'),\r\n threshold: 3,\r\n data: {\r\n src: renderDataArrays(true),\r\n cache: true,\r\n },\r\n resultItem: {\r\n highlight: true,\r\n },\r\n resultsList: {\r\n maxResults: 100000,\r\n },\r\n events: {\r\n input: {\r\n focus() {\r\n if (autoCompleteJS.input.value.length) {\r\n autoCompleteJS.start();\r\n }\r\n },\r\n keyup() {\r\n entries = indexSearchElement.querySelectorAll('li');\r\n autoCompleteList = indexSearchElement.querySelector('[role=\"listbox\"]');\r\n visibleEntries = siteContentElement.querySelectorAll('.js-entry-showing');\r\n \r\n // Add/remove class to site content div if there's visible entries\r\n if (autoCompleteList.getAttribute('hidden') !== null) {\r\n siteContentElement.classList.remove('js-index-entries-showing');\r\n } else {\r\n siteContentElement.classList.add('js-index-entries-showing');\r\n }\r\n\r\n // Remove class from visible entries\r\n visibleEntries.forEach((item) => {\r\n item.classList.remove('js-entry-showing');\r\n });\r\n\r\n // Add visible class to found entries\r\n entries.forEach((item) => {\r\n activeEntry = siteContentElement.querySelector('[data-entry-id=\"' + camelize(item.innerText.replace(/[^a-z0-9]/gi, ' ')) + '\"]');\r\n activeEntry.classList.add('js-entry-showing');\r\n\r\n parentItem = activeEntry.parentElement.closest('li');\r\n\r\n if (parentItem) {\r\n parentItem.classList.add('js-entry-showing');\r\n }\r\n });\r\n\r\n // Add remove class from alpha section(s) with visible entries\r\n entrySections.forEach((item) => {\r\n if (item.querySelector('li.js-entry-showing')) {\r\n item.classList.add('js-section-showing');\r\n } else {\r\n item.classList.remove('js-section-showing');\r\n }\r\n });\r\n\r\n if (autoCompleteJS.input.value.length > 3 && siteContentElement.querySelectorAll('.js-section-showing').length === 0) {\r\n instructionsTextElement.innerText = 'No results found.';\r\n indexResultsElement.classList.add('js-index-section-hidden');\r\n } else {\r\n instructionsTextElement.innerText = instructionsText;\r\n indexResultsElement.classList.remove('js-index-section-hidden');\r\n }\r\n\r\n if (autoCompleteJS.input.value.length < 3) {\r\n siteContentElement.classList.remove('js-search-loader-showing');\r\n }\r\n },\r\n },\r\n },\r\n });\r\n\r\n let typingLoaderInterval = null;\r\n\r\n searchInputElement.addEventListener('input', () => {\r\n clearInterval(typingLoaderInterval);\r\n });\r\n\r\n searchInputElement.addEventListener('results', () => {\r\n siteContentElement.classList.add('js-search-loader-showing');\r\n typingLoaderInterval = setInterval(() => {\r\n siteContentElement.classList.remove('js-search-loader-showing');\r\n }, 500);\r\n });\r\n\r\n function camelize(str) {\r\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function(match, index) {\r\n if (+match === 0) return '';\r\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\r\n });\r\n }\r\n}\r\n\r\nwindow.addEventListener('DOMContentLoaded', indexSearchConstructor);"]}