import{k as P,b3 as A,ag as D,bR as O,c as S,ar as M}from"./vue-core.BuS4-TTe.js";function U(v){const h=P(!1),b=P(!1),u=A("openSiteHeaderDropdownId",()=>null);let c,a=!1,i=!1;const p=(t=!1,C=!1)=>(u.value&&u.value!==v&&window.dispatchEvent(new CustomEvent("dropdown-cleanup",{detail:{exceptId:v}})),h.value=!0,u.value=v,b.value=C,{focusFirstOption:t,viaKeyboard:C}),l=()=>{if(u.value!==v||(a||i)&&!b.value)return!1;h.value=!1,u.value=null;const t=b.value;return b.value=!1,a=!1,t},g=()=>{if(u.value!==v)return!1;a=!1,i=!1,h.value=!1,u.value=null;const t=b.value;return b.value=!1,t},K=()=>h.value?{action:"hide",wasKeyboard:g()}:{action:"show",...p(!0,!0)},d=(t=150)=>{if(u.value&&u.value!==v){window.dispatchEvent(new CustomEvent("dropdown-cleanup",{detail:{exceptId:v}})),a=!0,clearTimeout(c),p(!1,!1);return}a=!0,clearTimeout(c),c=setTimeout(()=>{a&&p(!1,!1)},t)},y=(t=150)=>{a=!1,clearTimeout(c),c=setTimeout(()=>{!a&&!i&&l()},t)},R=t=>{t.detail.exceptId!==v&&(clearTimeout(c),a=!1,i=!1,h.value&&(h.value=!1,b.value=!1))};typeof window<"u"&&window.addEventListener("dropdown-cleanup",R);const m=()=>{a=!0,clearTimeout(c)},x=(t=150)=>{a=!1,clearTimeout(c),c=setTimeout(()=>{!a&&!i&&l()},t)},E=()=>{i=!0,c&&clearTimeout(c),setTimeout(()=>{i=!1},100)},I=()=>{i=!0,c&&clearTimeout(c),setTimeout(()=>{i=!1},100)};return D(u,()=>{u.value!==v&&(h.value=!1,a=!1,i=!1)}),O(()=>{clearTimeout(c),typeof window<"u"&&window.removeEventListener("dropdown-cleanup",R)}),{dropdownIsVisible:h,openedViaKeyboard:b,show:p,hide:l,forceHide:g,toggle:K,handleMouseEnter:d,handleMouseLeave:y,handleDropdownMouseEnter:m,handleDropdownMouseLeave:x,handleOptionMouseDown:E,handleTriggerMouseDown:I}}function V(v={},h,b,u,c){const{isGrid:a=!1,wrapNavigation:i=!0}=v,p=P([]),l=P(a?{col:0,row:0}:0),g=S(()=>typeof u=="number"?u:u.value),K=(e,...s)=>{if(a&&s.length===2){const[o,n]=s,r=p.value;r[o]||(r[o]=[]),r[o][n]=e}else{const o=s[0],n=p.value;n[o]=e}},d=()=>{if(a){const{col:e,row:s}=l.value;p.value[e]?.[s]?.focus()}else p.value[l.value]?.focus()},y=()=>{a?l.value={col:0,row:0}:l.value=0,M(()=>d())},R=e=>{const s=e();s!==null?l.value=s:y(),M(()=>d())},m=(e,s)=>{const{col:o,row:n}=l.value,r=s.length-1,T=s[o].length-1,k=o===0?1:0,f=s[k]?s[k].length-1:-1;switch(e){case"down":n0?l.value.row--:i&&(l.value.row=T);break;case"right":o=0&&n>f&&(l.value.row=f));break;case"left":if(o>0){l.value.col--;const w=l.value,L=s[w.col].length-1;n>L&&(w.row=L)}break;case"home":l.value={col:0,row:0};break;case"end":l.value={col:r,row:s[r].length-1};break}d()},x=e=>{const s=g.value-1,o=l.value;switch(e){case"down":o0?l.value--:i&&(l.value=s);break;case"home":l.value=0;break;case"end":l.value=s;break}d()},E=(e,s)=>{const o=g.value-1,n=l.value;e.shiftKey?n>0?(e.preventDefault(),l.value--,d()):s():n{const{col:n,row:r}=l.value;let T=0,k=0;for(let f=0;f0){e.preventDefault();const f=k-1,w=t(f,o);w&&(l.value=w,d())}else s();else if(k{let o=0;for(let n=0;n{switch(e.key){case"ArrowDown":case"ArrowUp":e.preventDefault(),e.stopPropagation(),s();break;case"Escape":e.preventDefault(),e.stopPropagation();break}},handleDropdownKeydown:(e,s,o)=>{switch(e.key){case"Escape":e.preventDefault(),e.stopPropagation(),s();break;case"ArrowDown":e.preventDefault(),e.stopPropagation(),a&&o?m("down",o):x("down");break;case"ArrowUp":e.preventDefault(),e.stopPropagation(),a&&o?m("up",o):x("up");break;case"ArrowRight":a&&o?(e.preventDefault(),e.stopPropagation(),e.metaKey?m("end",o):m("right",o)):e.metaKey&&(e.preventDefault(),e.stopPropagation(),x("end"));break;case"ArrowLeft":a&&o?(e.preventDefault(),e.stopPropagation(),e.metaKey?m("home",o):m("left",o)):e.metaKey&&(e.preventDefault(),e.stopPropagation(),x("home"));break;case"Home":e.preventDefault(),e.stopPropagation(),a&&o?m("home",o):x("home");break;case"End":e.preventDefault(),e.stopPropagation(),a&&o?m("end",o):x("end");break;case"Tab":a&&o?I(e,s,o):E(e,s);break;case"Enter":case" ":if(e.preventDefault(),e.stopPropagation(),a){const{col:n,row:r}=l.value;p.value[n]?.[r]?.click()}else p.value[l.value]?.click();break}},restoreFocus:()=>{h.value?.focus()}}}export{V as a,U as u};