{"version":3,"sources":["webpack:///./src/feature/hero-banner/hero-banner.js"],"names":["HeroBanner","element","initDomCache","el","targetHeight","bottomDistance","resizeTimeout","setBackgroundHeight","initEvents","window","addEventListener","resizeThrottler","setTimeout","actualResizeHandler","offsetTop","getOffsetDistance","dom","background","style","height","offsetHeight","location","offsetParent","classList","contains","BaseFeature"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;IAEqBA,U;;;AACpB,qBAAYC,OAAZ,EAAqB;AAAA;;AAAA,sHACdA,OADc;;AAEpB,QAAKC,YAAL;AACA,QAAKC,EAAL,GAAUF,OAAV;AACA;AACA;;AAEA,QAAKG,YAAL,GAAoB,GAApB,CAPoB,CAOK;AACzB,QAAKC,cAAL,GAAsB,EAAtB,CARoB,CAQM;AAC1B,QAAKC,aAAL,GAAqB,IAArB,CAToB,CASO;AAC3B,QAAKC,mBAAL;AACA,QAAKC,UAAL;AAXoB;AAYpB;;;;+BAEY;AAAA;;AACZC,UAAOC,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACvC,WAAKC,eAAL;AACA,IAFD;AAGA;;;oCAEiB;AAAA;;AACjB;AACA,OAAI,CAAC,KAAKL,aAAV,EAAyB;AACxB,SAAKA,aAAL,GAAqBM,WAAW,YAAM;AACrC,YAAKN,aAAL,GAAqB,IAArB;AACA,YAAKO,mBAAL;AACA;AACA,KAJoB,EAIlB,EAJkB,CAArB;AAKA;AACD;;;wCAEqB;AACrB,QAAKN,mBAAL;AACA;;;wCAEqB;AACrB;AACA,OAAMO,YAAY,KAAKC,iBAAL,EAAlB;AACA;AACA;AACA,OAAI,KAAKC,GAAL,CAASC,UAAb,EAAyB;AACxB,SAAKD,GAAL,CAASC,UAAT,CAAoBC,KAApB,CAA0BC,MAA1B,GAAoCL,YAAY,KAAKX,EAAL,CAAQiB,YAApB,GAAmC,KAAKf,cAAzC,GAA2D,IAA9F;AACA;AACD;;;sCAEmB;AACnB,OAAIJ,UAAU,KAAKE,EAAnB;AACA,OAAIkB,WAAW,CAAf;AACA,OAAIpB,QAAQqB,YAAZ,EAA0B;AACzB,OAAG;AACFD,iBAAYpB,QAAQa,SAApB;AACA,SAAIb,QAAQqB,YAAR,CAAqBC,SAArB,CAA+BC,QAA/B,CAAwC,QAAxC,CAAJ,EAAuD;AACtDvB,gBAAU,IAAV,CADsD,CACtC;AAChB,MAFD,MAEOA,UAAUA,QAAQqB,YAAlB;AACP,KALD,QAKSrB,OALT;AAMA;AACD,UAAOoB,YAAY,CAAZ,GAAgBA,QAAhB,GAA2B,CAAlC;AACA;;;;EA1DsCI,c;;kBAAnBzB,U","file":"18-d66793fe.pkg.js","sourcesContent":["import BaseFeature from '../../foundation/base/base';\r\n\r\nexport default class HeroBanner extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\t\tthis.initDomCache();\r\n\t\tthis.el = element;\r\n\t\t// This component has a background that should be set to a specific height.\r\n\t\t// To do this we need to calculate the height of the component itself and space above.\r\n\r\n\t\tthis.targetHeight = 400; // Target height of background\r\n\t\tthis.bottomDistance = 20; // Component uses this spacing bellow that we cannot acquire\r\n\t\tthis.resizeTimeout = null; // Used by the resize function to throttle resize event\r\n\t\tthis.setBackgroundHeight();\r\n\t\tthis.initEvents();\r\n\t}\r\n\r\n\tinitEvents() {\r\n\t\twindow.addEventListener('resize', () => {\r\n\t\t\tthis.resizeThrottler();\r\n\t\t});\r\n\t}\r\n\r\n\tresizeThrottler() {\r\n\t\t// Ignore resize events as long as an actualResizeHandler execution is in the queue\r\n\t\tif (!this.resizeTimeout) {\r\n\t\t\tthis.resizeTimeout = setTimeout(() => {\r\n\t\t\t\tthis.resizeTimeout = null;\r\n\t\t\t\tthis.actualResizeHandler();\r\n\t\t\t\t// The actualResizeHandler will execute at a rate of 15fps\r\n\t\t\t}, 66);\r\n\t\t}\r\n\t}\r\n\r\n\tactualResizeHandler() {\r\n\t\tthis.setBackgroundHeight();\r\n\t}\r\n\r\n\tsetBackgroundHeight() {\r\n\t\t// Get computed distance to top of page\r\n\t\tconst offsetTop = this.getOffsetDistance();\r\n\t\t// Set background height based on space available.\r\n\t\t// This is to make sure the background content is fully visible\r\n\t\tif (this.dom.background) {\r\n\t\t\tthis.dom.background.style.height = (offsetTop + this.el.offsetHeight + this.bottomDistance) + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\tgetOffsetDistance() {\r\n\t\tlet element = this.el;\r\n\t\tlet location = 0;\r\n\t\tif (element.offsetParent) {\r\n\t\t\tdo {\r\n\t\t\t\tlocation += element.offsetTop;\r\n\t\t\t\tif (element.offsetParent.classList.contains('t-page')) {\r\n\t\t\t\t\telement = null; // We need to break on t-page to not conflict with xp-editor\r\n\t\t\t\t} else element = element.offsetParent;\r\n\t\t\t} while (element);\r\n\t\t}\r\n\t\treturn location >= 0 ? location : 0;\r\n\t}\r\n}\r\n"],"sourceRoot":""}