{"version":3,"file":"neo.js","sources":["../src/utils/embedNWC.ts","../src/utils/fetchCMSItem.ts","../src/utils/isPreview.ts","../src/utils/parseRoute.ts","../src/utils/fetchHTML.ts","../src/neo-include.ts","../src/neo.ts"],"sourcesContent":["export default function embedNWC() {\n return new Promise<void>((resolve) => {\n if (window?.nwc?.load) resolve(); // Already in the page\n\n const script = document.createElement('script');\n script.src = '/shared_res/agility/page-builder/assets/js/nwc.min.js';\n script.addEventListener('load', () => resolve(), { once: true });\n document.head.appendChild(script);\n });\n}\n","export default async function fetchCMSItem(\n market: string,\n lang: string,\n id: string,\n cacheBust: boolean = false\n): Promise<object | undefined> {\n const urlObj = new URL(\n `/ecapi/cms/v1/${market}/b2c/${id}?language=${lang}`,\n window.location.href\n );\n\n if (cacheBust) {\n urlObj.searchParams.append('ts', Date.now().toString());\n }\n\n const response = await fetch(urlObj.href);\n\n if (response.status == 404) return undefined;\n\n if (!response.ok)\n throw new Error(\n `Failed to fetch config ${response.url} - ${response.status}:${response.statusText}`\n );\n\n const content = await response.json();\n return JSON.parse(content.payload.config);\n}\n","export default function isPreview(): boolean {\n const params = new URLSearchParams(window.location.search);\n return params.has('preview');\n}\n","export default function parseRoute(url: string) {\n const path = new URL(url).pathname;\n const [, market, lang] = path.split('/');\n\n return {\n market,\n lang\n };\n}\n","export default async function fetchHTML(\n pathname: Location['pathname'],\n cacheBust: boolean = false\n): Promise<string | undefined> {\n const urlObj = new URL(\n `${window.location.protocol}//${window.location.host}${pathname}`,\n window.location.href\n );\n\n if (cacheBust) {\n urlObj.searchParams.append('ts', Date.now().toString());\n }\n\n const response = await fetch(urlObj.href);\n\n if (response.status == 404) return undefined;\n\n if (!response.ok)\n throw new Error(\n `Failed to fetch html ${response.url} - ${response.status}:${response.statusText}`\n );\n\n return response.text();\n}\n","import fetchHTML from './utils/fetchHTML';\nimport isPreview from './utils/isPreview';\n\nexport default class NeoInclude extends HTMLElement {\n async connectedCallback() {\n try {\n const name = this.getAttribute('name');\n const src = this.getAttribute('src');\n const featureFlag = this.getAttribute('ff');\n const disabled = this.hasAttribute('disabled');\n\n if (!src) return;\n\n // Config disabled\n if (\n name &&\n window.neo?.enabledIncludes &&\n !window.neo.enabledIncludes[name]\n )\n return;\n\n // Attr disabled, without Config enabled\n if (\n disabled &&\n !(\n name &&\n window.neo?.enabledIncludes &&\n window.neo.enabledIncludes[name]\n )\n )\n return;\n\n if (\n featureFlag &&\n window.featureFlags &&\n !window.featureFlags.isEnabled(featureFlag)\n )\n return;\n\n const cacheBust = isPreview();\n const html = await fetchHTML(src, cacheBust);\n if (!html) return;\n\n const parser = new DOMParser();\n const embedDoc = parser.parseFromString(html, 'text/html');\n\n // Scripts have to be processed into the current document in order to run\n [...embedDoc.querySelectorAll('script')].forEach((sourceScript) => {\n const script = document.createElement('script');\n [...sourceScript.attributes].forEach((attr) => {\n script.setAttribute(attr.nodeName, attr.nodeValue!);\n });\n script.innerHTML = sourceScript.innerHTML;\n document.head.appendChild(script);\n sourceScript.remove();\n });\n\n this.style.display = 'content';\n this.innerHTML = embedDoc.head.innerHTML + embedDoc.body.innerHTML;\n } catch (error: any) {\n console.error('Neo', error.message || error);\n }\n }\n}\n\nif (!customElements.get('neo-include')) {\n customElements.define('neo-include', NeoInclude);\n}\n","import embedNWC from './utils/embedNWC.ts';\nimport fetchCMSItem from './utils/fetchCMSItem.ts';\nimport isPreview from './utils/isPreview.ts';\nimport parseRoute from './utils/parseRoute.ts';\n\nexport { default as NeoInclude } from './neo-include.ts';\n\n(async () => {\n const config = window.neo;\n if (!config) return;\n\n const { market, lang } = parseRoute(window.location.href);\n if (!market || !lang) return;\n\n window.nwc = window.nwc || {};\n window.nwc.projects = window.nwc.projects || [];\n\n const [pageBuildConfigs] = await Promise.all([\n resolvePageBuilderConfigs(market, lang, config?.pageBuilderConfigs ?? []),\n embedNWC()\n ]);\n\n pageBuildConfigs.forEach((config) => {\n window?.nwc?.projects?.push(config);\n });\n\n window.nwc.load?.();\n})();\n\nasync function resolvePageBuilderConfigs(\n market: string,\n lang: string,\n pageBuilderConfigs: string[]\n): Promise<object[]> {\n const cacheBust = isPreview();\n const configs = await Promise.allSettled(\n pageBuilderConfigs.map((id) => fetchCMSItem(market, lang, id, cacheBust))\n );\n\n return configs\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value) as object[];\n}\n"],"names":["embedNWC","resolve","_a","script","fetchCMSItem","market","lang","id","cacheBust","urlObj","response","content","isPreview","parseRoute","url","path","fetchHTML","pathname","NeoInclude","_b","name","src","featureFlag","disabled","html","embedDoc","sourceScript","attr","error","config","pageBuildConfigs","resolvePageBuilderConfigs","pageBuilderConfigs","result"],"mappings":"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"}