{"version":3,"file":"javascripts/chunks/978a851863979dbf138d.sticky-cta.js","mappings":"imCAEqBA,EAAAA,SAAAA,I,0oBACnB,WAAYC,GAAS,a,4FAAA,UACnB,cAAMA,EAASA,EAAQC,aAAa,oBAC/BC,YAAY,CACf,CACEC,GAAI,SACJC,SAAU,UAEZ,CACED,GAAI,YACJC,SAAU,eAId,EAAKC,YAAc,iCACnB,EAAKC,cAAgB,EAErB,EAAKC,aAhBc,E,mCAmBrB,WACoBC,KAAKC,SAASC,UAAUC,UAAUC,SAClDJ,KAAKH,aAILG,KAAKC,SAASC,UAAUC,UAAUE,OAAOL,KAAKH,aAE9CG,KAAKC,SAASC,UAAUC,UAAUG,IAAIN,KAAKH,e,wBAI/C,WAAa,WACPG,KAAKC,SAASM,QAChBP,KAAKC,SAASM,OAAOC,SAAQ,SAACC,GAC5BA,EAAEC,iBAAiB,QAAS,EAAKC,OAAOC,KAAK,OAIjDC,OAAOH,iBACL,UACA,WACE,IAAMI,EAAKD,OAAOE,aAAeC,SAASC,gBAAgBC,UACtDJ,EAAK,EAAKhB,cACZ,EAAKG,SAASkB,KAAKhB,UAAUE,OAAO,uBAEpC,EAAKJ,SAASkB,KAAKhB,UAAUG,IAAI,uBAEnC,EAAKR,cAAgBgB,GAAM,EAAI,EAAIA,KAErC,Q,mBAlDevB,C,SAAkB6B,I,0CCIvC,iBAAgBxB,GAAD,IAAWJ,EAAX,uDAAqBqB,OAAOG,SAA5B,MACb,GAAGK,MAAMC,KAAK9B,EAAQ+B,iBAAiB3B,M,gqCCkEzC,QAvEMwB,WACJ,WAAY5B,EAASG,I,4FAAI,SACvBK,KAAKL,GAAKA,EACVK,KAAKC,SAAW,CACdkB,KAAM3B,GAGRQ,KAAKwB,iB,mDAGP,WACMxB,KAAKC,SAASkB,MAChBnB,KAAKC,SAASkB,KAAKM,aAAa,8BAA8B,K,8BAIlE,WACMzB,KAAKC,SAASkB,MAChBnB,KAAKC,SAASkB,KAAKO,gBAAgB,gC,yBAWvC,SAAYC,GAQV,IARkB,WACZC,EAAiBD,EAAOE,KAAI,SAACC,GAAD,cAC7BA,GAD6B,IAEhClC,SAAU,GAAF,OAAK,EAAKD,GAAV,aAAiBmC,EAAclC,eAGnCmC,GAAcC,EAAAA,EAAAA,GAAO,oBAAqBhC,KAAKC,SAASkB,MAN5C,WAQTc,GACP,IAAMC,EAAaH,EAAYE,GAMxBH,E,k1BAAP,CALgCF,EAAeO,QAC7C,SAACC,GAAD,OACEF,EAAWzC,aAAa,qBAAuB2C,EAAaxC,YAGhE,MAEIkC,SAC6C,IAApC,EAAK7B,SAAS6B,EAAcnC,IACrC,EAAKM,SAAS6B,EAAcnC,IAAMuC,QAEkB,IAAzC,EAAKjC,SAAS6B,EAAcnC,IAAI0C,OACzC,EAAKpC,SAAS6B,EAAcnC,IAAM,CAAC,EAAKM,SAAS6B,EAAcnC,MAEjE,EAAKM,SAAS6B,EAAcnC,IAAI0C,KAAKH,MAhBlCD,EAAI,EAAGA,EAAIF,EAAYO,OAAQL,GAAK,EAAG,EAAvCA,GA4BTM,OAAOC,OAAOxC,KAAKC,UAAUO,SAAQ,SAACiC,GACpCA,EAAIC,OAFS,SAACD,GAAD,YAA8B,IAAbA,EAAIJ,KAAuB,CAACI,GAAOA,EAEpDC,CAAOD,W,mBAlEpBrB","sources":["webpack:///./components/sticky-cta/javascripts/sticky-cta.js","webpack:///./javascripts/dom/select.js","webpack:///./javascripts/helpers/baseModule.js"],"sourcesContent":["import BaseModule from '../../../javascripts/helpers/baseModule';\n\nexport default class StickyCta extends BaseModule {\n constructor(element) {\n super(element, element.getAttribute('data-js-module'));\n this.getElements([\n {\n id: 'toggle',\n selector: 'toggle'\n },\n {\n id: 'container',\n selector: 'container'\n }\n ]);\n\n this.toggleClass = 'sticky-cta__container--toggled';\n this.lastScrollTop = 0;\n\n this.bindEvents();\n }\n\n toogle() {\n const isToggled = this.elements.container.classList.contains(\n this.toggleClass\n );\n\n if (isToggled) {\n this.elements.container.classList.remove(this.toggleClass);\n } else {\n this.elements.container.classList.add(this.toggleClass);\n }\n }\n\n bindEvents() {\n if (this.elements.toggle) {\n this.elements.toggle.forEach((e) => {\n e.addEventListener('click', this.toogle.bind(this));\n });\n }\n\n window.addEventListener(\n 'scroll',\n () => {\n const st = window.pageYOffset || document.documentElement.scrollTop;\n if (st > this.lastScrollTop) {\n this.elements.self.classList.remove('sticky-cta--visible');\n } else {\n this.elements.self.classList.add('sticky-cta--visible');\n }\n this.lastScrollTop = st <= 0 ? 0 : st;\n },\n false\n );\n }\n}\n","/**\n * This methods selects Elements from a specific context by a selector\n * @param {string} selector Selector of the element to find\n * @param {Element|HTMLDocument} [element] Context of the selectable\n * @returns {Array<Element>} Am array with selected Elements\n */\nexport default (selector, element = window.document) =>\n [].slice.call(element.querySelectorAll(selector));\n","import select from '../dom/select';\n\nclass BaseModule {\n constructor(element, id) {\n this.id = id;\n this.elements = {\n self: element\n };\n\n this.setInitialized();\n }\n\n setInitialized() {\n if (this.elements.self) {\n this.elements.self.setAttribute('data-js-module-initialized', true);\n }\n }\n\n setUnInitialized() {\n if (this.elements.self) {\n this.elements.self.removeAttribute('data-js-module-initialized');\n }\n }\n\n /**\n * Selects DOMElements of a module with a specific data attribute (`data-js-element=\"${module}__${selector}\"`)\n * Receives an object where the id param is the key in the elements cache\n * The selector param of the config is the selector part in the query-selector described above\n * @param {Object} config Configuration object in a key value format\n * @returns {void}\n */\n getElements(config) {\n const elementsConfig = config.map((elementConfig) => ({\n ...elementConfig,\n selector: `${this.id}__${elementConfig.selector}`\n }));\n\n const domElements = select('[data-js-element]', this.elements.self);\n\n for (let i = 0; i < domElements.length; i += 1) {\n const domElement = domElements[i];\n const elementConfigCandidates = elementsConfig.filter(\n (singleConfig) =>\n domElement.getAttribute('data-js-element') === singleConfig.selector\n );\n\n const [elementConfig] = elementConfigCandidates;\n\n if (elementConfig) {\n if (typeof this.elements[elementConfig.id] === 'undefined') {\n this.elements[elementConfig.id] = domElement;\n } else {\n if (typeof this.elements[elementConfig.id].push === 'undefined') {\n this.elements[elementConfig.id] = [this.elements[elementConfig.id]];\n }\n this.elements[elementConfig.id].push(domElement);\n }\n }\n }\n\n /*\n * Append a attribute \"asList\" to each element/s in this.elements\n * which is always an array no matter if element/s is an array\n * or a single HTMLElement\n */\n\n const asList = (obj) => (typeof obj.push === 'undefined' ? [obj] : obj);\n Object.values(this.elements).forEach((obj) => {\n obj.asList = asList(obj); // eslint-disable-line no-param-reassign\n });\n }\n}\n\nexport default BaseModule;\n"],"names":["StickyCta","element","getAttribute","getElements","id","selector","toggleClass","lastScrollTop","bindEvents","this","elements","container","classList","contains","remove","add","toggle","forEach","e","addEventListener","toogle","bind","window","st","pageYOffset","document","documentElement","scrollTop","self","BaseModule","slice","call","querySelectorAll","setInitialized","setAttribute","removeAttribute","config","elementsConfig","map","elementConfig","domElements","select","i","domElement","filter","singleConfig","push","length","Object","values","obj","asList"],"sourceRoot":""}