const n=(()=>{const t=".stickySidebar",i={topSpacing:0,bottomSpacing:0,containerSelector:!1,innerWrapperSelector:".inner-wrapper-sticky",stickyClass:"is-affixed",resizeSensor:!0,minWidth:!1};class n{constructor(t,r={}){if(this.options=n.extend(i,r),this.sidebar="string"==typeof t?document.querySelector(t):t,"undefined"==typeof this.sidebar)throw new Error("There is no specific sidebar element.");this.sidebarInner=!1;this.container=this.sidebar.parentElement;this.affixedType="STATIC";this.direction="down";this.support={transform:!1,transform3d:!1};this._initialized=!1;this._reStyle=!1;this._breakpoint=!1;this.dimensions={translateY:0,maxTranslateY:0,topSpacing:0,lastTopSpacing:0,bottomSpacing:0,lastBottomSpacing:0,sidebarHeight:0,sidebarWidth:0,containerTop:0,containerHeight:0,viewportHeight:0,viewportTop:0,lastViewportTop:0};["handleEvent"].forEach(n=>{this[n]=this[n].bind(this)});this.initialize()}initialize(){if(this._setSupportFeatures(),this.options.innerWrapperSelector&&(this.sidebarInner=this.sidebar.querySelector(this.options.innerWrapperSelector),null===this.sidebarInner&&(this.sidebarInner=!1)),!this.sidebarInner){let n=document.createElement("div");for(n.setAttribute("class","inner-wrapper-sticky"),this.sidebar.appendChild(n);this.sidebar.firstChild!=n;)n.appendChild(this.sidebar.firstChild);this.sidebarInner=this.sidebar.querySelector(".inner-wrapper-sticky")}if(this.options.containerSelector){let n=document.querySelectorAll(this.options.containerSelector);if(n=Array.prototype.slice.call(n),n.forEach(n=>{n.contains(this.sidebar)&&(this.container=n)}),!n.length)throw new Error("The container does not contains on the sidebar.");}"function"!=typeof this.options.topSpacing&&(this.options.topSpacing=parseInt(this.options.topSpacing)||0);"function"!=typeof this.options.bottomSpacing&&(this.options.bottomSpacing=parseInt(this.options.bottomSpacing)||0);this._widthBreakpoint();this.calcDimensions();this.stickyPosition();this.bindEvents();this._initialized=!0}bindEvents(){window.addEventListener("resize",this,{passive:!0,capture:!1});window.addEventListener("scroll",this,{passive:!0,capture:!1});this.sidebar.addEventListener("update"+t,this);this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(new ResizeSensor(this.sidebarInner,this.handleEvent),new ResizeSensor(this.container,this.handleEvent))}handleEvent(n){this.updateSticky(n)}calcDimensions(){if(!this._breakpoint){var t=this.dimensions;t.containerTop=n.offsetRelative(this.container).top;t.containerHeight=this.container.clientHeight;t.containerBottom=t.containerTop+t.containerHeight;t.sidebarHeight=this.sidebarInner.offsetHeight;t.sidebarWidth=this.sidebarInner.offsetWidth;t.viewportHeight=window.innerHeight;t.maxTranslateY=t.containerHeight-t.sidebarHeight;this._calcDimensionsWithScroll()}}_calcDimensionsWithScroll(){var t=this.dimensions;t.sidebarLeft=n.offsetRelative(this.sidebar).left;t.viewportTop=document.documentElement.scrollTop||document.body.scrollTop;t.viewportBottom=t.viewportTop+t.viewportHeight;t.viewportLeft=document.documentElement.scrollLeft||document.body.scrollLeft;t.topSpacing=this.options.topSpacing;t.bottomSpacing=this.options.bottomSpacing;"function"==typeof t.topSpacing&&(t.topSpacing=parseInt(t.topSpacing(this.sidebar))||0);"function"==typeof t.bottomSpacing&&(t.bottomSpacing=parseInt(t.bottomSpacing(this.sidebar))||0);"VIEWPORT-TOP"===this.affixedType?t.topSpacing<t.lastTopSpacing&&(t.translateY+=t.lastTopSpacing-t.topSpacing,this._reStyle=!0):"VIEWPORT-BOTTOM"===this.affixedType&&t.bottomSpacing<t.lastBottomSpacing&&(t.translateY+=t.lastBottomSpacing-t.bottomSpacing,this._reStyle=!0);t.lastTopSpacing=t.topSpacing;t.lastBottomSpacing=t.bottomSpacing}isSidebarFitsViewport(){let n=this.dimensions,t=this.scrollDirection==="down"?n.lastBottomSpacing:n.lastTopSpacing;return this.dimensions.sidebarHeight+t<this.dimensions.viewportHeight}observeScrollDir(){var n=this.dimensions,t;n.lastViewportTop!==n.viewportTop&&(t="down"===this.direction?Math.min:Math.max,n.viewportTop===t(n.viewportTop,n.lastViewportTop)&&(this.direction="down"===this.direction?"up":"down"))}getAffixType(){this._calcDimensionsWithScroll();var n=this.dimensions,i=n.viewportTop+n.topSpacing,t=this.affixedType;return i<=n.containerTop||n.containerHeight<=n.sidebarHeight?(n.translateY=0,t="STATIC"):t="up"===this.direction?this._getAffixTypeScrollingUp():this._getAffixTypeScrollingDown(),n.translateY=Math.max(0,n.translateY),n.translateY=Math.min(n.containerHeight,n.translateY),n.translateY=Math.round(n.translateY),n.lastViewportTop=n.viewportTop,t}_getAffixTypeScrollingDown(){var n=this.dimensions,i=n.sidebarHeight+n.containerTop,r=n.viewportTop+n.topSpacing,u=n.viewportBottom-n.bottomSpacing,t=this.affixedType;return this.isSidebarFitsViewport()?n.sidebarHeight+r>=n.containerBottom?(n.translateY=n.containerBottom-i,t="CONTAINER-BOTTOM"):r>=n.containerTop&&(n.translateY=r-n.containerTop,t="VIEWPORT-TOP"):n.containerBottom<=u?(n.translateY=n.containerBottom-i,t="CONTAINER-BOTTOM"):i+n.translateY<=u?(n.translateY=u-i,t="VIEWPORT-BOTTOM"):n.containerTop+n.translateY<=r&&0!==n.translateY&&n.maxTranslateY!==n.translateY&&(t="VIEWPORT-UNBOTTOM"),t}_getAffixTypeScrollingUp(){var n=this.dimensions,r=n.sidebarHeight+n.containerTop,i=n.viewportTop+n.topSpacing,u=n.viewportBottom-n.bottomSpacing,t=this.affixedType;return i<=n.translateY+n.containerTop?(n.translateY=i-n.containerTop,t="VIEWPORT-TOP"):n.containerBottom<=u?(n.translateY=n.containerBottom-r,t="CONTAINER-BOTTOM"):this.isSidebarFitsViewport()||n.containerTop<=i&&0!==n.translateY&&n.maxTranslateY!==n.translateY&&(t="VIEWPORT-UNBOTTOM"),t}_getStyle(t){if("undefined"!=typeof t){var r={inner:{},outer:{}},i=this.dimensions;switch(t){case"VIEWPORT-TOP":r.inner={position:"fixed",top:i.topSpacing,left:i.sidebarLeft-i.viewportLeft,width:i.sidebarWidth};break;case"VIEWPORT-BOTTOM":r.inner={position:"fixed",top:"auto",left:i.sidebarLeft,bottom:i.bottomSpacing,width:i.sidebarWidth};break;case"CONTAINER-BOTTOM":case"VIEWPORT-UNBOTTOM":let n=this._getTranslate(0,i.translateY+"px");r.inner=n?{transform:n}:{position:"absolute",top:i.translateY,width:i.sidebarWidth}}switch(t){case"VIEWPORT-TOP":case"VIEWPORT-BOTTOM":case"VIEWPORT-UNBOTTOM":case"CONTAINER-BOTTOM":r.outer={height:i.sidebarHeight,position:"relative"}}return r.outer=n.extend({height:"",position:""},r.outer),r.inner=n.extend({position:"relative",top:"",left:"",bottom:"",width:"",transform:""},r.inner),r}}stickyPosition(i){if(!this._breakpoint){i=this._reStyle||i||!1;var f=this.options.topSpacing,e=this.options.bottomSpacing,r=this.getAffixType(),u=this._getStyle(r);if((this.affixedType!=r||i)&&r){let i="affix."+r.toLowerCase().replace("viewport-","")+t;n.eventTrigger(this.sidebar,i);"STATIC"===r?n.removeClass(this.sidebar,this.options.stickyClass):n.addClass(this.sidebar,this.options.stickyClass);for(let n in u.outer){let t="number"==typeof u.outer[n]?"px":"";this.sidebar.style[n]=u.outer[n]+t}for(let n in u.inner){let t="number"==typeof u.inner[n]?"px":"";this.sidebarInner.style[n]=u.inner[n]+t}let f="affixed."+r.toLowerCase().replace("viewport-","")+t;n.eventTrigger(this.sidebar,f)}else this._initialized&&(this.sidebarInner.style.left=u.inner.left);this.affixedType=r}}_widthBreakpoint(){window.innerWidth<=this.options.minWidth?(this._breakpoint=!0,this.affixedType="STATIC",this.sidebar.removeAttribute("style"),n.removeClass(this.sidebar,this.options.stickyClass),this.sidebarInner.removeAttribute("style")):this._breakpoint=!1}updateSticky(n={}){this._running||(this._running=!0,(n=>{requestAnimationFrame(()=>{switch(n){case"scroll":this._calcDimensionsWithScroll();this.observeScrollDir();this.stickyPosition();break;case"resize":default:this._widthBreakpoint();this.calcDimensions();this.stickyPosition(!0)}this._running=!1})})(n.type))}_setSupportFeatures(){var t=this.support;t.transform=n.supportTransform();t.transform3d=n.supportTransform(!0)}_getTranslate(n=0,t=0,i=0){return this.support.transform3d?"translate3d("+n+", "+t+", "+i+")":this.support.translate?"translate("+n+", "+t+")":!1}destroy(){window.removeEventListener("resize",this,{capture:!1});window.removeEventListener("scroll",this,{capture:!1});this.sidebar.classList.remove(this.options.stickyClass);this.sidebar.style.minHeight="";this.sidebar.removeEventListener("update"+t,this);var n={inner:{},outer:{}};n.inner={position:"",top:"",left:"",bottom:"",width:"",transform:""};n.outer={height:"",position:""};for(let t in n.outer)this.sidebar.style[t]=n.outer[t];for(let t in n.inner)this.sidebarInner.style[t]=n.inner[t];this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(ResizeSensor.detach(this.sidebarInner,this.handleEvent),ResizeSensor.detach(this.container,this.handleEvent))}static supportTransform(n){var i=!1,t=n?"perspective":"transform",r=t.charAt(0).toUpperCase()+t.slice(1),u=document.createElement("support"),f=u.style;return(t+" "+["Webkit","Moz","O","ms"].join(r+" ")+r).split(" ").forEach(function(n){if(f[n]!==undefined)return i=n,!1}),i}static eventTrigger(n,t,i){var r;try{r=new CustomEvent(t,{detail:i})}catch(u){r=document.createEvent("CustomEvent");r.initCustomEvent(t,!0,!0,i)}n.dispatchEvent(r)}static extend(n,t){var i={};for(let r in n)i[r]="undefined"!=typeof t[r]?t[r]:n[r];return i}static offsetRelative(n){var t={left:0,top:0};do{let i=n.offsetTop,r=n.offsetLeft;isNaN(i)||(t.top+=i);isNaN(r)||(t.left+=r);n="BODY"===n.tagName?n.parentElement:n.offsetParent}while(n);return t}static addClass(t,i){n.hasClass(t,i)||(t.classList?t.classList.add(i):t.className+=" "+i)}static removeClass(t,i){n.hasClass(t,i)&&(t.classList?t.classList.remove(i):t.className=t.className.replace(new RegExp("(^|\\b)"+i.split(" ").join("|")+"(\\b|$)","gi")," "))}static hasClass(n,t){return n.classList?n.classList.contains(t):new RegExp("(^| )"+t+"( |$)","gi").test(n.className)}static get defaults(){return i}}return n})();export default n;window.StickySidebar=n