{"version":3,"file":"main.CECxSjnd.js","sources":["../ts/modules/site-definitions.ts","../ts/modules/donate/donate-hospital.ts","../../node_modules/js-cookie/dist/js.cookie.mjs","../ts/main.ts"],"sourcesContent":["import { getEnvironment } from './utility';\r\n\r\nconst environment = getEnvironment();\r\nconst isDevelopment = environment === 'development';\r\n\r\nconst mainDomain = isDevelopment ? 'localhost' : '.childrensmiraclenetworkhospitals.org';\r\nconst wordpressSiteEnvironments = {\r\n development: 'https://staging.childrensmiraclenetworkhospitals.org/',\r\n staging: 'https://staging.childrensmiraclenetworkhospitals.org/',\r\n test: 'https://staging.childrensmiraclenetworkhospitals.org/',\r\n production: 'https://childrensmiraclenetworkhospitals.org/'\r\n};\r\n\r\nconst wordpressApiEndPoint = wordpressSiteEnvironments[getEnvironment() as keyof typeof wordpressSiteEnvironments];\r\n\r\n/**\r\n * All the constants for the site.\r\n */\r\nexport const globalDef = {\r\n mainDomain,\r\n wordpressApiEndPoint,\r\n};\r\n","import { globalDef } from '../site-definitions';\r\n\r\nexport class DonateHospital {\r\n public async fetchNearestHospitalByIP() {\r\n try {\r\n const timestamp = Date.now(); // Return the number of milliseconds since 1970/01/01\r\n const nearestHospitalFunction = `?ajaxFunctions&function=nearestHospital&t=${timestamp}`;\r\n const response = await fetch(globalDef.wordpressApiEndPoint + nearestHospitalFunction);\r\n\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n const data = await response.json();\r\n return data;\r\n } catch (error) {\r\n console.error('There has been a problem with your fetch operation:', error);\r\n throw error;\r\n }\r\n }\r\n}\r\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import { DonateHospital } from './modules/donate/donate-hospital';\r\nimport { globalDef } from './modules/site-definitions';\r\nimport { getUrlParam } from './modules/utility';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * Fetch nearest hospital \r\n * @page all\r\n */\r\n\r\n// Check if the ip_hospital_id cookie already exists\r\nlet ipHospitalId = Cookies.get('ip_hospital_id');\r\n\r\nif (!ipHospitalId) {\r\n const donateHospital = new DonateHospital();\r\n const hospital = await donateHospital.fetchNearestHospitalByIP();\r\n\r\n // Only set ip_hospital_id if a valid hospital is fetched\r\n if (hospital && hospital.length > 0) {\r\n ipHospitalId = hospital[0].hospitalId;\r\n\r\n Cookies.set('ip_hospital_id', ipHospitalId, {\r\n path: '/',\r\n domain: globalDef.mainDomain,\r\n secure: true,\r\n expires: 365\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Set hospital cookie if query param exists. This should run on all pages\r\n * @page all\r\n */\r\nconst hospitalIdCookie = Cookies.get('hospital_id');\r\nconst hospitalSelect = document.querySelector('#hospital');\r\nconst hospitalInput = document.querySelector('[name=\"IpHospitalId\"]');\r\nconst hospitalParam = getUrlParam('hospital') as string;\r\n\r\n// Use `hospitalParam` first, then fallback to cookie or IP-based hospital:\r\nconst finalHospitalId = hospitalParam || hospitalIdCookie || ipHospitalId;\r\n\r\n// Update hospital select\r\nif (hospitalSelect && finalHospitalId && hospitalSelect.querySelector(`option[value=\"${finalHospitalId}\"]`)) {\r\n hospitalSelect.value = finalHospitalId;\r\n\r\n if (hospitalInput) {\r\n hospitalInput.value = finalHospitalId;\r\n }\r\n}\r\n\r\n/**\r\n * Set ecode cookie if query param exists. This should run on all pages\r\n * @page all\r\n */\r\nconst ecodeParam = getUrlParam('ecode') as string;\r\n\r\n// Ecode is not set and user visits with an ecode query param.\r\nif (ecodeParam) {\r\n Cookies.set('ecode', ecodeParam, {\r\n path: '/',\r\n domain: globalDef.mainDomain,\r\n secure: true,\r\n expires: 1\r\n });\r\n}\r\n\r\n/**\r\n * Set app campaign cookie if query param exists. This should run on all pages\r\n * @page all\r\n */\r\nconst appcampaignParam = getUrlParam('appcampaignid') as string;\r\n\r\n// App campaign is not set and user visits with an app campaign query param.\r\nif (appcampaignParam) {\r\n Cookies.set('app_campaign_id', appcampaignParam, {\r\n path: '/',\r\n domain: globalDef.mainDomain,\r\n secure: true,\r\n expires: 1\r\n });\r\n}\r\n\r\n/**\r\n * Set campaign cookie if query param exists. This should run on all pages\r\n * @page all\r\n */\r\nconst campaignParam = getUrlParam('campaignid') as string;\r\n\r\n// Campaign is not set and user visits with a campaign query param.\r\nif (campaignParam) {\r\n Cookies.set('campaign_id', campaignParam, {\r\n path: '/',\r\n domain: globalDef.mainDomain,\r\n secure: true,\r\n expires: 1\r\n });\r\n}\r\n"],"names":["environment","getEnvironment","isDevelopment","mainDomain","wordpressSiteEnvironments","wordpressApiEndPoint","globalDef","DonateHospital","nearestHospitalFunction","response","error","assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","ipHospitalId","Cookies","hospital","hospitalIdCookie","hospitalSelect","hospitalInput","hospitalParam","getUrlParam","finalHospitalId","ecodeParam","appcampaignParam","campaignParam"],"mappings":"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","x_google_ignoreList":[2]}