{"version":3,"file":"locale-selector.js","sources":["../../../../src/assets/scripts/locale-selector.entry.ts"],"sourcesContent":["import { WebComponent } from '@helpers/WebComponent';\nimport { createWebComponentInstances, dispatchCustomEvent } from '@helpers/functions';\nimport { globalCpmCloseLocaleSelectorEvent, globalCpmWebComponentName } from '../../web-components/globalCpm/_data';\nimport executionFunctionByRootNodeType from '@helpers/executionFunctionByRootNodeType';\n\nconst classNamePrefix = 'arjo-o-locale-selector';\n\nclass LocaleSelector extends WebComponent {\n localeSelector: Element | null = null;\n\n constructor(rootNode: Document | ShadowRoot) {\n super(rootNode);\n\n executionFunctionByRootNodeType({\n rootNode,\n localCallback: () => {\n window.addEventListener('DOMContentLoaded', () => {\n this.initPrepare();\n });\n },\n webComponentCallback: () => {\n this.init(() => this.initPrepare());\n },\n });\n }\n\n initPrepare() {\n this.localeSelector = this.rootNode.querySelector(`.${classNamePrefix}`);\n this.addEventIntoCloseButton();\n this.addEventIntoToggles();\n this.addEventIntoLinks();\n this.listenGlobalCpmCloseEvent();\n }\n\n listenGlobalCpmCloseEvent() {\n window.addEventListener(globalCpmCloseLocaleSelectorEvent, () => {\n this.closeLocaleSelector();\n });\n }\n\n closeLocaleSelector() {\n if (!this.localeSelector) return;\n\n this.localeSelector.classList.remove('active');\n this.localeSelector.querySelector?.('style')?.setAttribute('media', 'not all');\n }\n\n addEventIntoCloseButton() {\n const closeButton = this.localeSelector?.querySelector(`.${classNamePrefix}__close-button`);\n\n if (!closeButton) return;\n // While we need to re init this script base on external web component data, we need remove previous event listener on the element\n closeButton.removeEventListener('click', () => this.closeLocaleSelector());\n\n closeButton.addEventListener('click', () => this.closeLocaleSelector());\n }\n\n openLocaleSelector() {\n if (!this.localeSelector) return;\n\n this.localeSelector.classList.add('active');\n this.localeSelector.querySelector?.('style')?.removeAttribute('media');\n }\n\n addEventIntoToggles() {\n const toggles = [...this.rootNode.querySelectorAll('[data-locale-selector-toggle]')];\n\n toggles.forEach((t) => {\n // While we need to re init this script base on external web component data, we need remove previous event listener on the element\n t.removeEventListener('click', () => this.openLocaleSelector());\n\n t.addEventListener('click', () => this.openLocaleSelector());\n });\n }\n\n linkClickHandler(event: Event) {\n event.preventDefault();\n\n const target = event.currentTarget as HTMLAnchorElement;\n\n if (!target) return;\n\n const apiUrl = target.dataset.apiUrl || '';\n const href = target.getAttribute('href') || '';\n const eventData = target.getAttribute('data-event-data');\n\n if (eventData) {\n dispatchCustomEvent({\n eventName: 'cpm-switch-lang',\n eventDict: {\n detail: {\n data: eventData,\n },\n },\n });\n\n return;\n }\n\n try {\n fetch(apiUrl).then(() => {\n window.location.assign(href);\n });\n } catch (error) {\n console.log(error);\n }\n }\n\n addEventIntoLinks() {\n if (!this.localeSelector) return;\n\n const links = [...this.localeSelector.querySelectorAll(`.${classNamePrefix}__linkgroup-item a`)];\n\n links.forEach((l) => {\n // While we need to re init this script base on external web component data, we need remove previous event listener on the element\n l.removeEventListener('click', this.linkClickHandler);\n\n l.addEventListener('click', this.linkClickHandler);\n });\n }\n}\n\nconst localSelector = createWebComponentInstances(LocaleSelector, globalCpmWebComponentName);\n\n// Web component only cannot access into class instance without window object\nwindow.localSelector = localSelector;\n\nexport { LocaleSelector };\n"],"names":["classNamePrefix","LocaleSelector","WebComponent","rootNode","__publicField","executionFunctionByRootNodeType","globalCpmCloseLocaleSelectorEvent","_c","_b","_a","closeButton","event","target","apiUrl","href","eventData","dispatchCustomEvent","error","l","localSelector","createWebComponentInstances","globalCpmWebComponentName"],"mappings":"wYAKA,MAAMA,EAAkB,yBAExB,MAAMC,UAAuBC,CAAa,CAGxC,YAAYC,EAAiC,CAC3C,MAAMA,CAAQ,EAHhBC,EAAA,sBAAiC,MAKCC,EAAA,CAC9B,SAAAF,EACA,cAAe,IAAM,CACZ,OAAA,iBAAiB,mBAAoB,IAAM,CAChD,KAAK,YAAY,CAAA,CAClB,CACH,EACA,qBAAsB,IAAM,CAC1B,KAAK,KAAK,IAAM,KAAK,YAAa,CAAA,CACpC,CAAA,CACD,CACH,CAEA,aAAc,CACZ,KAAK,eAAiB,KAAK,SAAS,cAAc,IAAIH,CAAe,EAAE,EACvE,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,CACjC,CAEA,2BAA4B,CACnB,OAAA,iBAAiBM,EAAmC,IAAM,CAC/D,KAAK,oBAAoB,CAAA,CAC1B,CACH,CAEA,qBAAsB,WACf,KAAK,iBAEL,KAAA,eAAe,UAAU,OAAO,QAAQ,GAC7CC,GAAAC,GAAAC,EAAA,KAAK,gBAAe,gBAApB,YAAAD,EAAA,KAAAC,EAAoC,WAApC,MAAAF,EAA8C,aAAa,QAAS,WACtE,CAEA,yBAA0B,OACxB,MAAMG,GAAcD,EAAA,KAAK,iBAAL,YAAAA,EAAqB,cAAc,IAAIT,CAAe,kBAErEU,IAELA,EAAY,oBAAoB,QAAS,IAAM,KAAK,oBAAqB,CAAA,EAEzEA,EAAY,iBAAiB,QAAS,IAAM,KAAK,oBAAqB,CAAA,EACxE,CAEA,oBAAqB,WACd,KAAK,iBAEL,KAAA,eAAe,UAAU,IAAI,QAAQ,GAC1CH,GAAAC,GAAAC,EAAA,KAAK,gBAAe,gBAApB,YAAAD,EAAA,KAAAC,EAAoC,WAApC,MAAAF,EAA8C,gBAAgB,SAChE,CAEA,qBAAsB,CACJ,CAAC,GAAG,KAAK,SAAS,iBAAiB,+BAA+B,CAAC,EAE3E,QAAS,GAAM,CAErB,EAAE,oBAAoB,QAAS,IAAM,KAAK,mBAAoB,CAAA,EAE9D,EAAE,iBAAiB,QAAS,IAAM,KAAK,mBAAoB,CAAA,CAAA,CAC5D,CACH,CAEA,iBAAiBI,EAAc,CAC7BA,EAAM,eAAe,EAErB,MAAMC,EAASD,EAAM,cAErB,GAAI,CAACC,EAAQ,OAEP,MAAAC,EAASD,EAAO,QAAQ,QAAU,GAClCE,EAAOF,EAAO,aAAa,MAAM,GAAK,GACtCG,EAAYH,EAAO,aAAa,iBAAiB,EAEvD,GAAIG,EAAW,CACOC,EAAA,CAClB,UAAW,kBACX,UAAW,CACT,OAAQ,CACN,KAAMD,CACR,CACF,CAAA,CACD,EAED,MACF,CAEI,GAAA,CACI,MAAAF,CAAM,EAAE,KAAK,IAAM,CAChB,OAAA,SAAS,OAAOC,CAAI,CAAA,CAC5B,QACMG,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CACF,CAEA,mBAAoB,CAClB,GAAI,CAAC,KAAK,eAAgB,OAEZ,CAAC,GAAG,KAAK,eAAe,iBAAiB,IAAIjB,CAAe,oBAAoB,CAAC,EAEzF,QAASkB,GAAM,CAEjBA,EAAA,oBAAoB,QAAS,KAAK,gBAAgB,EAElDA,EAAA,iBAAiB,QAAS,KAAK,gBAAgB,CAAA,CAClD,CACH,CACF,CAEA,MAAMC,EAAgBC,EAA4CnB,EAAgBoB,CAAyB,EAG3G,OAAO,cAAgBF"}