1import { d as defineCustomElements, S as SERVICE_URL_DEFAULT, g as geti18nServicePath, T, h } from "../clientlibs/clientlib-dependencies/resources/index.BIf-6FI-.js"; 2defineCustomElements(window, { 3 resourcesUrl: "/etc.clientlibs/maps/clientlibs/clientlib-dependencies/resources/" 4}); 5const FRAGMENT_REGEX = /#(.*)/; 6const MAPS_ACS_FRAGMENT_REGEX = /#maps:(.+)/; 7const MAPS_MODAL_SELECTOR = "a.maps-modal, .maps-modal a, .maps-modal[link]"; 8const MAPS_ACS_FRAGMENT_SELECTOR = 'a[href*="#maps:"]'; 9const resolveEventTarget = (event, selector) => { 10 let { target } = event; 11 if (!(target instanceof HTMLElement) || !target.matches(selector)) { 12 target = target.closest(selector); 13 if (!(target instanceof HTMLElement)) { 14 return null; 15 } 16 } 17 return target; 18}; 19const getMapsUrl = (el) => { 20 if (el instanceof HTMLAnchorElement) { 21 return el.href; 22 } 23 return el.getAttribute("link"); 24}; 25const loadMapsExperience = async (configId) => { 26 const mapsContentFragmentExperience = `${SERVICE_URL_DEFAULT}${configId}`; 27 try { 28 const experienceResponse = await fetch(mapsContentFragmentExperience); 29 const experienceData = await experienceResponse.json(); 30 const i18nDealersServiceUrl = geti18nServicePath(experienceData.i18n); 31 const i18nDealersResponse = await fetch(i18nDealersServiceUrl); 32 const i18nDealersData = await i18nDealersResponse.json(); 33 let i18nCollisionCenterData = {}; 34 const i18nCollisionCenterPath = experienceData.collisionCenter_i18n; 35 if (i18nCollisionCenterPath) { 36 const i18nCollisionCenterServiceUrl = geti18nServicePath( 37 i18nCollisionCenterPath 38 ); 39 const i18nCollisionCenterResponse = await fetch( 40 i18nCollisionCenterServiceUrl 41 ); 42 i18nCollisionCenterData = await i18nCollisionCenterResponse.json(); 43 } 44 let i18nChargingStationsData = {}; 45 const i18nChargingStationsPath = experienceData.chargingStation_i18n; 46 if (i18nChargingStationsPath) { 47 const i18nChargingStationsServiceUrl = geti18nServicePath( 48 i18nChargingStationsPath 49 ); 50 const i18nChargingStationsResponse = await fetch( 51 i18nChargingStationsServiceUrl 52 ); 53 i18nChargingStationsData = await i18nChargingStationsResponse.json(); 54 } 55 const hamburger = document.getElementsByClassName("hamburger active"); 56 if (hamburger.length) { 57 hamburger[0].click(); 58 } 59 T({ 60 experienceData, 61 i18nChargingStations: i18nChargingStationsData, 62 i18nCollisionCenters: i18nCollisionCenterData, 63 i18nDealers: i18nDealersData 64 }); 65 } catch (error) { 66 console.error("Maps ~ error, using AEM fallback from maps-ui:", error); 67 T({ 68 experienceData: h.i18n, 69 i18nDealers: h.i18n 70 }); 71 } 72}; 73const attachMapsHook = ({ eventType, target, selector }) => { 74 target.addEventListener(eventType, async (event) => { 75 const el = resolveEventTarget(event, selector); 76 if (!el) { 77 return; 78 } 79 event.preventDefault(); 80 event.stopPropagation(); 81 const url = getMapsUrl(el); 82 const match = url?.match(FRAGMENT_REGEX); 83 if (!match) { 84 throw new Error("Maps URL does not include a valid config fragment"); 85 } 86 globalThis.tcom_v2?.analytics?.fireWithContext?.("aa-link", el); 87 await loadMapsExperience(match[1]); 88 }); 89}; 90const attachMapsACSFragmentHook = ({ eventType, target }) => { 91 target.addEventListener(eventType, async (event) => { 92 const el = resolveEventTarget(event, MAPS_ACS_FRAGMENT_SELECTOR); 93 if (!el) { 94 return; 95 } 96 event.preventDefault(); 97 event.stopPropagation(); 98 const match = el.href.match(MAPS_ACS_FRAGMENT_REGEX); 99 if (!match) { 100 throw new Error("Maps URL does not include a valid #maps:fragment"); 101 } 102 globalThis.tcom_v2?.analytics?.fireWithContext?.("aa-link", el); 103 await loadMapsExperience(match[1]); 104 }); 105}; 106const tcomHeader = document.getElementById("tcom-header"); 107if (tcomHeader) { 108 attachMapsHook({ 109 eventType: "click", 110 target: tcomHeader, 111 selector: MAPS_MODAL_SELECTOR 112 }); 113 attachMapsACSFragmentHook({ eventType: "click", target: tcomHeader }); 114} 115const tcomBody = document.querySelectorAll("body.page"); 116tcomBody.forEach((body) => { 117 attachMapsHook({ 118 eventType: "click", 119 selector: MAPS_MODAL_SELECTOR, 120 target: body 121 }); 122 attachMapsACSFragmentHook({ eventType: "click", target: body }); 123}); 124const tcomFooterLinks = document.querySelectorAll(".footer-links"); 125tcomFooterLinks.forEach((footerElement) => { 126 attachMapsHook({ 127 eventType: "click", 128 target: footerElement, 129 selector: MAPS_MODAL_SELECTOR 130 }); 131 attachMapsACSFragmentHook({ eventType: "click", target: footerElement }); 132}); 133const tcomShoppingBelt = document.querySelectorAll( 134 ".tcom-shopping-tools-panel" 135); 136tcomShoppingBelt.forEach((beltItem) => { 137 attachMapsHook({ 138 eventType: "click", 139 target: beltItem, 140 selector: MAPS_MODAL_SELECTOR 141 }); 142}); 143//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsaG9vay5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21haW4vd2VicGFjay9jb21wb25lbnRzL2dsb2JhbC1ob29rL2pzL2dsb2JhbC1ob29rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7
143IGRlZmluZUN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcImRwY3MtdGNvbS12aXMvbG9hZGVyXCI7XG5cbmRlZmluZUN1c3RvbUVsZW1lbnRzKHdpbmRvdywge1xuICByZXNvdXJjZXNVcmw6XG4gICAgXCIvZXRjLmNsaWVudGxpYnMvbWFwcy9jbGllbnRsaWJzL2NsaWVudGxpYi1kZXBlbmRlbmNpZXMvcmVzb3VyY2VzL1wiLFxufSk7XG5cbmNvbnN0IEZSQUdNRU5UX1JFR0VYID0gLyMoLiopLztcbmNvbnN0IE1BUFNfQUNTX0ZSQUdNRU5UX1JFR0VYID0gLyNtYXBzOiguKykvO1xuXG5pbXBvcnQgeyBhZW1GYWxsYmFja0NvbmZpZywgbG9hZGVyIH0gZnJvbSBcIm1hcHMtdWlcIjtcblxuaW1wb3J0IHtcbiAgU0VSVklDRV9VUkxfREVGQVVMVCxcbiAgZ2V0aTE4blNlcnZpY2VQYXRoLFxufSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9nZXRpMThuU2VydmljZVBhdGhcIjtcblxuY29uc3QgTUFQU19NT0RBTF9TRUxFQ1RPUiA9IFwiYS5tYXBzLW1vZGFsLCAubWFwcy1tb2RhbCBhLCAubWFwcy1tb2RhbFtsaW5rXVwiO1xuY29uc3QgTUFQU19BQ1NfRlJBR01FTlRfU0VMRUNUT1IgPSAnYVtocmVmKj1cIiNtYXBzOlwiXSc7XG5cbmNvbnN0IHJlc29sdmVFdmVudFRhcmdldCA9IChldmVudCwgc2VsZWN0b3IpID0+IHtcbiAgbGV0IHsgdGFyZ2V0IH0gPSBldmVudDtcblxuICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgfHwgIXRhcmdldC5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgIHRhcmdldCA9IHRhcmdldC5jbG9zZXN0KHNlbGVjdG9yKTtcblxuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cbmNvbnN0IGdldE1hcHNVcmwgPSAoZWwpID0+IHtcbiAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWwuaHJlZjtcbiAgfVxuXG4gIHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJsaW5rXCIpO1xufTtcblxuY29uc3QgbG9hZE1hcHNFeHBlcmllbmNlID0gYXN5bmMgKGNvbmZpZ0lkKSA9PiB7XG4gIGNvbnN0IG1hcHNDb250ZW50RnJhZ21lbnRFeHBlcmllbmNlID0gYCR7U0VSVklDRV9VUkxfREVGQVVMVH0ke2NvbmZpZ0lkfWA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBleHBlcmllbmNlUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChtYXBzQ29udGVudEZyYWdtZW50RXhwZXJpZW5jZSk7XG4gICAgY29uc3QgZXhwZXJpZW5jZURhdGEgPSBhd2FpdCBleHBlcmllbmNlUmVzcG9uc2UuanNvbigpO1xuXG4gICAgY29uc3QgaTE4bkRlYWxlcnNTZXJ2aWNlVXJsID0gZ2V0aTE4blNlcnZpY2VQYXRoKGV4cGVyaWVuY2VEYXRhLmkxOG4pO1xuICAgIGNvbnN0IGkxOG5EZWFsZXJzUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChpMThuRGVhbGVyc1NlcnZpY2VVcmwpO1xuICAgIGNvbnN0IGkxOG5EZWFsZXJzRGF0YSA9IGF3YWl0IGkxOG5EZWFsZXJzUmVzcG9uc2UuanNvbigpO1xuXG4gICAgbGV0IGkxOG5Db2xsaXNpb25DZW50ZXJEYXRhID0ge307XG4gICAgY29uc3QgaTE4bkNvbGxpc2lvbkNlbnRlclBhdGggPSBleHBlcmllbmNlRGF0YS5jb2xsaXNpb25DZW50ZXJfaTE4bjtcblxuICAgIGlmIChpMThuQ29sbGlzaW9uQ2VudGVyUGF0aCkge1xuICAgICAgY29uc3QgaTE4bkNvbGxpc2lvbkNlbnRlclNlcnZpY2VVcmwgPSBnZXRpMThuU2VydmljZVBhdGgoXG4gICAgICAgIGkxOG5Db2xsaXNpb25DZW50ZXJQYXRoLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGkxOG5Db2xsaXNpb25DZW50ZXJSZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgICBpMThuQ29sbGlzaW9uQ2VudGVyU2VydmljZVVybCxcbiAgICAgICk7XG5cbiAgICAgIGkxOG5Db2xsaXNpb25DZW50ZXJEYXRhID0gYXdhaXQgaTE4bkNvbGxpc2lvbkNlbnRlclJlc3BvbnNlLmpzb24oKTtcbiAgICB9XG5cbiAgICBsZXQgaTE4bkNoYXJnaW5nU3RhdGlvbnNEYXRhID0ge307XG4gICAgY29uc3QgaTE4bkNoYXJnaW5nU3RhdGlvbnNQYXRoID0gZXhwZXJpZW5jZURhdGEuY2hhcmdpbmdTdGF0aW9uX2kxOG47XG5cbiAgICBpZiAoaTE4bkNoYXJnaW5nU3RhdGlvbnNQYXRoKSB7XG4gICAgICBjb25zdCBpMThuQ2hhcmdpbmdTdGF0aW9uc1NlcnZpY2VVcmwgPSBnZXRpMThuU2VydmljZVBhdGgoXG4gICAgICAgIGkxOG5DaGFyZ2luZ1N0YXRpb25zUGF0aCxcbiAgICAgICk7XG4gICAgICBjb25zdCBpMThuQ2hhcmdpbmdTdGF0aW9uc1Jlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGkxOG5DaGFyZ2luZ1N0YXRpb25zU2VydmljZVVybCxcbiAgICAgICk7XG5cbiAgICAgIGkxOG5DaGFyZ2luZ1N0YXRpb25zRGF0YSA9IGF3YWl0IGkxOG5DaGFyZ2luZ1N0YXRpb25zUmVzcG9uc2UuanNvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbWJ1cmdlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJoYW1idXJnZXIgYWN0aXZlXCIpO1xuXG4gICAgaWYgKGhhbWJ1cmdlci5sZW5ndGgpIHtcbiAgICAgIGhhbWJ1cmdlclswXS5jbGljaygpO1xuICAgIH1cblxuICAgIGxvYWRlcih7XG4gICAgICBleHBlcmllbmNlRGF0YTogZXhwZXJpZW5jZURhdGEsXG4gICAgICBpMThuQ2hhcmdpbmdTdGF0aW9uczogaTE4bkNoYXJnaW5nU3RhdGlvbnNEYXRhLFxuICAgICAgaTE4bkNvbGxpc2lvbkNlbnRlcnM6IGkxOG5Db2xsaXNpb25DZW50ZXJEYXRhLFxuICAgICAgaTE4bkRlYWxlcnM6IGkxOG5EZWFsZXJzRGF0YSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTWFwcyB+IGVycm9yLCB1c2luZyBBRU0gZmFsbGJhY2sgZnJvbSBtYXBzLXVpOlwiLCBlcnJvcik7XG4gICAgbG9hZGVyKHtcbiAgICAgIGV4cGVyaWVuY2VEYXRhOiBhZW1GYWxsYmFja0NvbmZpZy5pMThuLFxuICAgICAgaTE4bkRlYWxlcnM6IGFlbUZhbGxiYWNrQ29uZmlnLmkxOG4sXG4gICAgfSk7XG4gIH1cbn07XG5cbmNvbnN0IGF0dGFjaE1hcHNIb29rID0gKHsgZXZlbnRUeXBlLCB0YXJnZXQsIHNlbGVjdG9yIH0pID0+IHtcbiAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBhc3luYyAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBlbCA9IHJlc29sdmVFdmVudFRhcmdldChldmVudCwgc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbn
143REZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB1cmwgPSBnZXRNYXBzVXJsKGVsKTtcblxuICAgIGNvbnN0IG1hdGNoID0gdXJsPy5tYXRjaChGUkFHTUVOVF9SRUdFWCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYXBzIFVSTCBkb2VzIG5vdCBpbmNsdWRlIGEgdmFsaWQgY29uZmlnIGZyYWdtZW50XCIpO1xuICAgIH1cblxuICAgIGdsb2JhbFRoaXMudGNvbV92Mj8uYW5hbHl0aWNzPy5maXJlV2l0aENvbnRleHQ/LihcImFhLWxpbmtcIiwgZWwpO1xuXG4gICAgYXdhaXQgbG9hZE1hcHNFeHBlcmllbmNlKG1hdGNoWzFdKTtcbiAgfSk7XG59O1xuXG5jb25zdCBhdHRhY2hNYXBzQUNTRnJhZ21lbnRIb29rID0gKHsgZXZlbnRUeXBlLCB0YXJnZXQgfSkgPT4ge1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGFzeW5jIChldmVudCkgPT4ge1xuICAgIGNvbnN0IGVsID0gcmVzb2x2ZUV2ZW50VGFyZ2V0KGV2ZW50LCBNQVBTX0FDU19GUkFHTUVOVF9TRUxFQ1RPUik7XG5cbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG1hdGNoID0gZWwuaHJlZi5tYXRjaChNQVBTX0FDU19GUkFHTUVOVF9SRUdFWCk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYXBzIFVSTCBkb2VzIG5vdCBpbmNsdWRlIGEgdmFsaWQgI21hcHM6ZnJhZ21lbnRcIik7XG4gICAgfVxuXG4gICAgZ2xvYmFsVGhpcy50Y29tX3YyPy5hbmFseXRpY3M/LmZpcmVXaXRoQ29udGV4dD8uKFwiYWEtbGlua1wiLCBlbCk7XG5cbiAgICBhd2FpdCBsb2FkTWFwc0V4cGVyaWVuY2UobWF0Y2hbMV0pO1xuICB9KTtcbn07XG5cbmNvbnN0IHRjb21IZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRjb20taGVhZGVyXCIpO1xuaWYgKHRjb21IZWFkZXIpIHtcbiAgYXR0YWNoTWFwc0hvb2soe1xuICAgIGV2ZW50VHlwZTogXCJjbGlja1wiLFxuICAgIHRhcmdldDogdGNvbUhlYWRlcixcbiAgICBzZWxlY3RvcjogTUFQU19NT0RBTF9TRUxFQ1RPUixcbiAgfSk7XG4gIGF0dGFjaE1hcHNBQ1NGcmFnbWVudEhvb2soeyBldmVudFR5cGU6IFwiY2xpY2tcIiwgdGFyZ2V0OiB0Y29tSGVhZGVyIH0pO1xufVxuXG5jb25zdCB0Y29tQm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJib2R5LnBhZ2VcIik7XG50Y29tQm9keS5mb3JFYWNoKChib2R5KSA9PiB7XG4gIGF0dGFjaE1hcHNIb29rKHtcbiAgICBldmVudFR5cGU6IFwiY2xpY2tcIixcbiAgICBzZWxlY3RvcjogTUFQU19NT0RBTF9TRUxFQ1RPUixcbiAgICB0YXJnZXQ6IGJvZHksXG4gIH0pO1xuICBhdHRhY2hNYXBzQUNTRnJhZ21lbnRIb29rKHsgZXZlbnRUeXBlOiBcImNsaWNrXCIsIHRhcmdldDogYm9keSB9KTtcbn0pO1xuXG5jb25zdCB0Y29tRm9vdGVyTGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmZvb3Rlci1saW5rc1wiKTtcbnRjb21Gb290ZXJMaW5rcy5mb3JFYWNoKChmb290ZXJFbGVtZW50KSA9PiB7XG4gIGF0dGFjaE1hcHNIb29rKHtcbiAgICBldmVudFR5cGU6IFwiY2xpY2tcIixcbiAgICB0YXJnZXQ6IGZvb3RlckVsZW1lbnQsXG4gICAgc2VsZWN0b3I6IE1BUFNfTU9EQUxfU0VMRUNUT1IsXG4gIH0pO1xuICBhdHRhY2hNYXBzQUNTRnJhZ21lbnRIb29rKHsgZXZlbnRUeXBlOiBcImNsaWNrXCIsIHRhcmdldDogZm9vdGVyRWxlbWVudCB9KTtcbn0pO1xuXG5jb25zdCB0Y29tU2hvcHBpbmdCZWx0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgXCIudGNvbS1zaG9wcGluZy10b29scy1wYW5lbFwiLFxuKTtcblxudGNvbVNob3BwaW5nQmVsdC5mb3JFYWNoKChiZWx0SXRlbSkgPT4ge1xuICBhdHRhY2hNYXBzSG9vayh7XG4gICAgZXZlbnRUeXBlOiBcImNsaWNrXCIsXG4gICAgdGFyZ2V0OiBiZWx0SXRlbSxcbiAgICBzZWxlY3RvcjogTUFQU19NT0RBTF9TRUxFQ1RPUixcbiAgfSk7XG59KTtcbiJdLCJuYW1lcyI6WyJsb2FkZXIiLCJhZW1GYWxsYmFja0NvbmZpZyJdLCJtYXBwaW5ncyI6IjtBQUVBLHFCQUFxQixRQUFRO0FBQUEsRUFDM0IsY0FDRTtBQUNKLENBQUM7QUFFRCxNQUFNLGlCQUFpQjtBQUN2QixNQUFNLDBCQUEwQjtBQVNoQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLDZCQUE2QjtBQUVuQyxNQUFNLHFCQUFxQixDQUFDLE9BQU8sYUFBYTtBQUM5QyxNQUFJLEVBQUUsT0FBTSxJQUFLO0FBRWpCLE1BQUksRUFBRSxrQkFBa0IsZ0JBQWdCLENBQUMsT0FBTyxRQUFRLFFBQVEsR0FBRztBQUNqRSxhQUFTLE9BQU8sUUFBUSxRQUFRO0FBRWhDLFFBQUksRUFBRSxrQkFBa0IsY0FBYztBQUNwQyxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxNQUFNLGFBQWEsQ0FBQyxPQUFPO0FBQ3pCLE1BQUksY0FBYyxtQkFBbUI7QUFDbkMsV0FBTyxHQUFHO0FBQUEsRUFDWjtBQUVBLFNBQU8sR0FBRyxhQUFhLE1BQU07QUFDL0I7QUFFQSxNQUFNLHFCQUFxQixPQUFPLGFBQWE7QUFDN0MsUUFBTSxnQ0FBZ0MsR0FBRyxtQkFBbUIsR0FBRyxRQUFRO0FBRXZFLE1BQUk7QUFDRixVQUFNLHFCQUFxQixNQUFNLE1BQU0sNkJBQTZCO0FBQ3BFLFVBQU0saUJBQWl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
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.