import*as e from"react";import{PrimeReactContext as n}from"primereact/api";import{ComponentBase as t,useHandleStyle as r}from"primereact/componentbase";import{CSSTransition as a}from"primereact/csstransition";import{useMergeProps as o,useMountEffect as i}from"primereact/hooks";import{ChevronDownIcon as l}from"primereact/icons/chevrondown";import{ChevronRightIcon as c}from"primereact/icons/chevronright";import{classNames as u,ObjectUtils as s,IconUtils as m,DomHandler as p,UniqueComponentId as d}from"primereact/utils";import{Ripple as f}from"primereact/ripple";function v(){return v=Object.assign?Object.assign.bind():function(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,r=Array(n);t0?s.findLast(S.slice(0,n),(function(e){return Y(e)})):void 0)||e},ee=function(e,n){w.current=(w.current||"")+n;var t=null,r=!1;if(s.isNotEmpty(d)){var a=S.findIndex((function(e){return e.key===d.key}));t=S.slice(a).find((function(e){return z(e)})),t=s.isEmpty(t)?S.slice(0,a).find((function(e){return z(e)})):t}else t=S.find((function(e){return z(e)}));return s.isNotEmpty(t)&&(r=!0),s.isEmpty(t)&&s.isEmpty(d)&&(t=$()),s.isNotEmpty(t)&&ne({originalEvent:e,processedItem:t,allowHeaderFocus:!1}),C&&clearTimeout(C.current),C.current=setTimeout((function(){w.current="",C.currentt=null}),500),r},ne=function(e){var t=e.originalEvent,r=e.processedItem,a=e.focusOnNext,o=e.selfCheck,i=e.allowHeaderFocus,l=void 0===i||i;s.isNotEmpty(d)&&d.key!==r.key?(f(r),te()):l&&n.onHeaderFocus&&n.onHeaderFocus({originalEvent:t,focusOnNext:a,selfCheck:o})},te=function(){var e=p.findSingle(F(),'li[id="'.concat("".concat(b),'"]'));e&&e.scrollIntoView&&e.scrollIntoView({block:"nearest",inline:"start"})},re=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=t||0===r&&n.model;if(!a)return null;for(var o=0;o1&&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]:"",a=[];return e&&e.forEach((function(e,o){var i=e.key?e.key:(""!==r?r+"_":"")+o,l={item:e,index:o,level:n,key:i,parent:t,parentKey:r};l.items=ae(e.items,n+1,l,i),a.push(l)})),a},oe=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e&&e.forEach((function(e){W(e)&&(n.push(e),oe(e.items,n))})),n};return e.useEffect((function(){var e=ae(n.model);O(e)}),[n.model]),e.useEffect((function(){var e=oe(x);P(e)}),[x,h]),e.useEffect((function(){var e;e=Object.entries(n.expandedKeys||{}).reduce((function(e,n){var t=N(n,2);if(t[1]){var r=re(t[0]);r&&e.push(r)}return e}),[]),E(e)}),[n.expandedKeys]),t=function(){var e=s.isNotEmpty(d)?"".concat(n.panelId,"_").concat(d.key):null;y(e)},r=[n.panelId,d],a=e.useRef(!1),e.useEffect((function(){if(a.current)return t&&t();a.current=!0}),r),e.createElement(j,{hostName:"PanelMenu",id:n.panelId+"_list",ref:K,role:"tree",tabIndex:-1,ariaActivedescendant:c?b:void 0,panelId:n.panelId,focusedItemId:c?b:void 0,model:x,activeItemPath:h,menuProps:n.menuProps,onFocus:function(e){u(!0)},onBlur:function(){u(!1),f(null),w.current=""},onKeyDown:function(e){var n=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":H(e);break;case"ArrowUp":M(e);break;case"ArrowLeft":q(e);break;case"ArrowRight":J(e);break;case"Home":X(e);break;case"End":U(e);break;case"Space":B(e);break;case"Enter":case"NumpadEnter":V(e);break;case"Escape":case"Tab":case"PageDown":case"PageUp":case"Backspace":case"ShiftLeft":case"ShiftRight":break;default:!n&&s.isPrintableCharacter(e.key)&&ee(e,e.key)}},onItemToggle:function(e){var t=e.processedItem,r=e.expanded;if(n.expandedKeys)n.onToggle&&n.onToggle({item:t.item,expanded:r});else{var a=h.filter((function(e){return e.parentKey!==t.parentKey}));r&&a.push(t),E(a)}t.item&&(t.item=D(D({},t.item),{},{expanded:r})),p.focus(F()),f(t)},level:0,className:i("submenu"),expandIcon:n.expandIcon,collapseIcon:n.collapseIcon,root:!0,ptm:o,cx:i})}));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 T(e){for(var n=1;n1&&void 0!==arguments[1]&&arguments[1]?e:e.nextElementSibling,'[data-pc-section="header"]');return n?p.getAttribute(n,"data-p-disabled")?Z(n.parentElement):n:null},ee=function(e){var n=p.findSingle(arguments.length>1&&void 0!==arguments[1]&&arguments[1]?e:e.previousElementSibling,'[data-pc-section="header"]');return n?p.getAttribute(n,"data-p-disabled")?ee(n.parentElement):n:null},ne=function(){return Z(A.current.firstElementChild,!0)},te=function(){return ee(A.current.lastElementChild,!0)},re=function(e){var n=e.originalEvent,t=e.focusOnNext,r=e.selfCheck,a=n.currentTarget.closest('[data-pc-section="panel"]'),o=r?p.findSingle(a,'[data-pc-section="header"]'):t?Z(a):ee(a);o?ie(n,o):t?$(n):G(n)},ae=function(e,n){if(!J(n)){var t=!M(n),r=O&&s.equals(n,O)?null:n;if(k(r),g.multiple){var a=w;w.some((function(e){return s.equals(n,e)}))?a=w.filter((function(e){return!s.equals(n,e)})):a.push(n),j(a)}oe({item:n,expanded:t}),t&&e?g.onOpen&&g.onOpen({originalEvent:e,item:n}):g.onClose&&g.onClose({originalEvent:e,item:n})}},oe=function(e){var n=e.item,t=e.expanded,r=void 0!==t&&t;if(g.expandedKeys){var a=T({},g.expandedKeys);r?a[n.key]=!0:delete a[n.key],g.onExpandedKeysChange&&g.onExpandedKeysChange(a)}},ie=function(e,n){n&&p.focus(n)},le=function(e,n,t){return _(n,{context:{active:M(e),focused:X(e),disabled:J(e),index:t}})};e.useImperativeHandle(f,(function(){return{props:g,getElement:function(){return A.current}}})),i((function(){!E&&I(d())})),e.useEffect((function(){D(!0),g.model&&g.model.forEach((function(e){e.expanded&&ae(null,e)}))}),[g.model]);var ce=function(){D(!1)},ue=g.model?g.model.map((function(n,t){if(!q(n))return null;var r=n.id||E+"_"+t,o=M(n),i=u("p-menuitem-icon",n.icon),p=b({className:L("headerIcon",{item:n})},le(n,"headerIcon",t)),d=m.getJSXIcon(n.icon,T({},p),{props:g}),f=b({className:L("headerSubmenuIcon")},le(n,"headerSubmenuIcon",t)),y=n.items&&m.getJSXIcon(o?g.collapseIcon||e.createElement(l,f):g.expandIcon||e.createElement(c,f)),h=b({className:L("headerLabel")},le(n,"headerLabel",t)),I=n.label&&e.createElement("span",h,n.label),x=e.createRef(),O=b({href:n.url||"#",tabIndex:"-1",className:L("headerAction")},le(n,"headerAction",t)),k=e.createElement("a",O,y,d,I);n.template&&(k=s.getJSXElement(n.template,n,{onClick:function(e){return F(e,n)},className:"p-panelmenu-header-link",labelClassName:"p-menuitem-text",submenuIconClassName:"p-panelmenu-icon",iconClassName:i,element:k,props:g,leaf:!n.items,active:o}));var N=b({id:(null==n?void 0:n.id)||U(t),className:L("panel",{item:n}),style:n.style},le(n,"panel",t)),S=b({id:V(null==n?void 0:n.id,t),className:L("header",{active:o,item:n}),"aria-label":n.label,"aria-expanded":o,"aria-disabled":n.disabled,"aria-controls":B(null==n?void 0:n.id,t),tabIndex:n.disabled?null:"0",onClick:function(e){return F(e,n)},onKeyDown:function(e){return z(e,n)},"data-p-disabled":n.disabled,"data-p-highlight":o,role:"button",style:n.style},le(n,"header",t)),P=b({className:L("headerContent")},le(n,"headerContent",t)),w=b({className:L("menuContent")},le(n,"menuContent",t)),j=b({className:L("toggleableContent",{active:o}),role:"region","aria-labelledby":V(null==n?void 0:n.id,t)},le(n,"toggleableContent",t)),C=b({classNames:L("transition"),timeout:{enter:1e3,exit:450},onEnter:ce,in:o,unmountOnExit:!0,options:g.transitionOptions},le(n,"transition",t));return e.createElement("div",v({},N,{key:r}),e.createElement("div",S,e.createElement("div",P,k)),e.createElement(a,v({nodeRef:x},C),e.createElement("div",v({id:B(null==n?void 0:n.id,t),ref:x},j),e.createElement("div",w,e.createElement(K,{panelId:(null==n?void 0:n.id)||U(t),menuProps:g,onToggle:oe,onHeaderFocus:re,level:0,model:n.items,expandedKeys:g.expandedKeys,className:"p-panelmenu-root-submenu",submenuIcon:g.submenuIcon,ptm:_,cx:L})))))})):null,se=b({ref:A,className:u(g.className,L("root")),id:g.id,style:g.style},S.getOtherProps(g),_("root"));return e.createElement("div",se,ue)})));R.displayName="PanelMenu";export{R as PanelMenu};