UNPKG

hanav

Version:

A React Navigation Menu Component Library.

3 lines (2 loc) 24.9 kB
import e,{createContext as n,useState as r,useRef as t,useCallback as u,useMemo as o,useContext as c,useLayoutEffect as a,useEffect as i,Children as l,cloneElement as f,useId as s,forwardRef as d}from"react";function v(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function p(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?v(Object(r),!0).forEach((function(n){m(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function y(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,n||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}function m(e,n,r){return(n=y(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},h.apply(this,arguments)}function I(e,n){if(null==e)return{};var r,t,u=function(e,n){if(null==e)return{};var r={};for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){if(n.indexOf(t)>=0)continue;r[t]=e[t]}return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(u[r]=e[r])}return u}function b(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,u,o,c,a=[],i=!0,l=!1;try{if(o=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;i=!1}else for(;!(i=(t=o.call(r)).done)&&(a.push(t.value),a.length!==n);i=!0);}catch(e){l=!0,u=e}finally{try{if(!i&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(l)throw u}}return a}}(e,n)||x(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||x(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,n){if(e){if("string"==typeof e)return E(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(e,n):void 0}}function E(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}var C=n({}),M=n({}),w=n(),R=n(),k=n(),T=["children","dur","gap","dynamicWidth","onlyKeyFocus","close"];function O(n){var c=n.children,a=n.dur,i=void 0===a?.5:a,l=n.gap,f=void 0===l?0:l,s=n.dynamicWidth,d=void 0!==s&&s,v=n.onlyKeyFocus,p=void 0===v||v,y=n.close,m=void 0!==y&&y,g=I(n,T),x=b(r(-1),2),E=x[0],R=x[1],k=t(-1),O=t(-1),F=t([]),A=t([]),P=t(),j=t(!1),D=t(!1),K=t([]),S=t([]),W=t(null),B=t([]),N=t([]),H=u((function(e){D.current=!1,O.current=-1,R((function(n){return e!==n&&(n<0&&k.current>-1&&e>-1&&e!==k.current&&(O.current=k.current),k.current=n),e}))}),[]),L=u((function(){P.current&&(clearTimeout(P.current),P.current=null)}),[]),Y=u((function(e){L();var n=e.target,r=F.current.findIndex((function(e){return e===n}));r>-1&&r!==E&&(j.current=!1,H(r))}),[E]),q=u((function(){P.current&&(clearTimeout(P.current),P.current=null),P.current=setTimeout((function(){j.current=!1,H(-1),P.current=null}),600)}),[]),z=q,G=o((function(){return{openedMenuIdx:E,headFocusItemInContent:K,panelsRef:A}}),[E]),U=o((function(){return{openedMenuIdx:E,overMenuPanel:L,leaveMenuPanel:z,dur:i,close:m,gap:f,dynamicWidth:d,onlyKeyFocus:p,contentWrapperRef:W,prevMenuIdxRef:k,collapsePrevMenuIdx2Ref:O,isKeyActive:j,btnsRef:F,panelsRef:A,headFocusItemInContent:K}}),[E,f,i,p,m,d]),X=o((function(){return{openedMenuIdx:E,overMenu:Y,leaveMenu:q,dur:i,onlyKeyFocus:p,setActivePanel:H,checkedFocusOwnerContent:D,isKeyActive:j,headFocusItemInContent:K,tailFocusItemInContent:S,prevMenuIdxRef:k,contentWrapperRef:W,panelsRef:A,btnsRef:F,triggerAriaIds:B,contentAriaIds:N}}),[E,i,p]);return e.createElement(M.Provider,{value:X},e.createElement(C.Provider,{value:U},e.createElement(w.Provider,{value:G},e.createElement("nav",h({"aria-label":"Main",tabIndex:-1},g),c))))}function F(e){var n=e.children,u=e.transRunning,o=c(C),s=o.openedMenuIdx,d=o.dur,v=o.prevMenuIdxRef,p=o.panelsRef,y=t([]),m=b(r(),2),h=m[0],I=m[1],g=b(r(!1),2),x=g[0],E=g[1];return a((function(){y.current=p.current.map((function(e){return(null==e?void 0:e.offsetLeft)||0}))}),[]),a((function(){I({})}),[]),i((function(){null!=h&&requestAnimationFrame((function(){return E(!0)}))}),[h]),l.map(n,(function(e,n){return f(e,{type:"C",orderI:n,contentItemStyle:{transform:M(),transition:x?"transform ".concat(d,"s"):null,flexShrink:0,width:"100%"},transRunning:u})}));function M(){var e=v.current,n=s<0?e:s;return n<1||null==y.current[n]?null:"translateX(-".concat(y.current[n],"px)")}}function A(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return l.map(e,(function(e){var r=(e.type||{}).displayName;return"Item"===r?(++n,f(e,{type:"T",orderI:n})):"Group"===r?f(e,{children:A(e.props.children,n)}):e}))}function P(e,n,r,t,u,o,c,a){i((function(){e<0&&r.current>-1&&(n&&t.current||!n)&&u.current[r.current].focus()}),[e,n]),i((function(){if(e>-1&&a&&(n&&t.current||!n)){var r=c.current[e];r?r.focus({preventScroll:!0}):o.current[e].focus({preventScroll:!0})}}),[e,n,a])}var j=["children","outer","style","style2","innerStyle2","tp","onExpanding","onExpanded","onCollapsing","onCollapsed"],D=["style"];function K(n){var o=n.children,l=n.outer,f=void 0===l?{}:l,s=n.style,d=n.style2,v=n.innerStyle2,y=n.tp,m=n.onExpanding,g=void 0===m?function(){}:m,x=n.onExpanded,E=void 0===x?function(){}:x,M=n.onCollapsing,w=void 0===M?function(){}:M,R=n.onCollapsed,k=void 0===R?function(){}:R,T=I(n,j),O=c(C),F=O.openedMenuIdx,A=O.overMenuPanel,K=O.leaveMenuPanel,S=O.dur,W=O.contentWrapperRef,B=O.onlyKeyFocus,N=O.prevMenuIdxRef,H=O.isKeyActive,L=O.btnsRef,Y=O.panelsRef,q=O.headFocusItemInContent,z=O.close,G=O.gap,U=O.dynamicWidth,X=b(r(!1),2),$=X[0],J=X[1],Q=b(r(!1),2),V=Q[0],Z=Q[1],_=F>-1||F<0&&V,ee=t([]),ne=t([]),re=t([]),te=t(!1);a((function(){F>-1&&!1===$&&(J(!0),ee.current=Y.current.map((function(e){return(null==e?void 0:e.clientWidth)||0})),ne.current=Y.current.map((function(e){return(null==e?void 0:e.clientHeight)||0})),re.current=Y.current.map((function(e){return(null==e?void 0:e.clientWidth)||0})))}),[F,$]),i((function(){$&&(te.current=!0,Z(!0))}),[$]),i((function(){V&&-1===N.current?g():V&&F<0&&w()}),[V,F]),P(F,B,N,H,L,Y,q,V);var ue=u((function(e){var n=W.current;y===e.propertyName&&(e.target!==n&&e.target!==n.parentNode||(te.current=!1,F<0?(Z(!1),J(!1),N.current=-1,k()):E()))}),[F,E]);if(_){var oe=F<0&&N.current>-1,ce=!V||oe,ae=function(e,n,r,t,u,o,c){if(n){var a=e&&r<0?t.current:r;return function(e,n,r,t){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=t.current[n],c=r.current[n],a=null==o||null==c?0:c.offsetLeft+c.clientWidth/2-o/2;return"translate(".concat(a+u,"px, ").concat(e,"px)")}(c,a,u,o,!0===n?0:Array.isArray(n)?n[a]||0:n)}return"translateY(".concat(c,"px)")}(ce,z,F,N,L,ee,G),ie=f.style,le=I(f,D),fe=U?-1===F?re.current[N.current]||0:re.current[F]||0:"100%",se="function"==typeof v?v(ce,G,S):v,de="function"==typeof d?d(G):d;return e.createElement("div",h({style:p(p({},de),{},{position:"absolute",left:0,width:fe,height:oe?ne.current[N.current]:ne.current[F],transition:V?"transform ".concat(S,"s, height ").concat(S,"s, width ").concat(S,"s"):null,transform:ae},ie)},le),e.createElement("div",h({ref:W,onMouseOver:A,onMouseLeave:K,style:p(p({},se),{},{width:"100%",height:"100%",overflow:"hidden"},s),onTransitionEnd:ue},T),o(te)))}return null}var S=["children"];function W(n){var r=n.children,t=I(n,S);return e.createElement(K,h({style2:function(e){return{clipPath:"inset(-".concat(e,"px -100vw -100vw -100vw)")}},innerStyle2:function(e,n,r){return{display:"flex",alignItems:"flex-start",transform:e?"translateY(calc(-100% - ".concat(n,"px))"):"translateY(0)",transition:"transform ".concat(r,"s")}},tp:"transform"},t),r)}var B=["children","xTrans","yTrans","trans"];function N(n){var r=n.children;n.xTrans,n.yTrans,n.trans;var t=I(n,B);return e.createElement(W,t,(function(n){return e.createElement(F,{transRunning:n},r)}))}function H(n){var u=n.children,o=n.type,a=n.orderI,l=n.contentItemStyle,d=n.transRunning,v="T"===o,p="C"===o,y=c(M),m=s(),h=t(),I=t(),g=y.triggerAriaIds,x=y.contentAriaIds,E=y.prevMenuIdxRef,C=y.openedMenuIdx,w=y.isKeyActive,k=y.setActivePanel,T=b(r(),2),O=T[0],F=T[1];if(i((function(){C>-1&&E.current<0?F(x.current[a]):C<0&&F(null)}),[C,a,O]),v){var A=y.btnsRef,P=y.overMenu,j=y.leaveMenu,D=C===a;g.current[a]=m;var K={ref:function(e){return A.current[a]=e},onClick:function(e){var n=e.target,r=A.current.findIndex((function(e){return e===n}));r<0&&(r=A.current.findIndex((function(e){return e.contains(n)}))),r>-1&&(w.current=0===e.nativeEvent.offsetX&&0===e.nativeEvent.offsetY,k(r===C?-1:r))},onMouseOver:P,onMouseLeave:j,id:m,"aria-expanded":D,"aria-controls":O};return"function"==typeof u?u(K,D):f(u,K)}if(p){var S=y.panelsRef,W=y.headFocusItemInContent,B=y.tailFocusItemInContent,N=y.checkedFocusOwnerContent,H=y.prevMenuIdxRef,L=y.onlyKeyFocus,Y=y.contentWrapperRef,q=C===a;x.current[a]=m;var z={onKeyDown:function(e){if("Escape"===e.key||"Esc"===e.key||27===e.keyCode)return w.current=!0,void k(-1);if("Tab"===e.key||9===e.keyCode){if(null!=d&&d.current)return void e.preventDefault();if(!N.current&&H.current>-1&&L&&!w.current){var n,r=document.activeElement;if(null!==(n=Y.current)&&void 0!==n&&n.contains(r)){var t=S.current[C];if(!t.contains(r))return N.current=!0,t.focus({preventScroll:!0}),void e.preventDefault()}}}var u=W.current[a],o=B.current[a];(e.target===S.current[a]&&("Tab"!==e.key&&9!==e.keyCode||(e.shiftKey?o?(o.focus(),e.preventDefault()):(I.current=!0,h.current.focus()):u&&(u.focus(),e.preventDefault()))),e.target!==u||"Tab"!==e.key&&9!==e.keyCode||!e.shiftKey)||((o||S.current[a]).focus(),e.preventDefault());e.target!==o||"Tab"!==e.key&&9!==e.keyCode||e.shiftKey||((u||S.current[a]).focus(),e.preventDefault())},ref:function(e){return S.current[a]=e},style:l,id:m,"aria-labelledby":g.current[a],"aria-hidden":!q,tabIndex:-1};return e.createElement(R.Provider,{value:a},null==W.current[a]&&e.createElement("button",{role:"presentation",style:{position:"absolute",opacity:0},onFocus:function(e){(B.current[a]||S.current[a]).focus(),e.preventDefault()}}),"function"==typeof u?u(z,(function(e){return W.current[a]=e}),(function(e){return B.current[a]=e})):f(u,z),null==B.current[a]&&e.createElement("button",{ref:h,role:"presentation",style:{position:"absolute",opacity:0},onFocus:function(e){I.current?I.current=!1:((W.current[a]||S.current[a]).focus(),e.preventDefault())}}))}return u}H.displayName="Item";var L=["children"];function Y(n){var r=n.children,t=I(n,L),u=c(w),o=u.wrapperRef,a=u.openedMenuIdx,i=u.headFocusItemInContent,l=u.panelsRef,f=A(r);return e.createElement("div",h({},t,{ref:o,onKeyDown:function(e){if(a>-1&&("Tab"===e.key||9===e.keyCode)){var n=i.current[a];e.preventDefault(),n?n.focus({preventScroll:!0}):l.current[a].focus({preventScroll:!0})}}}),f)}Y.displayName="Trigger";var q=["transition"];function z(e){var n=e.children,u=e.trans,a=e.transRunning,s=c(C),d=s.openedMenuIdx,v=s.dur,y=s.prevMenuIdxRef,h=s.collapsePrevMenuIdx2Ref,x=b(r(),2),E=x[0],M=x[1],w=t(!1);i((function(){d>-1&&(y.current>-1||h.current>-1)&&requestAnimationFrame((function(){M({}),w.current=!0}))}),[d]);var R=o((function(){return Array.from({length:l.count(n)},(function(e,n){return n})).map(k)}),[d,E]);return l.map(n,(function(e,n){return f(e,{type:"C",orderI:n,contentItemStyle:R[n],transRunning:a})}));function k(e){var n={},r=d===e,t=u.transition,o=I(u,q),c=!1!==t;for(var a in c&&(n.transition=function(e,n,r){var t=e||r.map((function(e){return"".concat(e," ").concat(v,"s")})).join(),u=y.current===n;if(u)return t;var o=d===n;if(o)return w.current?t:null;return t}(t,e,Object.keys(o||{}).filter((function(e){return Array.isArray(o[e])})))),o){var i=u[a],l=[].concat(i),f=[l[0],l[1],l[2]].filter((function(e){return null!=e}));n=p(p({},n),{},m({},a,f[2]?O.apply(void 0,g(f).concat([e])):f[1]?T.apply(void 0,g(f).concat([e])):f[0]))}return n.position="absolute",n.zIndex=r?1:null,r&&w.current&&(w.current=!1),n}function T(e,n,r){if(r===y.current&&d<0)return n;if(y.current===r)return e;if(d===r){if(y.current<0)return n;if(w.current)return n}return e}function O(e,n,r,t){var u=d===t,o=d,c=y.current,a=h.current;if(o>-1&&c<0&&a<0||o<0)return e;var i=a>0?o<a:o<c;return u?w.current?e:i?n:r:i?r:n}}var G=["children","trans","xTrans","yTrans"];function U(n){var r=n.children,t=n.trans,u=n.xTrans;n.yTrans;var o=I(n,G);return e.createElement(W,o,(function(n){return e.createElement(z,{trans:u||t,transRunning:n},r)}))}var X=["children","trans","className"],$=["className","transition"];function J(n){var r=n.children,t=n.trans,u=void 0===t?{}:t,o=n.className,c=void 0===o?"":o,a=I(n,X),i=u.className,l=void 0===i?"":i,f=u.transition,s=I(u,$),d=c.concat(" ",l);return e.createElement(K,h({innerStyle2:function(e,n,r){var t=b(Object.keys(s).reduce((function(e,n){return"string"==typeof u[n]?[e[0],e[1],p(p({},e[2]),{},m({},n,s[n]))]:[p(p({},e[0]),{},m({},n,u[n][0])),p(p({},e[1]),{},m({},n,u[n][1])),e[2]]}),[{},{},{}]),3),o=t[0],c=t[1],a=t[2],i=!1!==f;return p(p(p({},e?o:c),a),{},{transition:i?null==f?Object.keys(s||{}).filter((function(e){return Array.isArray(s[e])})).map((function(e){return"".concat(e," ").concat(r,"s")})).join():f:null,display:"flex",alignItems:"flex-start"})},className:d,tp:Object.keys(s).find((function(e){return Array.isArray(s[e])}))},a),r)}var Q=["children","yTrans","trans","xTrans"];function V(n){var r=n.children,t=n.yTrans,u=n.trans;n.xTrans;var o=I(n,Q);return e.createElement(J,h({trans:t||u},o),(function(n){return e.createElement(F,{transRunning:n},r)}))}var Z=["children","yTrans","xTrans","trans"];function _(n){var r=n.children,t=n.yTrans,u=n.xTrans;n.trans;var o=I(n,Z);return e.createElement(J,h({trans:t},o),(function(n){return e.createElement(z,{trans:u,transRunning:n},r)}))}var ee=["children","outer","xTrans","yTrans","trans","style"],ne=["style"];function re(n){var t=n.children,u=n.outer,o=void 0===u?{}:u;n.xTrans,n.yTrans,n.trans;var i=n.style,s=I(n,ee),d=c(C),v=d.leaveMenuPanel,y=d.overMenuPanel,m=d.gap,g=d.contentWrapperRef,x=d.openedMenuIdx,E=d.dynamicWidth,M=d.panelsRef,w=d.close,R=d.btnsRef,k=d.onlyKeyFocus,T=d.prevMenuIdxRef,O=d.isKeyActive,F=d.headFocusItemInContent,A=o.style,j=I(o,ne),D=l.map(t,(function(e,n){return f(e,{type:"C",orderI:n})})),K=b(r(0),2),S=K[0],W=K[1],B=b(r(0),2),N=B[0],H=B[1];return a((function(){if(E&&x>-1){var e=M.current[x];W((null==e?void 0:e.clientWidth)||0)}if(x>-1&&w){var n=M.current[x],r=R.current[x],t=null!=r?r.offsetLeft+r.clientWidth/2-n.clientWidth/2:0;H(t)}}),[x,w,E]),P(x,k,T,O,R,M,F,!0),x<0?null:e.createElement("div",h({ref:g,style:p({position:"absolute",left:0,width:E?S:"100%",visibility:E?0===S?"hidden":"visible":null,transform:w?"translate(".concat(N,"px,").concat(m,"px)"):"translateY(".concat(m,"px)")},A)},j),e.createElement("div",h({onMouseOver:y,onMouseLeave:v,style:p({width:E?S:null},i)},s),D[x]))}var te=["children"];function ue(n){var r=n.children,t=I(n,te);return e.createElement("div",t,r)}function oe(e){var n=e.children,r=c(M).headFocusItemInContent,t=c(R);return null==r?n:f(n,{ref:function(e){return r.current[t]=e}})}function ce(e){var n=e.children,r=c(M).tailFocusItemInContent,t=c(R);return null==r?n:f(n,{ref:function(e){return r.current[t]=e}})}ue.displayName="Group";var ae=["children"],ie=["onKeyDown"],le=d((function(n,r){var u=n.children,o=I(n,ae),c=o.onKeyDown,a=I(o,ie),l=t([]),s=t();i((function(){var e=l.current.map((function(e){var n=e.getBoundingClientRect(),r=n.x,t=n.y,u=n.width/2,o=n.height/2;return[r+u,t+o,u,o,e]}));s.current=function(e){var n=g(e);n.sort((function(e,n){return e[0]-n[0]}));var r=g(e);r.sort((function(e,n){return e[1]-n[1]}));var t=new Map;return e.forEach((function(e,u){var o=b(e,5),c=o[0],a=o[1],i=o[2],l=o[3],f=o[4],s=r.findIndex((function(n){return n===e})),d=n.findIndex((function(n){return n===e})),v=1/0,p=null;r.slice(s+1).forEach((function(e){var n=b(e,5),r=n[0],t=n[1],u=n[2],o=n[3],f=n[4],s=1/0;a+l<=t-o&&(r-u>=c+i?r-u-c-i<t-o-a-l&&(s=fe(c+i,a+l,r-u,t-o)):r+u<=c-i?c-i-r-u<t-o-a-l&&(s=fe(c+i,a+l,r+u,t-o)):s=Math.pow(t-o-a-l,2)),s<v&&(p=f,v=s)}));var y=1/0,m=null;r.slice(0,s).forEach((function(e){var n=b(e,5),r=n[0],t=n[1],u=n[2],o=n[3],f=n[4],s=1/0;a-l>=t+o&&(r-u>=c+i?r-u-c-i<a-l-t-o&&(s=fe(c+i,a-l,r-u,t+o)):r+u<=c-i?c-i-r-u<a-l-t-o&&(s=fe(c-i,a-l,r+u,t+o)):s=Math.pow(a-l-t-o,2)),s<y&&(m=f,y=s)}));var h=1/0,I=null;n.slice(0,d).forEach((function(e){var n=b(e,5),r=n[0],t=n[1],u=n[2],o=n[3],f=n[4],s=1/0;c-i>=r+u&&(t+o<=a-l?a-l-t-o<c-i-r-u&&(s=fe(c-i,a-l,r+u,t+o)):t-o>=a+l?t-o-a-l<c-i-r-u&&(s=fe(c-i,a+l,r+u,t-o)):s=Math.pow(c-i-r-u,2)),s<h&&(I=f,h=s)}));var g=1/0,x=null;n.slice(d+1).forEach((function(e){var n=b(e,5),r=n[0],t=n[1],u=n[2],o=n[3],f=n[4],s=1/0;r-u>=c+i&&(t+o<=a-l?a-l-t-o<r-u-c-i&&(s=fe(c+i,a-l,r-u,t+o)):t-o>=a+l?t-o-a-l<r-u-c-i&&(s=fe(c+i,a+l,r-u,t-o)):s=Math.pow(r-u-c-i,2)),s<g&&(x=f,g=s)})),t.set(f,{up:m,down:p,left:I,right:x})})),t}(e)}),[]);return e.createElement(k.Provider,{value:l},f(u,p({onKeyDown:function(e){c(e);var n=document.activeElement,r=l.current[0],t=s.current.get(n)||{left:r,right:r,up:r,down:r};function u(n){n&&(n.focus(),e.preventDefault())}"ArrowRight"===e.key||39===e.keyCode?u(t.right):"ArrowLeft"===e.key||37===e.keyCode?u(t.left):"ArrowUp"===e.key||38===e.keyCode?u(t.up):"ArrowDown"!==e.key&&40!==e.keyCode||u(t.down)},ref:r},a)))}));function fe(e,n,r,t){var u=r-e,o=t-n;return u*u+o*o}function se(e){var n=e.children,r=c(k),u=t();return f(n,{ref:function(e){e?(u.current=e,r.current.includes(e)||r.current.push(e)):r.current=r.current.filter((function(e){return e!==u.current}))}})}var de=n({}),ve=n({}),pe=n({}),ye=n({}),me=n(),he=n(),Ie=["children"],be=["style"];function ge(n){var u=n.children,c=I(n,Ie),a=t(null),l=b(r(),2),f=l[0],d=l[1],v=b(r(-1),2),y=v[0],m=v[1],g=t(-1),x=t([]),E=t([]),C=t([]),M=s(),w=t([]),R=t([]),k=t(),T=t(),O=t(),F=t(),A=t();i((function(){f&&(y<0?x.current[g.current].focus():(E.current[y]||k.current).focus())}),[y]);var P=c.style,j=I(c,be),D=o((function(){return{navRef:a,expanded:f,setE:d,btnsRef:x,openedMenuIdx:y,tailFocusItemInContent:C,headFocusItemInContent:E,menuId:M,menuRef:k,mockTail:T,mockHead:O,mockTailFocusByWrap:F,mockHeadFocusByWrap:A}}),[f,y]),K=o((function(){return{openedMenuIdx:y,openOrCloseContentById:B,btnsRef:x,headFocusItemInContent:E,tailFocusItemInContent:C,triggerIdsRef:w,contentIdsRef:R,menuRef:k,mockTail:T,mockTailFocusByWrap:F,mockHead:O,mockHeadFocusByWrap:A}}),[y]),S=o((function(){return{openedMenuIdx:y}}),[y]),W=o((function(){return{setE:d,expanded:f,openOrCloseContentById:B,btnsRef:x,menuId:M}}),[f]);return e.createElement(pe.Provider,{value:D},e.createElement(ve.Provider,{value:K},e.createElement(de.Provider,{value:S},e.createElement(ye.Provider,{value:W},e.createElement(me.Provider,{value:B},e.createElement("nav",h({"aria-label":"Main",tabIndex:-1,ref:a,style:p({position:"fixed",top:0,left:0,width:"100%",zIndex:2},P)},j),u))))));function B(e){m((function(n){return g.current=n,e}))}}var xe=["children"],Ee=["style"];function Ce(n){var t=n.children,u=I(n,xe),o=b(r(0),2),a=o[0],l=o[1],f=c(pe),s=f.navRef,d=f.expanded,v=f.setE,y=f.btnsRef,m=f.openedMenuIdx,g=f.tailFocusItemInContent,x=f.headFocusItemInContent,E=f.menuId,C=f.menuRef,M=f.mockTailFocusByWrap,w=f.mockTail,R=f.mockHeadFocusByWrap,k=f.mockHead,T=b(r(!1),2),O=T[0],F=T[1];i((function(){l(s.current.clientHeight),F(function(){var e=document.createElement("div");e.style.height="1dvh",document.body.appendChild(e);var n=e.clientHeight>0;return document.body.removeChild(e),n}())}),[]);var A=u.style,P=I(u,Ee);return d?e.createElement("div",h({id:E,role:"dialog","aria-modal":!0,"aria-label":"Menu",tabIndex:-1,ref:C,style:p({height:"calc(100".concat(O?"d":"","vh - ").concat(a,"px)"),position:"absolute",left:0,top:"100%",width:"100%"},A),onKeyDown:function(e){if("Escape"===e.key||27===e.keyCode)v(!1);else if("Tab"===e.key||9===e.keyCode){var n=y.current.length;if(e.shiftKey&&e.target===C.current)if(m<0)y.current.slice(-1)[0].focus(),e.preventDefault();else{var r=g.current[m];r?(r.focus(),e.preventDefault()):(M.current=!0,w.current.focus())}else if(e.shiftKey||e.target!==C.current)if(e.shiftKey&&m>-1&&e.target===x.current[m]){(g.current[m]||C.current).focus(),e.preventDefault()}else if(!e.shiftKey&&m>-1&&e.target===g.current[m]){(x.current[m]||C.current).focus(),e.preventDefault()}else e.shiftKey&&m<0&&e.target===y.current[0]?(y.current[n-1].focus(),e.preventDefault()):!e.shiftKey&&m<0&&e.target===y.current[n-1]&&(y.current[0].focus(),e.preventDefault());else if(m>-1){var t=x.current[m];t?(t.focus(),e.preventDefault()):(R.current=!0,k.current.focus())}}}},P),t):null}var Me=["children"],we=["style"];function Re(n){var r=n.children,t=I(n,Me),u=A(r),o=t.style,c=I(t,we);return e.createElement("div",h({style:p({display:"flex",flexDirection:"column"},o)},c),u)}var ke=["children"],Te=["style"];function Oe(n){var r=n.children,t=I(n,ke),u=c(de).openedMenuIdx,o=l.map(r,(function(e,n){return f(e,{type:"C",orderI:n})})),a=t.style,i=I(t,Te);return u<0?null:e.createElement("div",h({style:p({position:"absolute",width:"100%",height:"100%",top:0},a)},i),o)}function Fe(n){var t=n.children,u=n.type,o=n.orderI,a="T"===u,l="C"===u,d=c(ve),v=b(r(),2)[1],p=d.openedMenuIdx,y=d.triggerIdsRef,m=d.contentIdsRef,h=p===o,I=s();if(i((function(){p>-1&&a&&v({})}),[p]),a){var g=d.openOrCloseContentById,x=d.btnsRef;y.current[o]=I;var E={id:I,"aria-controls":p>-1?m.current[o]:null,"aria-expanded":h,onClick:function(){g(h?-1:o)},ref:function(e){return x.current[o]=e}};return"function"==typeof t?t(E):f(t,E)}if(l){if(!h)return null;var C=d.headFocusItemInContent,M=d.tailFocusItemInContent,w=d.mockTail,R=d.mockHead,k=d.mockTailFocusByWrap,T=d.mockHeadFocusByWrap,O=d.menuRef;m.current[o]=I;var F={id:I,"aria-labelledby":y.current[o]};return e.createElement(he.Provider,{value:o},null==C.current[o]&&e.createElement("button",{ref:R,role:"presentation",style:{position:"absolute",opacity:0},onFocus:function(e){T.current?T.current=!1:((M.current[o]||O.current).focus(),e.preventDefault())}}),"function"==typeof t?t(F,(function(e){return C.current[o]=e}),(function(e){return M.current[o]=e})):f(t,F),null==M.current[o]&&e.createElement("button",{ref:w,role:"presentation",style:{position:"absolute",opacity:0},onFocus:function(e){k.current?k.current=!1:((C.current[o]||O.current).focus(),e.preventDefault())}}))}return e.createElement(e.Fragment,null,t)}Fe.displayName="Item";var Ae=["children"];function Pe(n){var r=n.children,u=I(n,Ae),o=c(ye),a=o.setE,l=o.expanded,f=o.openOrCloseContentById,s=o.btnsRef,d=o.menuId,v=t();return i((function(){null!=l&&(l?s.current[0].focus():v.current.focus())}),[l]),e.createElement("button",h({"aria-label":l?"Close":"Menu","aria-controls":d,onClick:function(){a(!l),f(-1)},ref:v},u),null==r?l?"Expanded":"Collapsed":"function"==typeof r?r(l):r)}var je=["children"],De=d((function(n,r){var t=n.children,u=I(n,je),o=c(me);return e.createElement("button",h({"aria-label":"Main menu",onClick:function(){return o(-1)}},u,{ref:r}),t||"Back")}));function Ke(e){var n=e.children,r=c(ve).headFocusItemInContent,t=c(he);return null==r?n:f(n,{ref:function(e){return r.current[t]=e}})}function Se(e){var n=e.children,r=c(ve).tailFocusItemInContent,t=c(he);return null==r?n:f(n,{ref:function(e){return r.current[t]=e}})}export{se as ArrowFItem,le as ArrowFocus,N as Content,_ as CustomMotionContent,U as CustomXMotionContent,V as CustomYMotionContent,ue as Group,oe as Head,H as Item,De as MiniBack,Oe as MiniContent,Ke as MiniHead,Fe as MiniItem,Ce as MiniMenu,ge as MiniNavBar,Se as MiniTail,Pe as MiniToggle,Re as MiniTrigger,O as NavBar,re as ReducedMotionContent,ce as Tail,Y as Trigger}; //# sourceMappingURL=index.js.map