((t,e)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).PerfectScrollbar=e()})(this,function(){var p=Math.abs,f=Math.floor;function b(t){return getComputedStyle(t)}function a(t,e){for(var i in e){var l=e[i];"number"==typeof l&&(l+="px"),t.style[i]=l}}function c(t){var e=document.createElement("div");return e.className=t,e}function s(t,e){if(r)return r.call(t,e);throw new Error("No element matching method supported")}function o(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function h(t,e){return Array.prototype.filter.call(t.children,function(t){return s(t,e)})}function v(t,e){var t=t.element.classList,i=w.state.scrolling(e);t.contains(i)?clearTimeout(n[e]):t.add(i)}function Y(t,e){n[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(w.state.scrolling(e))},t.settings.scrollingThreshold)}function u(t){var e;return"function"==typeof window.CustomEvent?new CustomEvent(t):((e=document.createEvent("CustomEvent")).initCustomEvent(t,!1,!1,void 0),e)}function t(t,e,i,l,r){var n,o,s,a,c;if(void 0===l&&(l=!0),void 0===r&&(r=!1),"top"===e)n=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==e)throw new Error("A proper axis should be provided");n=["contentWidth","containerWidth","scrollLeft","x","left","right"]}{var h,d;e=t,t=i,i=l,l=r,h=(r=n)[0],d=r[1],o=r[2],s=r[3],a=r[4],r=r[5],void 0===i&&(i=!0),void 0===l&&(l=!1),c=e.element,e.reach[s]=null,c[o]<1&&(e.reach[s]="start"),e[h]-e[d]-1<c[o]&&(e.reach[s]="end"),t&&(c.dispatchEvent(u("ps-scroll-"+s)),t<0?c.dispatchEvent(u("ps-scroll-"+a)):0<t&&c.dispatchEvent(u("ps-scroll-"+r)),i)&&(v(h=e,d=s),Y(h,d))}e.reach[s]&&(t||l)&&c.dispatchEvent(u("ps-"+s+"-reach-"+e.reach[s]))}function d(t){return parseInt(t,10)||0}function X(t){var e,i=Math.round,l=t.element,r=f(l.scrollTop),n=l.getBoundingClientRect();t.containerWidth=i(n.width),t.containerHeight=i(n.height),t.contentWidth=l.scrollWidth,t.contentHeight=l.scrollHeight,l.contains(t.scrollbarXRail)||(h(l,w.element.rail("x")).forEach(o),l.appendChild(t.scrollbarXRail)),l.contains(t.scrollbarYRail)||(h(l,w.element.rail("y")).forEach(o),l.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset<t.contentWidth?(t.scrollbarXActive=!0,t.railXWidth=t.containerWidth-t.railXMarginWidth,t.railXRatio=t.containerWidth/t.railXWidth,t.scrollbarXWidth=g(t,d(t.railXWidth*t.containerWidth/t.contentWidth)),t.scrollbarXLeft=d((t.negativeScrollAdjustment+l.scrollLeft)*(t.railXWidth-t.scrollbarXWidth)/(t.contentWidth-t.containerWidth))):t.scrollbarXActive=!1,!t.settings.suppressScrollY&&t.containerHeight+t.settings.scrollYMarginOffset<t.contentHeight?(t.scrollbarYActive=!0,t.railYHeight=t.containerHeight-t.railYMarginHeight,t.railYRatio=t.containerHeight/t.railYHeight,t.scrollbarYHeight=g(t,d(t.railYHeight*t.containerHeight/t.contentHeight)),t.scrollbarYTop=d(r*(t.railYHeight-t.scrollbarYHeight)/(t.contentHeight-t.containerHeight))):t.scrollbarYActive=!1,t.railXWidth-t.scrollbarXWidth<=t.scrollbarXLeft&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.railYHeight-t.scrollbarYHeight<=t.scrollbarYTop&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),i=l,r={width:(n=t).railXWidth},e=f(i.scrollTop),r.left=n.isRtl?n.negativeScrollAdjustment+i.scrollLeft+n.containerWidth-n.contentWidth:i.scrollLeft,n.isScrollbarXUsingBottom?r.bottom=n.scrollbarXBottom-e:r.top=n.scrollbarXTop+e,a(n.scrollbarXRail,r),r={top:e,height:n.railYHeight},n.isScrollbarYUsingRight?n.isRtl?r.right=n.contentWidth-(n.negativeScrollAdjustment+i.scrollLeft)-n.scrollbarYRight-n.scrollbarYOuterWidth-9:r.right=n.scrollbarYRight-i.scrollLeft:n.isRtl?r.left=n.negativeScrollAdjustment+i.scrollLeft+2*n.containerWidth-n.contentWidth-n.scrollbarYLeft-n.scrollbarYOuterWidth:r.left=n.scrollbarYLeft+i.scrollLeft,a(n.scrollbarYRail,r),a(n.scrollbarX,{left:n.scrollbarXLeft,width:n.scrollbarXWidth-n.railBorderXWidth}),a(n.scrollbarY,{top:n.scrollbarYTop,height:n.scrollbarYHeight-n.railBorderYWidth}),t.scrollbarXActive?l.classList.add(w.state.active("x")):(l.classList.remove(w.state.active("x")),t.scrollbarXWidth=0,l.scrollLeft=!(t.scrollbarXLeft=0)===t.isRtl?t.contentWidth:0),t.scrollbarYActive?l.classList.add(w.state.active("y")):(l.classList.remove(w.state.active("y")),t.scrollbarYHeight=0,l.scrollTop=t.scrollbarYTop=0)}function g(t,e){var i=Math.min,l=Math.max;return t.settings.minScrollbarLength&&(e=l(e,t.settings.minScrollbarLength)),e=t.settings.maxScrollbarLength?i(e,t.settings.maxScrollbarLength):e}function e(i,t){function l(t){t.touches&&t.touches[0]&&(t[s]=t.touches[0].pageY),f[d]=b+m*(t[s]-g),v(i,u),X(i),t.stopPropagation(),t.type.startsWith("touch")&&1<t.changedTouches.length&&t.preventDefault()}function r(){Y(i,u),i[p].classList.remove(w.state.clicking),i.event.unbind(i.ownerDocument,"mousemove",l)}function e(t,e){b=f[d],e&&t.touches&&(t[s]=t.touches[0].pageY),g=t[s],m=(i[o]-i[n])/(i[a]-i[h]),e?i.event.bind(i.ownerDocument,"touchmove",l):(i.event.bind(i.ownerDocument,"mousemove",l),i.event.once(i.ownerDocument,"mouseup",r),t.preventDefault()),i[p].classList.add(w.state.clicking),t.stopPropagation()}var n=t[0],o=t[1],s=t[2],a=t[3],c=t[4],h=t[5],d=t[6],u=t[7],p=t[8],f=i.element,b=null,g=null,m=null;i.event.bind(i[c],"mousedown",function(t){e(t)}),i.event.bind(i[c],"touchstart",function(t){e(t,!0)})}function i(t){this.element=t,this.handlers={}}function m(){this.eventElements=[]}function l(t,e){var i,l=this;if(void 0===e&&(e={}),!(t="string"==typeof t?document.querySelector(t):t)||!t.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(i in(this.element=t).classList.add(w.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1},e)this.settings[i]=e[i];function r(){return t.classList.add(w.state.focus)}function n(){return t.classList.remove(w.state.focus)}this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null,this.isRtl="rtl"===b(t).direction,!0===this.isRtl&&t.classList.add(w.rtl),this.isNegativeScroll=(o=t.scrollLeft,t.scrollLeft=-1,s=t.scrollLeft<0,t.scrollLeft=o,s),this.negativeScrollAdjustment=this.isNegativeScroll?t.scrollWidth-t.clientWidth:0,this.event=new m,this.ownerDocument=t.ownerDocument||document,this.scrollbarXRail=c(w.element.rail("x")),t.appendChild(this.scrollbarXRail),this.scrollbarX=c(w.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",r),this.event.bind(this.scrollbarX,"blur",n),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var o=b(this.scrollbarXRail),s=(this.scrollbarXBottom=parseInt(o.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=d(o.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=d(o.borderLeftWidth)+d(o.borderRightWidth),a(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=d(o.marginLeft)+d(o.marginRight),a(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=c(w.element.rail("y")),t.appendChild(this.scrollbarYRail),this.scrollbarY=c(w.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",r),this.event.bind(this.scrollbarY,"blur",n),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null,b(this.scrollbarYRail));this.scrollbarYRight=parseInt(s.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=d(s.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?d((o=b(o=this.scrollbarY)).width)+d(o.paddingLeft)+d(o.paddingRight)+d(o.borderLeftWidth)+d(o.borderRightWidth):null,this.railBorderYWidth=d(s.borderTopWidth)+d(s.borderBottomWidth),a(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=d(s.marginTop)+d(s.marginBottom),a(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:t.scrollLeft<=0?"start":t.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:t.scrollTop<=0?"start":t.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return L[t](l)}),this.lastScrollTop=f(t.scrollTop),this.lastScrollLeft=t.scrollLeft,this.event.bind(this.element,"scroll",function(t){return l.onScroll(t)}),X(this)}var r="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector),w={main:"ps",rtl:"ps__rtl",element:{thumb:function(t){return"ps__thumb-"+t},rail:function(t){return"ps__rail-"+t},consuming:"ps__child--consume"},state:{focus:"ps--focus",clicking:"ps--clicking",active:function(t){return"ps--active-"+t},scrolling:function(t){return"ps--scrolling-"+t}}},n={x:null,y:null},y={isEmpty:{configurable:!0}},W=(i.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},i.prototype.unbind=function(e,i){var l=this;this.handlers[e]=this.handlers[e].filter(function(t){return!(!i||t===i)||(l.element.removeEventListener(e,t,!1),!1)})},i.prototype.unbindAll=function(){for(var t in this.handlers)this.unbind(t)},y.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every(function(t){return 0===e.handlers[t].length})},Object.defineProperties(i.prototype,y),m.prototype.eventElement=function(e){var t=this.eventElements.filter(function(t){return t.element===e})[0];return t||(t=new i(e),this.eventElements.push(t)),t},m.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},m.prototype.unbind=function(t,e,i){t=this.eventElement(t);t.unbind(e,i),t.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(t),1)},m.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},m.prototype.once=function(t,e,i){var l=this.eventElement(t),r=function(t){l.unbind(e,r),i(t)};l.bind(e,r)},{isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||"maxTouchPoints"in window.navigator&&0<window.navigator.maxTouchPoints||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)}),L={"click-rail":function(i){i.element,i.event.bind(i.scrollbarY,"mousedown",function(t){return t.stopPropagation()}),i.event.bind(i.scrollbarYRail,"mousedown",function(t){var e=t.pageY-window.pageYOffset-i.scrollbarYRail.getBoundingClientRect().top>i.scrollbarYTop?1:-1;i.element.scrollTop+=e*i.containerHeight,X(i),t.stopPropagation()}),i.event.bind(i.scrollbarX,"mousedown",function(t){return t.stopPropagation()}),i.event.bind(i.scrollbarXRail,"mousedown",function(t){var e=t.pageX-window.pageXOffset-i.scrollbarXRail.getBoundingClientRect().left>i.scrollbarXLeft?1:-1;i.element.scrollLeft+=e*i.containerWidth,X(i),t.stopPropagation()})},"drag-thumb":function(t){e(t,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),e(t,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])},keyboard:function(n){var o=n.element;n.event.bind(n.ownerDocument,"keydown",function(t){if(!(t.isDefaultPrevented&&t.isDefaultPrevented()||t.defaultPrevented)&&(s(o,":hover")||s(n.scrollbarX,":focus")||s(n.scrollbarY,":focus"))){var e=document.activeElement||n.ownerDocument.activeElement;if(e){if("IFRAME"===e.tagName)e=e.contentDocument.activeElement;else for(;e.shadowRoot;)e=e.shadowRoot.activeElement;if(s(r=e,"input,[contenteditable]")||s(r,"select,[contenteditable]")||s(r,"textarea,[contenteditable]")||s(r,"button,[contenteditable]"))return}var i=0,l=0;switch(t.which){case 37:i=t.metaKey?-n.contentWidth:t.altKey?-n.containerWidth:-30;break;case 38:l=t.metaKey?n.contentHeight:t.altKey?n.containerHeight:30;break;case 39:i=t.metaKey?n.contentWidth:t.altKey?n.containerWidth:30;break;case 40:l=t.metaKey?-n.contentHeight:t.altKey?-n.containerHeight:-30;break;case 32:l=t.shiftKey?n.containerHeight:-n.containerHeight;break;case 33:l=n.containerHeight;break;case 34:l=-n.containerHeight;break;case 36:l=n.contentHeight;break;case 35:l=-n.contentHeight;break;default:return}n.settings.suppressScrollX&&0!==i||n.settings.suppressScrollY&&0!==l||(o.scrollTop-=l,o.scrollLeft+=i,X(n),((t,e)=>{var i=f(o.scrollTop);if(0===t){if(!n.scrollbarYActive)return;if(0===i&&0<e||i>=n.contentHeight-n.containerHeight&&e<0)return!n.settings.wheelPropagation}if(i=o.scrollLeft,0===e){if(!n.scrollbarXActive)return;if(0===i&&t<0||i>=n.contentWidth-n.containerWidth&&0<t)return!n.settings.wheelPropagation}return 1})(i,l)&&t.preventDefault())}var r})},wheel:function(a){function t(t){o=(n=t).deltaX,s=-1*n.deltaY,void 0!==o&&void 0!==s||(o=-1*n.wheelDeltaX/6,s=n.wheelDeltaY/6),n.deltaMode&&1===n.deltaMode&&(o*=10,s*=10),o!=o&&s!=s&&(o=0,s=n.wheelDelta);var e,i,l,r,n=n.shiftKey?[-s,-o]:[o,s],o=n[0],s=n[1];((t,e,i)=>{if(!W.isWebKit&&c.querySelector("select:focus"))return 1;if(c.contains(t))for(var l=t;l&&l!==c;){if(l.classList.contains(w.element.consuming))return 1;var r=b(l);if(i&&r.overflowY.match(/(scroll|auto)/)){var n=l.scrollHeight-l.clientHeight;if(0<n&&(0<l.scrollTop&&i<0||l.scrollTop<n&&0<i))return 1}if(e&&r.overflowX.match(/(scroll|auto)/)){n=l.scrollWidth-l.clientWidth;if(0<n&&(0<l.scrollLeft&&e<0||l.scrollLeft<n&&0<e))return 1}l=l.parentNode}})(t.target,o,s)||(n=!1,a.settings.useBothWheelAxes?a.scrollbarYActive&&!a.scrollbarXActive?(s?c.scrollTop-=s*a.settings.wheelSpeed:c.scrollTop+=o*a.settings.wheelSpeed,n=!0):a.scrollbarXActive&&!a.scrollbarYActive&&(o?c.scrollLeft+=o*a.settings.wheelSpeed:c.scrollLeft-=s*a.settings.wheelSpeed,n=!0):(c.scrollTop-=s*a.settings.wheelSpeed,c.scrollLeft+=o*a.settings.wheelSpeed),X(a),(n=n||(o=o,s=s,e=f(c.scrollTop),i=0===c.scrollTop,e=e+c.offsetHeight===c.scrollHeight,l=0===c.scrollLeft,r=c.scrollLeft+c.offsetWidth===c.scrollWidth,!(p(s)>p(o)?i||e:l||r))||!a.settings.wheelPropagation)&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault()))}var c=a.element;void 0===window.onwheel?void 0!==window.onmousewheel&&a.event.bind(c,"mousewheel",t):a.event.bind(c,"wheel",t)},touch:function(o){function n(t,e){c.scrollTop-=e,c.scrollLeft-=t,X(o)}function s(t){return t.targetTouches?t.targetTouches[0]:t}function a(t){return(!t.pointerType||"pen"!==t.pointerType||0!==t.buttons)&&(t.targetTouches&&1===t.targetTouches.length||t.pointerType&&"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE)}function t(t){a(t)&&(t=s(t),h.pageX=t.pageX,h.pageY=t.pageY,d=(new Date).getTime(),null!==l)&&clearInterval(l)}function e(t){var e,i,l,r;a(t)&&(e=(l={pageX:(l=s(t)).pageX,pageY:l.pageY}).pageX-h.pageX,i=l.pageY-h.pageY,((t,e,i)=>{if(c.contains(t))for(var l=t;l&&l!==c;){if(l.classList.contains(w.element.consuming))return 1;var r=b(l);if(i&&r.overflowY.match(/(scroll|auto)/)){var n=l.scrollHeight-l.clientHeight;if(0<n&&(0<l.scrollTop&&i<0||l.scrollTop<n&&0<i))return 1}if(e&&r.overflowX.match(/(scroll|auto)/)){n=l.scrollWidth-l.clientWidth;if(0<n&&(0<l.scrollLeft&&e<0||l.scrollLeft<n&&0<e))return 1}l=l.parentNode}})(t.target,e,i)||(n(e,i),h=l,0<(r=(l=(new Date).getTime())-d)&&(u.x=e/r,u.y=i/r,d=l),((t,e)=>{var i=f(c.scrollTop),l=c.scrollLeft,r=p(t),n=p(e);if(r<n){if(e<0&&i===o.contentHeight-o.containerHeight||0<e&&0===i)return 0===window.scrollY&&0<e&&W.isChrome}else if(n<r&&(t<0&&l===o.contentWidth-o.containerWidth||0<t&&0===l));return 1})(e,i)&&t.preventDefault()))}function i(){o.settings.swipeEasing&&(clearInterval(l),l=setInterval(function(){return!o.isInitialized&&(u.x||u.y)&&!(p(u.x)<.01&&p(u.y)<.01)&&o.element?(n(30*u.x,30*u.y),u.x*=.8,void(u.y*=.8)):void clearInterval(l)},10))}var c,h,d,u,l;(W.supportsTouch||W.supportsIePointer)&&(c=o.element,h={},d=0,u={},l=null,W.supportsTouch?(o.event.bind(c,"touchstart",t),o.event.bind(c,"touchmove",e),o.event.bind(c,"touchend",i)):W.supportsIePointer&&(window.PointerEvent?(o.event.bind(c,"pointerdown",t),o.event.bind(c,"pointermove",e),o.event.bind(c,"pointerup",i)):window.MSPointerEvent&&(o.event.bind(c,"MSPointerDown",t),o.event.bind(c,"MSPointerMove",e),o.event.bind(c,"MSPointerUp",i))))}};return l.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,a(this.scrollbarXRail,{display:"block"}),a(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=d(b(this.scrollbarXRail).marginLeft)+d(b(this.scrollbarXRail).marginRight),this.railYMarginHeight=d(b(this.scrollbarYRail).marginTop)+d(b(this.scrollbarYRail).marginBottom),a(this.scrollbarXRail,{display:"none"}),a(this.scrollbarYRail,{display:"none"}),X(this),t(this,"top",0,!1,!0),t(this,"left",0,!1,!0),a(this.scrollbarXRail,{display:""}),a(this.scrollbarYRail,{display:""}))},l.prototype.onScroll=function(){this.isAlive&&(X(this),t(this,"top",this.element.scrollTop-this.lastScrollTop),t(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=f(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},l.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),o(this.scrollbarX),o(this.scrollbarY),o(this.scrollbarXRail),o(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},l.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(" ")},l}),(r=>{r.fn.perfectScrollbar=function(i){if(!this.length)return this;"object"==typeof i&&i.hasOwnProperty("theme")&&delete i.theme;let l="perfectScrollbar";return this.each(function(){let t=r(this),e=r.data(this,l);e?"function"==typeof e[i]&&e[i]():(e=new PerfectScrollbar(t.get(0),i),r.data(this,l,e))})}})(jQuery);