/**
  stickybits - Stickybits is a lightweight alternative to `position: sticky` polyfills
  @version v3.7.4
  @link https://github.com/dollarshaveclub/stickybits#readme
  @author Jeff Wainwright <yowainwright@gmail.com> (https://jeffry.in)
  @license MIT
**/
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).stickybits=t()}(this,function(){"use strict";function n(){return(n=Object.assign||function(n){for(var i,r,t=1;t<arguments.length;t++){i=arguments[t];for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(n[r]=i[r])}return n}).apply(this,arguments)}var t=function(){function i(n,t){var c=this,i=void 0!==t?t:{},u,f,h,e;this.version="3.7.4";this.userAgent=window.navigator.userAgent||"no `userAgent` provided by the browser";this.props={customStickyChangeNumber:i.customStickyChangeNumber||null,noStyles:i.noStyles||!1,stickyBitStickyOffset:i.stickyBitStickyOffset||0,parentClass:i.parentClass||"js-stickybit-parent",scrollEl:"string"==typeof i.scrollEl?document.querySelector(i.scrollEl):i.scrollEl||window,stickyClass:i.stickyClass||"js-is-sticky",stuckClass:i.stuckClass||"js-is-stuck",stickyChangeClass:i.stickyChangeClass||"js-is-sticky--change",useStickyClasses:i.useStickyClasses||!1,useFixed:i.useFixed||!1,useGetBoundingClientRect:i.useGetBoundingClientRect||!1,verticalPosition:i.verticalPosition||"top",applyStyle:i.applyStyle||function(n,t){return c.applyStyle(n,t)}};this.props.positionVal=this.definePosition()||"fixed";this.instances=[];var r=this.props,o=r.positionVal,s=r.verticalPosition,l=r.noStyles,a=r.stickyBitStickyOffset,v="top"!==s||l?"":a+"px",y="fixed"!==o?o:"";for(this.els="string"==typeof n?document.querySelectorAll(n):n,("length"in this.els)||(this.els=[this.els]),u=0;u<this.els.length;u++)h=this.els[u],e=this.addInstance(h,this.props),this.props.applyStyle({styles:(f={},f[s]=v,f.position=y,f),classes:{}},e),this.manageState(e),this.instances.push(e)}var t=i.prototype;return t.definePosition=function(){var t;if(this.props.useFixed)t="fixed";else{for(var r=["","-o-","-webkit-","-moz-","-ms-"],n=document.head.style,i=0;i<r.length;i+=1)n.position=r[i]+"sticky";t=n.position?n.position:"fixed";n.position=""}return t},t.addInstance=function(n,t){var u=this,i={el:n,parent:n.parentNode,props:t},r;return("fixed"===t.positionVal||t.useStickyClasses)&&(this.isWin=this.props.scrollEl===window,r=this.isWin?window:this.getClosestParent(i.el,i.props.scrollEl),this.computeScrollOffsets(i),this.toggleClasses(i.parent,"",t.parentClass),i.state="default",i.stateChange="default",i.stateContainer=function(){return u.manageState(i)},r.addEventListener("scroll",i.stateContainer)),i},t.getClosestParent=function(n,t){var i=t,r=n;if(r.parentElement===i)return i;for(;r.parentElement!==i;)r=r.parentElement;return i},t.getTopPosition=function(n){if(this.props.useGetBoundingClientRect)return n.getBoundingClientRect().top+(this.props.scrollEl.pageYOffset||document.documentElement.scrollTop);for(var t=0;t=n.offsetTop+t,n=n.offsetParent;);return t},t.computeScrollOffsets=function(n){var t=n,i=t.props,f=t.el,r=t.parent,u=!this.isWin&&"fixed"===i.positionVal,e="bottom"!==i.verticalPosition,o=u?this.getTopPosition(i.scrollEl):0,s=u?this.getTopPosition(r)-o:this.getTopPosition(r),c=null!==i.customStickyChangeNumber?i.customStickyChangeNumber:f.offsetHeight,h=s+r.offsetHeight;t.offset=u?0:o+i.stickyBitStickyOffset;t.stickyStart=e?s-t.offset:0;t.stickyChange=t.stickyStart+c;t.stickyStop=e?h-(f.offsetHeight+t.offset):h-window.innerHeight},t.toggleClasses=function(n,t,i){var f=n,r=f.className.split(" "),u;i&&-1===r.indexOf(i)&&r.push(i);u=r.indexOf(t);-1!==u&&r.splice(u,1);f.className=r.join(" ")},t.manageState=function(t){var y=this,i=t,r=i.props,f=i.state,p=i.stateChange,a=i.stickyStart,v=i.stickyChange,e=i.stickyStop,s=r.positionVal,w=r.scrollEl,h=r.stickyClass,b=r.stickyChangeClass,c=r.stuckClass,o=r.verticalPosition,k="bottom"!==o,d=r.applyStyle,g=r.noStyles,nt=function(n){n()},tt=this.isWin&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame)||nt,u=this.isWin?window.scrollY||window.pageYOffset:w.scrollTop,it=k&&u<=a&&("sticky"===f||"stuck"===f),rt=e<=u&&"sticky"===f,l;a<u&&u<e&&("default"===f||"stuck"===f)?i.state="sticky":it?i.state="default":rt&&(i.state="stuck");l=v<=u&&u<=e;u<v/2||e<u?i.stateChange="default":l&&(i.stateChange="sticky");f===i.state&&p===i.stateChange||tt(function(){var e,a,v,p,w,f,k={sticky:{styles:(e={position:s,top:"",bottom:""},e[o]=r.stickyBitStickyOffset+"px",e),classes:(a={},a[h]=!0,a)},"default":{styles:(v={},v[o]="",v),classes:{}},stuck:{styles:n((p={},p[o]="",p),"fixed"===s&&!g||!y.isWin?{position:"absolute",top:"",bottom:"0"}:{}),classes:(w={},w[c]=!0,w)}},u;"fixed"===s&&(k.default.styles.position="");u=k[i.state];u.classes=((f={})[c]=!!u.classes[c],f[h]=!!u.classes[h],f[b]=l,f);d(u,t)})},t.applyStyle=function(n,t){var u=n.styles,s=n.classes,h=t,f=h.el,l=h.props,c=f.style,a=l.noStyles,i=f.className.split(" "),r,e,o;for(r in s)s[r]?-1===i.indexOf(r)&&i.push(r):(e=i.indexOf(r),-1!==e&&i.splice(e,1));if(f.className=i.join(" "),u.position&&(c.position=u.position),!a)for(o in u)c[o]=u[o]},t.update=function(n){var t=this;return void 0===n&&(n=null),this.instances.forEach(function(i){if(t.computeScrollOffsets(i),n)for(var r in n)i.props[r]=n[r]}),this},t.removeInstance=function(n){var r,t,u=n.el,i=n.props;this.applyStyle({styles:(r={position:""},r[i.verticalPosition]="",r),classes:(t={},t[i.stickyClass]="",t[i.stuckClass]="",t)},n);this.toggleClasses(u.parentNode,i.parentClass)},t.cleanup=function(){for(var n,t=0;t<this.instances.length;t+=1)n=this.instances[t],n.stateContainer&&n.props.scrollEl.removeEventListener("scroll",n.stateContainer),this.removeInstance(n);this.manageState=!1;this.instances=[]},i}();return function(n,i){return new t(n,i)}})