import*as e from"react";import n,{PrimeReactContext as t}from"primereact/api";import{ComponentBase as r,useHandleStyle as i}from"primereact/componentbase";import{CSSTransition as o}from"primereact/csstransition";import{useMergeProps as u,useUpdateEffect as a,useMatchMedia as c,useEventListener as l,useResizeListener as s,useMountEffect as p,useUnmountEffect as m}from"primereact/hooks";import{OverlayService as f}from"primereact/overlayservice";import{Portal as d}from"primereact/portal";import{classNames as b,DomHandler as v,ObjectUtils as y,IconUtils as g,UniqueComponentId as h,ZIndexUtils as x}from"primereact/utils";import{AngleRightIcon as I}from"primereact/icons/angleright";import{Ripple as E}from"primereact/ripple";function k(){return k=Object.assign?Object.assign.bind():function(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,r=Array(n);t .p-submenu-list {\n display: block;\n left: 100%;\n top: 0;\n }\n\n .p-tieredmenu .p-menuitem-active > .p-submenu-list-flipped {\n left: -100%;\n }\n}\n",inlineStyles:{submenu:function(e){var n=e.subProps;return{display:!n.root&&n.parentActive?"block":"none"}}}}});function A(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function L(e){for(var n=1;nt.height?t.height-u+"px":"0px",parseInt(n.left,10)+o+i>t.width-v.calculateScrollbarWidth()&&v.addClass(r.current,"p-submenu-list-flipped")}},m=function(e,t){var r=t.item;O(t)?e.preventDefault():(r.command&&r.command({originalEvent:e,item:r}),n.onItemClick&&n.onItemClick({originalEvent:e,processedItem:t}),r.url||(e.preventDefault(),e.stopPropagation()))},f=function(e){return e.item&&e.item.id?e.item.id:"".concat(n.menuId,"_").concat(e.key)},d=function(e,n,t){return e&&e.item?y.getItemValue(e.item[n],t):void 0},h=function(e){return n.activeItemPath.some((function(n){return n.key===e.key}))},x=function(e){return!1!==d(e,"visible")},O=function(e){return d(e,"disabled")},w=function(e){return n.focusedItemId===f(e)},S=function(e){return y.isNotEmpty(e.items)},P=function(e,t){n.onItemMouseEnter&&n.onItemMouseEnter({originalEvent:e,processedItem:t})},N=function(e){return e-n.model.slice(0,e).filter((function(e){return x(e)&&d(e,"separator")})).length+1};a((function(){n.root||!n.parentActive||n.isMobileMode||p()}),[n.parentActive]),e.useImperativeHandle(t,(function(){return{getElement:function(){return r.current}}}));var K=function(t){var r="separator_"+t,u=i({className:c("separator"),role:"separator"},o("separator",{hostName:n.hostName}));return e.createElement("li",k({},u,{key:r}))},j=function(t,r){return S(t)?e.createElement(_,{id:n.id+"_"+r,menuProps:n.menuProps,model:t.items,menuId:n.menuId,ariaLabelledby:f(t),focusedItemId:n.focusedItemId,activeItemPath:n.activeItemPath,level:n.level+1,onItemClick:n.onItemClick,popup:n.popup,onItemMouseEnter:n.onItemMouseEnter,parentActive:h(t),isMobileMode:n.isMobileMode,submenuIcon:n.submenuIcon,ptm:n.ptm,cx:c,sx:l}):null},M=function(t,r){if(!1===x(t))return null;var o=t.item,u=d(t,"style"),a=d(t,"className"),l=d(t,"icon"),p=d(t,"target"),v=d(t,"url"),K=f(t),M=w(t),D=h(t),T=O(t),C=S(t),A=b("p-menuitem-link"),_=b("p-menuitem-icon",l),H=i({className:b(o.icon,"p-menuitem-icon","icon")},s(t,"icon")),R=g.getJSXIcon(l,L({},H),{props:n.menuProps}),B=i({className:c("label")},s(t,"label")),W=o.label&&e.createElement("span",B,o.label),F=i({className:c("submenuIcon")},s(t,"submenuIcon")),Z=C&&g.getJSXIcon(n.submenuIcon||e.createElement(I,F),L({},F),{props:n.menuProps}),V=j(t,r),z=i({href:v||"#",tabIndex:"-1",onFocus:function(e){return e.stopPropagation()},className:c("action"),target:p},s(t,"action")),U=e.createElement("a",z,R,W,Z,e.createElement(E,null));o.template&&(U=y.getJSXElement(o.template,o,{className:A,labelClassName:"p-menuitem-text",iconClassName:_,submenuIconClassName:"p-submenu-icon",element:U,props:n,active:D,disabled:T}));var J=i({onClick:function(e){return m(e,t)},onMouseEnter:function(e){return P(e,t)},className:c("content")},s(t,"content")),X=i({id:K,"aria-label":o.label,"aria-disabled":T,"aria-expanded":C?D:void 0,"aria-haspopup":C&&!v?"menu":void 0,"aria-setsize":n.model.filter((function(e){return x(e)&&!d(e,"separator")})).length,"aria-posinset":N(r),"data-p-highlight":D,"data-p-disabled":T,"data-p-visited":M,className:c("menuitem",{itemClassName:a,active:D,focused:M,disabled:T}),style:u,onMouseEnter:function(e){return P(e,o)},role:"menuitem"},s(t,"menuitem"));return e.createElement("li",k({},X,{key:K}),e.createElement("div",J,U),V)},D=n.model?n.model.map((function(e,n){return!1===e.visible?null:d(e,"separator")?K(n):M(e,n)})):null,T=n.root?"menu":"submenu",C=i({ref:r,id:n.id,tabIndex:n.tabIndex,onFocus:n.onFocus,onBlur:n.onBlur,onKeyDown:n.onKeyDown,className:c(T,{subProps:n}),style:l(T,{subProps:n}),role:n.root?"menubar":"menu","aria-label":n.ariaLabel,"aria-labelledby":n.ariaLabelledby,"aria-orientation":n.ariaOrientation,"aria-activedescendant":n.focusedItemId},o(T,{hostName:n.hostName}));return e.createElement("ul",C,D)})));function H(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function R(e){for(var n=1;n-1?n+e+1:e},un=function(e){var n=e>0?y.findLastIndex(ee.slice(0,e),(function(e){return Qe(e)})):-1;return n>-1?n:e},an=function(){return ee.findIndex((function(e){return en(e)}))},cn=function(){var e=an();return e<0?tn():e},ln=function(){var e=an();return e<0?rn():e},sn=function(e){ge.current=(ge.current||"")+e;var n=-1,t=!1;return-1!==(n=-1!==z.index?-1===(n=ee.slice(z.index).findIndex((function(e){return Ge(e)})))?ee.slice(0,z.index).findIndex((function(e){return Ge(e)})):n+z.index:ee.findIndex((function(e){return Ge(e)})))&&(t=!0),-1===n&&-1===z.index&&(n=cn()),-1!==n&&pn(n),he.current&&clearTimeout(he),he.current=setTimeout((function(){ge.current="",he.current=null}),500),t},pn=function(e){z.index!==e&&(U(R(R({},z),{},{index:e})),mn())},mn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,n=-1!==e?"".concat(S,"_").concat(e):F,t=v.findSingle(Je(),'li[id="'.concat(n,'"]'));t&&t.scrollIntoView&&t.scrollIntoView({block:"nearest",inline:"start"})},fn=e.useCallback((function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=[];return e&&e.forEach((function(e,o){var u=(""!==r?r+"_":"")+o,a={item:e,index:o,level:n,key:u,parent:t,parentKey:r};a.items=fn(e.items,n+1,a,u),i.push(a)})),i}),[]),dn=function(){if(!ye.current){ye.current=v.createInlineStyle(E&&E.nonce||n.nonce,E&&E.styleContainer);var e="".concat(ue),t="\n@media screen and (max-width: ".concat(O.breakpoint,") {\n .p-tieredmenu[").concat(e,"] > ul {\n max-height: ").concat(O.scrollHeight,";\n overflow: ").concat(O.scrollHeight?"auto":"",";\n }\n\n .p-tieredmenu[").concat(e,"] .p-submenu-list {\n position: relative;\n }\n\n .p-tieredmenu[").concat(e,"] .p-menuitem-active > .p-submenu-list {\n left: 0;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-tieredmenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-tieredmenu[").concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n }\n\n ').concat(O.popup?"":".p-tieredmenu[".concat(e,"] { width: 100%; }"),"\n}\n");ye.current.innerHTML=t}},bn=function(){ye.current=v.removeInlineStyle(ye.current)},vn=function(){var e;O.autoZIndex&&x.set("menu",fe.current,E&&E.autoZIndex||n.autoZIndex,O.baseZIndex||E&&E.zIndex.menu||n.zIndex.menu),v.addStyles(fe.current,{position:"absolute",top:"0",left:"0"}),e=v.getOuterWidth(be.current)>v.getOuterWidth(fe.current),v.alignOverlay(fe.current,be.current,O.appendTo,e),v.focus(de.current.getElement()),mn(),ue&&O.breakpoint&&(fe.current.setAttribute(ue,""),dn())},yn=function(){Ee(),we()},gn=function(){be.current=null,ke(),Se()},hn=function(){x.clear(fe.current),bn()};p((function(){var e=h();!S&&P(e),O.breakpoint&&!ue&&ae(e)})),e.useEffect((function(){var e=fn(O.model||[]);G(e)}),[O.model,fn]),a((function(){var e=D.find((function(e){return e.key===z.parentKey}));ne(e?e.items:q)}),[D,z,q]),a((function(){var e=-1!==z.index?"".concat(S).concat(y.isNotEmpty(z.parentKey)?"_"+z.parentKey:"","_").concat(z.index):null;Z(e)}),[z]),a((function(){O.popup||(y.isNotEmpty(D)?(Ee(),we()):(ke(),Se()))}),[D]),a((function(){if(re){var e=-1!==z.index?on(z.index):cn();pn(e),A(D.filter((function(e){return e.parentKey!==z.parentKey}))),ie(!1)}}),[re]),a((function(){return ue&&fe.current&&(fe.current.setAttribute(ue,""),dn()),function(){bn()}}),[ue,O.breakpoint]),m((function(){x.clear(fe.current)})),e.useImperativeHandle(g,(function(){return{props:O,toggle:Ne,show:Ke,hide:je,getElement:function(){return fe.current}}}));var xn,In,En=(xn=I({ref:fe,id:O.id,className:b(O.className,pe("root")),style:O.style,onClick:Pe},C.getOtherProps(O),se("root")),In=I({classNames:pe("transition"),in:K,timeout:{enter:120,exit:100},options:O.transitionOptions,unmountOnExit:!0,onEnter:vn,onEntered:yn,onExit:gn,onExited:hn},se("transition")),e.createElement(o,k({nodeRef:fe},In),e.createElement("div",xn,e.createElement(_,{id:S+"_list",ref:de,hostName:"TieredMenu",menuProps:O,tabIndex:0,model:q,ariaLabel:O.ariaLabel,ariaLabelledBy:O.ariaLabelledBy,ariaOrientation:"vertical",ariaActiveDescendant:H?F:void 0,menuId:S,level:0,focusedItemId:F,activeItemPath:D,onFocus:Me,onBlur:De,onKeyDown:Te,onItemClick:Ae,onItemMouseEnter:Le,root:!0,popup:O.popup,onHide:je,isMobileMode:xe,submenuIcon:O.submenuIcon,ptm:se,cx:pe,sx:me}))));return O.popup?e.createElement(d,{element:En,appendTo:O.appendTo}):En})));B.displayName="TieredMenu";export{B as TieredMenu};