PageSourceSearch

https://outcast-clothing.us/cdn/shop/t/224/assets/drawer-component.2kV64BtP.min.js

js outcast-clothing.us collected 2026-09-25 02:49:28 UTC 5,102 bytes, 1 lines download raw bytes

1import{d as r,c as l}from"./bodyScrollLock.esm.2ACIc7xK.min.js";import{G as o}from"./global-events.spCyEkW_.min.js";class a extends HTMLElement{constructor(){super(),this.backdrop=null,this.container=null,this.content=null,this.header=null,this.footer=null,this.buttonClose=null,this.focusableElements=[],this.firstFocusableElement=null,this.lastFocusableElement=null,this.previousActiveElement=null,this.state={isOpen:!1,direction:"right",backdrop:!0,closeOnBackdropClick:!0,closeOnEscape:!0,trapFocus:!0},this.handleKeyDown=this.handleKeyDown.bind(this),this.handleBackdropClick=this.handleBackdropClick.bind(this),this.open=this.open.bind(this),this.close=this.close.bind(this),this.backdrop=this.querySelector(".drawer-backdrop"),this.container=this.querySelector(".drawer-container"),this.header=this.querySelector(".drawer-title"),this.content=this.querySelector(".drawer-content"),this.footer=this.querySelector(".drawer-footer"),this.buttonClose=this.querySelector(".drawer-button-close"),this.id=this.getAttribute("id")||""}connectedCallback(){this.setupEventListeners(),this.updateFromAttributes()}disconnectedCallback(){this.removeEventListeners()}updateFromAttributes(){const t=this.getAttribute("direction");t&&(this.state.direction=t);const e=this.getAttribute("backdrop");e!==null&&(this.state.backdrop=e!=="false");const s=this.getAttribute("close-on-backdrop-click");s!==null&&(this.state.closeOnBackdropClick=s!=="false");const i=this.getAttribute("close-on-escape");i!==null&&(this.state.closeOnEscape=i!=="false");const n=this.getAttribute("trap-focus");n!==null&&(this.state.trapFocus=n!=="false"),this.getAttribute("open")==="true"&&this.open()}updateDirection(){this.container&&(this.container.className=`drawer-container direction-${this.state.direction}`)}updateBackdrop(){this.backdrop&&(this.backdrop.style.display=this.state.backdrop?"block":"none")}setupEventListeners(){document.addEventListener("keydown",this.handleKeyDown),this.backdrop&&this.backdrop.addEventListener("click",this.handleBackdropClick),this.buttonClose&&this.buttonClose.addEventListener("click",this.close)}removeEventListeners(){document.removeEventListener("keydown",this.handleKeyDown),this.backdrop&&this.backdrop.removeEventListener("click",this.handleBackdropClick),this.buttonClose&&this.buttonClose.removeEventListener("click",this.close)}handleKeyDown(t){if(this.state.isOpen){if(t.key==="Escape"&&this.state.closeOnEscape){t.preventDefault(),this.close();return}t.key==="Tab"&&this.state.trapFocus&&this.handleTabKey(t)}}handleTabKey(t){var e,s;if(this.updateFocusableElements(),this.focusableElements.length===0){t.preventDefault();return}t.shiftKey?document.activeElement===this.firstFocusableElement&&(t.preventDefault(),(e=this.lastFocusableElement)==null||e.focus()):document.activeElement===this.lastFocusableElement&&(t.preventDefault(),(s=this.firstFocusableElement)==null||s.focus())}handleBackdropClick(t){this.state.closeOnBackdropClick&&t.target===t.currentTarget&&this.close()}updateFocusableElements(){this.container&&(this.focusableElements=Array.from(this.container.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')),this.firstFocusableElement=this.focusableElements[0]||null,this.lastFocusableElement=this.focusableElements[this.focusableElements.length-1]||null)}setAriaAttributes(){this.setAttribute("aria-hidden",(!this.state.isOpen).toString()),this.setAttribute("aria-modal",this.state.isOpen.toString()),this.container&&(this.container.setAttribute("role","dialog"),this.container.setAttribute("aria-modal","true"))}open(){console.log("open"),!this.state.isOpen&&(this.state.isOpen=!0,this.setAttribute("open","true"),this.setAriaAttributes(),this.previousActiveElement=document.activeElement,this.state.trapFocus&&(this.updateFocusableElements(),this.firstFocusableElement?this.firstFocusableElement.focus():this.container&&this.container.focus()),setTimeout(()=>{r(this,{allowTouchMove:t=>t.closest(".drawer-content")!==null})}),this.dispatchEvent(new CustomEvent(o.drawer.open,{detail:{direction:this.state.direction,drawerId:this.id}})))}close(){console.log("close"),this.state.isOpen&&(this.state.isOpen=!1,this.setAttribute("open","false"),this.setAriaAttributes(),this.previousActiveElement&&(this.previousActiveElement.focus(),this.previousActiveElement=null),l(),this.dispatchEvent(new CustomEvent(o.drawer.close,{detail:{direction:this.state.direction,drawerId:this.id}})))}toggle(){this.state.isOpen?this.close():this.open()}clearContent(){this.content&&(this.content.innerHTML="")}setHeader(t){this.header&&(this.header.innerHTML="",typeof t=="string"?this.header.innerHTML=t:this.header.appendChild(t))}setFooter(t){this.footer&&(this.footer.innerHTML="",typeof t=="string"?this.footer.innerHTML=t:this.footer.appendChild(t))}setContent(t){this.content&&(this.content.innerHTML="",typeof t=="string"?this.content.innerHTML=t:this.content.appendChild(t),this.state.isOpen&&this.state.trapFocus&&this.updateFocusableElements())}}customElements.get("drawer-component")||customElements.define("drawer-component",a);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.