{"version":3,"file":"partners-gxiLhTw2.js","sources":["../../../app/frontend/js/partners.js"],"sourcesContent":["// construct a fallback partner data object\nconst defaultPartnerData = {\n partners: [\n {\n lead_source: \"\",\n phone: \"800-331-9198\",\n image: false,\n image_width: 360,\n title: \"Partners\",\n top_rated: true,\n },\n ],\n}\n\n// Function to set a cookie\nconst setCookie = (name, value) => {\n const expires = new Date()\n expires.setDate(expires.getDate() + 1)\n document.cookie = `${name}=${value}; path=/; expires=${expires.toGMTString()}`\n}\n\n// Function to get a cookie\nconst getCookie = (name) => {\n const cookies = document.cookie.split(\"; \")\n const cookie = cookies.find((row) => row.startsWith(name))\n return cookie ? cookie.split(\"=\")[1] : null\n}\n\n// Function to extract UTM parameters and store them as cookies and on the window object\nconst extractAndStoreUTMData = () => {\n const queryString = window.location.search\n const urlParams = new URLSearchParams(queryString)\n\n // Extract UTM parameters\n const utmData = {\n utm_source: urlParams.get(\"utm_source\") || getCookie(\"utm_source\") || \"\",\n utm_medium: urlParams.get(\"utm_medium\") || getCookie(\"utm_medium\") || \"\",\n utm_campaign:\n urlParams.get(\"utm_campaign\") || getCookie(\"utm_campaign\") || \"\",\n utm_content: urlParams.get(\"utm_content\") || getCookie(\"utm_content\") || \"\",\n }\n\n // Store UTM parameters on the window object\n window.utmData = utmData\n window.utmDataReady = true\n\n // Set UTM parameters as cookies\n for (const [key, value] of Object.entries(utmData)) {\n setCookie(key, value)\n }\n}\n\n// Function to fetch partner data from the API\nconst fetchPartnerData = () => {\n const headers = new Headers()\n headers.append(\"Content-Type\", \"application/json\")\n\n const options = {\n method: \"GET\",\n headers: headers,\n }\n\n const request = new Request(\n \"https://wp.lifefone.com/wp-json/options/all\",\n options,\n )\n\n return fetch(request)\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"Could not fetch partner data from API.\")\n }\n return response.json()\n })\n .then((partnersJson) => {\n const partnersArr = partnersJson.partners\n\n const cleanLeadSource = window.utmData.utm_source\n .replace(/ /g, \"\")\n .toLowerCase()\n\n // Filter the array\n const filteredPartners = partnersArr.filter(\n (partner) => partner.lead_source.toLowerCase() === cleanLeadSource,\n )\n\n window.partnerData = filteredPartners[0]\n\n const partnerData =\n filteredPartners.length === 1\n ? filteredPartners[0]\n : defaultPartnerData.partners[0]\n window.partnerData = partnerData\n\n for (const [key, value] of Object.entries(partnerData)) {\n setCookie(key, value)\n }\n\n return partnerData\n })\n}\n\n// Function to replace partner data\nconst replacePartnerData = () => {\n // Access UTM data from the window object\n const partnerData = window.partnerData\n\n // phone number regex\n const regex = /(\\(?800\\)?)[- ]?(331)[- ]?(9198)/g\n\n // treeWalker to navigate the DOM and find text nodes\n const walker = document.createTreeWalker(\n document.body,\n NodeFilter.SHOW_TEXT,\n null,\n false,\n )\n\n // Loop through text nodes and replace phone numbers\n while (walker.nextNode()) {\n const node = walker.currentNode\n if (regex.test(node.textContent)) {\n // replace the phone number text\n node.textContent = node.textContent.replace(regex, partnerData.phone)\n // replace the href tel links\n let parentLink = node.parentNode.closest(\"a\")\n if (parentLink && parentLink.getAttribute(\"href\").startsWith(\"tel:\")) {\n parentLink.setAttribute(\"href\", `tel:+1-${partnerData.phone}`)\n }\n }\n }\n\n // update partner image, if provided\n if (partnerData.image) {\n let partnerImages = document.querySelectorAll(\".partner_image\")\n for (let partnerImage of partnerImages) {\n partnerImage.setAttribute(\"src\", partnerData.image)\n partnerImage.setAttribute(\"width\", partnerData.image_width)\n }\n }\n}\n\n// Function to initialize the partner data\nconst initializePartnerData = () => {\n window.partnerDataReady = false\n\n extractAndStoreUTMData()\n\n fetchPartnerData()\n .then((partnerData) => {\n window.partnerData = partnerData\n partnerData\n })\n .catch((error) => {\n console.error(error)\n const partnerData = defaultPartnerData.partners[0]\n window.partnerData = partnerData\n partnerData\n })\n .finally(() => {\n replacePartnerData()\n window.partnerDataReady = true\n })\n}\n\n// Call the initialization function\ninitializePartnerData()\n"],"names":["defaultPartnerData","setCookie","name","value","expires","getCookie","cookie","row","extractAndStoreUTMData","queryString","urlParams","utmData","key","fetchPartnerData","headers","options","request","response","partnersJson","partnersArr","cleanLeadSource","filteredPartners","partner","partnerData","replacePartnerData","regex","walker","node","parentLink","partnerImages","partnerImage","initializePartnerData","error"],"mappings":"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"}