{"version":3,"sources":["fonts/HeronSansCondBold.woff","components/Header/SupportMenu.js","contexts/AuthContext.js","components/Header/HeaderLoggedIn.js","components/Header/Header.js","ErrorBoundary.js","routes/PrivateRoute.js","navigation.js","theme/themeProvider.js","App.js","serviceWorker.js","config/i18n.js","AppLoading.js","index.js","services/fetchRefresh.js","services/profile.js","contexts/CartReducer.js","contexts/CartContext.js","contexts/UserProfileReducer.js","contexts/UserProfileContext.js","services/product.js","contexts/ProductsContext.js","theme/colors.js","theme/fonts.js","theme/theme.js","theme/mytypography.js","theme/overrides.js"],"names":["module","exports","useStyles","makeStyles","theme","item","display","marginRight","spacing","headerIcon","width","height","opacity","SupportMenu","t","useTranslation","classes","useState","open","setOpen","anchorRef","useRef","handleClose","event","current","contains","target","handleListKeyDown","key","preventDefault","prevOpen","useEffect","focus","items","returnObjects","IconButton","ref","aria-controls","undefined","aria-haspopup","onClick","className","src","alt","Popper","anchorEl","role","transition","disablePortal","placement","TransitionProps","Grow","style","transformOrigin","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","id","onKeyDown","map","MenuItem","e","window","url","icon","label","AuthContext","createContext","AuthContextProvider","children","loaded","state","setState","a","getProfile","response","cookieDomain","iotPortalUrl","loginUrl","user","fetchUser","Provider","value","root","justifyContent","name","textAlign","marginLeft","hideMobile","breakpoints","down","color","colors","colorTransparent","popupContent","minWidth","padding","profileLarge","margin","fontSize","link","marginTop","marginBottom","bottomButtons","backgroundColor","grey1","paddingLeft","paddingRight","HeaderLoggedIn","props","authContext","useContext","ButtonBase","firstName","lastName","Avatar","Box","Typography","variant","jobTitle","flexDirection","Link","href","email","Button","fullWidth","cookies","Cookies","set","expires","Date","domain","sessionStorage","clear","location","replace","logout","headerLogo","alignItems","maxWidth","buttons","whiteSpace","header","white","borderBottom","zIndex","position","up","HeaderButtonGroup","align","rest","Header","origin","size","startIcon","ErrorBoundary","hasError","error","errorInfo","this","console","log","React","Component","PrivateRoute","component","render","URL","searchParams","toString","SelectSim","lazy","Checkout","Summary","Success","content","background","container","paddingTop","paddingBottom","EmptyLayout","MainLayout","Container","fixed","Routing","path","exact","ThemeProvider","appBarSpacer","mixins","toolbar","App","UserProfileContext","ProductsContext","CartContext","CssBaseline","maxSnack","anchorOrigin","vertical","horizontal","Boolean","hostname","match","i18n","use","LanguageDetector","Backend","initReactI18next","init","fallbackLng","debug","react","useSuspense","wait","_","centered","top","left","AppLoading","CircularProgress","ReactDOM","StrictMode","fallback","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","refreshToken","fetch","method","ok","fetchRefresh","options","json","status","headers","get","remove","assign","getProfileDetails","sumItems","cartItems","setItem","JSON","stringify","length","Storage","itemCount","reduce","total","product","quantity","price","toFixed","CartReducer","action","type","payload","trial","existingTrial","find","splice","indexOf","existingProduct","unshift","push","filter","findIndex","storage","getItem","parse","initialState","CartContextProvider","useReducer","dispatch","contextValues","removeProduct","addProduct","setQuantity","itemInCart","getCartItem","trialInCart","valid","require","persistToSessionStorage","profile","summarizeAddress","address","addressSummary","streetAddress1","streetAddress2","city","postCode","country","UserProfileReducer","Object","personalInformation","getOwnPropertyNames","forEach","prop","shippingAddress","summary","sameAsShipping","billingAddress","useSavedCard","paymentInformation","cardNumber","cardValidation","number","card","setCardType","initialValues","UserProfileContextProvider","getUserDetailsAsync","profileDetails","phone","companyName","countryOfRegistration","companyNumber","paymentMethod","savedPaymentMethod","nameOnCard","expiryMonth","expiryYear","cvc","saveCard","updateState","getSimOffers","currency","ProductsContextProvider","URLSearchParams","search","substring","products","setProducts","simOffers","fetchData","blue1","blue2","blue3","blue4","blue5","secondary","cream","grey2","grey3","grey4","grey5","grey7","grey9","black","colorTransparent1","colorTransparent2","success","warning","fontFamily","fontStyle","fontWeight","HeronSansWoff","muiTheme","typography","h1","h2","letterSpacing","h3","lineHeight","h4","h5","h6","body1","subtitle1","subtitle2","palette","primary","main","contrastText","info","planStatus","notActive","profileVerification","verified","notVerified","text","disabled","hint","light","overrides","MuiCssBaseline","fonts","MuiInputBase","input","MuiButton","contained","boxShadow","containedPrimary","outlined","border","sizeLarge","MuiDivider","MuiPaper","elevation1","MuiOutlinedInput","borderColor","MuiInputLabel","transform","PrivateTabIndicator","colorSecondary","MuiTabs","flexContainer","MuiTab","MuiMenuItem","minHeight","MuiSvgIcon","MuiSelect","select","createMuiTheme"],"mappings":"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","file":"static/js/main.5fa748d0.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/HeronSansCondBold.8a7e1e18.woff\";","import {\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuItem,\n MenuList,\n IconButton\n} from '@material-ui/core';\nimport React, { useState, useRef, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'flex',\n '& > img': {\n marginRight: theme.spacing(2)\n }\n },\n headerIcon: {\n width: '24px',\n height: '24px',\n opacity: 0.6,\n '&:hover': {\n opacity: 1\n }\n }\n}));\n\nconst SupportMenu = () => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n const anchorRef = useRef(null);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return;\n }\n\n setOpen(false);\n };\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault();\n setOpen(false);\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open);\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus();\n }\n\n prevOpen.current = open;\n }, [open]);\n\n const items = t('header.helpMenu.items', { returnObjects: true });\n return (\n <>\n \n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n {items.map((item) => {\n return (\n {\n handleClose(e);\n window.open(item.url);\n }}\n >\n {item.label}\n {item.label}\n \n );\n })}\n \n \n \n \n )}\n \n \n );\n};\n\nexport default SupportMenu;\n","import React, { createContext, useState, useEffect } from 'react';\nimport { getProfile } from '../services/profile';\n\nexport const AuthContext = createContext();\n\nconst AuthContextProvider = ({ children }) => {\n const [state, setState] = useState({ loaded: false });\n\n useEffect(() => {\n const fetchUser = async () => {\n const response = await getProfile();\n if (response) {\n setState({\n loaded: true,\n cookieDomain: response.cookieDomain,\n iotPortalUrl: response.iotPortalUrl,\n loginUrl: response.loginUrl,\n user: response.user\n });\n } else {\n setState({ loaded: true });\n }\n };\n\n fetchUser();\n }, []);\n\n return {children};\n};\n\nexport default AuthContextProvider;\n","import React, { useContext, useState, useRef, useEffect } from 'react';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Typography,\n Link,\n Button,\n Popper,\n Grow,\n Paper,\n ClickAwayListener\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Cookies from 'universal-cookie';\nimport { AuthContext } from '../../contexts/AuthContext';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n justifyContent: 'flex-end'\n },\n name: {\n textAlign: 'left',\n marginLeft: theme.spacing(2)\n },\n hideMobile: {\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n },\n icon: {\n width: 30,\n height: 25,\n color: theme.colors.colorTransparent,\n marginLeft: 20,\n marginRight: 10,\n [theme.breakpoints.down('sm')]: {\n marginLeft: 0,\n marginRight: 0\n }\n },\n popupContent: {\n minWidth: 290,\n padding: theme.spacing(2)\n },\n profileLarge: {\n width: 60,\n height: 60,\n margin: 'auto',\n fontSize: '1.8rem'\n },\n link: {\n marginTop: -theme.spacing(0.5),\n marginBottom: theme.spacing(2)\n },\n bottomButtons: {\n justifyContent: 'space-between',\n backgroundColor: theme.colors.grey1,\n '&> button': {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }\n }\n}));\n\nexport default function HeaderLoggedIn(props) {\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n const anchorRef = useRef(null);\n const authContext = useContext(AuthContext);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return;\n }\n\n setOpen(false);\n };\n\n const prevOpen = useRef(open);\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus();\n }\n\n prevOpen.current = open;\n }, [open]);\n\n const logout = () => {\n const cookies = new Cookies();\n cookies.set('jwt_token_tp', null, { expires: new Date(), domain: props.cookieDomain });\n cookies.set('jwt_refresh_token_tp', null, { expires: new Date(), domain: props.cookieDomain });\n\n sessionStorage.clear();\n window.location.replace('/');\n };\n\n return (\n <>\n \n {props.firstName !== undefined && props.lastName !== undefined && (\n \n {`${props.firstName && props.firstName[0]}${props.lastName && props.lastName[0]}`}\n \n )}\n \n \n {props.firstName} {props.lastName}\n \n {props.jobTitle && (\n \n {props.jobTitle}\n \n )}\n \n \n \n\n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n {props.firstName && props.firstName[0]}\n {props.lastName && props.lastName[0]}\n \n \n {props.firstName} {props.lastName}\n \n \n {props.email}\n \n \n Manage\n \n \n \n \n \n \n \n \n )}\n \n \n );\n}\n","import React, { useContext } from 'react';\nimport Box from '@material-ui/core/Box';\nimport { Button, Link as MaterialLink, IconButton } from '@material-ui/core';\nimport PersonIcon from '@material-ui/icons/Person';\nimport { makeStyles } from '@material-ui/core/styles';\nimport SupportMenu from './SupportMenu';\nimport HeaderLoggedIn from './HeaderLoggedIn';\nimport { AuthContext } from '../../contexts/AuthContext';\n\nconst useStyles = makeStyles((theme) => ({\n headerLogo: {\n display: 'inline-flex',\n alignItems: 'center',\n width: '150px',\n maxWidth: '50%',\n '& > img': {\n maxWidth: '100%'\n }\n },\n buttons: {\n maxWidth: '50%',\n whiteSpace: 'nowrap',\n marginLeft: 'auto'\n },\n header: {\n backgroundColor: theme.colors.white,\n display: 'flex',\n alignItems: 'center',\n padding: '0 1rem',\n borderBottom: '1px solid rgba(13, 49, 63, 0.1)',\n zIndex: 1,\n position: 'relative',\n [theme.breakpoints.up('sm')]: {\n padding: '0 2rem'\n }\n }\n}));\n\nfunction Header() {\n const classes = useStyles();\n const authContext = useContext(AuthContext);\n\n return (\n
\n \n \"\"\n \n \n \n\n {authContext.loaded && authContext.user && (\n \n )}\n\n {!authContext.user && (\n }\n >\n Sign in\n \n )}\n \n
\n );\n}\n\nfunction HeaderButtonGroup(props) {\n const { align, ...rest } = props;\n return (\n \n {props.children}\n \n );\n}\n\nfunction HeaderIcon(props) {\n const { href, classes, ...rest } = props;\n return (\n \n \"\"\n \n );\n}\n\nexport default Header;\nexport { HeaderButtonGroup, HeaderIcon };\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\n\nexport default class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({ hasError: true });\n console.log('error', error);\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n Oops! Something went really wrong\n
\n );\n }\n\n return <>{this.props.children};\n }\n}\n","import React, { useContext } from 'react';\nimport { Route } from 'react-router-dom';\nimport { AuthContext } from \"../contexts/AuthContext\";\n\nconst PrivateRoute = ({ component: Component, location, ...rest }) => {\n const authContext = useContext(AuthContext);\n const handleAuthentication = () => {\n if (authContext.loaded) {\n if (authContext.user != null) {\n return \n } else {\n const loginUrl = new URL(authContext.loginUrl);\n loginUrl.searchParams.set('redirectUrl', window.location.toString());\n window.location.replace(loginUrl);\n }\n }\n };\n\n return ;\n};\n\nexport default PrivateRoute;","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\nimport ErrorBoundary from './ErrorBoundary';\nimport Container from '@material-ui/core/Container';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PrivateRoute from './routes/PrivateRoute';\n\nconst SelectSim = React.lazy(() => import('./page/SelectSim'));\nconst Checkout = React.lazy(() => import('./page/Checkout'));\nconst Summary = React.lazy(() => import('./page/Summary'));\nconst Success = React.lazy(() => import('./page/Success'));\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n background: '#f7f6f6'\n },\n container: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4)\n }\n}));\n\nconst EmptyLayout = (props) => {\n return <>{props.children};\n};\n\nconst MainLayout = (props) => {\n const classes = useStyles();\n return (\n
\n \n {props.children}\n \n
\n );\n};\n\nexport function Routing() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { ThemeProvider as MUIThemeProvider } from '@material-ui/core/styles';\nimport theme from './theme';\n\nconst ThemeProvider = ({ children }) => {\n return {children};\n};\n\nexport default ThemeProvider;\n","import React from 'react';\nimport Header from './components/Header/Header';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { Routing } from './navigation';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ThemeProvider from './theme/themeProvider';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport AuthContextProvider from './contexts/AuthContext';\nimport ProductsContextProvider from './contexts/ProductsContext';\nimport CartContextProvider from './contexts/CartContext';\nimport UserProfileContextProvider from './contexts/UserProfileContext';\nimport { SnackbarProvider } from 'notistack';\nimport Cookies from 'universal-cookie';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '16px'\n },\n headerLogo: {\n display: 'inline-flex'\n },\n appBarSpacer: theme.mixins.toolbar\n}));\n\nif (process.env.NODE_ENV !== 'production') {\n let params = new URLSearchParams(document.location.search.substring(1));\n let jwt = params.get('jwt');\n if (jwt) {\n const cookies = new Cookies();\n cookies.set('jwt_token_tp', jwt);\n }\n}\n\nexport default function App() {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n );\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(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\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('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import i18n from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\nimport Backend from 'i18next-http-backend';\n\ni18n.use(LanguageDetector).use(Backend).use(initReactI18next).init({\n fallbackLng: 'en',\n debug: true,\n react: {\n useSuspense: true,\n wait: true,\n }\n});\n\nexport default i18n;\n","import React from 'react';\nimport { CircularProgress, Box, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((_) => ({\n root: {\n 'flex-direction': 'column',\n 'align-items': 'center',\n 'justify-content': 'center'\n },\n centered: {\n position: 'fixed',\n top: '50%',\n left: '50%',\n 'margin-top': '-140px'\n }\n}));\n\nexport default function AppLoading() {\n const classes = useStyles();\n return (\n \n
\n \n
\n
\n );\n}\n","import React, { Suspense } from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './config/i18n';\nimport AppLoading from './AppLoading';\n\nReactDOM.render(\n \n }>\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","import Cookies from 'universal-cookie';\nconst cookies = new Cookies();\n\nconst refreshToken = async () => {\n const response = await fetch(`api/profile/refresh`, { method: 'POST' });\n return response.ok;\n};\n\nconst expireSessionCookies = () => {\n cookies.remove('jwt_token_tp');\n cookies.remove('jwp_refresh_token_tp');\n};\n\nconst fetchRefresh = async (url, options) => {\n options = options || {};\n\n let loginUrl;\n const response = await fetch(url, options);\n if (response.ok) {\n return await response.json();\n } else if (response.status === 401) {\n loginUrl = response.headers.get('x-login-url');\n\n if (cookies.get('jwt_refresh_token_tp')) {\n const refreshed = await refreshToken();\n if (refreshed) {\n return await fetchRefresh(url, options);\n }\n }\n }\n\n expireSessionCookies();\n //If we get here the user is nolonger authenticated.\n window.location.assign(`${loginUrl}?redirectUrl=${window.location}`);\n};\n\nexport default fetchRefresh;\n","import fetchRefresh from './fetchRefresh';\n\nconst getProfile = async () => {\n return await fetchRefresh(`api/profile`);\n};\n\nconst getProfileDetails = async () => {\n return await fetchRefresh(`api/profile/details`);\n};\n\nconst getPaymentDetails = async (id) => {\n return await fetchRefresh(`api/profile/paymentmethod?id=${id}`);\n};\n\nexport { getProfile, getProfileDetails, getPaymentDetails };\n","const Storage = (cartItems) => {\n sessionStorage.setItem('cart', JSON.stringify(cartItems.length > 0 ? cartItems : []));\n};\n\nexport const sumItems = (cartItems) => {\n Storage(cartItems);\n let itemCount = cartItems.reduce((total, product) => total + product.quantity, 0);\n let total = cartItems\n .reduce((total, product) => total + product.price * product.quantity, 0)\n .toFixed(2);\n return { itemCount, total };\n};\n\nexport const CartReducer = (state, action) => {\n switch (action.type) {\n case 'ADD_ITEM':\n let items = [...state.cartItems];\n\n //Remove any existing trial SIM\n if (action.payload.trial) {\n const existingTrial = items.find((item) => item.trial);\n if (existingTrial) {\n items.splice(items.indexOf(existingTrial), 1);\n }\n }\n\n let existingProduct = items.find((item) => item.id === action.payload.id);\n if (existingProduct) {\n existingProduct.quantity += action.payload.quantity;\n } else {\n if (action.payload.trial) {\n items.unshift({\n ...action.payload,\n quantity: action.payload.quantity || 1\n });\n } else {\n items.push({\n ...action.payload,\n quantity: action.payload.quantity || 1\n });\n }\n }\n\n return {\n ...state,\n ...sumItems(items),\n cartItems: [...items]\n };\n case 'REMOVE_ITEM':\n return {\n ...state,\n ...sumItems(state.cartItems.filter((item) => item.id !== action.payload.id)),\n cartItems: [...state.cartItems.filter((item) => item.id !== action.payload.id)]\n };\n case 'SET_QUANTITY':\n state.cartItems[state.cartItems.findIndex((item) => item.id === action.payload.id)].quantity =\n action.payload.quantity;\n return {\n ...state,\n ...sumItems(state.cartItems),\n cartItems: [...state.cartItems]\n };\n default:\n return state;\n }\n};\n","import React, { createContext, useReducer } from 'react';\nimport { CartReducer, sumItems } from './CartReducer';\n\nexport const CartContext = createContext();\n\nconst storage = sessionStorage.getItem('cart') ? JSON.parse(sessionStorage.getItem('cart')) : [];\nconst initialState = { cartItems: storage, ...sumItems(storage) };\n\nconst CartContextProvider = ({ children }) => {\n const [state, dispatch] = useReducer(CartReducer, initialState);\n\n const setQuantity = (payload) => {\n dispatch({ type: 'SET_QUANTITY', payload });\n };\n\n const addProduct = (payload) => {\n dispatch({ type: 'ADD_ITEM', payload });\n };\n\n const removeProduct = (payload) => {\n dispatch({ type: 'REMOVE_ITEM', payload });\n };\n\n const itemInCart = (product) => {\n return state.cartItems.find((item) => item.id === product.id) != null;\n };\n\n const trialInCart = () => {\n return state.cartItems.find((item) => item.trial);\n };\n const getCartItem = (product) => {\n return state.cartItems.find((item) => item.id === product.id);\n };\n\n const contextValues = {\n removeProduct,\n addProduct,\n setQuantity,\n itemInCart,\n getCartItem,\n trialInCart,\n ...state\n };\n\n return {children};\n};\n\nexport default CartContextProvider;\n","const valid = require('card-validator');\n\nconst persistToSessionStorage = (profile) => {\n sessionStorage.setItem('userProfile', JSON.stringify(profile));\n};\n\nconst summarizeAddress = (address) => {\n let addressSummary = '';\n if (address.streetAddress1) {\n addressSummary += `${address.streetAddress1}, `;\n }\n\n if (address.streetAddress2) {\n addressSummary += `${address.streetAddress2}, `;\n }\n\n if (address.city) {\n addressSummary += `${address.city}, `;\n }\n\n if (address.state) {\n addressSummary += `${address.state}, `;\n }\n\n if (address.postCode) {\n addressSummary += `${address.postCode}, `;\n }\n\n if (address.country) {\n addressSummary += `${address.country}`;\n }\n\n return addressSummary;\n};\n\nconst setCardType = (cardNumber) => {\n const cardValidation = valid.number(cardNumber);\n return cardValidation.card ? cardValidation.card.type : '';\n};\n\nconst UserProfileReducer = (state, action) => {\n switch (action.type) {\n case \"PROFILE_LOADED\": \n state = Object.assign(state, action.payload);\n if (!state.loaded) {\n state.loaded = true;\n }\n\n persistToSessionStorage(state);\n return { ...state };\n case 'UPDATE_PROFILE':\n if (action.payload) {\n if (action.payload.personalInformation) {\n Object.getOwnPropertyNames(action.payload.personalInformation).forEach(prop => {\n state.personalInformation[prop] = action.payload.personalInformation[prop];\n });\n }\n\n if (action.payload.shippingAddress) {\n Object.getOwnPropertyNames(action.payload.shippingAddress).forEach(prop => {\n state.shippingAddress[prop] = action.payload.shippingAddress[prop];\n });\n state.shippingAddress.summary = summarizeAddress(state.shippingAddress);\n if (state.sameAsShipping) {\n state.billingAddress.summary = summarizeAddress(state.shippingAddress)\n }\n }\n\n if (action.payload.sameAsShipping !== undefined) {\n state.sameAsShipping = action.payload.sameAsShipping;\n }\n\n if (action.payload.billingAddress) {\n Object.getOwnPropertyNames(action.payload.billingAddress).forEach(prop => {\n state.billingAddress[prop] = action.payload.billingAddress[prop];\n });\n state.billingAddress.summary = summarizeAddress(\n state.sameAsShipping ? state.shippingAddress : state.billingAddress);\n }\n\n if (action.payload.useSavedCard !== undefined) {\n state.useSavedCard = action.payload.useSavedCard;\n }\n\n if (action.payload.paymentInformation) {\n Object.getOwnPropertyNames(action.payload.paymentInformation).forEach(prop => {\n state.paymentInformation[prop] = action.payload.paymentInformation[prop];\n });\n\n if (state.paymentInformation.cardNumber) {\n state.paymentInformation.type = setCardType(state.paymentInformation.cardNumber)\n }\n }\n }\n\n persistToSessionStorage(state);\n return { ...state };\n default:\n return { ...state };\n }\n};\n\nexport default UserProfileReducer;\n","import React, { createContext, useReducer, useEffect } from 'react';\nimport { getProfileDetails } from '../services/profile';\nimport UserProfileReducer from './UserProfileReducer';\n\nexport const UserProfileContext = createContext();\n\nlet initialValues = { loaded: false };\nif (sessionStorage.getItem('userProfile')) {\n initialValues = Object.assign(initialValues, JSON.parse(sessionStorage.getItem('userProfile')));\n initialValues.loaded = true;\n}\n\nconst UserProfileContextProvider = ({ children }) => {\n const [state, dispatch] = useReducer(UserProfileReducer, initialValues);\n\n useEffect(() => {\n const getUserDetailsAsync = async () => {\n const profileDetails = await getProfileDetails();\n if (profileDetails) {\n dispatch({\n type: 'PROFILE_LOADED',\n payload: {\n personalInformation: {\n firstName: profileDetails.profile.firstName,\n lastName: profileDetails.profile.lastName,\n email: profileDetails.profile.email,\n phone: profileDetails.profile.phone,\n companyName: profileDetails.profile.companyName,\n jobTitle: profileDetails.profile.jobTitle,\n countryOfRegistration: profileDetails.profile.countryOfRegistration,\n companyNumber: profileDetails.profile.companyNumber,\n type: profileDetails.profile.type\n },\n shippingAddress: { ...profileDetails.profile.shippingAddress },\n sameAsShipping: true,\n billingAddress: { ...profileDetails.profile.billingAddress },\n useSavedCard: !!profileDetails.paymentMethod,\n savedPaymentMethod: profileDetails.paymentMethod,\n paymentInformation: {\n nameOnCard: '',\n cardNumber: '',\n expiryMonth: '',\n expiryYear: '',\n cvc: '',\n saveCard: false\n }\n }\n });\n }\n };\n\n if (!state.loaded) {\n getUserDetailsAsync();\n }\n }, [state.loaded]);\n\n const updateState = (payload) => {\n dispatch({ type: 'UPDATE_PROFILE', payload });\n };\n\n const contextValues = {\n updateState,\n ...state\n };\n\n return (\n {children}\n );\n};\n\nexport default UserProfileContextProvider;\n","const getSimOffers = async (currency) => {\n const response = await fetch(`api/products?currency=${currency}`);\n const json = await response.json();\n return json;\n};\n\nexport { getSimOffers };\n","import React, { createContext, useState, useEffect } from 'react';\nimport { getSimOffers } from '../services/product';\n\nexport const ProductsContext = createContext();\n\nconst ProductsContextProvider = ({ children }) => {\n let params = new URLSearchParams(document.location.search.substring(1));\n let currency = params.get('currency') || 'EUR';\n const [products, setProducts] = useState({ products: [] });\n\n useEffect(() => {\n const fetchData = async () => {\n const simOffers = await getSimOffers(currency);\n setProducts(simOffers);\n };\n\n fetchData();\n }, [currency]);\n\n return {children};\n};\n\nexport default ProductsContextProvider;\n","const colors = {\n // truphone blue tones\n blue1: '#2a9ec2',\n blue2: '#30819e',\n blue3: '#20667f',\n blue4: '#104c5f',\n blue5: '#01313f',\n\n secondary: '#01313f',\n\n // truphone neutral tones\n cream: '#f7f6f6',\n\n // truphone grey tones\n grey1: '#f3f6f6',\n grey2: '#e8ecee',\n grey3: '#dde3e5',\n grey4: '#d1d9dc',\n grey5: '#c6ccce',\n grey7: '#a1a0a1',\n grey9: '#767c7e',\n\n black: '#000000',\n white: '#ffffff',\n\n colorTransparent: 'rgba(13, 49, 63, .5)',\n colorTransparent1: 'rgba(13, 49, 63, .3)',\n colorTransparent2: 'rgba(13, 49, 63, .65)',\n\n // truphone context colors\n success: '#04c453',\n error: '#e74243',\n warning: '#f57c00'\n};\n\nexport default colors;\n","import HeronSansWoff from '../fonts/HeronSansCondBold.woff';\n\nconst heron = {\n fontFamily: 'HeronSansCond',\n fontStyle: 'normal',\n fontWeight: 'normal',\n src: `\n local('HeronSansCond'),\n local('HeronSansCondBold'),\n url('${HeronSansWoff}') format('woff')\n `\n};\n\nexport default [heron];\n","import { createMuiTheme } from '@material-ui/core';\nimport overrides from './overrides';\nimport colors from './colors';\nimport typography from './mytypography';\n\n//import {TruphoneTheme} from '@truphone/react-components'\n\nconst muiTheme = {\n colors,\n typography,\n spacing: 8,\n palette: {\n primary: { main: colors.blue1, contrastText: colors.white },\n secondary: { main: colors.secondary, contrastText: colors.white },\n error: { main: colors.error, contrastText: colors.white },\n success: { main: colors.success, contrastText: colors.white },\n info: { main: colors.grey1, contrastText: colors.blue5 },\n planStatus: { main: colors.blue1, contrastText: colors.white, notActive: colors.grey9 },\n profileVerification: { verified: colors.blue1, notVerified: colors.error },\n text: {\n primary: colors.blue5,\n secondary: 'rgba(13, 49, 63, 0.6)',\n disabled: 'rgba(13, 49, 63, 0.4)',\n hint: 'rgba(13, 49, 63, 0.6)',\n light: colors.white\n }\n },\n overrides: overrides()\n};\n\nconst theme = {\n //...TruphoneTheme,\n ...muiTheme\n};\n\nexport default createMuiTheme(theme);\n","export default {\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n h1: {\n fontSize: '52px'\n },\n h2: {\n fontFamily: 'HeronSansCond',\n fontSize: '2.125rem',\n letterSpacing: '2px'\n },\n h3: {\n fontSize: '1.5rem',\n lineHeight: '1.5'\n },\n h4: {\n fontSize: '.875rem',\n letterSpacing: '1.5px'\n },\n h5: {\n fontSize: '14px',\n lineHeight: 1.43\n },\n h6: {\n fontSize: '1rem',\n fontWeight: 700\n },\n body1: {\n fontSize: '1rem'\n },\n subtitle1: {\n fontSize: '.75rem',\n letterSpacing: '0.3px',\n fontWeight: 'normal'\n },\n subtitle2: {\n fontSize: '.875rem',\n letterSpacing: '.5px',\n fontWeight: 'bold'\n }\n};\n","import colors from './colors';\nimport fonts from './fonts';\n\nexport default () => {\n return {\n MuiCssBaseline: {\n '@global': {\n '@font-face': [...fonts]\n }\n },\n MuiInputBase: {\n input: {\n '&:-internal-autofill-selected': {\n backgroundColor: 'transparent !important'\n }\n }\n },\n MuiButton: {\n root: {\n fontSize: '14px',\n fontWeight: 'bold',\n letterSpacing: '1.5px',\n padding: '0 2rem',\n height: '36px'\n },\n contained: {\n boxShadow: 'none',\n '&:active': {\n boxShadow: 'none'\n },\n '&:hover': {\n boxShadow: 'none'\n }\n },\n containedPrimary: {\n '&:hover': {\n color: colors.white\n }\n },\n outlined: {\n padding: '0 2rem',\n border: '2px solid' + colors.grey2\n },\n sizeLarge: {\n padding: '0 2rem',\n lineHeight: 1.2,\n height: '52px',\n minWidth: '12rem'\n }\n },\n MuiDivider: {\n root: {\n backgroundColor: colors.blue4,\n opacity: 0.1\n }\n },\n MuiPaper: {\n elevation1: {\n boxShadow: '0 4px 5px 0 rgba(13, 49, 63, 0.05), 0 1px 5px 0 rgba(13, 49, 63, 0.05)'\n }\n },\n MuiOutlinedInput: {\n root: {\n '&$focused $notchedOutline': {\n borderColor: colors.blue5 + '!important'\n }\n },\n input: {\n padding: '11.5px 14px'\n }\n },\n MuiInputLabel: {\n root: {\n '&$focused': {\n color: colors.blue5\n }\n },\n outlined: {\n transform: 'translate(14px, 14px) scale(1)'\n }\n },\n PrivateTabIndicator: {\n colorSecondary: {\n backgroundColor: colors.blue5\n }\n },\n MuiTabs: {\n root: {\n borderBottom: '1px solid' + colors.grey3\n },\n flexContainer: {\n backgroundColor: colors.white\n }\n },\n MuiTab: {\n root: {\n letterSpacing: '1.5px'\n }\n },\n MuiMenuItem: {\n root: {\n minHeight: 36,\n\n '@media (min-width: 600px)': {\n minHeight: 36,\n }\n }\n },\n MuiSvgIcon: {\n root: {\n fontSize: '2rem',\n }\n },\n MuiSelect: {\n select: {\n '&:focus': {\n backgroundColor: 'transparent'\n }\n },\n icon: {\n fontSize: '2.6rem',\n top: 'calc(50% - 20px)',\n color: colors.blue5\n }\n }\n };\n};\n"],"sourceRoot":""}