1import{Component}from"@theme/component";import{trapFocus,removeTrapFocus}from"@theme/focus";import{isClickedOutside,lockScroll,onAnimationEnd,unlockScroll}from"@theme/utilities";const MODAL_BREAKPOINT=990;export class ThemeDrawer extends Component{requiredRefs=["panel"];static#stackOrder=0;#isClosing=!1;#deferredOpen=!1;#previouslyFocused=null;#modalQuery=window.matchMedia(`(max-width: ${MODAL_BREAKPOINT-1}px)`);get isOpen(){return this.hasAttribute("open")}connectedCallback(){super.connectedCallback(),this.#modalQuery.addEventListener("change",this.#onModalBreakpointChange);const restoredOrder=Number(this.style.getPropertyValue("--drawer-stack-order")||0);restoredOrder>ThemeDrawer.#stackOrder&&(ThemeDrawer.#stackOrder=restoredOrder),this.isOpen&&this.#onRestore()}#onRestore(){const{panel}=this.refs;this.#modalQuery.matches&&lockScroll(panel),document.addEventListener("keydown",this.#onKeyDown),panel.addEventListener("click",this.#onBackdropClick)}disconnectedCallback(){super.disconnectedCallback(),unlockScroll(this.refs.panel),this.#modalQuery.removeEventListener("change",this.#onModalBreakpointChange),this.#removeEventListeners(),removeTrapFocus(),this.#deferredOpen=!1}#onBackdropClick=event=>{const{panel}=this.refs;if(isClickedOutside(event,panel)){if(this.#hasOpenNestedDialog())return;this.close()}};#hasOpenNestedDialog(){return this.#getOpenNestedDialog()!==null}#getOpenNestedDialog(){return this.refs.panel.querySelector("dialog[open]")}#onModalBreakpointChange=()=>{if(!this.isOpen)return;const{panel}=this.refs,nestedDialog=this.#getOpenNestedDialog(),nestedActiveElement=nestedDialog?.contains(document.activeElement)&&document.activeElement instanceof HTMLElement?document.activeElement:null;panel.close(),removeTrapFocus(),this.#modalQuery.matches?(lockScroll(panel),panel.showModal()):(unlockScroll(panel),panel.show(),trapFocus(panel)),nestedDialog?.open?this.#bringNestedDialogToFront(nestedDialog,nestedActiveElement):this.#focusInitialElement(),document.addEventListener("keydown",this.#onKeyDown),panel.addEventListener("click",this.#onBackdropClick)};#onKeyDown=event=>{event.key==="Escape"&&(event.isComposing||event.defaultPrevented||this.isOpen&&this.#isTopmost()&&(event.preventDefault(),this.close()))};open({enter}={}){if(this.isOpen){this.#bringToFront({enter});return}if(this.#isClosing){this.#deferredOpen={enter};return}const{panel}=this.refs;ThemeDrawer.#stackOrder+=1,this.style.setProperty("--drawer-stack-order",String(ThemeDrawer.#stackOrder));const openClass=enter==="inline-start"?"theme-drawer__dialog--opening-inline-start":"theme-drawer__dialog--opening";panel.classList.add(openClass),this.#previouslyFocused=document.activeElement,this.#modalQuery.matches?(lockScroll(panel),panel.showModal()):(panel.show(),trapFocus(panel)),this.#focusInitialElement(),onAnimationEnd(panel,()=>panel.classList.remove(openClass),{subtree:!1}),this.setAttribute("open",""),this.dispatchEvent(new DrawerOpenEvent),document.addEventListener("keydown",this.#onKeyDown),panel.addEventListener("click",this.#onBackdropClick)}#bringToFront({enter}={}){const{panel}=this.refs;ThemeDrawer.#stackOrder+=1,this.style.setProperty("--drawer-stack-order",String(ThemeDrawer.#stackOrder)),this.#modalQuery.matches&&panel.open&&(lockScroll(panel),panel.close(),panel.showModal());const openClass=enter==="inline-start"?"theme-drawer__dialog--opening-inline-start":"theme-drawer__dialog--opening";panel.classList.add(openClass),onAnimationEnd(panel,()=>panel.classList.remove(openClass),{subtree:!1}),this.dispatchEvent(new DrawerOpenEvent)}#removeEventListeners(){const{panel}=this.refs;document.removeEventListener("keydown",this.#onKeyDown),panel.removeEventListener("click",this.#onBackdropClick)}#focusInitialElement(){this.refs.panel.querySelector(".theme-drawer__close-button")?.focus()}#bringNestedDialogToFront(dialog,focusTarget){dialog.close(),dialog.showModal(),focusTarget&&document.contains(focusTarget)&&dialog.contains(focusTarget)&&focusTarget.focus()}async#closeDialog(){if(!this.isOpen||this.#isClosing)return;this.#isClosing=!0,this.#removeEventListeners(),removeTrapFocus();const{panel}=this.refs;this.removeAttribute("open"),this.dispatchEvent(new DrawerCloseEvent),unlockScroll(panel),panel.open&&(panel.classList.remove("theme-drawer__dialog--opening","theme-drawer__dialog--opening-inline-start"),panel.classList.add("theme-drawer__dialog--closing"),await onAnimationEnd(panel,void 0,{subtree:!1}),panel.classList.remove("theme-drawer__dialog--closing")),panel.close(),this.style.removeProperty("--drawer-stack-order"),document.querySelector("theme-drawer[open]")||(ThemeDrawer.#stackOrder=0);const trigger=this.#previouslyFocused;if(this.#previouslyFocused=null,trigger&&document.contains(trigger)?trigger.focus():document.querySelector(`[aria-controls="${this.id}"]`)?.focus(),this.#isClosing=!1,this.#deferredOpen){const options=this.#deferredOpen;this.#deferredOpen=!1,this.open(options)}}async close(){if(this.#isClosing){this.#deferredOpen=!1;return}await this.#closeDialog()}toggle(){return this.isOpen&&this.#isTopmost()?this.close():this.open()}#isTopmost(){const myOrder=Number(this.style.getPropertyValue("--drawer-stack-order")||0);for(const other of document.querySelectorAll("theme-drawer[open]")){if(other===this)continue;if(Number(other.style.getPropertyValue("--drawer-stack-order")||0)>myOrder)return!1}return!0}}customElements.get("theme-drawer")||customElements.define("theme-drawer",ThemeDrawer);export class DrawerOpenEvent extends CustomEvent{constructor(){super(DrawerOpenEvent.eventName,{bubbles:!0})}static eventName="theme-drawer:open"}export class DrawerCloseEvent extends CustomEvent{constructor(){super(DrawerCloseEvent.eventName,{bubbles:!0})}static eventName="theme-drawer:close"} 2//# sourceMappingURL=/cdn/shop/t/84/assets/theme-drawer.js.map?v=155110645205299884131790107217
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.