{"version":3,"sources":["sticky-sidebar.js"],"names":["global","factory","exports","module","define","amd","StickySidebar","this","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","EVENT_KEY","DEFAULTS","topSpacing","bottomSpacing","containerSelector","innerWrapperSelector","stickyClass","resizeSensor","minWidth","sidebar","_this","options","arguments","undefined","instance","TypeError","_classCallCheck","extend","document","querySelector","Error","sidebarInner","container","parentElement","affixedType","direction","support","transform","transform3d","_initialized","_reStyle","_breakpoint","_resizeListeners","dimensions","translateY","lastTopSpacing","lastBottomSpacing","sidebarHeight","sidebarWidth","containerTop","containerHeight","viewportHeight","viewportTop","lastViewportTop","forEach","method","bind","initialize","value","_this2","_setSupportFeatures","wrapper","createElement","setAttribute","appendChild","firstChild","containers","querySelectorAll","Array","slice","call","item","contains","parseInt","_widthBreakpoint","calcDimensions","stickyPosition","bindEvents","window","addEventListener","passive","capture","ResizeSensor","handleEvent","event","updateSticky","dims","offsetRelative","top","clientHeight","containerBottom","offsetHeight","offsetWidth","innerHeight","_calcDimensionsWithScroll","sidebarLeft","left","documentElement","scrollTop","body","viewportBottom","viewportLeft","scrollLeft","furthest","Math","min","max","affixType","sidebarBottom","colliderTop","colliderBottom","isSidebarFitsViewport","style","inner","outer","position","width","bottom","translate","_getTranslate","height","force","getAffixType","_getStyle","affixEvent","toLowerCase","replace","eventTrigger","removeClass","addClass","_key","_unit2","affixedEvent","innerWidth","removeAttribute","eventType","_this3","_running","type","requestAnimationFrame","observeScrollDir","supportTransform","y","x","z","removeEventListener","caption","classList","remove","minHeight","styleReset","_key2","detach","result","property","upper","charAt","toUpperCase","join","split","element","eventName","data","CustomEvent","detail","e","createEvent","initCustomEvent","dispatchEvent","defaults","results","offsetTop","offsetLeft","isNaN","tagName","offsetParent","className","hasClass","add","RegExp","test"],"mappings":"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","file":"../sticky-sidebar.min.js","sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.StickySidebar = factory());\n}(this, (function () { 'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\r\n * Sticky Sidebar JavaScript Plugin.\r\n * @version 3.3.1\r\n * @author Ahmed Bouhuolia \r\n * @license The MIT License (MIT)\r\n */\nvar StickySidebar = function () {\n\n // ---------------------------------\n // # Define Constants\n // ---------------------------------\n //\n var EVENT_KEY = '.stickySidebar';\n var DEFAULTS = {\n\n /**\r\n * Additional top spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\n topSpacing: 0,\n\n /**\r\n * Additional bottom spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\n bottomSpacing: 0,\n\n /**\r\n * Container sidebar selector to know what the beginning and end of sticky element.\r\n * @type {String|False}\r\n */\n containerSelector: false,\n\n /**\r\n * Inner wrapper selector.\r\n * @type {String}\r\n */\n innerWrapperSelector: '.inner-wrapper-sticky',\n\n /**\r\n * The name of CSS class to apply to elements when they have become stuck.\r\n * @type {String|False}\r\n */\n stickyClass: 'is-affixed',\n\n /**\r\n * Detect when sidebar and its container change height so re-calculate their dimensions.\r\n * @type {Boolean}\r\n */\n resizeSensor: true,\n\n /**\r\n * The sidebar returns to its normal position if its width below this value.\r\n * @type {Numeric}\r\n */\n minWidth: false\n };\n\n // ---------------------------------\n // # Class Definition\n // ---------------------------------\n //\n /**\r\n * Sticky Sidebar Class.\r\n * @public\r\n */\n\n var StickySidebar = function () {\n\n /**\r\n * Sticky Sidebar Constructor.\r\n * @constructor\r\n * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\r\n * @param {Object} options - The options of sticky sidebar.\r\n */\n function StickySidebar(sidebar) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StickySidebar);\n\n this.options = StickySidebar.extend(DEFAULTS, options);\n\n // Sidebar element query if there's no one, throw error.\n this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar;\n if ('undefined' === typeof this.sidebar) throw new Error(\"There is no specific sidebar element.\");\n\n this.sidebarInner = false;\n this.container = this.sidebar.parentElement;\n\n // Current Affix Type of sidebar element.\n this.affixedType = 'STATIC';\n this.direction = 'down';\n this.support = {\n transform: false,\n transform3d: false\n };\n\n this._initialized = false;\n this._reStyle = false;\n this._breakpoint = false;\n this._resizeListeners = [];\n\n // Dimensions of sidebar, container and screen viewport.\n this.dimensions = {\n translateY: 0,\n topSpacing: 0,\n lastTopSpacing: 0,\n bottomSpacing: 0,\n lastBottomSpacing: 0,\n sidebarHeight: 0,\n sidebarWidth: 0,\n containerTop: 0,\n containerHeight: 0,\n viewportHeight: 0,\n viewportTop: 0,\n lastViewportTop: 0\n };\n\n // Bind event handlers for referencability.\n ['handleEvent'].forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n\n // Initialize sticky sidebar for first time.\n this.initialize();\n }\n\n /**\r\n * Initializes the sticky sidebar by adding inner wrapper, define its container, \r\n * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\r\n * @private\r\n */\n\n\n _createClass(StickySidebar, [{\n key: 'initialize',\n value: function initialize() {\n var _this2 = this;\n\n this._setSupportFeatures();\n\n // Get sticky sidebar inner wrapper, if not found, will create one.\n if (this.options.innerWrapperSelector) {\n this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\n\n if (null === this.sidebarInner) this.sidebarInner = false;\n }\n\n if (!this.sidebarInner) {\n var wrapper = document.createElement('div');\n wrapper.setAttribute('class', 'inner-wrapper-sticky');\n this.sidebar.appendChild(wrapper);\n\n while (this.sidebar.firstChild != wrapper) {\n wrapper.appendChild(this.sidebar.firstChild);\n }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\n }\n\n // Container wrapper of the sidebar.\n if (this.options.containerSelector) {\n var containers = document.querySelectorAll(this.options.containerSelector);\n containers = Array.prototype.slice.call(containers);\n\n containers.forEach(function (container, item) {\n if (!container.contains(_this2.sidebar)) return;\n _this2.container = container;\n });\n\n if (!containers.length) throw new Error(\"The container does not contains on the sidebar.\");\n }\n\n // If top/bottom spacing is not function parse value to integer.\n if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\n\n if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\n\n // Breakdown sticky sidebar if screen width below `options.minWidth`.\n this._widthBreakpoint();\n\n // Calculate dimensions of sidebar, container and viewport.\n this.calcDimensions();\n\n // Affix sidebar in proper position.\n this.stickyPosition();\n\n // Bind all events.\n this.bindEvents();\n\n // Inform other properties the sticky sidebar is initialized.\n this._initialized = true;\n }\n\n /**\r\n * Bind all events of sticky sidebar plugin.\r\n * @protected\r\n */\n\n }, {\n key: 'bindEvents',\n value: function bindEvents() {\n window.addEventListener('resize', this, { passive: true, capture: false });\n window.addEventListener('scroll', this, { passive: true, capture: false });\n\n this.sidebar.addEventListener('update' + EVENT_KEY, this);\n\n if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n new ResizeSensor(this.sidebarInner, this.handleEvent);\n new ResizeSensor(this.container, this.handleEvent);\n }\n }\n\n /**\r\n * Handles all events of the plugin.\r\n * @param {Object} event - Event object passed from listener.\r\n */\n\n }, {\n key: 'handleEvent',\n value: function handleEvent(event) {\n this.updateSticky(event);\n }\n\n /**\r\n * Calculates dimensions of sidebar, container and screen viewpoint\r\n * @public\r\n */\n\n }, {\n key: 'calcDimensions',\n value: function calcDimensions() {\n if (this._breakpoint) return;\n var dims = this.dimensions;\n\n // Container of sticky sidebar dimensions.\n dims.containerTop = StickySidebar.offsetRelative(this.container).top;\n dims.containerHeight = this.container.clientHeight;\n dims.containerBottom = dims.containerTop + dims.containerHeight;\n\n // Sidebar dimensions.\n dims.sidebarHeight = this.sidebarInner.offsetHeight;\n dims.sidebarWidth = this.sidebar.offsetWidth;\n\n // Screen viewport dimensions.\n dims.viewportHeight = window.innerHeight;\n\n this._calcDimensionsWithScroll();\n }\n\n /**\r\n * Some dimensions values need to be up-to-date when scrolling the page.\r\n * @private\r\n */\n\n }, {\n key: '_calcDimensionsWithScroll',\n value: function _calcDimensionsWithScroll() {\n var dims = this.dimensions;\n\n dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\n\n dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\n dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\n dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n\n dims.topSpacing = this.options.topSpacing;\n dims.bottomSpacing = this.options.bottomSpacing;\n\n if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\n\n if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\n\n if ('VIEWPORT-TOP' === this.affixedType) {\n // Adjust translate Y in the case decrease top spacing value.\n if (dims.topSpacing < dims.lastTopSpacing) {\n dims.translateY += dims.lastTopSpacing - dims.topSpacing;\n this._reStyle = true;\n }\n } else if ('VIEWPORT-BOTTOM' === this.affixedType) {\n // Adjust translate Y in the case decrease bottom spacing value.\n if (dims.bottomSpacing < dims.lastBottomSpacing) {\n dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\n this._reStyle = true;\n }\n }\n\n dims.lastTopSpacing = dims.topSpacing;\n dims.lastBottomSpacing = dims.bottomSpacing;\n }\n\n /**\r\n * Determine whether the sidebar is bigger than viewport.\r\n * @public\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isSidebarFitsViewport',\n value: function isSidebarFitsViewport() {\n return this.dimensions.sidebarHeight < this.dimensions.viewportHeight;\n }\n\n /**\r\n * Observe browser scrolling direction top and down.\r\n */\n\n }, {\n key: 'observeScrollDir',\n value: function observeScrollDir() {\n var dims = this.dimensions;\n if (dims.lastViewportTop === dims.viewportTop) return;\n\n var furthest = 'down' === this.direction ? Math.min : Math.max;\n\n // If the browser is scrolling not in the same direction.\n if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down';\n }\n\n /**\r\n * Gets affix type of sidebar according to current scrollTop and scrollLeft.\r\n * Holds all logical affix of the sidebar when scrolling up and down and when sidebar \r\n * is bigger than viewport and vice versa.\r\n * @public\r\n * @return {String|False} - Proper affix type.\r\n */\n\n }, {\n key: 'getAffixType',\n value: function getAffixType() {\n var dims = this.dimensions,\n affixType = false;\n\n this._calcDimensionsWithScroll();\n\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\n var colliderTop = dims.viewportTop + dims.topSpacing;\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\n\n // When browser is scrolling top.\n if ('up' === this.direction) {\n if (colliderTop <= dims.containerTop) {\n dims.translateY = 0;\n affixType = 'STATIC';\n } else if (colliderTop <= dims.translateY + dims.containerTop) {\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n } else if (!this.isSidebarFitsViewport() && dims.containerTop <= colliderTop) {\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n // When browser is scrolling up.\n } else {\n // When sidebar element is not bigger than screen viewport.\n if (this.isSidebarFitsViewport()) {\n\n if (dims.sidebarHeight + colliderTop >= dims.containerBottom) {\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n } else if (colliderTop >= dims.containerTop) {\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n }\n // When sidebar element is bigger than screen viewport.\n } else {\n\n if (dims.containerBottom <= colliderBottom) {\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n } else if (sidebarBottom + dims.translateY <= colliderBottom) {\n dims.translateY = colliderBottom - sidebarBottom;\n affixType = 'VIEWPORT-BOTTOM';\n } else if (dims.containerTop + dims.translateY <= colliderTop) {\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n }\n }\n\n // Make sure the translate Y is not bigger than container height.\n dims.translateY = Math.max(0, dims.translateY);\n dims.translateY = Math.min(dims.containerHeight, dims.translateY);\n\n dims.lastViewportTop = dims.viewportTop;\n return affixType;\n }\n\n /**\r\n * Gets inline style of sticky sidebar wrapper and inner wrapper according \r\n * to its affix type.\r\n * @private\r\n * @param {String} affixType - Affix type of sticky sidebar.\r\n * @return {Object}\r\n */\n\n }, {\n key: '_getStyle',\n value: function _getStyle(affixType) {\n if ('undefined' === typeof affixType) return;\n\n var style = { inner: {}, outer: {} };\n var dims = this.dimensions;\n\n switch (affixType) {\n case 'VIEWPORT-TOP':\n style.inner = { position: 'fixed', top: dims.topSpacing,\n left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth };\n break;\n case 'VIEWPORT-BOTTOM':\n style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft,\n bottom: dims.bottomSpacing, width: dims.sidebarWidth };\n break;\n case 'CONTAINER-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n var translate = this._getTranslate(0, dims.translateY + 'px');\n\n if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth };\n break;\n }\n\n switch (affixType) {\n case 'VIEWPORT-TOP':\n case 'VIEWPORT-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n case 'CONTAINER-BOTTOM':\n style.outer = { height: dims.sidebarHeight, position: 'relative' };\n break;\n }\n\n style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer);\n style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '',\n bottom: '', width: '', transform: this._getTranslate() }, style.inner);\n\n return style;\n }\n\n /**\r\n * Cause the sidebar to be sticky according to affix type by adding inline\r\n * style, adding helper class and trigger events.\r\n * @function\r\n * @protected\r\n * @param {string} force - Update sticky sidebar position by force.\r\n */\n\n }, {\n key: 'stickyPosition',\n value: function stickyPosition(force) {\n if (this._breakpoint) return;\n\n force = this._reStyle || force || false;\n\n var affixType = this.getAffixType();\n var style = this._getStyle(affixType);\n\n if ((this.affixedType != affixType || force) && affixType) {\n var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixEvent);\n\n if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass);\n\n for (var key in style.outer) {\n this.sidebar.style[key] = style.outer[key];\n }\n\n for (var _key in style.inner) {\n var _unit2 = 'number' === typeof style.inner[_key] ? 'px' : '';\n this.sidebarInner.style[_key] = style.inner[_key] + _unit2;\n }\n\n var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixedEvent);\n } else {\n if (this._initialized) this.sidebarInner.style.left = style.inner.left;\n }\n\n this.affixedType = affixType;\n }\n\n /**\r\n * Breakdown sticky sidebar when window width is below `options.minWidth` value.\r\n * @protected\r\n */\n\n }, {\n key: '_widthBreakpoint',\n value: function _widthBreakpoint() {\n\n if (window.innerWidth <= this.options.minWidth) {\n this._breakpoint = true;\n this.affixedType = 'STATIC';\n\n this.sidebar.removeAttribute('style');\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\n this.sidebarInner.removeAttribute('style');\n } else {\n this._breakpoint = false;\n }\n }\n\n /**\r\n * Switches between functions stack for each event type, if there's no \r\n * event, it will re-initialize sticky sidebar.\r\n * @public\r\n */\n\n }, {\n key: 'updateSticky',\n value: function updateSticky() {\n var _this3 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this._running) return;\n this._running = true;\n\n (function (eventType) {\n\n requestAnimationFrame(function () {\n switch (eventType) {\n // When browser is scrolling and re-calculate just dimensions\n // within scroll. \n case 'scroll':\n _this3._calcDimensionsWithScroll();\n _this3.observeScrollDir();\n _this3.stickyPosition();\n break;\n\n // When browser is resizing or there's no event, observe width\n // breakpoint and re-calculate dimensions.\n case 'resize':\n default:\n _this3._widthBreakpoint();\n _this3.calcDimensions();\n _this3.stickyPosition(true);\n break;\n }\n _this3._running = false;\n });\n })(event.type);\n }\n\n /**\r\n * Set browser support features to the public property.\r\n * @private\r\n */\n\n }, {\n key: '_setSupportFeatures',\n value: function _setSupportFeatures() {\n var support = this.support;\n\n support.transform = StickySidebar.supportTransform();\n support.transform3d = StickySidebar.supportTransform(true);\n }\n\n /**\r\n * Get translate value, if the browser supports transfrom3d, it will adopt it.\r\n * and the same with translate. if browser doesn't support both return false.\r\n * @param {Number} y - Value of Y-axis.\r\n * @param {Number} x - Value of X-axis.\r\n * @param {Number} z - Value of Z-axis.\r\n * @return {String|False}\r\n */\n\n }, {\n key: '_getTranslate',\n value: function _getTranslate() {\n var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false;\n }\n\n /**\r\n * Destroy sticky sidebar plugin.\r\n * @public\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n window.removeEventListener('resize', this, { caption: false });\n window.removeEventListener('scroll', this, { caption: false });\n\n this.sidebar.classList.remove(this.options.stickyClass);\n this.sidebar.style.minHeight = '';\n\n this.sidebar.removeEventListener('update' + EVENT_KEY, this);\n\n var styleReset = { inner: {}, outer: {} };\n\n styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' };\n styleReset.outer = { height: '', position: '' };\n\n for (var key in styleReset.outer) {\n this.sidebar.style[key] = styleReset.outer[key];\n }for (var _key2 in styleReset.inner) {\n this.sidebarInner.style[_key2] = styleReset.inner[_key2];\n }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n ResizeSensor.detach(this.sidebarInner, this.handleEvent);\n ResizeSensor.detach(this.container, this.handleEvent);\n }\n }\n\n /**\r\n * Determine if the browser supports CSS transform feature.\r\n * @function\r\n * @static\r\n * @param {Boolean} transform3d - Detect transform with translate3d.\r\n * @return {String}\r\n */\n\n }], [{\n key: 'supportTransform',\n value: function supportTransform(transform3d) {\n var result = false,\n property = transform3d ? 'perspective' : 'transform',\n upper = property.charAt(0).toUpperCase() + property.slice(1),\n prefixes = ['Webkit', 'Moz', 'O', 'ms'],\n support = document.createElement('support'),\n style = support.style;\n\n (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) {\n if (style[property] !== undefined) {\n result = property;\n return false;\n }\n });\n return result;\n }\n\n /**\r\n * Trigger custom event.\r\n * @static\r\n * @param {DOMObject} element - Target element on the DOM.\r\n * @param {String} eventName - Event name.\r\n * @param {Object} data - \r\n */\n\n }, {\n key: 'eventTrigger',\n value: function eventTrigger(element, eventName, data) {\n try {\n var event = new CustomEvent(eventName, { detail: data });\n } catch (e) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, data);\n }\n element.dispatchEvent(event);\n }\n\n /**\r\n * Extend options object with defaults.\r\n * @function\r\n * @static\r\n */\n\n }, {\n key: 'extend',\n value: function extend(defaults, options) {\n var results = {};\n for (var key in defaults) {\n if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key];\n }\n return results;\n }\n\n /**\r\n * Get current coordinates left and top of specific element.\r\n * @static\r\n */\n\n }, {\n key: 'offsetRelative',\n value: function offsetRelative(element) {\n var result = { left: 0, top: 0 };\n\n do {\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n\n if (!isNaN(offsetTop)) result.top += offsetTop;\n\n if (!isNaN(offsetLeft)) result.left += offsetLeft;\n\n element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent;\n } while (element);\n return result;\n }\n\n /**\r\n * Add specific class name to specific element.\r\n * @static \r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'addClass',\n value: function addClass(element, className) {\n if (!StickySidebar.hasClass(element, className)) {\n if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n }\n }\n\n /**\r\n * Remove specific class name to specific element\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'removeClass',\n value: function removeClass(element, className) {\n if (StickySidebar.hasClass(element, className)) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n /**\r\n * Determine weather the element has specific class name.\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'hasClass',\n value: function hasClass(element, className) {\n if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }]);\n\n return StickySidebar;\n }();\n\n return StickySidebar;\n}();\n\n// Global\n// -------------------------\nwindow.StickySidebar = StickySidebar;\n\nreturn StickySidebar;\n\n})));\n\n//# sourceMappingURL=sticky-sidebar.js.map\n"]}