{"version":3,"file":"facetwp.min.js","sources":["../../../assets/js/facetwp.js"],"sourcesContent":["import closeSvg from '../../assets/svg/close.svg';\n\ndocument.addEventListener('DOMContentLoaded', function () {\n\tconst fwp = window.FWP;\n\n\tconst facetsNode = document.querySelector('.facets');\n\tlet facetsActiveNode = document.querySelector('.facets-active');\n\n\tif (!facetsActiveNode) {\n\t\tfacetsActiveNode = document.createElement('div');\n\t\tfacetsActiveNode.className = 'facets-active';\n\t\tfacetsNode.insertAdjacentElement('afterend', facetsActiveNode);\n\t}\n\n\tif (!facetsNode) {\n\t\treturn;\n\t}\n\n\tconst resetLabel = function (node) {\n\t\tconst { settings } = fwp;\n\t\tconst name = node.dataset.name;\n\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst label = settings.labels[ name ];\n\n\t\tif (!label) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst labelNode = node.querySelector('.fs-label');\n\n\t\tif (!labelNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tlabelNode.innerHTML = label;\n\t}\n\n\tdocument.addEventListener('facetwp-refresh', () => {\n\t\tfacetsActiveNode.classList.add('facets-active--loading');\n\t});\n\n\tfwp.hooks.addAction('facetwp/loaded', (e) => {\n\t\tconst { facets, facet_type, settings } = fwp;\n\n\t\tdocument.querySelectorAll('.facetwp-facet[data-type=\"fselect\"]').forEach(resetLabel);\n\n\t\t// close the dropdowns after one has been selected\n\t\tfacetsNode.querySelectorAll('.fs-open').forEach(node => node.classList.remove('fs-open'));\n\t\tfacetsNode.querySelectorAll('.fs-dropdown').forEach(node => node.classList.add('hidden'));\n\n\t\tfacetsActiveNode.classList.remove('facets-active--loading');\n\t\tfacetsActiveNode.innerHTML = '';\n\n\t\tconst fselects = Object.keys(facet_type).filter(facet => facet_type[ facet ] === 'fselect');\n\n\n\t\tconst activeFacetCount = fselects.reduce((carry, facet) => carry + facets[ facet ].length, 0);\n\n\t\tif (activeFacetCount > 1) {\n\t\t\tconst clearButton = document.createElement('button');\n\t\t\tclearButton.type = 'button';\n\t\t\tclearButton.className = 'facet-remove facet-remove--all';\n\t\t\tclearButton.insertAdjacentHTML('afterbegin', `Clear All ${closeSvg}`);\n\t\t\tclearButton.addEventListener('click', () => fwp.reset());\n\n\t\t\tfacetsActiveNode.appendChild(clearButton);\n\t\t}\n\n\t\tconst fSelect = facetsNode.querySelectorAll('.facetwp-type-fselect');\n\t\t//add labels above each facet\n\t\tif (fSelect.length) {\n\t\t\tfSelect.forEach(node => {\n\t\t\t\tconst fLabel = node.querySelector('.facetwp-label');\n\t\t\t\tif (fLabel === null) {\n\t\t\t\t\tconst facet_name = node.getAttribute('data-name');\n\t\t\t\t\tconst facet_label = FWP.settings.labels[ facet_name ];\n\t\t\t\t\tlet labelWrap = document.createElement(\"label\");\n\t\t\t\t\tlabelWrap.classList.add('facetwp-label');\n\t\t\t\t\tlabelWrap.append(facet_label);\n\t\t\t\t\tnode.prepend(labelWrap);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfselects.forEach(facet => {\n\t\t\tfacets[ facet ].forEach(filter => {\n\t\t\t\tconst removeButton = document.createElement('button');\n\t\t\t\tconst option = document.querySelector(`.facetwp-facet[data-name=\"${facet}\"] .fs-option[data-value=\"${filter}\"] .fs-option-label`);\n\t\t\t\tconst label = option ? option.innerText.trim().replace(/\\(\\d+\\)$/, '') : filter;\n\n\t\t\t\tremoveButton.type = 'button';\n\t\t\t\tremoveButton.className = 'facet-remove facet-remove--one';\n\t\t\t\tremoveButton.insertAdjacentHTML('afterbegin', `${label} ${closeSvg}`);\n\t\t\t\tremoveButton.addEventListener('click', () => {\n\t\t\t\t\tfacetsActiveNode.classList.add('facets-active--loading');\n\n\t\t\t\t\twindow.FWP.facets[ facet ] = facets[ facet ].filter(f => f !== filter);\n\t\t\t\t\twindow.FWP.fetchData();\n\t\t\t\t\twindow.FWP.setHash();\n\n\t\t\t\t\tif (window.FWP.last_active_facet) {\n\t\t\t\t\t\tdelete window.FWP.last_active_facet;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfacetsActiveNode.appendChild(removeButton);\n\t\t\t});\n\t\t});\n\n\t\t// scroll the body back up to the facets if we're below (e.g. pagination)\n\t\tif (facetsNode && facetsNode.getBoundingClientRect().top < 0 && window.wdg.scripts.header.headroom) {\n\t\t\t// unpin and freeze the header so we don't cover up the facets when we scroll back up\n\t\t\tconst { headroom } = window.wdg.scripts.header;\n\t\t\theadroom.freeze();\n\t\t\theadroom.unpin();\n\n\t\t\tfacetsNode.scrollIntoView({ behavior: 'smooth' });\n\n\t\t\t// there's no callback for scrollIntoView - the just wait an arbirtary time to unfreeze the header\n\t\t\tsetTimeout(() => headroom.unfreeze(), 1000);\n\t\t}\n\n\t});\n});\n\n\n\n\n"],"names":["document","addEventListener","fwp","window","FWP","facetsNode","querySelector","facetsActiveNode","createElement","className","insertAdjacentElement","resetLabel","node","settings","name","dataset","label","labels","labelNode","innerHTML","classList","add","hooks","addAction","e","facets","facet_type","querySelectorAll","forEach","remove","fselects","Object","keys","filter","facet","reduce","carry","length","clearButton","type","insertAdjacentHTML","closeSvg","reset","appendChild","fSelect","facet_name","getAttribute","facet_label","labelWrap","append","prepend","removeButton","option","innerText","trim","replace","f","fetchData","setHash","last_active_facet","getBoundingClientRect","top","wdg","scripts","header","headroom","freeze","unpin","scrollIntoView","behavior","setTimeout","unfreeze"],"mappings":"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"}