function accordion_script(wpgbAccordion=null){const accordionInstances=new WeakMap();class Accordion{constructor(element,options){this.element=element;this.options=options;this.isScrolling=!1;this.scrollTimeout=null;this.initialHashHandled=!1;if(!this.validateStructure()){return} this.removePlaceholder();this.removePlaceholderChild();this.accordionItems=this.element.querySelectorAll(':scope > .fr-accordion__item');this.lastOpenedItem=null;this.init();accordionInstances.set(this.element,this);if(this.options.scrollToHash&&location.hash){this.handleInitialHash()}} init(){this.setEventListeners();this.handleFirstItemOpened();this.handleAllItemsExpanded();this.handleExpandedClass();this.handleScrollToHash();this.handleShowDuration();this.addTabindex();this.addIdToBody();this.addAriaControls();this.addIdToHeader();this.addAriaLabelledBy();this.addFaqSchema();this.addRoleButton();this.ITEMS(item=>{if(this.HEADER(item).getAttribute('aria-expanded')!=='true'){this.updateFocusableTabIndex(item,!1)}});this.ITEMS(item=>{const expandedCurrentLink=this.options.expandedCurrentLink;if(this.hasCurrentPageLink(item)&&expandedCurrentLink===!1){this.expandItem(item)}})} BODY(item){const body=item.querySelector('.fr-accordion__body');if(!body&&item.children.length>1&&item.children[1].tagName!=='STYLE'){return item.children[1]} return body} HEADER(item){const header=item.querySelector('.fr-accordion__header');if(!header&&item.children.length>0&&item.children[0].tagName!=='STYLE'){return item.children[0]} return header} ITEMS(init){this.accordionItems.forEach(item=>{if(item.tagName!=='STYLE'&&!item.classList.contains('brx-nestable-children-placeholder')&&!(item.tagName==='DIV'&&item.classList.contains('brx-query-trail'))){init(item)}})} removePlaceholder(){const placeholder=this.element.querySelector('.brx-nestable-children-placeholder');const accordionChildren=this.element.querySelectorAll('.fr-accordion__item');if(placeholder){placeholder.remove()} if(accordionChildren.length===0){const newPlaceholder=document.createElement('li');newPlaceholder.className='brx-nestable-children-placeholder fr-accordion__item';this.element.appendChild(newPlaceholder)}} setEventListeners(){this.ITEMS((item)=>this.attachHeaderListeners(item))} attachHeaderListeners(item){const header=this.HEADER(item);header.addEventListener('click',()=>{this.headerInteraction(item)});header.addEventListener('keydown',(e)=>{if(e.key==='Enter'){this.headerInteraction(item)}});header.addEventListener('keyup',(e)=>{if(e.key===' '){this.headerInteraction(item)}})} generateUniqueId(item){if(!this.usedIds){this.usedIds=new Set()} const header=this.HEADER(item);if(header.id){this.usedIds.add(header.id);return header.id} const title=header.querySelector('.fr-accordion__title');if(title){const titleText=title.textContent.trim();let textForId=titleText.split(' ').slice(0,3).join('-').toLowerCase().replace(/[^a-z0-9-]/g,'-').replace(/-+/g,'-').replace(/^-|-$/g,'');if(this.usedIds.has(textForId)){let counter=2;let newId=`${textForId}-${counter}`;while(this.usedIds.has(newId)){counter++;newId=`${textForId}-${counter}`} textForId=newId} this.usedIds.add(textForId);return textForId} const fallbackId=`accordion-item-${Math.random().toString(36).substr(2, 9)}`;this.usedIds.add(fallbackId);return fallbackId} headerInteraction(item){if(window.innerWidth<=this.options.scrollToHeadingOn){this.scrollToItemHeader(item)} if(this.options.closePreviousItem&&this.options.allItemsExpanded){this.ITEMS((otherItem)=>{if(otherItem!==item){this.collapseItem(otherItem)}})}else if(this.options.closePreviousItem&&this.lastOpenedItem&&this.lastOpenedItem!==item){this.collapseItem(this.lastOpenedItem)} this.toggleItem(item);this.lastOpenedItem=this.HEADER(item).getAttribute('aria-expanded')==='true'?item:null} scrollToItemHeader(item){if(!this.options.scrollToHeading)return;setTimeout(()=>{this.HEADER(item).scrollIntoView({behavior:'smooth',block:'start',inline:'nearest'})},this.options.showDuration)} toggleItem(item){if(this.HEADER(item).getAttribute('aria-expanded')==='true'){this.collapseItem(item)}else{this.expandItem(item)}} flipIcon(item){const icon=this.HEADER(item).querySelector('.fr-accordion__icon');if(icon){icon.style.transition=`transform ${this.options.showDuration}ms ease-in-out`;icon.classList.toggle('fr-accordion__icon--flipped')}} handleFirstItemOpened(){if(!this.options.firstItemOpened)return;this.expandItem(this.accordionItems[0],!0);this.lastOpenedItem=this.accordionItems[0]} handleAllItemsExpanded(){if(!this.options.allItemsExpanded)return;this.ITEMS((item)=>this.expandItem(item,!0))} handleExpandedClass(){if(!this.options.expandedClass)return;this.ITEMS((item)=>{if(item.classList.contains('fr-accordion__item--expanded')){this.expandItem(item)}})} handleScrollToHash(){if(!this.options.scrollToHash)return;document.addEventListener('click',(e)=>{const link=e.target.closest('a[href^="#"]');if(!link)return;const targetHeader=this.element.querySelector(link.hash);if(!targetHeader?.classList.contains('fr-accordion__header'))return;const targetItem=targetHeader.closest('.fr-accordion__item');if(targetItem){e.preventDefault();this.scrollToItemAndExpand(targetItem);history.pushState(null,'',link.hash)}});window.addEventListener('popstate',(e)=>{if(location.hash){const targetHeader=this.element.querySelector(location.hash);if(!targetHeader?.classList.contains('fr-accordion__header'))return;const targetItem=targetHeader.closest('.fr-accordion__item');if(targetItem){this.scrollToItemAndExpand(targetItem)}}})} handleInitialHash(){if(this.initialHashHandled)return;const hash=location.hash;const targetHeader=this.element.querySelector(hash);if(!targetHeader?.classList.contains('fr-accordion__header'))return;const targetItem=targetHeader.closest('.fr-accordion__item');if(!targetItem)return;if(document.readyState==='complete'){this.scrollToInitialHash(targetItem)}else{window.addEventListener('load',()=>this.scrollToInitialHash(targetItem))} this.initialHashHandled=!0} scrollToInitialHash(targetItem){if(this.options.closePreviousItem){this.ITEMS((item)=>{if(item!==targetItem&&this.HEADER(item).getAttribute('aria-expanded')==='true'){this.collapseItem(item)}})} this.expandItem(targetItem);this.lastOpenedItem=targetItem;setTimeout(()=>{const header=this.HEADER(targetItem);const totalOffset=parseInt(this.options.scrollOffset)||1;const headerPosition=header.getBoundingClientRect().top+window.scrollY-totalOffset;window.scrollTo({top:Math.max(0,headerPosition),behavior:'instant'})},this.options.showDuration)} scrollToItemAndExpand(item){let needsDelay=!1;if(this.options.closePreviousItem){if(this.options.allItemsExpanded){this.ITEMS((otherItem)=>{if(otherItem!==item){this.collapseItem(otherItem);needsDelay=!0}})}else if(this.lastOpenedItem&&this.lastOpenedItem!==item){this.collapseItem(this.lastOpenedItem);needsDelay=!0}} if(this.scrollTimeout){clearTimeout(this.scrollTimeout)} this.expandItem(item);this.lastOpenedItem=item;requestAnimationFrame(()=>{const header=this.HEADER(item);const defaultOffset=1;const customOffset=parseInt(this.options.scrollOffset)||0;const totalOffset=customOffset||defaultOffset;const headerPosition=header.getBoundingClientRect().top+window.scrollY-totalOffset;window.scrollTo({top:Math.max(0,headerPosition),behavior:'smooth'})})} expandItem(item,isAutomatic=!1){const body=this.BODY(item);const header=this.HEADER(item);const isAlreadyExpanded=header.getAttribute('aria-expanded')==='true';if(isAlreadyExpanded){return} body.style.height=body.scrollHeight+'px';header.setAttribute('aria-expanded','true');if(this.options.scrollToHash&&header.id&&!isAutomatic){const newUrl=`${window.location.pathname}${window.location.search}#${header.id}`;history.replaceState(null,'',newUrl)} const expandEvent=new CustomEvent('accordionItemExpanded',{detail:{item:item}});this.element.dispatchEvent(expandEvent);this.flipIcon(item);this.updateFocusableTabIndex(item,!0)} collapseItem(item){const body=this.BODY(item);const header=this.HEADER(item);const isAlreadyCollapsed=header.getAttribute('aria-expanded')==='false';if(isAlreadyCollapsed){return} body.style.height=body.offsetHeight+'px';setTimeout(()=>{body.style.height=0},0);header.setAttribute('aria-expanded','false');if(this.options.scrollToHash&&header.id&&location.hash===`#${header.id}`){history.replaceState(null,'',window.location.pathname+window.location.search)} const collapseEvent=new CustomEvent('accordionItemCollapsed',{detail:{item:item}});this.element.dispatchEvent(collapseEvent);this.flipIcon(item);this.updateFocusableTabIndex(item,!1)} handleShowDuration(){if(!this.options.showDuration)return;this.ITEMS((item)=>{this.BODY(item).style.transitionDuration=this.options.showDuration+'ms';this.HEADER(item).style.transitionDuration=this.options.showDuration+'ms';this.HEADER(item).querySelector('.fr-accordion__title').style.transitionDuration=this.options.showDuration+'ms'})} addTabindex(){this.ITEMS((item)=>{this.HEADER(item).setAttribute('tabindex',0)})} addIdToBody(){this.ITEMS((item)=>{if(!this.BODY(item).id){this.BODY(item).id='fr-accordion__body-'+Math.random().toString(36).substr(2,9)}})} addIdToHeader(){this.ITEMS((item)=>{const header=this.HEADER(item);if(!header.id){header.id=this.generateUniqueId(item)}})} addAriaControls(){this.ITEMS((item)=>{this.HEADER(item).setAttribute('aria-controls',this.BODY(item).id)})} addAriaLabelledBy(){this.ITEMS((item)=>{this.BODY(item).setAttribute('aria-labelledby',this.HEADER(item).id)})} addRoleRegion(){this.ITEMS((item)=>{this.BODY(item).setAttribute('role','region')})} addRoleButton(){this.ITEMS((item)=>{this.HEADER(item).setAttribute('role','button')})} addFaqSchema(){if(this.options.faqSchema){const faqData=[];this.ITEMS((item)=>{const question=this.HEADER(item).textContent.trim();const answer=this.BODY(item).textContent.trim();faqData.push({'@type':'Question','name':question,'acceptedAnswer':{'@type':'Answer','text':answer,},})});const faqSchema={'@context':'https://schema.org','@type':'FAQPage','mainEntity':faqData,};const script=document.createElement('script');script.type='application/ld+json';script.innerHTML=JSON.stringify(faqSchema);document.head.appendChild(script)}} validateStructure(){if(this.element.children.length===0){console.warn('The fr-accordion has no children.',this.element);return!1} const validChildren={'UL':(child)=>child.tagName==='LI'||child.tagName==='STYLE'||(child.tagName==='DIV'&&child.classList.contains('brx-query-trail')),'OL':(child)=>child.tagName==='LI'||child.tagName==='STYLE'||(child.tagName==='DIV'&&child.classList.contains('brx-query-trail'))};for(const child of this.element.children){if(child.tagName==='STYLE'||child.classList.contains('brxe-pagination')||Array.from(child.classList).some(className=>className.startsWith('brxe-filter-'))){console.log('found wpgb or bricks element, continuing',child);continue} if(!child.classList.contains('fr-accordion__item')){child.classList.add('fr-accordion__item')} const body=child.querySelector('.fr-accordion__body');const header=child.querySelector('.fr-accordion__header');if(!header||!body){console.warn('Accordion items do not have a Header or a Body element',child);return!1} if(child.children.length>2){console.warn('Remove extra children elements from accordion item:',child);return!1} if(child.children.length<2&&child.children.length>0){console.warn('Add a header and a body to accordion item:',child);return!1} if(this.element.tagName==='UL'||this.element.tagName==='OL'){if(!validChildren[this.element.tagName](child)){console.warn(`Direct child of the "ul" or "ol" element should have a tag of "li" instead of "${child.tagName}"`,child)}}} return!0} removePlaceholderChild(){if(this.element.querySelectorAll('.brx-nestable-children-placeholder')){this.element.querySelectorAll('.brx-nestable-children-placeholder').forEach(el=>{el.remove()})}} updateFocusableTabIndex(item,isOpened){const focusableSelectors='a[href], button, textarea, input[type="text"], input[type="radio"], input[type="checkbox"], select';const focusables=item.querySelectorAll(focusableSelectors);focusables.forEach(el=>{el.setAttribute('tabindex',isOpened?'0':'-1')})} hasCurrentPageLink(item){return this.BODY(item).querySelector('a[aria-current="page"]')}} function framesGetAccordionInstance(element){return accordionInstances.get(element)} window.getAccordionInstance=framesGetAccordionInstance;if(wpgbAccordion){if(!wpgbAccordion.dataset.frAccordionOptions){console.warn('Options not provided for the following fr-accordion element:',wpgbAccordion);return} const options=JSON.parse(wpgbAccordion.dataset.frAccordionOptions);new Accordion(wpgbAccordion,options)}else{const accordions=document.querySelectorAll('.fr-accordion');accordions.forEach(accordion=>{if(!accordion.dataset.frAccordionOptions){console.warn('Options not provided for the following fr-accordion element:',accordion);return} const options=JSON.parse(accordion.dataset.frAccordionOptions);new Accordion(accordion,options)})} function accordion_script_builder(){if(!document.querySelector('.brx-body.iframe.mounted'))return;const accordions=document.querySelectorAll('.fr-accordion');accordions.forEach(accordion=>{const items=Array.from(accordion.children);items.forEach(item=>{const header=item.children[0];const body=item.children[1];header.addEventListener('click',()=>{body.style.height=body.style.height==='auto'?'0px':'auto';header.setAttribute('aria-expanded',header.getAttribute('aria-expanded')==='true'?'false':'true')})})})} accordion_script_builder()} function wpgb_accordion_script(){window.WP_Grid_Builder&&WP_Grid_Builder.on('init',function(wpgb){console.dir(wpgb);console.log('console logging WPGB:',wpgb);wpgb.facets.on('appended',function(nodes){const wpgbAccordionsSet=new Set();nodes.forEach(node=>{const wpgbAccordion=node.closest('.fr-accordion.wpgb-enabled');if(wpgbAccordion){wpgbAccordionsSet.add(wpgbAccordion)}});wpgbAccordionsSet.forEach(wpgbAccordion=>{const instance=window.getAccordionInstance(wpgbAccordion);if(instance){accordion_script(wpgbAccordion)}})})})} function runAccordionScriptsOnBricksFilters(){if(typeof window.bricksFilters!=='function')return;const bricksFilterRun=bricksFiltersFn.run;bricksFiltersFn.run=function(){bricksFilterRun.apply();document.querySelectorAll('.fr-accordion').forEach(accordion=>{clearEventListeners(accordion);accordion_script(accordion)})}} function clearEventListeners(accordion){if(!bricksIsFrontend)return;const accordionHeaders=accordion.querySelectorAll('.fr-accordion__header');accordionHeaders.forEach(header=>{const newHeader=header.cloneNode(!0);header.parentNode.replaceChild(newHeader,header)})} document.addEventListener('DOMContentLoaded',function(e){bricksIsFrontend&&accordion_script();bricksIsFrontend&&wpgb_accordion_script();bricksIsFrontend&&runAccordionScriptsOnBricksFilters()})