"use strict";(self.webpackChunk_surecart_blocks_next=self.webpackChunk_surecart_blocks_next||[]).push([[4631],{4631:function(t,e,a){a.r(e),a.d(e,{sc_tab_group:function(){return i}});var s=a(6892);const i=class{constructor(t){(0,s.r)(this,t),this.scTabHide=(0,s.c)(this,"scTabHide",7),this.scTabShow=(0,s.c)(this,"scTabShow",7),this.tabs=[],this.panels=[],this.activeTab=void 0}componentDidLoad(){this.syncTabsAndPanels(),this.setAriaLabels(),this.setActiveTab(this.getActiveTab()||this.tabs[0],{emitEvents:!1}),this.mutationObserver=new MutationObserver((()=>{this.syncTabsAndPanels()})),this.mutationObserver.observe(this.el,{attributes:!0,childList:!0,subtree:!0})}disconnectedCallback(){this.mutationObserver.disconnect()}syncTabsAndPanels(){this.tabs=this.getAllTabs(),this.panels=this.getAllPanels()}setAriaLabels(){this.tabs.map((t=>{const e=this.panels.find((e=>e.name===t.panel));e&&(t.setAttribute("aria-controls",e.getAttribute("id")),e.setAttribute("aria-labelledby",t.getAttribute("id")))}))}handleClick(t){const e=t.target.closest("sc-tab");(null==e?void 0:e.closest("sc-tab-group"))===this.el&&e&&this.setActiveTab(e,{scrollBehavior:"smooth"})}handleKeyDown(t){const e=t.target.closest("sc-tab");if((null==e?void 0:e.closest("sc-tab-group"))!==this.el)return!0;if(["Enter"," "].includes(t.key)&&e&&this.setActiveTab(e,{scrollBehavior:"smooth"}),["ArrowUp","ArrowDown","Home","End"].includes(t.key)){const e=document.activeElement;if(e&&"sc-tab"===e.tagName.toLowerCase()){let a=this.tabs.indexOf(e);"Home"===t.key?a=0:"End"===t.key?a=this.tabs.length-1:"ArrowUp"===t.key?a=Math.max(0,a-1):"ArrowDown"===t.key&&(a=Math.min(this.tabs.length-1,a+1)),this.tabs[a].triggerFocus({preventScroll:!0}),t.preventDefault()}}}setActiveTab(t,e){if(e=Object.assign({emitEvents:!0,scrollBehavior:"auto"},e),t&&t!==this.activeTab&&!t.disabled){const a=this.activeTab;this.activeTab=t,this.tabs.map((t=>t.active=t===this.activeTab)),this.panels.map((t=>t.active=t.name===this.activeTab.panel)),e.emitEvents&&(a&&this.scTabHide.emit(a.panel),this.scTabShow.emit(this.activeTab.panel))}}getActiveTab(){return this.getAllTabs().find((t=>t.active))}getAllChildren(){const t=this.el.shadowRoot.querySelectorAll("slot"),e=["sc-tab","sc-tab-panel"];return Array.from(t).map((t=>{var e;return null===(e=null==t?void 0:t.assignedElements)||void 0===e?void 0:e.call(t,{flatten:!0})})).flat().reduce(((t,e)=>{var a;return t.concat(e,[...(null===(a=null==e?void 0:e.querySelectorAll)||void 0===a?void 0:a.call(e,"*"))||[]])}),[]).filter((t=>{var a,s;return e.includes(null===(s=null===(a=null==t?void 0:t.tagName)||void 0===a?void 0:a.toLowerCase)||void 0===s?void 0:s.call(a))}))}getAllTabs(t=!1){return this.getAllChildren().filter((e=>t?"sc-tab"===e.tagName.toLowerCase():"sc-tab"===e.tagName.toLowerCase()&&!e.disabled))}getAllPanels(){return this.getAllChildren().filter((t=>"sc-tab-panel"===t.tagName.toLowerCase()))}render(){return(0,s.h)("div",{key:"6db418090da7a490097c1957fbe62221f9c52f82",part:"base",class:{"tab-group":!0},onClick:t=>this.handleClick(t),onKeyDown:t=>this.handleKeyDown(t)},(0,s.h)("div",{key:"5b803ebe415624dc3c3fb80452bca1e29901fb08",class:"tab-group__nav-container",part:"nav"},(0,s.h)("div",{key:"88d46da46e9fe1c429d962f31bf63800ce42c566",class:"tab-group__nav"},(0,s.h)("div",{key:"ba6bc25bce35fb166e00d881eb00e242bff25dba",part:"tabs",class:"tab-group__tabs",role:"tablist"},(0,s.h)("slot",{key:"1b7e3c2faa6aa402ac03e76a0edb5419729a4e03",onSlotchange:()=>this.syncTabsAndPanels(),name:"nav"})))),(0,s.h)("div",{key:"2cc04c39158d4cee0f93f4f8c5597cb2317773cb",part:"body",class:"tab-group__body"},(0,s.h)("slot",{key:"9ac01bf13e0529ca5bf2971b31ce9c305059c694",onSlotchange:()=>this.syncTabsAndPanels()})))}get el(){return(0,s.a)(this)}};i.style=":host{display:block;--sc-tabs-min-width:225px}.tab-group{display:flex;flex-wrap:wrap;position:relative;border:solid 1px transparent;border-radius:0;flex-direction:row}@media screen and (min-width: 750px){.tab-group{flex-wrap:nowrap}}.tab-group__tabs{display:flex;flex-wrap:wrap;flex:0 0 auto;flex-direction:column;margin-bottom:var(--sc-spacing-xx-large)}.tab-group__nav-container{order:1;flex:1 0 100%}@media screen and (min-width: 750px){.tab-group__nav-container{min-width:var(--sc-tabs-min-width);flex:0 1 auto}}.tab-group__body{flex:1 1 auto;order:2}@media screen and (min-width: 750px){.tab-group__body{padding:0 var(--sc-spacing-xx-large)}}::slotted(sc-tab){margin-bottom:var(--sc-spacing-xx-small)}"}}]);