{"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\t// Add class to show currently paged\n\tconst url_string = window.location.href;\n\tconst url = new URL(url_string);\n\tconst pagedValue = url.searchParams.get(\"_paged\");\n\tif( pagedValue !== null ) {\n\t\tif( document.querySelector('.facetwp-template .facet-cards') ) {\n\t\t\tdocument.querySelector('.facetwp-template .facet-cards').classList.add('paged');\n\t\t}\n\t}else {\n\t\tif( document.querySelector('.facetwp-template .facet-cards') ) {\n\t\t\tdocument.querySelector('.facetwp-template .facet-cards').classList.remove('paged');\n\t\t}\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\t// Add class to show currently paged\n\t\tconst url_string = window.location.href;\n\t\tconst url = new URL(url_string);\n\t\tconst pagedValue = url.searchParams.get(\"_paged\");\n\t\tif( pagedValue !== null ) {\n\t\t\tif( document.querySelector('.facetwp-template .facet-cards') ) {\n\t\t\t\tdocument.querySelector('.facetwp-template .facet-cards').classList.add('paged');\n\t\t\t}\n\t\t}else {\n\t\t\tif( document.querySelector('.facetwp-template .facet-cards') ) {\n\t\t\t\tdocument.querySelector('.facetwp-template .facet-cards').classList.remove('paged');\n\t\t\t}\n\t\t}\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\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\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\t} );\n} );\n"],"names":["document","addEventListener","fwp","window","FWP","facetsNode","querySelector","facetsActiveNode","createElement","className","insertAdjacentElement","resetLabel","node","settings","name","dataset","label","labels","labelNode","innerHTML","url_string","location","href","URL","searchParams","get","classList","add","remove","hooks","addAction","e","facets","facet_type","querySelectorAll","forEach","fselects","Object","keys","filter","facet","reduce","carry","length","clearButton","type","insertAdjacentHTML","closeSvg","reset","appendChild","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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"}