{"version":3,"sources":["webpack:///./source/js/lrStickyHeader.js"],"names":["__WEBPACK_AMD_DEFINE_RESULT__","global","window","undefined","getOffset","element","property","offset","parent","offsetParent","sticky","setWidth","firstTds","firstThs","firstRow","this","tbody","getElementsByTagName","trh","thead","setCellWidth","cell","style","width","offsetWidth","forEach","call","eventListener","offsetTop","Number","headerHeight","offsetLeft","parentOffsetTop","parentIsWindow","parentScrollTop","scrollY","scrollTop","classes","className","split","stick","offsetHeight","treshold","windowScrollY","left","top","setTimeout","push","position","join","marginTop","bind","splice","indexOf","tableElement","options","tagName","Error","length","stickyTable","Object","create","value","get","listener","addEventListener","clean","removeEventListener","factory","apply","exports","module"],"mappings":"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","file":"site.90e6ce1a0748da7e9565.bundle.js","sourcesContent":["(function (global, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module unless amdModuleId is set\r\n define([], function () {\r\n return (global['lrStickyHeader'] = factory(global));\r\n });\r\n } else if (typeof exports === 'object') {\r\n // Node. Does not work with strict CommonJS, but\r\n // only CommonJS-like environments that support module.exports,\r\n // like Node.\r\n module.exports = factory(global);\r\n } else {\r\n global['lrStickyHeader'] = factory(global);\r\n }\r\n})(window, function factory (window) {\r\n 'use strict';\r\n function getOffset (element, property) {\r\n var offset = element[property];\r\n var parent = element;\r\n while ((parent = parent.offsetParent) !== null) {\r\n offset += parent[property];\r\n }\r\n return offset;\r\n }\r\n\r\n var sticky = {\r\n //todo some memoize stuff\r\n setWidth: function setWidth () {\r\n var firstRow = this.tbody.getElementsByTagName('TR')[0];\r\n var trh = this.thead.getElementsByTagName('TR')[0];\r\n\r\n var firstTds;\r\n var firstThs;\r\n\r\n function setCellWidth (cell) {\r\n cell.style.width = cell.offsetWidth + 'px';\r\n }\r\n\r\n if (firstRow && trh) {\r\n firstTds = firstRow.getElementsByTagName('TD');\r\n firstThs = trh.getElementsByTagName('TH');\r\n [].forEach.call(firstTds, setCellWidth);\r\n [].forEach.call(firstThs, setCellWidth);\r\n }\r\n },\r\n eventListener: function eventListener () {\r\n var offsetTop = getOffset(this.thead, 'offsetTop') - Number(this.headerHeight);\r\n var offsetLeft = getOffset(this.thead, 'offsetLeft');\r\n var parentOffsetTop = this.parentIsWindow ? 0 : getOffset(this.parent, 'offsetTop');\r\n var parentScrollTop = this.parentIsWindow ? parent.scrollY : this.parent.scrollTop;\r\n var classes = this.thead.className.split(' ');\r\n\r\n if (this.stick !== true && (offsetTop - (parentOffsetTop + parentScrollTop) < 0) &&\r\n (offsetTop + this.tbody.offsetHeight - (parentOffsetTop + parentScrollTop) > 0)) {\r\n this.stick = true;\r\n this.treshold = offsetTop;\r\n this.windowScrollY = this.parentIsWindow ? 0 : window.scrollY;\r\n this.setWidth();\r\n this.thead.style.left = offsetLeft + 'px';\r\n this.thead.style.top = Number(this.headerHeight + parentOffsetTop - this.windowScrollY) + 'px';\r\n setTimeout(function () {\r\n classes.push('lr-sticky-header');\r\n this.thead.style.position = 'fixed';\r\n this.thead.className = classes.join(' ');\r\n this.element.style.marginTop = Number(this.thead.offsetHeight) + 'px';\r\n }.bind(this), 0);\r\n }\r\n\r\n if (this.stick === true && !this.parentIsWindow && this.windowScrollY !== window.scrollY) {\r\n this.windowScrollY = window.scrollY;\r\n this.thead.style.top = Number(this.headerHeight + parentOffsetTop - this.windowScrollY) + 'px';\r\n }\r\n\r\n if (this.stick === true && (\r\n (this.parentIsWindow && (this.treshold - parentScrollTop > 0)) ||\r\n (parentScrollTop <= 0))) {\r\n this.stick = false;\r\n this.thead.style.position = 'initial';\r\n classes.splice(classes.indexOf('lr-sticky-header'), 1);\r\n this.thead.className = (classes).join(' ');\r\n this.element.style.marginTop = '0';\r\n }\r\n }\r\n };\r\n\r\n return function lrStickyHeader (tableElement, options) {\r\n var headerHeight = 0;\r\n if (options && options.headerHeight) {\r\n headerHeight = options.headerHeight;\r\n }\r\n var parent = window;\r\n if (options && options.parent) {\r\n parent = options.parent;\r\n }\r\n\r\n var thead;\r\n var tbody;\r\n\r\n if (tableElement.tagName !== 'TABLE') {\r\n throw new Error('lrStickyHeader only works on table element');\r\n }\r\n tbody = tableElement.getElementsByTagName('TBODY');\r\n\r\n thead = tableElement.getElementsByTagName('THEAD');\r\n if (!thead.length) {\r\n throw new Error('could not find the thead group element');\r\n }\r\n\r\n if (!tbody.length) {\r\n throw new Error('could not find the tbody group element');\r\n }\r\n\r\n thead = thead[0];\r\n tbody = tbody[0];\r\n\r\n\r\n var stickyTable = Object.create(sticky, {\r\n element: {value: tableElement},\r\n parent: {\r\n get: function () {\r\n return parent;\r\n }\r\n },\r\n parentIsWindow: {value: parent === window},\r\n headerHeight: {\r\n get: function () {\r\n return headerHeight;\r\n }\r\n },\r\n thead: {\r\n get: function () {\r\n return thead;\r\n }\r\n },\r\n tbody: {\r\n get: function () {\r\n return tbody;\r\n }\r\n }\r\n });\r\n\r\n var listener = stickyTable.eventListener.bind(stickyTable);\r\n parent.addEventListener('scroll', listener);\r\n if (parent !== window) {\r\n window.addEventListener('scroll', listener);\r\n }\r\n stickyTable.clean = function clean () {\r\n parent.removeEventListener('scroll', listener);\r\n if (parent !== window) {\r\n window.removeEventListener('scroll', listener);\r\n }\r\n };\r\n\r\n return stickyTable;\r\n };\r\n});\r\n\r\n"],"sourceRoot":""}