{"version":3,"file":"./modules/PromoCode.xxxxxxxx.js","mappings":"mKAGA,MAAMA,EAAiB,4BAER,MAAMC,WAA8B,OAAkB,YACjE,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAQC,IAAuBA,EAAKC,QAAQC,mBAAmBC,QAASC,IACpH,IAAIZ,EAAsBY,GAC1BA,EAAQH,QAAQC,kBAAoB,QAE5C,CAEA,WAAAG,CAAmBD,GACfE,MAAMF,GADS,KAAAA,QAAAA,EAGfG,KAAKC,2BACLD,KAAKE,WAAWC,iBAAiB,QAAS,IAAMH,KAAKI,sBACzD,CAEQ,wBAAAH,GACJD,KAAKK,UAAUC,KAAK,CAChB,MAAS,YACT,UAAa,CACT,UAAa,CACT,WAAc,CAAC,CACX,GAAMN,KAAKO,KACX,KAAQP,KAAKO,KACb,SAAYP,KAAKK,UAAU,GAAKL,KAAKK,UAAU,GAAGG,SAAW,GAC7D,SAAY,kBAKhC,CAEQ,mBAAAJ,GACJJ,KAAKK,UAAUC,KAAK,CAChBG,MAAO,aACPC,UAAW,CACPC,WAAY,CACRC,WAAY,CAAC,CACTC,GAAIb,KAAKO,KACTO,KAAMd,KAAKO,KACXQ,SAAUf,KAAKK,UAAYL,KAAKK,UAAU,GAAGG,SAAW,GACxDQ,SAAU,kBAK9B,EAiBA/B,EAAsBC,MAAMF,E,gDCjEjB,MAAMiC,EAIjB,YAAO/B,CAAMC,EANM,6BAOfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAQC,IAAuBA,EAAKC,QAAQC,mBAAmBC,QAASC,IACpH,IAAIoB,EAAUpB,GACdA,EAAQH,QAAQC,kBAAoB,QAE5C,CAEA,WAAAG,CAAmBD,GAAA,KAAAA,QAAAA,EACfG,KAAKE,WAAaF,KAAKH,QAAQqB,cAAc,0BAC7ClB,KAAKmB,UAAYnB,KAAKH,QAAQqB,cAAc,wBAC5ClB,KAAKO,KAAOP,KAAKH,QAAQuB,aAAa,mBACtCpB,KAAKqB,eAELrB,KAAKE,WAAWC,iBAAiB,QAAS,IAAMH,KAAKsB,sBACrDhC,SAASiC,KAAKC,OAAS,IAAMxB,KAAKyB,mBAEtC,CAEQ,kBAAAH,GACJI,UAAUC,UAAUC,UAAU5B,KAAKH,QAAQuB,aAAa,oBACxDpB,KAAK6B,iBACT,CAEQ,YAAAR,GACJK,UAAUC,UAAUG,WACfC,KAAKC,GAAYhC,KAAKO,MAAQyB,EAAWhC,KAAK6B,kBAAoB,KAC3E,CAEQ,eAAAA,GACJ7B,KAAKH,QAAQoC,UAAUC,IAAI,yBAC3BlC,KAAKmC,eACT,CAEQ,iBAAAV,GACJzB,KAAKH,QAAQoC,UAAUG,OAAO,yBAC9BpC,KAAKqC,cACT,CAEQ,YAAAA,GACJrC,KAAKmB,UAAUmB,UAAYtC,KAAKH,QAAQuB,aAAa,+BACzD,CAEQ,aAAAe,GACJnC,KAAKmB,UAAUmB,UAAY,GAAGtC,KAAKH,QAAQuB,aAAa,y7BAQ5D,E,gDCxDJ,Q,SAAwB,O","sources":["webpack:///./modules/PromoCode/PromoCodeWithT.ts","webpack:///./modules/PromoCode/PromoCode.ts","webpack:///./modules/PromoCode/index.ts"],"sourcesContent":["import PromoCode from \"./PromoCode\";\r\nimport ClassWithTracking from \"../../ClassWithTracking\";\r\n\r\nconst moduleSelector = '[data-module=\"PromoCode\"]';\r\n\r\nexport default class PromoCodeWithTracking extends ClassWithTracking(PromoCode) {\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new PromoCodeWithTracking(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n super(element);\r\n\r\n this.trackPromoCodeImpression();\r\n this.codeHolder.addEventListener(\"click\", () => this.trackPromoCodeClick());\r\n }\r\n\r\n private trackPromoCodeImpression() {\r\n this.dataLayer.push({\r\n 'event': 'promoView',\r\n 'ecommerce': {\r\n 'promoView': {\r\n 'promotions': [{\r\n 'id': this.code,\r\n 'name': this.code,\r\n 'creative': this.dataLayer[0] ? this.dataLayer[0].template : ``,\r\n 'position': 'Promo Code'\r\n }]\r\n }\r\n }\r\n });\r\n }\r\n\r\n private trackPromoCodeClick() {\r\n this.dataLayer.push({\r\n event: 'promoClick',\r\n ecommerce: {\r\n promoClick: {\r\n promotions: [{\r\n id: this.code,\r\n name: this.code,\r\n creative: this.dataLayer ? this.dataLayer[0].template : ``,\r\n position: \"Promo Code\"\r\n }]\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n PromoCodeWithTracking.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n PromoCodeWithTracking.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n PromoCodeWithTracking.setup(moduleSelector);\r\n}","const moduleSelector = '[data-module=\"PromoCode\"]';\r\n\r\nexport default class PromoCode {\r\n codeHolder: HTMLElement;\r\n promoText: HTMLElement;\r\n code: string;\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new PromoCode(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.codeHolder = this.element.querySelector(\".nx-promo-code__holder\");\r\n this.promoText = this.element.querySelector('.nx-promo-code__text');\r\n this.code = this.element.getAttribute('data-promo-code');\r\n this.isCodeCopied();\r\n \r\n this.codeHolder.addEventListener('click', () => this.copyDivToClipboard());\r\n document.body.oncopy = () => this.unsetCodeAsCopied();\r\n\r\n }\r\n\r\n private copyDivToClipboard() {\r\n navigator.clipboard.writeText(this.element.getAttribute('data-promo-code'));\r\n this.setCodeAsCopied();\r\n }\r\n\r\n private isCodeCopied() {\r\n navigator.clipboard.readText()\r\n .then(clipText => this.code == clipText ? this.setCodeAsCopied() : null);\r\n }\r\n\r\n private setCodeAsCopied() {\r\n this.element.classList.add(\"nx-promo-code--copied\");\r\n this.setCopiedText();\r\n }\r\n\r\n private unsetCodeAsCopied() {\r\n this.element.classList.remove(\"nx-promo-code--copied\");\r\n this.setPromoText();\r\n }\r\n\r\n private setPromoText() {\r\n this.promoText.innerHTML = this.element.getAttribute('data-promo-code-default-text')\r\n }\r\n\r\n private setCopiedText() {\r\n this.promoText.innerHTML = `${this.element.getAttribute('data-promo-code-after-click-text')} \r\n \r\n \r\n ok\r\n \r\n \r\n \r\n `\r\n }\r\n}","import PromoCode from \"./PromoCodeWithT\";\r\nexport default PromoCode;"],"names":["moduleSelector","PromoCodeWithTracking","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","super","this","trackPromoCodeImpression","codeHolder","addEventListener","trackPromoCodeClick","dataLayer","push","code","template","event","ecommerce","promoClick","promotions","id","name","creative","position","PromoCode","querySelector","promoText","getAttribute","isCodeCopied","copyDivToClipboard","body","oncopy","unsetCodeAsCopied","navigator","clipboard","writeText","setCodeAsCopied","readText","then","clipText","classList","add","setCopiedText","remove","setPromoText","innerHTML"],"sourceRoot":""}