"use strict";(self.heliuxModules=self.heliuxModules||[]).push([[7287],{30829:(t,s,i)=>{var e=i(58480),n=i(48669),h=i(56773),o=i(58800);const l={threshold:50,passive:!1},r="swipeLeft",c="swipeRight",a="swipeUp",d="swipeDown",u="tap";class b{constructor(t,s={}){this.options={...l,...s},this.listeners={},this.element=null,this.touchStartX=0,this.touchStartY=0,this.touchEndX=0,this.touchEndY=0,this.swipeConditions={[r]:()=>this.touchEndX+this.options.threshold<=this.touchStartX,[c]:()=>this.touchEndX-this.options.threshold>=this.touchStartX,[a]:()=>this.touchEndY+this.options.threshold<=this.touchStartY,[d]:()=>this.touchEndY-this.options.threshold>=this.touchStartY,[u]:()=>this.touchEndY===this.touchStartY};const i=!!this.options.passive&&{passive:!0};this.element=t instanceof EventTarget?t:document.querySelector(t),this.bindOnTouchStart=this.onTouchStart.bind(this),this.bindOnTouchEnd=this.onTouchEnd.bind(this),this.element.addEventListener("touchstart",this.bindOnTouchStart,i),this.element.addEventListener("touchend",this.bindOnTouchEnd,i)}onTouchStart(t){this.touchStartX=t.changedTouches[0].screenX,this.touchStartY=t.changedTouches[0].screenY}onTouchEnd(t){this.touchEndX=t.changedTouches[0].screenX,this.touchEndY=t.changedTouches[0].screenY,this.handleGesture()}addEventListener(t,s){this.listeners[t]=s}destroy(){this.element.removeEventListener("touchstart",this.bindOnTouchStart),this.element.removeEventListener("touchend",this.bindOnTouchEnd)}handleGesture(){Object.keys(this.swipeConditions).forEach((t=>{this.swipeConditions[t]()&&this.listeners[t]&&this.listeners[t]()}))}}var g=i(3496);class w extends e.ComponentBase{init(){this.config={...g.R,...this.config},this.getElements(),this.scrollIntoViewDebounced=(0,e.debounce)(this.scrollIntoView.bind(this),10),this.tabs.length>0&&(this.setup(),(0,h.h)((()=>this.resize())))}resize(){this.showArrows(),this.getSizes(),this.scrollMenuIntoView()}getSizes(){this.containerBounding=this.container.getBoundingClientRect()}setup(){let t=0;this.tabs.forEach(((s,i)=>{this.addEvents(s,i),this.addAttributes(s,i),s.bounding=s.getBoundingClientRect(),s.classList.contains(this.config.modifiers.visible)&&(t=i)})),this.getSizes(),this.index=t,this.scrollBounding=this.scroll.getBoundingClientRect(),this.tablistBounding=this.tablist.getBoundingClientRect(),this.scrollWidth=this.scroll.scrollWidth,this.clientWidth=this.scroll.clientWidth,this.showArrows(),this.setHeight(),this.tabslistScrollingListener(),this.handleDuplicatedSvgs(),this.el.classList.contains(this.config.classes.swipper)&&!(0,n.vh)().matches&&(this.stickyElement=new o.y(this.scroll,{setPadding:!0,limitElementID:this.el.id}),this.swiper=new b(this.container),this.swiper.addEventListener(c,(()=>this.move(-1))),this.swiper.addEventListener(r,(()=>this.move(1))))}showArrows(){if(this.scroll){const t=this.tablistBounding.width,s=this.scrollBounding.width,i=this.scroll.scrollWidth,e=this.scroll.clientWidth;Math.ceil(this.scroll.scrollLeft)>=i-e?this.rightArrow.classList.remove(this.config.modifiers.arrowVisible):this.rightArrow.classList.add(this.config.modifiers.arrowVisible),s<t&&this.scroll.scrollLeft>0?this.leftArrow.classList.add(this.config.modifiers.arrowVisible):this.leftArrow.classList.remove(this.config.modifiers.arrowVisible)}}setHeight(){this.el.style.setProperty("--tabs-tablist-height",`${this.tablist.getBoundingClientRect().height}px`)}get index(){return this.localindex||0}set index(t){const s=this.tabs.length-1;this.localindex=t,this.localindex>s&&(this.localindex=0),this.localindex<0&&(this.localindex=s),this.open()}addAttributes(t,s){const i=`tab_${this.el.id}_${s}`,e=`panel_${this.el.id}_${s}`;if(t.setAttribute("id",i),this.panels){const n=this.panels[s];n.setAttribute("id",e),t.setAttribute("aria-controls",e),n.setAttribute("aria-labelledby",i)}}addEvents(t,s){t.addEventListener("click",(t=>{this.loadTabPanel(this.panels[s]),this.select(s,t)})),t.addEventListener("keydown",(t=>this.keydown(t))),(0,e.subscribe)(`Tabs::${this.el.id}::index`,(t=>this.select(Number(t.index)))),this.el.classList.contains(this.config.modifiers.clickableArrows)&&(0,n.ft)().matches&&this.arrowIcon.forEach((t=>{t.addEventListener("click",(()=>{this.tabslistScrolling(t)}))}))}loadTabPanel(t){const s=t.getAttribute(this.config.attributes.lazyloadUrl);s&&fetch(`${s}`).then((t=>t.text())).then((s=>{t.innerHTML=s,t.removeAttribute(this.config.attributes.lazyloadUrl)})).catch((t=>console.error(t)))}tabslistScrollingListener(){this.scrollBounding.width<this.tablistBounding.width&&this.scroll.addEventListener("scroll",(()=>{this.showArrows()}))}tabslistScrolling(t){t.classList.contains(this.config.classes.leftArrow)&&this.tabslistScrollingDirection(0),t.classList.contains(this.config.classes.rightArrow)&&this.tabslistScrollingDirection(this.tablistBounding.width)}tabslistScrollingDirection(t){this.scroll.scroll({left:t,behavior:"smooth"})}prevent(t){t&&t.preventDefault()}select(t,s){this.prevent(s),this.index=t}open(){const t=this.scroll.getBoundingClientRect().top;this.tabs.forEach(((t,s)=>{this.index===s?this.show(s):this.hide(s)})),window.scrollTo({top:window.pageYOffset+this.scroll.getBoundingClientRect().top-t})}move(t){this.index+=t}keydown(t){const{keyCode:s}=t,{ARROW_LEFT:i,ARROW_RIGHT:n}=e.keyMap;i===s&&this.move(-1),n===s&&this.move(1)}show(t){this.tab=this.tabs[t],this.panel=this.panels[t],this.tab.setAttribute("tabindex",0),this.panel.setAttribute("tabindex",0),this.tab.classList.add(this.config.modifiers.visible),!this.el.classList.contains(this.config.classes.swipper)||(0,n.vh)().matches?(this.panel.removeAttribute("hidden"),this.panel.classList.add(this.config.modifiers.visible),this.scrollMenuIntoView()):this.scrollIntoViewDebounced()}scrollIntoView(){const t=this.containerBounding.width;this.container.scrollTo({top:0,left:t*this.index,behavior:"smooth"}),this.scrollMenuIntoView()}scrollMenuIntoView(){const t=this.containerBounding.width,{x:s,width:i}=this.tabs[this.index].bounding,e=s-t/2+i/2;this.scroll.scrollTo({behavior:"smooth",left:e})}hide(t){const s=this.tabs[t],i=this.panels[t];s.setAttribute("tabindex",-1),i.removeAttribute("tabindex"),s.classList.remove(this.config.modifiers.visible),this.el.classList.contains(this.config.classes.swipper)&&!(0,n.vh)().matches||(i.setAttribute("hidden","hidden"),i.classList.remove(this.config.modifiers.visible))}handleDuplicatedSvgs(){const t=this.el.parentNode.querySelector("heliux-accordionpanel");t&&t.querySelectorAll("svg").forEach(((t,s)=>{[...t.querySelectorAll("defs")].forEach((i=>{i.childNodes.forEach((i=>{if(i.id){const e=`${i.id}_${Date.now()}_${s}`,n=new RegExp(i.id,"g");t.innerHTML=t.innerHTML.replace(n,e)}}))}))}))}}(0,e.register)({Tabs:w},0)}},t=>{t.O(0,[750],(()=>t(t.s=30829))),t.O()}]);