{"version":3,"sources":["webpack:///./modules/HotSpot.ts","webpack:///./modules/LayerBasic.ts","webpack:///./modules/LayerAdvance.ts","webpack:///./modules/LayerCircle.ts"],"names":["HotSpot","element","this","hotspotArea","image","querySelector","layer","_LayerCircle__WEBPACK_IMPORTED_MODULE_0__","document","body","imageWidth","dataset","imageHeight","closeText","closeTitle","hotspotData","innerHTML","contentArray","JSON","parse","init","setup","selector","Array","from","querySelectorAll","filter","node","moduleInitialized","forEach","prototype","Object","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_1__","createHotspots","setImageEventHandler","_this","addEventListener","hotspotObject","X","Y","__rest","hotSpotNode","responsiveHotspot","Color","HotspotDetail","hotspotDetail","layerContent","getLayerContent","adjustTransformOrigin","insertContent","open","onLayerOpen","classList","add","placeHotspot","x_pos","y_pos","color","hotSpotArea","hotspot","createElement","innerCircle","appendChild","setAttribute","style","left","top","className","xPos","yPos","xPercentage","yPercentage","details","Title","Copy","_a","Link","LinkTitle","Url","BasicLayer","options","__assign","getDefaultOptions","content","layerMainClass","createLayer","wrapper","closeBtn","close","layerModifierClasses","layerCloseIconClass","layerCloseBtnModifierClass","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","closeBtnWithBackground","animationDuration","parent","callback","dispatchEvent","CustomEvent","detail","layerNode","remove","removeCloseBtnModifierClass","lastContent","firstElementChild","closeBtnModifierClass","contains","getElement","spinnerClasses","opaqueSpinnerClasses","LayerAdvance","_super","call","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","__extends","defOptions","beforeOpen","__awaiter","__generator","window","Beiersdorf","initModules","sent","afterOpen","beforeClose","afterClose","defineProperty","showSpinner","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_2__","apply","__spread","isOpen","prevent","showSpinnerOpaque","_b","allow","_LayerBasic__WEBPACK_IMPORTED_MODULE_0__","LayerCircle","addFlyoutClick","addExpandBtnClick","adjustLandscapeMode","layerLandscapeModifierClass","expandBtnClass","expandLayerModifierClass","addCloseClick","target","toggle","innerHeight","adjustOptions","getBoundingClientRect","offsetHeight","styles","transform-origin","offsetWidth","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_2__","_LayerAdvance__WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"./modules/HotSpot.9dba09b4.js","sourcesContent":["import LayerCircle from './LayerCircle';\r\nimport { isImageLoaded, createElementFromString } from '../helpers/DOMHelpers';\r\n\r\nconst moduleSelector = '[data-module=\"HotSpot\"]';\r\n\r\nexport default class HotSpot {\r\n imageWidth: string;\r\n imageHeight: string;\r\n layer: LayerCircle;\r\n hotspotData: any;\r\n image: any;\r\n closeText: string;\r\n hotspotArea: HTMLElement;\r\n contentArray: any[];\r\n\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 HotSpot(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.hotspotArea = element;\r\n this.image = this.element.querySelector('img');\r\n this.layer = new LayerCircle(document.body);\r\n this.imageWidth = this.hotspotArea.dataset.imageWidth;\r\n this.imageHeight = this.hotspotArea.dataset.imageHeight;\r\n this.closeText = this.hotspotArea.dataset.closeTitle;\r\n this.hotspotData = this.hotspotArea.querySelector('.cw-hotspot-data').innerHTML;\r\n if (this.hotspotData) {\r\n this.contentArray = JSON.parse(this.hotspotData);\r\n }\r\n\r\n this.init();\r\n }\r\n\r\n protected init(): HotSpot {\r\n isImageLoaded(this.image) ? this.createHotspots() : this.setImageEventHandler();\r\n return this;\r\n }\r\n\r\n private setImageEventHandler(): HotSpot {\r\n this.image.addEventListener('load', () => this.createHotspots());\r\n return this;\r\n }\r\n\r\n private createHotspots(): HotSpot {\r\n if (this.contentArray) {\r\n this.contentArray.forEach(hotspotObject => {\r\n const { X, Y, ...hotspotData } = hotspotObject,\r\n hotSpotNode = this.responsiveHotspot(X, Y, this.imageWidth, this.imageHeight, hotspotData.Color);\r\n\r\n hotspotData.HotspotDetail.forEach(hotspotDetail => {\r\n const layerContent = this.getLayerContent(hotspotDetail, this.closeText);\r\n\r\n hotSpotNode.addEventListener('click',\r\n () =>\r\n this.layer\r\n .adjustTransformOrigin(hotSpotNode)\r\n .insertContent(createElementFromString((layerContent)))\r\n .open(() => {\r\n this.onLayerOpen(hotSpotNode, hotspotDetail);\r\n }));\r\n });\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n protected onLayerOpen(hotSpotNode, hotspotDetail): void {\r\n //window.Beiersdorf.initModules();\r\n hotSpotNode.classList.add(\"active\");\r\n }\r\n\r\n private placeHotspot(x_pos, y_pos, color = \"default-color\"): HTMLElement {\r\n let hotSpotArea = this.hotspotArea;\r\n let hotspot = document.createElement(\"div\");\r\n let innerCircle = document.createElement('span');\r\n\r\n hotspot.appendChild(innerCircle);\r\n\r\n hotspot.setAttribute(\"class\", \"cw-hotspot \" + color);\r\n hotspot.style.left = x_pos + '%';\r\n hotspot.style.top = y_pos + '%';\r\n\r\n innerCircle.className = 'cw-hotspot-btn cw-u-plus-minus-btn';\r\n\r\n hotSpotArea.appendChild(hotspot);\r\n\r\n return hotspot;\r\n }\r\n\r\n private responsiveHotspot(xPos, yPos, imageWidth, imageHeight, color): HTMLElement {\r\n let xPercentage = xPos / imageWidth * 100;\r\n let yPercentage = yPos / imageHeight * 100;\r\n\r\n return this.placeHotspot(xPercentage, yPercentage, color);\r\n }\r\n\r\n private getLayerContent(details: any, closeText:string): string {\r\n const { Title, Copy, Link: { Title: LinkTitle, Url: LinkUrl } } = details;\r\n const layerContent = `
\r\n
\r\n
\r\n ${closeText}\r\n
\r\n
\r\n
\r\n
\r\n

${Title}

\r\n
\r\n
${Copy}
\r\n ${LinkTitle}\r\n
\r\n
\r\n \r\n
\r\n
`;\r\n\r\n return layerContent;\r\n }\r\n}\r\n\r\nnew HotSpot.setup();","import {\r\n createElementFromString,\r\n} from '../helpers/DOMHelpers';\r\n\r\nimport { Optional } from '../typings/mapped-types';\r\n\r\nexport interface BasicLayerOptions {\r\n layerMainClass: string;\r\n layerCloseBtnModifierClass: string;\r\n layerCloseIconClass: string;\r\n layerModifierClasses: string;\r\n parent: HTMLElement;\r\n animationDuration: number;\r\n closeBtnWithBackground: string;\r\n}\r\n\r\nexport default class BasicLayer {\r\n protected element: HTMLElement;\r\n protected options: Optional;\r\n protected layer: HTMLElement;\r\n protected wrapper: HTMLElement;\r\n protected layerContent: HTMLElement;\r\n protected closeBtn: HTMLElement;\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n this.element = element;\r\n this.options = { ...this.getDefaultOptions(), ...options };\r\n }\r\n\r\n protected init(content: string = ''): BasicLayer {\r\n const { layerMainClass } = this.options;\r\n\r\n this.layer = this.createLayer(content);\r\n this.wrapper = this.layer.querySelector(`.${layerMainClass}__wrapper`);\r\n this.layerContent = this.layer.querySelector(`.${layerMainClass}__content`);\r\n this.closeBtn = this.layer.querySelector(`.${layerMainClass}__close-btn`);\r\n this.closeBtn.addEventListener('click', () => this.close());\r\n\r\n return this;\r\n }\r\n\r\n protected createLayer(content: string = ''): HTMLElement {\r\n const { layerMainClass, layerModifierClasses, layerCloseIconClass, layerCloseBtnModifierClass } = this.options;\r\n\r\n return createElementFromString(`\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
${content}
\r\n
\r\n
\r\n `);\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n return {\r\n layerMainClass: 'cw-layer',\r\n layerCloseIconClass: 'cw-close-icon cw-close-icon--blue',\r\n closeBtnWithBackground: 'cw-layer__close-btn--bg',\r\n layerModifierClasses: '',\r\n layerCloseBtnModifierClass: '',\r\n animationDuration: 400,\r\n parent: this.element,\r\n }\r\n }\r\n\r\n async open(callback: Callback = () => { }): Promise {\r\n const { parent } = this.options;\r\n parent.appendChild(this.layer);\r\n\r\n callback();\r\n }\r\n\r\n async close(callback: Callback = () => { }): Promise {\r\n document.dispatchEvent(new CustomEvent('CwCloseLayer', { detail: { layerNode: this.layer } }));\r\n this.layer.remove();\r\n this.removeCloseBtnModifierClass();\r\n callback();\r\n }\r\n\r\n insertContent(content: HTMLElement, callback: Callback = () => { }): BasicLayer {\r\n const lastContent = this.layerContent.firstElementChild;\r\n\r\n if (lastContent && lastContent !== content) {\r\n this.layerContent.innerHTML = '';\r\n }\r\n\r\n this.layerContent.appendChild(content);\r\n this.closeBtnModifierClass();\r\n\r\n callback();\r\n\r\n return this;\r\n }\r\n\r\n closeBtnModifierClass() {\r\n const { layerModifierClasses, closeBtnWithBackground } = this.options;\r\n\r\n if (layerModifierClasses == \"cw-layer--page\" && !(this.layer.querySelector('.cw-overlay__title')))\r\n this.closeBtn.classList.add(closeBtnWithBackground);\r\n }\r\n\r\n removeCloseBtnModifierClass() {\r\n const { closeBtnWithBackground } = this.options;\r\n if (this.closeBtn.classList.contains(closeBtnWithBackground))\r\n this.closeBtn.classList.remove(closeBtnWithBackground);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n}","import LayerBasic, { BasicLayerOptions } from './LayerBasic';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport {\r\n getOptions,\r\n requestAnimationFrameTimer,\r\n requestNextAnimationFrame,\r\n IOSScroll,\r\n} from '../helpers/helperFunctions';\r\nimport {\r\n addClass,\r\n addClasses,\r\n removeClasses,\r\n} from '../helpers/DOMHelpers';\r\n\r\nconst spinnerClasses = ['cw-u-spinner', 'cw-u-spinner--medium'];\r\nconst opaqueSpinnerClasses = ['cw-u-spinner', 'cw-u-spinner--medium', 'cw-u-spinner--opaque'];\r\n\r\nexport interface LayerAdvanceOptions extends BasicLayerOptions {\r\n beforeOpen: AsyncCallback;\r\n afterOpen: AsyncCallback;\r\n beforeClose: AsyncCallback;\r\n afterClose: AsyncCallback;\r\n}\r\n\r\nexport default class LayerAdvance extends LayerBasic {\r\n protected options: LayerAdvanceOptions;\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n\r\n this.options = getOptions(this.element, this.options);\r\n\r\n this.init();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--page`,\r\n layerCloseBtnModifierClass: `${defOptions.layerMainClass}__close-btn--page`,\r\n layerCloseIconClass: `${defOptions.layerCloseIconClass} cw-close-icon--thin`,\r\n beforeOpen: async () => { await window.Beiersdorf.initModules(); },\r\n afterOpen: async () => { },\r\n beforeClose: async () => { },\r\n afterClose: async () => { },\r\n };\r\n }\r\n\r\n protected get isOpen(): boolean {\r\n return document.body.contains(this.layer);\r\n }\r\n\r\n showSpinner(): LayerAdvance {\r\n addClasses(this.layer.querySelector('.cw-layer__wrapper'), ...spinnerClasses);\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n super.open();\r\n\r\n return this;\r\n }\r\n\r\n showSpinnerOpaque(): LayerAdvance {\r\n addClasses(this.layer.querySelector('.cw-layer__wrapper'), ...opaqueSpinnerClasses);\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n super.open();\r\n\r\n return this;\r\n }\r\n\r\n async open(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeOpen,\r\n afterOpen,\r\n } = this.options;\r\n\r\n await beforeOpen();\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n\r\n if (!this.layer.querySelector('.cw-u-spinner--opaque')) {\r\n removeClasses(this.layer.querySelector('.cw-layer__wrapper'), ...spinnerClasses);\r\n }\r\n\r\n super.open();\r\n requestNextAnimationFrame(() => this.layer.classList.add(`${layerMainClass}--open`));\r\n\r\n await afterOpen();\r\n\r\n callback();\r\n }\r\n\r\n async close(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeClose,\r\n afterClose,\r\n } = this.options;\r\n\r\n await beforeClose();\r\n\r\n addClass(this.layer, `${layerMainClass}--closing`);\r\n\r\n requestAnimationFrameTimer(() => {\r\n removeClasses(this.layer, `${layerMainClass}--open`, `${layerMainClass}--closing`);\r\n super.close();\r\n }, 400);\r\n\r\n if (document.body.classList.contains('cw-u-lock-screen') || document.body.classList.contains('cw-u-prevent-scroll'))\r\n IOSScroll.allow();\r\n\r\n await afterClose();\r\n\r\n callback();\r\n }\r\n}\r\n","import LayerAdvance, { LayerAdvanceOptions } from './LayerAdvance';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { objectToStyleString, hasClass, toggleClass } from '../helpers/DOMHelpers';\r\nimport { requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"LayerCircle\"]';\r\n\r\ninterface LayerCircleOptions extends LayerAdvanceOptions {\r\n expandBtnClass: string;\r\n expandLayerModifierClass: string;\r\n layerLandscapeModifierClass: string;\r\n}\r\n\r\nexport default class LayerCircle extends LayerAdvance {\r\n protected options: LayerCircleOptions;\r\n protected closeBtn: HTMLElement;\r\n\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 LayerCircle(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n this.addFlyoutClick()\r\n .addExpandBtnClick()\r\n .adjustLandscapeMode();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--circle`,\r\n layerCloseBtnModifierClass: 'cw-layer__close-btn--hide',\r\n layerCloseIconClass: '',\r\n layerLandscapeModifierClass: `${defOptions.layerMainClass}--landscape`,\r\n expandBtnClass: 'cw-expander__button',\r\n expandLayerModifierClass: `${defOptions.layerMainClass}--expand`,\r\n beforeOpen: async () => {\r\n await window.Beiersdorf.initModules();\r\n document.querySelector('body').classList.add('cw-u-lock-screen');\r\n },\r\n afterOpen: async () => {\r\n this.addCloseClick();\r\n },\r\n beforeClose: async () => {\r\n Array.from(this.element.querySelectorAll('.cw-hotspot')).forEach((element: HTMLElement) => {\r\n element.classList.remove(\"active\");\r\n });\r\n\r\n document.querySelector('body').classList.remove('cw-u-lock-screen');\r\n },\r\n afterClose: async () => {},\r\n };\r\n }\r\n\r\n protected addCloseClick(): LayerCircle {\r\n this.closeBtn = this.layer.querySelector('.cw-circle-layer-close');\r\n this.closeBtn.addEventListener('click', () => this.close());\r\n return this;\r\n }\r\n\r\n protected addFlyoutClick(): LayerCircle {\r\n this.layer.addEventListener('click', ({ target }) => target === this.layer && this.close());\r\n return this;\r\n }\r\n\r\n protected addExpandBtnClick(): LayerCircle {\r\n const { expandBtnClass, expandLayerModifierClass } = this.options;\r\n this.layer.addEventListener('click',\r\n ({ target }: Event) =>\r\n hasClass(target, expandBtnClass) && this.layer.classList.toggle(expandLayerModifierClass));\r\n return this;\r\n }\r\n\r\n protected adjustLandscapeMode(): LayerCircle {\r\n const { layerLandscapeModifierClass } = this.options;\r\n\r\n toggleClass(\r\n this.layer,\r\n layerLandscapeModifierClass,\r\n window.innerHeight < 528);\r\n\r\n return this;\r\n }\r\n\r\n adjustOptions(options: Optional = {}): LayerCircle {\r\n this.options = { ...this.options, ...options };\r\n return this;\r\n }\r\n\r\n adjustTransformOrigin(element: HTMLElement): LayerCircle {\r\n const { top, left } = element.getBoundingClientRect();\r\n const { offsetHeight, offsetWidth } = element;\r\n const styles = {\r\n 'transform-origin': `${left + offsetWidth / 2}px ${top + offsetHeight / 2}px`,\r\n };\r\n\r\n this.layer.setAttribute('style', objectToStyleString(styles));\r\n return this;\r\n }\r\n\r\n async close(callback: Callback = () => { }): Promise {\r\n const { expandLayerModifierClass } = this.options;\r\n await super.close();\r\n requestAnimationFrameTimer(() => {\r\n this.layer.classList.remove(expandLayerModifierClass);\r\n callback();\r\n }, 400);\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 new LayerCircle.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new LayerCircle.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 new LayerCircle.setup(moduleSelector);\r\n}"],"sourceRoot":""}