import*as e from"react";import n,{PrimeReactContext as t,ariaLabel as r,localeOption as o,FilterService as l}from"primereact/api";import{ComponentBase as i,useHandleStyle as a}from"primereact/componentbase";import{useMergeProps as u,useDebounce as c,useOverlayListener as p,useMountEffect as s,useUpdateEffect as d,useUnmountEffect as f}from"primereact/hooks";import{ChevronDownIcon as m}from"primereact/icons/chevrondown";import{ChevronUpIcon as v}from"primereact/icons/chevronup";import{SpinnerIcon as b}from"primereact/icons/spinner";import{TimesIcon as g}from"primereact/icons/times";import{OverlayService as h}from"primereact/overlayservice";import{Tooltip as y}from"primereact/tooltip";import{classNames as w,ObjectUtils as O,DomHandler as I,IconUtils as E,ZIndexUtils as x}from"primereact/utils";import{CSSTransition as S}from"primereact/csstransition";import{SearchIcon as D}from"primereact/icons/search";import{Portal as F}from"primereact/portal";import{VirtualScroller as k}from"primereact/virtualscroller";import{Ripple as C}from"primereact/ripple";import{CheckIcon as L}from"primereact/icons/check";import{IconBase as N}from"primereact/iconbase";function P(){return P=Object.assign?Object.assign.bind():function(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,r=Array(n);t2&&void 0!==arguments[2]?arguments[2]:{},l={height:o.props?o.props.itemSize:void 0};if(l=W(W({},l),t.style),t.group&&n.optionGroupLabel){var i=n.optionGroupLabel,a=n.optionGroupTemplate?O.getJSXElement(n.optionGroupTemplate,t,r):n.getOptionGroupLabel(t),u=r+"_"+n.getOptionGroupRenderKey(t),c=d({className:m("itemGroup",{optionGroupLabel:i}),style:l,"data-p-highlight":n.selected},L("itemGroup")),p=d({className:m("itemGroupLabel")},L("itemGroupLabel"));return e.createElement("li",P({key:u},c),e.createElement("span",p,a))}var s=n.getOptionRenderKey(t)+"_"+r,v=n.getOptionLabel(t),b=n.isOptionDisabled(t);return e.createElement(U,{key:s,label:v,index:r,focusedOptionIndex:n.focusedOptionIndex,option:t,ariaSetSize:x,onInputKeyDown:n.onInputKeyDown,style:l,template:n.itemTemplate,selected:n.isSelected(t),highlightOnSelect:n.highlightOnSelect,disabled:b,onClick:n.onOptionClick,onMouseMove:M,ptm:f,cx:m,checkmark:n.checkmark})},K=function(){if(n.showFilterClear&&n.filterValue){var t=o("clear"),r=d({className:m("filterClearIcon"),"aria-label":t,onClick:function(){return n.onFilterClearIconClick((function(){return I.focus(h.current)}))}},L("filterClearIcon"));return E.getJSXIcon(n.filterClearIcon||e.createElement(g,r),W({},r),{props:n})}return null},V=function(){if(n.filter){var t=K(),r=d({className:m("filterIcon")},L("filterIcon")),o=E.getJSXIcon(n.filterIcon||e.createElement(D,r),W({},r),{props:n}),l=d({className:m("filterContainer",{clearIcon:t})},L("filterContainer")),i=d({ref:h,type:"text",autoComplete:"off",className:m("filterInput",{context:b}),placeholder:n.filterPlaceholder,onKeyDown:n.onFilterInputKeyDown,onChange:function(e){return T(e)},value:n.filterValue},L("filterInput")),a=e.createElement("div",l,e.createElement("input",i),t,o);if(n.filterTemplate){var u={className:w("p-dropdown-filter-container",{"p-dropdown-clearable-filter":!!t}),element:a,filterOptions:C,filterInputKeyDown:n.onFilterInputKeyDown,filterInputChange:T,filterIconClassName:"p-dropdown-filter-icon",clearIcon:t,props:n};a=O.getJSXElement(n.filterTemplate,u)}var c=d({className:m("header")},L("header"));return e.createElement("div",c,a)}return null},H=function(){if(n.virtualScrollerOptions){var t=W(W({},n.virtualScrollerOptions),{style:W(W({},n.virtualScrollerOptions.style),{height:n.scrollHeight}),className:w("p-dropdown-items-wrapper",n.virtualScrollerOptions.className),items:n.visibleOptions,autoSize:!0,onLazyLoad:function(e){return n.virtualScrollerOptions.onLazyLoad(W(W({},e),{filter:n.filterValue}))},itemTemplate:function(e,n){return e&&G(e,n.index,n)},contentTemplate:function(t){var o=t.children||[],l=y||0===(null==o?void 0:o.length)?A(n.hasFilter?n.emptyFilterMessage:n.emptyMessage):o,i=d({ref:t.contentRef,style:t.style,className:w(t.className,m("list",{virtualScrollerProps:n.virtualScrollerOptions})),role:"listbox","aria-label":r("listLabel")},L("list"));return e.createElement("ul",i,l)}});return e.createElement(k,P({ref:n.virtualScrollerRef},t,{pt:f("virtualScroller")}))}var o=O.isNotEmpty(n.visibleOptions)?n.visibleOptions.map(G):n.hasFilter?A(n.emptyFilterMessage,!0):A(n.emptyMessage),l=d({className:m("wrapper"),style:v("wrapper")},L("wrapper")),i=d({className:m("list"),role:"listbox","aria-label":r("listLabel")},L("list"));return e.createElement("div",l,e.createElement("ul",i,o))},B=(i=V(),a=H(),c=R(),p=d({className:w(n.panelClassName,m("panel",{context:b})),style:v("panel"),onClick:n.onClick,"data-pr-is-overlay":!0},L("panel")),s=d({classNames:m("transition"),in:n.in,timeout:{enter:120,exit:100},options:n.transitionOptions,unmountOnExit:!0,onEnter:N,onEntered:j,onExit:n.onExit,onExited:n.onExited},L("transition")),e.createElement(S,P({nodeRef:l},s),e.createElement("div",P({ref:l},p),n.firstFocusableElement,i,a,c,n.lastFocusableElement)));return e.createElement(F,{element:B,appendTo:n.appendTo})})));function $(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=Y(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,i=!0,a=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){a=!0,l=e},f:function(){try{i||null==t.return||t.return()}finally{if(a)throw l}}}}function Y(e,n){if(e){if("string"==typeof e)return Q(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Q(e,n):void 0}}function Q(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t2&&void 0!==arguments[2])||arguments[2];We({originalEvent:e,option:n}),t&&(nn(),I.focus(ee.current))},we=function(e){if(F.disabled)e.preventDefault();else{switch(I.isAndroid()?e.key:e.code){case"ArrowDown":Pe(e);break;case"ArrowUp":je(e);break;case"ArrowLeft":case"ArrowRight":Te(e,F.editable);break;case"Home":Re(e);break;case"End":Me(e);break;case"PageDown":Ge(e);break;case"PageUp":Ae(e);break;case"Space":Ke(e,F.editable);break;case"NumpadEnter":case"Enter":Ve(e);break;case"Escape":He(e);break;case"Tab":Be(e);break;case"Backspace":_e(e,F.editable);break;case"ShiftLeft":case"ShiftRight":break;default:!(e.metaKey||e.ctrlKey||e.altKey)&&O.isPrintableCharacter(e.key)&&(!_&&!F.editable&&en(),!F.editable&&Fe(e,e.key))}z.current=!1}},Oe=function(e){var n;return Ie(e)&&(null===(n=ln(e))||void 0===n?void 0:n.toLocaleLowerCase(F.filterLocale).startsWith(oe.current.toLocaleLowerCase(F.filterLocale)))},Ie=function(e){return O.isNotEmpty(e)&&!(cn(e)||un(e))},Ee=function(){return O.isNotEmpty(F.value)},xe=function(e){return Ie(e)&&Qe(e)},Se=function(){return Ee?mn.findIndex((function(e){return xe(e)})):-1},De=function(){var e=Se();return e<0?ke():e},Fe=function(e,n){oe.current=(oe.current||"")+n;var t=-1,r=!1;return O.isNotEmpty(oe.current)&&(-1!==(t=-1!==K?-1===(t=mn.slice(K).findIndex((function(e){return Oe(e)})))?mn.slice(0,K).findIndex((function(e){return Oe(e)})):t+K:mn.findIndex((function(e){return Oe(e)})))&&(r=!0),-1===t&&-1===K&&(t=De()),-1!==t&&Le(e,t)),re.current&&clearTimeout(re.current),re.current=setTimeout((function(){oe.current="",re.current=null}),500),r},ke=function(){return mn.findIndex((function(e){return Ie(e)}))},Ce=function(){return O.findLastIndex(mn,(function(e){return Ie(e)}))},Le=function(e,n){K!==n&&(V(n),Ne(n),F.selectOnFocus&&ye(e,mn[n],!1))},Ne=function(e){var n=I.findSingle(q.current,'li[id="dropdownItem_'.concat(e,'"]'));n&&n.focus()},Pe=function(e){if(_){var n=-1!==K?(r=(t=K)-1?r+t+1:t:z.current?ke():De();Le(e,n)}else en(),F.editable&&Le(e,Se());var t,r;e.preventDefault()},je=function(e){var n,t,r;if(e.altKey&&!(arguments.length>1&&void 0!==arguments[1]&&arguments[1]))-1!==K&&ye(e,mn[K]),state.overlayVisible&&nn(),e.preventDefault();else{var o=-1!==K?(r=(t=K)>0?O.findLastIndex(mn.slice(0,t),(function(e){return Ie(e)})):-1)>-1?r:t:z.current?Ce():(n=Se())<0?Ce():n;Le(e,o),!_&&en(),e.preventDefault()}},Te=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&V(-1)},Re=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?(e.currentTarget.setSelectionRange(0,0),V(-1)):(Le(e,ke()),!_&&en()),e.preventDefault()},Me=function(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1]){var n=e.currentTarget,t=n.value.length;n.setSelectionRange(t,t),V(-1)}else Le(e,Ce()),!_&&en();e.preventDefault()},Ae=function(e){e.preventDefault()},Ge=function(e){e.preventDefault()},Ke=function(e){!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])&&Ve(e)},Ve=function(e){if(e.preventDefault(),_){if(-1===K)return;var n=mn[K],t=an(n);if(null==t||null==t)return nn(),Ue(),void on(vn);ye(e,n)}else V(-1),Pe(e)},He=function(e){_&&nn(),e.preventDefault()},Be=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]||(!_||I.getFocusableElements(q.current,':not([data-p-hidden-focusable="true"])').length>0?(-1!==K&&ye(e,mn[K]),_&&nn()):(I.focus(W.current),e.preventDefault()))},_e=function(e){e&&(arguments.length>1&&void 0!==arguments[1]&&arguments[1])&&!_&&en()},Je=function(e,n){if(!n||null==e||!e.length)return-1;var t=n.toLocaleLowerCase(),r=e.findIndex((function(e){return ln(e).toLocaleLowerCase()===t}));return-1!==r?r:e.findIndex((function(e){return ln(e).toLocaleLowerCase().startsWith(t)}))},Xe=function(e){!_&&en();var n=null;e.target.value&&mn&&(n=Je(mn,e.target.value)),V(n),F.onChange&&F.onChange({originalEvent:e.originalEvent,value:e.target.value,stopPropagation:function(){e.originalEvent.stopPropagation()},preventDefault:function(){e.originalEvent.preventDefault()},target:{name:F.name,id:F.id,value:e.target.value}})},ze=function(e){A(!0),nn(),F.onFocus&&F.onFocus(e)},Ue=function(e){N(""),F.onFilter&&F.onFilter({filter:""}),e&&e()},qe=function(e){F.onChange&&F.onChange({originalEvent:e,value:void 0,stopPropagation:function(){null==e||e.stopPropagation()},preventDefault:function(){null==e||e.preventDefault()},target:{name:F.name,id:F.id,value:void 0}}),F.filter&&Ue(),on(),V(-1)},We=function(e){if(vn!==e.option){on(e.option),V(-1);var n=an(e.option),t=Ye(e.option,mn);F.onChange&&F.onChange({originalEvent:e.originalEvent,value:n,stopPropagation:function(){e.originalEvent.stopPropagation()},preventDefault:function(){e.originalEvent.preventDefault()},target:{name:F.name,id:F.id,value:n}}),Le(e.originalEvent,t)}},Ze=function(e){if(e=e||mn){if(!F.optionGroupLabel)return Ye(F.value,e);for(var n=0;n=0)&&rn()}),[_,F.value,K]),d((function(){_&&L&&F.filter&&tn()}),[_,L,F.filter]),d((function(){te.current&&te.current.scrollInView(0)}),[L]),d((function(){sn(),Q.current&&(Q.current.selectedIndex=1)})),f((function(){x.clear(q.current)}));var dn,fn=function(e){"Enter"!==e.key&&"Space"!==e.code||(qe(e),e.preventDefault())},mn=function(){var e=F.optionGroupLabel?ve(F.options):F.options;if(ie&&!le){var n=L.trim().toLocaleLowerCase(F.filterLocale),t=F.filterBy?F.filterBy.split(","):[F.optionLabel||"label"];if(F.optionGroupLabel){var r,o=[],i=$(F.options);try{for(i.s();!(r=i.n()).done;){var a=r.value,u=l.filter(pn(a),t,n,F.filterMatchMode,F.filterLocale);u&&u.length&&o.push(ne(ne({},a),M({},"".concat(F.optionGroupChildren),u)))}}catch(e){i.e(e)}finally{i.f()}return ve(o)}return l.filter(e,t,n,F.filterMatchMode,F.filterLocale)}return e}(),vn=-1!==(dn=Ze(F.options))?F.optionGroupLabel?pn(F.options[dn.group])[dn.option]:F.options[dn]:null,bn=O.isNotEmpty(F.tooltip),gn=X.getOtherProps(F),hn=O.reduceKeys(gn,I.ARIA_PROPS),yn=function(){var n={value:"",label:F.placeholder};if(vn){var t=an(vn);n={value:"object"===j(t)?F.options.findIndex((function(e){return e===t})):t,label:ln(vn)}}var r=S({className:"p-hidden-accessible p-dropdown-hidden-select"},ce("hiddenSelectedMessage")),o=S({ref:Q,required:F.required,defaultValue:n.value,name:F.name,tabIndex:-1},ce("select")),l=S({value:n.value},ce("option"));return e.createElement("div",r,e.createElement("select",o,e.createElement("option",l,n.label)))}(),wn=function(){var n=O.isNotEmpty(vn)?ln(vn):null;F.editable&&(n=n||F.value||"");var t=S({className:"p-hidden-accessible"},ce("hiddenSelectedMessage")),r=S(ne({ref:ee,id:F.inputId,defaultValue:n,type:"text",readOnly:!0,"aria-haspopup":"listbox",onFocus:ge,onBlur:he,onKeyDown:we,disabled:F.disabled,tabIndex:F.disabled?-1:F.tabIndex||0},hn),ce("input"));return e.createElement("div",t,e.createElement("input",r))}(),On=function(){var n=O.isNotEmpty(vn)?ln(vn):null;if(F.editable){var t=S(ne({ref:Q,type:"text",defaultValue:n||F.value||"",className:pe("input",{label:n}),disabled:F.disabled,placeholder:F.placeholder,maxLength:F.maxLength,onInput:Xe,onFocus:ze,onKeyDown:we,onBlur:he,tabIndex:F.disabled?-1:F.tabIndex||0,"aria-haspopup":"listbox"},hn),ce("input"));return e.createElement("input",t)}var r=F.valueTemplate?O.getJSXElement(F.valueTemplate,vn,F):n||F.placeholder||F.emptyMessage||e.createElement(e.Fragment,null," "),o=S({ref:Q,className:pe("input",{label:n}),tabIndex:"-1"},ce("input"));return e.createElement("span",o,r)}(),In=F.loading?function(){var n=S({className:pe("loadingIcon"),"data-pr-overlay-visible":_},ce("loadingIcon")),t=E.getJSXIcon(F.loadingIcon||e.createElement(b,{spin:!0}),ne({},n),{props:F}),r=F.placeholder||F.ariaLabel,o=S({className:pe("trigger"),role:"button","aria-haspopup":"listbox","aria-expanded":_,"aria-label":r},ce("trigger"));return e.createElement("div",o,t)}():function(){var n=S({className:pe("dropdownIcon"),"data-pr-overlay-visible":_},ce("dropdownIcon")),t=E.getJSXIcon(_?F.collapseIcon||e.createElement(v,n):F.dropdownIcon||e.createElement(m,n),ne({},n),{props:F}),r=F.placeholder||F.ariaLabel,o=S({className:pe("trigger"),role:"button","aria-haspopup":"listbox","aria-expanded":_,"aria-label":r},ce("trigger"));return e.createElement("div",o,t)}(),En=function(){if(null!=F.value&&F.showClear&&!F.disabled&&!O.isEmpty(F.options)){var n=S({className:pe("clearIcon"),onPointerUp:qe,tabIndex:F.editable?-1:F.tabIndex||"0",onKeyDown:fn,"aria-label":o("clear")},ce("clearIcon"));return E.getJSXIcon(F.clearIcon||e.createElement(g,n),ne({},n),{props:F})}return null}(),xn=S({id:F.id,ref:U,className:w(F.className,pe("root",{context:D,focusedState:R,overlayVisibleState:_})),style:F.style,onClick:function(e){return n=e,void(F.disabled||F.loading||(F.onClick&&F.onClick(n),n.defaultPrevented||be(n)||"INPUT"===n.target.tagName||(q.current&&q.current&&q.current.contains(n.target)||(I.focus(ee.current),_?nn():en()),n.preventDefault(),z.current=!0)));var n},onMouseDown:F.onMouseDown,onContextMenu:F.onContextMenu,onFocus:function(){F.editable&&!_&&!1===z.current&&I.focus(Q.current)},"data-p-disabled":F.disabled,"data-p-focus":R,"aria-activedescendant":R?"dropdownItem_".concat(K):void 0},gn,ce("root")),Sn=S({ref:W,role:"presentation",className:"p-hidden-accessible p-hidden-focusable",tabIndex:"0",onFocus:function(e){var n=e.relatedTarget===ee.current?I.getFirstFocusableElement(q.current,':not([data-p-hidden-focusable="true"])'):ee.current;I.focus(n)},"data-p-hidden-accessible":!0,"data-p-hidden-focusable":!0},ce("hiddenFirstFocusableEl")),Dn=S({ref:Y,role:"presentation",className:"p-hidden-accessible p-hidden-focusable",tabIndex:"0",onFocus:function(e){var n=e.relatedTarget===ee.current?I.getLastFocusableElement(q.current,':not([data-p-hidden-focusable="true"])'):ee.current;I.focus(n)},"data-p-hidden-accessible":!0,"data-p-hidden-focusable":!0},ce("hiddenLastFocusableEl"));return e.createElement(e.Fragment,null,e.createElement("div",xn,wn,yn,On,En,In,e.createElement(Z,P({hostName:"Dropdown",ref:q,visibleOptions:mn,virtualScrollerRef:te},F,{appendTo:ae,cx:pe,filterValue:C,focusedOptionIndex:K,getOptionGroupChildren:pn,getOptionGroupLabel:function(e){return O.resolveFieldData(e,F.optionGroupLabel)},getOptionGroupRenderKey:function(e){return O.resolveFieldData(e,F.optionGroupLabel)},getOptionLabel:ln,getOptionRenderKey:function(e){return F.dataKey?O.resolveFieldData(e,F.dataKey):ln(e)},getSelectedOptionIndex:Ze,hasFilter:ie,in:_,isOptionDisabled:cn,isSelected:Qe,onOverlayHide:nn,onClick:function(e){h.emit("overlay-click",{originalEvent:e,target:U.current})},onEnter:function(e){x.set("overlay",q.current,D&&D.autoZIndex||n.autoZIndex,D&&D.zIndex.overlay||n.zIndex.overlay),I.addStyles(q.current,{position:"absolute",top:"0",left:"0"}),tn(),e&&e()},onEntered:function(e){e&&e(),fe(),F.onShow&&F.onShow()},onExit:function(){me()},onExited:function(){F.filter&&F.resetFilterOnHide&&Ue(),x.clear(q.current),F.onHide&&F.onHide()},onFilterClearIconClick:function(e){Ue(e)},onFilterInputChange:function(e){var n=e.target.value;N(n),F.onFilter&&F.onFilter({originalEvent:e,filter:n})},onFilterInputKeyDown:function(e){switch(e.code){case"ArrowDown":Pe(e);break;case"ArrowUp":je(e);break;case"ArrowLeft":case"ArrowRight":Te(e,!0);break;case"Enter":case"NumpadEnter":Ve(e),e.preventDefault();break;case"Escape":He(e)}},onOptionClick:function(e){e.option.disabled||(We(e),I.focus(ee.current)),nn()},onInputKeyDown:we,ptm:ce,resetFilter:Ue,changeFocusedOptionIndex:Le,firstFocusableElement:e.createElement("span",Sn),lastFocusableElement:e.createElement("span",Dn),sx:se}))),bn&&e.createElement(y,P({target:U,content:F.tooltip,pt:ce("tooltip")},F.tooltipOptions)))})));te.displayName="Dropdown";export{te as Dropdown};