{"version":3,"sources":["components/stepProgress.js","components/modals/babyGrow.js","components/modals/hearthBeat.js","components/modals/8kRealisticView.js","components/modals/terms.js","components/registerForm.js","components/selectTimeAppointment.js","components/selectTimeAppointment-v2.js","config/constans.js","services/external.js","components/boookAppointment.js","App.js","reportWebVitals.js","index.js"],"names":["StepProgress","stepOne","stepTwo","stepThree","stepProgressStyles","default","borderRight","borderBottom","borderLeft","borderTop","error","success","className","style","BabyGrow","setModalBabyGrow","onClick","e","cursor","size","icon","faTimesCircle","textAlign","HearthBeat","setModalHearthbeat","RealisticView","setModal8kRealisticView","Terms","setState","hideTerms","state","displayTerms","RegisterForm","text","params","weeks","services","selectedOptionAddons","control","register","handleSubmit","errors","Controller","onFormSubmit","onChangeServices","handleAddonsSelected","width","addOns","hoverIndexBabyGrow","hoverIndexHearthbeat","hoverIndex8kRealisticView","modalHearthbeat","modalBabyGrow","modal8kRealisticView","setClickButtonForm","selectStyles","option","styles","data","isDisabled","isFocused","isSelected","fontSize","translations","en","es","groupTextStyles","color","textTransform","groupStyles","display","alignItems","justifyContent","formatGroupLabel","label","showTerms","onSubmit","language","get","type","placeholder","firstName","required","pattern","lastName","email","phone","name","rules","render","field","options","isSearchable","length","service","onChange","value","isMulti","temsCheckbox","SelectTimeAppointment","setStepTwo","previousStep","availableBlocks","firstLoad","setSelectBlock","leadState","setLeadState","scrollParenTop","selectedBlock","handleAvailabilityBlockSelect","block","a","startDateTime","leadRegistered","leadPayload","partitionKey","partititonKey","orderKey","dateTimeSeleted","step","leadRequest","method","headers","authorization","siteid","siteId","body","JSON","stringify","fetch","process","leadResponse","json","leadData","ok","leadUpdate","console","onSelectedDay","val","moment","format","toString","startDate","useEffect","nextDay","add","setTimeout","blockSelected","id","DatePicker","labelFormat","selectDate","Date","getSelectedDay","endDate","availabilityRequestStatus","map","index","segment","disabled","spin","faSpinner","message","formatPhoneNumber","phoneNumber","replace","getAvailability","accesssToken","locationId","sessionTypeId","siteInfo","queryParams","URLSearchParams","timeZone","url","request","response","Error","status","bookeableSchedule","reShaped","slot","staffId","startTime","SelectTimeAppointmentV2","useState","bookable","setBookable","setFirstLoad","skipCounter","setSkipCounter","fetchAvailability","resp","blockDate","buildBlock","dateString","toLocaleTimeString","undefined","hour","minute","hour12","href","blocks","endSegment","appointment","removeTags","str","getIp","ip","BookAppointment","clientState","addHeartbeatBuddies","add8kRealisticView","setStepThree","googleTrackBooking","setClientState","localTime","ipAddress","bookAppointment","appointmentRequestStatus","createAppointment","clientObject","clientRequestStatus","payload","mobilePhone","createClientRequest","createClientResponse","createClientData","createdClient","clientId","createClientRequestStatus","parseInt","clientData","clientName","notes","bookAppointmentRequest","bookAppointmentResponse","bookAppointmentData","mailBody","locationName","city","web","locationPhone","locationAddress","address","howArrive","howtoarrive","appointmentId","Appointment","Id","clientEmail","serviceName","sessionTypeName","postMail","mailResponse","nameListAddons","i","dynamoPayload","SessionTypeId","LocationId","StaffId","ClientId","Notes","StartDateTime","Status","firstAppointment","FirstAppointment","programId","ProgramId","bookDate","date","account","bookDateTime","bookTimeUTC","utc","toISOString","split","servicePrice","includes","source","cbff","bookTime","putDynamo","dynamoResponse","dynamoData","leadDeleted","log","time","textMessageStatus","textMessage","captchaReady","App","window","location","search","setLocalTime","setWindowWidth","useV2","latitude","longitude","showAddons","searchResults","clientIsEqual","setAvailableBlocks","setServices","setSelectedOptionAddons","setStepOne","setAddHeartbeatBuddies","setAdd8kRealisticView","ultrasounds","setUltrasounds","consultedUltrasounds","setConsultedUltrasounds","setWeeks","sitesInfo","setSitesInfo","sendForm","setSendForm","specialPromotion25min","genderdetermination","earlypregnancy","meetyourbaby25","meetyourbaby15","fixedServices","setFixedServices","setHoverIndex8kRealisticView","setHoverIndexBabyGrow","setHoverIndexHearthbeat","clickButtonForm","addBabysGrowth","setAddBabysGrowth","seletedService","setSeletedService","setAddOns","clientFound","parent_origin","parent","postMessage","task","find","site","getSitesInfo","getSitesData","allSitesItem","sites","sitesArray","filter","filterSite","toLocaleString","getPrice","orderServices","sort","b","getServiceId","servicesArray","purifiedServiceName","remaining","serviceId","regex","toLowerCase","indexPrice","indexOf","slice","forEach","serviceItem","remainingService","today","dayFriday","authPayload","Username","Password","encrypted","crypto","encrypt","authRequest","authResponse","authData","ultrasoundsRequest","locationid","ultrasoundResponse","ultrasoundsData","servicesUltrasounds","filterServicesBySeeOnline","seeOnLine","massageRequest","massageResponse","massageData","filterMassageData","massages","existingServices","serviceTypeId","serviceObject","price","push","item","mutableItem","displayableServices","getServices","arrayOfWeeks","element","queryStartDate","availabilityRequest","availabilityResponse","availabilityData","rooms","schedule","room","appointments","mutableAppointment","listApointments","searchFirstAppointment","reduce","acc","app","firstDates","matches","severalRooms","staffName","unavailabilities","availabilities","roomBlocks","firstDatesMatches","displayableRooms","mutableBlocks","mutableBlock","addTwelve","rawHours","hours","minutes","stringDate","endDateTime","selected","firstBlockTime","available","isToday","localStartTime","localEndTime","selectedDateBlock","firstAvailability","minDate","hourDifferenceAppt","diff","hourDifferenceBlocks","availabilityBlock","isBetween","unavailabilityBlock","EndDateTime","blockAppointment","Boolean","returnRoom","availableBlocksForDisplay","foundedBlock","availableBlock","count","sortedBlocks","currentStep","useForm","watch","formState","updateDimensions","addEventListener","removeEventListener","innerWidth","getBGCombo","indexAddon","purifiedConsulted","searchClientsRequest","searchClientsResponse","searchClientsData","clients","dateTime","peaceofmind","handleFixedServices","formattingSelectedOptionAddons","addOnsToMeetYourBaby","onMouseOver","onMouseLeave","faInfo","addOnsToGenderDetermination","addOnsToEarlyPregnancy","babyGrow","hearthbeat","realisticView","newSessionTypeId","newSessionTypeName","costMeetYourbaby25","match","costMeetYourbaby25PlusBabysGrowth","parseFloat","costMeetYourbaby15","costMeetYourbaby15PlusBabysGrowth","costGenderDetermination","costGenderPlusBabysGrowth","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.f64ebd66.chunk.js","sourcesContent":["import React from \"react\"\nimport { PropTypes } from \"prop-types\";\n\nfunction StepProgress({\n stepOne,\n stepTwo,\n stepThree,\n}) {\n\n const stepProgressStyles = {\n default: {\n borderRight: \"none\",\n borderBottom: \"none\",\n borderLeft: \"none\",\n borderTop: \"4px dotted #a9a9a9\"\n },\n error: {\n borderRight: \"none\",\n borderBottom: \"none\",\n borderLeft: \"none\",\n borderTop: \"4px dotted #dc3545\"\n },\n success: {\n borderRight: \"none\",\n borderBottom: \"none\",\n borderLeft: \"none\",\n borderTop: \"4px dotted #AE678C \",\n },\n };\n\n\n return (\n <>\n <div className=\"row mt-5 mx-auto align-items-center justify-content-center\">\n\n <div className=\"col-md-12 d-flex\">\n\n <div className={\n stepOne === \"success\" ? \"btn btn-cta-active rounded-circle\" :\n stepOne === \"invalid\" ? \"btn rounded-circle btn-cta-invalid\" :\n \"text-dark btn rounded-circle btn-cta-default bg-white\"}>\n {stepOne === \"success\" ? \"✓\" :\n stepOne === \"invalid\" ? \"X\" : \"1\"}\n </div>\n\n <div className=\"col mt-3\" style={\n stepOne === \"success\" ? stepProgressStyles.success :\n stepOne === \"invalid\" ? stepProgressStyles.error : stepProgressStyles.default} />\n\n <div className={\n stepTwo === \"success\" ? \"btn btn-cta-active rounded-circle\" :\n \"text-dark btn rounded-circle btn-cta-default bg-white\"}>\n {stepTwo === \"success\" ? \"✓\" : \"2\"}\n </div>\n\n <div className=\"col mt-3\" style={stepTwo === \"success\" ? stepProgressStyles.success : stepProgressStyles.default} />\n\n <div className={\n stepThree === \"success\" ? \"btn btn-cta-active rounded-circle\" :\n \"text-dark btn rounded-circle btn-cta-default bg-white\"}>\n {stepThree === \"success\" ? \"✓\" : \"3\"}\n </div>\n\n </div>\n\n </div>\n <div className=\"row mx-auto align-items-center justify-content-center\">\n <div className=\"col-12 d-flex\">\n\n <span className=\"col col-md-3 col-lg-4 col-xl-4\">Information</span>\n <div className=\"col\" />\n <span className=\"col col-md-5 col-lg-4 col-xl-4 text-center\">Schedule</span>\n <div className=\"col\" />\n <span className=\"col col-md-3 col-lg-4 col-xl-4 text-end\">Summary</span>\n\n </div>\n </div>\n </>\n )\n\n\n}\n\nStepProgress.propTypes = {\n stepOne: PropTypes.string.isRequired,\n stepTwo: PropTypes.string.isRequired,\n stepThree: PropTypes.string.isRequired,\n};\n\n\nexport default StepProgress;","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTimesCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport { PropTypes } from \"prop-types\";\n\n\nfunction BabyGrow({setModalBabyGrow}){\n\nreturn(\n <div className=\"lb-modal-overlay-addons\" >\n <div className=\"lb-modal-addons rounded-3\">\n <button\n className=\"closeTermsButton btn btn-link m-0 p-0\"\n onClick={(e) => setModalBabyGrow(false)}\n style={{ cursor: \"pointer\" }}\n >\n <FontAwesomeIcon\n className=\"white-icon\"\n size=\"lg\"\n icon={faTimesCircle}\n />\n </button>\n <div className=\"lb-modal-body-addons py-2 px-4 text-justify\">\n <>\n <div className=\"row mt-2\">\n <div className=\"col-12 m-1 mt-3 py-3 text-center\">\n <p style={{ textAlign: 'justify' }}>\n By adding this feature, you'll discover: baby's position in the uterus,\n weeks of pregnancy and estimated due date, baby's measurements and baby hearts activity.\n This add-on doesn't replace a medical study performed by your specialist</p>\n </div>\n </div>\n </>\n </div>\n <div className=\"lb-modal-footer-addons lb-text-center \">\n <button className=\"btn btn-cta-active rounded-pill px-3 mx-auto\"\n onClick={(e) => setModalBabyGrow(false)}\n style={{ cursor: \"pointer\" }}\n >\n Close\n </button>\n </div>\n </div>\n</div>\n)\n}\n\n\nBabyGrow.propTypes = {\n setModalBabyGrow: PropTypes.func.isRequired,\n};\n\nexport default BabyGrow;","\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTimesCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport { PropTypes } from \"prop-types\";\n\n\nexport function HearthBeat({setModalHearthbeat}){\n\n return(\n <div className=\"lb-modal-overlay-addons\" >\n <div className=\"lb-modal-addons rounded-3\">\n <button\n className=\"closeTermsButton btn btn-link m-0 p-0\"\n onClick={(e) => setModalHearthbeat(false)}\n style={{ cursor: \"pointer\" }}\n >\n <FontAwesomeIcon\n className=\"white-icon\"\n size=\"lg\"\n icon={faTimesCircle}\n />\n </button>\n <div className=\"lb-modal-body-addons py-2 px-4 text-justify\">\n <>\n <div className=\"row mt-2\">\n <div className=\"col-12 m-1 mt-3 py-3 text-center\">\n <p style={{ textAlign: 'justify' }}>\n Some moments come once in a lifetime, and they should never be forgotten.\n Recording the baby's heartbeat builds connection and strengthens the bond with baby.\n Our beautiful, high-quality stuffed animals come with a 20-second recording of the baby's heartbeat that can be cherished forever.\n </p>\n </div>\n </div>\n </>\n </div>\n <div className=\"lb-modal-footer-addons lb-text-center \">\n <button className=\"btn btn-cta-active rounded-pill px-3 mx-auto\"\n onClick={(e) => setModalHearthbeat(false)}\n style={{ cursor: \"pointer\" }}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n )\n }\n\n HearthBeat.propTypes = {\n setModalHearthbeat: PropTypes.func.isRequired,\n };\n\n export default HearthBeat;","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTimesCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport { PropTypes } from \"prop-types\";\n\n\nexport function RealisticView({setModal8kRealisticView}){\n\n return(\n <div className=\"lb-modal-overlay-addons\" >\n <div className=\"lb-modal-addons rounded-3\">\n <button\n className=\"closeTermsButton btn btn-link m-0 p-0\"\n onClick={(e) => setModal8kRealisticView(false)}\n style={{ cursor: \"pointer\" }}\n >\n <FontAwesomeIcon\n className=\"white-icon\"\n size=\"lg\"\n icon={faTimesCircle}\n />\n </button>\n <div className=\"lb-modal-body-addons py-2 px-4 text-justify\">\n <>\n <div className=\"row mt-2\">\n <div className=\"col-12 m-1 mt-3 py-3 text-center\">\n <p style={{ textAlign: 'justify' }}>\n Will show our Mommies and Fathers a hyper-realistic image of what their babies will\n look like once they are born. We work with the ultrasound images from the session,\n process them and send them to our clients within 7 business days.</p>\n </div>\n </div>\n </>\n </div>\n <div className=\"lb-modal-footer-addons lb-text-center \">\n <button className=\"btn btn-cta-active rounded-pill px-3 mx-auto\"\n onClick={(e) => setModal8kRealisticView(false)}\n style={{ cursor: \"pointer\" }}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n )\n }\n\n RealisticView.propTypes = {\n setModal8kRealisticView: PropTypes.func.isRequired,\n };\n\n export default RealisticView;","\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTimesCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport { PropTypes } from \"prop-types\";\n\nfunction Terms({setState,state}){\n\n const hideTerms = () => {\n setState((state) => ({\n ...state,\n displayTerms: false,\n }));\n };\n\n return (\n\n <div className=\"lb-modal-overlay\" onClick={hideTerms}>\n <div className=\"lb-modal rounded\">\n <button\n className=\"closeTermsButton btn btn-link m-0 p-0\"\n onClick={hideTerms}\n >\n <FontAwesomeIcon\n className=\"white-icon\"\n size=\"lg\"\n icon={faTimesCircle}\n />\n </button>\n <div className=\"lb-modal-body py-3 px-4 text-justify \">\n <div className=\"row px-2 pb-2\">\n <div className=\"col \">\n <h3>Little Bellies Terms of services.</h3>\n </div>\n </div>\n <>\n <p className=\"px-3 pt-3\">\n I am receiving ongoing prenatal care. <br />\n <br />\n I have undergone a medical diagnostic ultrasound\n prescribed by my OB provider in regard to this\n pregnancy. <br />\n <br />I understand that my OB provider ultimately will\n confirm my due date, screen for fetal abnormalities\n and/or any issues/concerns related to my pregnancy.{\" \"}\n <br />\n <br /> Little Bellies is not a medical provider and will\n not do any of the foregoing. <br />\n <br />I understand that this ultrasound may not last\n more than 25 minutes and will focus on my pelvic area.{\" \"}\n <br />\n <br />\n I understand that this is a limited non-medical\n ultrasound and does not replace any diagnostic\n ultrasound ordered by my OB provider. <br />\n <br />\n I understand that there is a possibility that the wrong\n gender may be assigned to my baby. <br />\n </p>\n <p className=\"px-3 pt-3\">\n Little Bellies is not a health care provider. Little\n Bellies understands the importance of proper prenatal\n medical care for both the expectant mother and the\n fetus. Therefore, in order to provide our clients with a\n meaningful “keepsake†ultrasound image, Little Bellies\n requires that I: (i) truthfully certify that I am under\n the care of a physician or other health care provider\n for my pregnancy and that I am not obtaining this\n ultrasound as a replacement for, or in lieu of, standard\n prenatal medical care, and (ii) notify my current\n physician or health care provider regarding the keepsake\n ultrasound I receive from Little Bellies.\n <br />\n <br />\n Little Bellies requests that I present to Little Bellies\n an acknowledgement of receipt of this notice, signed by\n my physician or health provider, prior to Little\n Bellies’ performance of the keepsake ultrasound. In the\n event I am unable to notify my physician or health\n provider prior to performance of the keepsake\n ultrasound, I assume sole responsibility for notifying\n him or her as soon as practical following performance of\n the keepsake ultrasound.\n <br />\n <br />\n As further condition to my receiving ultrasound services\n from Little Bellies, I hereby acknowledge, understand\n and agree to the following statements.\n <br />\n <br />\n <ul>\n <li>\n This ultrasound: (i) is an elective non-medical\n procedure that I have voluntarily requested and (ii)\n is not intended to take the place of a diagnostic\n ultrasound or any other test or treatment that has\n been or may be recommended by my physician or\n healthcare provider.\n </li>\n <li>\n Because of its elective, non-medical nature, this\n ultrasound is generally not covered by insurance.\n Therefore, advance payment is required.\n </li>\n <li>\n The technician who performs the ultrasound, while\n qualified to provide such ultrasound services, is\n not a doctor, nurse, or healthcare provider and\n cannot interpret, diagnose medical conditions from,\n or otherwise offer medical advice regarding the\n images produced.\n <b>\n {\" \"}\n This ultrasound will not be read or interpreted by\n any physician, nurse or other healthcare provider\n at any time.\n </b>\n </li>\n <li>\n This keepsake ultrasound is intended to provide\n enhanced images for the purpose of my viewing fetal\n movement in utero. The technician will make no\n attempt to guarantee a medically inclusive\n ultrasound or fetal well being.\n </li>\n <li>\n I understand that I am responsible for contacting my\n own healthcare provider if I have any questions\n concerning this keepsake ultrasound or any other\n aspect of my pregnancy.\n </li>\n <li>\n {\" \"}\n I understand that the quality of the keepsake\n ultrasound and the DVD, or other audio visual media,\n depends upon many factors including: body tissue\n content, developmental stage and fetal position.\n </li>\n <li>\n I understand that Little Bellies does not guarantee\n the quality of the DVD, or other audio visual media,\n or the ability to visualize any characteristics of\n the fetus.\n </li>\n <li>\n I understand that publication, presentation or\n distribution of any video taken during the\n ultrasound session, not provided by Little Bellies,{\" \"}\n <b> is strictly prohibited. </b>\n </li>\n <li>\n I understand that all the images and video clips\n taken during my session can be used for promotional\n purposes by Little Bellies.\n </li>\n <li>\n I agree to receive E-mail and SMS from Little\n Bellies, as well as surveys, promotional offers and\n marketing.\n </li>\n <li>\n I accept to receive the images and videos of my\n session in my E-mail and Smartphone.\n </li>\n <li>As evidenced by my signature below,</li>\n </ul>\n I understand that factors beyond Little Bellies’ control\n may also affect the ability to accurately determine the\n gender of the fetus, and that Little Bellies can provide\n no warranty or guaranty as to the accuracy of any such\n determination. <br />\n <br />\n I further understand and accept the risk that, while\n ultrasound is believed to have no harmful effect on the\n mother or the fetus, future research or other\n information may disclose harmful or adverse effects that\n are presently unknown. <br />\n <br />\n IN CONSIDERATION OF THE SERVICES RENDERED, I AGREE TO\n RELEASE LITTLE BELLIES, ITS AGENTS, AFFILIATES, MEMBERS,\n MANAGERS AND EMPLOYEES FROM ANY AND ALL CLAIMS OR CAUSES\n OF ACTIONS FOR INJURY, HARM, DAMAGE, OR OTHER LIABILITY\n WHICH RESULTS FROM, OR ARE ALLEGED TO HAVE RESULTED\n FROM, THIS KEEPSAKE ULTRASOUND, INCLUDING BUT NOT\n LIMITED TO, THE FAILURE OF A LITTLE BELLIES ULTRASOUND\n TO ACCURATELY DETERMINE FETAL GENDER OR OTHER\n CHARACTERISTICS OR ANOMOLIES AND ANY DAMAGES OR INJURIES\n RESULTING FROM ULTRASOUND WHICH ARE NOT NOW KNOWN TO\n OCCUR. <br />\n <br />\n “I have carefully read this document and by signing at\n the bottom, acknowledge that I fully understand and\n agree to its contents.â€\n </p>\n <p className=\"px-3 pt-3\">\n I understand that all the images and video clips taken\n during my session can be used for promotional purposes\n by Little Bellies.\n <br />\n <br />\n I agree to receive E-mail and SMS from Little Bellies,\n as well as surveys, promotional offers and marketing.\n <br />\n <br />\n I accept to receive the images and videos of my session\n in my E-mail and Smartphone.\n <br />\n <br />\n As evidenced by my signature below, I understand that\n factors beyond Little Bellies control may also affect\n the ability to accurately determine the gender of the\n fetus, and that Little Bellies can provide no warranty\n or guaranty as to the accuracy of any such\n determination.\n <br />\n <br />\n I further understand and accept the risk that, while\n ultrasound is believed to have no harmful effect on the\n mother or the fetus, future research or other\n information may disclose harmful or adverse effects that\n are presently unknown.\n <br />\n <br />\n </p>\n </>\n </div>\n <div className=\"lb-modal-footer lb-text-center \">\n <button className=\"btn btn-cta-active rounded-pill px-3 mx-auto\">\n Close\n </button>\n </div>\n </div>\n </div>\n );\n\n\n}\n\nTerms.propTypes = {\n setModalBabyGrow: PropTypes.func.isRequired,\n state: PropTypes.object.isRequired,\n};\n\n\nexport default Terms;","import React from \"react\"\nimport { PropTypes } from \"prop-types\";\nimport Select from \"react-select\";\nimport BabyGrow from \"./modals/babyGrow\";\nimport HearthBeat from \"./modals/hearthBeat\";\nimport RealisticView from \"./modals/8kRealisticView\";\nimport Terms from \"./modals/terms\";\n\nfunction RegisterForm({\n state,\n setState,\n params,\n weeks,\n services,\n selectedOptionAddons,\n control,\n register,\n handleSubmit,\n errors,\n Controller,\n onFormSubmit,\n onChangeServices,\n handleAddonsSelected,\n width,\n addOns,\n hoverIndexBabyGrow,\n hoverIndexHearthbeat,\n hoverIndex8kRealisticView,\n modalHearthbeat,\n setModalHearthbeat,\n modalBabyGrow,\n setModalBabyGrow,\n modal8kRealisticView,\n setModal8kRealisticView,\n setClickButtonForm,\n}) {\n\n const selectStyles = {\n option: (styles, { data, isDisabled, isFocused, isSelected }) => {\n return {\n ...styles,\n fontSize: width > 1023 ? 16 : 14,\n };\n },\n };\n \n const translations = {\n en: {\n \"Please enter your information\": \"Please enter your information\",\n },\n es: {\n \"Please enter your information\": \"Please enter your information\",\n },\n };\n\n const translate = (text) => {\n const trans = translations[params.get(\"lang\") || \"en\"];\n return trans[text] || text;\n };\n\n const groupTextStyles = {\n color: \"#AE678C\",\n fontSize: width > 1023 ? 18 : 16,\n textTransform: \"capitalize\",\n };\n\n const groupStyles = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }; \n\n const formatGroupLabel = (data) => (\n <div style={groupStyles}>\n <span style={groupTextStyles}>{data.label}</span>\n </div>\n );\n\n const showTerms = () => {\n setState((state) => ({\n ...state,\n displayTerms: true,\n }));\n };\n\n\n return (\n <>\n <form\n className=\"row my-3 registerForm mx-auto p-md-4 justify-content-center\"\n onSubmit={handleSubmit(onFormSubmit)}\n >\n <div className=\"row mb-3\">\n <div className=\"col\">\n <h1 className=\"h4 mt-2 mb-3 text-uppercase text-center\">\n {translate(\"Please enter your information\", state.language)}\n </h1>\n <h3 className=\"h6 fw-normal\">\n {\" \"}\n In order to book an appointment please provide the following\n information\n </h3>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <input\n type=\"text\"\n placeholder=\"First name\"\n className={\n \"form-control bg-light-input mb-3\" +\n (errors.firstName ? \" border-1 is-invalid\" : \" border-0\")\n }\n {...register(\"firstName\", {\n required: true,\n pattern: /^([^0-9]*)$/i,\n })}\n />\n </div>\n <div className=\"col-12 col-md-6\">\n <input\n type=\"text\"\n placeholder=\"Last Name\"\n className={\n \"form-control bg-light-input mb-3\" +\n (errors.lastName ? \" border-1 is-invalid\" : \" border-0\")\n }\n {...register(\"lastName\", {\n required: true,\n pattern: /^([^0-9]*)$/i,\n })}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <input\n type=\"text\"\n placeholder=\"Email\"\n className={\n \"form-control bg-light-input mb-3\" +\n (errors.email ? \" border-1 is-invalid\" : \" border-0\")\n }\n {...register(\"email\", {\n required: true,\n pattern: /^\\S+@\\S+\\.\\S+$/i,\n })}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <input\n type=\"tel\"\n placeholder=\"Phone number\"\n className={\n \"form-control bg-light-input mb-3\" +\n (errors.phone ? \" border-1 is-invalid\" : \" border-0\")\n }\n {...register(\"phone\", {\n required: true,\n pattern:\n /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/i,\n })}\n />\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col\">\n <Controller\n name=\"weeks\"\n control={control}\n rules={{ required: true }}\n render={({ field }) => (\n <Select\n {...field}\n options={weeks}\n placeholder=\"Select Pregnancy Weeks\"\n isSearchable={false}\n className={\n \"dropdown w-100 mb-3\" +\n (errors.weeks ? \" is-select-invalid\" : \"\")\n }\n />\n )}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <Controller\n name=\"service\"\n control={control}\n rules={{ required: true }}\n render={({ field }) => (\n <Select\n {...field}\n options={services}\n placeholder={\n services.length > 0\n ? \"Select a service\"\n : \"Loading services\"\n }\n isDisabled={!services.length > 0}\n className={\n \"dropdown w-100 mb-3\" +\n (errors.service ? \" is-select-invalid\" : \"\")\n }\n formatGroupLabel={formatGroupLabel}\n styles={selectStyles}\n isSearchable={false}\n onChange={(service) => {\n onChangeServices(service);\n field.onChange(service);\n }}\n />\n )}\n />\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col\">\n <Controller\n name=\"addons\"\n control={control}\n render={({ field }) => (\n <Select\n {...field}\n isDisabled={!services.length > 0}\n value={selectedOptionAddons}\n isSearchable={false}\n options={addOns}\n placeholder={\n services.length > 0\n ? \"Checkout out our amazing addons\"\n : \"Loading addons\"\n }\n className=\"dropdown w-100 mb-3\"\n isMulti\n onChange={(e) => { handleAddonsSelected(e); field.onChange(e) }}\n />\n )}\n />\n </div>\n </div>\n\n <div className=\"row mb-2\">\n <div className=\"col text-left\">\n <Controller\n name=\"temsCheckbox\"\n control={control}\n rules={{ required: true }}\n render={({ field }) => (\n <div className=\"form-check\">\n <input\n className={\n \"form-check-input\" +\n (errors.temsCheckbox ? \" is-select-invalid\" : \"\")\n }\n {...field}\n type=\"checkbox\"\n />\n <label\n className={\n \"form-check-label mx-2 \" +\n (errors.temsCheckbox ? \" text-danger\" : \"\")\n }\n >\n {errors.temsCheckbox && (\n <>\n You have to agree to{\" \"}\n <button\n type=\"button\"\n className=\"btn btn-link pt-0 px-0 mx-0 mt-0\"\n onClick={showTerms}\n >\n {\" \"}\n terms and conditions\n </button>\n </>\n )}\n {!errors.temsCheckbox && (\n <>\n Agree to{\" \"}\n <button\n type=\"button\"\n className=\"btn btn-link pt-0 px-0 mx-0 mt-0\"\n onClick={showTerms}\n >\n {\" \"}\n terms and conditions\n </button>\n </>\n )}\n </label>\n </div>\n )}\n />\n </div>\n </div>\n\n {hoverIndexBabyGrow && (\n <div\n className={\n hoverIndexBabyGrow\n ? \"lb-preview-info-card-visible-baby-grow col-3\"\n : \"lb-preview-card\"\n }\n style={{ fontSize: 13 }}\n >\n <div className=\"row mt-2\">\n <div className=\"col-12\">\n <p style={{ textAlign: 'justify' }} className=\"px-3 pt-3\">\n By adding this feature, you'll discover: baby's position in the uterus,\n weeks of pregnancy and estimated due date, baby's measurements and baby hearts activity.\n This add-on doesn't replace a medical study performed by your specialist</p>\n </div>\n </div>\n </div>\n )}\n\n {hoverIndexHearthbeat && (\n <div\n className={\n hoverIndexHearthbeat\n ? \"lb-preview-info-card-visible-hearthbeat col-3\"\n : \"lb-preview-card\"\n }\n style={{ fontSize: 13 }}\n >\n <div className=\"row mt-2\">\n <div className=\"col-12\">\n <p style={{ textAlign: 'justify' }} className=\"px-3 pt-3\">\n Some moments come once in a lifetime, and they should never be forgotten.\n Recording the baby's heartbeat builds connection and strengthens the bond with baby.\n Our beautiful, high-quality stuffed animals come with a 20-second recording of the baby's heartbeat that can be cherished forever.\n </p>\n </div>\n </div>\n </div>\n )}\n\n {hoverIndex8kRealisticView && (\n <div\n className={\n hoverIndex8kRealisticView\n ? \"lb-preview-info-card-visible-8k-realistic-view col-3\"\n : \"lb-preview-card\"\n }\n style={{ fontSize: 13 }}\n >\n <div className=\"row mt-2\">\n <div className=\"col-12\">\n <p style={{ textAlign: 'justify' }} className=\"px-3 pt-3\">\n Will show our Mommies and Fathers a hyper-realistic image of what their babies will look like once they are born. We work with the ultrasound images from the session,\n process them and send them to our clients within 7 business days.\n </p>\n </div>\n </div>\n </div>\n )}\n\n {state.displayTerms && (\n <Terms setState={setState} state={state}/>\n )}\n\n {modalHearthbeat && (\n <HearthBeat setModalHearthbeat={setModalHearthbeat} />\n )}\n {modalBabyGrow && (\n <BabyGrow setModalBabyGrow={setModalBabyGrow}/>\n )}\n {modal8kRealisticView && (\n <RealisticView setModal8kRealisticView={setModal8kRealisticView}/>\n )}\n\n <div className=\"row my-3\">\n <div className=\"col text-center\">\n <button\n type=\"submit\"\n className=\"btn btn-cta-active rounded-pill px-3 mx-auto\"\n onClick={() => setClickButtonForm(true)}\n >\n Check availabilities\n </button>\n </div>\n </div>\n </form>\n </>\n\n );\n}\n\nRegisterForm.propTypes = {\n state: PropTypes.object.isRequired,\n setState: PropTypes.func.isRequired,\n params: PropTypes.object.isRequired,\n weeks: PropTypes.array.isRequired,\n services: PropTypes.array.isRequired,\n selectedOptionAddons: PropTypes.array,\n control: PropTypes.object.isRequired,\n register: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n errors: PropTypes.object.isRequired,\n Controller: PropTypes.func.isRequired,\n onFormSubmit : PropTypes.func.isRequired,\n onChangeServices: PropTypes.func.isRequired,\n handleAddonsSelected: PropTypes.func.isRequired,\n width: PropTypes.number.isRequired,\n addOns: PropTypes.array,\n hoverIndexBabyGrow: PropTypes.bool.isRequired,\n hoverIndexHearthbeat: PropTypes.bool.isRequired,\n hoverIndex8kRealisticView: PropTypes.bool.isRequired,\n modalHearthbeat: PropTypes.bool.isRequired,\n setModalHearthbeat: PropTypes.func.isRequired,\n modalBabyGrow: PropTypes.bool.isRequired,\n setModalBabyGrow: PropTypes.func.isRequired,\n modal8kRealisticView: PropTypes.bool.isRequired,\n setModal8kRealisticView: PropTypes.func.isRequired,\n setClickButtonForm: PropTypes.func.isRequired,\n};\n\nexport default RegisterForm;","import React, { useEffect } from \"react\"\nimport { PropTypes } from \"prop-types\";\nimport DatePicker from \"react-horizontal-datepicker\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\n\nfunction SelectTimeAppointment({\n setStepTwo,\n previousStep,\n state,\n availableBlocks,\n setState,\n firstLoad,\n setSelectBlock,\n leadState,\n setLeadState,\n scrollParenTop,\n selectedBlock\n}) {\n\n\n const handleAvailabilityBlockSelect = async (block) => {\n\n setState((state) => ({\n ...state,\n block: block,\n }));\n\n setSelectBlock(block.startDateTime);\n\n try {\n if (leadState.leadRegistered) {\n const leadPayload = {\n partitionKey: leadState.partititonKey,\n orderKey: leadState.orderKey,\n dateTimeSeleted: block.startDateTime,\n step: 2,\n };\n const leadRequest = {\n method: \"PUT\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n authorization: state.authorization,\n siteid: state.siteId,\n },\n body: JSON.stringify(leadPayload),\n };\n const leadResponse = await fetch(\n `${process.env.REACT_APP_API_URL}/api/book/clients`,\n leadRequest\n );\n const leadData = await leadResponse.json();\n if (leadResponse.ok) {\n setLeadState((leadState) => ({\n ...leadState,\n leadUpdate: true,\n }));\n } else {\n setLeadState((leadState) => ({\n ...leadState,\n leadUpdate: true,\n }));\n console.error(leadData);\n }\n };\n\n } catch (error) {\n console.error(error);\n }\n\n };\n\n const onSelectedDay = (val) => {\n setStepTwo(\"default\")\n if (\n moment(val).format(\"MM/DD/YYYY\").toString() ===\n moment(state.startDate).format(\"MM/DD/YYYY\").toString()\n ) {\n return;\n }\n setState((state) => ({\n ...state,\n startDate: moment(val).format(\"MM/DD/YYYY\").toString(),\n }));\n };\n\n useEffect(() => {\n const nextDay = moment(state.startDate)\n .add(1, \"days\")\n .format(\"MM/DD/YYYY\")\n .toString();\n if (availableBlocks.length === 0 && !firstLoad) {\n setTimeout(() => {\n onSelectedDay(nextDay);\n }, 500);\n }\n }, [availableBlocks]);\n\n const blockSelected = async () => {\n scrollParenTop();\n\n setStepTwo(\"success\")\n\n setState((state) => ({\n ...state,\n step: \"summary\",\n }));\n\n try {\n if (leadState.leadRegistered) {\n const leadPayload = {\n partitionKey: leadState.partititonKey,\n orderKey: leadState.orderKey,\n dateTimeSeleted: selectedBlock,\n step: 3,\n };\n const leadRequest = {\n method: \"PUT\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n authorization: state.authorization,\n siteid: state.siteId,\n },\n body: JSON.stringify(leadPayload),\n };\n\n const leadResponse = await fetch(\n `${process.env.REACT_APP_API_URL}/api/book/clients`,\n leadRequest\n );\n\n const leadData = await leadResponse.json();\n if (leadResponse.ok) {\n setLeadState((leadState) => ({\n ...leadState,\n leadUpdate: true,\n }));\n } else {\n setLeadState((leadState) => ({\n ...leadState,\n leadUpdate: true,\n }));\n console.error(leadData);\n }\n\n };\n\n } catch (error) {\n console.error(error);\n }\n\n };\n\n return (\n\n <div className=\"row \">\n <div className=\"col\">\n <div className=\"row my-3\">\n <div className=\"col d-block d-md-flex justify-content-between\">\n <h1 className=\"h1\"> </h1>\n <button\n className=\"btn btn-cta rounded-pill btn-sm px-3 m-2\"\n onClick={() => { setStepTwo(\"default\"); previousStep(\"availability\"); }}\n >\n BACK\n </button>\n </div>\n </div>\n <div className=\"row my-3\">\n <div id=\"datePicker\" className=\"col\">\n <DatePicker\n labelFormat={\"MMMM\"}\n selectDate={new Date(state.startDate)}\n getSelectedDay={onSelectedDay}\n color=\"#AE678C\"\n endDate={100}\n />\n </div>\n </div>\n\n {state.availabilityRequestStatus === \"ready\" &&\n availableBlocks.length >= 1 && (\n <>\n <h1 className=\"h4\">Select time for you appointment:</h1>\n <div className=\"row my-4 gx-0 mx-auto justify-content-center justify-content-lg-start\">\n {availableBlocks.map((block, index) => {\n return (\n <div\n className=\"col-auto mx-0 d-flex d-sm-block\"\n key={index}\n >\n <button\n className={\n block.id === state.block.id\n ? \" flex-fill btn btn-selected-block btn-sm rounded-pill px-3 m-2\"\n : \" flex-fill btn btn-outline-secondary rounded-pill btn-sm px-3 m-2\"\n }\n key={block.id}\n onClick={() => handleAvailabilityBlockSelect(block)}\n >\n {block.segment}\n </button>\n </div>\n );\n })}\n </div>\n <div className=\"row my-4\">\n <div className=\"col text-center\">\n <button\n className=\"btn btn-cta rounded-pill px-3 m-2\"\n disabled={state.block.id === \"\"}\n onClick={blockSelected}\n >\n NEXT\n </button>\n </div>\n </div>\n </>\n )}\n {state.availabilityRequestStatus === \"ready\" &&\n availableBlocks.length === 0 && (\n <div className=\"row\">\n <div className=\"col text-center\">\n <h1 className=\"h1 mb-3\">\n Sorry, there are no available spaces today\n </h1>\n <h1 className=\"h3 mb-3\">\n Please select another day on the calendar\n </h1>\n </div>\n </div>\n )}\n {(state.availabilityRequestStatus === \"loading\" || state.availabilityRequestStatus === \"BOOK-APPOINTMENT-OK\") && (\n <div className=\"row\">\n <div className=\"col text-center\">\n <h1 className=\"h1 m-auto\">\n <FontAwesomeIcon spin icon={faSpinner} /> Loading\n </h1>\n </div>\n </div>\n )}\n {(state.availabilityRequestStatus === \"error\" ||\n state.availabilityRequestStatus === \"no-data-found\") && (\n <h1 className=\"h1\">Error: {state.message}</h1>\n )}\n </div>\n </div>\n\n )\n\n}\n\nSelectTimeAppointment.propTypes = {\n setStepTwo: PropTypes.func.isRequired,\n previousStep: PropTypes.func.isRequired,\n state: PropTypes.object.isRequired,\n availableBlocks: PropTypes.array.isRequired,\n setState: PropTypes.func.isRequired,\n firstLoad: PropTypes.bool.isRequired,\n setSelectBlock: PropTypes.func.isRequired,\n leadState: PropTypes.object.isRequired,\n setLeadState: PropTypes.func.isRequired,\n scrollParenTop: PropTypes.func.isRequired,\n selectedBlock: PropTypes.string\n};\n\n\nexport default SelectTimeAppointment;","import React, { useEffect, useState } from \"react\";\nimport { PropTypes } from \"prop-types\";\nimport DatePicker from \"react-horizontal-datepicker\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport moment from \"moment\";\n\nfunction formatDate(dateString) {\n\tconst date = new Date(dateString);\n\tconst options = { hour: \"2-digit\", minute: \"2-digit\", hour12: true };\n\treturn date.toLocaleTimeString(undefined, options);\n}\n\nfunction formatPhoneNumber(phoneNumber) {\n\tconst cleaned = phoneNumber.replace(/\\D/g, \"\");\n\tconst formatted = cleaned.replace(/(\\d{3})(\\d{3})(\\d{4})/, \"($1) $2-$3\");\n\n\treturn formatted;\n}\n\nconst getAvailability = async ({ accesssToken, siteId, locationId, startDate, sessionTypeId, siteInfo }) => {\n\tconst queryParams = new URLSearchParams({\n\t\tstartDate: startDate,\n\t\tsessionTypeId: sessionTypeId,\n\t\ttimeZone: siteInfo.timeZone,\n\t});\n\n\tconst url = `${process.env.REACT_APP_API_URL}/api/sites/${siteId}/locations/${locationId}/bookeableSchedule?${queryParams.toString()}`;\n\n\tconst request = {\n\t\tmethod: \"GET\",\n\t\theaders: {\n\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\tauthorization: accesssToken,\n\t\t},\n\t};\n\ttry {\n\t\tconst response = await fetch(url, request);\n\n\t\tconst data = await response.json();\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`${response.status}: ${JSON.stringify(data)}`);\n\t\t}\n\t\tconst { bookeableSchedule } = data;\n\t\tconst reShaped = bookeableSchedule.map((slot) => {\n\t\t\treturn {\n\t\t\t\tstaffId: slot.staffId,\n\t\t\t\tstartDateTime: slot.startTime,\n\t\t\t};\n\t\t});\n\t\treturn reShaped;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching availability:\", error);\n\t\tthrow error;\n\t}\n};\n\nfunction SelectTimeAppointmentV2({ setStepTwo, previousStep, state, setState, setSelectBlock, leadState, setLeadState, scrollParenTop, selectedBlock, sessionTypeId, siteInfo }) {\n\tconst [bookable, setBookable] = useState(null);\n\tconst [firstLoad, setFirstLoad] = useState(true);\n\tconst maxSkipCounter = 7; //7 days\n\tconst [skipCounter, setSkipCounter] = useState(0);\n\n\tuseEffect(() => {\n\t\tconst showLoading = () => {\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tavailabilityRequestStatus: \"loading\",\n\t\t\t}));\n\t\t};\n\t\tconst showReady = () => {\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tavailabilityRequestStatus: \"ready\",\n\t\t\t}));\n\t\t};\n\t\tconst fetchAvailability = async () => {\n\t\t\ttry {\n\t\t\t\tconst resp = await getAvailability({\n\t\t\t\t\taccesssToken: state.authorization,\n\t\t\t\t\tsiteId: state.siteId,\n\t\t\t\t\tlocationId: state.locationId,\n\t\t\t\t\tstartDate: state.startDate,\n\t\t\t\t\tsessionTypeId: sessionTypeId,\n\t\t\t\t\tsiteInfo: siteInfo,\n\t\t\t\t});\n\n\t\t\t\tsetBookable(resp);\n\t\t\t\tsetFirstLoad(false);\n\t\t\t\tshowReady();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Error fetching bookable schedule:\", error);\n\t\t\t\tsetState((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tavailabilityRequestStatus: \"error\",\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t}));\n\t\t\t}\n\t\t};\n\t\tshowLoading();\n\t\tfetchAvailability();\n\t}, [state.startDate, sessionTypeId, state.locationId, state.authorization, state.siteId, setState, siteInfo]);\n\n\tconst handleAvailabilityBlockSelect = async (block) => {\n\t\tsetState((state) => ({\n\t\t\t...state,\n\t\t\tblock: block,\n\t\t}));\n\n\t\tsetSelectBlock(block.startDateTime);\n\n\t\ttry {\n\t\t\tif (leadState.leadRegistered) {\n\t\t\t\tconst leadPayload = {\n\t\t\t\t\tpartitionKey: leadState.partititonKey,\n\t\t\t\t\torderKey: leadState.orderKey,\n\t\t\t\t\tdateTimeSeleted: block.startDateTime,\n\t\t\t\t\tstep: 2,\n\t\t\t\t};\n\t\t\t\tconst leadRequest = {\n\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(leadPayload),\n\t\t\t\t};\n\t\t\t\tconst leadResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/book/clients`, leadRequest);\n\t\t\t\tconst leadData = await leadResponse.json();\n\t\t\t\tif (leadResponse.ok) {\n\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\tleadUpdate: true,\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\tleadUpdate: true,\n\t\t\t\t\t}));\n\t\t\t\t\tconsole.error(leadData);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t};\n\n\tconst onSelectedDay = (val) => {\n\t\tsetStepTwo(\"default\");\n\t\tif (moment(val).format(\"MM/DD/YYYY\").toString() === moment(state.startDate).format(\"MM/DD/YYYY\").toString()) {\n\t\t\treturn;\n\t\t}\n\t\tsetState((state) => ({\n\t\t\t...state,\n\t\t\tstartDate: moment(val).format(\"MM/DD/YYYY\").toString(),\n\t\t}));\n\t};\n\n\tuseEffect(() => {\n\t\tif (skipCounter < maxSkipCounter && bookable && bookable?.length === 0 && !firstLoad && state.availabilityRequestStatus === \"ready\") {\n\t\t\tconst nextDay = moment(state.startDate).add(1, \"days\").format(\"MM/DD/YYYY\").toString();\n\t\t\tsetSkipCounter(skipCounter + 1);\n\t\t\tsetTimeout(() => {\n\t\t\t\tonSelectedDay(nextDay);\n\t\t\t}, 500);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [bookable, firstLoad, state.availabilityRequestStatus]);\n\n\tconst blockSelected = async () => {\n\t\tscrollParenTop();\n\n\t\tsetStepTwo(\"success\");\n\n\t\tsetState((state) => ({\n\t\t\t...state,\n\t\t\tstep: \"summary\",\n\t\t}));\n\n\t\ttry {\n\t\t\tif (leadState.leadRegistered) {\n\t\t\t\tconst leadPayload = {\n\t\t\t\t\tpartitionKey: leadState.partititonKey,\n\t\t\t\t\torderKey: leadState.orderKey,\n\t\t\t\t\tdateTimeSeleted: selectedBlock,\n\t\t\t\t\tstep: 3,\n\t\t\t\t};\n\t\t\t\tconst leadRequest = {\n\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(leadPayload),\n\t\t\t\t};\n\n\t\t\t\tconst leadResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/book/clients`, leadRequest);\n\n\t\t\t\tconst leadData = await leadResponse.json();\n\t\t\t\tif (leadResponse.ok) {\n\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\tleadUpdate: true,\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\tleadUpdate: true,\n\t\t\t\t\t}));\n\t\t\t\t\tconsole.error(leadData);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t};\n\n\t/*\n\n\tthis is the block object that is expected from the other components, so sadly we have to mock it\n\n\t{\n\t\"id\": 5,\n\t\"segment\": \"10:30 AM\",\n\t\"endSegment\": \"11:00 AM\",\n\t\"appointment\": {},\n\t\"startDateTime\": \"2024-05-23T10:30:00\",\n\t\"endDateTime\": \"2024-05-23T11:00:00\",\n\t\"blockDate\": \"Thu May 23 2024 10:30:00 GMT-0400\",\n\t\"selected\": false,\n\t\"available\": true,\n\t\"staffId\": [\n\t\t100000001\n\t],\n\t\"count\": 1\n\t}\n\n\tthe minimal object that we need to create is done by the following function\n\t*/\n\n\tfunction buildBlock(block) {\n\t\treturn {\n\t\t\tstaffId: [block.staffId],\n\t\t\tblockDate: moment(block.startDateTime).toString(),\n\t\t\tstartDateTime: block.startDateTime,\n\t\t};\n\t}\n\n\treturn (\n\t\t<div className=\"row \">\n\t\t\t<div className=\"col\">\n\t\t\t\t<div className=\"row my-3\">\n\t\t\t\t\t<div className=\"col d-block d-md-flex justify-content-between\">\n\t\t\t\t\t\t<h1 className=\"h1\"> </h1>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"btn btn-cta rounded-pill btn-sm px-3 m-2\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetStepTwo(\"default\");\n\t\t\t\t\t\t\t\tpreviousStep(\"availability\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tBACK\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"row my-3\">\n\t\t\t\t\t<div id=\"datePicker\" className=\"col\">\n\t\t\t\t\t\t<DatePicker labelFormat={\"MMMM\"} selectDate={new Date(state.startDate)} getSelectedDay={onSelectedDay} color=\"#AE678C\" endDate={100} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{state.availabilityRequestStatus === \"ready\" && bookable && bookable.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<h1 className=\"h4\">Select time for you appointment:</h1>\n\t\t\t\t\t\t<div className=\"row my-4 gx-0 mx-auto justify-content-center justify-content-lg-start\">\n\t\t\t\t\t\t\t{bookable.map((block, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div className=\"col-auto mx-0 d-flex d-sm-block\" key={index}>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\t\tblock.startDateTime === selectedBlock\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \" flex-fill btn btn-selected-block btn-sm rounded-pill px-3 m-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: \" flex-fill btn btn-outline-secondary rounded-pill btn-sm px-3 m-2\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleAvailabilityBlockSelect(buildBlock(block))}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{formatDate(block.startDateTime)}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"row my-4\">\n\t\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t\t<button className=\"btn btn-cta rounded-pill px-3 m-2\" disabled={state.block.id === \"\"} onClick={blockSelected}>\n\t\t\t\t\t\t\t\t\tNEXT\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{state.availabilityRequestStatus === \"ready\" && bookable && bookable.length < 1 && (\n\t\t\t\t\t<div className=\"row\">\n\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t<h1 className=\"h1 mb-3\">Sorry, there are no available appointments for this date</h1>\n\t\t\t\t\t\t\t<h1 className=\"h3 mb-3\">\n\t\t\t\t\t\t\t\tPlease select another day on the calendar or call us to help you book at{\" \"}\n\t\t\t\t\t\t\t\t<a href={\"tel:1\" + siteInfo.phone} style={{ color: \"#AE678C\" }}>\n\t\t\t\t\t\t\t\t\t{formatPhoneNumber(siteInfo.phone)}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{(state.availabilityRequestStatus === \"loading\" || state.availabilityRequestStatus === \"BOOK-APPOINTMENT-OK\") && (\n\t\t\t\t\t<div className=\"row\">\n\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t<h1 className=\"h1 m-auto\">\n\t\t\t\t\t\t\t\t<FontAwesomeIcon spin icon={faSpinner} /> Loading\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{state.availabilityRequestStatus === \"error\" && (\n\t\t\t\t\t<div className=\"row\">\n\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t<h1 className=\"h3 mb-3\">\n\t\t\t\t\t\t\t\tThere was an error, please call us to help you book at{\" \"}\n\t\t\t\t\t\t\t\t<a href={\"tel:1\" + siteInfo.phone} style={{ color: \"#AE678C\" }}>\n\t\t\t\t\t\t\t\t\t{formatPhoneNumber(siteInfo.phone)}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h5 className=\"h5 mb-3\">Error: {state.message}</h5>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nSelectTimeAppointmentV2.propTypes = {\n\tsetStepTwo: PropTypes.func.isRequired,\n\tpreviousStep: PropTypes.func.isRequired,\n\tstate: PropTypes.object.isRequired,\n\tsetState: PropTypes.func.isRequired,\n\tsetSelectBlock: PropTypes.func.isRequired,\n\tleadState: PropTypes.object.isRequired,\n\tsetLeadState: PropTypes.func.isRequired,\n\tscrollParenTop: PropTypes.func.isRequired,\n\tselectedBlock: PropTypes.string,\n\tsiteInfo: PropTypes.object,\n};\n\nexport default SelectTimeAppointmentV2;\n","export const blocks = [\n\t{\n\t\tid: 0,\n\t\tsegment: \"08:00 AM\",\n\t\tendSegment: \"08:30 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 1,\n\t\tsegment: \"08:30 AM\",\n\t\tendSegment: \"09:00 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 2,\n\t\tsegment: \"09:00 AM\",\n\t\tendSegment: \"09:30 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 3,\n\t\tsegment: \"09:30 AM\",\n\t\tendSegment: \"10:00 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 4,\n\t\tsegment: \"10:00 AM\",\n\t\tendSegment: \"10:30 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 5,\n\t\tsegment: \"10:30 AM\",\n\t\tendSegment: \"11:00 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 6,\n\t\tsegment: \"11:00 AM\",\n\t\tendSegment: \"11:30 AM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 7,\n\t\tsegment: \"11:30 AM\",\n\t\tendSegment: \"12:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 8,\n\t\tsegment: \"12:00 PM\",\n\t\tendSegment: \"12:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 9,\n\t\tsegment: \"12:30 PM\",\n\t\tendSegment: \"01:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 10,\n\t\tsegment: \"01:00 PM\",\n\t\tendSegment: \"01:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 11,\n\t\tsegment: \"01:30 PM\",\n\t\tendSegment: \"02:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 12,\n\t\tsegment: \"02:00 PM\",\n\t\tendSegment: \"02:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 13,\n\t\tsegment: \"02:30 PM\",\n\t\tendSegment: \"03:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 14,\n\t\tsegment: \"03:00 PM\",\n\t\tendSegment: \"03:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 15,\n\t\tsegment: \"03:30 PM\",\n\t\tendSegment: \"04:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 16,\n\t\tsegment: \"04:00 PM\",\n\t\tendSegment: \"04:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 17,\n\t\tsegment: \"04:30 PM\",\n\t\tendSegment: \"05:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 18,\n\t\tsegment: \"05:00 PM\",\n\t\tendSegment: \"05:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 19,\n\t\tsegment: \"05:30 PM\",\n\t\tendSegment: \"06:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 20,\n\t\tsegment: \"06:00 PM\",\n\t\tendSegment: \"06:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 21,\n\t\tsegment: \"06:30 PM\",\n\t\tendSegment: \"07:00 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 22,\n\t\tsegment: \"07:00 PM\",\n\t\tendSegment: \"07:30 PM\",\n\t\tappointment: {},\n\t},\n\t{\n\t\tid: 23,\n\t\tsegment: \"07:30 PM\",\n\t\tendSegment: \"08:00 PM\",\n\t\tappointment: {},\n\t},\n];\n\nexport const removeTags = (str) => {\n\tif (str === null || str === \"\") return false;\n\telse str = str.toString();\n\n\t// Regular expression to identify HTML tags in\n\t// the input string. Replacing the identified\n\t// HTML tag with a null string.\n\treturn str.replace(/(<([^>]+)>)/gi, \"\");\n};\n","export const getIp = async () => {\n try {\n const response = await fetch('https://api.ipify.org?format=json',{method: \"GET\",});\n const data = await response.json();\n return data?.ip;\n } catch (error) {\n return `${error}`\n }\n};\n","import React, { useEffect } from \"react\";\nimport moment from \"moment\";\nimport { PropTypes } from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { removeTags } from \"../config/constans\";\nimport { getIp } from \"../services/external\";\n\nfunction BookAppointment({\n\tstate,\n\tclientState,\n\taddHeartbeatBuddies,\n\tadd8kRealisticView,\n\tsetStepThree,\n\tgoogleTrackBooking,\n\tsetState,\n\tsetClientState,\n\tselectedOptionAddons,\n\tlocalTime,\n\tleadState,\n\tsetLeadState,\n\tpreviousStep,\n}) {\n\tconst bypass = false;\n\n\tuseEffect(async () => {\n\t\tconst ip = await getIp();\n\t\tsetClientState((clientState) => ({\n\t\t\t...clientState,\n\t\t\tipAddress: ip,\n\t\t}));\n\t}, [clientState.ipAddress]);\n\n\tconst bookAppointment = async () => {\n\t\tsetStepThree(\"success\");\n\n\t\tif (state.appointmentRequestStatus === \"loading\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tif (bypass) {\n\t\t\t\tgoogleTrackBooking({ name: \"name\", service: \"service\", date: \"date\", time: \"time\" });\n\t\t\t\tsetState((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-OK\",\n\t\t\t\t}));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tappointmentRequestStatus: \"loading\",\n\t\t\t}));\n\n\t\t\tlet createAppointment = false;\n\t\t\tlet clientObject = { ...clientState.clientObject };\n\n\t\t\tif (clientState.clientRequestStatus === \"CLIENT-NOT-FOUND\") {\n\t\t\t\ttry {\n\t\t\t\t\tconst payload = {\n\t\t\t\t\t\tfirstName: clientState.firstName,\n\t\t\t\t\t\tlastName: clientState.lastName,\n\t\t\t\t\t\tmobilePhone: clientState.phone.replace(/[^0-9]/gi, \"\"),\n\t\t\t\t\t\temail: clientState.email,\n\t\t\t\t\t};\n\t\t\t\t\tconst createClientRequest = {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\t};\n\t\t\t\t\tconst createClientResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/clients`, createClientRequest);\n\t\t\t\t\tconst createClientData = await createClientResponse.json();\n\t\t\t\t\tif (createClientResponse.ok) {\n\t\t\t\t\t\tconst createdClient = {\n\t\t\t\t\t\t\tclientId: createClientData.clientId,\n\t\t\t\t\t\t\tname: createClientData.name,\n\t\t\t\t\t\t\tphone: createClientData.phone.replace(/[^0-9]/gi, \"\"),\n\t\t\t\t\t\t\temail: createClientData.email,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t\t\t...clientState,\n\t\t\t\t\t\t\tcreateClientRequestStatus: \"CREATED\",\n\t\t\t\t\t\t\tclientObject: createdClient,\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tcreateAppointment = true;\n\t\t\t\t\t\tclientObject = { ...createdClient };\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t\t\t...clientState,\n\t\t\t\t\t\t\tcreateClientRequestStatus: \"ERROR\",\n\t\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\t\tmessage: \"Create request Error: \" + JSON.stringify(createClientData),\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tappointmentRequestStatus: \"IDLE\",\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tcreateAppointment = false;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t\t...clientState,\n\t\t\t\t\t\tcreateClientRequestStatus: \"ERROR\",\n\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\tmessage: \"Create request Error: \" + JSON.stringify(e),\n\t\t\t\t\t}));\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\tstatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\tmessage: \"Client request Error: \" + JSON.stringify(e.message),\n\t\t\t\t\t}));\n\t\t\t\t\tcreateAppointment = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (clientState.clientRequestStatus === \"CLIENT-FOUND-DIFFERENT\" || clientState.clientRequestStatus === \"CLIENT-FOUND\") {\n\t\t\t\tcreateAppointment = true;\n\t\t\t}\n\n\t\t\tif (createAppointment) {\n\t\t\t\tconst payload = {\n\t\t\t\t\tsessionTypeId: \"\" + clientState.sessionTypeId,\n\t\t\t\t\tlocationId: parseInt(state.locationId),\n\t\t\t\t\tstaffId: state.block.staffId[0],\n\t\t\t\t\tclientId: clientObject.clientId,\n\t\t\t\t\tclientData: { clientName: `${clientState.firstName} ${clientState.lastName}`, email: clientState.email, mobilePhone: clientState.phone.replace(/[^0-9]/gi, \"\") },\n\t\t\t\t\tnotes:\n\t\t\t\t\t\t\"Weeks: \" +\n\t\t\t\t\t\tclientState.weeks +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"Language: \" +\n\t\t\t\t\t\tstate.language +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t(addHeartbeatBuddies ? \"Add Heartbeat Buddies\" : \"\") +\n\t\t\t\t\t\t(addHeartbeatBuddies ? \"\\n\" : \"\") +\n\t\t\t\t\t\t(add8kRealisticView ? \"Add 8k Realistic View\" : \"\"),\n\t\t\t\t\tstartDateTime: moment(state.block.blockDate).format(\"YYYY-MM-DD[T]HH:mm:ss\").toString(),\n\t\t\t\t\tipAddress: clientState.ipAddress,\n\t\t\t\t};\n\n\t\t\t\tconst bookAppointmentRequest = {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t};\n\t\t\t\tconst bookAppointmentResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/appointments`, bookAppointmentRequest);\n\t\t\t\tconst bookAppointmentData = await bookAppointmentResponse.json();\n\t\t\t\tif (bookAppointmentResponse.ok) {\n\t\t\t\t\tconst mailBody = {\n\t\t\t\t\t\tlocationName: `Little Bellies Pregnancy Spa - ${state.city}`,\n\t\t\t\t\t\tweb: \"www.littlebelliesspa.com/en/home/\",\n\t\t\t\t\t\tlocationPhone: state.phone,\n\t\t\t\t\t\tlocationAddress: removeTags(state.address),\n\t\t\t\t\t\thowArrive: removeTags(state.howtoarrive),\n\t\t\t\t\t\tappointmentId: bookAppointmentData.Appointment.Id,\n\t\t\t\t\t\tclientName: clientState.firstName + \" \" + clientState.lastName,\n\t\t\t\t\t\tclientEmail: clientState.email,\n\t\t\t\t\t\tserviceName: clientState.sessionTypeName,\n\t\t\t\t\t\tstartDateTime: moment(state.block.blockDate).format(\"YYYY-MM-DD[T]HH:mm:ss\").toString(),\n\t\t\t\t\t};\n\t\t\t\t\tconst postMail = {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: JSON.stringify(mailBody),\n\t\t\t\t\t};\n\t\t\t\t\tconst mailResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/book/sendMail`, postMail);\n\n\t\t\t\t\tif (!mailResponse.ok) {\n\t\t\t\t\t\tconsole.error(mailResponse);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nameListAddons = [];\n\t\t\t\t\tif (selectedOptionAddons) {\n\t\t\t\t\t\tnameListAddons = selectedOptionAddons.map((i) => {\n\t\t\t\t\t\t\treturn i.value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst dynamoPayload = {\n\t\t\t\t\t\tid: \"\" + bookAppointmentData.Appointment.Id,\n\t\t\t\t\t\tsessionTypeId: \"\" + bookAppointmentData.Appointment.SessionTypeId,\n\t\t\t\t\t\tsessionTypeName: clientState.sessionTypeName,\n\t\t\t\t\t\tserviceName: clientState.sessionTypeName,\n\t\t\t\t\t\tlocationId: \"\" + bookAppointmentData.Appointment.LocationId,\n\t\t\t\t\t\tstaffId: \"\" + bookAppointmentData.Appointment.StaffId,\n\t\t\t\t\t\tclientId: \"\" + bookAppointmentData.Appointment.ClientId,\n\t\t\t\t\t\tnotes: bookAppointmentData.Appointment.Notes,\n\t\t\t\t\t\tstartDateTime: bookAppointmentData.Appointment.StartDateTime,\n\t\t\t\t\t\tstatus: bookAppointmentData.Appointment.Status,\n\t\t\t\t\t\tfirstAppointment: bookAppointmentData.Appointment.FirstAppointment,\n\t\t\t\t\t\tprogramId: bookAppointmentData.Appointment.ProgramId,\n\t\t\t\t\t\taddOns: nameListAddons,\n\t\t\t\t\t\tbookDate: moment(localTime.date).format(\"MM/DD/YYYY\"),\n\t\t\t\t\t\taccount: true,\n\t\t\t\t\t\tbookDateTime: moment(localTime.date).format(\"MM/DD/YYYY HH:mm:ss\"),\n\t\t\t\t\t\tbookTimeUTC: moment.utc(localTime.date).toISOString().split(\"T\")[1],\n\t\t\t\t\t\tservicePrice: clientState.sessionTypeName.includes(\"$\") ? parseInt(clientState.sessionTypeName.split(\"$\")[1]) : 0,\n\t\t\t\t\t\tsiteId: state.siteId,\n\t\t\t\t\t\tsource: \"online\",\n\t\t\t\t\t\tcbff: false,\n\t\t\t\t\t\tclientName: `${clientState.firstName} ${clientState.lastName}`,\n\t\t\t\t\t\temail: clientState.email,\n\t\t\t\t\t\tmobilePhone: clientState.phone.replace(/[^0-9]/gi, \"\"),\n\t\t\t\t\t\tipAddress: clientState.ipAddress,\n\t\t\t\t\t\tbookTime: moment(localTime.date).format(\"HH:mm\"),\n\t\t\t\t\t};\n\t\t\t\t\tconst putDynamo = {\n\t\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: JSON.stringify(dynamoPayload),\n\t\t\t\t\t};\n\t\t\t\t\tconst dynamoResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/dynamoDB/appointments`, putDynamo);\n\t\t\t\t\tconst dynamoData = await dynamoResponse.json();\n\t\t\t\t\tif (dynamoResponse.ok) {\n\t\t\t\t\t\tif (leadState.leadRegistered) {\n\t\t\t\t\t\t\tconst leadPayload = {\n\t\t\t\t\t\t\t\tpartititonKey: leadState.partititonKey,\n\t\t\t\t\t\t\t\torderKey: leadState.orderKey,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst leadRequest = {\n\t\t\t\t\t\t\t\tmethod: \"DELETE\",\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbody: JSON.stringify(leadPayload),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst leadResponse = await fetch(`${process.env.REACT_APP_API_URL}/api/book/clients`, leadRequest);\n\t\t\t\t\t\t\tconst leadData = await leadResponse.json();\n\t\t\t\t\t\t\tif (leadResponse.ok) {\n\t\t\t\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\t\t\t\tleadDeleted: true,\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-OK\",\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-OK\",\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\t\t\t\tleadDeleted: false,\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tconsole.log(\"Error deleting lead\");\n\t\t\t\t\t\t\t\tconsole.error(leadData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgoogleTrackBooking({\n\t\t\t\t\t\t\tname: clientState.firstName + \" \" + clientState.lastName,\n\t\t\t\t\t\t\tservice: clientState.sessionTypeName,\n\t\t\t\t\t\t\tdate: moment(state.block.blockDate).format(\"MM-DD-YYYY\").toString(),\n\t\t\t\t\t\t\ttime: moment(state.block.blockDate).format(\"hh:mm A\").toString(),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\t\tmessage: JSON.stringify(dynamoData),\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tappointmentRequestStatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\t\t\tmessage: JSON.stringify(bookAppointmentData),\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tstatus: \"BOOK-APPOINTMENT-FAIL\",\n\t\t\t\tmessage: \"Client request Error: \" + JSON.stringify(error.message),\n\t\t\t}));\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"\">\n\t\t\t<div className=\"row mt-4 gx-5\">\n\t\t\t\t{state.appointmentRequestStatus !== \"BOOK-APPOINTMENT-OK\" && (\n\t\t\t\t\t<div className=\"col d-flex justify-content-between\">\n\t\t\t\t\t\t<h1 className=\"h3 text-uppercase text-center\">Your booking information</h1>\n\t\t\t\t\t\t<button className=\"btn btn-cta rounded-pill btn-sm px-3 m-2\" onClick={() => previousStep(\"summary\")}>\n\t\t\t\t\t\t\tBACK\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{state.appointmentRequestStatus !== \"IDLE\" && (\n\t\t\t\t\t<div className=\"row mt-4 mb-2\">\n\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t{state.appointmentRequestStatus === \"BOOK-APPOINTMENT-FAIL\" && (\n\t\t\t\t\t\t\t\t<div className=\"d-block alert alert-danger text-center\">\n\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\t\t\tThere has been an error booking your appointment, please try again, if the error persist please call this number:{\" \"}\n\t\t\t\t\t\t\t\t\t\t<a href={`tel:${state.phone}`}>{state.phone}</a> and we will get you sorted out{\" \"}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{state.textMessageStatus === \"TEXT-FAIL\" && (\n\t\t\t\t\t\t\t\t<div className=\"d-block alert alert-warning\">\n\t\t\t\t\t\t\t\t\t<span> {state.textMessage} </span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{state.appointmentRequestStatus === \"CLIENT-ERROR\" && (\n\t\t\t\t\t\t\t\t<div className=\"d-block alert alert-danger\">\n\t\t\t\t\t\t\t\t\t<span> {state.message} </span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"row w-50 mb-3 bg-light-container mx-auto p-2 justify-content-center\">\n\t\t\t\t<div>\n\t\t\t\t\t{\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"row my-3\">\n\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>Full Name:</b> {clientState.firstName + \" \" + clientState.lastName}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>Service: </b>\n\t\t\t\t\t\t\t\t\t\t{clientState.sessionTypeName}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{addHeartbeatBuddies || add8kRealisticView ? (\n\t\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t<b>Addons: </b>\n\t\t\t\t\t\t\t\t\t\t\t{addHeartbeatBuddies && \"Add Heartbeat Buddies \"}\n\t\t\t\t\t\t\t\t\t\t\t{addHeartbeatBuddies && add8kRealisticView && \"-\"}\n\t\t\t\t\t\t\t\t\t\t\t{add8kRealisticView && \" Add 8k Realistic View\"}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t<div className=\"col-auto\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>Date: </b>\n\t\t\t\t\t\t\t\t\t\t{moment(state.block.blockDate).format(\"MM-DD-YYYY\").toString()}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"col-auto\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>Time: </b>\n\t\t\t\t\t\t\t\t\t\t{moment(state.block.blockDate).format(\"hh:mm A\").toString()}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t\t<b>Location Address: </b>\n\t\t\t\t\t\t\t\t\t\t{removeTags(state.address)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>How to Arrive: </b>\n\t\t\t\t\t\t\t\t\t\t{removeTags(state.howtoarrive)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"row mb-3\">\n\t\t\t\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<b>Location Phone: </b>\n\t\t\t\t\t\t\t\t\t\t<a href={`tel:${state.phone}`}>{state.phone}</a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\n\t\t\t\t\t{state.appointmentRequestStatus !== \"BOOK-APPOINTMENT-OK\" && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"row my-2\">\n\t\t\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t\t\t<div className=\"row mt-3\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"col text-center\">\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" disabled={!state.captchaReady} className=\"btn btn-cta-active rounded-pill px-3 mx-auto\" onClick={bookAppointment}>\n\t\t\t\t\t\t\t\t\t\t\t\t{state.appointmentRequestStatus === \"loading\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontAwesomeIcon spin icon={faSpinner} /> Booking\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.appointmentRequestStatus !== \"loading\" && <>Book appointment</>}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nBookAppointment.propTypes = {\n\tstate: PropTypes.object.isRequired,\n\tclientState: PropTypes.object.isRequired,\n\taddHeartbeatBuddies: PropTypes.bool.isRequired,\n\tadd8kRealisticView: PropTypes.bool.isRequired,\n\tsetStepThree: PropTypes.func.isRequired,\n\tgoogleTrackBooking: PropTypes.func.isRequired,\n\tsetState: PropTypes.func.isRequired,\n\tsetClientState: PropTypes.func.isRequired,\n\tselectedOptionAddons: PropTypes.array,\n\tlocalTime: PropTypes.object.isRequired,\n\tleadState: PropTypes.object.isRequired,\n\tsetLeadState: PropTypes.func.isRequired,\n\tpreviousStep: PropTypes.func.isRequired,\n};\n\nexport default BookAppointment;\n","import React, { useEffect, useState } from \"react\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport moment from \"moment\";\nimport \"./App.css\";\nimport \"./styles/info.css\";\nimport StepProgress from \"../src/components/stepProgress\";\nimport RegisterForm from \"../src/components/registerForm\";\nimport SelectTimeAppointment from \"../src/components/selectTimeAppointment\";\nimport SelectTimeAppointmentV2 from \"../src/components/selectTimeAppointment-v2\";\nimport BookAppointment from \"../src/components/boookAppointment\";\nimport { blocks } from \"../src/config/constans.js\";\nimport { useForm } from \"react-hook-form\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Controller } from \"react-hook-form\";\nimport { faInfo } from \"@fortawesome/free-solid-svg-icons\";\nimport * as crypto from \"crypto-js\";\n\nfunction App() {\n\tconst params = new URLSearchParams(window.location.search);\n\tconst languageList = { en: \"English\", es: \"Spanish\" };\n\tconst [firstLoad, setFirstLoad] = useState(true);\n\tconst [localTime, setLocalTime] = useState({ date: new Date() });//revisar esta linea Trabajar con la fecha y hora del sitio\n\tconst [selectedBlock, setSelectBlock] = useState(null);\n\tconst [width, setWindowWidth] = useState(0);\n\tconst [useV2] = useState(true);\n\tconst [state, setState] = useState({\n\t\tstep: \"registerForm\",\n\t\tstatus: \"IDLE\",\n\t\tavailabilityRequestStatus: \"IDLE\",\n\t\tappointmentRequestStatus: \"IDLE\",\n\t\tcity: params.get(\"city\") || \"N/A\",\n\t\tmessage: \"\",\n\t\tsiteId: params.get(\"id\") || \"490100\",\n\t\tlatitude: params.get(\"latitude\") || \"0\",\n\t\tlongitude: params.get(\"longitude\") || \"0\",\n\t\tlanguage: languageList[params.get(\"lang\")] || \"English\",\n\t\tlocationId: params.get(\"city\") !== \"coral-springs\" ? \"1\" : \"2\",\n\t\tauthorization: \"\",\n\t\taddress: params.get(\"address\") || \"N/A\",\n\t\tphone: params.get(\"phone\") || \"N/A\",\n\t\thowtoarrive: params.get(\"howtoarrive\") || \"N/A\",\n\t\tstartDate: moment(new Date()).format(\"MM/DD/YYYY\").toString(),\n\t\tblock: {\n\t\t\tid: \"\",\n\t\t},\n\t\tcaptchaReady: true,\n\t\tshowAddons: false,\n\t\ttextMessageStatus: \"IDLE\",\n\t\ttextMessage: \"\",\n\t\tdisplayTerms: false,\n\t});\n\tconst [clientState, setClientState] = useState({\n\t\tfirstName: \"\",\n\t\tlastName: \"\",\n\t\temail: \"\",\n\t\tphone: \"\",\n\t\tweeks: \"\",\n\t\tsessionTypeId: \"\",\n\t\tsessionTypeName: \"\",\n\t\tclientRequestStatus: \"IDLE\",\n\t\tcreateClientRequestStatus: \"IDLE\",\n\t\tsearchResults: [],\n\t\tclientObject: {},\n\t\tclientIsEqual: undefined,\n\t\tipAddress: \"\"\n\t});\n\n\tconst [availableBlocks, setAvailableBlocks] = useState([]);\n\tconst [services, setServices] = useState([]);\n\tconst [selectedOptionAddons, setSelectedOptionAddons] = useState(null);\n\tconst [stepOne, setStepOne] = useState(\"default\");\n\tconst [stepTwo, setStepTwo] = useState(\"default\");\n\tconst [stepThree, setStepThree] = useState(\"default\");\n\tconst [addHeartbeatBuddies, setAddHeartbeatBuddies] = useState(false);\n\tconst [add8kRealisticView, setAdd8kRealisticView] = useState(false);\n\tconst [ultrasounds, setUltrasounds] = useState([]);\n\tconst [consultedUltrasounds, setConsultedUltrasounds] = useState([]);\n\tconst [weeks, setWeeks] = useState([]);\n\tconst [sitesInfo, setSitesInfo] = useState([]);\n\tconst [sendForm, setSendForm] = useState(false);\n\tconst [fixedServices, setFixedServices] = useState({\n\t\tspecialPromotion25min: \"\",\n\t\tgenderdetermination: \"\",\n\t\tearlypregnancy: \"\",\n\t\tmeetyourbaby25: \"\",\n\t\tmeetyourbaby15: \"\",\n\t});\n\tconst [hoverIndex8kRealisticView, setHoverIndex8kRealisticView] = useState(false);\n\tconst [hoverIndexBabyGrow, setHoverIndexBabyGrow] = useState(false);\n\tconst [hoverIndexHearthbeat, setHoverIndexHearthbeat] = useState(false);\n\tconst [modalBabyGrow, setModalBabyGrow] = useState(false);\n\tconst [modalHearthbeat, setModalHearthbeat] = useState(false);\n\tconst [modal8kRealisticView, setModal8kRealisticView] = useState(false);\n\tconst [clickButtonForm, setClickButtonForm] = useState(false);\n\tconst [addBabysGrowth, setAddBabysGrowth] = useState(false);\n\n\tconst [seletedService, setSeletedService] = useState(null)\n\tconst [addOns, setAddOns] = useState();\n\n\tconst [leadState, setLeadState] = useState({\n\t\tclientFound: false,\n\t\tleadRegistered: false,\n\t\tleadDeleted: false,\n\t\tleadUpdate: false,\n\t\tpartititonKey: \"\",\n\t\torderKey: \"\",\n\t});\n\n\tconst parent_origin = `${process.env.REACT_APP_FOLLOWING_URL}`;\n\tconst scrollParenTop = () => {\n\t\twindow.parent.postMessage({ task: \"scroll_top\" }, parent_origin);\n\t};\n\n\tconst siteInfo = sitesInfo.find((i) => i.site === `${state.siteId}-${state.locationId}`);\n\tconst googleTrackBooking = ({ name, service, date, time }) => {\n\t\tconsole.log(\"sending task to parent\");\n\t\twindow.parent.postMessage({ task: \"google_track_booking\", name, service, date, time }, parent_origin);\n\t};\n\n\tconst getSitesInfo = async () => {\n\t\ttry {\n\t\t\tconst getSitesData = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst response = await fetch(\n\t\t\t\t`${process.env.REACT_APP_API_URL}/api/config/sites`,\n\t\t\t\tgetSitesData\n\t\t\t);\n\t\t\tconst data = await response.json();\n\t\t\tif (response.ok) {\n\t\t\t\tconst allSitesItem = data.sites.find(site => site.site === \"0-0\");\n\t\t\t\tlet sitesArray = []\n\t\t\t\tif (allSitesItem !== undefined) {\n\t\t\t\t\tsitesArray = data.sites.filter(site => site.site !== \"0-0\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsitesArray = data.sites;\n\t\t\t\t}\n\t\t\t\tsetSitesInfo(sitesArray)\n\t\t\t} else {\n\t\t\t\tconsole.error(response);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(JSON.stringify(error));\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tconst filterSite = sitesInfo.find((i) => i.site === `${state.siteId}-${state.locationId}`);\n\t\tif (filterSite !== undefined) {\n\t\t\tconst date = new Date();\n\t\t\tconst timeZone = date.toLocaleString('en-US', { timeZone: filterSite?.timeZone });\n\t\t\tsetLocalTime((localTime) => ({\n\t\t\t\t...localTime,\n\t\t\t\tdate: timeZone\n\t\t\t}));\n\t\t}\n\t}, [sitesInfo, localTime.date])\n\n\tconst getPrice = (service) => {\n\t\treturn parseInt(service.split(\"$\")[1]);\n\t};\n\n\tconst orderServices = (services) => {\n\t\treturn services.sort(function (a, b) {\n\t\t\tif (getPrice(a.label) < getPrice(b.label)) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (getPrice(a.label) > getPrice(b.label)) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t};\n\n\tconst getServiceId = (serviceName, servicesArray) => {\n\t\tconst sessionTypeName = serviceName;\n\t\tlet purifiedServiceName = \"\";\n\t\tlet remaining = \"\";\n\t\tlet serviceId = \"\";\n\t\tconst regex = /[-.()+\\s]/g;\n\n\t\tif (sessionTypeName.toLowerCase().includes(\"$\")) {\n\t\t\tconst indexPrice = sessionTypeName.toLowerCase().indexOf(\"$\");\n\t\t\tremaining = sessionTypeName.toLowerCase().slice(0, indexPrice);\n\t\t} else {\n\t\t\tremaining = serviceName;\n\t\t}\n\t\tpurifiedServiceName = remaining.replace(regex, \"\");\n\n\t\tservicesArray.forEach((serviceItem) => {\n\t\t\tlet purifiedServiceArray = \"\";\n\t\t\tlet remainingService = \"\";\n\n\t\t\tif (serviceItem.name.toLowerCase().includes(\"$\")) {\n\t\t\t\tconst indexPrice = serviceItem.name.toLowerCase().indexOf(\"$\");\n\t\t\t\tremainingService = serviceItem.name.toLowerCase().slice(0, indexPrice);\n\t\t\t} else {\n\t\t\t\tremainingService = serviceItem.name;\n\t\t\t}\n\t\t\tpurifiedServiceArray = remainingService.replace(regex, \"\");\n\t\t\tif (purifiedServiceArray === purifiedServiceName) {\n\t\t\t\tserviceId = serviceItem.sessionTypeId;\n\t\t\t}\n\t\t});\n\t\treturn serviceId;\n\t};\n\n\tuseEffect(() => { \n\t\tif (state.siteId === \"5742875\") { //Nashville\n\t\t\tconst today = moment().format(\"MM/DD/YYYY\").toString();\n\t\t\tconst dayFriday = moment(\"03/01/2025\").format(\"MM/DD/YYYY\").toString();\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tstartDate: today > dayFriday ? today : dayFriday\n\t\t\t}));\n\t\t}\n\t\t// if (state.siteId === \"5739704\") { //Charlotte\n\t\t// \tconst today = moment().format(\"MM/DD/YYYY\").toString();\n\t\t// \tconst dayFriday = moment(\"08/30/2024\").format(\"MM/DD/YYYY\").toString();\n\t\t// \tsetState((state) => ({\n\t\t// \t\t...state,\n\t\t// \t\tstartDate: today > dayFriday ? today : dayFriday\n\t\t// \t}));\n\t\t// }\n\t}, [state.siteId]);\n\t// Loads the dropdown values and set the states for that display on first load\n\tuseEffect(() => {\n\t\tasync function getServices() {\n\t\t\ttry {\n\t\t\t\tconst authPayload = {\n\t\t\t\t\tUsername: `${process.env.REACT_APP_USER_NAME}`,\n\t\t\t\t\tPassword: `${process.env.REACT_APP_PASSWORD}`,\n\t\t\t\t};\n\n\t\t\t\tconst key = process.env.REACT_APP_ENCRYPTION_KEY;\n\t\t\t\tconst encrypted = crypto.AES.encrypt(JSON.stringify(authPayload), key).toString();\n\t\t\t\tconst body = { data: encrypted }\n\t\t\t\tconst authRequest = {\n\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(body),\n\t\t\t\t};\n\t\t\t\tconst authResponse = await fetch(\n\t\t\t\t\t`${process.env.REACT_APP_API_URL}/api/userToken/`,\n\t\t\t\t\tauthRequest\n\t\t\t\t);\n\t\t\t\tconst authData = await authResponse.json();\n\t\t\t\tif (authResponse.ok) {\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tauthorization: authData.accesssToken,\n\t\t\t\t\t}));\n\t\t\t\t\tconst ultrasoundsRequest = {\n\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t\t\tauthorization: authData.accesssToken,\n\t\t\t\t\t\t\tlocationid: state.locationId,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tconst ultrasoundResponse = await fetch(\n\t\t\t\t\t\t`${process.env.REACT_APP_API_URL}/api/sessionTypes/2`,\n\t\t\t\t\t\tultrasoundsRequest\n\t\t\t\t\t);\n\t\t\t\t\tconst ultrasoundsData = await ultrasoundResponse.json();\n\t\t\t\t\tlet filterMassageData;\n\t\t\t\t\tif (ultrasoundResponse.ok) {\n\n\t\t\t\t\t\tconst servicesUltrasounds = [...ultrasoundsData.services];\n\n\t\t\t\t\t\tconst filterServicesBySeeOnline = servicesUltrasounds.filter((i) => {\n\t\t\t\t\t\t\tif (state.siteId === \"557418\" && state.locationId === \"2\") {\n\n\t\t\t\t\t\t\t\tlet specialpromotion25min = i.name.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"specialpromotion25min\");\n\t\t\t\t\t\t\t\tif (specialpromotion25min !== 0) return i.seeOnLine === true\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn i.seeOnLine === true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}).map((i) => {\n\t\t\t\t\t\t\treturn i.name\n\t\t\t\t\t\t}).sort((a, b) => {\n\t\t\t\t\t\t\tif (a > b) return 1\n\t\t\t\t\t\t\tif (a < b) return -1\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (state.siteId === \"5723785\" || state.siteId === \"557418\" || state.siteId === \"557418\" || state.siteId === \"902886\" || state.siteId === \"5721382\" || state.siteId === \"5721159\" || state.siteId === \"888809\") {\n\t\t\t\t\t\t\tconst massageRequest = {\n\t\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t\t\t\t\tauthorization: authData.accesssToken,\n\t\t\t\t\t\t\t\t\tlocationid: state.locationId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst massageResponse = await fetch(\n\t\t\t\t\t\t\t\t`${process.env.REACT_APP_API_URL}/api/sessionTypes/3`,\n\t\t\t\t\t\t\t\tmassageRequest\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst massageData = await massageResponse.json();\n\t\t\t\t\t\t\tfilterMassageData = massageData.services.filter((i) => { return i.seeOnLine === true });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst ultrasounds = [];\n\t\t\t\t\t\tconst massages = [];\n\t\t\t\t\t\tconst existingServices = [];\n\n\t\t\t\t\t\tfilterServicesBySeeOnline.forEach((service) => {\n\t\t\t\t\t\t\tconst serviceTypeId = getServiceId(service, ultrasoundsData.services);\n\t\t\t\t\t\t\tif (serviceTypeId !== \"\") {\n\t\t\t\t\t\t\t\tconst servicePrice = getPrice(service);\n\t\t\t\t\t\t\t\tconst serviceObject = {\n\t\t\t\t\t\t\t\t\tsessionTypeId: serviceTypeId,\n\t\t\t\t\t\t\t\t\tname: service,\n\t\t\t\t\t\t\t\t\tprice: servicePrice,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\texistingServices.push(serviceObject);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst ultrasoundServices = {\n\t\t\t\t\t\t\tservices: existingServices,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tultrasoundServices.services.forEach((item) => {\n\t\t\t\t\t\t\tconst mutableItem = {\n\t\t\t\t\t\t\t\tvalue: item.sessionTypeId,\n\t\t\t\t\t\t\t\tlabel: item.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tultrasounds.push(mutableItem);\n\t\t\t\t\t\t});\n\n\n\t\t\t\t\t\tsetUltrasounds(ultrasounds);\n\t\t\t\t\t\tsetConsultedUltrasounds(ultrasoundsData.services);\n\n\t\t\t\t\t\tif (state.siteId === \"5723785\" || state.siteId === \"557418\" || state.siteId === \"902886\" || state.siteId === \"5721382\" || state.siteId === \"5721159\" || state.siteId === \"888809\") {\n\t\t\t\t\t\t\tfilterMassageData.forEach((item) => {\n\t\t\t\t\t\t\t\tconst mutableItem = {\n\t\t\t\t\t\t\t\t\tvalue: item.sessionTypeId,\n\t\t\t\t\t\t\t\t\tlabel: item.name,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tmassages.push(mutableItem);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst displayableServices = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: \"Ultrasounds\",\n\t\t\t\t\t\t\t\toptions: ultrasounds,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: \"Massages\",\n\t\t\t\t\t\t\t\toptions: orderServices(massages),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tsetServices(displayableServices);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(JSON.stringify(error));\n\t\t\t}\n\t\t}\n\t\tgetSitesInfo();\n\t\tgetServices();\n\t\tconst arrayOfWeeks = [];\n\t\tarrayOfWeeks.push({\n\t\t\tvalue: \"I don't know\",\n\t\t\tlabel: \"I don't know\",\n\t\t});\n\t\tfor (let index = 5; index < 43; index++) {\n\t\t\tconst element = {\n\t\t\t\tvalue: \"\" + index,\n\t\t\t\tlabel: \"\" + index,\n\t\t\t};\n\t\t\tarrayOfWeeks.push(element);\n\t\t}\n\t\tsetWeeks(arrayOfWeeks);\n\t}, []);\n\n\tconst getFirstAvailability = (availabilities) => {\n\t\treturn availabilities.reduce((a, b) => {\n\t\t\tlet minDate; if (a && b) a.startDateTime < b.startDateTime ? minDate = a : minDate = b;\n\t\t\treturn minDate;\n\t\t}, {});\n\t}\n\n\tuseEffect(() => {\n\t\tif (state.authorization === \"\") {\n\t\t\treturn;\n\t\t}\n\t\tconst getAvailability = async () => {\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tavailabilityRequestStatus: \"loading\",\n\t\t\t}));\n\n\t\t\ttry {\n\t\t\t\tconst sessionTypeId = \"\" + clientState.sessionTypeId;\n\t\t\t\tconst queryStartDate = moment(state.startDate)\n\t\t\t\t\t.format(\"MM/DD/YYYY\")\n\t\t\t\t\t.toString();\n\n\t\t\t\tconst availabilityRequest = {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\t\tlocationid: state.locationId,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tconst availabilityResponse = await fetch(\n\t\t\t\t\t`${process.env.REACT_APP_API_URL}/api/book/sites/${state.siteId}/locations/${state.locationId}/schedule?sessionTypeId=${sessionTypeId}&startDate=${queryStartDate}&endDate=${queryStartDate}`,\n\t\t\t\t\tavailabilityRequest\n\t\t\t\t);\n\n\t\t\t\tconst availabilityData = await availabilityResponse.json();\n\t\t\t\tif (availabilityResponse.ok) {\n\t\t\t\t\tconst rooms = availabilityData.schedule.map((room) => {\n\t\t\t\t\t\tconst appointments = [];\n\t\t\t\t\t\troom.appointments.forEach((appointment) => {\n\t\t\t\t\t\t\tconst mutableAppointment = appointment;\n\t\t\t\t\t\t\tconst segment = new Date(\n\t\t\t\t\t\t\t\tmutableAppointment.startDateTime\n\t\t\t\t\t\t\t).toLocaleTimeString(\"en-US\", {\n\t\t\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tmutableAppointment.segment = segment;\n\t\t\t\t\t\t\tappointments.push(mutableAppointment);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst listApointments = [];\n\t\t\t\t\t\tavailabilityData.schedule.forEach((i) => {\n\t\t\t\t\t\t\tlistApointments.push(i.appointments[0])\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst searchFirstAppointment = listApointments.reduce((acc, app) => {\n\t\t\t\t\t\t\tacc[app?.startDateTime] = ++acc[app?.startDateTime] || 0;\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, {});\n\n\t\t\t\t\t\tconst firstDatesMatches = listApointments.filter((app) => {\n\t\t\t\t\t\t\treturn searchFirstAppointment[app?.startDateTime];\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tlet firstDates = {\n\t\t\t\t\t\t\tmatches: firstDatesMatches.length !== 0,\n\t\t\t\t\t\t\tseveralRooms: listApointments.length > 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst roomReturn = {\n\t\t\t\t\t\t\tstaffId: room.id,\n\t\t\t\t\t\t\tstaffName: room.name,\n\t\t\t\t\t\t\tunavailabilities: room.unavailabilities,\n\t\t\t\t\t\t\tavailabilities: room.availabilities,\n\t\t\t\t\t\t\troomBlocks: [],\n\t\t\t\t\t\t\tappointments: appointments,\n\t\t\t\t\t\t\tfirstDatesMatches: firstDates\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn roomReturn;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst displayableRooms = [];\n\t\t\t\t\trooms.forEach((room) => {\n\t\t\t\t\t\tconst mutableBlocks = [...blocks];\n\t\t\t\t\t\tconst availableBlocks = [];\n\t\t\t\t\t\tconst roomBlocks = mutableBlocks.map((block) => {\n\t\t\t\t\t\t\tconst mutableBlock = { ...block };\n\t\t\t\t\t\t\tconst addTwelve = mutableBlock.segment.includes(\"PM\");\n\t\t\t\t\t\t\tconst rawHours = parseInt(\n\t\t\t\t\t\t\t\tmutableBlock.segment.split(\" \")[0].split(\":\")[0]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst hours =\n\t\t\t\t\t\t\t\taddTwelve && rawHours !== 12 ? rawHours + 12 : rawHours;\n\t\t\t\t\t\t\tconst minutes = parseInt(\n\t\t\t\t\t\t\t\tmutableBlock.segment.split(\" \")[0].split(\":\")[1]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst stringDate = moment(state.startDate)\n\t\t\t\t\t\t\t\t.format(\"MM/DD/YYYY\")\n\t\t\t\t\t\t\t\t.toString();\n\t\t\t\t\t\t\tconst startDateTime = moment(stringDate)\n\t\t\t\t\t\t\t\t.add(hours, \"hours\")\n\t\t\t\t\t\t\t\t.add(minutes, \"minutes\")\n\t\t\t\t\t\t\t\t.format(\"YYYY-MM-DD[T]HH:mm:ss\");\n\t\t\t\t\t\t\tconst endDateTime = moment(startDateTime)\n\t\t\t\t\t\t\t\t.add(30, \"minutes\")\n\t\t\t\t\t\t\t\t.format(\"YYYY-MM-DD[T]HH:mm:ss\");\n\t\t\t\t\t\t\tmutableBlock.startDateTime = startDateTime;\n\t\t\t\t\t\t\tmutableBlock.endDateTime = endDateTime;\n\t\t\t\t\t\t\tconst blockDate = moment(stringDate)\n\t\t\t\t\t\t\t\t.add(hours, \"hours\")\n\t\t\t\t\t\t\t\t.add(minutes, \"minutes\")\n\t\t\t\t\t\t\t\t.toString();\n\t\t\t\t\t\t\tmutableBlock.blockDate = blockDate;\n\t\t\t\t\t\t\tmutableBlock.selected = false;\n\t\t\t\t\t\t\tlet available = false;\n\t\t\t\t\t\t\tlet firstBlockTime;\n\t\t\t\t\t\t\tlet hourRestrict = 1;\n\t\t\t\t\t\t\tconst isToday = moment().format(\"MM/DD/YYYY\");\n\t\t\t\t\t\t\tconst localStartTime = moment(localTime.date).format(\"YYYY-MM-DD[T]HH:mm:ss\");\n\t\t\t\t\t\t\tconst localEndTime = moment(localTime.date).add(hourRestrict, 'hours').format(\"YYYY-MM-DD[T]HH:mm:ss\");\n\t\t\t\t\t\t\tconst selectedDateBlock = moment(state.startDate).format(\"MM/DD/YYYY\");\n\t\t\t\t\t\t\tconst firstAppointment = room.appointments[0]?.startDateTime;\n\t\t\t\t\t\t\tconst firstAvailability = getFirstAvailability(room.availabilities)?.startDateTime;\n\n\t\t\t\t\t\t\tconst hourDifferenceAppt = moment(firstAppointment).diff(moment(localStartTime), 'hours');\n\t\t\t\t\t\t\tconst hourDifferenceBlocks = moment(blockDate).diff(moment(localStartTime), 'hours');\n\n\t\t\t\t\t\t\tif (isToday === selectedDateBlock) {\n\n\t\t\t\t\t\t\t\tif (room.firstDatesMatches.severalRooms) {\n\n\t\t\t\t\t\t\t\t\tif (room.firstDatesMatches.matches) {\n\t\t\t\t\t\t\t\t\t\tif (blockDate > moment(localStartTime).toString()) {\n\t\t\t\t\t\t\t\t\t\t\tfirstBlockTime = moment(firstAvailability).toString();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (!room.firstDatesMatches.matches) {\n\t\t\t\t\t\t\t\t\t\tif (blockDate > moment(localStartTime).toString()) {\n\t\t\t\t\t\t\t\t\t\t\tfirstBlockTime = moment(firstAppointment).toString();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!room.firstDatesMatches.severalRooms) {\n\n\t\t\t\t\t\t\t\t\tif (firstAppointment !== firstAvailability) {\n\t\t\t\t\t\t\t\t\t\tif (hourDifferenceAppt <= hourRestrict && blockDate > moment(localStartTime).toString()) {\n\n\t\t\t\t\t\t\t\t\t\t\tfirstBlockTime = moment(firstAppointment).toString();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif (hourDifferenceBlocks >= hourRestrict) {\n\t\t\t\t\t\t\t\t\t\t\t\tfirstBlockTime = moment(localEndTime).toString();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (firstAppointment === firstAvailability) {\n\t\t\t\t\t\t\t\t\t\tif (blockDate > moment(localStartTime).toString() && blockDate > moment(firstAppointment).toString()) {\n\t\t\t\t\t\t\t\t\t\t\tfirstBlockTime = moment(localStartTime).toString();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfirstBlockTime = moment(state.startDate).add(\"08\", \"hours\").add(\"30\", \"minutes\").toString();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\troom.availabilities.forEach((availabilityBlock) => {\n\t\t\t\t\t\t\t\tavailable =\n\t\t\t\t\t\t\t\t\tavailable + (\n\t\t\t\t\t\t\t\t\t\tmoment(blockDate).isBetween(\n\t\t\t\t\t\t\t\t\t\t\tavailabilityBlock.startDateTime,\n\t\t\t\t\t\t\t\t\t\t\tavailabilityBlock.endDateTime,\n\t\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\t\t\"[)\"\n\t\t\t\t\t\t\t\t\t\t) * (blockDate >= firstBlockTime));\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\troom.unavailabilities.forEach((unavailabilityBlock) => {\n\t\t\t\t\t\t\t\tavailable =\n\t\t\t\t\t\t\t\t\tavailable *\n\t\t\t\t\t\t\t\t\t!moment(blockDate).isBetween(\n\t\t\t\t\t\t\t\t\t\tunavailabilityBlock.StartDateTime,\n\t\t\t\t\t\t\t\t\t\tunavailabilityBlock.EndDateTime,\n\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\t\"[)\"\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst blockAppointment = room.appointments.find((appointment) =>\n\t\t\t\t\t\t\t\tmoment(blockDate).isBetween(\n\t\t\t\t\t\t\t\t\tappointment.startDateTime,\n\t\t\t\t\t\t\t\t\tappointment.endDateTime,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\"[)\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tmutableBlock.appointment =\n\t\t\t\t\t\t\t\tblockAppointment === undefined ? {} : blockAppointment;\n\n\t\t\t\t\t\t\tmutableBlock.available = Boolean(available);\n\n\t\t\t\t\t\t\tif (blockAppointment === undefined && available) {\n\t\t\t\t\t\t\t\tavailableBlocks.push(mutableBlock);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn mutableBlock;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst returnRoom = {\n\t\t\t\t\t\t\tstaffId: room.staffId,\n\t\t\t\t\t\t\tstaffName: room.staffName,\n\t\t\t\t\t\t\tunavailabilities: room.unavailabilities,\n\t\t\t\t\t\t\tavailabilities: room.availabilities,\n\t\t\t\t\t\t\troomBlocks: roomBlocks,\n\t\t\t\t\t\t\tavailableBlocks: availableBlocks,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdisplayableRooms.push(returnRoom);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst availableBlocksForDisplay = [];\n\t\t\t\t\tdisplayableRooms.forEach((room) => {\n\t\t\t\t\t\troom.availableBlocks.forEach((block) => {\n\t\t\t\t\t\t\tconst foundedBlock = availableBlocksForDisplay.find(\n\t\t\t\t\t\t\t\t(availableBlock) => availableBlock.id === block.id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (foundedBlock !== undefined) {\n\t\t\t\t\t\t\t\tconst mutableBlock = foundedBlock;\n\t\t\t\t\t\t\t\tmutableBlock.staffId.push(room.staffId);\n\t\t\t\t\t\t\t\tmutableBlock.count++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst mutableBlock = { ...block };\n\t\t\t\t\t\t\t\tmutableBlock.staffId = [room.staffId];\n\t\t\t\t\t\t\t\tmutableBlock.count = 1;\n\t\t\t\t\t\t\t\tavailableBlocksForDisplay.push(mutableBlock);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tconst sortedBlocks = availableBlocksForDisplay.sort((a, b) =>\n\t\t\t\t\t\ta.startDateTime > b.startDateTime\n\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t: b.startDateTime > a.startDateTime\n\t\t\t\t\t\t\t\t? -1\n\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t);\n\n\t\t\t\t\tsetFirstLoad(false);\n\t\t\t\t\tsetAvailableBlocks(sortedBlocks);\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tavailabilityRequestStatus: \"ready\",\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tavailabilityRequestStatus: \"no-data-found\",\n\t\t\t\t\t\tmessage: JSON.stringify(availabilityData),\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tsetState((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tavailabilityRequestStatus: \"error\",\n\t\t\t\t\tmessage: \"Onload page Error: \" + JSON.stringify(error.message),\n\t\t\t\t}));\n\t\t\t}\n\t\t};\n\t\tif (clientState.sessionTypeId !== \"\" && !useV2) getAvailability();\n\t}, [\n\t\tstate.startDate,\n\t\tstate.locationId,\n\t\tstate.siteId,\n\t\tstate.authorization,\n\t\tclientState.sessionTypeId,\n\t]);\n\n\n\tconst previousStep = (currentStep) => {\n\t\tswitch (currentStep) {\n\t\t\tcase \"availability\":\n\t\t\t\tsetState((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tstep: \"registerForm\",\n\t\t\t\t\tblock: {\n\t\t\t\t\t\tid: \"\",\n\t\t\t\t\t},\n\t\t\t\t\tappointmentRequestStatus: \"IDLE\",\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tcase \"summary\":\n\t\t\t\tsetState((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tstep: \"availability\",\n\t\t\t\t\tblock: {\n\t\t\t\t\t\tid: \"\",\n\t\t\t\t\t},\n\t\t\t\t\tappointmentRequestStatus: \"IDLE\",\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tconst {\n\t\tcontrol,\n\t\twatch,\n\t\tregister,\n\t\tformState: { errors },\n\t\thandleSubmit,\n\t} = useForm();\n\n\tuseEffect(() => {\n\t\tupdateDimensions();\n\n\t\twindow.addEventListener(\"resize\", updateDimensions);\n\t\treturn () => window.removeEventListener(\"resize\", updateDimensions);\n\t}, []);\n\n\tconst updateDimensions = () => {\n\t\tconst width = window.innerWidth;\n\t\tsetWindowWidth(width);\n\t};\n\n\tconst getBGCombo = (serviceName, servicesArray) => {\n\t\tconst sessionTypeName = serviceName;\n\t\tlet purifiedServiceName = \"\";\n\t\tlet serviceId = \"\";\n\t\tconst regex = /[-.()+\\s]/g;\n\n\t\tif (sessionTypeName.toLowerCase().includes(\"$\")) {\n\t\t\tconst indexPrice = sessionTypeName.toLowerCase().indexOf(\"$\");\n\t\t\tconst remaining = sessionTypeName.toLowerCase().slice(0, indexPrice);\n\t\t\tpurifiedServiceName = remaining.replace(regex, \"\");\n\t\t}\n\n\t\tservicesArray.forEach((serviceItem) => {\n\t\t\tif (serviceItem.name.toLowerCase().includes(\"$\")) {\n\t\t\t\tconst indexAddon = serviceItem.name.toLowerCase().indexOf(\"$\");\n\t\t\t\tconst remainingConsulted = serviceItem.name\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.slice(0, indexAddon);\n\t\t\t\tconst purifiedConsulted = remainingConsulted.replace(regex, \"\");\n\t\t\t\tif (purifiedServiceName === purifiedConsulted) {\n\t\t\t\t\tserviceId = serviceItem.sessionTypeId;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn serviceId;\n\t};\n\n\tconst onFormSubmit = async (data) => {\n\t\tscrollParenTop();\n\t\tlet sessionTypeId = data.service.value;\n\t\tlet sessionTypeName = data.service.label;\n\n\t\tsetClientState((clientState) => ({\n\t\t\t...clientState,\n\t\t\tfirstName: data.firstName,\n\t\t\tlastName: data.lastName,\n\t\t\temail: data.email,\n\t\t\tphone: data.phone.replace(/[^0-9]/gi, ''),\n\t\t\tweeks: data.weeks.label,\n\t\t\tsessionTypeId: sessionTypeId,\n\t\t\tsessionTypeName: sessionTypeName,\n\t\t\tlanguage: state.language,\n\t\t}));\n\n\t\tsetState((state) => ({\n\t\t\t...state,\n\t\t\t// step: \"addons\",\n\t\t\tstep: \"availability\",\n\t\t}));\n\n\t\tif (clientState.clientRequestStatus === \"loading\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tlet clientId = \"n/a\";\n\t\t\tsetClientState((clientState) => ({\n\t\t\t\t...clientState,\n\t\t\t\tclientRequestStatus: \"loading\",\n\t\t\t}));\n\t\t\tconst searchClientsRequest = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst searchClientsResponse = await fetch(\n\t\t\t\t`${process.env.REACT_APP_API_URL}/api/clients/clients?searchText=${data.phone.replace(/[^0-9]/gi, '')}`,\n\t\t\t\tsearchClientsRequest\n\t\t\t);\n\t\t\tconst searchClientsData = await searchClientsResponse.json();\n\t\t\tif (searchClientsResponse.ok) {\n\n\t\t\t\tsetSendForm(true)\n\n\t\t\t\tif (\n\t\t\t\t\tdata.firstName + \" \" + data.lastName ===\n\t\t\t\t\tsearchClientsData.clients[0].name &&\n\t\t\t\t\tsearchClientsData.clients[0].email === data.email &&\n\t\t\t\t\tsearchClientsData.clients[0].phone.replace(/[^0-9]/gi, '') === data.phone.replace(/[^0-9]/gi, '')\n\t\t\t\t) {\n\t\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t\t...clientState,\n\t\t\t\t\t\tclientRequestStatus: \"CLIENT-FOUND\",\n\t\t\t\t\t\tclientObject: searchClientsData.clients[0],\n\t\t\t\t\t\tsearchResults: searchClientsData.clients,\n\t\t\t\t\t}));\n\t\t\t\t\tclientId = searchClientsData.clients[0].clientId;\n\t\t\t\t} else {\n\t\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t\t...clientState,\n\t\t\t\t\t\tclientRequestStatus: \"CLIENT-FOUND-DIFFERENT\",\n\t\t\t\t\t\tclientObject: searchClientsData.clients[0],\n\t\t\t\t\t\tsearchResults: searchClientsData.clients,\n\t\t\t\t\t}));\n\t\t\t\t\tclientId = searchClientsData.clients[0].clientId;\n\t\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t\t...leadState,\n\t\t\t\t\t\tclientFound: false,\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetClientState((clientState) => ({\n\t\t\t\t\t...clientState,\n\t\t\t\t\tclientRequestStatus: \"CLIENT-NOT-FOUND\",\n\t\t\t\t\tsearchResults: [],\n\t\t\t\t}));\n\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t...leadState,\n\t\t\t\t\tclientFound: false,\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst leadPayload = {\n\t\t\t\tsiteId: state.siteId,\n\t\t\t\tname: data.firstName + \" \" + data.lastName,\n\t\t\t\tmobilePhone: data.phone.replace(/[^0-9]/gi, ''),\n\t\t\t\temail: data.email,\n\t\t\t\tservice: sessionTypeName,\n\t\t\t\tclientId: clientId === undefined ? \"n/a\" : clientId,\n\t\t\t\tdateTime: moment().format(\"YYYY-MM-DD[T]HH:mm:ss\").toString(),\n\t\t\t\tstep: 1,\n\t\t\t\tlanguage: state.language,\n\t\t\t};\n\t\t\tconst leadRequest = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-type\": \"application/json; charset=UTF-8\",\n\t\t\t\t\tauthorization: state.authorization,\n\t\t\t\t\tsiteid: state.siteId,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(leadPayload),\n\t\t\t};\n\t\t\tconst leadResponse = await fetch(\n\t\t\t\t`${process.env.REACT_APP_API_URL}/api/book/clients`,\n\t\t\t\tleadRequest\n\t\t\t);\n\t\t\tconst leadData = await leadResponse.json();\n\t\t\tif (leadResponse.ok) {\n\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t...leadState,\n\t\t\t\t\tclientFound: true,\n\t\t\t\t\tleadRegistered: true,\n\t\t\t\t\tpartititonKey: leadData.partititonKey,\n\t\t\t\t\torderKey: leadData.orderKey,\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tsetLeadState((leadState) => ({\n\t\t\t\t\t...leadState,\n\t\t\t\t\tclientFound: true,\n\t\t\t\t\tleadRegistered: false,\n\t\t\t\t}));\n\t\t\t\tconsole.log(\"Error registering lead\");\n\t\t\t\tconsole.error(leadData);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsetState((state) => ({\n\t\t\t\t...state,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tmessage: \"Client request Error: \" + JSON.stringify(error.message),\n\t\t\t}));\n\t\t}\n\t};\n\n\t/*function to check if its of the new 15 min services \n\tconst isV2Service = (service) => {\n\t\treturn service.label.toLowerCase().includes(\"15 min\");\n\t}\n\t*/\n\n\tconst onChangeServices = (service) => {\n\t\tsetSeletedService(service)\n\t\tsetAddBabysGrowth(false);\n\t\tsetAddHeartbeatBuddies(false);\n\t\tsetAdd8kRealisticView(false)\n\t};\n\n\tconst handleAddonsSelected = (e) => {\n\t\tconst addons = e;\n\t\tsetSelectedOptionAddons(addons);\n\t\tsetHoverIndexBabyGrow(false)\n\t\tsetHoverIndexHearthbeat(false)\n\t\tsetHoverIndex8kRealisticView(false)\n\t};\n\n\tconst handleFixedServices = () => {\n\n\t\tconst service = {\n\t\t\tspecialPromotion25min: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"specialpromotion25min\") : \"\",\n\t\t\tgenderdetermination: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"genderdetermination\") : \"\",\n\t\t\tearlypregnancy: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"earlypregnancy\") : \"\",\n\t\t\tmeetyourbaby25: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"meetyourbaby25\") : \"\",\n\t\t\tmeetyourbaby15: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"meetyourbaby15\") : \"\",\n\t\t\tpeaceofmind: seletedService ? seletedService?.label?.toLowerCase().replace(/[-.()+\\s]/g, \"\").search(\"peaceofmind\") : \"\",\n\t\t}\n\t\tsetFixedServices((fixedServices) => ({\n\t\t\t...fixedServices,\n\t\t\tspecialPromotion25min: service.specialPromotion25min === 0,\n\t\t\tgenderdetermination: service.genderdetermination === 0,\n\t\t\tearlypregnancy: service.earlypregnancy === 0,\n\t\t\tmeetyourbaby25: service.meetyourbaby25 === 0,\n\t\t\tmeetyourbaby15: service.meetyourbaby15 === 0,\n\t\t\tpeaceofmind: service.peaceofmind === 0,\n\t\t}));\n\t}\n\tuseEffect(() => {\n\t\thandleFixedServices();\n\t}, [seletedService, services]);\n\n\tuseEffect(() => {\n\n\t\tif (selectedOptionAddons) {\n\n\t\t\tlet formattingSelectedOptionAddons;\n\n\t\t\tif (fixedServices.genderdetermination) {\n\n\t\t\t\tformattingSelectedOptionAddons = selectedOptionAddons.filter((i) => { return i.value !== \"8K Realistic View\" })\n\t\t\t\tsetSelectedOptionAddons(formattingSelectedOptionAddons)\n\n\t\t\t} else if (fixedServices.earlypregnancy || fixedServices.specialPromotion25min) {\n\n\t\t\t\tformattingSelectedOptionAddons = selectedOptionAddons.filter((i) => { return i.value !== \"Baby's Growth\" && i.value !== \"8K Realistic View\" })\n\t\t\t\tsetSelectedOptionAddons(formattingSelectedOptionAddons)\n\n\t\t\t} else if (fixedServices.meetyourbaby25 || fixedServices.meetyourbaby15) {\n\n\t\t\t\tsetSelectedOptionAddons(selectedOptionAddons)\n\n\t\t\t} else {\n\t\t\t\tsetSelectedOptionAddons([])\n\t\t\t}\n\t\t}\n\t}, [seletedService, fixedServices]);\n\n\tconst addOnsToMeetYourBaby = [\n\t\t{\n\t\t\tvalue: \"Heartbeat Buddies\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"d-flex col-12\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>Heartbeat Buddies</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndexHearthbeat(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndexHearthbeat(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => { setModalHearthbeat(true) }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tvalue: \"Baby's Growth\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"col-12 d-flex\">\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>Baby's Growth</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndexBabyGrow(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndexBabyGrow(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => setModalBabyGrow(true)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tvalue: \"8K Realistic View\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"col-12 d-flex\">\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>8K Realistic View</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndex8kRealisticView(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndex8kRealisticView(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => setModal8kRealisticView(true)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t];\n\tconst addOnsToGenderDetermination = [\n\t\t{\n\t\t\tvalue: \"Heartbeat Buddies\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"d-flex col-12\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>Heartbeat Buddies</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndexHearthbeat(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndexHearthbeat(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => { setModalHearthbeat(true) }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tvalue: \"Baby's Growth\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"col-12 d-flex\">\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>Baby's Growth</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndexBabyGrow(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndexBabyGrow(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => setModalBabyGrow(true)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t];\n\tconst addOnsToEarlyPregnancy = [\n\t\t{\n\t\t\tvalue: \"Heartbeat Buddies\",\n\t\t\tlabel: (\n\t\t\t\t<div className=\"d-flex col-12\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"col-11\">\n\t\t\t\t\t\t<span>Heartbeat Buddies</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-1\"\n\t\t\t\t\t\tonMouseOver={() => setHoverIndexHearthbeat(true)}\n\t\t\t\t\t\tonMouseLeave={() => setHoverIndexHearthbeat(false)}\n\t\t\t\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FontAwesomeIcon icon={faInfo}\n\t\t\t\t\t\t\tonClick={(e) => setModalHearthbeat(true)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}];\n\n\tuseEffect(() => {\n\n\t\tlet babyGrow;\n\t\tlet hearthbeat;\n\t\tlet realisticView;\n\n\t\tif (selectedOptionAddons) {\n\t\t\tbabyGrow = selectedOptionAddons.find(i => i.value === \"Baby's Growth\");\n\t\t\thearthbeat = selectedOptionAddons.find(i => i.value === \"Heartbeat Buddies\");\n\t\t\trealisticView = selectedOptionAddons.find(i => i.value === \"8K Realistic View\");\n\t\t}\n\t\tif (fixedServices.genderdetermination) {\n\n\t\t\tsetAddOns(addOnsToGenderDetermination)\n\n\t\t\tif (realisticView === undefined) setAdd8kRealisticView(false);\n\n\t\t\tif (hearthbeat === undefined) {\n\t\t\t\tsetAddHeartbeatBuddies(false)\n\t\t\t\taddOnsToGenderDetermination[0].label = addOnsToGenderDetermination[0].label;\n\t\t\t} else {\n\t\t\t\tsetAddHeartbeatBuddies(true);\n\t\t\t\thearthbeat.label = <span>Heartbeat Buddies</span>;\n\t\t\t}\n\t\t\tif (babyGrow === undefined) {\n\t\t\t\tsetAddBabysGrowth(false)\n\t\t\t\taddOnsToGenderDetermination[1].label = addOnsToGenderDetermination[1].label;\n\t\t\t} else {\n\t\t\t\tsetAddBabysGrowth(true)\n\t\t\t\tbabyGrow.label = <span>Baby's Growth</span>;\n\t\t\t}\n\n\t\t} else if (fixedServices.meetyourbaby25 || fixedServices.meetyourbaby15) {\n\n\t\t\tsetAddOns(addOnsToMeetYourBaby)\n\n\t\t\tif (hearthbeat === undefined) {\n\t\t\t\tsetAddHeartbeatBuddies(false)\n\t\t\t\taddOnsToMeetYourBaby[0].label = addOnsToMeetYourBaby[0].label;\n\t\t\t} else {\n\t\t\t\tsetAddHeartbeatBuddies(true);\n\t\t\t\thearthbeat.label = <span>Heartbeat Buddies</span>;\n\t\t\t}\n\t\t\tif (babyGrow === undefined) {\n\t\t\t\tsetAddBabysGrowth(false)\n\t\t\t\taddOnsToMeetYourBaby[1].label = addOnsToMeetYourBaby[1].label;\n\t\t\t} else {\n\t\t\t\tsetAddBabysGrowth(true)\n\t\t\t\tbabyGrow.label = <span>Baby's Growth</span>;\n\t\t\t}\n\t\t\tif (realisticView === undefined) {\n\t\t\t\tsetAdd8kRealisticView(false)\n\t\t\t\taddOnsToMeetYourBaby[2].label = addOnsToMeetYourBaby[2].label;\n\t\t\t} else {\n\t\t\t\tsetAdd8kRealisticView(true)\n\t\t\t\trealisticView.label = <span>8K Realistic View</span>;\n\t\t\t}\n\n\t\t}\n\t\telse if (fixedServices.earlypregnancy || fixedServices.specialPromotion25min || fixedServices.peaceofmind) {\n\n\t\t\tsetAddOns(addOnsToEarlyPregnancy)\n\n\t\t\tif (babyGrow === undefined) setAddBabysGrowth(false);\n\n\t\t\tif (realisticView === undefined) setAdd8kRealisticView(false);\n\n\t\t\tif (hearthbeat === undefined) {\n\t\t\t\tsetAddHeartbeatBuddies(false)\n\t\t\t\taddOnsToEarlyPregnancy[0].label = addOnsToEarlyPregnancy[0].label;\n\t\t\t} else {\n\t\t\t\tsetAddHeartbeatBuddies(true);\n\t\t\t\thearthbeat.label = <span>Heartbeat Buddies</span>;\n\t\t\t}\n\n\t\t} else {\n\t\t\tsetAddHeartbeatBuddies(false)\n\t\t\tsetAdd8kRealisticView(false)\n\t\t\tsetAddBabysGrowth(false)\n\t\t\tsetAddOns([]);\n\t\t}\n\t}, [\n\t\tseletedService,\n\t\tselectedOptionAddons,\n\t\tfixedServices,\n\t\tultrasounds\n\t]);\n\n\tuseEffect(() => {\n\t\tlet newSessionTypeId = clientState.sessionTypeId;\n\t\tlet newSessionTypeName = clientState.sessionTypeName;\n\t\tconst costBabysGrowth = 29;\n\n\t\tif (fixedServices.meetyourbaby25 && addBabysGrowth) {\n\t\t\tconst costMeetYourbaby25 = seletedService.label.match(/(\\d+)/g);\n\t\t\tconst costMeetYourbaby25PlusBabysGrowth = parseFloat(costMeetYourbaby25[2]) + costBabysGrowth;\n\n\t\t\tnewSessionTypeId = getBGCombo(\n\t\t\t\t`Meet Your Baby - 25 Min 5D/HD + Baby's Growth $${costMeetYourbaby25PlusBabysGrowth}`,\n\t\t\t\tconsultedUltrasounds\n\t\t\t);\n\t\t\tnewSessionTypeName = `Meet Your Baby - 25 Min 5D/HD + Baby's Growth $${costMeetYourbaby25PlusBabysGrowth}`;\n\t\t}\n\n\t\tif (fixedServices.meetyourbaby15 && addBabysGrowth) {\n\t\t\tconst costMeetYourbaby15 = seletedService.label.match(/(\\d+)/g);\n\t\t\tconst costMeetYourbaby15PlusBabysGrowth = parseFloat(costMeetYourbaby15[2]) + costBabysGrowth;\n\n\t\t\tnewSessionTypeId = getBGCombo(\n\t\t\t\t`Meet Your Baby - 15 Min 5D/HD + Baby's Growth $${costMeetYourbaby15PlusBabysGrowth}`,\n\t\t\t\tconsultedUltrasounds\n\t\t\t);\n\t\t\tnewSessionTypeName = `Meet Your Baby - 15 Min 5D/HD + Baby's Growth $${costMeetYourbaby15PlusBabysGrowth}`;\n\t\t}\n\n\t\tif (fixedServices.genderdetermination && addBabysGrowth) {\n\n\t\t\tconst costGenderDetermination = seletedService.label.match(/(\\d+)/g);\n\t\t\tconst costGenderPlusBabysGrowth = parseFloat(costGenderDetermination[0]) + costBabysGrowth;\n\n\t\t\tnewSessionTypeId = getBGCombo(\n\t\t\t\t`Gender Determination + Baby's Growth - $${costGenderPlusBabysGrowth} `,\n\t\t\t\tconsultedUltrasounds\n\t\t\t);\n\t\t\tnewSessionTypeName = `Gender Determination + Baby's Growth - $${costGenderPlusBabysGrowth} `;\n\t\t}\n\n\t\tsetClientState((clientState) => ({\n\t\t\t...clientState,\n\t\t\tsessionTypeId: newSessionTypeId,\n\t\t\tsessionTypeName: newSessionTypeName,\n\t\t}));\n\t}, [\n\t\tsendForm,\n\t\tclientState.sessionTypeName,\n\t\tclientState.sessionTypeId,\n\t\taddBabysGrowth,\n\t\tseletedService,\n\t\tfixedServices\n\t]);\n\n\tuseEffect(() => {\n\t\tlet formattingSelectedOptionAddons;\n\t\tif (modalHearthbeat) {\n\t\t\tformattingSelectedOptionAddons = selectedOptionAddons.filter((i) => { return i.value !== \"Heartbeat Buddies\" })\n\t\t\tsetSelectedOptionAddons(formattingSelectedOptionAddons)\n\t\t\tsetAddHeartbeatBuddies(false)\n\t\t}\n\t\tif (modalBabyGrow) {\n\t\t\tformattingSelectedOptionAddons = selectedOptionAddons.filter((i) => { return i.value !== \"Baby's Growth\" })\n\t\t\tsetSelectedOptionAddons(formattingSelectedOptionAddons)\n\t\t\tsetAddBabysGrowth(false)\n\t\t}\n\t\tif (modal8kRealisticView) {\n\t\t\tformattingSelectedOptionAddons = selectedOptionAddons.filter((i) => { return i.value !== \"8K Realistic View\" })\n\t\t\tsetSelectedOptionAddons(formattingSelectedOptionAddons)\n\t\t\tsetAdd8kRealisticView(false)\n\t\t}\n\t}, [modalBabyGrow, modalHearthbeat, modal8kRealisticView])\n\n\n\tuseEffect(() => {\n\t\tlet val = false;\n\t\tif (errors.firstName) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.lastName) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.email) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.phone) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.weeks) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.service) {\n\t\t\tval = true;\n\t\t}\n\t\tif (errors.temsCheckbox) {\n\t\t\tval = true;\n\t\t}\n\t\tif (clickButtonForm) {\n\t\t\tif (val) {\n\t\t\t\tsetStepOne(\"invalid\")\n\t\t\t} else {\n\t\t\t\tsetStepOne(\"success\");\n\t\t\t}\n\t\t}\n\n\t}, [\n\t\terrors.firstName,\n\t\terrors.lastName,\n\t\terrors.email,\n\t\terrors.phone,\n\t\terrors.weeks,\n\t\terrors.service,\n\t\terrors.temsCheckbox,\n\t\tclickButtonForm\n\t])\n\n\n\treturn (\n\t\t<div className=\"container\">\n\n\t\t\t<StepProgress\n\t\t\t\tstepOne={stepOne}\n\t\t\t\tstepTwo={stepTwo}\n\t\t\t\tstepThree={stepThree}\n\t\t\t/>\n\n\t\t\t{state.step === \"registerForm\" && (\n\t\t\t\t<RegisterForm\n\t\t\t\t\tstate={state}\n\t\t\t\t\tsetState={setState}\n\t\t\t\t\tparams={params}\n\t\t\t\t\tweeks={weeks}\n\t\t\t\t\tservices={services}\n\t\t\t\t\tselectedOptionAddons={selectedOptionAddons}\n\t\t\t\t\tcontrol={control}\n\t\t\t\t\tregister={register}\n\t\t\t\t\thandleSubmit={handleSubmit}\n\t\t\t\t\terrors={errors}\n\t\t\t\t\tController={Controller}\n\t\t\t\t\tonFormSubmit={onFormSubmit}\n\t\t\t\t\tonChangeServices={onChangeServices}\n\t\t\t\t\thandleAddonsSelected={handleAddonsSelected}\n\t\t\t\t\twidth={width}\n\t\t\t\t\taddOns={addOns}\n\t\t\t\t\thoverIndexBabyGrow={hoverIndexBabyGrow}\n\t\t\t\t\thoverIndexHearthbeat={hoverIndexHearthbeat}\n\t\t\t\t\thoverIndex8kRealisticView={hoverIndex8kRealisticView}\n\t\t\t\t\tmodalHearthbeat={modalHearthbeat}\n\t\t\t\t\tsetModalHearthbeat={setModalHearthbeat}\n\t\t\t\t\tmodalBabyGrow={modalBabyGrow}\n\t\t\t\t\tsetModalBabyGrow={setModalBabyGrow}\n\t\t\t\t\tmodal8kRealisticView={modal8kRealisticView}\n\t\t\t\t\tsetModal8kRealisticView={setModal8kRealisticView}\n\t\t\t\t\tsetClickButtonForm={setClickButtonForm}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{state.step === \"availability\" && !useV2 && (\n\t\t\t\t<SelectTimeAppointment\n\t\t\t\t\tsetStepTwo={setStepTwo}\n\t\t\t\t\tpreviousStep={previousStep}\n\t\t\t\t\tstate={state}\n\t\t\t\t\tavailableBlocks={availableBlocks}\n\t\t\t\t\tsetState={setState}\n\t\t\t\t\tfirstLoad={firstLoad}\n\t\t\t\t\tsetSelectBlock={setSelectBlock}\n\t\t\t\t\tleadState={leadState}\n\t\t\t\t\tsetLeadState={setLeadState}\n\t\t\t\t\tscrollParenTop={scrollParenTop}\n\t\t\t\t\tselectedBlock={selectedBlock}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{state.step === \"availability\" && useV2 && (\n\t\t\t\t<SelectTimeAppointmentV2\n\t\t\t\t\tsetStepTwo={setStepTwo}\n\t\t\t\t\tpreviousStep={previousStep}\n\t\t\t\t\tstate={state}\n\t\t\t\t\tsetState={setState}\n\t\t\t\t\tsetSelectBlock={setSelectBlock}\n\t\t\t\t\tleadState={leadState}\n\t\t\t\t\tsetLeadState={setLeadState}\n\t\t\t\t\tscrollParenTop={scrollParenTop}\n\t\t\t\t\tselectedBlock={selectedBlock}\n\t\t\t\t\tsessionTypeId={clientState.sessionTypeId}\n\t\t\t\t\tsiteInfo={siteInfo}\n\t\t\t\t/>\n\t\t\t)}\n\n\n\t\t\t{state.step === \"summary\" && (\n\t\t\t\t<BookAppointment\n\t\t\t\t\tstate={state}\n\t\t\t\t\tclientState={clientState}\n\t\t\t\t\taddHeartbeatBuddies={addHeartbeatBuddies}\n\t\t\t\t\tadd8kRealisticView={add8kRealisticView}\n\t\t\t\t\tsetStepThree={setStepThree}\n\t\t\t\t\tgoogleTrackBooking={googleTrackBooking}\n\t\t\t\t\tsetState={setState}\n\t\t\t\t\tsetClientState={setClientState}\n\t\t\t\t\tselectedOptionAddons={selectedOptionAddons}\n\t\t\t\t\tlocalTime={localTime}\n\t\t\t\t\tleadState={leadState}\n\t\t\t\t\tsetLeadState={setLeadState}\n\t\t\t\t\tpreviousStep={previousStep}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}