{"version":3,"sources":["webpack:///./js/react/Eligibility/Form/FormField.tsx","webpack:///./js/react/Eligibility/Invalid/index.tsx","webpack:///./js/react/Eligibility/Search/index.tsx","webpack:///./js/react/Eligibility/ActionButton/index.tsx","webpack:///./js/react/Eligibility/LinkButton/index.tsx","webpack:///./js/react/Eligibility/Valid/index.tsx","webpack:///./js/react/hooks/useIntersectionObserver.ts","webpack:///./js/react/hooks/useMedia.ts","webpack:///./js/react/Eligibility/Wrapper/index.tsx","webpack:///./js/react/Eligibility/EligibilityRoot.tsx"],"names":["FormField","errorMessage","id","label","placeholder","required","value","disabled","onChange","React","createElement","className","htmlFor","type","EligibilityInvalid","useEligibilityContext","fieldData","hasSubmitted","products","productError","searchValue","dispatch","useHabitat","termstext1","termstext2","culturecode","handleChange","event","property","newState","fields","target","payload","handleSubmit","preventDefault","postData","SearchForm","initialValue","showMessage","showProductMessage","onSubmit","e","fullName","emailAddress","contactNumber","map","product","fieldName","name","replace","itemClassName","classNames","colour","key","field","subTitle","src","image","alt","Button","text","cultureCode","fetch","method","headers","body","JSON","stringify","ok","EligibilitySearch","title","subtitle","dangerouslySetInnerHTML","__html","ActionButton","clickAction","onClick","xmlns","width","height","viewBox","transform","d","fill","strokeLinecap","strokeLinejoin","strokeWidth","LinkButton","href","EligibilityValid","selectedEmployer","employerUrlName","uriTemplate","isActive","salaryFinanceEmployerDetails","sfEmployerProducts","some","p","productCode","employerProduct","find","replaceAll","applyButtonText","registerButtonText","employerName","useIntersectionObserver","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","useMedia","queries","values","defaultValue","window","mediaQueryLists","query","matchMedia","getValue","index","findIndex","mql","matches","useState","setValue","handler","forEach","addListener","removeListener","EligibilityWrapper","hasSelectedEmployer","isValidEmployer","illustration","isInView","setInView","elementClassName","animated","responsiveThreshold","entries","isIntersecting","threshold","ref","EligibilityRoot","EligibilityProvider"],"mappings":"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","file":"30-7db1aebdbf58cc049987.js","sourcesContent":["import React from 'react';\r\nconst FormField = ({ errorMessage, id, label, placeholder, required, value, disabled, onChange, }) => {\r\n return (React.createElement(\"div\", { className: \"form-input-container \" },\r\n React.createElement(\"label\", { className: \"form-label\", htmlFor: id }, label),\r\n React.createElement(\"input\", { id: id, className: \"form-input form-input--text \", placeholder: placeholder, required: required, type: \"text\", value: value, onChange: onChange, disabled: disabled ?? false }),\r\n errorMessage && React.createElement(\"span\", { className: \"field-validation-error\" }, errorMessage)));\r\n};\r\nexport default FormField;\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { useHabitat } from '@js/react/shared/HabitatContext';\r\nimport FormField from '@react/Eligibility/Form/FormField';\r\nimport SearchForm from '@react/Eligibility/SearchForm';\r\nimport Button from '@react/Eligibility/Button';\r\nimport { useEligibilityContext } from '@react/Eligibility/useEligibilityState';\r\nconst EligibilityInvalid = () => {\r\n const [{ fieldData, hasSubmitted, products, productError, searchValue }, dispatch,] = useEligibilityContext();\r\n const { termstext1, termstext2, culturecode } = useHabitat();\r\n const handleChange = (event, property) => {\r\n const newState = { ...fieldData };\r\n newState.fields[property] = event.target.value;\r\n dispatch({\r\n type: 'SET_FIELD_DATA',\r\n payload: newState,\r\n });\r\n };\r\n const handleCheckboxChange = (field) => {\r\n const newState = { ...fieldData };\r\n newState.fields[field] = !newState.fields[field];\r\n dispatch({\r\n type: 'SET_FIELD_DATA',\r\n payload: newState,\r\n });\r\n };\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n await postData(fieldData, culturecode);\r\n dispatch({\r\n type: 'SET_SUBMITTED',\r\n payload: true,\r\n });\r\n };\r\n return (React.createElement(\"div\", { className: \"ec-invalid\" },\r\n React.createElement(\"div\", { className: \"site-wide-new\" },\r\n React.createElement(\"div\", { className: \"ec-invalid__scroll-outer\" },\r\n React.createElement(\"div\", { className: \"ec-invalid__scroll-inner\" },\r\n React.createElement(SearchForm, { initialValue: searchValue, showMessage: true, showProductMessage: productError }),\r\n !hasSubmitted ? (React.createElement(\"form\", { className: \"ec-invalid__form\", onSubmit: async (e) => handleSubmit(e) },\r\n React.createElement(\"fieldset\", { className: \"form-group\" },\r\n React.createElement(\"legend\", { className: \"form-group__title\" }, \"Now some other details\"),\r\n React.createElement(FormField, { id: \"employerName\", label: \"Your employer's full name\", placeholder: \"Your employer's full name\", required: true, value: searchValue, disabled: true }),\r\n React.createElement(FormField, { id: \"fullName\", label: \"Your full name\", placeholder: \"Your full name\", required: true, value: fieldData.fields.fullName, onChange: (event) => handleChange(event, 'fullName') }),\r\n React.createElement(FormField, { id: \"emailAddress\", label: \"Email address\", placeholder: \"Email address\", required: true, value: fieldData.fields.emailAddress, onChange: (event) => handleChange(event, 'emailAddress') }),\r\n React.createElement(FormField, { id: \"contactNumber\", label: \"Contact number\", placeholder: \"Contact number\", required: true, value: fieldData.fields.contactNumber, onChange: (event) => handleChange(event, 'contactNumber') })),\r\n React.createElement(\"fieldset\", { className: \"form-group\" },\r\n React.createElement(\"legend\", { className: \"form-group__title\" }, \"Products interested in\"),\r\n React.createElement(\"div\", { className: \"ec-invalid__product-list\" }, products.map(product => {\r\n const fieldName = product.name?.replace(/\\s+/g, '') ?? '';\r\n const itemClassName = classNames({\r\n 'ec-invalid__product': true,\r\n [`ec-invalid__product--${product.colour ?? 'ocean'}`]: true,\r\n 'ec-invalid__product--selected': !!fieldData.fields[fieldName],\r\n });\r\n return (React.createElement(\"label\", { key: product.name, className: itemClassName, htmlFor: product.name },\r\n React.createElement(\"div\", { className: \"ec-invalid__product-content\" },\r\n React.createElement(\"input\", { id: product.name, name: \"checkbox\", type: \"checkbox\", onChange: () => handleCheckboxChange(fieldName) }),\r\n React.createElement(\"span\", { className: \"ec-invalid__product-title\" }, product.name),\r\n React.createElement(\"span\", { className: \"ec-invalid__product-summary\" }, product.subTitle)),\r\n React.createElement(\"img\", { className: \"ec-invalid__product-image\", src: product.image, alt: \"\" })));\r\n })),\r\n React.createElement(\"small\", { className: \"ec-invalid__terms\" }, termstext1),\r\n React.createElement(\"small\", { className: \"ec-invalid__terms\" }, termstext2)),\r\n React.createElement(Button, { text: \"Submit Interest\" }))) : (React.createElement(\"div\", { className: \"eligibility-form__invalid-submitted\" }, \"Thank you for submitting your enquiry\")))))));\r\n};\r\nexport default EligibilityInvalid;\r\nasync function postData(fieldData, cultureCode) {\r\n const res = await fetch(`/umbraco/api/employersapi/PostEnquiry?cultureCode=${cultureCode}`, {\r\n method: 'POST',\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(fieldData.fields),\r\n });\r\n if (!res.ok) {\r\n return;\r\n }\r\n}\r\n","import React from 'react';\r\nimport SearchForm from '@react/Eligibility/SearchForm';\r\nimport { useHabitat } from '@react/shared/HabitatContext';\r\nconst EligibilitySearch = () => {\r\n const { title, subtitle } = useHabitat();\r\n return (React.createElement(\"div\", { className: \"ec-search site-wide-new\" },\r\n React.createElement(\"div\", { className: \"ec-search__inner\" },\r\n React.createElement(\"div\", null,\r\n React.createElement(\"div\", { className: \"ec-search__title-block\" },\r\n React.createElement(\"h2\", { className: \"ec-search__title\", dangerouslySetInnerHTML: { __html: title } }),\r\n React.createElement(\"h3\", { className: \"ec-search__subtitle\", dangerouslySetInnerHTML: { __html: subtitle } })),\r\n React.createElement(SearchForm, null)))));\r\n};\r\nexport default EligibilitySearch;\r\n","import React from 'react';\r\nconst ActionButton = ({ text, clickAction }) => {\r\n return (React.createElement(\"button\", { className: \"btn ec-btn\", type: \"button\", onClick: () => {\r\n clickAction();\r\n } },\r\n React.createElement(\"span\", { className: \"btn__text\" }, text),\r\n React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"12.777\", height: \"10.413\", viewBox: \"0 0 12.777 10.413\" },\r\n React.createElement(\"g\", { id: \"Group_3\", \"data-name\": \"Group 3\", transform: \"translate(-2.673 1.031)\" },\r\n React.createElement(\"path\", { id: \"arrow-line\", \"data-name\": \"Path 14\", d: \"M1.5,24H12.777\", transform: \"translate(1.923 -19.825)\", fill: \"none\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\" }),\r\n React.createElement(\"path\", { id: \"arrow-head\", \"data-name\": \"Path 15\", d: \"M1.769,13.216l4.094,4.145L1.769,21.507\", transform: \"translate(8.836 -13.186)\", fill: \"none\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\" })))));\r\n};\r\nexport default ActionButton;\r\n","import React from 'react';\r\nconst LinkButton = ({ href, target, text }) => {\r\n return (React.createElement(\"a\", { className: \"btn ec-btn\", href: href, target: target },\r\n React.createElement(\"span\", { className: \"btn__text\" }, text),\r\n React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"12.777\", height: \"10.413\", viewBox: \"0 0 12.777 10.413\" },\r\n React.createElement(\"g\", { id: \"Group_3\", \"data-name\": \"Group 3\", transform: \"translate(-2.673 1.031)\" },\r\n React.createElement(\"path\", { id: \"arrow-line\", \"data-name\": \"Path 14\", d: \"M1.5,24H12.777\", transform: \"translate(1.923 -19.825)\", fill: \"none\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\" }),\r\n React.createElement(\"path\", { id: \"arrow-head\", \"data-name\": \"Path 15\", d: \"M1.769,13.216l4.094,4.145L1.769,21.507\", transform: \"translate(8.836 -13.186)\", fill: \"none\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\" })))));\r\n};\r\nexport default LinkButton;\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport ActionButton from '@react/Eligibility/ActionButton';\r\nimport LinkButton from '@react/Eligibility/LinkButton';\r\nimport SearchForm from '@react/Eligibility/SearchForm';\r\nimport { useEligibilityContext } from '@react/Eligibility/useEligibilityState';\r\nconst EligibilityValid = () => {\r\n const [{ products, searchValue, selectedEmployer }, dispatch] = useEligibilityContext();\r\n return (React.createElement(\"div\", { className: \"ec-valid\" },\r\n React.createElement(\"div\", { className: \"site-wide-new\" },\r\n React.createElement(\"div\", { className: \"ec-valid__scroll-outer\" },\r\n React.createElement(\"div\", { className: \"ec-valid__scroll-inner\" },\r\n React.createElement(SearchForm, { initialValue: searchValue }),\r\n React.createElement(\"h3\", { className: \"ec-valid__subtitle\" }, \"Products available:\"),\r\n React.createElement(\"div\", { className: \"ec-valid__product-list\" }, products.map(product => {\r\n const isActive = selectedEmployer?.salaryFinanceEmployerDetails?.sfEmployerProducts?.some((p) => p.productCode === product?.productCode) ?? false;\r\n const employerProduct = selectedEmployer?.salaryFinanceEmployerDetails?.sfEmployerProducts?.find((p) => p.productCode === product?.productCode);\r\n const itemClassName = classNames({\r\n 'ec-valid__product': true,\r\n [`ec-valid__product--${product.colour ?? 'ocean'}`]: true,\r\n 'ec-valid__product--inactive': !isActive,\r\n });\r\n return (React.createElement(\"div\", { key: product.name, className: \"ec-valid__product-list-item\" },\r\n React.createElement(\"div\", { className: itemClassName },\r\n React.createElement(\"header\", { className: \"ec-valid__product-header\" },\r\n React.createElement(\"img\", { className: \"ec-valid__product-image\", src: product.image, alt: \"\" })),\r\n React.createElement(\"div\", { className: \"ec-valid__product-content\" },\r\n React.createElement(\"h3\", { className: \"ec-valid__product-title\" }, product.name),\r\n React.createElement(\"p\", { className: \"ec-valid__product-summary\" }, product.subTitle),\r\n !isActive ? (React.createElement(ActionButton, { text: product.registerButtonText\r\n ? product.registerButtonText\r\n : 'Register Interest', clickAction: () => {\r\n dispatch({\r\n type: 'SET_SELECTED_EMPLOYEE',\r\n payload: {\r\n searchValue: selectedEmployer?.employerName,\r\n product: product,\r\n productError: true,\r\n },\r\n });\r\n } })) : (React.createElement(LinkButton, { href: formatProductLink(selectedEmployer?.salaryFinanceEmployerDetails?.employerUrlName ?? '', employerProduct?.uriTemplate ?? ''), text: product.applyButtonText ? product.applyButtonText : 'Apply Now' })))),\r\n !isActive && React.createElement(\"small\", null, \"Sorry, this product is not available yet\")));\r\n })))))));\r\n};\r\nexport default EligibilityValid;\r\nexport function formatProductLink(employerUrlName, uriTemplate) {\r\n return uriTemplate.replaceAll('{employerurlname}', employerUrlName);\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useEffect, useState } from 'react';\r\n/**\r\n * Store a value in state based on the specified media queries.\r\n * @param {Array} queries\r\n * @param {Array} values\r\n * @param {T} defaultValue\r\n */\r\nfunction useMedia(queries, values, defaultValue) {\r\n // Avoid error with SSR.\r\n if (!window) {\r\n return;\r\n }\r\n // Array containing a media query list for each query\r\n const mediaQueryLists = queries.map(query => window.matchMedia(query));\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex(mql => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(getValue);\r\n useEffect(() => {\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach(mql => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () => mediaQueryLists.forEach(mql => mql.removeListener(handler));\r\n }, []); // Empty array ensures effect is only run on mount and unmount\r\n return value;\r\n}\r\nexport default useMedia;\r\n","import classNames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport EligibilityInvalid from '@react/Eligibility/Invalid';\r\nimport EligibilitySearch from '@react/Eligibility/Search';\r\nimport EligibilityValid from '@react/Eligibility/Valid';\r\nimport { useEligibilityContext } from '@react/Eligibility/useEligibilityState';\r\nimport useIntersectionObserver from '@react/hooks/useIntersectionObserver';\r\nimport useMedia from '@react/hooks/useMedia';\r\nimport { useHabitat } from '@react/shared/HabitatContext';\r\nconst EligibilityWrapper = () => {\r\n const [{ hasSelectedEmployer, isValidEmployer, selectedEmployer }] = useEligibilityContext();\r\n const { illustration } = useHabitat();\r\n // InView State.\r\n const [isInView, setInView] = useState(false);\r\n // Classes.\r\n const elementClassName = classNames({\r\n 'ec-wrapper': true,\r\n animated: isInView,\r\n });\r\n const responsiveThreshold = useMedia([`(min-width: 768px)`], [0.5], 0.1);\r\n // Watch for element entering viewport.\r\n const { elementRef } = useIntersectionObserver(entries => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n }, { threshold: responsiveThreshold });\r\n return (React.createElement(\"section\", { ref: elementRef, className: elementClassName },\r\n illustration && React.createElement(\"img\", { className: \"ec-wrapper__image\", src: illustration, alt: \"\" }),\r\n !hasSelectedEmployer && React.createElement(EligibilitySearch, { key: \"search\" }),\r\n hasSelectedEmployer && isValidEmployer && selectedEmployer?.salaryFinanceEmployerDetails && (React.createElement(EligibilityValid, { key: \"valid\" })),\r\n hasSelectedEmployer &&\r\n (!isValidEmployer || !selectedEmployer?.salaryFinanceEmployerDetails) && (React.createElement(EligibilityInvalid, { key: \"invalid\" }))));\r\n};\r\nexport default EligibilityWrapper;\r\n","import React from 'react';\r\nimport EligibilityWrapper from './Wrapper';\r\nimport { EligibilityProvider } from './useEligibilityState';\r\nconst EligibilityRoot = () => {\r\n return (React.createElement(EligibilityProvider, null,\r\n React.createElement(EligibilityWrapper, null)));\r\n};\r\nexport default EligibilityRoot;\r\n"],"sourceRoot":""}