{"version":3,"sources":["components/SearchSelect.js","Form.js","hooks/useReferralData.js","serviceWorker.js","index.js"],"names":["colors","defaultTheme","selectStyles","control","provided","minWidth","margin","menu","boxShadow","SearchSelect","props","useState","isOpen","value","undefined","menuState","setMenuState","toggleOpen","className","htmlFor","name","label","onClose","target","Button","iconAfter","onClick","isSelected","buttonSelectLabel","buttonPlaceholder","autoFocus","backspaceRemovesValue","components","DropdownIndicator","IndicatorSeparator","controlShouldRenderValue","hideSelectedOptions","isClearable","isSearchable","menuIsOpen","onChange","context","options","placeholder","styles","tabSelectsValue","Menu","shadow","css","backgroundColor","borderRadius","marginTop","position","zIndex","Blanket","bottom","left","top","right","Dropdown","children","Svg","p","width","height","viewBox","focusable","role","color","neutral20","d","fill","fillRule","ChevronDown","style","marginRight","Form","useForm","mode","register","handleSubmit","errors","triggerValidation","setValue","getValues","formState","authToken","setBearer","clientIp","setIp","useEffect","a","fetch","response","json","body","ip","makeCall","method","headers","Authorization","then","authResponse","Data","catch","console","error","getIp","referralData","apiServer","subjects","locations","studyTypes","studyYears","setReferralData","fetchData","url","type","mapper","results","map","iso","dialling_code","useReferralData","process","validateEmail","emailFormat","match","validateMobile","values","country_code","dial_code","find","x","numberFormat","fullNumber","requestOptions","data","ok","message","status","Promise","reject","utmParams","caseType","urlParams","URLSearchParams","window","location","search","utmData","allowedParams","UtmSource","UtmMedium","UtmCampaign","key","has","get","currentReferrer","referral_domain","document","href","split","referral_reference","pathname","setupPartnerPayload","dialCodeLocation","nationality","currentLocation","current_location","selectedSubject","subject_interest","referralInfo","payload","FirstName","first_name","LastName","last_name","TelMobile","phone_number","Email","email","THELocation","THENationality","Subject","LevelOfStudy","desired_study_level","CurrentLevelOfStudy","current_study_level","DepartureYear","desired_study_year","Ip","THEID","referalDomain","Website","FormCampaignText","Referral","setupThePayload","desired_study_location","desired_study_subject","desired_study_date","partner_name","partner_user_id","partner_consent","the_consent","signup","onSubmit","partnerPayload","log","JSON","stringify","partnerResponse","thePayload","MessageCode","partner_new_user","theResponse","statusCode","alert","getElementById","innerHTML","dialCodeMap","countryMap","forEach","push","genericChangeHandler","touched","dirty","e","id","ref","required","validate","as","forwardRef","rules","signupconsent","consent","disabled","isSubmitting","Boolean","hostname","ReactDOM","render","StrictMode","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.d385807e.chunk.js","sourcesContent":["/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport Button from '@atlaskit/button';\nimport Select from 'react-select';\nimport {defaultTheme} from 'react-select';\nimport './SearchSelect.css';\nimport {useState} from 'react';\nconst {colors} = defaultTheme;\n\nconst selectStyles = {\n control: provided => ({...provided, minWidth: 240, margin: 8}),\n menu: () => ({boxShadow: 'inset 0 1px 0 rgba(0, 0, 0, 0.1)'}),\n};\n\nexport default function SearchSelect(props) {\n //console.log('__SearchSelect_props', props);\n const [menuState, setMenuState] = useState({isOpen: false, value: undefined});\n const toggleOpen = () => {\n setMenuState({isOpen: !menuState.isOpen});\n };\n const onSelectChange = (value, context) => {\n props.onChange(value, context);\n toggleOpen();\n setMenuState({value});\n };\n\n const {isOpen, value} = menuState;\n\n return (\n
\n {props.label}\n }\n onClick={toggleOpen}\n isSelected={isOpen}\n >\n {value ? `${value.label}` : props.buttonSelectLabel || props.buttonPlaceholder || 'Please select'}\n \n }\n >\n \n \n
\n\n );\n}\n\n/* styled components */\nconst Menu = props => {\n const shadow = 'hsla(218, 50%, 10%, 0.1)';\n return (\n \n );\n};\nconst Blanket = props => (\n \n);\nconst Dropdown = ({ children, isOpen, target, onClose }) => (\n
\n {target}\n {isOpen ? {children} : null}\n {isOpen ? : null}\n
\n);\nconst Svg = p => (\n \n);\nconst DropdownIndicator = () => (\n
\n \n \n \n
\n);\nconst ChevronDown = () => (\n \n \n )\n\n","import React from 'react';\nimport {useState, useEffect} from 'react';\nimport {useForm, Controller} from \"react-hook-form\";\nimport \"./Form.css\";\nimport \"./float-label.css\";\nimport useReferralData from \"./hooks/useReferralData\";\nimport SearchSelect from \"./components/SearchSelect\";\n\n\nexport default function Form() {\n const apiServer = process.env.REACT_APP_API_PROTOCOL + '://' + process.env.REACT_APP_API_HOSTNAME;\n\n const {register, handleSubmit, errors, triggerValidation, setValue, getValues, formState, control} = useForm({\n mode: 'onChange'\n });\n\n const [authToken, setBearer] = useState('');\n const [clientIp, setIp] = useState('');\n\n useEffect(() => {\n\n const getAuthToken = () => {\n const initialToken = '23-93-63-D7-E2-15-5C-12-C1-FD-FC-A9-B9-75-3A-B6-59-97-5B-97-1E-49-A8-A9-BC-65-FF-59-6B-45-F6-5E';\n makeCall('https://webapi.studyin-uk.com/api/WebSiteForms/Certify', {\n method: 'GET',\n headers: {'content-type': 'application/json', Authorization: initialToken}\n }).then((authResponse) => {\n setBearer(authResponse.Data);\n }).catch(() => {\n console.error('Cannot authenticate application');\n });\n };\n\n async function getIp() {\n const response = await fetch(\"https://api.ipify.org?format=json\");\n const body = await response.json();\n setIp(body.ip);\n }\n getAuthToken();\n getIp();\n\n }, []);\n\n const referralData = useReferralData({apiServer});\n\n const validateEmail = async (value) => {\n const emailFormat = /^[a-zA-Z0-9.!#$%&鈥�*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n return !!value.match(emailFormat);\n };\n\n const validateMobile = async (value) => {\n const values = getValues();\n const country_code = (values.dial_code && values.dial_code.value) ? values.dial_code.value : values.dial_code;\n if (!country_code) {\n return false;\n }\n const dial_code = referralData.locations.find(x => x.iso === country_code).dialling_code;\n const numberFormat = /^\\+[0-9]{1,4}[0-9]{6,14}$/;\n const fullNumber = dial_code + value;\n return !!fullNumber.match(numberFormat);\n };\n\n const makeCall = async (url, requestOptions) => {\n return await fetch(url, requestOptions)\n .then(async response => {\n const data = await response.json();\n // check for error response\n if (!response.ok) {\n // get error message from body or default to response status\n const error = (data && data.message) || response.status;\n console.error(response);\n console.error(error);\n return Promise.reject(error);\n }\n return data;\n })\n .catch(error => {\n console.error('There was a fetch error:', error);\n });\n };\n\n const utmParams = (caseType) => {\n let urlParams = new URLSearchParams(window.location.search);\n let utmData = {};\n const allowedParams = {\n UtmSource: \"utm_source\",\n UtmMedium: \"utm_medium\",\n UtmCampaign: \"utm_campaign\"\n };\n for (let key in allowedParams) {\n if (urlParams.has(allowedParams[key])) {\n // Default to PascalCase but allow snake_case.\n const returnKey = (caseType === 'snake') ? allowedParams[key] : key;\n utmData[returnKey] = urlParams.get(allowedParams[key]);\n }\n }\n return utmData;\n };\n\n const currentReferrer = () => ({\n referral_domain: document.location.href.split('/')[2],\n referral_reference: document.location.pathname\n });\n\n const setupPartnerPayload = (values) => {\n const dialCodeLocation = referralData.locations.find(x => x.iso === values.dial_code);\n const nationality = referralData.locations.find(x => x.iso === values.nationality);\n const currentLocation = referralData.locations.find(x => x.iso === values.current_location);\n const selectedSubject = referralData.subjects.find(x => x.value === values.subject_interest);\n const referralInfo = currentReferrer();\n let payload = {\n Data: {\n FirstName: values.first_name,\n LastName: values.last_name,\n TelMobile: dialCodeLocation.dialling_code + \" \" + values.phone_number,\n Email: values.email,\n THELocation: currentLocation.name,\n THENationality: nationality.name,\n Subject: selectedSubject.label,\n LevelOfStudy: values.desired_study_level,\n CurrentLevelOfStudy: values.current_study_level,\n DepartureYear: values.desired_study_year,\n Ip: clientIp,\n THEID: \"12345\",\n ...utmParams(),\n referalDomain: referralInfo.referral_domain,\n Website: referralInfo.referral_domain,\n FormCampaignText: 'THE Website'\n }\n };\n // For Referral, possibly use the prior page? this might be profile.\n payload.Data.Referral = \"tbc\";\n return payload;\n };\n\n const setupThePayload = (values) => {\n const dialCodeLocation = referralData.locations.find(x => x.iso === values.dial_code);\n const currentLocation = referralData.locations.find(x => x.iso === values.current_location);\n const nationality = referralData.locations.find(x => x.iso === values.nationality);\n const selectedSubject = referralData.subjects.find(x => x.value === values.subject_interest);\n let payload = {\n email: values.email,\n first_name: values.first_name,\n last_name: values.last_name,\n nationality: nationality.name,\n current_location: currentLocation.name,\n ip: clientIp,\n dial_code: dialCodeLocation.dialling_code,\n phone_number: values.phone_number,\n desired_study_location: \"GB\", // Hmmmmm\n desired_study_subject: selectedSubject.label,\n current_study_level: values.current_study_level,\n desired_study_level: values.desired_study_level,\n desired_study_date: values.desired_study_year,\n partner_name: \"siuk\",\n partner_user_id: \"\",\n partner_consent: 1,\n the_consent: values.signup,\n ...utmParams('snake'),\n ...currentReferrer()\n };\n return payload;\n };\n\n const onSubmit = async (values) => {\n // Setup partner payload\n const partnerPayload = setupPartnerPayload(values);\n console.log('partnerPayload::', partnerPayload);\n let partnerResponse = await makeCall(\"https://webapi.studyin-uk.com/api/WebSiteForms/THEInsertFormData\", {\n method: 'POST',\n headers: {'content-type': 'application/json', Authorization: authToken},\n body: JSON.stringify(partnerPayload)\n });\n console.log('partnerResponse::', partnerResponse);\n\n let thePayload = setupThePayload(values);\n console.log('thePayload::', thePayload);\n if (partnerResponse && partnerResponse.MessageCode) {\n if (partnerResponse.MessageCode === 201) {\n thePayload.partner_new_user = 1;\n }\n else if (partnerResponse.MessageCode === 302) {\n thePayload.partner_new_user = 1;\n }\n thePayload.partner_user_id = partnerResponse.Data;\n }\n let theResponse = await makeCall(\"https://v4nf71d21l.execute-api.eu-west-1.amazonaws.com/prod/user-data\", {\n method: 'POST',\n headers: {'content-type': 'application/json'},\n body: JSON.stringify(thePayload)\n });\n console.log('theResponse::', theResponse);\n if (theResponse && theResponse.statusCode !== 200) {\n alert('There was a problem, please try again.');\n }\n else {\n const root = document.getElementById('formContainer');\n root.innerHTML ='

Thank you for submitting your enquiry.

SI-UK will contact you within 24 hours to arrange your initial consultation.

';\n }\n };\n\n let dialCodeMap = [];\n let countryMap = [];\n referralData.locations.forEach(function(location) {\n dialCodeMap.push({value: location.iso, label: location.dialling_code + ' (' + location.name + ')' });\n countryMap.push({value: location.iso, label: location.name});\n });\n\n const genericChangeHandler = (value, context) => {\n setValue(context.name, value.value);\n formState.touched[context.name] = true;\n formState.dirty = true;\n if (context.name === 'dial_code') {\n triggerValidation('phone_number').catch(e => console.error('Phone validation did not trigger', e));\n }\n return value.value;\n };\n\n return (\n
\n\n

Sign up to receive free personalised advice on studying in the UK

\n
\n

Thinking about attending university in the United Kingdom? We know that the idea of studying abroad can be\n daunting as well as exciting so we鈥檙e here to help. Through our trusted partner SI-UK, THE is making sure you\n get access to the best possible advice when it comes to making one of the biggest decisions of your life 鈥� who\n to trust with your education.

\n

Through SI-UK鈥檚 free advice service they will get to know more about your needs and help answer any questions\n or concerns you might have, leaving you in the best possible position to complete your university\n applications.

\n

If you鈥檇 like to know more, simply complete the form on this page and SI-UK鈥檚 friendly team will be in\n touch.

\n

 

\n
\n\n
\n\n

Personal details

\n\n
\n \n \n {errors.first_name && errors.first_name.type === \"required\" && (First name is required)}\n
\n\n
\n \n \n {errors.last_name && errors.last_name.type === \"required\" && (Last name is required)}\n
\n\n
\n \n \n {errors.email && errors.email.type === \"required\" && (E-mail address is required)}\n {errors.email && errors.email.type === \"validate\" && (E-mail address is an invalid address)}\n
\n\n
\n \n }\n buttonPlaceholder={\"Dial code\"}\n control={control}\n rules={{ required: true }}\n name=\"dial_code\"\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n \n {errors.phone_number && errors.phone_number.type === \"validate\" && (\n Phone number is not recognised)}\n
\n\n\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"nationality\"\n label={\"Nationality\"}\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.nationality && errors.nationality.type === \"required\" && (Nationality is required)}\n
\n\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"current_location\"\n label={\"Current location\"}\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.current_location && errors.current_location.type === \"required\" && (Current location is required)}\n
\n\n

Study preferences

\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"subject_interest\"\n label={\"Desired study subject\"}\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.subject_interest && errors.subject_interest.type === \"required\" && (\n Desired study subject is required)}\n
\n\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"desired_study_year\"\n label={\"Desired study year\"}\n className={\"custom-control\"}\n isSearchable={false}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.desired_study_year && errors.desired_study_year.type === \"required\" && (\n Desired study year is required)}\n
\n\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"current_study_level\"\n label={\"Current level of study\"}\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.current_study_level && errors.current_study_level.type === \"required\" && (\n Current level of study is required)}\n
\n\n
\n }\n control={control}\n rules={{ required: true }}\n name=\"desired_study_level\"\n label={\"Desired level of study\"}\n className={\"custom-control\"}\n onChange={([value, context]) => (genericChangeHandler(value, context))}\n />\n {errors.desired_study_level && errors.desired_study_level.type === \"required\" && (\n Desired level of study is required)}\n
\n\n

Opt in

\n
\n \n {errors.signup && errors.signupconsent.type === \"validate\" && (You must consent to proceed)}\n
\n\n
\n \n {errors.consent && errors.consent.type === \"validate\" && (You must consent to proceed)}\n
\n {/**/}\n \n\n
\n

About SI-UK

\n

SI-UK provides free independent advice and support to international students applying to study in the UK. Their\n international education consultants are UK university graduates who are fully experienced and trained by trusted\n university partners and the British Council. They will help guide you through each step of the application\n process to any UK university, language school or college.

\n\n\n
\n );\n}\n","import {useState, useEffect} from 'react';\n\nexport default ({apiServer}) => {\n const [referralData, setReferralData] = useState({\n subjects: [],\n locations: [],\n studyTypes: [],\n studyYears: []\n });\n\n useEffect(() => {\n\n const fetchData = async (url, type, mapper) => {\n try {\n const response = await fetch(url);\n const body = await response.json();\n referralData[type] = body.results.map(mapper);\n setReferralData(referralData);\n } catch (error) {\n console.error(error);\n }\n };\n\n const mapper = ({value, label}) => ({label: label, value: value});\n fetchData(apiServer + \"/api/siuk/subjects\", 'subjects', mapper);\n fetchData(apiServer + \"/api/siuk/locations\", 'locations', ({name, iso, dialling_code}) => ({name: name, iso: iso, dialling_code: dialling_code}));\n fetchData(apiServer + \"/api/siuk/study_types\", 'studyTypes', mapper);\n fetchData(apiServer + \"/api/siuk/study_years\", 'studyYears', mapper);\n\n }, [referralData, apiServer]);\n\n return referralData;\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport Form from './Form';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n
\n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}