Files
op-packages/luci-theme-aurora/htdocs/luci-static/resources/menu-aurora.js
T

1 line
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";"require baseclass";"require ui";const PALETTE_RECENTS_KEY="aurora.paletteRecents";return baseclass.extend({__init__(){ui.menu.load().then(e=>this.render(e)),this.initNavigationControls(),this.initUciIndicator()},initUciIndicator(){const e=ui.changes?.setIndicator;e&&(ui.changes.setIndicator=function(t){e.call(this,t),document.querySelector('[data-indicator="uci-changes"]')?.setAttribute("data-count",t||0)})},initNavigationControls(){const e=document.querySelector("#mobile-menu-overlay"),t=document.querySelector("#navigation-toggle");if(!t||!e)return;const a=e.querySelector("#mobile-nav-list"),n=window.matchMedia("(min-width: 768px)"),i="aurora.sidebarCollapsed";let s;const o=()=>n.matches&&"sidebar"===document.body.dataset.navType,r=e=>{const a=o();t.classList.toggle("is-expanded",e&&!n.matches),t.setAttribute("aria-expanded",e?"true":"false"),t.setAttribute("aria-controls",a?"sidebar-panel":"mobile-menu-overlay");const i=e&&!a?_("Close"):_("Navigation");t.setAttribute("title",i),t.setAttribute("aria-label",i)},l=()=>{e.classList.contains("mobile-menu-open")&&(e.classList.remove("mobile-menu-open"),document.body.classList.remove("mobile-navigation-open"),document.body.style.overflow="",this.resetNavigationGroups(a),r(!1))};this.closeMobileNavigation=l;const c=t=>{if(o()){l();const e=!t,a=document.body;return a.classList.remove("sidebar-anim-open","sidebar-anim-close"),a.classList.add(e?"sidebar-anim-close":"sidebar-anim-open"),clearTimeout(s),s=setTimeout(()=>{a.classList.remove("sidebar-anim-open","sidebar-anim-close")},300),a.classList.toggle("sidebar-collapsed",e),localStorage.setItem(i,e),void r(t)}if(n.matches)return l(),void r(!1);e.classList.toggle("mobile-menu-open",t),document.body.classList.toggle("mobile-navigation-open",t),document.body.style.overflow=t?"hidden":"",t?this.expandActiveNavigationGroup(a):this.resetNavigationGroups(a),r(t)},d=()=>{if(l(),o()){const e="true"===localStorage.getItem(i);return document.body.classList.toggle("sidebar-collapsed",e),void r(!e)}r(!1)};t.addEventListener("click",t=>{t.stopPropagation(),c(!(o()?!document.body.classList.contains("sidebar-collapsed"):!n.matches&&e.classList.contains("mobile-menu-open")))}),e.addEventListener("click",t=>{t.target===e&&c(!1)}),document.addEventListener("keydown",t=>{"Escape"===t.key&&e.classList.contains("mobile-menu-open")&&c(!1)}),n.addEventListener("change",d),d(),document.addEventListener("click",t=>{const a=t.target?.closest?.(".navigation-direct, .navigation-sublink, .mobile-nav-logout");a&&e.contains(a)&&c(!1)})},renderMobileMenu(e){const t=document.querySelector("#mobile-nav-list"),a=document.querySelector("#mobile-nav-footer-action");t&&(t.innerHTML=""),a&&(a.innerHTML=""),t&&(e.forEach(e=>{e.isLogout?a&&a.appendChild(E("a",{class:"mobile-nav-logout",href:e.href},[e.title])):t.appendChild(this.renderNavigationItem(e,"mobile"))}),this.bindNavigationAccordion(t))},render(e){this.tree=e,this.renderModeMenu(e),this.renderTabs(e)},renderTabs(e){if(L.env.dispatchpath.length<3)return;let t=e,a="";for(let e=0;e<3&&t;e++){const n=L.env.dispatchpath[e];t=t.children?.[n],a+=(a?"/":"")+n}t&&this.renderTabMenu(t,a)},syncRoute(){if(!this.tree)return;const e=new URL(L.url(...L.env.dispatchpath.slice(0,3)),location.href).pathname;document.querySelectorAll("#topmenu a, .desktop-menu-canvas a, #sidebar-list a, #mobile-nav-list a").forEach(t=>{const a=t.pathname===e&&!t.getAttribute("href").startsWith("#");t.classList.toggle("is-active-page",a),a?t.setAttribute("aria-current","page"):t.removeAttribute("aria-current")}),document.querySelectorAll(".navigation-group").forEach(e=>{const t=!!e.querySelector("a.is-active-page"),a=e.querySelector(".navigation-group-toggle");e.classList.toggle("is-active-group",t),t?a?.setAttribute("aria-current","location"):a?.removeAttribute("aria-current")});for(const e of[document.querySelector("#sidebar-list"),document.querySelector("#mobile-nav-list")])this.resetNavigationGroups(e),this.expandActiveNavigationGroup(e);this.renderCrumb();const t=document.querySelector("#tabmenu");t&&(t.innerHTML="",t.style.display="none"),this.renderTabs(this.tree)},closeSurfaces(){this.hideDesktopNav(),this.paletteList&&this.closePalette(),this.closeMobileNavigation?.()},renderTabMenu(e,t,a=0){const n=document.querySelector("#tabmenu"),i=E("ul",{class:"tabs"}),s=ui.menu.getChildren(e);let o=null;return s.forEach(e=>{const n=L.env.dispatchpath[3+a]===e.name;i.appendChild(E("li",{class:`tabmenu-item-${e.name}${n?" active":""}`},[E("a",{href:L.url(t,e.name)},[_(e.title)])])),n&&(o=e)}),i.children.length?(n.appendChild(i),n.style.display="",o&&this.renderTabMenu(o,`${t}/${o.name}`,a+1),i):E([])},renderMainMenu(e,t,a=0,n=null){const i=a?E("ul",{class:"desktop-nav-list"}):document.querySelector("#topmenu"),s=ui.menu.getChildren(e);if(a>1)return E([]);if(0===a){const e=document.body?.dataset?.navType||"mega-menu";if("sidebar"===e)return this.renderSidebar(n||[]),i||E([]);if(!i||!s.length)return E([]);"mega-menu"===e?this.initMegaMenu(s,t,i):this.initDropdown(s,t,i)}else{if(!s.length)return E([]);s.forEach(a=>{const n=this.isActivePath(e.name,a.name),s={class:n?"is-active-page":"",href:L.url(t,a.name)};n&&(s["aria-current"]="page"),i.appendChild(E("li",{},[E("a",s,[_(a.title)])]))})}return i.style.display="",i},isActivePath:(e,t)=>L.env.dispatchpath[1]===e&&(null==t||L.env.dispatchpath[2]===t),buildNavigationModel(e,t){return e.filter(e=>e?.name).map(e=>{const a=ui.menu.getChildren(e).filter(e=>e?.name).map(a=>({name:a.name,title:_(a.title),href:L.url(t,e.name,a.name),isActivePage:this.isActivePath(e.name,a.name)})),n=a.length>0,i=this.isActivePath(e.name);return{name:e.name,title:_(e.title),href:L.url(t,e.name),hasChildren:n,isLogout:"logout"===e.name,isActiveGroup:n&&i,isActivePage:!n&&i,activePage:a.find(e=>e.isActivePage)||null,pages:a}})},navigationSubmenuId:(e,t)=>`${e}-submenu-${encodeURIComponent(String(t))}`,renderNavigationItem(e,t){const a="mobile"===t,n=a?"mobile-nav-item":"";if(!e.hasChildren){const t={class:"navigation-direct nav-row"+(e.isActivePage?" is-active-page":""),href:e.href};return e.isActivePage&&(t["aria-current"]="page"),t["data-section"]=e.name,E("li",{class:n},[E("a",t,[E("span",{class:"nav-icon","aria-hidden":"true"}),E("span",{class:"nav-label"},[e.title])])])}const i=this.navigationSubmenuId(t,e.name),s=["navigation-group",a?"mobile-nav-item":"sidebar-group",e.isActiveGroup?"is-active-group":"",e.isActiveGroup?"is-expanded":""].filter(Boolean),o={class:"navigation-group-toggle nav-row",type:"button","aria-expanded":e.isActiveGroup?"true":"false","aria-controls":i};e.isActiveGroup&&(o["aria-current"]="location"),o["data-section"]=e.name;const r=E("ul",{class:a?"navigation-submenu-list mobile-nav-submenu-list":"navigation-submenu-list sidebar-submenu"});e.pages.forEach(e=>{const t={class:["navigation-sublink",a?"mobile-nav-sublink":"",e.isActivePage?"is-active-page":""].filter(Boolean).join(" "),href:e.href};e.isActivePage&&(t["aria-current"]="page"),r.appendChild(E("li",{class:a?"mobile-nav-subitem":""},[E("a",t,[e.title])]))});const l={class:a?"navigation-group-region mobile-nav-submenu":"navigation-group-region sidebar-section",id:i,"aria-hidden":e.isActiveGroup?"false":"true"};return e.isActiveGroup||(l.inert=""),E("li",{class:s.join(" ")},[E("button",o,[E("span",{class:"nav-icon","aria-hidden":"true"}),E("span",{class:"nav-category-label"},[e.title])]),E("div",l,[r])])},setNavigationGroupExpanded(e,t){const a=e.querySelector(".navigation-group-toggle"),n=e.querySelector(".navigation-group-region");e.classList.toggle("is-expanded",t),a?.setAttribute("aria-expanded",t?"true":"false"),n?.setAttribute("aria-hidden",t?"false":"true"),t?n?.removeAttribute("inert"):n?.setAttribute("inert","")},setExclusiveNavigationGroupExpanded(e,t,a){e&&t&&(a&&e.querySelectorAll(".navigation-group.is-expanded").forEach(e=>{e!==t&&this.setNavigationGroupExpanded(e,!1)}),this.setNavigationGroupExpanded(t,a))},resetNavigationGroups(e){e?.querySelectorAll(".navigation-group.is-expanded").forEach(e=>this.setNavigationGroupExpanded(e,!1))},expandActiveNavigationGroup(e){const t=e?.querySelector(".navigation-group.is-active-group");t&&this.setExclusiveNavigationGroupExpanded(e,t,!0)},bindNavigationAccordion(e){e&&"true"!==e.dataset.accordionBound&&(e.dataset.accordionBound="true",e.addEventListener("click",t=>{const a=t.target?.closest?.(".navigation-group-toggle"),n=a?.closest?.(".navigation-group");n&&e.contains(n)&&(t.preventDefault(),t.stopPropagation(),this.setExclusiveNavigationGroupExpanded(e,n,!n.classList.contains("is-expanded")))}))},renderSidebar(e){const t=document.querySelector("#sidebar-list"),a=document.querySelector("#sidebar-footer");t&&(t.innerHTML=""),a&&(a.innerHTML=""),t&&(e.forEach(e=>{e.isLogout?(a||t).appendChild(E("a",{class:"nav-link",href:e.href},[e.title])):t.appendChild(this.renderNavigationItem(e,"sidebar"))}),this.bindNavigationAccordion(t),this.renderCrumb())},renderCrumb(){const e=document.querySelector("#header-crumb"),t=document.querySelector("#sidebar-list");if(!e||!t)return;const a=[],n=t.querySelector(".is-active-group"),i=t.querySelector(".is-active-page");n&&a.push(n.querySelector(".nav-category-label")?.textContent),i&&i.textContent!==a[0]&&a.push(i.textContent),e.innerHTML="",a.forEach((t,n)=>{n&&e.appendChild(E("li",{class:"crumb-sep"},["/"])),e.appendChild(E("li",{class:n===a.length-1?"current":""},[t]))})},initPalette(e){const t=document.querySelector("#cmdk-trigger");if(!t||this.paletteIndex)return;this.paletteIndex=[];let a=null;e.forEach(e=>{e.isLogout?a=e:e.hasChildren?e.pages.forEach(t=>this.paletteIndex.push({title:t.title,name:`${e.name}/${t.name}`,group:e.title,href:t.href})):this.paletteIndex.push({title:e.title,name:e.name,group:null,href:e.href})}),[["light",_("Light Mode")],["dark",_("Dark Mode")],["device",_("Automatic")]].forEach(([e,t])=>this.paletteIndex.push({title:t,name:`theme ${e}`,group:_("Design"),mode:e})),a&&this.paletteIndex.push({title:a.title,name:a.name,group:null,href:a.href,isLogout:!0});const n=/Mac|iP(ad|hone|od)/.test(navigator.platform);this.paletteKey=n?"⌘K":"Ctrl+K",t.setAttribute("aria-keyshortcuts",n?"Meta+K":"Control+K"),t.setAttribute("aria-expanded","false"),t.addEventListener("click",()=>this.togglePalette()),this.paletteTrigger=t,document.addEventListener("keydown",e=>{e.isComposing||229===e.keyCode||((n?!e.metaKey||e.ctrlKey:!e.ctrlKey||e.metaKey)||e.altKey||e.shiftKey||"k"!==(e.key||"").toLowerCase()?"Escape"===e.key&&this.palettePanel&&!this.palettePanel.hidden&&this.closePalette():(e.preventDefault(),this.togglePalette()))}),this.onPaletteAway=e=>{this.palettePanel.contains(e.target)||t.contains(e.target)||this.closePalette()}},buildPalette(){const e=E("input",{class:"cmdk-input",type:"text",enterkeyhint:"go",placeholder:_("Type to filter…"),"aria-label":_("Type to filter…"),autocomplete:"off",spellcheck:"false",role:"combobox","aria-expanded":"true","aria-autocomplete":"list","aria-controls":"cmdk-list"}),t=E("div",{class:"cmdk-list",id:"cmdk-list",role:"listbox"}),a=E("button",{class:"cmdk-clear",type:"button","aria-label":_("Clear")});a.addEventListener("click",()=>{e.value="",this.renderPaletteResults(""),e.focus()});const n=E("button",{class:"cmdk-cancel",type:"button"},[_("Cancel")]);n.addEventListener("click",()=>this.closePalette());const i=E("div",{id:"cmdk-panel",class:"cmdk-panel",role:"dialog","aria-modal":"true","aria-label":_("Navigation"),hidden:""},[E("div",{class:"cmdk-inputrow"},[e,a,n]),t,E("div",{class:"cmdk-footer"},[E("kbd",{},["↑↓"]),E("kbd",{},["↵"]),E("kbd",{},[">"]),E("kbd",{},["esc"]),E("span",{class:"cmdk-hint-close"},[E("kbd",{},[this.paletteKey])])])]);e.addEventListener("input",()=>this.renderPaletteResults(e.value)),e.addEventListener("keydown",e=>{e.isComposing||229===e.keyCode||("ArrowDown"===e.key||"ArrowUp"===e.key?(e.preventDefault(),this.movePaletteSelection("ArrowDown"===e.key?1:-1)):"Enter"===e.key&&t.querySelector(".is-selected")?.click())}),t.addEventListener("mousemove",e=>{const t=e.target?.closest?.(".cmdk-row");t&&!t.classList.contains("is-selected")&&this.setPaletteSelection(t)}),t.addEventListener("click",a=>{const n=a.target?.closest?.(".cmdk-row");if(!n)return;const i=n.dataset.mode;i?(a.preventDefault(),setTheme(i),syncSwitchers(),this.renderPaletteResults(e.value),this.setPaletteSelection(t.querySelector(`[data-mode="${i}"]`)),e.focus()):n.dataset.name&&this.recordPaletteRecent(n.dataset.name)}),i.addEventListener("keydown",i=>{if("Tab"!==i.key)return;const s=[e,a,...t.querySelectorAll("a"),n].filter(e=>e.getClientRects().length),o=i.shiftKey?s[0]:s.at(-1);document.activeElement===o&&(i.preventDefault(),(i.shiftKey?s.at(-1):s[0]).focus())}),document.body.appendChild(i),this.paletteTrigger.setAttribute("aria-controls",i.id),this.palettePanel=i,this.paletteInput=e,this.paletteList=t},fuzzyMatch(e,t){const a=String(t).toLowerCase();let n=null;for(let t=a.indexOf(e[0]);t>=0;t=a.indexOf(e[0],t+1)){let i=t,s=0,o=0;const r=[];for(const t of e){if(" "===t){o=0;continue}const e=a.indexOf(t,i);if(e<0){r.length=0;break}o=e===i&&r.length?o+1:1,s+=1+o+(e===i&&r.length?4:0)+(0===e||" "===a[e-1]||"/"===a[e-1]?3:0);const n=e+t.length,l=r[r.length-1];l&&l[1]===e?l[1]=n:r.push([e,n]),i=n}s-=.02*a.length,r.length&&(!n||s>n.score)&&(n={score:s,ranges:r})}return n},readPaletteRecents(){try{const e=JSON.parse(localStorage.getItem(PALETTE_RECENTS_KEY));return Array.isArray(e)?e.filter(e=>"string"==typeof e):[]}catch{return[]}},recordPaletteRecent(e){try{localStorage.setItem(PALETTE_RECENTS_KEY,JSON.stringify([e,...this.readPaletteRecents().filter(t=>t!==e)]))}catch{}},paletteBrowseRecents(){return this.readPaletteRecents().filter(e=>this.paletteIndex.some(t=>t.name===e&&!t.mode&&!t.isLogout))},matchPaletteEntry(e,t){if(!e)return{score:0,ranges:null};const a=this.fuzzyMatch(e,t.title);if(a)return{score:a.score+12,ranges:a.ranges};const n=this.fuzzyMatch(e,t.name)||(t.group?this.fuzzyMatch(e,t.group):null);return n&&{score:n.score,ranges:null}},collectPaletteMatches(e){let t=e.trim().toLowerCase();const a=">"===t[0]||""===t[0];a&&(t=t.slice(1).trim());const n=t||a?[]:this.paletteBrowseRecents(),i=[];for(const e of this.paletteIndex){if(a&&!e.mode&&!e.isLogout)continue;if(e.isLogout&&!a&&!t)continue;const s=this.matchPaletteEntry(t,e);if(!s)continue;const o=n.indexOf(e.name);i.push({page:e,score:o<0?s.score:n.length-o,ranges:s.ranges})}return(t||n.length)&&i.sort((e,t)=>t.score-e.score),i},renderPaletteResults(e){const t=this.collectPaletteMatches(e),a=localStorage.getItem("aurora.theme")||"device";this.paletteInput.removeAttribute("aria-activedescendant"),this.paletteList.replaceChildren(),t.length?(t.forEach(({page:e,ranges:t},n)=>{const i=e.mode&&e.mode===a,s={class:"cmdk-row",id:`cmdk-option-${n}`,role:"option","aria-selected":"false",href:e.href||"#"};e.mode?s["data-mode"]=e.mode:e.isLogout||(s["data-name"]=e.name),i&&(s["aria-current"]="true"),this.paletteList.appendChild(E("a",s,[E("span",{class:"cmdk-title"},this.highlightPaletteMatch(e.title,t)),i?E("span",{class:"cmdk-group-name","aria-hidden":"true"},[E("mark",{},["✓"])]):e.group?E("span",{class:"cmdk-group-name"},[e.group]):""]))}),this.setPaletteSelection(this.paletteList.firstChild)):this.paletteList.appendChild(E("div",{class:"cmdk-empty"},[_("No entries available")]))},highlightPaletteMatch(e,t){if(!t||e.toLowerCase().length!==e.length)return[e];const a=[];let n=0;return t.forEach(([t,i])=>{a.push(e.slice(n,t),E("mark",{},[e.slice(t,i)])),n=i}),a.push(e.slice(n)),a},setPaletteSelection(e){const t=this.paletteList.querySelector(".is-selected");t?.classList.remove("is-selected"),t?.setAttribute("aria-selected","false"),e.classList.add("is-selected"),e.setAttribute("aria-selected","true"),this.paletteInput.setAttribute("aria-activedescendant",e.id)},movePaletteSelection(e){const t=[...this.paletteList.querySelectorAll(".cmdk-row")];if(!t.length)return;const a=t.findIndex(e=>e.classList.contains("is-selected")),n=t[(a+e+t.length)%t.length];this.setPaletteSelection(n),n.scrollIntoView({block:"nearest"})},togglePalette(){this.palettePanel||this.buildPalette(),this.palettePanel.hidden?this.openPalette():this.closePalette()},openPalette(){this.paletteReturnFocus=document.activeElement,this.paletteTrigger.setAttribute("aria-expanded","true"),this.palettePanel.hidden=!1,this.paletteInput.value="",this.renderPaletteResults(""),this.paletteInput.focus(),document.addEventListener("pointerdown",this.onPaletteAway)},closePalette(){this.paletteTrigger.setAttribute("aria-expanded","false"),this.palettePanel.hidden=!0,document.removeEventListener("pointerdown",this.onPaletteAway),this.paletteReturnFocus?.isConnected&&this.paletteReturnFocus.focus(),this.paletteReturnFocus=null},buildDropdownItem(e,t,a){const n=ui.menu.getChildren(e),i=n.length>0,s=E("li",{},[E("a",{class:"menu",href:i?"#":L.url(t,e.name)},[_(e.title)])]);a.appendChild(s);const o=s.querySelector("a");let r=null;if(i){const a=this.renderMainMenu(e,`${t}/${e.name}`,1),i=[a];if("mega-menu"===document.body?.dataset?.navType){a.style.setProperty("--menu-rows",Math.max(6,Math.ceil(n.length/4))),i.unshift(E("div",{class:"desktop-nav-anchor"},[E("span",{class:"desktop-nav-title","data-section":e.name},[_(e.title)])]));const t=document.querySelector(".desktop-menu-container > .desktop-menu-board");t&&i.push(t.cloneNode(!0))}r=E("div",{class:"desktop-nav"},i),s.appendChild(r),o.addEventListener("click",e=>e.preventDefault())}return{li:s,nav:r,menuLink:o,hasSubmenu:i}},deactivateDesktopNavExcept(e,t){document.querySelectorAll(".desktop-nav").forEach(t=>{t!==e&&t.classList.remove("active")}),document.querySelectorAll("#topmenu a").forEach(e=>{e!==t&&e.classList.remove("menu-active")})},initMegaMenu(e,t,a){const n=document.querySelector(".desktop-menu-container"),i=n?.querySelector(".desktop-menu-canvas"),s=document.querySelector(".desktop-menu-overlay"),o=document.querySelector("header");if(!o||!s)return;let r=null,l=null,c=0,d=300;const u=()=>{c||(o.querySelectorAll(".desktop-nav").forEach(e=>c=Math.max(c,e.offsetHeight)),d=Math.min(480,Math.max(240,Math.round(c/2)))),o.style.setProperty("--mega-menu-height",`${c}px`),o.style.setProperty("--mega-menu-duration",`${d}ms`)};let h=null;window.addEventListener("resize",()=>{c=0,clearTimeout(h),h=setTimeout(u,150)});let m={x:0,y:0},p=0,g={x:0,y:0};o.addEventListener("mousemove",e=>{e.timeStamp-p>60&&(m=g,p=e.timeStamp),g={x:e.clientX,y:e.clientY}}),e.forEach(e=>{const{li:c,nav:d,menuLink:h,hasSubmenu:p}=this.buildDropdownItem(e,t,a);p&&(i&&i.appendChild(d),c.addEventListener("mouseenter",()=>{l&&(clearTimeout(l),l=null);const e=n?.classList.contains("active"),t=e?(()=>{const e=o.querySelector(".desktop-nav.active");if(!e)return!1;const t=g.x-m.x,a=g.y-m.y;if(a<=2)return!1;const n=e.getBoundingClientRect();if(g.y>=n.top)return!0;const i=g.x+t*(n.top-g.y)/a;return i>=n.left-24&&i<=n.right+24})()?260:0:100;r=setTimeout(()=>{const e=d.classList.contains("active");this.deactivateDesktopNavExcept(d,h),e||(h.classList.add("menu-active"),n&&(u(),n.dataset.closeToken="",n.classList.add("active"),n.classList.remove("closing"),s.classList.add("active")),d.classList.add("active"))},t)}),c.addEventListener("mouseleave",()=>{r&&(clearTimeout(r),r=null)}))});const v=window.requestIdleCallback||(e=>setTimeout(e,1));(document.fonts?.ready||Promise.resolve()).then(()=>v(()=>{c||u()}));const b=()=>{r&&(clearTimeout(r),r=null),l=setTimeout(()=>{this.hideDesktopNav()},150)};o.addEventListener("mouseleave",b),s.addEventListener("mouseenter",b),o.addEventListener("mouseenter",()=>{l&&(clearTimeout(l),l=null)}),s.addEventListener("click",()=>this.hideDesktopNav())},initDropdown(e,t,a){e.forEach(e=>{const{li:n,nav:i,menuLink:s,hasSubmenu:o}=this.buildDropdownItem(e,t,a);if(!o)return;let r=null,l=null;n.addEventListener("mouseenter",()=>{l&&(clearTimeout(l),l=null),r=setTimeout(()=>{this.deactivateDesktopNavExcept(i,s),s.classList.add("menu-active"),i.classList.add("active")},100)}),n.addEventListener("mouseleave",()=>{r&&(clearTimeout(r),r=null),l=setTimeout(()=>{i.classList.remove("active"),s.classList.remove("menu-active")},150)})})},hideDesktopNav(){this.deactivateDesktopNavExcept(null,null);const e=document.querySelector(".desktop-menu-container");if(document.querySelector(".desktop-menu-overlay")?.classList.remove("active"),!e)return;if(!e.classList.contains("active")&&!e.classList.contains("closing"))return;e.classList.add("closing"),e.classList.remove("active");const t=e.querySelector(".desktop-menu-sheet"),a=`${Date.now()}-${Math.random()}`;e.dataset.closeToken=a;let n=null;const i=s=>{if(!s?.target||s.target===t){if(e.dataset.closeToken!==a)return null!==n&&(clearTimeout(n),n=null),void t?.removeEventListener("transitionend",i);null!==n&&(clearTimeout(n),n=null),t?.removeEventListener("transitionend",i),e.classList.contains("active")||(e.classList.remove("closing"),delete e.dataset.closeToken)}};if(!t||window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return void i();t.addEventListener("transitionend",i);const s=parseInt(document.querySelector("header")?.style.getPropertyValue("--mega-menu-duration"))||300;n=setTimeout(i,s+50)},renderModeMenu(e){const t=document.querySelector("#modemenu"),a=ui.menu.getChildren(e);let n=null;if(a.forEach((e,a)=>{const i=L.env.requestpath.length?e.name===L.env.requestpath[0]:0===a;t&&t.appendChild(E("li",{class:i?"active":""},[E("a",{href:L.url(e.name)},[_(e.title)])])),i&&(n=e)}),n){const e=this.buildNavigationModel(ui.menu.getChildren(n),n.name);this.renderMainMenu(n,n.name,0,e),this.renderMobileMenu(e),this.initPalette(e)}t?.children.length>1&&(t.style.display="")}});