{"version":3,"sources":["webpack:///./src/client/default/js/components/headerComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/utilities/URLDecoder.js","webpack:///./src/client/default/js/utilities/dataLayerUtils.js"],"names":["HeaderComponent","element","handlePostMessage","$topPage","topBar","document","createElement","setAttribute","SELECTORS","topPage","body","insertBefore","childNodes","handleScrollHeader","handleNavClick","main","externalMain","logoutBtn","collapsed","this","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","onBreakpointChange","_topBar","$el","querySelector","_topPage","_main","undefined","addEventListener","event","window","webkit","messageHandlers","cordova_iab","postMessage","JSON","stringify","action","flag","classList","CLASSES","setTopBarHeight","IntersectionObserver","entries","checkHeaderPosition","intersectionRatio","threshold","observe","style","setProperty","$topBar","offsetHeight","Array","from","$main","children","forEach","headerElement","type","className","includes","getElementsByTagName","singleLink","$on","e","isPayback","target","parentElement","contains","link","area","url","href","text","innerText","sendNavEventToDataLayer","BaseComponent","_componentElement","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","optionValue","cleanEntry","cleanOptionKey","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","EMIT","LOADER_EVENTS","show","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","getPathName","pathName","dontUseCustomPathName","list","urlPathNameTable","split","urlPathNameOrSandbox","length","value","toString","endsWith","indexOf","replaceAll","parsePathName","getCustomPathName","console","log","sendAddOrRemoveProductToDataLayer","eventName","productImpressions","price","breadcrumbs","promotionInfo","dataLayer","dataLayerObj","ecommerce","items","item_id","id","item_name","name","item_brand","brand","promotion_name","quantity","item_type","dimension53","appendItemCategories","appendPriceAndDiscount","appendListIdAndName","cardSize","appendCardSize","push","sendProductClickEventToDataLayer","productToPush","currencycode","event_category","event_action","event_label","product_name","currencyCode","click","actionField","products","sendSelectItemEventToDataLayer","product","tileIndex","productName","qtyincart","index","itemType","item_list_id","sendSelectPromotionEventToDataLayer","promotion_id","creative_name","location_id","sales","sendAddShippingInfoToDataLayer","shippingMethod","shipping_tier","getSelectedShippingMethodID","map","isInternal","depth","sendErrorEventToDataLayer","errorLocation","error_name","error_location","event_detail","sendFormInvalidEventToDataLayer","formValidityObj","formId","eventDetail","detail","errors","inputField","join","method","item_category","htmlValue","item_category2","item_category3","item_category4","discount","toFixed","itemListName","location","pathname","item_list_name","size"],"mappings":"0rBAIqBA,E,gCAuBnB,WAAYC,GAAS,MAGnB,GAHmB,aACnB,cAAMA,IACDC,qBACA,EAAKC,SAAU,CAClB,IAAMC,EAASC,SAASC,cAAc,OACtCF,EAAOG,aAAa,KAAM,EAAKC,UAAUC,SACzCJ,SAASK,KAAKC,aAAaP,EAAQC,SAASK,KAAKE,WAAW,IAN3C,OAQnB,EAAKC,qBACL,EAAKC,iBATc,E,mCAtBrB,WACE,MAAO,CACLV,OAAQ,WACRK,QAAS,WACTM,KAAM,eACNC,aAAc,mBACdC,UAAW,+B,mBAIf,WACE,MAAO,CACLC,UAAW,e,oBAIf,WACE,cACGC,KAAKC,gBAAgBC,aAAaC,kBAAoBH,KAAKI,sB,mBAmBhE,WAEE,OADKJ,KAAKK,UAASL,KAAKK,QAAsCL,KAAKM,IAAIC,cAAcP,KAAKX,UAAUJ,SAC7Fe,KAAKK,U,oBAMd,WAEE,OADKL,KAAKQ,WAAUR,KAAKQ,SAAuCtB,SAASqB,cAAT,WAA2BP,KAAKX,UAAUC,WACnGU,KAAKQ,W,iBAMd,WAKE,OAJKR,KAAKS,QAAOT,KAAKS,MAAoCT,KAAKM,IAAIC,cAAcP,KAAKX,UAAUO,OAC9Ec,MAAdV,KAAKS,QACPT,KAAKS,MAAQT,KAAKM,IAAIC,cAAcP,KAAKX,UAAUQ,eAE9CG,KAAKS,Q,+BAGd,WACE,IAAIX,EAAYZ,SAASqB,cAAcP,KAAKX,UAAUS,WAEtDA,WAAWa,iBAAiB,SAAS,SAACC,GAAU,MAC9C,UAAAC,OAAOC,cAAP,SAAeC,gBAAgBC,YAAYC,YAAYC,KAAKC,UAAU,CAAEC,OAAQ,iB,iCAIpF,SAAoBC,GAClBrB,KAAKM,IAAIgB,UAAUD,EAAO,MAAQ,UAAUrB,KAAKuB,QAAQxB,a,gCAG3D,WAAqB,WACdC,KAAKhB,WACVgB,KAAKwB,kBACU,IAAIC,sBACjB,SAACC,GACC,EAAKC,oBAAqD,IAAjCD,EAAQ,GAAGE,qBAEtC,CAAEC,UAAW,CAAC,EAAG,KAGVC,QAAQ9B,KAAKhB,a,gCAGxB,WACEgB,KAAKwB,oB,6BAGP,WACExB,KAAKM,IAAIyB,MAAMC,YAAY,mBAA3B,UAAkDhC,KAAKiC,SAAW,EAAIjC,KAAKiC,QAAQC,aAAe,EAAlG,S,4BAEF,WAAiB,YACfC,MAAMC,KAAKpC,KAAKqC,MAAM9B,cAAc,cAAc+B,UAAUC,SAAQ,SAACC,GACnE,IAAIC,EAAO,gBACPD,EAAcE,UAAUC,SAAS,eACnCF,EAAO,OACED,EAAcE,UAAUC,SAAS,gBAC1CF,EAAO,YAEYN,MAAMC,KAAKI,EAAcI,qBAAqB,MACpDL,SAAQ,SAACM,GACtB,EAAKC,IACH,SACA,SAASC,GACP,IAAIC,EAAYD,EAAEE,OAAOC,cAAc5B,UAAU6B,SAAS,kBAAoBJ,EAAEE,OAAOC,cAAc5B,UAAU6B,SAAS,kBACpHC,EAAO,CACTC,KAAM,SACNZ,KAAMO,EAAY,iBAAmBP,EACrCa,IAAKT,EAAWU,KAAOV,EAAWU,KAAO,GACzCC,KAAMX,EAAWY,UAAYZ,EAAWY,UAAY,GACpDT,UAAWA,GAEbU,YAAwBN,KAE1BP,SAIF7C,KAAKiC,UACcE,MAAMC,KAAKpC,KAAKiC,QAAQW,qBAAqB,MACnDL,SAAQ,SAACM,GACtB,EAAKC,IACH,SACA,SAASC,GACP,IAAIK,EAAO,CACTC,KAAM,UACNZ,KAAM,SACNa,IAAKT,EAAWU,KAAOV,EAAWU,KAAO,GACzCC,KAAMX,EAAWY,UAAYZ,EAAWY,UAAY,IAEtDC,YAAwBN,KAE1BP,U,GAvImCc,M,g1BCIxBA,E,gCAmCnB,WAAY7E,GAAS,0BACnB,cAAMA,IACD8E,kBAAoB9E,EACzB,EAAK8E,kBAAkBxE,aAAa,sBAAuB,QAC3D,EAAKyE,iBAJc,E,6BA/BrB,WACE,OAAmC7D,KAAnC,oB,oBAGF,WACE,IAAM8D,EAAc,GACdC,E,iWAAU,CAAH,GAAQ/D,KAAKM,IAAI0D,SAY9B,OAXuBC,OAAOC,KAAKH,GAASI,QAAO,SAACC,GAAD,OAAWA,EAAMzB,SAAS,aAC9DJ,SAAQ,SAAC6B,GACtB,IACIC,EADEC,EAAaX,EAAcY,eAAeH,GAG9CC,EADEN,EAAQK,GAAOzB,SAAS,MAAQoB,EAAQK,GAAOzB,SAAS,KAC5CzB,KAAKsD,MAAMT,EAAQK,GAAOK,QAAQ,KAAM,MAExCd,EAAce,YAAYX,EAAQK,IAElDN,EAAYQ,GAAcD,KAErBM,YAAWb,K,0BAGpB,WACE,OAAO9D,KAAKM,IAAIsE,aAAa,oB,iBAkD/B,SAAIC,EAAQC,GAAyC,IAArChG,EAAqC,uDAA3BkB,KAAKM,IAAKyE,EAAiB,uDAAN,KACxCjG,GAAY+F,GAAWC,IACvBC,EAMHC,IAAKC,GAAGnG,EAAS+F,EAAQE,GAAU,SAAChC,GAC9BA,GAAGA,EAAEmC,kBACTJ,EAAG/B,MAPLiC,IAAKC,GAAGnG,EAAS+F,GAAQ,SAAC9B,GACpBA,GAAGA,EAAEmC,kBACTJ,EAAG/B,S,kBAkBT,SAAK8B,EAAQC,GAAwB,IAApBhG,EAAoB,uDAAVkB,KAAKM,IAC9B0E,IAAKG,IAAIrG,EAAS+F,EAAQC,K,kBAU5B,SAAKD,GAA4B,IAApB/F,EAAoB,uDAAVkB,KAAKM,IAC1B0E,IAAKI,IAAItG,EAAS+F,K,mBAUpB,SAAMA,GAA4B,IAApB/F,EAAoB,uDAAVkB,KAAKM,IAC3B0E,IAAKK,KAAKvG,EAAS+F,K,qBAUrB,SAAQS,EAAWC,GACjBvF,KAAKwF,UAAW,EAChBxF,KAAKyF,KAAKzF,KAAKC,gBAAgByF,cAAcC,KAAM,CACjDL,UAAWA,GAAapG,SAASK,KACjCgG,QAASA,UAAW,S,wBAaxB,SAAWD,EAAWC,GAA8B,WAArBK,EAAqB,wDAANC,EAAM,uCAClD7F,KAAKwF,UAAW,EAChBM,YAAW,WACJ,EAAKN,UACR,EAAKC,KAAK,EAAKxF,gBAAgByF,cAAcK,KAAM,CACjDT,UAAWA,GAAapG,SAASK,KACjCgG,UACAK,QACAC,WAGH,Q,0BAtHL,SAAmBG,GACjB,IAAIC,EACJ,OAAQD,GACN,IAAK,QACHC,GAAe,EACf,MACF,IAAK,OACHA,GAAe,EACf,MACF,IAAK,OACHA,EAAe,KACf,MACF,QACEA,EAAeD,EAInB,OAAOC,I,4BAGT,SAAsBC,GACpB,IAAMC,EAAMD,EAAIzB,QAAQ,SAAU,IAClC,gBAAU0B,EAAIC,OAAO,GAAGC,qBAAxB,OAA8CF,EAAIG,MAAM,Q,SAhEjBC,I,iCCFpC,SAASC,EAAYC,EAAUC,GACpC,IAAIC,EAAiC,SAA1BD,EAAmCA,EAKhD,SAA2BD,GACzB,IAAIG,EAAmBH,EAASI,MAAM,KAClCC,EAA+C,MAAxBF,EAAiB,GAAa,YAAcA,EACvE,OAAsC,IAA/BA,EAAiB,GAAGG,OACvB,WACwB,MAAxBH,EAAiB,IAAsC,uBAAxBA,EAAiB,GAChD,eAIN,SAAuBI,GACrB,IAAIb,EAAMa,EAAMC,WAEZd,EAAIe,SAAS,OACff,EAAMA,EAAIG,MAAM,IAAK,IAEnBH,EAAIe,SAAS,WACff,EAAMA,EAAIG,MAAM,IAAK,IAEC,GAApBH,EAAIgB,QAAQ,OACdhB,EAAMA,EAAIG,MAAM,IAGlB,OAAOH,EAAIiB,WAAW,IAAK,KAhBvBC,CAAcP,GAZoDQ,CAAkBb,GAExF,OADAc,QAAQC,IAAI,oBAAsBb,GAC3BA,EATT,mC,iCCAA,+TAEWc,EAAoC,SAASC,EAAWC,EAAoBC,EAAOC,EAAaC,GACzG,GAAKJ,GAAcC,GAGf9G,OAAOkH,UAAW,CACpB,IAAIC,EAAe,CACjBpH,MAAO8G,EACPO,UAAW,CACTC,MAAO,CACL,CACEC,QAASR,EAAmBS,GAC5BC,UAAWV,EAAmBW,KAC9BC,WAAYZ,EAAmBa,MAC/BC,eAAgBX,GAAiBA,EAAcQ,KAAOR,EAAcQ,KAAO,GAC3EI,SAAUf,EAAmBe,UAAY,EACzCC,UAAWhB,EAAmBiB,gBAKlCf,GACFgB,EAAqBhB,EAAaG,EAAaC,UAAUC,MAAM,IAE7DN,GACFkB,EAAuBlB,EAAOI,EAAaC,UAAUC,MAAM,IAE7Da,EAAoBf,EAAaC,UAAUC,MAAM,IAC7CP,EAAmBqB,UACrBC,EAAetB,EAAmBqB,SAAUhB,EAAaC,UAAUC,MAAM,IAE3ErH,OAAOkH,UAAUmB,KAAKlB,KAIfmB,EAAmC,SAASC,EAAeC,EAAc1C,GAC7E9F,OAAOkH,WACZlH,OAAOkH,UAAUmB,KAAK,CACpBtI,MAAO,gBACP0I,eAAgB,YAChBC,aAAc,gBACdC,YAAaJ,EAAcK,aAC3BxB,UAAW,CACTyB,aAAcL,EACdM,MAAO,CACLC,YAAa,CACXjD,KAAMA,GAERkD,SAAU,CAACT,QAMRU,EAAiC,SAASC,EAASlC,EAAamC,GACzE,GAAKnJ,OAAOkH,UAAZ,CACA,IAAIC,EAAe,CACjBpH,MAAO,cACPqH,UAAW,CACTC,MAAO,CACL,CACEC,QAAS4B,EAAQ3B,GACjBC,UAAW0B,EAAQE,YACnBxB,eAAgBsB,EAAQjC,eAAiBiC,EAAQjC,cAAcQ,KAAOyB,EAAQjC,cAAcQ,KAAO,GACnGC,WAAYwB,EAAQvB,MACpBE,SAAUqB,EAAQG,UAClBC,MAAOH,EACPrB,UAAWoB,EAAQK,aAKvBL,EAAQf,WACVhB,EAAaC,UAAUC,MAAM,GAAGmC,aAAeN,EAAQf,UAErDnB,GACFgB,EAAqBhB,EAAaG,EAAaC,UAAUC,MAAM,IAE7D6B,EAAQnC,OACVkB,EAAuBiB,EAAQnC,MAAOI,EAAaC,UAAUC,MAAM,IAErEa,EAAoBf,EAAaC,UAAUC,MAAM,IACjDrH,OAAOkH,UAAUmB,KAAKlB,KAGbsC,EAAsC,SAASP,GACxD,GAAKlJ,OAAOkH,YACPgC,EAAQjC,eAAiBiC,EAAQjC,cAAcQ,MAAUyB,EAAQnC,OAASmC,EAAQnC,MAAMjB,MAAQoD,EAAQnC,MAAMjB,MAAO,CACxH,IAAIqB,EAAe,CACjBpH,MAAO,mBACPqH,UAAW,CACTC,MAAO,CACL,CACEC,QAAS4B,EAAQ3B,GACjBC,UAAW0B,EAAQE,YACnBxB,eAAgBsB,EAAQjC,eAAiBiC,EAAQjC,cAAcQ,KAAOyB,EAAQjC,cAAcQ,KAAO,GACnGiC,aAAcR,EAAQjC,eAAiBiC,EAAQjC,cAAcM,GAAK2B,EAAQjC,cAAcM,GAAK2B,EAAQjC,cAAcQ,KAAOyB,EAAQjC,cAAcQ,KAAO,GACvJkC,cAAe,eACfC,YAAa,kBACb7C,MAAOmC,EAAQnC,MAAM8C,MAAM1D,MAC3B2B,UAAWoB,EAAQK,aAK3BvJ,OAAOkH,UAAUmB,KAAKlB,KAef2C,EAAiC,SAASd,EAAUe,GACzD/J,OAAOkH,WACTlH,OAAOkH,UAAUmB,KAAK,CACpBtI,MAAO,oBACPqH,UAAW,CACT4C,cAAeC,EAA4BF,GAC3C1C,MAAO2B,EAASkB,KAAI,SAAChB,GACnB,IAAIlC,EAAckC,EAAQlC,YACtBG,EAAe,CACjBG,QAAS4B,EAAQ3B,GACjBC,UAAW0B,EAAQE,YACnB1B,WAAYwB,EAAQvB,MACpBE,SAAUqB,EAAQG,UAClBvB,UAAWoB,EAAQK,UAIrB,OAFAvB,EAAqBhB,EAAaG,GAClCc,EAAuBiB,EAAQnC,MAAOI,GAC/BA,SAONtE,EAA0B,SAASN,GAC5C,GAAKvC,OAAOkH,UAAZ,CACA,IAAIiD,GAAc5H,EAAKE,KAAOF,EAAKE,IAAIX,SAAS,qBAAuBS,EAAKE,IAAIX,SAAS,iBACzF9B,OAAOkH,UAAUmB,KAAK,CACpBtI,MAAOwC,EAAKJ,UAAY,eAAiB,YACzCK,KAAMD,EAAKC,KACXZ,KAAMW,EAAKX,KACXrB,OAAQ4J,EAAa,oBAAsB,WAC3CC,MAAO,UACPzH,KAAMJ,EAAKI,SAGJ0H,EAA4B,SAASC,EAAevF,GACzD/E,OAAOkH,WACTlH,OAAOkH,UAAUmB,KAAK,CACpBtI,MAAO,QACPwK,WAAYxF,EACZyF,eAAgBF,EAChBG,aAAc1F,KAKT2F,EAAkC,SAASC,EAAiBC,GACrE,GAAI5K,OAAOkH,UAAW,CACpB,IAAI2D,EAAc,GACdF,GAAmBA,EAAgBG,QAAUH,EAAgBG,OAAOC,SACtEF,EAAcF,EAAgBG,OAAOC,OAAOb,KAAI,SAACc,GAC/C,OAAOA,EAAWzD,OAGtBvH,OAAOkH,UAAUmB,KAAK,CACpBtI,MAAO,QACPwK,WAAY,mBACZC,eAAgBI,IAAkBD,GAAmBA,EAAgBvI,QAAUuI,EAAgBvI,OAAOmF,GAAKoD,EAAgBvI,OAAOmF,GAAK,QACvIkD,aAAcI,EAAYI,KAAK,SAKjChB,EAA8B,SAASiB,GACzC,OAAQA,GACN,IAAK,kBACH,MAAO,oBACT,IAAK,QACH,MAAO,0BACT,IAAK,kBACH,MAAO,yBACT,IAAK,WAEL,IAAK,oBACH,MAAO,yBAET,QACE,OAAO,OAITlD,EAAuB,SAAShB,EAAaG,GAC/CA,EAAagE,cAAgBnE,GAAeA,EAAYd,OAAS,EAAIc,EAAY,GAAGoE,UAAUxH,QAAQ,KAAM,KAAO,GACnHuD,EAAakE,eAAiBrE,GAAeA,EAAYd,OAAS,EAAIc,EAAY,GAAGoE,UAAUxH,QAAQ,KAAM,KAAO,GACpHuD,EAAamE,eAAiBtE,GAAeA,EAAYd,OAAS,EAAIc,EAAY,GAAGoE,UAAUxH,QAAQ,KAAM,KAAO,GACpHuD,EAAaoE,eAAiBvE,GAAeA,EAAYd,OAAS,EAAIc,EAAY,GAAGoE,UAAUxH,QAAQ,KAAM,KAAO,IAGlHqE,EAAyB,SAASlB,EAAOI,GAC3CA,EAAaqE,SAAWzE,EAAMjB,MAAQiB,EAAMjB,KAAKK,OAASY,EAAMjB,KAAKK,MAAQY,EAAM8C,MAAM1D,OAAOsF,QAAQ,GAAK,GAC7GtE,EAAaJ,MAAQA,EAAM8C,MAAM1D,OAG/B+B,EAAsB,SAASf,GACjC,IAAIuE,EAEFA,EADErN,SAASsN,SAASC,SAAStF,QAAQ,YAAc,EACpC,eACNa,EAAaqC,aACP7D,YAAYtH,SAASsN,SAASC,UAAU,GAASzE,EAAaqC,aAE9D7D,YAAYtH,SAASsN,SAASC,UAAU,GAErDvN,SAASqB,cAAc,2CACzByH,EAAaqC,aAAe,YAC5BrC,EAAa0E,eAAiB,aACrBxN,SAASqB,cAAc,yBAChCyH,EAAaqC,aAAe,iBAC5BrC,EAAa0E,eAAiB,mBAE9B1E,EAAaqC,aAAekC,EAC5BvE,EAAa0E,eAAiBH,IAIvBtD,EAAiB,SAAS0D,EAAM3E,GACzC,IAAIuE,EACA9F,EAAWD,YAAYtH,SAASsN,SAASC,UAAU,GAMvD,GAJEF,EADW,eAATI,EACalG,EAAW,eAEXA,EAAW,gBAExBuB,EAIF,OAAOuE,EAHPvE,EAAaqC,aAAekC,EAC5BvE,EAAa0E,eAAiBH","file":"js/component-headerComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport 'intersection-observer';\nimport { sendNavEventToDataLayer } from '../utilities/dataLayerUtils';\n\nexport default class HeaderComponent extends BaseComponent {\n  get SELECTORS() {\n    return {\n      topBar: '.top-bar',\n      topPage: 'top-page',\n      main: '.header-main',\n      externalMain: '.header-external',\n      logoutBtn: '.header-my-account-bottom'\n    };\n  }\n\n  get CLASSES() {\n    return {\n      collapsed: 'collapsed'\n    };\n  }\n\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.onBreakpointChange\n    };\n  }\n\n  constructor(element) {\n    super(element);\n    this.handlePostMessage();\n    if (!this.$topPage) {\n      const topBar = document.createElement('div');\n      topBar.setAttribute('id', this.SELECTORS.topPage);\n      document.body.insertBefore(topBar, document.body.childNodes[0]);\n    }\n    this.handleScrollHeader();\n    this.handleNavClick();\n  }\n\n  /**\n   * @returns {HTMLElement | undefined}\n   */\n  get $topBar() {\n    if (!this._topBar) this._topBar = /** @type {HTMLElement} */ (this.$el.querySelector(this.SELECTORS.topBar));\n    return this._topBar;\n  }\n\n  /**\n   * @returns {HTMLElement | undefined}\n   */\n  get $topPage() {\n    if (!this._topPage) this._topPage = /** @type {HTMLElement} */ (document.querySelector(`#${this.SELECTORS.topPage}`));\n    return this._topPage;\n  }\n\n  /**\n   * @returns {HTMLElement | undefined}\n   */\n  get $main() {\n    if (!this._main) this._main = /** @type {HTMLElement} */ (this.$el.querySelector(this.SELECTORS.main));\n    if (this._main == undefined) {\n      this._main = this.$el.querySelector(this.SELECTORS.externalMain);\n    }\n    return this._main;\n  }\n\n  handlePostMessage() {\n    let logoutBtn = document.querySelector(this.SELECTORS.logoutBtn);\n\n    logoutBtn?.addEventListener('click', (event) => {\n      window.webkit?.messageHandlers.cordova_iab.postMessage(JSON.stringify({ action: 'LOGOUT' }));\n    });\n  }\n\n  checkHeaderPosition(flag) {\n    this.$el.classList[flag ? 'add' : 'remove'](this.CLASSES.collapsed);\n  }\n\n  handleScrollHeader() {\n    if (!this.$topPage) return;\n    this.setTopBarHeight();\n    var observer = new IntersectionObserver(\n      (entries) => {\n        this.checkHeaderPosition(entries[0].intersectionRatio === 0);\n      },\n      { threshold: [0, 1] }\n    );\n\n    observer.observe(this.$topPage);\n  }\n\n  onBreakpointChange() {\n    this.setTopBarHeight();\n  }\n\n  setTopBarHeight() {\n    this.$el.style.setProperty('--top-bar-height', `${this.$topBar ? -1 * this.$topBar.offsetHeight : 0}px`);\n  }\n  handleNavClick() {\n    Array.from(this.$main.querySelector('.container').children).forEach((headerElement) => {\n      let type = 'right_section';\n      if (headerElement.className.includes('header-logo')) {\n        type = 'logo';\n      } else if (headerElement.className.includes('navigation')) {\n        type = 'main_nav';\n      }\n      let allSingleLinks = Array.from(headerElement.getElementsByTagName('a'));\n      allSingleLinks.forEach((singleLink) => {\n        this.$on(\n          'click',\n          function(e) {\n            var isPayback = e.target.parentElement.classList.contains('payback__text') || e.target.parentElement.classList.contains('payback__badge');\n            let link = {\n              area: 'header',\n              type: isPayback ? 'generic_button' : type,\n              url: singleLink.href ? singleLink.href : '',\n              text: singleLink.innerText ? singleLink.innerText : '',\n              isPayback: isPayback\n            };\n            sendNavEventToDataLayer(link);\n          },\n          singleLink\n        );\n      });\n    });\n    if (this.$topBar) {\n      let allTopBarLinks = Array.from(this.$topBar.getElementsByTagName('a'));\n      allTopBarLinks.forEach((singleLink) => {\n        this.$on(\n          'click',\n          function(e) {\n            let link = {\n              area: 'top_bar',\n              type: 'portal',\n              url: singleLink.href ? singleLink.href : '',\n              text: singleLink.innerText ? singleLink.innerText : ''\n            };\n            sendNavEventToDataLayer(link);\n          },\n          singleLink\n        );\n      });\n    }\n  }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n  /**\n   * @returns {HTMLElement}\n   */\n  get $el() {\n    return /** @type {HTMLElement} */ (this._componentElement);\n  }\n\n  get $options() {\n    const compOptions = {};\n    const options = { ...this.$el.dataset };\n    const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n    optionsEntires.forEach((entry) => {\n      const cleanEntry = BaseComponent.cleanOptionKey(entry);\n      let optionValue;\n      if (options[entry].includes('{') && options[entry].includes('}')) {\n        optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n      } else {\n        optionValue = BaseComponent.convertType(options[entry]);\n      }\n      compOptions[cleanEntry] = optionValue;\n    });\n    return deepFreeze(compOptions);\n  }\n\n  get COMPONENT_NAME() {\n    return this.$el.getAttribute('data-component');\n  }\n\n  /**\n   *\n   * constructor\n   *\n   * @param {Element} element\n   */\n  constructor(element) {\n    super(element);\n    this._componentElement = element;\n    this._componentElement.setAttribute('data-component-init', 'true');\n    this._checkMessages();\n  }\n\n  static convertType(option) {\n    let optionReturn;\n    switch (option) {\n      case 'false':\n        optionReturn = false;\n        break;\n      case 'true':\n        optionReturn = true;\n        break;\n      case 'null':\n        optionReturn = null;\n        break;\n      default:\n        optionReturn = option;\n        break;\n    }\n\n    return optionReturn;\n  }\n\n  static cleanOptionKey(key) {\n    const str = key.replace('option', '');\n    return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n  }\n\n  /**\n   *\n   * $on\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   * @param {Array|String|Element} [elements = null]\n   */\n  $on(events, cb, element = this.$el, elements = null) {\n    if (!element || !events || !cb) return;\n    if (!elements) {\n      Bean.on(element, events, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    } else {\n      Bean.on(element, events, elements, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    }\n  }\n\n  /**\n   *\n   * $one\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   */\n  $one(events, cb, element = this.$el) {\n    Bean.one(element, events, cb);\n  }\n\n  /**\n   *\n   * $off\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $off(events, element = this.$el) {\n    Bean.off(element, events);\n  }\n\n  /**\n   *\n   * $fire\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $fire(events, element = this.$el) {\n    Bean.fire(element, events);\n  }\n\n  /**\n   *\n   * Activate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   */\n  loading(container, message) {\n    this._loading = true;\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n      container: container || document.body,\n      message: message ?? null\n    });\n  }\n\n  /**\n   *\n   * Deactivate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   * @param {Boolean} [error=false]\n   * @param {String} [icon]\n   */\n  endLoading(container, message, error = false, icon) {\n    this._loading = false;\n    setTimeout(() => {\n      if (!this._loading) {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n          container: container || document.body,\n          message,\n          error,\n          icon\n        });\n      }\n    }, 400);\n  }\n}\n","/**\n * @property {string} pathName\n * @property {boolean} dontUseCustomPathName\n *\n * @returns {string}\n */\nexport function getPathName(pathName, dontUseCustomPathName) {\n  let list = dontUseCustomPathName === 'true' ? dontUseCustomPathName : getCustomPathName(pathName);\n  console.log('URLDecoder list: ' + list);\n  return list;\n}\n\nfunction getCustomPathName(pathName) {\n  let urlPathNameTable = pathName.split('/');\n  let urlPathNameOrSandbox = urlPathNameTable[1] === 's' ? 'isSandbox' : urlPathNameTable;\n  return urlPathNameTable[1].length === 0\n    ? 'homepage'\n    : urlPathNameTable[1] === 'p' || urlPathNameTable[1] === 'dettaglio-prodotto'\n    ? 'product-page'\n    : parsePathName(urlPathNameOrSandbox);\n}\n\nfunction parsePathName(value) {\n  let str = value.toString();\n\n  if (str.endsWith(',')) {\n    str = str.slice('', -1);\n  }\n  if (str.endsWith('.html')) {\n    str = str.slice('', -5);\n  }\n  if (str.indexOf(',') == 0) {\n    str = str.slice(1);\n  }\n\n  return str.replaceAll(',', '/');\n}\n","import { getPathName } from '../utilities/URLDecoder';\n\nexport var sendAddOrRemoveProductToDataLayer = function(eventName, productImpressions, price, breadcrumbs, promotionInfo) {\n  if (!eventName || !productImpressions) {\n    return;\n  }\n  if (window.dataLayer) {\n    let dataLayerObj = {\n      event: eventName,\n      ecommerce: {\n        items: [\n          {\n            item_id: productImpressions.id,\n            item_name: productImpressions.name,\n            item_brand: productImpressions.brand,\n            promotion_name: promotionInfo && promotionInfo.name ? promotionInfo.name : '',\n            quantity: productImpressions.quantity || 1,\n            item_type: productImpressions.dimension53\n          }\n        ]\n      }\n    };\n    if (breadcrumbs) {\n      appendItemCategories(breadcrumbs, dataLayerObj.ecommerce.items[0]);\n    }\n    if (price) {\n      appendPriceAndDiscount(price, dataLayerObj.ecommerce.items[0]);\n    }\n    appendListIdAndName(dataLayerObj.ecommerce.items[0]);\n    if (productImpressions.cardSize) {\n      appendCardSize(productImpressions.cardSize, dataLayerObj.ecommerce.items[0]);\n    }\n    window.dataLayer.push(dataLayerObj);\n  }\n};\n\nexport var sendProductClickEventToDataLayer = function(productToPush, currencycode, list) {\n  if (!window.dataLayer) return;\n  window.dataLayer.push({\n    event: 'product click',\n    event_category: 'ecommerce',\n    event_action: 'Product Click',\n    event_label: productToPush.product_name,\n    ecommerce: {\n      currencyCode: currencycode,\n      click: {\n        actionField: {\n          list: list\n        },\n        products: [productToPush]\n      }\n    }\n  });\n};\n\nexport var sendSelectItemEventToDataLayer = function(product, breadcrumbs, tileIndex) {\n  if (!window.dataLayer) return;\n  let dataLayerObj = {\n    event: 'select_item',\n    ecommerce: {\n      items: [\n        {\n          item_id: product.id,\n          item_name: product.productName,\n          promotion_name: product.promotionInfo && product.promotionInfo.name ? product.promotionInfo.name : '',\n          item_brand: product.brand,\n          quantity: product.qtyincart,\n          index: tileIndex,\n          item_type: product.itemType\n        }\n      ]\n    }\n  };\n  if (product.cardSize) {\n    dataLayerObj.ecommerce.items[0].item_list_id = product.cardSize;\n  }\n  if (breadcrumbs) {\n    appendItemCategories(breadcrumbs, dataLayerObj.ecommerce.items[0]);\n  }\n  if (product.price) {\n    appendPriceAndDiscount(product.price, dataLayerObj.ecommerce.items[0]);\n  }\n  appendListIdAndName(dataLayerObj.ecommerce.items[0]);\n  window.dataLayer.push(dataLayerObj);\n};\n\nexport var sendSelectPromotionEventToDataLayer = function(product) {\n  if (!window.dataLayer) return;\n  if ((product.promotionInfo && product.promotionInfo.name) || (product.price && product.price.list && product.price.list)) {\n    let dataLayerObj = {\n      event: 'select_promotion',\n      ecommerce: {\n        items: [\n          {\n            item_id: product.id,\n            item_name: product.productName,\n            promotion_name: product.promotionInfo && product.promotionInfo.name ? product.promotionInfo.name : '',\n            promotion_id: product.promotionInfo && product.promotionInfo.id ? product.promotionInfo.id : product.promotionInfo.name ? product.promotionInfo.name : '',\n            creative_name: 'product card',\n            location_id: 'product listing',\n            price: product.price.sales.value,\n            item_type: product.itemType\n          }\n        ]\n      }\n    };\n    window.dataLayer.push(dataLayerObj);\n  }\n};\n\nexport var getItemListName = function(breadcrumbs) {\n  var itemListName = '';\n  for (let i = 0; i < breadcrumbs.length; i++) {\n    itemListName = itemListName + breadcrumbs[i].categoryId;\n    if (i + 1 !== breadcrumbs.length) {\n      itemListName = itemListName + '/';\n    }\n  }\n  return itemListName;\n};\n\nexport var sendAddShippingInfoToDataLayer = function(products, shippingMethod) {\n  if (window.dataLayer) {\n    window.dataLayer.push({\n      event: 'add_shipping_info',\n      ecommerce: {\n        shipping_tier: getSelectedShippingMethodID(shippingMethod),\n        items: products.map((product) => {\n          var breadcrumbs = product.breadcrumbs;\n          let dataLayerObj = {\n            item_id: product.id,\n            item_name: product.productName,\n            item_brand: product.brand,\n            quantity: product.qtyincart,\n            item_type: product.itemType\n          };\n          appendItemCategories(breadcrumbs, dataLayerObj);\n          appendPriceAndDiscount(product.price, dataLayerObj);\n          return dataLayerObj;\n        })\n      }\n    });\n  }\n};\n\nexport var sendNavEventToDataLayer = function(link) {\n  if (!window.dataLayer) return;\n  let isInternal = !link.url || link.url.includes('/s/carrefour-IT/') || link.url.includes('carrefour.it/');\n  window.dataLayer.push({\n    event: link.isPayback ? 'button_click' : 'nav_click',\n    area: link.area,\n    type: link.type,\n    action: isInternal ? 'redirect_internal' : 'outbound',\n    depth: 'level_0',\n    text: link.text\n  });\n};\nexport var sendErrorEventToDataLayer = function(errorLocation, error) {\n  if (window.dataLayer) {\n    window.dataLayer.push({\n      event: 'error',\n      error_name: error,\n      error_location: errorLocation,\n      event_detail: error\n    });\n  }\n};\n\nexport var sendFormInvalidEventToDataLayer = function(formValidityObj, formId) {\n  if (window.dataLayer) {\n    let eventDetail = [];\n    if (formValidityObj && formValidityObj.detail && formValidityObj.detail.errors) {\n      eventDetail = formValidityObj.detail.errors.map((inputField) => {\n        return inputField.id;\n      });\n    }\n    window.dataLayer.push({\n      event: 'error',\n      error_name: 'form_filed_error',\n      error_location: formId ? formId : formValidityObj && formValidityObj.target && formValidityObj.target.id ? formValidityObj.target.id : 'form',\n      event_detail: eventDetail.join('|')\n    });\n  }\n};\n\nvar getSelectedShippingMethodID = function(method) {\n  switch (method) {\n    case 'pickup_in_store':\n      return 'click_and_collect';\n    case 'drive':\n      return 'click_and_collect_drive';\n    case 'deliveryExpress':\n      return 'home_delivery_same_day';\n    case 'delivery':\n      return 'home_delivery_next_day';\n    case 'deliverySatellite':\n      return 'home_delivery_next_day';\n\n    default:\n      return null;\n  }\n};\n\nlet appendItemCategories = function(breadcrumbs, dataLayerObj) {\n  dataLayerObj.item_category = breadcrumbs && breadcrumbs.length > 1 ? breadcrumbs[1].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category2 = breadcrumbs && breadcrumbs.length > 2 ? breadcrumbs[2].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category3 = breadcrumbs && breadcrumbs.length > 3 ? breadcrumbs[3].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category4 = breadcrumbs && breadcrumbs.length > 4 ? breadcrumbs[4].htmlValue.replace(/`/g, \"'\") : '';\n};\n\nlet appendPriceAndDiscount = function(price, dataLayerObj) {\n  dataLayerObj.discount = price.list && price.list.value ? (price.list.value - price.sales.value).toFixed(2) : '';\n  dataLayerObj.price = price.sales.value;\n};\n\nlet appendListIdAndName = function(dataLayerObj) {\n  var itemListName;\n  if (document.location.pathname.indexOf('wishlist') > 0) {\n    itemListName = 'le_mie_liste';\n  } else if (dataLayerObj.item_list_id) {\n    itemListName = getPathName(document.location.pathname, false) + dataLayerObj.item_list_id;\n  } else {\n    itemListName = getPathName(document.location.pathname, false);\n  }\n  if (document.querySelector('.minicart-sidebar-wrapper.toggleActive')) {\n    dataLayerObj.item_list_id = 'mini-cart';\n    dataLayerObj.item_list_name = 'mini-cart';\n  } else if (document.querySelector('.zero-search-results')) {\n    dataLayerObj.item_list_id = 'searchresult_0';\n    dataLayerObj.item_list_name = 'searchresult_0';\n  } else {\n    dataLayerObj.item_list_id = itemListName;\n    dataLayerObj.item_list_name = itemListName;\n  }\n};\n\nexport var appendCardSize = function(size, dataLayerObj) {\n  var itemListName;\n  let pathName = getPathName(document.location.pathname, false);\n  if (size === 'Half Width') {\n    itemListName = pathName + '_card_single';\n  } else {\n    itemListName = pathName + '_card_double';\n  }\n  if (dataLayerObj) {\n    dataLayerObj.item_list_id = itemListName;\n    dataLayerObj.item_list_name = itemListName;\n  } else {\n    return itemListName;\n  }\n};\n"],"sourceRoot":""}