import*as e from"react";import{PrimeReactContext as r}from"primereact/api";import{ComponentBase as n,useHandleStyle as t}from"primereact/componentbase";import{useMergeProps as o,useMountEffect as l,useUnmountEffect as a}from"primereact/hooks";import{UniqueComponentId as c,classNames as i,DomHandler as u}from"primereact/utils";function s(){return s=Object.assign?Object.assign.bind():function(e){for(var r=1;re.length)&&(r=e.length);for(var n=0,t=Array(r);n=1?u.addClass(D.current,"p-scrollpanel-hidden"):(u.removeClass(D.current,"p-scrollpanel-hidden"),u.applyStyle(D.current,{width:Math.max(100*B.current,10)+"%",left:R.current.scrollLeft/e*100+"%",bottom:r+"px"})),U.current>=1?u.addClass(T.current,"p-scrollpanel-hidden"):(u.removeClass(T.current,"p-scrollpanel-hidden"),u.applyStyle(T.current,{height:Math.max(100*U.current,10)+"%",top:"calc("+R.current.scrollTop/n*100+"% - "+D.current.clientHeight+"px)",right:t+"px"}))}))}},_=function(e){D.current.isSameNode(e.target)?A("horizontal"):T.current.isSameNode(e.target)&&A("vertical")},$=function(){"horizontal"===x&&A("vertical")},G=function(e){O.current?J(e):(P.current||J(e),Q(e))},J=function(e){var r=e.pageX-j.current;j.current=e.pageX,W.current=window.requestAnimationFrame((function(){R.current.scrollLeft+=r/B.current}))},Q=function(e){var r=e.pageY-k.current;k.current=e.pageY,W.current=window.requestAnimationFrame((function(){R.current.scrollTop+=r/U.current}))},V=function(e){u.removeClass(T.current,"p-scrollpanel-grabbed"),u.removeClass(D.current,"p-scrollpanel-grabbed"),u.removeClass(document.body,"p-scrollpanel-grabbed"),document.removeEventListener("mousemove",G),document.removeEventListener("mouseup",V),O.current=!1,P.current=!1},Z=function(e){if("vertical"===x)switch(e.code){case"ArrowDown":ne("scrollTop",m.step),e.preventDefault();break;case"ArrowUp":ne("scrollTop",-1*m.step),e.preventDefault();break;case"ArrowLeft":case"ArrowRight":e.preventDefault()}else if("horizontal"===x)switch(e.code){case"ArrowRight":ne("scrollLeft",m.step),e.preventDefault();break;case"ArrowLeft":ne("scrollLeft",-1*m.step),e.preventDefault();break;case"ArrowDown":case"ArrowUp":e.preventDefault()}},ee=function(){te()},re=function(e,r){R.current[e]+=r,q()},ne=function(e,r){te(),K.current=setTimeout((function(){re(e,r)}),40)},te=function(){K.current&&clearTimeout(K.current)},oe=function(){q()};l((function(){var e,r,n;m.id||y(c()),q(),window.addEventListener("resize",q),e=getComputedStyle(L.current),r=getComputedStyle(D.current),n=u.getHeight(L.current)-parseInt(r.height,10),"none"!==e["max-height"]&&0===n&&(L.current.style.height=R.current.offsetHeight+parseInt(r.height,10)>parseInt(e["max-height"],10)?e["max-height"]:R.current.offsetHeight+parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)+parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth)+"px"),Y.current=!0})),a((function(){Y.current&&window.removeEventListener("resize",q),W.current&&window.cancelAnimationFrame(W.current)})),e.useImperativeHandle(p,(function(){return{props:m,refresh:oe,getElement:function(){return L.current},getContent:function(){return R.current},getXBar:function(){return D.current},getYBar:function(){return T.current}}}));var le=d({id:m.id,ref:L,style:m.style,className:i(m.className,C("root"))},b.getOtherProps(m),E("root")),ae=d({className:C("wrapper")},E("wrapper")),ce=d({className:C("content"),onScroll:function(e){F!==e.target.scrollLeft?(N(e.target.scrollLeft),A("horizontal")):I!==e.target.scrollTop&&(M(e.target.scrollTop),A("vertical")),q()},onMouseEnter:q},E("content")),ie=d({ref:D,role:"scrollbar",className:C("barx"),tabIndex:0,"aria-valuenow":I,"aria-controls":X,"aria-orientation":"horizontal",onFocus:_,onBlur:$,onKeyDown:Z,onKeyUp:ee,onMouseDown:function(e){O.current=!0,j.current=e.pageX,u.addClass(D.current,"p-scrollpanel-grabbed"),u.addClass(document.body,"p-scrollpanel-grabbed"),document.addEventListener("mousemove",G),document.addEventListener("mouseup",V),e.preventDefault()}},E("barx")),ue=d({ref:T,role:"scrollbar",className:C("bary"),tabIndex:0,"aria-valuenow":F,"aria-controls":X,"aria-orientation":"vertical",onFocus:_,onBlur:$,onKeyDown:Z,onKeyUp:ee,onMouseDown:function(e){P.current=!0,k.current=e.pageY,u.addClass(T.current,"p-scrollpanel-grabbed"),u.addClass(document.body,"p-scrollpanel-grabbed"),document.addEventListener("mousemove",G),document.addEventListener("mouseup",V),e.preventDefault()}},E("bary"));return e.createElement("div",le,e.createElement("div",ae,e.createElement("div",s({ref:R},ce),m.children)),e.createElement("div",ie),e.createElement("div",ue))}));g.displayName="ScrollPanel";export{g as ScrollPanel};