!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.StickySidebar=e()}(this,function(){"use strict";var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t,e){return t(e={exports:{}},e.exports),e.exports}var n,o=i(function(t,e){var i,n;(n=function(t){Object.defineProperty(t,"__esModule",{value:!0});var e,i,n=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(function t(e,i){if(!(e instanceof i))throw TypeError("Cannot call a class as a function")}(this,t),this.options=t.extend(i,o),this.sidebar="string"==typeof e?document.querySelector(e):e,void 0===this.sidebar)throw 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(function(t){n[t]=n[t].bind(n)}),this.initialize()}return n(t,[{key:"initialize",value:function t(){var e=this;if(this._setSupportFeatures(),this.options.innerWrapperSelector&&(this.sidebarInner=this.sidebar.querySelector(this.options.innerWrapperSelector),null===this.sidebarInner&&(this.sidebarInner=!1)),!this.sidebarInner){var i=document.createElement("div");for(i.setAttribute("class","inner-wrapper-sticky"),this.sidebar.appendChild(i);this.sidebar.firstChild!=i;)i.appendChild(this.sidebar.firstChild);this.sidebarInner=this.sidebar.querySelector(".inner-wrapper-sticky")}if(this.options.containerSelector){var n=document.querySelectorAll(this.options.containerSelector);if((n=Array.prototype.slice.call(n)).forEach(function(t,i){t.contains(e.sidebar)&&(e.container=t)}),!n.length)throw 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}},{key:"bindEvents",value:function t(){window.addEventListener("resize",this,{passive:!0,capture:!1}),window.addEventListener("scroll",this,{passive:!0,capture:!1}),this.sidebar.addEventListener("update"+e,this),this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(new ResizeSensor(this.sidebarInner,this.handleEvent),new ResizeSensor(this.container,this.handleEvent))}},{key:"handleEvent",value:function t(e){this.updateSticky(e)}},{key:"calcDimensions",value:function e(){if(!this._breakpoint){var i=this.dimensions;i.containerTop=t.offsetRelative(this.container).top,i.containerHeight=this.container.clientHeight,i.containerBottom=i.containerTop+i.containerHeight,i.sidebarHeight=this.sidebarInner.offsetHeight,i.sidebarWidth=this.sidebarInner.offsetWidth,i.viewportHeight=window.innerHeight,i.maxTranslateY=i.containerHeight-i.sidebarHeight,this._calcDimensionsWithScroll()}}},{key:"_calcDimensionsWithScroll",value:function e(){var i=this.dimensions;i.sidebarLeft=t.offsetRelative(this.sidebar).left,i.viewportTop=document.documentElement.scrollTop||document.body.scrollTop,i.viewportBottom=i.viewportTop+i.viewportHeight,i.viewportLeft=document.documentElement.scrollLeft||document.body.scrollLeft,i.topSpacing=this.options.topSpacing,i.bottomSpacing=this.options.bottomSpacing,"function"==typeof i.topSpacing&&(i.topSpacing=parseInt(i.topSpacing(this.sidebar))||0),"function"==typeof i.bottomSpacing&&(i.bottomSpacing=parseInt(i.bottomSpacing(this.sidebar))||0),"VIEWPORT-TOP"===this.affixedType?i.topSpacing=e.containerBottom?(e.translateY=e.containerBottom-i,s="CONTAINER-BOTTOM"):n>=e.containerTop&&(e.translateY=n-e.containerTop,s="VIEWPORT-TOP"):e.containerBottom<=o?(e.translateY=e.containerBottom-i,s="CONTAINER-BOTTOM"):i+e.translateY<=o?(e.translateY=o-i,s="VIEWPORT-BOTTOM"):e.containerTop+e.translateY<=n&&0!==e.translateY&&e.maxTranslateY!==e.translateY&&(s="VIEWPORT-UNBOTTOM"),s}},{key:"_getAffixTypeScrollingUp",value:function t(){var e=this.dimensions,i=e.sidebarHeight+e.containerTop,n=e.viewportTop+e.topSpacing,o=e.viewportBottom-e.bottomSpacing,s=this.affixedType;return n<=e.translateY+e.containerTop?(e.translateY=n-e.containerTop,s="VIEWPORT-TOP"):e.containerBottom<=o?(e.translateY=e.containerBottom-i,s="CONTAINER-BOTTOM"):!this.isSidebarFitsViewport()&&e.containerTop<=n&&0!==e.translateY&&e.maxTranslateY!==e.translateY&&(s="VIEWPORT-UNBOTTOM"),s}},{key:"_getStyle",value:function e(i){if(void 0!==i){var n={inner:{},outer:{}},o=this.dimensions;switch(i){case"VIEWPORT-TOP":n.inner={position:"fixed",top:o.topSpacing,left:o.sidebarLeft-o.viewportLeft,width:o.sidebarWidth};break;case"VIEWPORT-BOTTOM":n.inner={position:"fixed",top:"auto",left:o.sidebarLeft,bottom:o.bottomSpacing,width:o.sidebarWidth};break;case"CONTAINER-BOTTOM":case"VIEWPORT-UNBOTTOM":var s=this._getTranslate(0,o.translateY+"px");s?n.inner={transform:s}:n.inner={position:"absolute",top:o.translateY,width:o.sidebarWidth}}switch(i){case"VIEWPORT-TOP":case"VIEWPORT-BOTTOM":case"VIEWPORT-UNBOTTOM":case"CONTAINER-BOTTOM":n.outer={height:o.sidebarHeight,position:"relative"}}return n.outer=t.extend({height:"",position:""},n.outer),n.inner=t.extend({position:"relative",top:"",left:"",bottom:"",width:"",transform:""},n.inner),n}}},{key:"stickyPosition",value:function i(n){if(!this._breakpoint){n=this._reStyle||n||!1,this.options.topSpacing,this.options.bottomSpacing;var o=this.getAffixType(),s=this._getStyle(o);if((this.affixedType!=o||n)&&o){var r="affix."+o.toLowerCase().replace("viewport-","")+e;for(var a in t.eventTrigger(this.sidebar,r),"STATIC"===o?t.removeClass(this.sidebar,this.options.stickyClass):t.addClass(this.sidebar,this.options.stickyClass),s.outer){var p="number"==typeof s.outer[a]?"px":"";this.sidebar.style[a]=s.outer[a]+p}for(var c in s.inner){var l="number"==typeof s.inner[c]?"px":"";this.sidebarInner.style[c]=s.inner[c]+l}var h="affixed."+o.toLowerCase().replace("viewport-","")+e;t.eventTrigger(this.sidebar,h)}else this._initialized&&(this.sidebarInner.style.left=s.inner.left);this.affixedType=o}}},{key:"_widthBreakpoint",value:function e(){window.innerWidth<=this.options.minWidth?(this._breakpoint=!0,this.affixedType="STATIC",this.sidebar.removeAttribute("style"),t.removeClass(this.sidebar,this.options.stickyClass),this.sidebarInner.removeAttribute("style")):this._breakpoint=!1}},{key:"updateSticky",value:function t(){var e,i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!this._running&&(this._running=!0,e=n.type,requestAnimationFrame(function(){"scroll"===e?(i._calcDimensionsWithScroll(),i.observeScrollDir(),i.stickyPosition()):(i._widthBreakpoint(),i.calcDimensions(),i.stickyPosition(!0)),i._running=!1}))}},{key:"_setSupportFeatures",value:function e(){var i=this.support;i.transform=t.supportTransform(),i.transform3d=t.supportTransform(!0)}},{key:"_getTranslate",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.support.transform3d?"translate3d("+e+", "+i+", "+n+")":!!this.support.translate&&"translate("+e+", "+i+")"}},{key:"destroy",value:function t(){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"+e,this);var i={inner:{},outer:{}};for(var n in i.inner={position:"",top:"",left:"",bottom:"",width:"",transform:""},i.outer={height:"",position:""},i.outer)this.sidebar.style[n]=i.outer[n];for(var o in i.inner)this.sidebarInner.style[o]=i.inner[o];this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(ResizeSensor.detach(this.sidebarInner,this.handleEvent),ResizeSensor.detach(this.container,this.handleEvent))}}],[{key:"supportTransform",value:function t(e){var i=!1,n=e?"perspective":"transform",o=n.charAt(0).toUpperCase()+n.slice(1),s=document.createElement("support").style;return(n+" "+["Webkit","Moz","O","ms"].join(o+" ")+o).split(" ").forEach(function(t,e){if(void 0!==s[t])return i=t,!1}),i}},{key:"eventTrigger",value:function t(e,i,n){try{var o=new CustomEvent(i,{detail:n})}catch(s){var o=document.createEvent("CustomEvent");o.initCustomEvent(i,!0,!0,n)}e.dispatchEvent(o)}},{key:"extend",value:function t(e,i){var n={};for(var o in e)void 0!==i[o]?n[o]=i[o]:n[o]=e[o];return n}},{key:"offsetRelative",value:function t(e){var i={left:0,top:0};do{var n=e.offsetTop,o=e.offsetLeft;isNaN(n)||(i.top+=n),isNaN(o)||(i.left+=o),e="BODY"===e.tagName?e.parentElement:e.offsetParent}while(e);return i}},{key:"addClass",value:function e(i,n){t.hasClass(i,n)||(i.classList?i.classList.add(n):i.className+=" "+n)}},{key:"removeClass",value:function e(i,n){t.hasClass(i,n)&&(i.classList?i.classList.remove(n):i.className=i.className.replace(RegExp("(^|\\b)"+n.split(" ").join("|")+"(\\b|$)","gi")," "))}},{key:"hasClass",value:function t(e,i){return e.classList?e.classList.contains(i):RegExp("(^| )"+i+"( |$)","gi").test(e.className)}},{key:"defaults",get:function(){return i}}]),t}());t.default=o,window.StickySidebar=o})(e)});return e(o),e(i(function(t,e){var i,n;(n=function(t){var e,i=(e=t,e&&e.__esModule?e:{default:e});!function(){if("undefined"!=typeof window){var t=window.$||window.jQuery||window.Zepto,e="stickySidebar";if(t){var n=function(n){return this.each(function(){var o=t(this),s=t(this).data(e);if(s||(s=new i.default(this,"object"==typeof n&&n),o.data(e,s)),"string"==typeof n){if(void 0===s[n]&&-1===["destroy","updateSticky"].indexOf(n))throw Error('No method named "'+n+'"');s[n]()}})};t.fn.stickySidebar=n,t.fn.stickySidebar.Constructor=i.default;var o=t.fn.stickySidebar;t.fn.stickySidebar.noConflict=function(){return t.fn.stickySidebar=o,this}}}}()})(o)}))});