{"version":3,"sources":["components/my-family-logo.png","api/ApiResult.ts","api/apiFetchHelper.ts","model/BookingDetails.tsx","common/urlUtils.ts","api/WaitlistApi.ts","components/Modal.tsx","common/yup/dateString.ts","components/schema.tsx","common/guidUtils.ts","components/ValidationMessage.tsx","components/ChildDetails.tsx","components/ContactDetails.tsx","components/ErrorIcon.tsx","components/SuccessIcon.tsx","components/SubmitButton.tsx","components/InProgressButton.tsx","components/Section/index.tsx","components/Section/Title.tsx","components/Section/Content.tsx","api/ServicesApi.ts","components/InProgressMessage.tsx","components/ServiceLoader.tsx","components/ServiceSelection.tsx","common/arrayUtils.ts","components/BookingMessage.tsx","components/Checkbox.tsx","components/BookingDay.tsx","components/PreferredDays.tsx","components/Radio.tsx","components/CareTypeGroupPicker.tsx","components/PreferredDaysPicker.tsx","components/BookingDetails.tsx","components/EnquiryForm.tsx","components/ReCaptchaOptions.tsx","components/ExternalLink.tsx","components/Footer.tsx","serviceWorker.ts","index.tsx","App.tsx"],"names":["module","exports","ApiError","status","error","statusCode","this","mapper","ApiSuccess","success","payload","Error","sendApi","method","url","body","processResponseApi","fetch","JSON","stringify","credentials","headers","fetchResponse","then","response","ok","contentType","get","startsWith","json","Promise","resolve","result","catch","CareType","getQueryParams","Url","window","location","href","providerId","query","serviceId","hmac","AddToWaitlist","id","selectedServiceId","token","occurredOn","Date","toISOString","console","log","queryServiceId","baseUrl","postApi","useModal","useState","open","onOpenModal","close","onCloseModal","openModal","closeModal","Portal","children","modalRoot","document","getElementById","createElement","setAttribute","appendChild","modalElement","useEffect","removeChild","createPortal","Modal","timer","props","duration","className","onClick","clearTimeout","callback","setTimeout","React","Component","hasLength","value","length","DateStringSchema","type","withMutation","test","DateTime","fromFormat","isValid","max","message","yupLocale","date","dateTime","fromJSDate","name","params","toISODate","startOf","min","mixed","required","next","nullable","transform","original","trimmed","trim","String","valueOf","dateString","preferredDaysSchema","yup","LDC","ASC","BSC","obj","ldc","asc","bsc","AtLeastOnePreferredDay","createError","monday","tuesday","wednesday","thursday","friday","MustBeFutureStartDate","start","startDate","local","schema","shape","primaryContact","firstName","matches","lastName","mobileNumber","emailAddress","child","dob","trimNull","booking","preferredDays","fewerDays","Guid","empty","replace","c","r","Math","random","toString","str","ValidationMessage","data-testid","ChildDetails","errors","register","placeholder","aria-label","maxLength","ref","ContactDetails","aria-placeholder","ErrorIcon","SuccessIcon","SubmitButton","LoadSpinner","InProgressButton","disabled","Section","Title","Content","getServices","mapSuccess","services","InProgressMessage","ServiceLoader","data","setData","fetchError","setFetchError","isLoading","setIsLoading","a","res","isSuccess","fetchData","useFetch","undefined","StaticService","service","setValue","toOptions","map","label","serviceName","HourglassIcon","servicePickerStyles","control","styles","isFocused","backgroundColor","border","boxShadow","valueContainer","padding","ServicePicker","setService","label-for","options","noOptionsMessage","onChange","val","components","DropdownIndicator","IndicatorSeparator","ServiceSelection","staticServiceId","Number","reduce","BookingMessage","e","sanitizedText","target","Tick","viewBox","d","Checkbox","BookingDay","PreferredDays","careType","triggerValidation","Dot","cx","cy","Radio","checked","style","gridTemplateColumns","width","height","CareTypeGroupPicker","careTypeGroup","setCareTypeGroup","validCareTypes","includes","OnlyLDC","OnlyOSHC","PreferredDaysPicker","defaultCareTypeGroup","BookingDetails","watch","careTypes","SiteKey","appConfiguration","ReCaptchaSiteKey","GetReCaptchaOptions","EnquiryForm","useForm","mode","validationSchema","formState","handleSubmit","reset","now","dateKey","setDateKey","idRef","useRef","newGuid","captchaRef","successModal","errorModal","onSubmit","details","current","key","sitekey","isSubmitting","ExternalLink","rel","Footer","alt","src","logo","Boolean","hostname","match","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.c96c11f1.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/my-family-logo.f1c3c4bb.png\";","import { IErrorResponse } from \"./ErrorResponse\";\n\nexport class ApiError {\n public readonly error?: IErrorResponse;\n public readonly statusCode: number;\n\n constructor(status: number, error?: IErrorResponse) {\n this.error = error;\n this.statusCode = status;\n }\n\n public isSuccess(): this is ApiSuccess {\n return false;\n }\n\n public mapSuccess(\n mapper: (a: SuccessPayload) => NewSuccessPayload\n ): ApiResult {\n return new ApiError(this.statusCode, this.error);\n }\n}\n\nexport type ApiResult = ApiSuccess | ApiError;\n\nexport class ApiResponse {\n public readonly statusCode: number;\n private readonly payload?: SuccessPayload;\n\n constructor(status: number, payload?: SuccessPayload) {\n this.payload = payload;\n this.statusCode = status;\n }\n\n public isSuccess(): this is ApiSuccess {\n return true;\n }\n\n public get success() {\n if (!this.payload) {\n throw new Error(\"No payload found\");\n }\n return this.payload;\n }\n}\n\nexport class ApiSuccess extends ApiResponse {\n public mapSuccess(\n mapper: (a: SuccessPayload) => NewSuccessPayload\n ): ApiResult {\n return new ApiSuccess(this.statusCode, mapper(this.success));\n }\n}\n\nexport type ApiSuccessNoContent = ApiResult;\n","import { ApiError, ApiResult, ApiSuccess } from \"./ApiResult\";\nimport { IErrorResponse } from \"./ErrorResponse\";\n\nexport function getApi(url: string): Promise> {\n return processResponseApi(fetch(url));\n}\n\nexport function deleteApi(url: string, body: object): Promise> {\n return sendApi(\"DELETE\", url, body);\n}\n\nexport function postApi(url: string, body: object): Promise> {\n return sendApi(\"POST\", url, body);\n}\n\nexport function putApi(url: string, body: object): Promise> {\n return sendApi(\"PUT\", url, body);\n}\n\nexport function patchApi(url: string, body: object): Promise> {\n return sendApi(\"PATCH\", url, body);\n}\n\nfunction sendApi(method: string, url: string, body: object): Promise> {\n let headers = {\n \"content-type\": \"application/json\"\n };\n\n return processResponseApi(\n fetch(url, {\n body: JSON.stringify(body),\n method,\n credentials: \"same-origin\",\n headers\n })\n );\n}\n\nfunction processResponseApi(fetchResponse: Promise): Promise> {\n return fetchResponse\n .then(response => {\n if (!response.ok) {\n const contentType = response.headers.get(\"content-type\");\n if (contentType !== null && contentType.startsWith(\"application/json\")) {\n return ((response.json() as any) as Promise).then(\n error => new ApiError(response.status, error)\n );\n } else {\n return new ApiError(response.status);\n }\n }\n\n if (response.status === 201 || response.status === 202 || response.status === 204) {\n return Promise.resolve(new ApiSuccess(response.status));\n }\n\n return (response.json() as Promise).then(result => {\n return new ApiSuccess(response.status, result) as ApiResult;\n });\n })\n .catch(error => {\n throw error;\n });\n}\n","export enum CareType {\n LDC = \"LDC\",\n BSC = \"BSC\",\n ASC = \"ASC\"\n}\n\nexport type BookingDays = {\n monday: boolean;\n tuesday: boolean;\n wednesday: boolean;\n thursday: boolean;\n friday: boolean;\n};\n\nexport type PreferredDays = {\n [CareType.LDC]: BookingDays;\n [CareType.ASC]: BookingDays;\n [CareType.BSC]: BookingDays;\n};\n\nexport type BookingDetails = {\n startDate: Date;\n fewerDays: boolean;\n message: string;\n preferredDays: PreferredDays;\n};\n","import Url from \"url-parse\";\n\nexport interface IQueryParams {\n providerId?: string;\n serviceId?: string;\n hmac?: string;\n}\n\nexport const getQueryParams = (): IQueryParams => {\n var url = new Url(window.location.href, true);\n return {\n providerId: url.query[\"providerId\"],\n serviceId: url.query[\"serviceId\"],\n hmac: url.query[\"hmac\"]\n };\n};\n","import { postApi } from \"./apiFetchHelper\";\nimport { Details } from \"../model/Details\";\nimport { Guid } from \"../common/guidUtils\";\nimport { getQueryParams } from \"../common/urlUtils\";\nimport { ApiError } from \"./ApiResult\";\n\nconst baseApi = \"api/v1\";\nconst controller = \"waitlist\";\n\nexport const AddToWaitlist = (id: Guid, selectedServiceId: number, token: string, body: Details) => {\n let occurredOn = new Date().toISOString();\n const { providerId, serviceId, hmac } = getQueryParams();\n if (!providerId) {\n console.log(\n \"did you mean to go to https://localhost:3000/?providerId=10621&serviceId=3&hmac=DE95E7198749479FE876A7F76FAF56EF9C8BD366BCBAB804D15C436B825026DD\"\n );\n return Promise.resolve(new ApiError(0));\n }\n\n let queryServiceId = serviceId;\n if (!queryServiceId) {\n queryServiceId = \"-1\";\n }\n\n const baseUrl = `${baseApi}/providers/${providerId}`;\n return postApi(\n `${baseUrl}/${controller}?serviceId=${selectedServiceId}&id=${id}&occurredOn=${occurredOn}&token=${token}&queryServiceId=${queryServiceId}&hmac=${hmac}`,\n body\n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport const useModal = () => {\n const [open, onOpenModal] = useState(false);\n const [close, onCloseModal] = useState(false);\n\n const openModal = () => {\n onOpenModal(true);\n };\n\n const closeModal = () => {\n onCloseModal(true);\n onOpenModal(false);\n };\n\n return { open, close, openModal, closeModal };\n};\n\nconst Portal: React.SFC = ({ children }) => {\n let modalRoot = document.getElementById(\"modal\");\n if (!modalRoot) {\n modalRoot = document.createElement(\"div\");\n modalRoot.setAttribute(\"id\", \"modal\");\n document.body.appendChild(modalRoot);\n }\n const modalElement = document.createElement(\"div\");\n useEffect(() => {\n modalRoot!.appendChild(modalElement);\n return () => {\n modalRoot!.removeChild(modalElement);\n };\n });\n return createPortal(children, modalElement);\n};\n\ntype Props = {\n close: () => void;\n duration?: number;\n callback?: () => void;\n};\n\nexport class Modal extends React.Component {\n private timer?: number;\n\n public render() {\n const { close, children, duration } = this.props;\n return (\n \n
\n
\n
\n {!duration && }\n
\n
{children}
\n
\n
\n
\n );\n }\n\n public componentWillUnmount() {\n clearTimeout(this.timer);\n }\n\n public componentDidMount() {\n const { duration, close, callback } = this.props;\n if (duration) {\n this.timer = window.setTimeout(() => {\n close();\n callback && callback();\n }, duration * 1000);\n }\n }\n}\n","/* tslint:disable:no-submodule-imports */\nimport { mixed, TestOptionsMessage } from \"yup\";\n// @ts-ignore\nimport yupLocale from \"yup/lib/locale\";\nimport { DateTime } from \"luxon\";\n\nexport const DATE_FORMAT = \"yyyy-MM-dd\";\nconst hasLength = (value: any) => value && value.length > 0;\n\nexport class DateStringSchema extends mixed {\n constructor() {\n super({ type: \"datestring\" });\n\n this.withMutation(() => {\n this.test(\n \"datestring\",\n // eslint-disable-next-line no-template-curly-in-string\n \"${path} is not a valid date\",\n (value: any) => {\n return value == null || value === \"\" || DateTime.fromFormat(value as string, DATE_FORMAT).isValid;\n }\n );\n });\n }\n\n public max(max: Date | DateTime, message: TestOptionsMessage = yupLocale.date.max): DateStringSchema {\n const dateTime: DateTime = max instanceof Date ? DateTime.fromJSDate(max) : max;\n return this.test<{ max: string }>({\n name: \"max\",\n message,\n params: { max: dateTime.toISODate() },\n test: value => {\n return (\n value == null || DateTime.fromFormat(value, DATE_FORMAT).startOf(\"day\") <= dateTime.startOf(\"day\")\n );\n }\n });\n }\n\n public min(min: Date | DateTime, message: TestOptionsMessage = yupLocale.date.min): DateStringSchema {\n const dateTime: DateTime = min instanceof Date ? DateTime.fromJSDate(min) : min;\n return this.test<{ min: string }>({\n name: \"min\",\n message,\n params: { min: dateTime.toISODate() },\n test: value => {\n return (\n value == null || DateTime.fromFormat(value, DATE_FORMAT).startOf(\"day\") >= dateTime.startOf(\"day\")\n );\n }\n });\n }\n\n public required(message: string = yupLocale.mixed.required) {\n const next = super.required(message);\n return next.test({ message, name: \"required\", test: hasLength });\n }\n\n public trimNull() {\n return this.nullable().transform((value: any, original: any) => {\n const trimmed = value ? value.trim() : value;\n if (trimmed === \"\") {\n return null;\n }\n return trimmed;\n });\n }\n\n protected _typeCheck(value: any) {\n if (value instanceof String) {\n value = value.valueOf();\n }\n\n return typeof value === \"string\";\n }\n}\n\nexport function dateString() {\n return new DateStringSchema();\n}\n","import * as yup from \"yup\";\nimport { dateString, DATE_FORMAT } from \"../common/yup/dateString\";\nimport { DateTime } from \"luxon\";\nimport { CareType } from \"../model/BookingDetails\";\n\nconst contactSchema = () =>\n yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^[a-zA-Z'][\\sa-zA-Z-']*$/, \"Invalid characters in first name\"),\n lastName: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^[a-zA-Z'][\\sa-zA-Z-']*$/, \"Invalid characters in last name\"),\n mobileNumber: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^04\\d{8}$/, \"Please enter a valid mobile number: 04xxxxxxxx (10 digits)\"),\n emailAddress: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^.+@.+/, \"Please enter a valid email address: example@example.com\")\n });\n\nconst childSchema = () =>\n yup.object().shape({\n firstName: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^[a-zA-Z'][\\sa-zA-Z-']*$/, \"Invalid characters in first name\"),\n lastName: yup\n .string()\n .trim()\n .required(\"This is a required field\")\n .matches(/^[a-zA-Z'][\\sa-zA-Z-']*$/, \"Invalid characters in last name\"),\n dob: dateString()\n .trimNull()\n .required(\"This is a required field\")\n });\n\nconst bookingDetailsSchema = () =>\n yup.object().shape({\n preferredDays: preferredDaysSchema,\n fewerDays: yup.boolean(),\n startDate: dateString()\n .trimNull()\n .test(\"futureStartDate\", \"Please enter a future start date\", MustBeFutureStartDate)\n .required(\"This is a required field\")\n });\n\nexport const preferredDaysSchema = yup\n .object({\n [CareType.LDC]: yup.mixed().nullable(),\n [CareType.ASC]: yup.mixed().nullable(),\n [CareType.BSC]: yup.mixed().nullable()\n })\n .test(\"preferredDays\", \"Must have a care type\", ValidateCareType);\n\nfunction ValidateCareType(this: yup.TestContext, obj: any) {\n const { [CareType.LDC]: ldc, [CareType.ASC]: asc, [CareType.BSC]: bsc } = obj;\n\n if (ldc) {\n return (\n (AtLeastOnePreferredDay(ldc) && !asc && !bsc) ||\n this.createError({ message: \"At least one day is required\" })\n );\n }\n\n if (asc && bsc) {\n return (\n ((AtLeastOnePreferredDay(asc) || AtLeastOnePreferredDay(bsc)) && !ldc) ||\n this.createError({ message: \"At least one day is required\" })\n );\n }\n\n if (asc) {\n return (AtLeastOnePreferredDay(asc) && !ldc) || this.createError({ message: \"At least one day is required\" });\n }\n\n if (bsc) {\n return (AtLeastOnePreferredDay(bsc) && !ldc) || this.createError({ message: \"At least one day is required\" });\n }\n\n return this.createError({ message: \"At least one day is required\" });\n}\n\nconst AtLeastOnePreferredDay = (obj: any) => obj.monday || obj.tuesday || obj.wednesday || obj.thursday || obj.friday;\n\nfunction MustBeFutureStartDate(this: yup.TestContext, start: string) {\n if (!start) {\n return true;\n }\n const startDate = DateTime.fromFormat(start, DATE_FORMAT);\n const today = DateTime.local();\n return today.startOf(\"day\") <= startDate.startOf(\"day\");\n}\n\nexport const schema = yup.object().shape({\n primaryContact: contactSchema(),\n child: childSchema(),\n booking: bookingDetailsSchema(),\n serviceId: yup\n .number()\n .nullable()\n .required(\"This is a required field\"),\n token: yup\n .string()\n .nullable()\n .required(\"This is required\")\n});\n","// https://gist.github.com/emptyother/1fd97db034ef848f38eca3354fa9ee90\n\nexport class Guid {\n public static newGuid(): Guid {\n return new Guid(\n \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n })\n );\n }\n public static get empty(): string {\n return \"00000000-0000-0000-0000-000000000000\";\n }\n public get empty(): string {\n return Guid.empty;\n }\n public static isValid(str: string): boolean {\n const validRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return validRegex.test(str);\n }\n private value: string = this.empty;\n constructor(value?: string) {\n if (value) {\n if (Guid.isValid(value)) {\n this.value = value;\n }\n }\n }\n public toString() {\n return this.value;\n }\n\n public toJSON(): string {\n return this.value;\n }\n}\n","import React from \"react\";\n\nexport const ValidationMessage: React.SFC = props => (\n

\n {props.children}\n

\n);\n","import React from \"react\";\nimport { ISectionProps } from \"./ISectionProps\";\nimport { ValidationMessage } from \"./ValidationMessage\";\n\nexport const ChildDetails: React.SFC = ({ errors, register }) => {\n return (\n <>\n \n\n
\n
\n \n {errors.child?.firstName && (\n {errors.child?.firstName.message}\n )}\n
\n\n
\n \n {errors.child?.lastName && {errors.child?.lastName.message}}\n
\n
\n\n
\n \n
\n\n
\n \n {errors.child?.dob && {errors.child?.dob.message}}\n
\n \n );\n};\n","import React from \"react\";\nimport { ISectionProps } from \"./ISectionProps\";\nimport { ValidationMessage } from \"./ValidationMessage\";\n\nexport const ContactDetails: React.SFC = ({ errors, register }) => {\n return (\n <>\n \n\n
\n
\n \n {errors.primaryContact?.firstName && (\n {errors.primaryContact?.firstName.message}\n )}\n
\n\n
\n \n {errors.primaryContact?.lastName && (\n {errors.primaryContact?.lastName.message}\n )}\n
\n
\n\n
\n \n\n \n {errors.primaryContact?.emailAddress && (\n {errors.primaryContact?.emailAddress.message}\n )}\n
\n\n
\n \n \n {errors.primaryContact?.mobileNumber && (\n {errors.primaryContact?.mobileNumber.message}\n )}\n
\n \n );\n};\n","import React from \"react\";\nexport const ErrorIcon: React.SFC = () => (\n
\n \n
\n);\n","import React from \"react\";\nexport const SuccessIcon: React.SFC = () => (\n
\n \n
\n);\n","import React from \"react\";\nexport const SubmitButton = () => (\n \n Join Waitlist\n \n);\n","import React from \"react\";\n\nconst LoadSpinner: React.SFC = ({ children }) => (\n
\n
\n
{children}
\n
\n);\n\nexport const InProgressButton = () => (\n \n);\n","import React from \"react\";\n\nimport { Content } from \"./Content\";\nimport { Title } from \"./Title\";\n\ninterface ISection {\n Title: React.SFC;\n Content: React.SFC;\n}\n\nconst Section: React.SFC & ISection = ({ children }) => {\n return
{children}
;\n};\n\nSection.Title = Title;\nSection.Content = Content;\n\nexport { Section };\n","import React from \"react\";\n\nexport const Title: React.SFC = ({ children }) =>

{children}

;\n","import React from \"react\";\n\nexport const Content: React.SFC = ({ children, ...props }) => (\n
\n {children}\n
\n);\n","import { getApi } from \"./apiFetchHelper\";\nimport { ApiResult } from \"./ApiResult\";\nimport { Service, IServicesResponse } from \"../model/Service\";\n\nconst baseApi = \"api/v1\";\nconst controller = \"services\";\n\nexport const getServices = (providerId: string | undefined): Promise> => {\n const baseUrl = `${baseApi}/providers/${providerId}`;\n return getApi(`${baseUrl}/${controller}`).then(response =>\n response.mapSuccess(success => success.services)\n );\n};\n","import React from \"react\";\n\nexport const InProgressMessage: React.SFC = props => (\n

{props.children}

\n);\n","import React, { useEffect } from \"react\";\nimport { Service } from \"../model/Service\";\nimport { getServices } from \"../api/ServicesApi\";\nimport { ApiSuccess, ApiError } from \"../api/ApiResult\";\nimport { getQueryParams } from \"../common/urlUtils\";\nimport { IErrorResponse } from \"../api/ErrorResponse\";\nimport { ValidationMessage } from \"./ValidationMessage\";\nimport { InProgressMessage } from \"./InProgressMessage\";\n\ninterface IServiceLoaderProps {\n children: (services: Service[]) => React.ReactNode;\n}\n\ninterface IFetchResult {\n data: Service[];\n isLoading: boolean;\n fetchError?: IErrorResponse;\n}\n\nconst useFetch = (providerId: string | undefined): IFetchResult => {\n const [data, setData] = React.useState([]);\n const [fetchError, setFetchError] = React.useState();\n const [isLoading, setIsLoading] = React.useState(true);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const res = await getServices(providerId);\n if (res.isSuccess()) {\n setData((res as ApiSuccess).success);\n } else {\n setFetchError((res as ApiError).error);\n }\n setIsLoading(false);\n } catch (error) {\n setFetchError(error);\n }\n };\n\n fetchData();\n }, [providerId]);\n\n return { data, fetchError, isLoading };\n};\n\nexport const ServiceLoader: React.SFC = ({ children }) => {\n const providerId = getQueryParams().providerId;\n const { data, fetchError, isLoading } = useFetch(providerId);\n\n if (providerId === undefined) {\n return Provider does not exist;\n }\n\n if (fetchError) {\n return {fetchError.message};\n }\n\n if (isLoading) {\n return Loading services;\n }\n\n if (data.length === 0) {\n return Service(s) do not exist;\n }\n\n return <>{children(data)};\n};\n","import React, { useEffect, useState } from \"react\";\nimport Select, { IndicatorProps, StylesConfig } from \"react-select\";\nimport { getQueryParams } from \"../common/urlUtils\";\nimport { IServicesSectionProps, IServiceSectionProps } from \"./ISectionProps\";\nimport { ValidationMessage } from \"./ValidationMessage\";\nimport { findService } from \"../common/arrayUtils\";\nimport { Service } from \"../model/Service\";\n\nconst StaticService: React.FC = ({ errors, service, setValue }) => {\n useEffect(() => {\n setValue(\"serviceId\", service.serviceId);\n }, [service, setValue]);\n return <>{errors.serviceId && {errors.serviceId.message}};\n};\n\ninterface IServiceOption {\n label: string;\n id: number;\n value: Service;\n}\n\nconst toOptions = (services: Service[]) => {\n return services.map(service => ({\n label: service.serviceName,\n id: service.serviceId,\n value: service\n }));\n};\n\nconst HourglassIcon: React.SFC> = () => (\n \n);\n\nconst servicePickerStyles: StylesConfig = {\n control: (styles, { isFocused }) => ({\n ...styles,\n backgroundColor: isFocused ? \"white\" : \"inherit\",\n border: \"none\",\n boxShadow: \"none\"\n }),\n valueContainer: styles => ({ ...styles, padding: \"12px\" })\n};\n\nconst ServicePicker: React.SFC = props => {\n const { children, errors, services, setValue } = props;\n const [service, setService] = useState();\n\n useEffect(() => {\n service && setValue(\"serviceId\", service.serviceId, true);\n }, [service, setValue]);\n\n return (\n <>\n \n {errors.serviceId && {errors.serviceId.message}}\n {service && children(service)}\n \n );\n};\n\nexport const ServiceSelection: React.SFC = props => {\n const { children, services } = props;\n const staticServiceId = getQueryParams().serviceId;\n if (staticServiceId !== undefined) {\n const service = findService(services, Number(staticServiceId));\n if (service === undefined) {\n return Service does not exist;\n }\n return (\n <>\n \n {children(service)}\n \n );\n }\n\n return ;\n};\n","import { Service } from \"../model/Service\";\n\nexport function findService(data: Service[], id: number) {\n var map = data.reduce(function(map: { [key: number]: Service }, service: Service) {\n map[service.serviceId] = service;\n return map;\n }, {});\n\n return map[id];\n}\n","import React from \"react\";\nimport { ISectionProps } from \"./ISectionProps\";\n\nconst maxMessageLength = 500;\n\nexport const BookingMessage: React.SFC = ({ register, setValue }) => {\n return (\n
\n \n {\n const sanitizedText = e.target.value.replace(/(<([^>]+)>)/gi, \"\");\n setValue && setValue(\"booking.message\", sanitizedText);\n }}\n />\n \n
\n );\n};\n","import React from \"react\";\n\nconst Tick = () => (\n