1/** 2 * @license 3 * © CROUIN 2021. All rights reserved. 4 * Powered by MaxDesign. 5 * â FR : CONTENU PROTÃGà PAR LES DROITS D'AUTEURS (article L. 111-1 du code de la propriété intellectuelle). Cette ressource ne peut pas être utilisée, diffusée ou exploitée sans l'approbation de ses auteurs. Pour plus d'informations, veuillez contacter admin(at)maxdesign.expert 6 * â EN : CONTENT PROTECTED WITH AUTHOR COPYRIGHTS (section L. 111-1 of the intellectual property code). This resource may not be used, distributed or exploited without the approval of its authors. For any information request, please contact admin(at)maxdesign.expert 7 */ 8window.MaxDesign=window.MaxDesign||class{},MaxDesign.toolbar=()=>document.querySelector("toolbar-maxdesign"),MaxDesign.header=()=>document.querySelector("header-maxdesign"),MaxDesign.search=()=>document.querySelector("predictive-search-maxdesign");class Header extends HTMLElement{connectedCallback(){this.aborters={},this.setVariables(),this.setRootProperties(),this.onSearchOpen(),this.onSearchClose(),this.onStickyScroll(),this.isMobile?this.mobileEventHandlers():(this.disableMouseEnter=this.isMenuWraped,document.fonts.ready.then((()=>this.disableMouseEnter=this.isMenuWraped)),this.desktopEventHandlers()),visualViewport.addEventListener("resize",this.onResize.bind(this))}mobileEventHandlers(){this.aborters.mobile=new AbortController,this.aborters?.desktop?.abort(),this.onDrawerToggle(),this.onDrawerBrowse()}desktopEventHandlers(){this.aborters.desktop=new AbortController,this.aborters?.mobile?.abort(),this.addEventListener("mousemove",this.loadImages.bind(this),{once:!0}),this.onMegamenuEnter(),this.onMegamenuLeave(),this.onLinksHover()}onResize(){if(this.setDrawerProperties(),this.setRootProperties(),this.isMobile){const e=this.aborters.mobile?.signal;this.root[this.isKeyboardOpen?"removeEventListener":"addEventListener"]("click",this.onCloseMenuHandler),e&&!e.aborted||this.mobileEventHandlers()}else{const e=this.aborters.desktop?.signal;this.disableMouseEnter=this.isMenuWraped,e&&!e.aborted||this.desktopEventHandlers()}}onDrawerToggle(){this.DOM.menuToggler.forEach((e=>e.addEventListener("click",(e=>(e.preventDefault(),this.isOpen?this.closeMenu():this.openMenu())),{signal:this.aborters.mobile.signal})))}onDrawerBrowse(){for(const e of this.DOM.menuSwitchers)e.addEventListener("click",(t=>{t.preventDefault(),t.stopImmediatePropagation();const s=350,i={index:this.menuLevel,switch:e.closest("li").firstElementChild},r={index:+e.dataset.levelAim,switch:e};r.index<i.index?setTimeout((()=>i.switch.removeAttribute("data-level-open")),s):r.switch.setAttribute("data-level-open",""),this.menuLevel=r.index,setTimeout((()=>e.closest("[data-navbar]")?.scroll(0,0)),s)}),{signal:this.aborters.mobile.signal})}onMegamenuEnter(){const e=this.aborters.desktop.signal;for(const s of this.DOM.menuLinks)s.addEventListener("mouseenter",(e=>!t(e)&&(this.hoverTimer=setTimeout((()=>s.click()),120))),{signal:e}),s.addEventListener("mouseleave",(()=>clearTimeout(this.hoverTimer)),{signal:e}),s.addEventListener("click",(e=>{t(e)||(e.preventDefault(),e.stopImmediatePropagation(),this.root.setAttribute("header-open",s.parentElement.hasAttribute("data-megamenu")?s.parentElement.dataset.menuTitle:"dropdown"),this.DOM.menuLinks_L1.forEach((e=>e.toggleAttribute("data-level-open",e==s))))}),{signal:e});const t=e=>e.currentTarget.hasAttribute("data-level-open")&&e.isTrusted||("mouseenter"==e.type?this.disableMouseEnter:e.currentTarget.hasAttribute("data-direct-link")&&e.isTrusted)}onMegamenuLeave(){for(const t of this.DOM.menuLinks_L1){const s=t.nextElementSibling;t.nextElementSibling.addEventListener("mouseleave",(t=>!e(t)&&this.closeMenu()),{signal:this.aborters.desktop.signal})}const e=e=>e.relatedTarget?.parentElement==e.target.parentElement}onLinksHover(){const e=this.aborters.desktop.signal;this.DOM.menuItems_L2.forEach(((t,s,i)=>{const r=t.firstElementChild;t.addEventListener("mouseover",(()=>r.setAttribute("data-level-open","")),{signal:e}),t.addEventListener("mouseleave",(()=>r.removeAttribute("data-level-open")),{signal:e})}))}onSearchOpen(){this.search&&this.DOM.searchTrigger.addEventListener("click",(e=>{e.preventDefault(),this.role="search",this.search.input.focus(),this.search.removeAttribute("data-filter"),this.resetMenu(),this.isMobile||this.openMenu()}))}onSearchClose(){this.search&&this.DOM.searchClose.addEventListener("click",this.closeMenu.bind(this))}onStickyScroll(){"sticky_scroll"==this.stickyState&&addEventListener("scroll",this.toggleHeader.bind(this))}set cartCount(e){this.DOM.cartIcon.querySelector("[data-count]").setAttribute("data-count",e)}
8set role(e){this.dataset.role=e}set menuLevel(e){return this.DOM.menuContainer.setAttribute("data-level-active",e)}setVariables(){this.settings=JSON.parse(this.querySelector(':scope > [type="application/json"]').innerText),this.root=document.documentElement,this.header=this.parentElement,this.toolbar=MaxDesign.toolbar(),this.search=MaxDesign.search(),this.onCloseMenuHandler=this.closeMenu.bind(this),this.scrollPos=pageYOffset||this.root.scrollTop,this.transitionDelay=400,this.DOM={menuToggler:document.querySelectorAll('a[href="#menu-maxdesign"]'),menuContainer:this.querySelector(".hmd__container"),menuItems:this.querySelectorAll(".hmd__item--parent"),menuLinks:this.querySelectorAll(".hmd__item--parent > .hmd__block"),menuLinks_L1:this.querySelectorAll(".hmd__item--parent > .hmd__block:not(:only-child)"),menuItems_L2:this.querySelectorAll('.hmd__item--child:not([data-menu-size="0"])'),menuSwitchers:this.querySelectorAll(".hmd__heading[data-level-aim]"),searchTrigger:this.querySelector(".hmd__icon--search"),searchClose:this.querySelector(".hmd__search-close"),cartIcon:this.querySelector(".hmd__icon--cart")}}setRootProperties(e=this.stickyState&&this.stickyState.includes("sticky")){["--sticky-header-enabled","--header-is-sticky","--enable-sticky-header"].forEach((t=>this.root.style.setProperty(t,e?1:0))),this.root.style.setProperty("--header-height",this.header.clientHeight+"px"),this.root.style.setProperty("--sbw",innerWidth-document.body.clientWidth+"px")}setDrawerProperties(){this.style.setProperty("--viewport-height",`${visualViewport.height}px`),this.style.setProperty("--header-top-position",`${this.header.getBoundingClientRect().top}px`)}get isMobile(){return matchMedia("(max-width:999px)").matches}get stickyState(){return!(location.pathname.indexOf("/cart")>-1)&&(this.isMobile?this.settings.sticky.mobile:this.settings.sticky.desktop)}get isMenuWraped(){const e=this.DOM.menuItems;return![...e].every((t=>t.offsetTop===e[0].offsetTop))}get role(){return this.getAttribute("data-role")}get isOpen(){return this.root.hasAttribute("header-open")}get isKeyboardOpen(){return visualViewport.height*visualViewport.scale/screen.height<.75}get menuLevel(){return+this.DOM.menuContainer.getAttribute("data-level-active")||1}toggleHeader(e){if(this.preventScroll)return;const t=pageYOffset||this.root.scrollTop,s=t<this.scrollPos||t<200||this.isOpen;this.setRootProperties(s),this.header.classList.toggle("header-maxdesign--sticky",s),(t-this.scrollPos>10||this.scrollPos>t)&&(this.scrollPos=t)}closeMenu(e){e&&e.target!=e.currentTarget||(this.root.removeAttribute("header-open"),this.root.removeEventListener("click",this.onCloseMenuHandler),this.search?.reset(),setTimeout((()=>{this.resetMenu(),this.preventScroll=!1}),this.isMobile?this.transitionDelay:0))}openMenu(){this.preventScroll=!0,this.imagesLoaded||this.loadImages(),this.root.setAttribute("header-open",""),this.setDrawerProperties(),this.root[this.isKeyboardOpen?"removeEventListener":"addEventListener"]("click",this.onCloseMenuHandler)}resetMenu(){const e=undefined;this.querySelectorAll(".hmd__block[data-level-open]").forEach((e=>e.removeAttribute("data-level-open"))),this.menuLevel=1}loadImages(){this.DOM.menuContainer.querySelectorAll('img:not([loading="eager"])').forEach((e=>{e.loading="eager",e.complete?e.dataset.imgLoaded="":e.addEventListener("load",(()=>e.dataset.imgLoaded=""))})),this.imagesLoaded=!0}}customElements.define("header-maxdesign",Header);class MobileNavbar extends HTMLElement{connectedCallback(){this.lastItem=this.firstElementChild.lastElementChild,new IntersectionObserver((([e])=>this.toggleAttribute("data-fade",!e.isIntersecting)),{threshold:1,rootMargin:"2px"}).observe(this.lastItem)}}customElements.define("mobile-navbar-maxdesign",MobileNavbar);class PredictiveSearch extends HTMLElement{connectedCallback(){this.header=MaxDesign.header(),this.input=this.querySelector('input[type="search"]'),this.wrapper=this.header.querySelector("[data-predictive-search]"),this.result=this.wrapper.lastElementChild,this.input.addEventListener("input",this.onChange.bind(this))}onChange(){const e=this.inputValue;e.length?(this.state||this.header.openMenu(),this.state="loading",this.get
8SearchResults(e)):this.content=this.state=""}async getSearchResults(e){try{const t="predictive-search-maxdesign",s=this.url+`&q=${e}§ion_id=${t}`,i=await fetch(s);if(!i.ok)throw new Error(i.status);const r=await i.text(),n=(new DOMParser).parseFromString(r,"text/html").querySelector(`#shopify-section-${t}`).innerHTML;if(!this.inputValue.length)return;this.header.resetMenu(),this.content=n,this.state="loaded"}catch(e){console.error(e)}}get inputValue(){return this.input.value.trim()}get url(){const e=undefined,t=`${Shopify.routes.root}search/suggest?resources[limit_scope]=each`;return"blog"===this.getAttribute("data-filter")?`${t}&resources[type]=query,article&resources[options][fields]=title,author,tag,body`:`${t}&resources[limit]=8`}set content(e){this.result.innerHTML=e}set state(e){this.wrapper.dataset.predictiveSearch=e}reset(){this.content=this.state=this.input.value="",this.header.role="navigation"}}customElements.define("predictive-search-maxdesign",PredictiveSearch)
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.