{"version":3,"file":"js/application-83d1bafc4b6f13e531aa.js","mappings":"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AAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACjf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACxf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI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","sources":["webpack://daocloud/./app/javascript/components/payments/SquarePaymentsForm.jsx","webpack://daocloud/./app/javascript/components/payments/PaymentProviderCardForm.jsx","webpack://daocloud/./app/javascript/hooks/useStripeHook.jsx","webpack://daocloud/./app/javascript/components/payments/PaymentProviderWrapper.jsx","webpack://daocloud/./app/javascript/@core/HoneyBadgerErrorBoundary.jsx","webpack://daocloud/./app/javascript/components/shared/Photo.jsx","webpack://daocloud/./app/javascript/components/client_bookings/BookingCard.jsx","webpack://daocloud/./app/javascript/components/client_bookings/TransactionCard.jsx","webpack://daocloud/./app/javascript/components/client_bookings/ClientBookings.jsx","webpack://daocloud/./app/javascript/support/amplitude-react.js","webpack://daocloud/./app/javascript/components/shared/ClientUpload.jsx","webpack://daocloud/./app/javascript/components/shared/Vector.jsx","webpack://daocloud/./app/javascript/components/header/BrowseTherapiesCTA.jsx","webpack://daocloud/./app/javascript/hooks/useOutsideAlerter.jsx","webpack://daocloud/./app/javascript/components/header/LocationSearch.jsx","webpack://daocloud/./app/javascript/components/header/SearchCategory.jsx","webpack://daocloud/./app/javascript/components/header/SearchBar.jsx","webpack://daocloud/./app/javascript/components/shared/RoundedButton.jsx","webpack://daocloud/./app/javascript/components/invite_clients/CsvReader.jsx","webpack://daocloud/./app/javascript/components/invite_clients/ChooseMethod.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Row.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Confirmation.jsx","webpack://daocloud/./app/javascript/components/invite_clients/CopyPaste.jsx","webpack://daocloud/./app/javascript/components/invite_clients/Review.jsx","webpack://daocloud/./app/javascript/components/shared/ProgressBar.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewLayout.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewBookNext.jsx","webpack://daocloud/./app/javascript/providers/ReviewProvider.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewClientInfo.jsx","webpack://daocloud/./app/javascript/components/shared/RatingStarRow.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewConfirm.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewEndorsements.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewIntro.jsx","webpack://daocloud/./app/javascript/components/RatingStar.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewRating.jsx","webpack://daocloud/./app/javascript/components/leave_review/ReviewTextReview.jsx","webpack://daocloud/./app/javascript/contexts/PracticeContext.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AddOrRetryModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AddOrRetryButton.jsx","webpack://daocloud/./app/javascript/components/shared/NotificationsFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/ProInbox.jsx","webpack://daocloud/./app/javascript/contexts/FeatureFlagContext.jsx","webpack://daocloud/./app/javascript/utils/sideNavigationUtils.jsx","webpack://daocloud/./app/javascript/components/PortalHeader.jsx","webpack://daocloud/./app/javascript/contexts/CalendarFlyoutContext.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/appointment_graphql.jsx","webpack://daocloud/./app/javascript/contexts/ManualBookingContext.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/mutations.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventsContext.jsx","webpack://daocloud/./app/javascript/utils/calendarUtils.jsx","webpack://daocloud/./app/javascript/contexts/ProCalendarContext.jsx","webpack://daocloud/./app/javascript/components/shared/ConfirmRescheduleModal.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/mutations.js","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypesContext.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/queries.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventForm.jsx","webpack://daocloud/./app/javascript/components/shared/DeleteClientModal.jsx","webpack://daocloud/./app/javascript/components/shared/EditClientModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ClientSelector.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/queries.js","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventPaymentModal.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/ClientDetailsFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventRegistrants.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/CalendarEvent.jsx","webpack://daocloud/./app/javascript/@core/appointment/appointment.model.js","webpack://daocloud/./app/javascript/components/shared/AdjustmentModal.jsx","webpack://daocloud/./app/javascript/components/shared/AppointmentAdjustments.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentActions.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/EditAppointmentDateTime.jsx","webpack://daocloud/./app/javascript/components/shared/CurrencyInput.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/RecurrenceSelect.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/EditAppointmentService.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/LocationSelect.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentDetails.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentReview.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/AppointmentStatus.jsx","webpack://daocloud/./app/javascript/components/shared/ClientNotes.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ClientInfo.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ConfirmPackageModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ConfirmModals.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ErrorBanner.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/client_event_form/ManualPaymentInvoiceSection.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ClientEventForm.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/PersonalEventForm.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/ProCalendar.jsx","webpack://daocloud/./app/javascript/pages/IntakeForms/SendIntakeFormButton.jsx","webpack://daocloud/./app/javascript/pages/IntakeForms/IntakeFormSection.jsx","webpack://daocloud/./app/javascript/pages/ManagePaymentMethods/AddCreditCardModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentSummaryRow.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/AppointmentHistory.jsx","webpack://daocloud/./app/javascript/components/pro_portal/calendar/UpcomingAppointments.jsx","webpack://daocloud/./app/javascript/components/shared/ClientFlyout.jsx","webpack://daocloud/./app/javascript/components/shared/CreateClientModal.jsx","webpack://daocloud/./app/javascript/components/pro_portal/clients/ClientDirectory.jsx","webpack://daocloud/./app/javascript/components/pro_portal/dashboard/DownloadMobileApp.jsx","webpack://daocloud/./app/javascript/utils/fetchAppointment.js","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentSettingsFlyout.jsx","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentDirectory.jsx","webpack://daocloud/./app/javascript/components/ProfilePhoneNumber.jsx","webpack://daocloud/./app/javascript/components/shared/InputField.jsx","webpack://daocloud/./app/javascript/components/shared/EnterPhone.jsx","webpack://daocloud/./app/javascript/components/SideNavigation.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventCard.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents/BookableEventsFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEvents.jsx","webpack://daocloud/./app/javascript/components/shared/Breadcrumbs.jsx","webpack://daocloud/./app/javascript/components/shared/ListBox.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientPageView.jsx","webpack://daocloud/./app/javascript/pages/ManagePaymentMethods/ManagePaymentMethods.jsx","webpack://daocloud/./app/javascript/pages/Client/ManageCreditCard.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientBillingPage.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientIntakeForm.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientNotes.jsx","webpack://daocloud/./app/javascript/components/shared/AppointmentNotes.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientChronology.jsx","webpack://daocloud/./app/javascript/pages/Client/ClientOverview.jsx","webpack://daocloud/./app/javascript/pages/IntakeForm.jsx","webpack://daocloud/./app/javascript/pages/IntakeFormsPage.jsx","webpack://daocloud/./app/javascript/components/shared/InfoParagraph.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/PaypalPaymentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/AddPaymentModal.jsx","webpack://daocloud/./app/javascript/hooks/useBrowserInfo.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/mutations.js","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/AddPaymentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/CancelAppointmentButton.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/OfflinePaymentMethods.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer/PaymentStatusBox.jsx","webpack://daocloud/./app/javascript/pages/ManageAppointmentsConsumer.jsx","webpack://daocloud/./app/javascript/pages/ManageEventRegistration.jsx","webpack://daocloud/./app/javascript/contexts/ProfileStatusContext.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditProvider.jsx","webpack://daocloud/./app/javascript/pages/PersonalSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalGiftCardTemplates/GiftCardForm.jsx","webpack://daocloud/./app/javascript/pages/PortalGiftCardTemplates/PortalGiftCardTemplatesPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/DisplayAvailableTimes.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/AvailableTimes.jsx","webpack://daocloud/./app/javascript/components/shared/PlacesAutocomplete.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/LocationPlacesSelect.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/HomeLocationFields.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/OfficeLocationFields.jsx","webpack://daocloud/./app/javascript/utils/timeZoneUtils.js","webpack://daocloud/./app/javascript/pages/ProfileEdit/VirtualLocationFields.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/LocationFlyout.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/PortalServicesLocations.jsx","webpack://daocloud/./app/javascript/components/shared/DropdownButton.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/LocationInput.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/PhotoUpload.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypeForm.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypeFlyout.jsx","webpack://daocloud/./app/javascript/pages/BookableEventTypes/BookableEventTypesTable.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/ServiceSelector.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/DiscountCodeFlyout.jsx","webpack://daocloud/./app/javascript/pages/DiscountCodes/DiscountCodesTable.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ServiceFlyout.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/ServiceCard.jsx","webpack://daocloud/./app/javascript/pages/PortalServices/PortalServicesPage.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettingsProvider.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettingsView.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Communications/ProCommunicationTemplates.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ConferencingSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/PaypalSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/SquarePaymentsSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/Payments/StripePaymentsSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProBookingSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/CalIcon.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/ReadCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings/WriteCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProCalendarSettings.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProMainSettings.jsx","webpack://daocloud/./app/javascript/components/pro_portal/payments/PaymentIntegrations.jsx","webpack://daocloud/./app/javascript/pages/PortalSettings/ProPaymentSettings.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationPractice.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationUser.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CredentialsModal.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditCredentialsV2.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileChecklist.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/ProfileEditView.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditAudience.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditCredentials.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditDetails.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/EndorsementsFlyout.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditEndorsements.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditLocations.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditPhotos.jsx","webpack://daocloud/./app/javascript/pages/ProfileEditServices.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProImportReviews.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewRequestsTable.jsx","webpack://daocloud/./app/javascript/utils/setupFilters.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ReviewFlyout.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsTable.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ReviewRequestForm.jsx","webpack://daocloud/./app/javascript/pages/ProReviews.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsCompletedPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsEndorsementsPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsImportPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsPendingPage.jsx","webpack://daocloud/./app/javascript/pages/ProReviews/ProReviewsRequestPage.jsx","webpack://daocloud/./app/javascript/pages/ReferralProgramPage.jsx","webpack://daocloud/./app/javascript/pages/WebsiteDash.jsx","webpack://daocloud/./app/javascript/graphql/mutations/generateImageAltText.js","webpack://daocloud/./app/javascript/graphql/mutations/generateSiteMetadata.js","webpack://daocloud/./app/javascript/graphql/mutations/upsertWebsiteMetadata.js","webpack://daocloud/./app/javascript/pages/WebsiteSettings/SeoSettings.jsx","webpack://daocloud/./app/javascript/utils/customDomainUtils.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CustomDomainSection.jsx","webpack://daocloud/./app/javascript/pages/WebsiteSettings/WebsiteDomain.jsx","webpack://daocloud/./app/javascript/pages/WebsiteSettings/WebsiteSettings.jsx","webpack://daocloud/./app/javascript/packs/application.js","webpack://daocloud/./app/javascript/components/invite_clients/InviteClients.jsx","webpack://daocloud/./app/javascript/components/ListPracticeCTA.jsx","webpack://daocloud/./app/javascript/components/ClientUploadButton.jsx","webpack://daocloud/./app/javascript/pages/WebsiteBuilder/WebsiteContentPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PersonalInformationPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/PracticeInformationPage.jsx","webpack://daocloud/./app/javascript/pages/ProfileEdit/CombinedInformationPage.jsx","webpack://daocloud/./app/javascript/pages/HomePage/CTALink.jsx","webpack://daocloud/./app/javascript/pages/HomePage/BottomCTA.jsx","webpack://daocloud/./app/javascript/pages/HomePage/HeroSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage/PractitionerJoinCTA.jsx","webpack://daocloud/./app/javascript/pages/HomePage/ReviewsSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage/TherapyCategoriesSection.jsx","webpack://daocloud/./app/javascript/pages/HomePage.jsx","webpack://daocloud/./app/javascript/src/application/amplitude.js","webpack://daocloud/./app/javascript/src/application/forms.js","webpack://daocloud/./app/javascript/src/application/intlTelInput.js","webpack://daocloud/./app/javascript/src/application/misc.js","webpack://daocloud/./app/javascript/src/application/quiz.js","webpack://daocloud/./app/javascript/src/application/setup.js","webpack://daocloud/./app/javascript/src/application/tabs.js","webpack://daocloud/./app/javascript/src/application/utils.js","webpack://daocloud/./app/javascript/utils/mutations.js"],"sourcesContent":["import React, { useContext, useEffect, useRef } from \"react\"\n\nimport { PaymentProviderContext } from \"./PaymentProviderWrapper\"\n\nexport default function SquarePaymentForm() {\n const cardRef = useRef()\n\n const { squarePayments, squareCard, setSquareCard } = useContext(PaymentProviderContext)\n\n useEffect(() => {\n const initializePayment = async () => {\n const card = await squarePayments.card()\n await card.attach(cardRef.current)\n setSquareCard(card)\n }\n if (squarePayments) {\n initializePayment()\n }\n }, [squarePayments])\n\n return (\n <>\n {!squareCard && <div>Loading...</div>}\n <div id=\"card-container\" ref={cardRef}></div>\n </>\n )\n}\n","import { PaymentElement } from \"@stripe/react-stripe-js\"\nimport React from \"react\"\n\nimport SquarePaymentForm from \"./SquarePaymentsForm\"\n\nexport default function PaymentProviderCardForm({ practice, options }) {\n switch (practice.paymentProvider) {\n case \"stripe\":\n return <PaymentElement options={options} />\n case \"square\":\n return <SquarePaymentForm />\n }\n}\n","import { useMutation } from \"urql\"\n\nexport const SETUP_INTENT_MUTATION = `\n mutation SetupIntent($appointmentId: ID, $practiceId: ID!, $userId: ID, $clientId: ID) {\n setupIntent(appointmentId: $appointmentId, practiceId: $practiceId, userId: $userId, clientId: $clientId) {\n result\n setupIntentSecret\n }\n }\n`\n\nexport default function useStripeHook() {\n const [{ data }, setupIntent] = useMutation(SETUP_INTENT_MUTATION)\n\n // Set elementsOptions based on what data we have\n const elementsOptions = data?.setupIntent?.setupIntentSecret\n ? { clientSecret: data.setupIntent.setupIntentSecret }\n : { mode: \"setup\", currency: \"usd\" }\n\n return { stripeData: data, setupIntent, elementsOptions }\n}\n","import Honeybadger from \"@honeybadger-io/js\"\nimport { payments } from \"@square/web-sdk\"\nimport { Elements, useElements, useStripe } from \"@stripe/react-stripe-js\"\nimport { loadStripe } from \"@stripe/stripe-js\"\nimport React, { createContext, useCallback, useContext, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport useStripeHook from \"../../hooks/useStripeHook\"\nimport { SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION } from \"../../utils/mutations\"\n\nexport default function PaymentProviderWrapper({ practice, appointment, user, client, children, mode = \"default\" }) {\n return (\n <>\n {practice.paymentProvider === \"stripe\" && (\n <StripeWrapper practice={practice} appointment={appointment} user={user} client={client} mode={mode}>\n {children}\n </StripeWrapper>\n )}\n {practice.paymentProvider === \"square\" && (\n <SquareWrapper practice={practice} appointment={appointment} user={user} client={client} mode={mode}>\n {children}\n </SquareWrapper>\n )}\n </>\n )\n}\n\nfunction StripeWrapper({ children, practice, user, client, appointment, mode }) {\n const { stripeData, setupIntent, elementsOptions } = useStripeHook()\n\n const promise = loadStripe(`${window.App.stripe_key}`, {\n stripeAccount: practice.stripeAccountId || window.App.practice_stripe_account\n })\n\n useEffect(() => {\n // Only call setupIntent directly if not in setup mode\n // For setup mode, we'll handle it in handleCardSavedOnProvider\n if (mode !== \"setup\") {\n setupIntent({\n practiceId: practice.id,\n appointmentId: appointment?.id,\n userId: user?.id,\n clientId: client?.id\n }).then((res) => {\n if (res.data?.setupIntent?.result === \"success\") {\n // nothing\n } else {\n Honeybadger.notify(res.error)\n console.error(res.error) // eslint-disable-line no-console\n }\n })\n }\n }, [mode, practice.id, appointment?.id, user?.id, client?.id, setupIntent])\n\n return (\n (stripeData || mode === \"setup\") &&\n promise && (\n <Elements stripe={promise} options={elementsOptions}>\n <PaymentProviderContextProvider\n practice={practice}\n appointment={appointment}\n user={user}\n client={client}\n provider=\"stripe\"\n mode={mode}>\n {children}\n </PaymentProviderContextProvider>\n </Elements>\n )\n )\n}\n\nfunction SquareWrapper({ practice, appointment, user, client, children, mode }) {\n return (\n <PaymentProviderContextProvider\n provider=\"square\"\n appointment={appointment}\n practice={practice}\n user={user}\n client={client}\n mode={mode}>\n {children}\n </PaymentProviderContextProvider>\n )\n}\n\nexport const PaymentProviderContext = createContext()\n\nexport const PaymentProviderContextProvider = ({\n provider,\n practice,\n appointment,\n user,\n client,\n children,\n mode = \"default\"\n}) => {\n const [squareCard, setSquareCard] = React.useState(null)\n const [, squareAddCardToCustomer] = useMutation(SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION)\n\n const stripe = provider === \"stripe\" ? useStripe() : null\n const elements = provider === \"stripe\" ? useElements() : null\n\n const { setupIntent } = provider === \"stripe\" ? useStripeHook() : { setupIntent: null }\n\n const [squarePayments, setSquarePayments] = React.useState(null)\n useEffect(() => {\n const initializePayment = async () => {\n let sp = await payments(window.App.square_application_id, \"\")\n setSquarePayments(sp)\n }\n initializePayment()\n }, [])\n\n const handleCardSavedOnProvider = useCallback(async () => {\n if (provider === \"stripe\") {\n if (!stripe || !elements) return\n\n // Use the mode prop instead of trying to detect it from elements\n const isSetupMode = mode === \"setup\"\n let clientSecret = null\n\n // Setup mode is to show the Stripe payment form without setup intent (logged out user)\n // This flow is not currently used, we only show the form, but we're not saving it\n // Test this before using.\n // If we're in setup mode, create a setupIntent\n if (isSetupMode) {\n const setupIntentResult = await setupIntent({\n practiceId: practice.id,\n appointmentId: appointment?.id,\n userId: user?.id,\n clientId: client?.id\n })\n\n if (setupIntentResult.data?.setupIntent?.result === \"success\") {\n clientSecret = setupIntentResult.data.setupIntent.setupIntentSecret\n } else {\n Honeybadger.notify(setupIntentResult.error)\n return { error: setupIntentResult.error?.message || \"Failed to create setup intent\" }\n }\n }\n\n // Now confirm the setup with the appropriate clientSecret\n const confirmParams = {\n elements,\n redirect: \"if_required\",\n confirmParams: {\n return_url: `${window.location.origin}${window.location.pathname}`\n }\n }\n\n // Add clientSecret if we're in setup mode and generated one\n if (isSetupMode && clientSecret) {\n confirmParams.clientSecret = clientSecret\n }\n\n const result = await stripe.confirmSetup(confirmParams)\n\n if (result.error) {\n return { error: result.error.message || \"An error occurred\" }\n }\n return { token: null }\n } else if (provider === \"square\") {\n try {\n const tokenizeResult = await squareCard.tokenize()\n if (tokenizeResult.status === \"OK\") {\n const addCardResult = await squareAddCardToCustomer({\n clientId: client?.id || appointment?.client?.id,\n practiceId: practice.id,\n sourceId: tokenizeResult.token,\n userId: user?.id || appointment?.user?.id\n })\n\n if (addCardResult.data?.squareAddCardToCustomer?.result === \"success\") {\n return { token: tokenizeResult.token }\n }\n return { error: addCardResult.data?.squareAddCardToCustomer?.errors.join(\", \") || \"An error occurred\" }\n } else {\n return { error: JSON.stringify(tokenizeResult.errors) }\n }\n } catch (error) {\n return { error: error.message || \"An error occurred\" }\n }\n }\n }, [provider, squareCard, stripe, elements, setupIntent, practice, appointment, user, client, mode])\n\n return (\n <PaymentProviderContext.Provider\n value={{\n handleCardSavedOnProvider,\n stripe,\n elements,\n squarePayments,\n squareCard,\n setSquareCard,\n setupIntent,\n mode\n }}>\n {children}\n </PaymentProviderContext.Provider>\n )\n}\n\nexport const usePaymentProvider = () => useContext(PaymentProviderContext)\n","import { Honeybadger, HoneybadgerErrorBoundary } from \"@honeybadger-io/react\"\nimport React from \"react\"\n\nconst honeybadger = Honeybadger.configure({\n apiKey: \"hbp_6m6vaWJX6KdTdPYxfqptlzIhk7PiF103F3K5\",\n environment: window.App.environment,\n projectRoot: \"webpack:///./app/javascript\",\n revision: window.App.heroku_slug_commit,\n enableUncaught: true\n})\n\nexport const wrapWithErrorBoundary = (WrappedComponent) =>\n function WithErrorBoundary(props) {\n return (\n <HoneybadgerErrorBoundary honeybadger={honeybadger}>\n <WrappedComponent {...props} />\n </HoneybadgerErrorBoundary>\n )\n }\n","import React from \"react\"\n\nconst Photo = ({ filestack, imgSrc, onClick, className, imgClassName }) => (\n <div className={`photo ${className}`} onClick={onClick}>\n <picture>\n {filestack?.x_large?.webp && (\n <source type=\"image/webp\" srcSet={`https://cdn.filestackcontent.com/${filestack.x_large.webp} 2x`} />\n )}\n {filestack?.x_large?.jpeg && (\n <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.x_large.jpeg} 2x`} />\n )}\n {filestack?.large?.webp && (\n <source type=\"image/webp\" srcSet={`https://cdn.filestackcontent.com/${filestack.large.webp}`} />\n )}\n {filestack?.large?.jpeg && (\n <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.large.jpeg}`} />\n )}\n {filestack?.square?.jpeg && (\n <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.square.jpeg}`} />\n )}\n {filestack?.medium?.jpeg && (\n <source type=\"image/jpeg\" srcSet={`https://cdn.filestackcontent.com/${filestack.medium.jpeg}`} />\n )}\n <img className={imgClassName} type=\"image/jpeg\" src={imgSrc} />\n </picture>\n </div>\n)\n\nexport default Photo\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport DesktopH5 from \"../shared/DesktopH5\"\nimport DesktopTitle3 from \"../shared/DesktopTitle3\"\nimport HealMeSquareButton from \"../shared/HealMeSquareButton\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\nimport Modal from \"../shared/Modal\"\nimport Photo from \"../shared/Photo\"\n\nimport { CardTitle } from \"./ClientBookings\"\n\nconst QUERY = `\n query BookingCard($id: ID!) {\n userAppointment(id: $id) {\n id\n practice {\n user {\n id\n commsName\n name\n profilePhotos {\n xLarge {\n jpeg\n webp\n }\n large {\n jpeg\n webp\n }\n medium {\n jpeg\n webp\n }\n small {\n jpeg\n webp\n }\n original {\n jpeg\n webp\n }\n }\n }\n }\n services {\n id\n name\n description\n timeLength\n amountCents\n photoUrl\n state\n addOn\n }\n location {\n id\n name\n address\n cityState\n zip\n kind\n timeZone\n formattedTimeZone\n timeZoneAbbr\n hideAddress\n country\n virtualLink\n virtualInstructions\n }\n }\n }\n `\n\nconst CANCEL_APPOINTMENT_MUTATION = `\n mutation CancelAppointmentNoUser($appointmentId: ID!) {\n cancelAppointmentNoUser(appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nconst Card = styled.a`\n display: flex;\n gap: 10px;\n background: #fff;\n padding: 15px 15px 15px 15px;\n border: 1px solid #dcdfe6;\n box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n color: #0b3954;\n font-size: 14px;\n margin-top: -15px;\n\n .booking-photo {\n height: 64px;\n min-height: 64px;\n width: 64px;\n min-width: 64px;\n }\n\n .booking-pro-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 500;\n font-size: 16px;\n width: 100%;\n position: relative;\n\n @media (max-width: 769px) {\n margin-bottom: 10px;\n }\n }\n\n .booking-state {\n ${(props) =>\n props.status === \"CONFIRMED\" &&\n `\n background-color: #48c774;\n `}\n\n ${(props) =>\n props.status === \"PENDING\" &&\n `\n background-color: #ffbe57;\n `}\n\n ${(props) =>\n props.status === \"UNAVAILABLE\" &&\n `\n background-color: #f75959;\n `}\n font-size: 10px;\n font-weight: 600;\n border-radius: 0;\n padding: 6px 6px 6px 6px;\n color: #fff;\n position: absolute;\n left: 87.5%;\n\n @media (max-width: 769px) {\n left: 72.5%;\n }\n }\n .booking-info {\n width: 100%;\n a {\n word-wrap: break-word;\n }\n @media (max-width: 769px) {\n max-width: 75%;\n }\n }\n .booking-time {\n font-size: 12px;\n color: #55778a;\n }\n\n .booking-time-price {\n display: flex;\n align-items: center;\n gap: 30px;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .booking-align-center {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n`\n\nconst CancelContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 65px;\n background: #fff;\n border-width: 0 1px 1px 1px;\n border-color: #dcdfe6;\n border-style: solid;\n box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n margin-top: -24px;\n font-weight: 700;\n\n i {\n font-size: 18px;\n margin-right: 20px;\n font-weight: 700;\n }\n\n &:hover {\n cursor: pointer;\n }\n`\nconst getStatus = (state) => {\n switch (state) {\n case \"approved\":\n return \"CONFIRMED\"\n case \"pending\":\n return \"PENDING\"\n case \"unavailable\":\n return \"UNAVAILABLE\"\n }\n}\n\nconst BookingCard = ({ booking }) => {\n const [showConfirmCancel, setShowConfirmCancel] = useState(false)\n\n const [{ data, fetching, error }] = useQuery({\n query: QUERY,\n variables: { id: booking.id },\n requestPolicy: \"cache-and-network\"\n })\n\n const [{ fetching: cancelAppointmentFetching }, cancelAppointmentNoUser] = useMutation(CANCEL_APPOINTMENT_MUTATION)\n\n if (fetching) return <LoadingSpinner />\n if (error || !data) return <div>Error: {error.message}</div>\n\n const location = data.userAppointment.location\n const user = data.userAppointment.practice.user\n const services = data.userAppointment.services\n\n const processingFees = (booking.feeCents + booking.platformFeeCents) / 100\n const status = getStatus(booking.state)\n let timeZoneDisplay = new Date().toLocaleTimeString(\"en-us\", { timeZoneName: \"short\" }).split(\" \")[2]\n\n return (\n <>\n <CardTitle>{dayjs(booking.startsAt).format(\"dddd, MMM Do, YYYY\")}</CardTitle>\n <Card status={status} href={`/m/c/${booking.instantActionToken}`}>\n <Photo filestack={user.profilePhotos} className=\"booking-photo\" />\n\n <div className=\"booking-info\">\n <div className=\"booking-pro-name\">\n <div>{user.name}</div>\n <div className=\"booking-state\">{status}</div>\n </div>\n\n <div className=\"mb-2\">\n {services.map((service) => (\n <div key={service.id}>\n {service.name}\n {service.addOn ? \" (Add-on)\" : \"\"}\n </div>\n ))}\n </div>\n\n <div className=\"booking-time\">\n {dayjs(booking.startsAt).format(\"MMMM DD YYYY, h:mm A\")} - {dayjs(booking.endsAt).format(\"h:mm A\")}{\" \"}\n {location.kind === \"virtual\" ? timeZoneDisplay : location.timeZoneAbbr}\n </div>\n\n <div className=\"booking-time-price\">\n <div className=\"booking-align-center\">\n <i className=\"icon-price\" />{\" \"}\n {booking.amountCents > 0\n ? `${(booking.amountCents / 100 + processingFees).toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: \"USD\"\n })}`\n : \"Free\"}\n </div>\n\n <div className=\"booking-align-center\">\n <i className=\"icon-clock\" />\n {booking.appointmentTimeLength} minutes\n </div>\n </div>\n\n <div className=\"booking-align-center\">\n <i className=\"icon-location\" />\n {location.kind === \"virtual\"\n ? \"Virtual\"\n : `${location.address}, ${location.cityState} ${location.zip}, ${location.country}`}\n </div>\n\n {location.kind === \"virtual\" && (\n <>\n {location.virtualLink && (\n <div>\n Virtual link: <a href={location.virtualLink}>{location.virtualLink}</a>\n </div>\n )}\n {location.virtualInstructions && <div>Join instructions: {location.virtualInstructions}</div>}\n </>\n )}\n </div>\n </Card>\n\n {(status === \"PENDING\" || status === \"UNAVAILABLE\") && (\n <>\n <CancelContainer onClick={() => setShowConfirmCancel(true)}>\n <i className=\"icon-close\" /> Cancel\n </CancelContainer>\n <Modal\n open={showConfirmCancel}\n closeModal={() => setShowConfirmCancel(false)}\n size=\"small\"\n header={\n <div>\n <DesktopH5 content=\"Cancel booking\" />\n </div>\n }\n footer={\n <>\n <HealMeSquareButton type=\"tertiary\" onClick={() => setShowConfirmCancel(false)} label=\"Close\" />\n <HealMeSquareButton\n type=\"warning\"\n label=\"Cancel booking\"\n loading={cancelAppointmentFetching}\n onClick={() =>\n cancelAppointmentNoUser({ appointmentId: booking.id }).then(() => {\n setShowConfirmCancel(false)\n location.reload()\n })\n }\n />\n </>\n }>\n <DesktopTitle3 content={`Are you sure you want to cancel this booking?`} />\n </Modal>\n </>\n )}\n </>\n )\n}\n\nexport default BookingCard\n","import dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useQuery } from \"urql\"\n\nimport { CardTitle } from \"./ClientBookings\"\n\nconst QUERY = `\n query TransactionCard($practiceId: ID!, $serviceId: ID!) {\n practice(id: $practiceId) {\n id\n user {\n id\n commsName\n name\n }\n }\n service(id: $serviceId) {\n id\n name\n amountCents\n }\n }\n `\n\nconst Card = styled.div`\n display: flex;\n flex-flow: column;\n gap: 10px;\n background: #fff;\n padding: 15px 15px 15px 15px;\n border: 1px solid #dcdfe6;\n box-shadow: 0 0.5em 1em -0.125em rgba(11, 57, 84, 0.1), 0 0px 0 1px rgba(11, 57, 84, 0.02);\n color: #0b3954;\n font-size: 14px;\n\n .transaction-type-row {\n color: #0b3954;\n font-size: 18px;\n font-weight: 300;\n }\n\n .transaction-state {\n background-color: #f75959;\n ${(props) =>\n props.status === \"PROCESSED\" &&\n `\n background-color: #48c774;\n `}\n ${(props) =>\n props.status === \"PENDING\" &&\n `\n background-color: #ffbe57;\n `}\n\n font-size: 10px;\n font-weight: 600;\n border-radius: 0;\n padding: 6px 8px 6px 8px;\n color: #fff;\n position: absolute;\n left: 585px;\n }\n\n .transaction-info {\n display: flex;\n align-items: center;\n gap: 30px;\n margin-top: 15px;\n\n div {\n display: flex;\n align-items: center;\n gap: 4px;\n\n i {\n font-size: 16px;\n }\n }\n }\n\n .transaction-amount {\n position: absolute;\n left: 585px;\n }\n`\nconst getStatus = (type, state) => {\n if (type === \"Hold\" && state === 1) {\n return \"PENDING\"\n } else if (state === 0) {\n return \"PENDING\"\n } else if (state === 1) {\n return \"PROCESSED\"\n } else if (state === 2) {\n return \"FAILURE\"\n } else {\n return \"CANCELLED\"\n }\n}\n\nconst TransactionCard = ({ booking }) => {\n if (!booking.transaction) return null\n const [transaction] = useState(booking.transaction)\n const [practice, setPractice] = useState()\n const [service, setService] = useState()\n const processingFees = (booking.feeCents + booking.platformFeeCents) / 100\n const status = getStatus(transaction.type, transaction.state)\n\n const [{ data }] = useQuery({\n query: QUERY,\n variables: {\n practiceId: booking.practiceId,\n serviceId: booking.serviceId\n },\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (data) {\n setPractice(data.practice)\n setService(data.service)\n }\n }, [data])\n\n return (\n <>\n <CardTitle>{dayjs(booking.startsAt).format(\"dddd, MMM Do, YYYY\")}</CardTitle>\n <Card status={status}>\n <div className=\"transaction-type-row\">\n {transaction.type === \"Charge\" && <span>Payment</span>}\n {transaction.type === \"Hold\" && <span>Your card will be charged the day of the appointment</span>}\n {transaction.type !== \"Charge\" && transaction.type !== \"Hold\" && <span>{transaction.type}</span>}\n </div>\n <div className=\"transaction-state\">{status}</div>\n <div className=\"transaction-info\">\n <div>\n <i className=\"icon-practitioner-search\" />\n {practice?.user.name}\n </div>\n <div>\n <i className=\"icon-match\" />\n {service?.name}\n </div>\n <div className=\"transaction-amount\">\n {`${(service?.amountCents / 100 + processingFees).toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: \"USD\"\n })}`}\n </div>\n </div>\n </Card>\n </>\n )\n}\n\nexport default TransactionCard\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useQuery } from \"urql\"\n\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport BookingCard from \"./BookingCard\"\nimport TransactionCard from \"./TransactionCard\"\n\nconst APPOINTMENT_FIELDS = `\n id\n state\n startsAt\n endsAt\n amountCents\n feeCents\n platformFeeCents\n instantActionToken\n appointmentTimeLength\n`\n\nconst QUERY = `\n query ClientBookings {\n upcomingAppointments {\n ${APPOINTMENT_FIELDS}\n transaction {\n id\n amountCents\n state\n type\n }\n }\n pastAppointments {\n ${APPOINTMENT_FIELDS}\n transaction {\n id\n amountCents\n state\n type\n }\n }\n expiredAppointments {\n ${APPOINTMENT_FIELDS}\n }\n }\n `\n\nconst Container = styled.div`\n display: flex;\n flex-flow: column;\n color: #0b3954;\n`\nconst Title = styled.div`\n font-family: \"Manrope\", serif;\n font-size: 48px;\n font-weight: 700;\n color: #0b3954;\n`\nconst SubTitle = styled.div`\n color: #0b3954;\n font-size: 18px;\n`\nconst TabsContainer = styled.div`\n display: flex;\n gap: 18px;\n margin-top: 24px;\n overflow-x: scroll;\n`\nconst Tab = styled.div`\n color: #7a7a7a;\n font-size: 18px;\n padding-bottom: 8px;\n white-space: nowrap;\n\n ${(props) =>\n props.active &&\n `\n color: #0B3954;\n border-bottom: solid 2px #0b3954;\n `}\n &:hover {\n cursor: pointer;\n ${(props) =>\n !props.active &&\n `\n color: #0d9da4;\n border-bottom: solid 2px #0d9da4;\n `}\n }\n`\n\nconst BookingsContainer = styled.div`\n display: flex;\n flex-flow: column;\n gap: 24px;\n margin-top: 24px;\n width: 50%;\n\n @media (max-width: 769px) {\n width: 100%;\n }\n`\nexport const CardTitle = styled.div`\n color: #0b3954;\n font-size: 16px;\n font-weight: 500;\n margin-top: 18px;\n`\nconst UPCOMING = \"upcoming\"\nconst PAST = \"past\"\nconst TRANSACTIONS = \"transactions\"\nconst EXPIRED = \"expired\"\n\nconst Bookings = () => {\n const [activeTab, setActiveTab] = useState(UPCOMING)\n const [upcoming, setUpcoming] = useState()\n const [past, setPast] = useState()\n const [expired, setExpired] = useState()\n\n const [{ data }] = useQuery({\n query: QUERY,\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (data) {\n setUpcoming(data.upcomingAppointments)\n setPast(data.pastAppointments)\n setExpired(data.expiredAppointments)\n }\n }, [data])\n\n return (\n <Container>\n <Title>Your Bookings</Title>\n <SubTitle>All of your upcoming and past bookings.</SubTitle>\n <TabsContainer>\n <Tab active={activeTab === UPCOMING} onClick={() => setActiveTab(UPCOMING)}>\n Upcoming Bookings\n </Tab>\n <Tab active={activeTab === PAST} onClick={() => setActiveTab(PAST)}>\n Past Bookings\n </Tab>\n <Tab active={activeTab === TRANSACTIONS} onClick={() => setActiveTab(TRANSACTIONS)}>\n Transactions\n </Tab>\n <Tab active={activeTab === EXPIRED} onClick={() => setActiveTab(EXPIRED)}>\n Expired Requests\n </Tab>\n </TabsContainer>\n <BookingsContainer>\n {activeTab === UPCOMING &&\n upcoming &&\n upcoming.map((booking) => <BookingCard booking={booking} key={`upcoming-${booking.id}`} />)}\n {activeTab === UPCOMING && (!upcoming || upcoming?.length === 0) && (\n <div>You do not have any upcoming booking requests.</div>\n )}\n\n {activeTab === PAST &&\n past &&\n past.map((booking) => <BookingCard booking={booking} key={`past-${booking.id}`} />)}\n {activeTab === PAST && (!past || past?.length === 0) && <div>You do not have any past booking requests.</div>}\n\n {activeTab === TRANSACTIONS &&\n upcoming &&\n upcoming.map((booking) => <TransactionCard booking={booking} key={`transaction-${booking.id}`} />)}\n {activeTab === TRANSACTIONS && (!upcoming || upcoming?.length === 0) && (\n <div>Your transactions will appear here after you book your first sessions.</div>\n )}\n\n {activeTab === EXPIRED &&\n expired &&\n expired.map((booking) => <BookingCard booking={booking} key={`expired-${booking.id}`} />)}\n {activeTab === EXPIRED && (!expired || expired?.length === 0) && (\n <div>You do not have any expired booking requests.</div>\n )}\n </BookingsContainer>\n </Container>\n )\n}\n\nexport default function ClientBookings() {\n return (\n <DefaultProvider>\n <Bookings />\n </DefaultProvider>\n )\n}\n","import amplitude from \"amplitude-js\"\n\nexport const sendAmplitudeData = (eventType, eventProperties) => {\n amplitude.getInstance().logEvent(eventType, eventProperties)\n}\n","import { CSVBoxButton } from \"@csvbox/react\"\nimport React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport { Button } from \"../shared/Buttons\"\n\nimport DesktopH5 from \"./DesktopH5\"\nimport Modal from \"./Modal\"\nimport Toast from \"./Toast\"\n\nconst InviteClientsMutation = `\n mutation InviteClients($clients: [ClientInput!]!) {\n inviteClients (clients: $clients) {\n erroredClients {\n email\n }\n }\n }\n`\n\nconst InviteBox = styled.div`\n border: 1px solid #c8d6df;\n padding: 24px;\n margin-bottom: 16px;\n\n i {\n margin-right: 9px;\n font-size: 18px;\n }\n\n .content-row {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n }\n\n h4 {\n font-family: \"Manrope\";\n font-style: normal;\n font-weight: 700;\n font-size: 21px;\n line-height: 32px;\n letter-spacing: -0.02em;\n color: #0b3954;\n }\n\n @media only screen and (max-width: 768px) {\n display: none;\n }\n`\n\nexport default function ClientUpload({ practice, checkImport, className }) {\n const [, inviteClients] = useMutation(InviteClientsMutation)\n const [showAlert, setShowAlert] = useState(false)\n const [alertContent, setAlertContent] = useState(\"\")\n const [showModal, setShowModal] = useState(false)\n const [launchImport, setLaunchImport] = useState(false)\n const [importSuccess, setImportSuccess] = useState(false)\n\n const handleClientImport = (result, data) => {\n const clientsForUpload = data.rows.map((uploadedClient) => ({\n email: uploadedClient[\"email\"],\n firstName: uploadedClient[\"first_name\"],\n lastName: uploadedClient[\"last_name\"],\n phone: uploadedClient[\"phone\"],\n notes: uploadedClient[\"notes\"],\n clientType: \"invited\",\n invitedFrom: \"csv_import\"\n }))\n\n if (result) {\n inviteClients({ clients: clientsForUpload }).then((res) => {\n const inviteErrors = res.data.inviteClients.erroredClients.length\n\n if (res.error) {\n setShowAlert(true)\n setAlertContent(`Error importing clients: ${res.error} Please check your data and try again.`)\n setShowModal(false)\n } else {\n sendAmplitudeData(\"import clients submitted\", {\n \"Total Rows\": data.rows.length,\n \"Errored Invites\": inviteErrors\n })\n setShowAlert(true)\n setImportSuccess(true)\n setShowModal(false)\n setAlertContent(\n `${data.row_success - inviteErrors} clients invited successfully\n ${inviteErrors > 0 ? `\\n Could not invite ${inviteErrors} clients` : \"\"}.`\n )\n }\n })\n } else {\n console.log(\"Upload fail\")\n }\n }\n\n return (\n <div className={className}>\n {checkImport ? (\n <>\n <Button type=\"primary\" size=\"small\" onClick={() => setShowModal(true)}>\n Get started\n </Button>\n {launchImport ? (\n <CSVBoxButton\n licenseKey=\"XSwq17w1MiVmHnvStM7RmbA4JQvcTp\"\n user={{\n user_id: practice.id\n }}\n onImport={handleClientImport}\n render={(launch) => {\n setShowModal(false)\n launch()\n }}>\n Import\n </CSVBoxButton>\n ) : (\n <>\n <Modal\n open={showModal}\n closeModal={() => {\n setShowModal(false)\n }}\n header={<DesktopH5 content=\"Invite your clients\" />}\n footer={<></>}\n size=\"small\">\n <a onClick={() => setLaunchImport(true)}>\n <InviteBox>\n <div className=\"content-row\">\n <i className=\"icon-invite-clients\" />\n <h4>Invite clients</h4>\n </div>\n Got a client list? You can upload it before booking your first appointment.\n </InviteBox>\n </a>\n <a onClick={() => (window.location.href = \"/portal/calendar#create-appointment\")}>\n <InviteBox>\n <h4>No thanks, I'm ready to book.</h4>\n </InviteBox>\n </a>\n </Modal>\n </>\n )}\n </>\n ) : (\n <CSVBoxButton\n licenseKey=\"XSwq17w1MiVmHnvStM7RmbA4JQvcTp\"\n user={{\n user_id: practice.id\n }}\n onImport={handleClientImport}\n render={(launch) => (\n <Button type=\"tertiary\" size=\"small\" onClick={launch}>\n Invite clients\n </Button>\n )}>\n Import\n </CSVBoxButton>\n )}\n <Toast visible={showAlert} setVisible={setShowAlert}>\n {alertContent} {importSuccess && <a onClick={() => (window.location.href = \"/portal/clients\")}>View</a>}\n </Toast>\n </div>\n )\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst VectorImg = styled.div`\n background-image: url(\"/images/Vector.svg\");\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 8px;\n width: 14px;\n`\n\nconst Vector = ({ className }) => <VectorImg className={className} />\n\nexport default Vector\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport Vector from \"../shared/Vector\"\n\nconst TherapyCategoriesContainer = styled.div`\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n display: none;\n flex-flow: column wrap;\n background-color: #ffffff;\n max-height: 450px;\n justify-content: space-evenly;\n align-items: flex-start;\n padding-top: 20px;\n padding-left: 30px;\n padding-bottom: 30px;\n flex-grow: 1;\n overflow-x: auto;\n`\nconst TherapyCategory = styled.a`\n margin: 5px;\n color: #0b3954;\n font-size: 14px;\n &:hover {\n color: #0d9da4;\n }\n`\nconst BrowseTherapiesContainer = styled.div`\n padding-top: 13px;\n margin-left: 15px;\n height: 75px;\n\n @media (max-width: 1299px) {\n margin-left: 0;\n }\n\n & > a > .browse-therapies-toggle {\n margin-left: 10px;\n margin-top: 2px;\n }\n\n &:hover {\n ${TherapyCategoriesContainer} {\n display: flex;\n }\n & > a {\n background-color: transparent;\n cursor: pointer;\n color: #0d9da4 !important;\n\n & > .browse-therapies-toggle {\n transition: transform linear 0.1s;\n transform: rotate(180deg);\n }\n }\n }\n`\nconst TherapyCategories = ({ categories }) => (\n <TherapyCategoriesContainer id=\"therapy-categories-container\">\n {categories.map((c, index) => (\n <TherapyCategory\n onClick={() => sendAmplitudeData(\"browse therapy link clicked\", { Therapy: c })}\n href={`/practitioner-search?query=${encodeURIComponent(c)}`}\n key={`${c}-${index}`}>\n {c}\n </TherapyCategory>\n ))}\n </TherapyCategoriesContainer>\n)\n\nconst BrowseCategoriesCTA = ({ categories, classname, styling }) => (\n <BrowseTherapiesContainer className=\"browse-category-link\">\n <a className={classname} style={styling}>\n Browse Services <Vector className=\"browse-therapies-toggle\" />\n </a>\n <TherapyCategories categories={categories} />\n </BrowseTherapiesContainer>\n)\n\nexport default BrowseCategoriesCTA\n","import { useEffect } from \"react\"\n\nconst useMenuOutsideAlerter = (ref, setShow) => {\n useEffect(() => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setShow(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [ref])\n}\n\nexport default useMenuOutsideAlerter\n","import React, { useEffect, useState, useRef } from \"react\"\nimport Geocode from \"react-geocode\"\nimport Turbolinks from \"turbolinks\"\n\nimport useMenuOutsideAlerter from \"../../hooks/useOutsideAlerter\"\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\n\nconst LocationSearchBox = ({ query, onClick, setShow }) => {\n const locationSearchboxRef = useRef()\n useMenuOutsideAlerter(locationSearchboxRef, setShow)\n return (\n <div className=\"location-search-box\" ref={locationSearchboxRef}>\n <a\n href=\"\"\n onClick={(e) => {\n e.preventDefault()\n onClick()\n }}>\n <div className=\"location-search-row\" onClick={onClick}>\n <div className=\"location-search-icon\">\n <i className=\"icon-current-location\" />\n </div>\n <div className=\"location-search-text\">Use my current location</div>\n </div>\n </a>\n <a href={`/practitioner-search?query=${query}&virtual=true`}>\n <div className=\"location-search-row\">\n <div className=\"location-search-icon\">\n <i className=\"icon-virtual-filled\" />\n </div>\n <div className=\"location-search-text\">Browse virtual services</div>\n </div>\n </a>\n </div>\n )\n}\n\nconst LocationSearch = ({\n setSearchLocation,\n searchLocation,\n setLatlng,\n setIsVirtual,\n query,\n isVirtual,\n onLocationFocus,\n shouldRedirect\n}) => {\n const [value, setValue] = useState(isVirtual ? \"\" : searchLocation)\n const [show, setShow] = useState(false)\n const autoCompleteRef = useRef()\n const inputRef = useRef()\n const options = {\n types: [\"locality\", \"sublocality\", \"neighborhood\"]\n }\n\n const setValuesFromPlace = (place) => {\n if (!place?.geometry) return null\n\n const location = place.geometry.location\n const lat = typeof location.lat === \"function\" ? location.lat() : location.lat\n const lng = typeof location.lng === \"function\" ? location.lng() : location.lng\n\n setLatlng([`${lat}`, `${lng}`])\n setSearchLocation(place.formatted_address)\n setValue(place.formatted_address)\n sessionStorage.setItem(\"latlng\", [`${lat}`, `${lng}`])\n sessionStorage.setItem(\"cityState\", place.formatted_address)\n setIsVirtual(false)\n if (shouldRedirect) {\n sendAmplitudeData(\"location search submitted\", { location: place.formatted_address })\n Turbolinks.visit(\n `/practitioner-search?query=${encodeURIComponent(\n $(\".react-autosuggest__input\").val()\n )}&searched_location=${encodeURIComponent(\n place.formatted_address\n )}&aroundLatLng[lat]=${lat}&aroundLatLng[lng]=${lng}`\n )\n }\n }\n\n const submit = (e, clicked) => {\n if (e.key === \"Enter\" || e.keyCode === 13 || clicked) {\n Geocode.fromAddress(value)\n .then((response) => {\n const place = response.results[0]\n setValuesFromPlace(place)\n })\n .catch((e) => {\n console.error(`Error geocoding address ${value}: ${e.message}`) // eslint-disable-line\n })\n }\n }\n\n const findMyLocation = () => {\n const geoLocation = window.navigator && window.navigator.geolocation\n if (geoLocation) {\n geoLocation.getCurrentPosition((position) => {\n setLatlng([`${position.coords.latitude}`, `${position.coords.longitude}`])\n sessionStorage.setItem(\"latlng\", [`${position.coords.latitude}`, `${position.coords.longitude}`])\n Geocode.fromLatLng(position.coords.latitude, position.coords.longitude).then((response) => {\n const formattedAddressArray = response.results[0].formatted_address.split(\", \")\n const lat = response.results[0].geometry.location.lat\n const lng = response.results[0].geometry.location.lng\n const city = formattedAddressArray[1]\n let state = formattedAddressArray[2]\n state = state.split(\" \")[0]\n const cityState = `${city}, ${state}`\n setSearchLocation(cityState)\n setValue(cityState)\n sessionStorage.setItem(\"cityState\", cityState)\n Turbolinks.visit(\n `/practitioner-search?query=${encodeURIComponent(query)}&searched_location=${encodeURIComponent(\n cityState\n )}&aroundLatLng[lat]=${lat}&aroundLatLng[lng]=${lng}`\n )\n })\n })\n }\n }\n\n useEffect(() => {\n const addPlaceChangedListener = async () => {\n while (!window.google) await new Promise((resolve) => setTimeout(resolve, 1000))\n\n autoCompleteRef.current = new window.google.maps.places.Autocomplete(inputRef.current, options)\n\n autoCompleteRef.current.addListener(\"place_changed\", async function () {\n try {\n const place = await autoCompleteRef.current.getPlace()\n setValuesFromPlace(place)\n } catch (e) {\n console.error(`Error updating place from Google autocomplete: ${e}`) // eslint-disable-line\n }\n })\n }\n addPlaceChangedListener()\n }, [])\n\n useEffect(() => {\n setValue(searchLocation)\n }, [searchLocation])\n\n useEffect(() => {\n if (sessionStorage.getItem(\"latlng\")) {\n setLatlng(sessionStorage.getItem(\"latlng\").split(\",\"))\n if (sessionStorage.getItem(\"cityState\")) {\n setSearchLocation(sessionStorage.getItem(\"cityState\"))\n setValue(sessionStorage.getItem(\"cityState\"))\n }\n } else {\n findMyLocation()\n }\n }, [])\n\n return (\n <div className=\"location-search-container\">\n <input\n ref={inputRef}\n className=\"location-search-input\"\n type=\"search\"\n placeholder={\"Location\"}\n value={value}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n onFocus={() => {\n setShow(true)\n if (onLocationFocus) {\n onLocationFocus()\n }\n }}\n onKeyUp={(e) => submit(e)}\n />\n <i className=\"icon-map-pin2\" />\n <button className=\"button button-tertiary\" onClick={(e) => submit(e, true)}>\n Search\n </button>\n {show && <LocationSearchBox query={query} onClick={findMyLocation} setShow={setShow} />}\n </div>\n )\n}\n\nexport default LocationSearch\n","import React, { useEffect, useState } from \"react\"\nimport Autosuggest from \"react-autosuggest\"\nimport { Highlight, connectAutoComplete } from \"react-instantsearch-dom\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\n\nimport LocationSearch from \"./LocationSearch\"\n\nconst ProRow = ({ hit }) => (\n <div className=\"pro-row-suggestion\">\n <div className=\"pro-row-suggestion-img\">\n <img src={hit.user.photo} />\n </div>\n <div>\n <div className=\"pro-row-suggestion-name\">{hit.user.name}</div>\n <div className=\"pro-row-suggestion-info\">\n <i className=\"icon-star-filled\" />\n <span className=\"pro-row-suggestion-rating\">{hit.reviews_average}</span>\n <span className=\"pro-row-suggestion-reviews\"> ({hit.reviews_count})</span>\n </div>\n </div>\n </div>\n)\n\nconst SearchCategory = ({\n currentRefinement,\n hits,\n refine,\n setQuery,\n setSearchLocation,\n setLatlng,\n setIsVirtual,\n query,\n searchLocation,\n latlng,\n isVirtual,\n shouldRedirect,\n onSearchFocus,\n onLocationFocus,\n activeFilter\n}) => {\n const [value, setValue] = useState(currentRefinement || query)\n\n useEffect(() => {\n setValue(query)\n }, [query])\n\n const submit = (e) => {\n if (e.key === \"Enter\" || e.keyCode === 13) {\n setQuery(value)\n sendAmplitudeData(\"top search submitted\", { search: value })\n Turbolinks.visit(\n `/practitioner-search?query=${encodeURIComponent(\n value\n )}&searched_location=${searchLocation}&aroundLatLng[lat]=${latlng[0]}&aroundLatLng[lng]=${latlng[1]}${\n isVirtual && \"&virtual=true\"\n }${activeFilter && \"&activeFilter=\" + activeFilter}`\n )\n }\n }\n\n const onSuggestionSelected = (e, result) => {\n if (result.suggestion.user) {\n setQuery(\"\")\n setValue(result.suggestion.user.name)\n sendAmplitudeData(\"pro selected from top search\", { pro: result.suggestion.user.slug })\n window.location.href = practitionerWebsiteUrl(result.suggestion.user, null)\n } else {\n setQuery(result.suggestion.name)\n setValue(result.suggestion.name)\n if (shouldRedirect) {\n sendAmplitudeData(\"category selected from top search\", { therapy: result.suggestion.name })\n Turbolinks.visit(\n `/practitioner-search?query=${encodeURIComponent(\n result.suggestion.name\n )}&searched_location=${searchLocation}&aroundLatLng[lat]=${latlng[0]}&aroundLatLng[lng]=${latlng[1]}${\n isVirtual && \"&virtual=true\"\n }`\n )\n } else if (onLocationFocus) {\n onLocationFocus()\n }\n }\n }\n\n useEffect(() => {\n setQuery(query)\n setValue(query)\n }, [query])\n\n const onSuggestionCleared = () => {\n setQuery(\"\")\n }\n\n const onChange = (e) => {\n setQuery(e.target.value)\n setValue(e.target.value)\n }\n\n const onSuggestionsFetchRequested = ({ value }) => {\n refine(value)\n }\n\n const onSuggestionsClearRequested = () => {\n refine()\n }\n\n const getSuggestionValue = (hit) => hit.name\n\n const renderSuggestion = (hit) => {\n if (hit.user) {\n return <ProRow hit={hit} />\n } else {\n return <Highlight attribute=\"name\" hit={hit} tagName=\"mark\" />\n }\n }\n\n const renderSectionTitle = (section) => (section.index == \"Specialty\" ? \"Therapies\" : \"Practitioners\")\n\n const getSectionSuggestions = (section) => section.hits\n\n const inputProps = {\n placeholder: 'Try \"Massage\" or \"Back Pain\"',\n onChange: onChange,\n value,\n name: \"search\",\n onFocus: onSearchFocus,\n onKeyUp: submit\n }\n\n return (\n <div className=\"flex\" id=\"category-pro-search-form\">\n <Autosuggest\n suggestions={hits}\n multiSection={true}\n onSuggestionsFetchRequested={onSuggestionsFetchRequested}\n onSuggestionsClearRequested={onSuggestionsClearRequested}\n onSuggestionSelected={onSuggestionSelected}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n inputProps={inputProps}\n renderSectionTitle={renderSectionTitle}\n getSectionSuggestions={getSectionSuggestions}\n focusInputOnSuggestionClick={false}\n />\n <i className=\"icon-search\" />\n {value !== \"\" && (\n <i\n className=\"icon-close autosuggest-clear\"\n onClick={() => {\n if (onLocationFocus) {\n onLocationFocus()\n }\n onSuggestionCleared()\n setValue(\"\")\n }}\n />\n )}\n <LocationSearch\n setSearchLocation={setSearchLocation}\n searchLocation={searchLocation}\n setLatlng={setLatlng}\n setIsVirtual={setIsVirtual}\n query={query}\n isVirtual={isVirtual}\n onLocationFocus={onLocationFocus}\n shouldRedirect={shouldRedirect}\n />\n </div>\n )\n}\n\nexport default connectAutoComplete(SearchCategory)\n","import algoliasearch from \"algoliasearch\"\nimport React from \"react\"\nimport { InstantSearch, Configure, Index } from \"react-instantsearch-dom\"\n\nimport SearchCategory from \"./SearchCategory\"\n\nconst SearchBar = ({\n envVars,\n query,\n setQuery,\n searchLocation,\n setSearchLocation,\n latlng,\n setLatlng,\n isVirtual,\n setIsVirtual,\n shouldRedirect,\n onSearchFocus,\n onLocationFocus,\n activeFilter\n}) => {\n const searchClient = algoliasearch(envVars.algoliaAppId, envVars.algoliaApiKey)\n\n return (\n <div className=\"searchbar-container\">\n <InstantSearch searchClient={searchClient} indexName=\"Specialty\">\n <Configure hitsPerPage={10} />\n <SearchCategory\n setQuery={setQuery}\n setSearchLocation={setSearchLocation}\n setLatlng={setLatlng}\n setIsVirtual={setIsVirtual}\n query={query}\n latlng={latlng}\n searchLocation={searchLocation}\n isVirtual={isVirtual}\n shouldRedirect={shouldRedirect}\n onSearchFocus={onSearchFocus}\n onLocationFocus={onLocationFocus}\n activeFilter={activeFilter}\n />\n <Index indexName=\"Specialty\" />\n <Index indexName={`Practice_${process.env.NODE_ENV}`} />\n </InstantSearch>\n </div>\n )\n}\n\nexport default SearchBar\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst Button = styled.button`\n border: none;\n padding: 24px 48px;\n background: linear-gradient(215.91deg, #f4b965 12.73%, #f58c72 85.52%);\n border-radius: 100px;\n color: #fff;\n font-size: 17px;\n font-weight: 700;\n text-align: center;\n letter-spacing: 0.03em;\n height: fit-content;\n margin-top: 10px;\n\n &:hover {\n cursor: pointer;\n }\n\n &:disabled {\n background: #c8d6df;\n\n &:hover {\n cursor: not-allowed;\n }\n }\n ${({ fullWidth }) => fullWidth && `width: 100%;`}\n\n ${({ size }) => size === \"slim\" && `padding-top: 19px; padding-bottom: 19px;`}\n\n ${({ type }) =>\n type === \"primary\" && `&:hover { background: linear-gradient(215.91deg, #EDB364 12.73%, #E96D74 85.52%) }`}\n`\nconst customStyling = {\n secondary: {},\n tertiary: {\n background: \"transparent\",\n color: \"#0B3954\",\n border: \"1px solid #C8D6DF\"\n },\n link: {\n color: \"#0D9DA4\",\n background: \"transparent\",\n border: \"1px solid #C8D6DF\"\n },\n quaternary: {\n background: \"#fff\",\n color: \"#0B3954\",\n border: \"1px solid #C8D6DF\",\n padding: \"8px 24px\",\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"16px\"\n },\n warning: {\n background: \"#EB5757\",\n color: \"#FFF\",\n padding: \"24px 48px\",\n fontSize: \"14px\",\n fontWeight: \"700\",\n fontSize: \"17px\",\n letterSpacing: \"3%\",\n lineHeight: \"16px\",\n border: \"1px solid #EB5757\"\n },\n square: {\n borderRadius: \"4px\"\n },\n text: {\n marginTop: \"12px\",\n border: \"none\"\n }\n}\n\nexport default function RoundedButton({ type, label, disabled, onClick, fullWidth, size = \"full\", loading }) {\n if (disabled) {\n onClick = undefined\n }\n\n return (\n <Button\n style={customStyling[type]}\n onClick={onClick}\n disabled={disabled ? true : false}\n fullWidth={fullWidth}\n size={size}\n type={type}>\n {loading ? <img src=\"/images/button-spinner.gif\" width=\"20px\" /> : <>{label}</>}\n </Button>\n )\n}\n","import React, { useEffect, useRef } from \"react\"\n\nexport default function CsvReader({ handleFileUpload, reviewInput, upload }) {\n const uploadFile = useRef(null)\n\n useEffect(() => {\n if (upload) {\n uploadFile.current.click()\n }\n }, [upload])\n\n const submit = (uploadedFile) => {\n const file = uploadedFile\n const reader = new FileReader()\n\n reader.onload = function (e) {\n const text = e.target.result\n const invitationType = \"csv_import\"\n reviewInput(text, invitationType)\n handleFileUpload()\n }\n\n reader.readAsText(file)\n }\n\n return (\n <div>\n <div className=\"file has-name is-fullwidth\">\n <label className=\"file-label\">\n <input\n className=\"button btn-primary\"\n type=\"file\"\n accept=\".csv\"\n onChange={(e) => {\n submit(e.target.files[0])\n }}\n style={{ display: \"none\" }}\n ref={uploadFile}\n />\n </label>\n </div>\n </div>\n )\n}\n","import React, { useState } from \"react\"\nimport styled from \"styled-components\"\n\nimport RoundedButton from \"../shared/RoundedButton\"\n\nimport CsvReader from \"./CsvReader\"\n\nconst lightbulb = require(\"../../../assets/images/lightbulb.png\")\nconst uploadClientListImage = require(\"../../../assets/images/upload-clientlist.png\")\n\nconst UploadContainer = styled.div`\n border: 1px dashed #889fad;\n height: 240px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n margin: auto;\n max-width: 50%;\n margin-bottom: 24px;\n\n i {\n margin-bottom: 24px;\n &:before {\n font-size: 33px;\n }\n }\n\n span {\n color: #55778a;\n }\n`\n\nconst Divider = styled.div`\n width: 50%;\n margin: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin-bottom: 24px;\n`\n\nconst HR = styled.div`\n border-bottom: 1px solid back;\n`\n\nconst Helper = styled.div`\n font-size: 16px;\n line-height: 21px;\n font-weight: 500;\n margin-bottom: 4px;\n\n span {\n color: #55778a;\n }\n`\n\nconst InlineFlex = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n`\n\nconst LinkComponent = styled.div`\n color: #0d9da4;\n text-decoration: underline;\n margin-left: 4px;\n\n &:hover {\n cursor: pointer;\n }\n`\n\nconst InviteLater = styled.div`\n color: #55778a;\n font-size: 16px;\n font-weight: 700;\n line-height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding-top: 16px;\n\n &:hover {\n cursor: pointer;\n }\n`\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst HintContainer = styled.div`\n background: #f3f8fb;\n position: absolute;\n top: 116px;\n left: 76%;\n width: 268px;\n text-align: left;\n padding: 32px 16px 16px 16px;\n h3 {\n font-weight: 700;\n font-size: 18px;\n line-height: 28px;\n margin-bottom: 24px;\n }\n\n h4 {\n font-weight: 500;\n font-size: 16px;\n line-height: 28px;\n }\n`\n\nconst UploadWrapper = styled.div`\n position: relative;\n width: 100vw;\n padding: auto 200px;\n justify-content: center;\n text-align: center;\n\n h2 {\n font-size: 24px;\n line-height: 120%;\n font-weight: 700;\n margin-bottom: 16px;\n }\n\n p {\n font-size: 16px;\n font-weight: 500;\n line-height: 28px;\n margin-bottom: 32px;\n }\n`\n\nconst Lightbulb = styled.div`\n position: absolute;\n top: -27px;\n left: 100px;\n width: 54px;\n height: 54px;\n`\n\nexport default function ChooseMethod({ handleChoice, active, handleFileUpload, reviewInput }) {\n const [uploadClick, setUploadClick] = useState(false)\n\n return (\n <div className=\"columns is-centered is-multiline\">\n <UploadWrapper>\n <h2>Step 1: Invite your clients to book with you.</h2>\n <p>Got a client list? Upload it here.</p>\n <UploadContainer>\n <i className=\"icon-upload-2\" />\n {/* TODO: add back when implementing step2 */}\n {/* <Helper>Drag and drop your file here</Helper> */}\n <InlineFlex>\n {/* TODO: add back when implementing step2 */}\n {/* <span>or</span> */}\n <LinkComponent\n onClick={() => {\n setUploadClick(true)\n }}>\n Select file from your computer\n </LinkComponent>\n </InlineFlex>\n </UploadContainer>\n <div className=\"methods-form\">\n <div>\n {active === \"file\" && (\n <div>\n <CsvReader handleFileUpload={handleFileUpload} reviewInput={reviewInput} upload={uploadClick} />\n </div>\n )}\n </div>\n </div>\n {/* Remove app references\n <HintContainer>\n <Lightbulb>\n <img src={lightbulb} />\n </Lightbulb>\n <h3>{`Don't have a client list?`}</h3>\n <h4>{`Don't worry, you'll be able to invite clients directly from your phone contacts after you download the app.`}</h4>\n </HintContainer>\n */}\n <Divider>\n <HR />\n <span>or</span>\n <HR />\n </Divider>\n </UploadWrapper>\n <ButtonWrapper>\n <RoundedButton\n type=\"link\"\n label=\"Add clients manually\"\n onClick={() => {\n handleChoice(\"copy-paste\")\n }}\n />\n <a href=\"/portal/clients\">\n <InviteLater>{`I'll do this later`}</InviteLater>\n </a>\n </ButtonWrapper>\n <div className=\"column is-full has-text-centered\">\n <img src={uploadClientListImage} />\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function Row({ index, email, firstName, lastName, phone }) {\n return (\n <tr>\n <td>{index}</td>\n <td>{email}</td>\n <td>{firstName}</td>\n <td>{lastName}</td>\n <td>{phone}</td>\n </tr>\n )\n}\n","import React from \"react\"\n\nimport Row from \"./Row\"\n\nexport default function Confirmation({ clients, existingClients }) {\n return (\n <div className=\"columns is-centered\">\n <div\n className={`column is-half ${\n existingClients.length === clients.length || existingClients.length === 0 ? \"box\" : \"\"\n }`}>\n {existingClients.length === clients.length ? (\n <div className=\"copy-paste-headline\">Uh oh!</div>\n ) : (\n <div className=\"copy-paste-headline\" style={{ marginBottom: \"4px\" }}>\n Import was completed!\n </div>\n )}\n <div>\n {existingClients.length ? (\n <div>\n {existingClients.length === clients.length ? (\n <div className=\"method-helper\" style={{ marginBottom: \"0\" }}>\n Looks like all of the clients you tried to add already exist in your directory.\n </div>\n ) : (\n <div className=\"method-helper\">\n An invitation was sent to {clients.length - existingClients.length}{\" \"}\n {clients.length - existingClients.length > 1 ? \"people\" : \"person\"}.\n <br />\n <br />\n <div style={{ fontWeight: \"500\", color: \"#0B3954\" }}>\n These clients already exist in your directory\n </div>\n <div className=\"scrollable-area\">\n <table className=\"client-list table\">\n <thead>\n <tr>\n <th></th>\n <th>Email</th>\n <th>First Name</th>\n <th>Last Name</th>\n <th>Phone Number</th>\n </tr>\n </thead>\n <tbody>\n {existingClients.map((row, index) => (\n <Row\n index={index + 1}\n email={row.email}\n first_name={row.first_name}\n last_name={row.last_name}\n phone={row.phone}\n key={index}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </div>\n ) : (\n <div className=\"method-helper\" style={{ marginBottom: \"0\", marginTop: \"28px\" }}>\n An invitation email was sent to {clients.length} {clients.length > 1 ? \"people\" : \"person\"}!\n </div>\n )}\n </div>\n <a href=\"/portal/clients\" className=\"button btn-primary\" style={{ marginTop: \"32px\", width: \"100%\" }}>\n See Clients\n </a>\n </div>\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nexport default function CopyPaste({ field, reviewInput, errorMessage }) {\n const [localField, setLocalField] = useState(field)\n const invitationType = \"copy_paste\"\n\n const handleChange = (e) => {\n setLocalField(e.target.value)\n }\n\n return (\n <div className=\"columns is-centered\">\n <div className=\"column is-four-fifths\">\n <div className=\"copy-paste-headline\">Copy and paste contact information</div>\n <div>\n {localField.length ? (\n <div className=\"copy-paste-placeholder\">\n Email          First Name Last Name Phone\n Number \n </div>\n ) : (\n <div className=\"copy-paste-placeholder\">\n Paste the contact information into this field (comma separated)\n </div>\n )}\n </div>\n <div>\n <textarea\n type=\"textarea\"\n rows=\"10\"\n className=\"textarea\"\n value={localField}\n onChange={(e) => handleChange(e)}\n placeholder=\"Email          First Name Last Name Phone Number email@example.com  John    Doe    1234567890 bloggs_j@email.com  Jane    Bloggs   0987654321\"></textarea>\n </div>\n <button\n className=\"button btn-primary\"\n style={\n localField.length\n ? { marginTop: \"32px\", width: \"100%\" }\n : { pointerEvents: \"none\", opacity: \"0.5\", marginTop: \"32px\", width: \"100%\" }\n }\n onClick={() => reviewInput(localField, invitationType)}>\n Continue\n </button>\n <div className=\"has-text-centered\" style={{ color: \"red\", marginTop: \"12px\" }}>\n {errorMessage}\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nimport Row from \"./Row\"\n\nexport default function Review({ clients, submitContacts, editContacts }) {\n return (\n <div className=\"columns is-centered\">\n <div className=\"column is-four-fifths\">\n <div className=\"copy-paste-headline\">\n Review & Finalize\n <i className=\"icon-edit edit-contacts\" onClick={() => editContacts()}></i>\n </div>\n <div className=\"scrollable-area\">\n <table className=\"client-list table\">\n <thead>\n <tr>\n <th></th>\n <th>Email</th>\n <th>First Name</th>\n <th>Last Name</th>\n <th>Phone Number</th>\n </tr>\n </thead>\n <tbody>\n {clients.map((row, index) => (\n <Row\n index={index + 1}\n email={row.email}\n firstName={row.firstName}\n lastName={row.lastName}\n phone={row.phone}\n key={index}\n />\n ))}\n </tbody>\n </table>\n </div>\n <button\n className=\"button btn-primary\"\n style={{ marginTop: \"32px\", width: \"100%\" }}\n onClick={() => submitContacts()}>\n Finalize import\n </button>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nconst ProgressBar = ({ className, percentComplete }) => (\n <div className={twMerge(\"h-1 w-full rounded-full bg-gray-light\", className)}>\n <div className=\"h-[6px] rounded-full bg-teal\" style={{ width: percentComplete }}></div>\n </div>\n)\n\nexport default ProgressBar\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Photo from \"../../components/shared/Photo\"\nimport ProgressBar from \"../../components/shared/ProgressBar\"\n\nconst logo = require(\"../../../assets/images/healme_logo.svg\")\n\nexport const ReviewLayout = ({\n children,\n percentDone,\n showProgressBar = true,\n proPic,\n onContinue,\n continueDisabled,\n hideContinue = false,\n finalStep = false,\n skipStep,\n mobileOverflow = false,\n showBackButton = true,\n ...rest\n}) => (\n <div\n {...rest}\n className=\"fixed left-0 top-0 z-9998 flex h-screen w-screen justify-center overflow-y-scroll bg-gray-ultralight\">\n <div className=\"mt-4 flex w-[560px] flex-col items-center sm:w-full\">\n <img src={logo} width=\"20\" />\n <ProgressBar\n className={twMerge(\"mt-4 block h-[6px] w-[200px] rounded sm:w-[300px]\", !showProgressBar && \"opacity-0\")}\n percentComplete={percentDone}\n />\n <div\n className={twMerge(\n \"my-4 mb-24 flex h-fit w-full flex-col rounded-xl border border-gray-light bg-white sm:my-0 sm:rounded-none\",\n mobileOverflow ? \"sm:h-auto\" : \"sm:h-screen\"\n )}>\n <div className=\"p-12 sm:p-[25px] sm:pb-32\">\n {proPic && (\n <Photo\n imgClassName=\"rounded-full mb-8 mx-auto sm:ml-0 sm:mb-6 block h-[80px] w-[80px]\"\n filestack={proPic}\n />\n )}\n {children}\n </div>\n {!hideContinue && (\n <div className=\"flex w-full items-center justify-end border-t border-gray-light bg-white px-12 py-8 sm:fixed sm:bottom-0 sm:px-8\">\n {skipStep && (\n <Button type=\"tertiary\" className=\"mr-auto\" onClick={skipStep}>\n Skip <span className=\"sm:hidden\">step</span>\n </Button>\n )}\n {showBackButton && (\n <Button type=\"tertiary\" className=\"float-right mr-4\" onClick={() => window.history.back()}>\n Back\n </Button>\n )}\n <Button type=\"primary\" className=\"float-right\" onClick={onContinue} disabled={continueDisabled}>\n {finalStep ? \"Share review\" : \"Continue\"}\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n)\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { CheckBox } from \"../../components/shared/Inputs\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst TOGGLE_REVIEW_ANON_MUTATION = `\n mutation ToggleReviewAnon($reviewId: ID!, $isAnon: Boolean!) {\n toggleReviewAnon(reviewId: $reviewId, isAnon: $isAnon) {\n result\n errors\n }\n }\n`\n\nconst BookNext = ({ review }) => {\n const { showToast } = useToast()\n const [isAnon, setIsAnon] = useState(review.isAnonymous)\n const [, toggleAnonReview] = useMutation(TOGGLE_REVIEW_ANON_MUTATION)\n\n const websiteUrl = practitionerWebsiteUrl(review.practitioner, review.practice)\n\n return (\n <ReviewLayout percentDone=\"100%\" hideContinue={true} review={review}>\n <div className=\"mx-auto my-12 w-4/5 text-center\">\n <Typography variant=\"h1\">ðŸ˜</Typography>\n <Typography variant=\"h3\">Thank you for that {review?.client?.firstName}!</Typography>\n <Typography className=\"text-center\" variant=\"subtitle\">\n Your rating and review are now live on {review.practitioner.firstName} profile. Check them out!\n </Typography>\n <ButtonLink type=\"primary\" size=\"large\" className=\"mx-auto mt-6 py-3\" href={websiteUrl}>\n Let's see it\n </ButtonLink>\n </div>\n <div className=\"mt-6 text-center\">\n <CheckBox\n label=\"Leave review anonymously?\"\n id=\"anonymous-reviews\"\n onChange={() => {\n setIsAnon(!isAnon)\n toggleAnonReview({ reviewId: review.id, isAnon: !isAnon }).then((res) => {\n if (res.data.toggleReviewAnon.result === \"success\") {\n showToast(\"Review updated\")\n } else {\n showToast({\n content: `Error updating review: ${res.data.toggleReviewAnon.errors.join(\" \")}`,\n type: \"error\"\n })\n }\n })\n }}\n checked={isAnon}\n />\n\n <Typography variant=\"micro\" as=\"p\">\n Otherwise, will show as your first name and last initial.\n </Typography>\n </div>\n </ReviewLayout>\n )\n}\n\nexport default function ReviewBookNext(props) {\n return (\n <ToastProvider>\n <GraphQLProvider>\n <BookNext {...props} />\n </GraphQLProvider>\n </ToastProvider>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport { ToastProvider } from \"../contexts/ToastContext\"\n\nimport GraphQLProvider from \"./GraphQLProvider\"\n\nconst ReviewProvider = ({ children }) => (\n <NiceModal.Provider>\n <ToastProvider>\n <GraphQLProvider>{children}</GraphQLProvider>\n </ToastProvider>\n </NiceModal.Provider>\n)\n\nexport default ReviewProvider\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst CREATE_CLIENT_MUTATION = `\n mutation ReviewCreateClient($practiceId: ID!, $phone: String!, $firstName: String!) {\n reviewCreateClient(practiceId: $practiceId, phone: $phone, firstName: $firstName) {\n result\n clientId\n errors\n }\n }\n`\n\nconst ClientInfo = ({ review }) => {\n const { showToast } = useToast()\n const [firstName, setFirstName] = useState(\"\")\n const [phone, setPhone] = useState(\"\")\n const [, createClient] = useMutation(CREATE_CLIENT_MUTATION)\n const [createdClientInfo, setCreatedClientInfo] = useState({})\n\n useEffect(() => {\n const createdClientInfo = localStorage.getItem(\"createdClientInfo\")\n if (createdClientInfo) {\n setCreatedClientInfo(JSON.parse(localStorage.getItem(\"createdClientInfo\")))\n }\n }, [])\n\n const isFormValid = createdClientInfo || (firstName.trim().length > 2 !== \"\" && phone.trim().length > 12)\n\n const handleCreateClient = () => {\n if (createdClientInfo?.id) {\n window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${createdClientInfo.id}`\n } else {\n createClient({ practiceId: review.practiceId, phone, firstName }).then((res) => {\n localStorage.setItem(\n \"createdClientInfo\",\n JSON.stringify({\n firstName: firstName,\n phone: phone,\n id: res.data.reviewCreateClient.clientId\n })\n )\n if (res.data.reviewCreateClient.result === \"success\") {\n window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${res.data.reviewCreateClient.clientId}`\n } else {\n showToast({\n content: `Error creating client: Please enter a valid phone number to continue and leave a review.`,\n type: \"error\"\n })\n }\n })\n }\n }\n\n return (\n <ReviewLayout percentDone=\"30%\" onContinue={handleCreateClient} continueDisabled={!isFormValid}>\n <Typography variant=\"h3\">Oh great, thank you for that!</Typography>\n <Typography variant=\"body\">Before we continue, can you tell us who you are:</Typography>\n <div className=\"mt-4 grid grid-cols-2 gap-4 sm:grid-cols-1\">\n <InputWithLabel\n label=\"First name\"\n disabled={!!createdClientInfo?.id}\n value={createdClientInfo?.id ? createdClientInfo.firstName : firstName}\n onChange={(e) => setFirstName(e.target.value)}\n />\n <InputWithLabel\n label=\"Phone\"\n disabled={!!createdClientInfo?.id}\n value={createdClientInfo?.id ? createdClientInfo.phone : phone}\n type=\"phone\"\n onChange={(e) => setPhone(e.target.value)}\n />\n </div>\n </ReviewLayout>\n )\n}\n\nexport default function ReviewClientInfo(props) {\n return (\n <ReviewProvider>\n <ClientInfo {...props} />\n </ReviewProvider>\n )\n}\n","import { StarIcon } from \"@heroicons/react/24/solid\"\nimport React from \"react\"\n\nconst Star = ({ filled }) => {\n const colorClass = filled ? \"text-orange\" : \"text-gray\"\n return <StarIcon className={`${colorClass} h-5 w-5`} />\n}\n\nconst RatingStarRow = ({ total }) => {\n let stars = []\n\n for (let i = 0; i < 5; i++) {\n stars.push(<Star key={i} filled={i < total} />)\n }\n\n return <div className=\"flex\">{stars}</div>\n}\n\nexport default RatingStarRow\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport RatingStarRow from \"../../components/shared/RatingStarRow\"\nimport Typography from \"../../components/shared/Typography\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\nimport { formatShortDate } from \"../../utils/utils\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst CONFIRM_REVIEW_MUTATION = `\n mutation ConfirmReview($reviewId: ID!) {\n confirmReview(reviewId: $reviewId) {\n result\n errors\n }\n }\n`\n\nconst Confirm = ({ review }) => {\n const [showWarning, setShowWarning] = useState(false)\n const [{ fetching }, confirmReview] = useMutation(CONFIRM_REVIEW_MUTATION)\n\n const handleConfirm = () => {\n confirmReview({\n reviewId: review.id\n }).then((res) => {\n if (res.data.confirmReview.result === \"success\") {\n window.location.href = `/i/r/text_review/${review.token}`\n } else {\n console.error(res)\n }\n })\n }\n\n return (\n <ReviewLayout\n percentDone=\"40%\"\n showProgressBar={!showWarning}\n hideContinue={true}\n proPic={showWarning ? \"\" : review.practitioner.filestackPhoto}>\n {showWarning ? (\n <>\n <Typography variant=\"h3\">Thank you for that.</Typography>\n <Typography variant=\"body\">\n Please email us at <UnderlinedLink href=\"mailto:support@heal.me\">support@heal.me</UnderlinedLink> with the\n issue and we can coordinate with {review.practitioner.firstName}.\n </Typography>\n </>\n ) : (\n <>\n <Typography variant=\"h3\">\n {review.practitioner.name} wants to import your review. Does this look correct?\n </Typography>\n <Typography variant=\"body\" className=\"mt-1 text-gray-dark\">\n {review.practitioner.firstName} is using Heal.me for bookings, and requested you confirm this review is\n correct before we import it.\n </Typography>\n <div className=\"mt-6 rounded-xl border border-gray-light p-6 shadow\">\n <Typography variant=\"body\" as=\"p\">\n “{review.review}”\n </Typography>\n <div className=\"mt-2 flex flex-row items-center sm:flex-col\">\n <span className=\"mr-2 text-gray-dark sm:mb-2\">\n {\" \"}\n {review.client.firstName} • {formatShortDate(review.createdAt)}\n </span>\n <RatingStarRow total={review.rating} />\n </div>\n </div>\n <div className=\"mt-8 flex w-full items-center justify-end border-t border-gray-light bg-white p-0 sm:fixed sm:bottom-0 sm:left-0 sm:px-8 sm:py-4\">\n <Button type=\"tertiary\" className=\"float-right mr-4 mt-8 sm:mt-0\" onClick={() => setShowWarning(true)}>\n <span className=\"hidden sm:block\">No, it's not</span>\n <span className=\"block sm:hidden\">No, this is wrong</span>\n </Button>\n <Button type=\"primary\" className=\"float-right mt-8 sm:mt-0\" onClick={handleConfirm} disabled={fetching}>\n <span className=\"hidden sm:block\">Yes, this is</span>\n <span className=\"block sm:hidden\">Yes, this is correct</span>\n </Button>\n </div>\n </>\n )}\n </ReviewLayout>\n )\n}\n\nexport default function ReviewConfirm(props) {\n return (\n <ReviewProvider>\n <Confirm {...props} />\n </ReviewProvider>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_ENDORSEMENTS_MUTATION = `\n mutation ReviewAddEndorsements($reviewId: ID!, $endorsements: [String!]) {\n reviewAddEndorsements(reviewId: $reviewId, endorsements: $endorsements) {\n result\n errors\n }\n }\n`\n\nconst EndorsementButton = ({ specialty, active, onClick, onCloseButtonClick }) => (\n <EndorsementPill\n value={specialty.id.toString()}\n active={active}\n className=\"mb-0 block\"\n onClick={onClick}\n onCloseButtonClick={onCloseButtonClick}>\n {specialty.name}\n </EndorsementPill>\n)\n\nconst Endorsements = ({ review }) => {\n const { showToast } = useToast()\n const [endorsements, setEndorsements] = useState([])\n const [, addEndorsements] = useMutation(REVIEW_ENDORSEMENTS_MUTATION)\n\n const isFormValid = endorsements.length > 0\n\n const handleAddEndorsements = () => {\n addEndorsements({ reviewId: review.id, endorsements: Array.from(endorsements) }).then((res) => {\n if (res.data.reviewAddEndorsements.result === \"success\") {\n window.location.href = `/i/r/text_review/${review.id}`\n } else {\n showToast({\n content: `Error creating client: ${res.data.reviewAddEndorsements.errors.join(\" \")}`,\n type: \"error\"\n })\n }\n })\n }\n\n const onSpecialtyClick = (e) => {\n setEndorsements((endorsements) => {\n const newEndorsements = [...endorsements]\n const specialtyId = e.target.value\n\n if (newEndorsements.includes(specialtyId)) {\n const index = newEndorsements.indexOf(specialtyId)\n newEndorsements.splice(index, 1)\n } else {\n newEndorsements.push(specialtyId)\n }\n return newEndorsements\n })\n }\n\n return (\n <ReviewLayout\n percentDone=\"70%\"\n onContinue={handleAddEndorsements}\n continueDisabled={!isFormValid}\n proPic={review.practitioner.filestackPhoto}\n skipStep={() => (window.location.href = `/i/r/text_review/${review.id}?skip_step=true`)}\n mobileOverflow={true}>\n <Typography variant=\"h3\">\n Thank you for that great rating! What is {review.practitioner.firstName} good at helping with?\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-6\">\n This is optional, but it lets us know how to match {review.practitioner.firstName} with ideal clients.\n </Typography>\n <div className=\"-mb-10 flex max-h-[300px] flex-wrap gap-2 overflow-y-scroll sm:mb-20 sm:h-auto sm:max-h-none\">\n {review.skills.map((specialty) => (\n <EndorsementButton\n specialty={specialty}\n key={specialty.id}\n active={endorsements.includes(specialty.id.toString())}\n onClick={onSpecialtyClick}\n />\n ))}\n </div>\n </ReviewLayout>\n )\n}\n\nexport default function ReviewEndorsements(props) {\n return (\n <ReviewProvider>\n <Endorsements {...props} />\n </ReviewProvider>\n )\n}\n","import React, { useState } from \"react\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { UnderlinedLink, ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst ReviewIntro = ({ review }) => {\n const [showWarning, setShowWarning] = useState(false)\n\n const websiteUrl = practitionerWebsiteUrl(review.practitioner, review.practice)\n\n return (\n <ReviewLayout\n percentDone=\"20%\"\n showProgressBar={!showWarning}\n hideContinue={true}\n proPic={showWarning ? \"\" : review.practitioner.filestackPhoto}>\n {showWarning ? (\n <>\n <Typography variant=\"h3\">\n Thank you for that. Unfortunately we can't accept a review from you.\n </Typography>\n <Typography variant=\"body\">\n {review.practitioner.firstName} is using Heal.me for bookings, and we only show reviews from clients who’ve\n worked with {review.practitioner.firstName}.\n </Typography>\n <ButtonLink\n className=\"mt-4 w-full border border-gray bg-white text-center text-black active:bg-gray-light\"\n href={websiteUrl}>\n View {review.practitioner.firstName}'s profile\n </ButtonLink>\n <UnderlinedLink\n onClick={() => setShowWarning(false)}\n className=\"mx-auto mt-4 block w-full text-center text-gray-dark\">\n Oops, I made a mistake\n </UnderlinedLink>\n </>\n ) : (\n <>\n <Typography variant=\"h3\">\n Hi {review.client ? review.client.firstName : \"there\"}! Have you worked with {review.practitioner.name}{\" \"}\n before?\n </Typography>\n <Typography variant=\"body\" className=\"mt-1 text-gray-dark\">\n {review.practitioner.firstName} is using Heal.me for bookings, and requested a review from you based on your\n previous experience.\n </Typography>\n <ButtonLink\n className=\"mb-0 mt-6 w-full border border-gray bg-white text-center text-black\"\n href={\n review.client\n ? `/i/r/rating?referral_code=${review.referralCode}&client_id=${review.clientId}`\n : `/i/r/client_info/${review.referralCode}`\n }\n onClick={(e) => {\n if (review.client) {\n e.preventDefault()\n window.location.href = `/i/r/rating?referral_code=${review.referralCode}&client_id=${review.clientId}`\n }\n }}>\n Yes, I have!\n </ButtonLink>\n\n <ButtonLink\n onClick={() => setShowWarning(true)}\n className=\"mt-4 w-full border border-gray bg-white text-center text-black\">\n No, I haven't\n </ButtonLink>\n </>\n )}\n </ReviewLayout>\n )\n}\n\nexport default ReviewIntro\n","import React, { useState } from \"react\"\n\nexport default function RatingStar({ rating, setRating }) {\n const [hover, setHover] = useState(null)\n const keywords = [\"1\", \"2\", \"3\", \"4\", \"5\"]\n\n return (\n <div className=\"flex flex-row justify-evenly\">\n {[...Array(5)].map((star, i) => {\n const ratingValue = i + 1\n\n return (\n <div className=\"star-radiobutton\" key={ratingValue}>\n <label className=\"mb-0\">\n <input type=\"radio\" name=\"rating\" value={ratingValue} onClick={() => setRating(ratingValue)} />\n <i\n className={`icon-star-filled star h-[44px] w-[44px] ${\n ratingValue <= (hover || rating) ? \"star-filled\" : \"star\"\n }`}\n onMouseEnter={() => setHover(ratingValue)}\n onMouseLeave={() => setHover(null)}\n />\n </label>\n <span className=\"text-[20px] font-bold\">{keywords[i]}</span>\n </div>\n )\n })}\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\nimport RatingStar from \"../RatingStar\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_RATING_MUTATION = `\n mutation ReviewAddRating($practiceId: ID!, $clientId: ID, $rating: Int!, $appointmentId: ID ) {\n reviewAddRating(practiceId: $practiceId, clientId: $clientId, rating: $rating, appointmentId: $appointmentId) {\n result\n token\n errors\n }\n }\n`\n\nconst Rating = ({ review }) => {\n const { showToast } = useToast()\n const [rating, setRating] = useState(review?.rating)\n const [, addRating] = useMutation(REVIEW_RATING_MUTATION)\n\n const isFormValid = rating > 0\n\n const handleAddRating = () => {\n addRating({\n practiceId: review.practiceId,\n clientId: review.clientId,\n rating,\n appointmentId: review.appointmentId\n }).then((res) => {\n if (res.data.reviewAddRating.result === \"success\") {\n window.location.href = `/i/r/text_review/${res.data.reviewAddRating.token}`\n } else {\n showToast({ content: `Error creating client: ${res.data.reviewAddRating.errors.join(\" \")}`, type: \"error\" })\n }\n })\n }\n\n useEffect(() => {\n const urlParams = new URLSearchParams(window.location.search)\n if (review.rating) {\n handleAddRating()\n } else if (urlParams.get(\"stars\")) {\n setRating(Number(urlParams.get(\"stars\")))\n }\n }, [])\n\n return (\n <>\n {!review.rating ? (\n <ReviewLayout\n percentDone=\"50%\"\n onContinue={handleAddRating}\n continueDisabled={!isFormValid}\n proPic={review.practitioner.filestackPhoto}\n showBackButton={false}>\n <Typography variant=\"h3\">\n Out of 5 stars, how would you rate your most recent visit with {review.practitioner.firstName}?\n </Typography>\n <div className=\"mt-4 text-center\">\n <RatingStar rating={rating} setRating={setRating} />\n </div>\n </ReviewLayout>\n ) : (\n <LoadingSpinner />\n )}\n </>\n )\n}\n\nexport default function ReviewRating(props) {\n return (\n <ReviewProvider>\n <Rating {...props} />\n </ReviewProvider>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { TextArea } from \"../../components/shared/Inputs\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ReviewProvider from \"../../providers/ReviewProvider\"\n\nimport { ReviewLayout } from \"./ReviewLayout\"\n\nconst REVIEW_TEXT_REVIEW_MUTATION = `\n mutation ReviewAddTextReview($reviewId: ID!, $text: String!) {\n reviewAddTextReview(reviewId: $reviewId, text: $text) {\n result\n errors\n }\n }\n`\n\nconst FEATURE_REQUEST_MUTATION = `\n mutation FeatureRequest($name: String!, $userId: ID, $clientId: ID) {\n featureRequest(name: $name, userId: $userId, clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nconst TextReview = ({ review }) => {\n const { showToast } = useToast()\n const [textReview, setTextReview] = useState(review?.review || \"\")\n const [showVideo, setShowVideo] = useState(true)\n const [, addTextReview] = useMutation(REVIEW_TEXT_REVIEW_MUTATION)\n const [, featureRequest] = useMutation(FEATURE_REQUEST_MUTATION)\n\n const handleAddTextReview = () => {\n addTextReview({ reviewId: review.token, text: textReview }).then((res) => {\n if (res.data.reviewAddTextReview.result === \"success\") {\n window.location.href = `/i/r/book_next/${review.token}`\n } else {\n showToast({ content: `Error creating client: ${res.data.reviewAddTextReview.errors.join(\" \")}`, type: \"error\" })\n }\n })\n }\n\n const isFormValid = textReview?.length > 2\n\n return (\n <ReviewLayout\n percentDone=\"90%\"\n proPic={review.practitioner.filestackPhoto}\n onContinue={handleAddTextReview}\n continueDisabled={!isFormValid}\n finalStep={true}>\n <Typography variant=\"h3\">\n {review.rating > 3 && \"Wonderful!\"} Do you want to leave a text or video review now?\n </Typography>\n <Typography variant=\"subtitle\">Share a few words about working with {review.practitioner.firstName}.</Typography>\n <TextArea\n placeholder=\"Enter your review\"\n rows=\"3\"\n className=\"mt-6\"\n onChange={(e) => setTextReview(e.target.value)}\n value={textReview ? textReview : \"\"}\n />\n\n {showVideo && (\n <Button\n className=\"mt-6 w-full\"\n type=\"tertiary\"\n onClick={() => {\n NiceModal.show(\"videoReviewModal\")\n featureRequest({ name: \"VideoReviews\", clientId: review.clientId }).then((res) => {\n if (res.data.featureRequest.result === \"success\") {\n console.log(\"Feature requested successfully\")\n } else {\n console.error(`Could not save feature request: ${res.data.featureRequest.errors.join(\" \")}`)\n }\n })\n }}>\n I'd rather leave a video review\n </Button>\n )}\n <NewModal\n id=\"videoReviewModal\"\n header=\"\"\n showFooter={false}\n hideModal={() => {\n setShowVideo(false)\n NiceModal.hide(\"videoReviewModal\")\n }}>\n <div className=\"p-6 text-center\">\n <Typography variant=\"h2\" as=\"p\">\n 🚀\n </Typography>\n <Typography variant=\"h3\" className=\"mt-2\">\n Thank you for your interest!\n </Typography>\n <Typography variant=\"subtitle\" className=\"mx-auto mt-2 max-w-xs\">\n We’re not quite ready yet for video reviews, but we’re excited for it.\n </Typography>\n <Button\n type=\"primary\"\n size=\"large\"\n className=\"mt-4\"\n onClick={() => {\n setShowVideo(false)\n NiceModal.hide(\"videoReviewModal\")\n }}>\n Got it, hide this\n </Button>\n </div>\n </NewModal>\n </ReviewLayout>\n )\n}\n\nexport default function ReviewTextReview(props) {\n return (\n <ReviewProvider>\n <TextReview {...props} />\n </ReviewProvider>\n )\n}\n","import React, { createContext, useContext, useEffect, useState } from \"react\"\n\nimport { formatPhone, urqlClient } from \"../utils/utils\"\n\nconst PRACTICE_QUERY = `\n query CurrentPracticeContext {\n currentPractice {\n id\n recurringBookingsEnabled\n packagesEnabled\n clientNotesEnabled\n bookableEventsEnabled\n user { phone email }\n hasPaymentProvider\n paymentProvider\n url\n conferencingServices {\n provider\n active\n }\n locations {\n id\n singleLine\n }\n }\n }\n`\n\nexport const PracticeContext = createContext()\n\nexport const PracticeProvider = ({ children }) => {\n const [practice, setPractice] = useState({})\n const [practiceServices, setPracticeServices] = useState(null)\n\n const fetchPractice = () => {\n urqlClient\n .query(PRACTICE_QUERY)\n .toPromise()\n .then((res) => {\n if (res.data?.currentPractice) {\n setPractice(res.data.currentPractice)\n } else {\n console.error(\"Error fetching practice data\", res) // eslint-disable-line no-console\n }\n })\n }\n\n useEffect(() => {\n fetchPractice()\n }, [])\n\n const practiceEmail = practice.user?.email\n const practicePhone = formatPhone(practice.user?.phone)\n\n return (\n <PracticeContext.Provider\n value={{\n practice,\n setPractice,\n practiceEmail,\n practicePhone,\n fetchPractice,\n practiceServices,\n setPracticeServices\n }}>\n {children}\n </PracticeContext.Provider>\n )\n}\n\nexport const usePractice = () => useContext(PracticeContext)\n","import React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../../utils/mutations\"\nimport { capitalize } from \"../../../utils/utils\"\nimport PaymentProviderCardForm from \"../../payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../payments/PaymentProviderWrapper\"\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../shared/Modal\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\nimport Typography from \"../../shared/Typography\"\n\nconst AddOrRetryModal = ({ headerLabel, open, closeModal, onSave, appointment, practice, client }) => {\n const { showToast } = useToast()\n\n const [loading, setLoading] = useState(false)\n const [defaultPaymentMethod, setDefaultPaymentMethod] = useState(\n client?.defaultPaymentMethod || appointment?.client?.defaultPaymentMethod\n )\n const [paymentMethod, setPaymentMethod] = useState(!defaultPaymentMethod ? \"new\" : \"default\")\n\n const [{ data, fetching, error }] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: appointment?.client?.id,\n userId: appointment?.user?.id,\n practiceId: practice.id\n },\n pause: !!defaultPaymentMethod,\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (!defaultPaymentMethod && data?.defaultPaymentMethodPractice) {\n setPaymentMethod(\"default\")\n setDefaultPaymentMethod(data.defaultPaymentMethodPractice)\n }\n }, [data])\n\n const { handleCardSavedOnProvider } = usePaymentProvider()\n\n const handleCardSaved = async () => {\n const showErrorAndClose = (message) => {\n showToast({ content: `There was an error: ${message}`, type: \"error\" })\n setLoading(false)\n closeModal()\n }\n\n setLoading(true)\n\n if (paymentMethod === \"new\") {\n const paymentProviderResult = await handleCardSavedOnProvider()\n if (paymentProviderResult.error) {\n showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n return\n }\n }\n\n setLoading(false)\n onSave()\n closeModal()\n }\n\n const getDefaultPaymentMethodText = (paymentMethod) => {\n if (!paymentMethod) return \"No payment method selected\"\n return `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${paymentMethod.expMonth}/${\n paymentMethod.expYear\n }`\n }\n\n return (\n <AnimatedModal\n visible={open}\n hideModal={closeModal}\n header={headerLabel}\n showFooter={true}\n onSave={handleCardSaved}\n saveDisabled={loading}\n actionButtonCopy=\"Charge card\">\n <div className=\"mt-4\">\n <Typography variant=\"h5\" className=\"mb-4\">\n Payment method\n </Typography>\n\n {fetching ? (\n <LoadingSpinner />\n ) : error ? (\n <Typography variant=\"body\" className=\"text-red\">\n An error occurred while fetching payment methods\n </Typography>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {defaultPaymentMethod && (\n <RadioWithLabel\n value=\"default\"\n name=\"payment-method\"\n label={getDefaultPaymentMethodText(defaultPaymentMethod)}\n checked={paymentMethod === \"default\"}\n onChange={() => {\n setPaymentMethod(\"default\")\n }}\n />\n )}\n <RadioWithLabel\n value=\"new\"\n name=\"payment-method\"\n label=\"New Credit card\"\n checked={paymentMethod === \"new\"}\n onChange={() => {\n setPaymentMethod(\"new\")\n }}\n />\n {paymentMethod === \"new\" && <PaymentProviderCardForm practice={practice} />}\n </div>\n )}\n </div>\n </AnimatedModal>\n )\n}\n\nexport default AddOrRetryModal\n","import React, { useState } from \"react\"\n\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport PaymentProviderWrapper from \"../../payments/PaymentProviderWrapper\"\nimport { Button } from \"../../shared/Buttons\"\n\nimport AddOrRetryModal from \"./AddOrRetryModal\"\n\nconst AddOrRetryButton = ({ appointment, client, user, headerLabel, label, onSave, type = \"button\" }) => {\n const [paymentModalOpen, setPaymentModalOpen] = useState(false)\n const { practice } = usePractice()\n\n const onClick = () => {\n setPaymentModalOpen(true)\n }\n\n return (\n <>\n {type === \"button\" && <Button onClick={onClick}>{label || \"Add credit card\"}</Button>}\n {type === \"link\" && (\n <span className=\"cursor-pointer font-bold text-teal underline\" onClick={onClick}>\n {label || \"Add credit card\"}\n </span>\n )}\n\n {paymentModalOpen && (\n <PaymentProviderWrapper practice={practice} appointment={appointment} client={client} user={user}>\n <AddOrRetryModal\n headerLabel={headerLabel || \"Add credit card\"}\n open={paymentModalOpen}\n closeModal={() => setPaymentModalOpen(false)}\n onSave={onSave}\n appointment={appointment}\n practice={practice}\n client={client}\n />\n </PaymentProviderWrapper>\n )}\n </>\n )\n}\n\nexport default AddOrRetryButton\n","import React, { useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\nimport AddOrRetryButton from \"../pro_portal/calendar/AddOrRetryButton\"\n\nimport Badge from \"./Badge\"\nimport { Box, Flyout } from \"./Layout\"\nimport { Link, UnderlinedLink } from \"./Links\"\nimport LoadingSpinner from \"./LoadingSpinner\"\nimport Typography from \"./Typography\"\n\nconst ACCEPT_APPOINTMENT_MUTATION = `\n mutation AcceptAppointment($appointmentId: ID!) {\n acceptAppointment(appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nconst RETRY_PAYMENT_MUTATION = `\n mutation RetryPayment($appointmentId: ID!) {\n retryPayment(appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nconst NotificationsFlyout = ({ visible, closeFlyout, fetching, notificationAppointments, reexecuteQuery }) => {\n const [appointments, setAppointments] = useState([])\n\n useEffect(() => {\n setAppointments(notificationAppointments)\n }, [notificationAppointments])\n\n const [{ fetching: acceptAppointmentFetching }, acceptAppointment] = useMutation(ACCEPT_APPOINTMENT_MUTATION)\n const [{ fetching: retryPaymentFetching }, retryPayment] = useMutation(RETRY_PAYMENT_MUTATION)\n const mutationFetching = acceptAppointmentFetching || retryPaymentFetching\n const { showToast } = useToast()\n\n // TODO: refactor this to open the notification flyout on any page\n const handleViewDetailsClick = (event, url) => {\n event.preventDefault()\n window.location.href = url\n if (window.location.href.includes(\"/portal/calendar\")) {\n window.location.reload()\n }\n }\n\n const handleRetryPayment = (appointmentId) => {\n retryPayment({ appointmentId }).then((res) => {\n if (res.data?.retryPayment?.result === \"success\") {\n showToast(\"Success! Payment processed.\")\n setAppointments((prev) => prev.filter((appointment) => appointment.id !== appointmentId))\n } else {\n showToast({\n type: \"error\",\n content: `Payment failed: ${res.data?.retryPayment?.errors[0] || \"Internal server error\"}`\n })\n }\n })\n }\n\n return (\n <Flyout header=\"Notifications\" visible={visible} closeFlyout={closeFlyout}>\n {fetching ? (\n <LoadingSpinner />\n ) : appointments.length > 0 ? (\n <div className=\"flex flex-col gap-4\">\n {appointments.map((appointment) => {\n const upcoming = new Date(appointment.startsAt) > Date.now()\n const pending = appointment.state === \"pending\"\n const failed = appointment.paymentError\n const overdue = !appointment.paymentError && !appointment.hasTransaction && !upcoming\n const unprocessed = !appointment.paymentError && appointment.hasTransaction && !upcoming\n const client = appointment.user || appointment.client\n const buttonText = failed || unprocessed ? \"Retry\" : \"Add card\"\n const badgeType = pending ? \"success\" : \"error\"\n const badgeText = pending\n ? \"New client\"\n : failed\n ? \"Payment failed\"\n : overdue\n ? \"Payment past due\"\n : unprocessed\n ? \"Payment unprocessed\"\n : \"\"\n\n const url = `/portal/calendar#${appointment.instantActionToken}`\n\n return (\n <Box\n key={appointment.id}\n className={mutationFetching ? \"pointer-events-none opacity-25\" : \"\"}\n keepBorderInMobile={true}>\n <div>\n <div className=\"flex justify-between\">\n <div className=\"font-bold\">{client.name}</div>\n <Badge type={badgeType}>{badgeText}</Badge>\n </div>\n <Typography variant=\"subtitle\">{appointment.formattedStartsAt}</Typography>\n <div className=\"mt-4 flex justify-between\">\n <Link href={url} onClick={(event) => handleViewDetailsClick(event, url)}>\n View details\n </Link>\n {pending ? (\n <button\n disabled={acceptAppointmentFetching}\n className=\"underline\"\n onClick={() => {\n acceptAppointment({ appointmentId: appointment.id }).then((res) => {\n if (res.data.acceptAppointment.result === \"success\") {\n showToast(\n <>\n 🎉 Appointment confirmed. <UnderlinedLink href={url}>Show</UnderlinedLink>\n </>\n )\n } else {\n showToast({ type: \"error\", content: \"There was an error confirming your appointment.\" })\n }\n reexecuteQuery()\n })\n }}>\n Confirm\n </button>\n ) : overdue || failed || unprocessed ? (\n <>\n <AddOrRetryButton\n appointment={appointment}\n headerLabel={\"Choose your payment method\"}\n label={buttonText}\n onSave={() => handleRetryPayment(appointment.id)}\n type={\"link\"}\n />\n </>\n ) : null}\n </div>\n </div>\n </Box>\n )\n })}\n </div>\n ) : (\n <div className=\"text-center\">You're all caught up 🎉</div>\n )}\n </Flyout>\n )\n}\n\nexport default NotificationsFlyout\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { BellIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport { CounterBadge } from \"../shared/Badge\"\nimport NotificationsFlyout from \"../shared/NotificationsFlyout\"\n\nconst USER_CLIENT_FIELDS = \"id name firstName lastName\"\nconst APPOINTMENT_FIELDS = `\n id startsAt endsAt state instantActionToken hasTransaction formattedStartsAt\n client { ${USER_CLIENT_FIELDS} }\n`\n\nconst INBOX_QUERY = `\n query ProInbox {\n proInbox {\n failedPayments {\n paymentError\n ${APPOINTMENT_FIELDS}\n }\n missingPayments { ${APPOINTMENT_FIELDS} }\n pendingAppointments { ${APPOINTMENT_FIELDS} }\n }\n }\n`\n\nconst Inbox = () => {\n const [showFlyout, setShowFlyout] = useState(false)\n\n const [{ data, fetching }, reexecuteQuery] = useQuery({\n query: INBOX_QUERY,\n requestPolicy: \"cache-and-network\"\n })\n\n let notificationAppointments = []\n if (data && data.proInbox) {\n let allNotifications = [\n ...(data.proInbox.failedPayments || []),\n ...(data.proInbox.missingPayments || []),\n ...(data.proInbox.pendingAppointments || [])\n ]\n notificationAppointments = allNotifications.sort((a, b) => {\n if (!a || !b) return 0\n if (a.state === \"pending\" && b.state !== \"pending\") {\n return -1 // \"pending\" items come first\n } else if (a.state !== \"pending\" && b.state === \"pending\") {\n return 1 // \"pending\" items come first\n } else {\n // If both items have the same state or non-pending states, sort by date\n const dateA = new Date(a.startsAt)\n const dateB = new Date(b.startsAt)\n return dateA - dateB\n }\n })\n }\n\n const badgeStyles =\n notificationAppointments.length > 9 ? \"font-bold p-[3px] min-w-[16px] w-auto right-[12px]\" : \"right-4\"\n\n return (\n <>\n <a className=\"relative\" onClick={() => setShowFlyout(true)}>\n <BellIcon className=\"mr-4 h-8 w-8 text-gray-dark\" />\n {notificationAppointments.length > 0 && (\n <CounterBadge className={`absolute ${badgeStyles} top-0 border-2 border-white bg-orange text-[10px]`}>\n {notificationAppointments.length}\n </CounterBadge>\n )}\n </a>\n <NotificationsFlyout\n visible={showFlyout}\n closeFlyout={() => setShowFlyout(false)}\n fetching={fetching}\n reexecuteQuery={reexecuteQuery}\n notificationAppointments={notificationAppointments}\n />\n </>\n )\n}\n\nexport default function ProInbox() {\n return (\n <NiceModal.Provider>\n <ToastProvider>\n <GraphQLProvider>\n <PracticeProvider>\n <Inbox />\n </PracticeProvider>\n </GraphQLProvider>\n </ToastProvider>\n </NiceModal.Provider>\n )\n}\n","import React, { createContext, useContext } from \"react\"\n\nconst FeatureFlagContext = createContext({})\n\nexport const FeatureFlagProvider = ({ children, flags }) => (\n <FeatureFlagContext.Provider value={flags}>{children}</FeatureFlagContext.Provider>\n)\n\nexport const useFeatureFlags = () => useContext(FeatureFlagContext)\n","import {\n CalendarIcon as CalendarIconOutline,\n UserIcon as UserIconOutline,\n BanknotesIcon as BanknotesIconOutline,\n Cog8ToothIcon as Cog8ToothIconOutline,\n ChatBubbleLeftIcon as ChatBubbleLeftIconOutline,\n NewspaperIcon as NewspaperIconOutline,\n GlobeAltIcon as GlobeAltIconOutline,\n CurrencyDollarIcon as CurrencyDollarIconOutline,\n QuestionMarkCircleIcon as QuestionMarkCircleIconOutline\n} from \"@heroicons/react/24/outline\"\nimport {\n CalendarIcon as CalendarIconSolid,\n UserIcon as UserIconSolid,\n BanknotesIcon as BanknotesIconSolid,\n Cog8ToothIcon as Cog8ToothIconSolid,\n ChatBubbleLeftIcon as ChatBubbleLeftIconSolid,\n NewspaperIcon as NewspaperIconSolid,\n GlobeAltIcon as GlobeAltIconSolid,\n CurrencyDollarIcon as CurrencyDollarIconSolid,\n QuestionMarkCircleIcon as QuestionMarkCircleIconSolid\n} from \"@heroicons/react/24/solid\"\nimport React from \"react\"\n\nimport { useFeatureFlags } from \"../contexts/FeatureFlagContext\"\n\nconst navItems = [\n {\n name: \"Calendar\",\n href: \"/portal/calendar\",\n solidIcon: <CalendarIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <CalendarIconOutline className=\" h-6 w-6 text-gray-dark\" />\n },\n {\n name: \"Clients\",\n href: \"/portal/clients\",\n solidIcon: <UserIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <UserIconOutline className=\" h-6 w-6 text-gray-dark\" />\n },\n {\n name: \"Payments\",\n href: \"/portal/payments\",\n solidIcon: <BanknotesIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <BanknotesIconOutline className=\" h-6 w-6 text-gray-dark\" />\n },\n {\n name: \"My Practice\",\n href: \"/portal/services\",\n solidIcon: <NewspaperIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <NewspaperIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n children: [\n {\n name: \"Services\",\n href: \"/portal/services\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Locations & Hours\",\n href: \"/portal/services/locations\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Details\",\n href: \"/portal/profile/combined\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Credentials\",\n href: \"/portal/profile/credential\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Intake Form\",\n href: \"/portal/settings/intake_forms\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Keywords\",\n href: \"/portal/reviews/keywords\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Gift Cards\",\n href: \"/portal/gift_card_templates\",\n solidIcon: null,\n outlineIcon: null\n }\n ]\n },\n {\n name: \"My Website\",\n href: \"/portal/website/settings\",\n solidIcon: <GlobeAltIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <GlobeAltIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n children: [\n {\n name: \"Content\",\n href: \"/portal/website/builder\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Settings\",\n href: \"/portal/website/settings\",\n solidIcon: null,\n outlineIcon: null\n }\n ]\n },\n {\n name: \"Reviews\",\n href: \"/portal/reviews/request\",\n solidIcon: <ChatBubbleLeftIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <ChatBubbleLeftIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n children: [\n {\n name: \"Request\",\n href: \"/portal/reviews/request\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Import\",\n href: \"/portal/reviews/import\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Completed\",\n href: \"/portal/reviews/completed\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Pending\",\n href: \"/portal/reviews/pending\",\n solidIcon: null,\n outlineIcon: null\n }\n ]\n },\n {\n name: \"Settings\",\n href: \"/portal/settings\",\n solidIcon: <Cog8ToothIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <Cog8ToothIconOutline className=\" h-6 w-6 text-gray-dark\" />,\n children: [\n {\n name: \"Account\",\n href: \"/portal/settings/personal\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Calendar\",\n href: \"/portal/settings/calendar\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Video Conferencing\",\n href: \"/portal/settings/conferencing\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Payments\",\n href: \"/portal/settings/banking\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Communication\",\n href: \"/portal/settings/communication\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Booking\",\n href: \"/portal/settings/booking\",\n solidIcon: null,\n outlineIcon: null\n },\n {\n name: \"Subscription\",\n href: \"/portal/subscriptions\",\n solidIcon: null,\n outlineIcon: null\n }\n ]\n },\n {\n name: \"Earn $50\",\n href: \"/portal/referral_program\",\n solidIcon: <CurrencyDollarIconSolid className=\" h-6 w-6 text-black\" />,\n outlineIcon: <CurrencyDollarIconOutline className=\" h-6 w-6 text-gray-dark\" />\n },\n {\n name: \"Help\",\n href: \"#\",\n solidIcon: <QuestionMarkCircleIconSolid className=\"h-6 w-6 text-black\" />,\n outlineIcon: <QuestionMarkCircleIconOutline className=\"h-6 w-6 text-gray-dark\" />,\n id: \"Intercom\"\n }\n]\n\nexport function getSideNavigationItems({ websitePlan }) {\n const { giftCardsEnabled, conferencingEnabled } = useFeatureFlags()\n\n let navigationItems = [...navItems]\n\n navigationItems = !websitePlan ? navigationItems : navigationItems.filter((item) => item.name !== \"My Website\")\n\n // Filter both top level and sub nav items for gift cards and video conferencing\n navigationItems = navigationItems.map((item) => {\n if (item.children) {\n return {\n ...item,\n children: item.children.filter((child) => {\n if (!giftCardsEnabled && child.name === \"Gift Cards\") return false\n if (!conferencingEnabled && child.name === \"Video Conferencing\") return false\n return true\n })\n }\n }\n return item\n })\n\n return navigationItems\n}\n","import { Menu, MenuButton, MenuItem, MenuItems, Transition } from \"@headlessui/react\"\nimport { Bars3Icon, ChevronUpIcon, ChevronDownIcon } from \"@heroicons/react/24/solid\"\nimport React, { Fragment, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport ProInbox from \"../components/pro_portal/ProInbox\"\nimport { getSideNavigationItems } from \"../utils/sideNavigationUtils\"\n\nimport { Button } from \"./shared/Buttons\"\nimport { Divider, Flyout } from \"./shared/Layout\"\n\nconst PortalHeader = ({\n proUrl,\n proName,\n proEmail,\n photoUrl,\n eventsEnabled,\n intakeFormsEnabled,\n customDomainEnabled\n}) => {\n const mobileMenuProps = {\n proName,\n proEmail,\n proUrl,\n photoUrl,\n eventsEnabled,\n intakeFormsEnabled,\n customDomainEnabled\n }\n\n return (\n <div className=\"fixed right-0 top-0 z-20 w-full border-b border-gray-light bg-white text-black\">\n <div className=\"flex items-center justify-between\">\n <a className=\"p-4 min_md:invisible\" href=\"/\">\n <img src=\"/images/healme_logo.svg\" alt=\"Logo\" />\n </a>\n <div className=\"flex items-center justify-end p-4 sm:py-2\">\n <div className=\"flex items-center\">\n <a href={proUrl} className=\"mr-4 sm:hidden\" target=\"_blank\" rel=\"noreferrer\">\n <Button type=\"tertiary\">Preview website</Button>\n </a>\n <ProInbox />\n <div className=\"md:hidden\">\n <UserDropdown photoUrl={photoUrl} proName={proName} proEmail={proEmail} proUrl={proUrl} />\n </div>\n <div className=\"pl-4 min_md:hidden\">\n <MobileMenuHambuger mobileMenuProps={mobileMenuProps} />\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nconst HealMenuItem = ({ className, children, ...rest }) => (\n <MenuItem className={twMerge(\"mb-0 block px-6 py-2\", className)} {...rest}>\n {children}\n </MenuItem>\n)\n\nconst UserDropdown = ({ photoUrl, proName, proEmail, proUrl }) => (\n <Menu as=\"div\" className=\"relative inline-block text-left\">\n {({ open }) => (\n <>\n <div>\n <MenuButton className=\"inline w-full justify-center rounded-full\">\n <img className=\"inline h-10 w-10 rounded-full\" src={photoUrl} />\n </MenuButton>\n </div>\n\n <Transition\n show={open}\n as={Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\">\n <MenuItems\n static\n className=\"absolute right-0 mt-2 w-[180px] origin-top-right rounded-xl border border-gray-light bg-white py-2 shadow-lg\">\n <HealMenuItem onClick={(e) => e.preventDefault()}>\n <span className=\"truncate font-bold\">{proName}</span>\n </HealMenuItem>\n <HealMenuItem className=\"pt-0\" onClick={(e) => e.preventDefault()}>\n <span className=\"truncate text-sm text-gray-dark\">{proEmail}</span>\n </HealMenuItem>\n <Divider className=\"my-2\" />\n <HealMenuItem className=\"min_md:hidden\" as=\"div\">\n <a\n className=\"block w-full rounded border border-gray bg-white py-1.5 text-center font-bold focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray-light\"\n target=\"_blank\"\n href={proUrl}\n rel=\"noreferrer\">\n Preview website\n </a>\n </HealMenuItem>\n <HealMenuItem className=\"hover:bg-gray-ultralight\">\n <a href=\"/portal/settings/personal\">My Account</a>\n </HealMenuItem>\n <HealMenuItem className=\"hover:bg-gray-ultralight md:hidden\">\n <a href=\"/portal/clients\">Invite Clients</a>\n </HealMenuItem>\n <Divider className=\"my-2\" />\n <HealMenuItem className=\"hover:bg-gray-ultralight\">\n <a href=\"/logout\" className=\"block text-gray-dark\">\n Log out\n </a>\n </HealMenuItem>\n </MenuItems>\n </Transition>\n </>\n )}\n </Menu>\n)\n\nconst MobileMenuHambuger = ({ mobileMenuProps }) => {\n const [showFlyout, setShowFlyout] = useState(false)\n\n return (\n <>\n <a className=\"relative\" onClick={() => setShowFlyout(true)}>\n <Bars3Icon className=\"h-8 w-8 text-gray-dark\" />\n </a>\n <MobileMenuFlyout\n visible={showFlyout}\n closeFlyout={() => setShowFlyout(false)}\n mobileMenuProps={mobileMenuProps}\n />\n </>\n )\n}\n\nconst MobileMenuFlyout = ({ visible, closeFlyout, mobileMenuProps }) => {\n const {\n proName,\n proEmail,\n proUrl,\n photoUrl,\n eventsEnabled,\n intakeFormsEnabled,\n customDomainEnabled,\n websitePlan,\n websiteBuilderEnabled\n } = mobileMenuProps\n\n const [openItems, setOpenItems] = useState({})\n\n const toggleItem = (itemName) => {\n setOpenItems((prev) => ({\n ...prev,\n [itemName]: !prev[itemName]\n }))\n }\n\n const navigationItems = getSideNavigationItems({\n eventsEnabled,\n intakeFormsEnabled,\n customDomainEnabled,\n websitePlan,\n websiteBuilderEnabled\n })\n\n return (\n <Flyout header=\"Menu\" visible={visible} closeFlyout={closeFlyout}>\n <div className=\"mb-4 flex items-center\">\n <img className=\"h-10 w-10 rounded-full\" src={photoUrl} />\n <div className=\"ml-4\">\n <div className=\"font-bold\">{proName}</div>\n <div className=\"text-sm text-gray-dark\">{proEmail}</div>\n </div>\n </div>\n <a\n className=\"block w-full rounded border border-gray bg-white py-1.5 text-center font-bold focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray-light\"\n target=\"_blank\"\n href={proUrl}\n rel=\"noreferrer\">\n Preview website\n </a>\n <Divider className=\"my-2\" />\n {navigationItems.map((item) => (\n <div key={item.name} className=\"my-4\">\n <div\n className=\"flex cursor-pointer items-center justify-between\"\n onClick={() => item.children && toggleItem(item.name)}>\n <a href={item.children ? \"#\" : item.href} className=\"font-bold\" {...(item.id ? { id: item.id } : {})}>\n {item.name}\n </a>\n {item.children && (\n <span>\n {openItems[item.name] ? <ChevronUpIcon className=\"h-5 w-5\" /> : <ChevronDownIcon className=\"h-5 w-5\" />}\n </span>\n )}\n </div>\n\n {item.children && openItems[item.name] && (\n <div className=\"ml-4 mt-2\">\n {item.children.map((child) => (\n <a key={child.name} href={child.href} className=\"flex px-4 py-2 text-gray-dark\">\n {child.name}\n </a>\n ))}\n </div>\n )}\n </div>\n ))}\n <Divider className=\"my-4\" />\n <div>\n <a href=\"/logout\" className=\"flex text-gray-dark\">\n Log out\n </a>\n </div>\n </Flyout>\n )\n}\n\nexport default PortalHeader\n","import React, { createContext, useContext, useState } from \"react\"\n\nexport const CalendarFlyoutContext = createContext()\n\n// Used on ProCalendar, PaymentDirectory, BookableEvents\nexport const CalendarFlyoutProvider = ({ children }) => {\n const [showFlyout, setShowFlyout] = useState(false)\n const [eventType, setEventType] = useState(\"client\")\n\n const value = {\n showFlyout,\n setShowFlyout,\n eventType,\n setEventType\n }\n\n return <CalendarFlyoutContext.Provider value={value}>{children}</CalendarFlyoutContext.Provider>\n}\n\nexport const useCalendarFlyout = () => useContext(CalendarFlyoutContext)\n","export const APPOINTMENT_FIELDS_FOR_CALENDAR = `\n id\n isVirtual\n virtualMeetingLinkWithFallback\n startsAt\n endsAt\n amountCents\n tipAmountCents\n fullTotal\n paymentIntentId\n timeZone\n state\n pendingOrApproved\n recurrenceFrequency\n recurrenceCount\n recurrenceUntil\n instantActionToken\n bookedBy\n createdAt\n newClient\n markPaid\n paymentStatus\n paymentError\n paymentMethod\n packageSessionNumber\n package { id numberOfSessions name createdAt }\n adjustments { id adjustedAt amountCents note }\n reviewLink\n appointmentServices {\n amountCents\n service {\n id\n serviceId\n name\n amountCents\n timeLength\n package\n }\n }\n location {\n id\n name\n }\n client {\n id\n firstName\n lastName\n email\n phone\n deletedAt\n customPrices { id amountCents serviceId }\n }\n discountCodeRedemptions { code amountCents }\n`\n\nexport const BOOKABLE_EVENT_FIELDS_FOR_CALENDAR = `\n id\n allDay\n bookableEventTypeId\n startsAt\n endsAt\n timeZone\n capacity\n`\n\nexport const PRACTICE_QUERY = `\n query CurrentPractice($includePrivate: Boolean, $includeAddOns: Boolean) {\n currentPractice {\n id\n recurringBookingsEnabled\n isStripeApproved\n services(includePrivate: $includePrivate, includeAddOns: $includeAddOns) {\n id\n name\n description\n photoUrl\n package\n numberOfSessions\n addOn\n locations {\n id\n name\n latitude\n longitude\n singleLine\n cityState\n kind\n }\n variations {\n id\n timeLength\n amountCents\n }\n }\n locations {\n id\n name\n latitude\n longitude\n singleLine\n cityState\n virtualLink\n virtualInstructions\n kind\n services {\n id\n name\n description\n photoUrl\n variations {\n id\n timeLength\n amountCents\n }\n }\n }\n bookingAvailability {\n timeZone\n availableSlots {\n date\n datetimes\n }\n }\n }\n }\n`\n\nexport const APPOINTMENT_QUERY = `\n query TokenAppointment($instantActionToken: String!) {\n tokenAppointment(instantActionToken: $instantActionToken) {\n id\n startsAt\n endsAt\n hasTextReview\n hasVideoReview\n hasEndorsements\n state\n timeZone\n isVirtual\n createdAt\n amountCents\n tipAmountCents\n fullTotal\n pendingOrApproved\n paymentIntentId\n paymentMethod\n hasPaymentMethod\n paymentError\n markPaid\n instantActionToken\n bookedBy\n createdAt\n newClient\n paymentStatus\n packageSessionNumber\n reviewLink\n adjustments { id adjustedAt amountCents note }\n package { id numberOfSessions name createdAt }\n defaultPaymentMethod {\n label\n brand\n expiry\n }\n practice {\n id\n isStripeApproved\n user {\n id\n name\n profilePhotos {\n medium {\n jpeg\n webp\n }\n small {\n jpeg\n webp\n }\n original {\n jpeg\n webp\n }\n }\n }\n }\n service {\n id\n name\n description\n photoUrl\n timeLength\n parent {\n id\n name\n description\n photoUrl\n timeLength\n }\n }\n appointmentServices {\n amountCents\n service {\n id\n serviceId\n name\n amountCents\n timeLength\n package\n }\n }\n location {\n id\n name\n latitude\n longitude\n singleLine\n cityState\n virtualLink\n virtualInstructions\n }\n client {\n id\n firstName\n lastName\n userId\n email\n phone\n deletedAt\n }\n discountCodeRedemptions { code amountCents }\n }\n }\n`\n\nexport const APPOINTMENT_QUERY_FOR_CALENDAR = `\n query AppointmentForCalendar($instantActionToken: String!) {\n tokenAppointment(instantActionToken: $instantActionToken) { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n }\n`\n\nexport const PRO_CALENDAR_USER_QUERY = `\n query ProCalendarUser {\n currentUser {\n commsName email phone\n practice {\n id\n hasImportedClients\n showTermsModal\n allHours {\n weekDay\n hours {\n startsAt\n endsAt\n }\n }\n }\n }\n currentPractice { id }\n }\n`\n\nexport const PRO_CALENDAR_QUERY = `\n query ProCalendar($from: String, $to: String) {\n practiceAppointments(from: $from, to: $to) { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n practiceBookableEvents(from: $from, to: $to) { ${BOOKABLE_EVENT_FIELDS_FOR_CALENDAR} }\n personalEvents(from: $from, to: $to) { id name startsAt endsAt allDay }\n }\n`\n\nexport const PRO_CALENDAR_EVENTS_QUERY = `\n query ProCalendarEvents($from: String, $to: String) {\n calendarEvents(from: $from, to: $to) {\n id title start end allDay backgroundColor borderColor textColor classNames editable\n extendedProps { personalEventId description token duration about calendarName location timeZone }\n }\n }\n`\n\nexport const CREATE_APPOINTMENT_MUTATION = `\n mutation ProCreateAppointment(\n $appointmentServices: [AppointmentServiceInput!]!,\n $locationId: ID!,\n $startsAt: String!,\n $endsAt: String,\n $clientId: ID,\n $client: ClientInput,\n ) {\n proCreateAppointment(\n appointmentServices: $appointmentServices,\n locationId: $locationId,\n startsAt: $startsAt,\n endsAt: $endsAt,\n clientId: $clientId,\n client: $client,\n ) {\n appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n result\n errors\n }\n }\n`\n\nexport const CREATE_APPOINTMENTS_MUTATION = `\n mutation CreateAppointments(\n $appointmentServices: [AppointmentServiceInput!]!,\n $locationId: ID!,\n $clientId: ID,\n $client: ClientInput,\n $bookedFrom: String,\n $bookedBy: String,\n $recurringStartTimes: [String!]!,\n $recurrencePattern: String!,\n $duration: Int\n ) {\n createAppointments(\n appointmentServices: $appointmentServices,\n locationId: $locationId,\n clientId: $clientId,\n client: $client,\n bookedFrom: $bookedFrom,\n bookedBy: $bookedBy,\n recurringStartTimes: $recurringStartTimes,\n recurrencePattern: $recurrencePattern,\n duration: $duration\n ) {\n appointments { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n result\n errors\n }\n }\n`\n\nexport const UPDATE_APPOINTMENT_MUTATION = `\n mutation UpdateAppointment(\n $appointmentId: ID!,\n $state: String,\n $appointmentServices: [AppointmentServiceInput!]!,\n $locationId: ID,\n $clientType: String,\n $startsAt: String,\n $endsAt: String,\n $practitionerNote: String,\n ) {\n updateAppointment(\n appointmentId: $appointmentId,\n state: $state,\n appointmentServices: $appointmentServices,\n locationId: $locationId,\n clientType: $clientType,\n startsAt: $startsAt,\n endsAt: $endsAt,\n practitionerNote: $practitionerNote\n ) {\n result\n errors\n appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n }\n }\n`\n\nexport const UPDATE_APPOINTMENT_V2_MUTATION = `\n mutation UpdateAppointmentV2(\n $appointmentId: ID!,\n $appointmentServices: [AppointmentServiceInput!],\n $locationId: ID,\n $practitionerNote: String,\n $startsAt: String,\n $endsAt: String,\n ) {\n updateAppointmentV2(\n appointmentId: $appointmentId,\n appointmentServices: $appointmentServices,\n locationId: $locationId,\n practitionerNote: $practitionerNote,\n startsAt: $startsAt,\n endsAt: $endsAt,\n ) {\n result\n errors\n appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n }\n }\n`\n\nexport const CANCEL_APPOINTMENT_MUTATION = `\n mutation CancelAppointment($appointmentId: ID!, $practitionerNote: String, $cancelRecurringSeries: Boolean) {\n cancelAppointment(appointmentId: $appointmentId, practitionerNote: $practitionerNote, cancelRecurringSeries: $cancelRecurringSeries) {\n result\n errors\n cancelledAppointmentIds\n }\n }\n`\n\nexport const ACCEPT_APPOINTMENT_MUTATION = `\n mutation AcceptAppointment($appointmentId: ID!) {\n acceptAppointment(appointmentId: $appointmentId) {\n result\n errors\n appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n }\n }\n`\n\nexport const DECLINE_APPOINTMENT_MUTATION = `\n mutation DeclineAppointment($appointmentId: ID!) {\n declineAppointment(appointmentId: $appointmentId) {\n result\n errors\n appointment { ${APPOINTMENT_FIELDS_FOR_CALENDAR} }\n }\n }\n`\n\nexport const RETRY_PAYMENT_MUTATION = `\n mutation RetryPayment($appointmentId: ID!) {\n retryPayment(appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nexport const RESEND_REVIEW_REQUEST = `\n mutation ResendReviewRequest($appointmentId: ID!) {\n resendReviewRequest(appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nexport const MARK_AS_PAID = `\n mutation MarkPaid($appointmentId: ID!, $paidBy: String){\n markPaid(appointmentId: $appointmentId, paidBy: $paidBy){\n result\n errors\n }\n }\n`\n\nexport const UNDO_MARK_PAID = `\n mutation UndoMarkPaid($appointmentId: ID!){\n undoMarkPaid(appointmentId: $appointmentId){\n result\n errors\n }\n }\n`\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useEffect, useReducer } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CREATE_APPOINTMENTS_MUTATION } from \"../components/pro_portal/calendar/appointment_graphql\"\n\nimport { useToast } from \"./ToastContext\"\n\nconst initialState = {\n services: [{}],\n locationId: null,\n startsAt: null,\n endsAt: null,\n customerId: null,\n clientId: null,\n client: null,\n bookedFrom: \"web\",\n bookedBy: \"pro\",\n recurringStartTimes: null,\n recurrencePattern: null,\n recurringAppointmentError: null,\n appointment: null,\n rescheduledStartsAt: null,\n rescheduledEndsAt: null,\n rescheduleRecurringSeries: false,\n appointmentErrors: false,\n initialAppointmentValues: null // Used to check if the appointment has changed during edit\n}\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"SET_SERVICES\":\n return { ...state, services: action.payload }\n case \"SET_LOCATION_ID\":\n return { ...state, locationId: action.payload }\n case \"SET_STARTS_AT\":\n return { ...state, startsAt: action.payload }\n case \"SET_ENDS_AT\":\n return { ...state, endsAt: action.payload }\n case \"SET_CUSTOMER_ID\":\n return { ...state, customerId: action.payload }\n case \"SET_CLIENT_ID\":\n return { ...state, clientId: action.payload }\n case \"SET_CLIENT\":\n return { ...state, client: action.payload }\n case \"SET_BOOKED_FROM\":\n return { ...state, bookedFrom: action.payload }\n case \"SET_BOOKED_BY\":\n return { ...state, bookedBy: action.payload }\n case \"SET_RECURRING_START_TIMES\":\n return { ...state, recurringStartTimes: action.payload }\n case \"SET_RECURRENCE_PATTERN\":\n return { ...state, recurrencePattern: action.payload }\n case \"SET_RECURRING_APPOINTMENT_ERROR\":\n return { ...state, recurringAppointmentError: action.payload }\n case \"SET_APPOINTMENT\":\n return { ...state, appointment: action.payload }\n case \"SET_RESCHEDULED_STARTS_AT\":\n return { ...state, rescheduledStartsAt: action.payload }\n case \"SET_RESCHEDULED_ENDS_AT\":\n return { ...state, rescheduledEndsAt: action.payload }\n case \"SET_RESCHEDULE_RECURRING_SERIES\":\n return { ...state, rescheduleRecurringSeries: action.payload }\n case \"SET_APPOINTMENT_ERRORS\":\n return { ...state, appointmentErrors: action.payload }\n case \"RESET\":\n return initialState\n case \"SET_INITIAL_APPOINTMENT_VALUES\":\n return { ...state, initialAppointmentValues: action.payload }\n default:\n throw new Error(`Invalid action type: ${action.type}`)\n }\n}\n\nexport const ManualBookingContext = createContext()\n\nexport const ManualBookingProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n const [{ fetching: createRecurringAppointmentsFetching }, createAppointments] =\n useMutation(CREATE_APPOINTMENTS_MUTATION)\n const { showToast } = useToast()\n\n const createRecurringAppointments = (onSuccess) => {\n let clientId = null\n let newClient = null\n\n if (state.client.id) {\n clientId = state.client.id\n } else {\n newClient = state.client\n }\n\n const variables = {\n appointmentServices: state.services\n .filter((service) => service.service?.id)\n .map((service) => ({\n amountCents: service.amountCents,\n serviceId: service.service.id,\n saveCustomPrice: service.saveCustomPrice\n })),\n locationId: state.locationId,\n clientId,\n client: newClient,\n bookedFrom: state.bookedFrom,\n bookedBy: state.bookedBy,\n recurringStartTimes: state.recurringStartTimes,\n recurrencePattern: state.recurrencePattern,\n duration: dayjs(state.endsAt).diff(state.startsAt, \"minutes\")\n }\n createAppointments(variables).then((result) => {\n if (result.error) {\n console.error(result.error)\n showToast({ type: \"error\", content: `Error creating appointments: ${result.error}` })\n } else if (result.data.createAppointments?.result === \"success\") {\n showToast(\"Your recurring series was created successfully.\")\n onSuccess(result.data.createAppointments.appointments)\n } else {\n console.error(result)\n showToast({\n type: \"error\",\n content: `Error creating appointments: ${result.data.createAppointments.errors.join(\" \")}`\n })\n }\n })\n }\n\n useEffect(() => {\n if (state.appointment) {\n // Add priceChanged and saveCustomPrice to services for the edit form\n const updatedServices = state.appointment.appointmentServices.map((service) => {\n const customPrice = state.appointment.client.customPrices?.find((cp) => cp.serviceId === service.service.id)\n return {\n ...service,\n priceChanged: service.amountCents !== service.service.amountCents,\n saveCustomPrice: customPrice?.amountCents === service.amountCents\n }\n })\n\n const initialValues = {\n client: state.appointment.client || state.appointment.user,\n services: updatedServices,\n locationId: state.appointment.location.id,\n startsAt: state.appointment.startsAt,\n endsAt: state.appointment.endsAt\n }\n\n dispatch({ type: \"SET_INITIAL_APPOINTMENT_VALUES\", payload: initialValues })\n dispatch({ type: \"SET_CLIENT\", payload: initialValues.client })\n dispatch({ type: \"SET_SERVICES\", payload: initialValues.services })\n dispatch({ type: \"SET_LOCATION_ID\", payload: initialValues.locationId })\n dispatch({ type: \"SET_STARTS_AT\", payload: initialValues.startsAt })\n dispatch({ type: \"SET_ENDS_AT\", payload: initialValues.endsAt })\n }\n }, [state.appointment])\n\n const updateEndsAtWithServicesDuration = (servicesObj) => {\n const totalTimeLength = servicesObj\n .filter((service) => service.service?.timeLength)\n .reduce((sum, service) => sum + service.service.timeLength, 0)\n dispatch({\n type: \"SET_ENDS_AT\",\n payload: dayjs(state.startsAt).add(totalTimeLength, \"minutes\").toISOString()\n })\n }\n\n const value = {\n setServices: (services) => dispatch({ type: \"SET_SERVICES\", payload: services }),\n setLocationId: (locationId) => dispatch({ type: \"SET_LOCATION_ID\", payload: locationId }),\n setStartsAt: (startsAt) => dispatch({ type: \"SET_STARTS_AT\", payload: startsAt }),\n setEndsAt: (endsAt) => dispatch({ type: \"SET_ENDS_AT\", payload: endsAt }),\n setCustomerId: (customerId) => dispatch({ type: \"SET_CUSTOMER_ID\", payload: customerId }),\n setClientId: (clientId) => dispatch({ type: \"SET_CLIENT_ID\", payload: clientId }),\n setClient: (client) => dispatch({ type: \"SET_CLIENT\", payload: client }),\n setRecurringStartTimes: (recurringStartTimes) =>\n dispatch({ type: \"SET_RECURRING_START_TIMES\", payload: recurringStartTimes }),\n setRecurrencePattern: (recurrencePattern) =>\n dispatch({ type: \"SET_RECURRENCE_PATTERN\", payload: recurrencePattern }),\n setRecurringAppointmentError: (recurringAppointmentError) =>\n dispatch({ type: \"SET_RECURRING_APPOINTMENT_ERROR\", payload: recurringAppointmentError }),\n resetBookingState: () => dispatch({ type: \"RESET\" }),\n setAppointment: (appointment) => dispatch({ type: \"SET_APPOINTMENT\", payload: appointment }),\n setRescheduledStartsAt: (startsAt) => dispatch({ type: \"SET_RESCHEDULED_STARTS_AT\", payload: startsAt }),\n setRescheduledEndsAt: (endsAt) => dispatch({ type: \"SET_RESCHEDULED_ENDS_AT\", payload: endsAt }),\n setRescheduleRecurringSeries: (rescheduleRecurringSeries) =>\n dispatch({ type: \"SET_RESCHEDULE_RECURRING_SERIES\", payload: rescheduleRecurringSeries }),\n setAppointmentErrors: (appointmentErrors) =>\n dispatch({ type: \"SET_APPOINTMENT_ERRORS\", payload: appointmentErrors }),\n createRecurringAppointments,\n createRecurringAppointmentsFetching,\n updateEndsAtWithServicesDuration,\n ...state\n }\n\n return <ManualBookingContext.Provider value={value}>{children}</ManualBookingContext.Provider>\n}\n\nexport const useManualBooking = () => useContext(ManualBookingContext)\n","export const UPSERT_BOOKABLE_EVENT_MUTATION = `\n mutation UpsertBookableEvent(\n $id: ID,\n $startsAt: String!,\n $endsAt: String!,\n $allDay: Boolean,\n $timeZone: String!,\n $bookableEventTypeId: ID!\n ) {\n upsertBookableEvent(\n id: $id,\n startsAt: $startsAt,\n endsAt: $endsAt,\n allDay: $allDay,\n timeZone: $timeZone,\n bookableEventTypeId: $bookableEventTypeId\n ) {\n result\n errors\n bookableEvent {\n id startsAt endsAt allDay timeZone bookableEventTypeId name description instructions capacity amountCents amountCurrency location kind\n }\n }\n }\n`\n\nexport const UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION = `\n mutation UpdateBookableEventPhoto($handle: String!, $id: ID!) {\n updateBookableEventPhoto(handle: $handle, id: $id) { result errors photoUrl }\n }\n`\n\nexport const REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION = `\n mutation RemoveBookableEventPhoto($id: ID!) {\n removeBookableEventPhoto(id: $id) { result errors }\n }\n`\n\nexport const DELETE_BOOKABLE_EVENT_MUTATION = `\n mutation DeleteBookableEvent($id: ID!) {\n deleteBookableEvent(id: $id) { result errors }\n }\n`\n\nexport const ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION = `\n mutation AddClientToBookableEvent($bookableEventId: ID!, $clientId: ID, $clientParams: ClientInput) {\n addClientToBookableEvent(bookableEventId: $bookableEventId, clientId: $clientId, clientParams: $clientParams) {\n result\n errors\n registrationsCount\n }\n }\n`\n\nexport const REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION = `\n mutation RemoveClientFromBookableEvent($bookableEventId: ID!, $clientId: ID!) {\n removeClientFromBookableEvent(bookableEventId: $bookableEventId, clientId: $clientId) {\n result\n errors\n registrationsCount\n }\n }\n`\n\nexport const PROCESS_REGISTRATION_PAYMENT_MUTATION = `\n mutation ProcessRegistrationPayment($registrationId: ID!) {\n processRegistrationPayment(registrationId: $registrationId) {\n result\n errors\n }\n }\n`\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport {\n DELETE_BOOKABLE_EVENT_MUTATION,\n REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION,\n UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION,\n UPSERT_BOOKABLE_EVENT_MUTATION\n} from \"./mutations\"\n\nexport const defaultNewEvent = {\n startsAt: dayjs()\n .set(\"hour\", dayjs().get(\"hour\") + 1)\n .set(\"minute\", 0)\n .set(\"second\", 0)\n .set(\"millisecond\", 0)\n .toISOString(),\n endsAt: dayjs()\n .set(\"hour\", dayjs().get(\"hour\") + 2)\n .set(\"minute\", 0)\n .set(\"second\", 0)\n .set(\"millisecond\", 0)\n .toISOString(),\n allDay: false,\n timeZone: null,\n bookableEventTypeId: null\n}\n\nexport const BookableEventsContext = createContext()\n\nexport const BookableEventsProvider = ({ children, bookableEvents: bookableEventsProp, previousLocations }) => {\n const [showFlyout, setShowFlyout] = useState(false)\n const [bookableEvents, setBookableEvents] = useState(bookableEventsProp)\n const [googlePlacesLoaded, setGooglePlacesLoaded] = useState(false)\n const [bookableEvent, setBookableEvent] = useState(defaultNewEvent)\n const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n const [rescheduleModalVisible, setRescheduleModalVisible] = useState(false)\n const [bookableEventTab, setBookableEventTab] = useState(\"details\") // details or registrants\n\n const [{ fetching: upsertMutationFetching }, upsertBookableEvent] = useMutation(UPSERT_BOOKABLE_EVENT_MUTATION)\n const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_BOOKABLE_EVENT_PHOTO_MUTATION)\n const [{ fetching: deleteMutationFetching }, deleteBookableEvent] = useMutation(DELETE_BOOKABLE_EVENT_MUTATION)\n const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(REMOVE_BOOKABLE_EVENT_PHOTO_MUTATION)\n\n const fetching =\n upsertMutationFetching || photoMutationFetching || deleteMutationFetching || removePhotoMutationFetching\n\n const getDefaultNewEvent = () => ({\n ...defaultNewEvent,\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n })\n\n useEffect(() => {\n // do this in an effect to avoid SSR rehydration issues\n setBookableEvent(getDefaultNewEvent())\n\n async function initPlaces() {\n await window.google.maps.importLibrary(\"places\")\n setGooglePlacesLoaded(true)\n }\n\n initPlaces()\n }, [])\n\n // TODO: consider removing this, as it's only used in BookableEventsPage\n const updateBookableEvents = (newEvent) => {\n if (!bookableEvents) return\n\n setBookableEvents((prevEvents) => {\n const newEvents = [...prevEvents]\n const index = newEvents.findIndex((s) => s.id === newEvent.id)\n if (index !== -1) {\n newEvents[index] = newEvent\n } else {\n newEvents.push(newEvent)\n }\n\n return newEvents\n })\n }\n\n const resetBookableEventState = () => {\n setBookableEvent(getDefaultNewEvent())\n setBookableEventTab(\"details\")\n }\n\n const value = {\n bookableEvents,\n setBookableEvents,\n showFlyout,\n setShowFlyout,\n bookableEvent,\n setBookableEvent,\n getDefaultNewEvent,\n previousLocations,\n googlePlacesLoaded,\n fetching,\n upsertBookableEvent,\n updatePhoto,\n deleteBookableEvent,\n removePhoto,\n updateBookableEvents,\n deleteModalVisible,\n setDeleteModalVisible,\n rescheduleModalVisible,\n setRescheduleModalVisible,\n bookableEventTab,\n setBookableEventTab,\n resetBookableEventState\n }\n\n return <BookableEventsContext.Provider value={value}>{children}</BookableEventsContext.Provider>\n}\n\nexport const useBookableEvents = () => useContext(BookableEventsContext)\n","import daysjs from \"dayjs\"\nimport React from \"react\"\n\nexport const formatEventTitle = (appt) => {\n const timeLength = daysjs(appt.endsAt).diff(daysjs(appt.startsAt), \"minutes\")\n const service = appt.appointmentServices[0].service\n let result\n if (appt.user) {\n result = timeLength < 30 ? `${appt.user.name} - ${service.name}` : `${appt.user.name}`\n } else if (appt.client) {\n let name = appt.client.firstName\n if (appt.client.lastName) name += ` ${appt.client.lastName}`\n result = timeLength < 30 ? `${name} - ${service.name}` : `${name}`\n } else {\n result = service.name\n }\n return appt.state === \"pending\" ? `Request: ${result}` : result\n}\n\nexport const handleDayHeaderContent = (args) => {\n const dayString = args.date.toDateString()\n const dayName = dayString.split(\" \")[0]\n const dayNumber = dayString.split(\" \")[2]\n\n return (\n <>\n <span className=\"day-name\">{dayName}</span> {dayNumber}\n </>\n )\n}\n\nexport const renderEventContent = (eventInfo) => (\n <>\n <span className=\"event-title\">\n {eventInfo.event.extendedProps.duration < \"30\" && eventInfo.timeText} {eventInfo.event.title}\n </span>\n {eventInfo.event.extendedProps.duration >= \"30\" && (\n <>\n <span className=\"event-time\">{eventInfo.timeText}</span>\n <span className=\"event-description\">{eventInfo.event.extendedProps.description}</span>\n </>\n )}\n </>\n)\n","import dayjs from \"dayjs\"\nimport React, { createContext, useContext, useState, useEffect } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { useMutation } from \"urql\"\n\nimport { getFirstAvailableTimeSlot } from \"../@core/practice/practice.utils\"\nimport {\n APPOINTMENT_QUERY_FOR_CALENDAR,\n PRO_CALENDAR_EVENTS_QUERY,\n PRO_CALENDAR_QUERY,\n PRO_CALENDAR_USER_QUERY\n} from \"../components/pro_portal/calendar/appointment_graphql\"\nimport { useBookableEvents } from \"../pages/BookableEvents/BookableEventsContext\"\nimport { formatEventTitle } from \"../utils/calendarUtils\"\nimport { UPSERT_PERSONAL_EVENT } from \"../utils/mutations\"\nimport { urqlClient } from \"../utils/utils\"\n\nimport { useCalendarFlyout } from \"./CalendarFlyoutContext\"\nimport { useManualBooking } from \"./ManualBookingContext\"\nimport { usePractice } from \"./PracticeContext\"\nimport { useToast } from \"./ToastContext\"\n\nconst ProCalendarContext = createContext()\n\nconst TIME_GRID_TYPE_MAP = {\n timeGridDay: \"day\",\n timeGridWeek: \"week\",\n dayGridMonth: \"month\"\n}\n\nexport const ProCalendarProvider = ({ children }) => {\n const [calendarData, setCalendarData] = useState(null)\n const [isLoading, setIsLoading] = useState(true)\n const [calendarEvents, setCalendarEvents] = useState([])\n const [isFlyoutVisible, setIsFlyoutVisible] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState()\n const [selectedPersonalEvent, setSelectedPersonalEvent] = useState(null)\n const [selectedExternalEvent, setSelectedExternalEvent] = useState(null)\n const [currentViewDate, setCurrentViewDate] = useState(null)\n const [showRescheduleConfirm, setShowRescheduleConfirm] = useState(false)\n const [draggedEvent, setDraggedEvent] = useState(null)\n\n const { showToast } = useToast()\n const navigate = useNavigate()\n\n const {\n setAppointment: setSelectedAppointment,\n setRescheduledStartsAt,\n setRescheduledEndsAt,\n resetBookingState,\n setStartsAt,\n setEndsAt\n } = useManualBooking()\n\n const { setBookableEvent, updateBookableEvents, getDefaultNewEvent, resetBookableEventState } = useBookableEvents()\n\n const { setEventType } = useCalendarFlyout()\n\n const { practice } = usePractice()\n\n const [, upsertPersonalEvent] = useMutation(UPSERT_PERSONAL_EVENT)\n\n useEffect(() => {\n if (window.location.hash) {\n const param = window.location.hash.substring(1)\n if (param === \"create-appointment\") {\n handleCreateAppointmentButtonClick()\n } else {\n urqlClient\n .query(APPOINTMENT_QUERY_FOR_CALENDAR, { instantActionToken: param })\n .toPromise()\n .then((result) => {\n if (result.data?.tokenAppointment) {\n const appointment = result.data.tokenAppointment\n setSelectedAppointment(appointment)\n setIsFlyoutVisible(true)\n } else {\n showToast({ type: \"error\", content: \"Appointment not found\" })\n }\n })\n }\n }\n }, [])\n\n const fetchCalendarUser = () => {\n urqlClient\n .query(PRO_CALENDAR_USER_QUERY)\n .toPromise()\n .then((result) => {\n if (result.data) {\n setCalendarData((prevData) => ({\n ...prevData,\n currentUser: result.data.currentUser,\n currentPractice: result.data.currentPractice\n }))\n }\n })\n }\n\n const mergeUniqueById = (existingItems = [], newItems = []) =>\n [...existingItems, ...newItems].filter((item, index, self) => index === self.findIndex((i) => i.id === item.id))\n\n const fetchCalendarData = ({ from, to }) => {\n urqlClient\n .query(PRO_CALENDAR_QUERY, { from, to })\n .toPromise()\n .then((result) => {\n if (result.data) {\n setCalendarData((prevData) => ({\n ...prevData,\n practiceAppointments: mergeUniqueById(prevData?.practiceAppointments, result.data.practiceAppointments),\n practiceBookableEvents: mergeUniqueById(\n prevData?.practiceBookableEvents,\n result.data.practiceBookableEvents\n ),\n personalEvents: mergeUniqueById(prevData?.personalEvents, result.data.personalEvents)\n }))\n setIsLoading(false)\n }\n })\n }\n\n const fetchCalendarEvents = (startDate, endDate) => {\n urqlClient\n .query(PRO_CALENDAR_EVENTS_QUERY, { from: startDate, to: endDate })\n .toPromise()\n .then((result) => {\n if (result.data?.calendarEvents) {\n const processedEvents = processCalendarEvents(result.data.calendarEvents)\n setCalendarEvents((prevEvents) => mergeUniqueById(prevEvents, processedEvents))\n }\n })\n }\n\n const processCalendarEvents = (events) => {\n const currentTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n return events.map((event) => {\n if (event.id.startsWith(\"personal-event\")) {\n return processPersonalEvent(event, currentTimeZone)\n } else if (event.allDay) {\n return processAllDayEvent(event)\n }\n return event\n })\n }\n\n const processPersonalEvent = (event, currentTimeZone) => ({\n ...event,\n allDay: event.extendedProps.timeZone && event.extendedProps.timeZone !== currentTimeZone ? false : event.allDay\n })\n\n const processAllDayEvent = (event) => ({\n ...event,\n start: event.start.split(\"T\")[0],\n end: event.end.split(\"T\")[0],\n allDay: true\n })\n\n useEffect(() => {\n const currentWeekStart = dayjs().startOf(\"week\").subtract(1, \"week\").format(\"YYYY-MM-DD\")\n const currentWeekEnd = dayjs().endOf(\"week\").add(1, \"week\").format(\"YYYY-MM-DD\")\n fetchCalendarUser()\n fetchCalendarData({ from: currentWeekStart, to: currentWeekEnd })\n fetchCalendarEvents(currentWeekStart, currentWeekEnd)\n }, [])\n\n const handleEventClick = (eventInfo) => {\n if (isLoading) return\n\n if (eventInfo.event.extendedProps.token) {\n const appointment = findAppointment(eventInfo.event.extendedProps.token)\n setSelectedAppointment(appointment)\n setIsFlyoutVisible(true)\n setEventType(\"client\")\n navigate(`${window.location.pathname}#${eventInfo.event.extendedProps.token}`)\n } else if (eventInfo.event.extendedProps.personalEventId) {\n const personalEvent = findPersonalEvent(eventInfo.event.id)\n setSelectedPersonalEvent(personalEvent)\n setIsFlyoutVisible(true)\n setEventType(\"personal\")\n } else if (eventInfo.event.id.includes(\"bookable-event\")) {\n const foundBookableEvent = findBookableEvent(eventInfo.event.id.replace(\"bookable-event-\", \"\"))\n setBookableEvent(foundBookableEvent)\n setIsFlyoutVisible(true)\n setEventType(\"bookable\")\n } else {\n setSelectedExternalEvent(eventInfo.event)\n setIsFlyoutVisible(true)\n setEventType(\"calendar\")\n }\n }\n\n const handleDateClick = (dateInfo) => {\n const clickedDate = dayjs(dateInfo.date).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n setSelectedDateTime(clickedDate)\n setStartsAt(clickedDate)\n setEndsAt(dayjs(clickedDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setIsFlyoutVisible(true)\n setSelectedAppointment(null)\n setSelectedPersonalEvent(null)\n setBookableEvent({\n ...getDefaultNewEvent(),\n startsAt: clickedDate,\n endsAt: dayjs(clickedDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\")\n })\n addTemporaryEvent(clickedDate)\n }\n\n const addTemporaryEvent = (startDate) => {\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((event) => event.id !== \"temp-1\"),\n {\n id: \"temp-1\",\n start: startDate,\n end: dayjs(startDate).add(1, \"hours\").format(\"YYYY-MM-DDTHH:mm:ssZ\"),\n title: \"Draft Appointment\",\n backgroundColor: \"#55778A\",\n borderColor: \"#55778A\"\n }\n ])\n }\n\n const handleDragReschedule = (eventDropInfo) => {\n const { event } = eventDropInfo\n setDraggedEvent(eventDropInfo)\n\n if (event.extendedProps.personalEventId) {\n handlePersonalEventReschedule(event)\n } else if (event.extendedProps.token) {\n handleAppointmentReschedule(event)\n }\n }\n\n const handlePersonalEventReschedule = (event) => {\n upsertPersonalEvent({\n id: event.extendedProps.personalEventId,\n startsAt: event.start,\n endsAt: event.end\n }).then((response) => {\n if (response.data.upsertPersonalEvent.result === \"success\") {\n closeFlyout()\n showToast(\"Personal event updated successfully.\")\n } else {\n console.error(response)\n }\n })\n }\n\n const handleAppointmentReschedule = (event) => {\n const appointment = findAppointment(event.extendedProps.token)\n setSelectedAppointment(appointment)\n // Need these other states instead of startsAt and endsAt, because setting the appointment above also changes startsAt and endsAt\n setRescheduledStartsAt(dayjs(event.start).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setRescheduledEndsAt(dayjs(event.end).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setShowRescheduleConfirm(true)\n }\n\n const hideRescheduleConfirm = () => {\n setShowRescheduleConfirm(false)\n if (draggedEvent) {\n draggedEvent.revert() // Revert the dragged event to its original position\n setDraggedEvent(null)\n }\n }\n\n const findPersonalEvent = (id) => calendarEvents.find((event) => event.id === id)\n const findAppointment = (token) =>\n calendarData.practiceAppointments.find((event) => event.instantActionToken === token)\n const findBookableEvent = (id) => calendarData.practiceBookableEvents.find((event) => event.id === id)\n\n const closeFlyout = () => {\n setIsFlyoutVisible(false)\n setSelectedAppointment(null)\n setSelectedPersonalEvent(null)\n setSelectedExternalEvent(null)\n setEventType(\"client\")\n setSelectedDateTime(null)\n setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== \"temp-1\"))\n resetBookingState()\n resetBookableEventState()\n const currentPath = window.location.pathname + window.location.search\n navigate(currentPath, { replace: true })\n }\n\n const handleCreatePersonalEvent = (personalEvent) => {\n const newEvent = {\n id: `personal-event-${personalEvent.id}`,\n start: personalEvent.startsAt,\n end: personalEvent.endsAt,\n title: personalEvent.name || \"Personal Event\",\n borderColor: \"#C8D6DF\",\n backgroundColor: \"#C8D6DF\",\n classNames: [\"personal-event\"],\n allDay: personalEvent.allDay,\n extendedProps: {\n personalEventId: personalEvent.id,\n duration: (new Date(personalEvent.endsAt) - new Date(personalEvent.startsAt)) / 1000 / 60\n }\n }\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((event) => event.id !== `personal-event-${personalEvent.id}`),\n newEvent\n ])\n showToast(`Personal event ${selectedPersonalEvent ? \"updated\" : \"created\"} successfully.`)\n closeFlyout()\n }\n\n const handleDeletePersonalEvent = (personalEventId) => {\n setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== `personal-event-${personalEventId}`))\n showToast({ type: \"info\", content: \"Your personal event has been cancelled\" })\n closeFlyout()\n }\n\n const handleAppointmentChange = (appointment) => {\n const newAppointment = {\n id: `appointment-${appointment.id}`,\n start: appointment.startsAt,\n end: appointment.endsAt,\n title: formatEventTitle(appointment),\n borderColor: \"#55778A\",\n backgroundColor: \"#55778A\",\n classNames: [\"primary-event\"],\n extendedProps: {\n token: appointment.instantActionToken,\n duration: (new Date(appointment.endsAt) - new Date(appointment.startsAt)) / 1000 / 60,\n description: appointment.appointmentServices[0].service.name\n }\n }\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((event) => event.id !== `appointment-${appointment.id}`),\n newAppointment\n ])\n setCalendarData((prevData) => ({\n ...prevData,\n practiceAppointments: [\n ...(prevData.practiceAppointments ?? []).filter((appt) => appt.id !== appointment.id),\n appointment\n ]\n }))\n closeFlyout()\n }\n\n const handleRecurringAppointmentsChange = (appointments) => {\n const newAppointments = appointments.map((appointment) => ({\n id: `appointment-${appointment.id}`,\n start: appointment.startsAt,\n end: appointment.endsAt,\n title: formatEventTitle(appointment),\n borderColor: \"#55778A\",\n backgroundColor: \"#55778A\",\n classNames: [\"primary-event\"],\n extendedProps: {\n token: appointment.instantActionToken,\n duration: (new Date(appointment.endsAt) - new Date(appointment.startsAt)) / 1000 / 60,\n description: appointment.appointmentServices[0].service.name\n }\n }))\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((event) => !newAppointments.map((appt) => `appointment-${appt.id}`).includes(event.id)),\n ...newAppointments\n ])\n setCalendarData((prevData) => ({\n ...prevData,\n practiceAppointments: [\n ...prevData.practiceAppointments.filter(\n (appointment) => !appointments.map((appt) => appt.id).includes(appointment.id)\n ),\n ...appointments\n ]\n }))\n closeFlyout()\n }\n\n const handleAppointmentCancellation = (appointmentIds) => {\n setCalendarEvents((prevEvents) =>\n prevEvents.filter((event) => !appointmentIds.map((id) => `appointment-${id}`).includes(event.id))\n )\n setCalendarData((prevData) => ({\n ...prevData,\n practiceAppointments: prevData.practiceAppointments.filter(\n (appointment) => !appointmentIds.includes(appointment.id)\n )\n }))\n closeFlyout()\n }\n\n const handleRescheduleSuccess = (oldAppointmentId, updatedAppointment) => {\n const newCalendarEvent = {\n id: `appointment-${updatedAppointment.id}`,\n start: updatedAppointment.startsAt,\n end: updatedAppointment.endsAt,\n title: formatEventTitle(updatedAppointment),\n borderColor: \"#55778A\",\n backgroundColor: \"#55778A\",\n classNames: [\"primary-event\"],\n extendedProps: {\n token: updatedAppointment.instantActionToken,\n duration: (new Date(updatedAppointment.endsAt) - new Date(updatedAppointment.startsAt)) / 1000 / 60,\n description: updatedAppointment.appointmentServices[0].service.name\n }\n }\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((appointment) => appointment.id !== `appointment-${oldAppointmentId}`),\n newCalendarEvent\n ])\n setCalendarData((prevData) => ({\n ...prevData,\n practiceAppointments: [\n ...prevData.practiceAppointments.filter((appointment) => appointment.id !== oldAppointmentId),\n updatedAppointment\n ]\n }))\n closeFlyout()\n }\n\n // This is called when the \"Create appointment\" button is clicked\n const handleCreateAppointmentButtonClick = () => {\n setIsFlyoutVisible(true)\n if (currentViewDate) {\n // When the calendar is set to \"Day\" view\n setStartsAt(dayjs(currentViewDate).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setEndsAt(dayjs(currentViewDate).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n } else if (practice?.bookingAvailability?.availableSlots) {\n const firstAvailableTimeSlot = getFirstAvailableTimeSlot(practice.bookingAvailability.availableSlots)\n setStartsAt(dayjs(firstAvailableTimeSlot).format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setEndsAt(dayjs(firstAvailableTimeSlot).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n } else {\n // Fallback to today's date\n const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n setStartsAt(nextHour.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n setEndsAt(nextHour.add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n }\n\n const handleBookableEventChange = (bookableEvent) => {\n const newEvent = {\n id: `bookable-event-${bookableEvent.id}`,\n start: bookableEvent.startsAt,\n end: bookableEvent.endsAt,\n title: bookableEvent.name,\n borderColor: \"#F4B965\",\n backgroundColor: \"#F4B965\",\n textColor: \"#0B3954\",\n editable: false, // prevent dragging until implemented\n extendedProps: {\n duration: (new Date(bookableEvent.endsAt) - new Date(bookableEvent.startsAt)) / 1000 / 60,\n description: bookableEvent.description\n }\n }\n setCalendarEvents((prevEvents) => [\n ...prevEvents.filter((event) => event.id !== `bookable-event-${bookableEvent.id}`),\n newEvent\n ])\n setCalendarData((prevData) => ({\n ...prevData,\n practiceBookableEvents: [\n ...(prevData.practiceBookableEvents ?? []).filter((event) => event.id !== bookableEvent.id),\n bookableEvent\n ]\n }))\n updateBookableEvents(bookableEvent)\n closeFlyout()\n }\n\n const handleDeleteBookableEvent = (bookableEvent) => {\n setCalendarEvents((prevEvents) => prevEvents.filter((event) => event.id !== `bookable-event-${bookableEvent.id}`))\n setCalendarData((prevData) => ({\n ...prevData,\n practiceBookableEvents: prevData.practiceBookableEvents.filter((event) => event.id !== bookableEvent.id)\n }))\n closeFlyout()\n }\n\n // This is called when the date range is changed\n const handleDatesSet = (dateInfo) => {\n const timeGridType = TIME_GRID_TYPE_MAP[dateInfo.view.type] || \"week\"\n const from = dayjs(dateInfo.startStr).subtract(1, timeGridType).format(\"YYYY-MM-DD\")\n const to = dayjs(dateInfo.endStr).add(1, timeGridType).format(\"YYYY-MM-DD\")\n fetchCalendarData({ from, to })\n fetchCalendarEvents(from, to)\n if (dateInfo.view.type === \"timeGridDay\") {\n const clickedTime = dayjs(dateInfo.start).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n setCurrentViewDate(dayjs(dateInfo.start).format(\"YYYY-MM-DD\"))\n setStartsAt(clickedTime)\n setEndsAt(dayjs(clickedTime).add(60, \"minutes\").format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n } else {\n setCurrentViewDate(null)\n }\n }\n\n const value = {\n calendarData,\n isLoading,\n calendarEvents,\n isFlyoutVisible,\n selectedDateTime,\n selectedPersonalEvent,\n selectedExternalEvent,\n currentViewDate,\n showRescheduleConfirm,\n setCurrentViewDate,\n handleEventClick,\n handleDateClick,\n handleDragReschedule,\n closeFlyout,\n setIsFlyoutVisible,\n setCalendarEvents,\n setCalendarData,\n handleCreatePersonalEvent,\n handleDeletePersonalEvent,\n handleAppointmentChange,\n handleRecurringAppointmentsChange,\n handleAppointmentCancellation,\n handleRescheduleSuccess,\n hideRescheduleConfirm,\n handleCreateAppointmentButtonClick,\n handleDatesSet,\n draggedEvent,\n setDraggedEvent,\n handleBookableEventChange,\n handleDeleteBookableEvent\n }\n\n return <ProCalendarContext.Provider value={value}>{children}</ProCalendarContext.Provider>\n}\n\nexport const useProCalendar = () => useContext(ProCalendarContext)\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatShortDateTime } from \"../../utils/utils\"\nimport { UPDATE_APPOINTMENT_V2_MUTATION } from \"../pro_portal/calendar/appointment_graphql\"\n\nimport { TextArea } from \"./Inputs\"\nimport { AnimatedModal } from \"./Modal\"\n\nexport default function ConfirmRescheduleModal({ showReschedule, hideModal, onRescheduleSuccess }) {\n const [practitionerNote, setPractitionerNote] = useState()\n const [loading, setLoading] = useState(false)\n const { appointment, rescheduledStartsAt, rescheduledEndsAt, locationId } = useManualBooking()\n const [, updateAppointmentV2] = useMutation(UPDATE_APPOINTMENT_V2_MUTATION)\n const { showToast } = useToast()\n\n if (!appointment) {\n return null\n }\n\n const clientName = appointment.client?.firstName || appointment.user?.firstName || \"your client\"\n\n return (\n <AnimatedModal\n visible={showReschedule}\n hideModal={hideModal}\n header=\"Reschedule session now\"\n actionButtonCopy={loading ? \"Rescheduling...\" : \"Reschedule\"}\n saveDisabled={loading}\n showFooter={true}\n onSave={() => {\n setLoading(true)\n updateAppointmentV2({\n appointmentId: appointment.id,\n locationId,\n startsAt: rescheduledStartsAt,\n endsAt: rescheduledEndsAt,\n practitionerNote\n }).then((result) => {\n setLoading(false)\n if (result.data?.updateAppointmentV2?.result === \"success\") {\n showToast(\"Appointment rescheduled successfully. \")\n if (result.data.updateAppointmentV2.appointment) {\n onRescheduleSuccess(appointment.id, result.data.updateAppointmentV2.appointment)\n }\n } else {\n console.error(result)\n const errorMessage = result?.data?.updateAppointmentV2?.errors?.join() ?? \"unknown error\"\n showToast({\n content: `We weren't able to reschedule this appointment: ${errorMessage}`,\n type: \"error\"\n })\n }\n hideModal()\n })\n }}>\n <p className=\"mb-4\">\n This will reschedule {clientName}'s session from:\n <br />\n {formatShortDateTime(appointment.startsAt)} - {formatShortDateTime(appointment.endsAt)}\n <br />\n to:\n <br />\n {formatShortDateTime(rescheduledStartsAt)} - {formatShortDateTime(rescheduledEndsAt)}.\n <br />\n <br />\n Add a message below if you want to send an email to {clientName}:\n </p>\n <TextArea\n placeholder=\"Type in your message here...\"\n rows=\"4\"\n onChange={(e) => setPractitionerNote(e.target.value)}\n value={practitionerNote}\n />\n </AnimatedModal>\n )\n}\n","export const UPSERT_BOOKABLE_EVENT_TYPE_MUTATION = `\n mutation UpsertBookableEventType(\n $id: ID,\n $name: String!,\n $description: String,\n $instructions: String,\n $capacity: Int,\n $amountCents: Int,\n $location: String!,\n $kind: String!,\n $slug: String!\n ) {\n upsertBookableEventType(\n id: $id,\n name: $name,\n description: $description,\n instructions: $instructions,\n capacity: $capacity,\n amountCents: $amountCents,\n location: $location,\n kind: $kind,\n slug: $slug\n ) {\n result\n errors\n bookableEventType {\n id name description instructions capacity amountCents location kind slug photoUrl url\n }\n }\n }\n`\n\nexport const UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION = `\n mutation UpdateBookableEventTypePhoto($handle: String!, $id: ID!) {\n updateBookableEventTypePhoto(handle: $handle, id: $id) { result errors photoUrl }\n }\n`\n\nexport const REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION = `\n mutation RemoveBookableEventTypePhoto($id: ID!) {\n removeBookableEventTypePhoto(id: $id) { result errors }\n }\n`\n\nexport const DELETE_BOOKABLE_EVENT_TYPE_MUTATION = `\n mutation DeleteBookableEventType($id: ID!) {\n deleteBookableEventType(id: $id) { result errors }\n }\n`\n","import React, { createContext, useCallback, useContext, useEffect, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport {\n DELETE_BOOKABLE_EVENT_TYPE_MUTATION,\n REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION,\n UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION,\n UPSERT_BOOKABLE_EVENT_TYPE_MUTATION\n} from \"./mutations\"\nimport { GET_BOOKABLE_EVENT_TYPES_QUERY } from \"./queries\"\n\nconst initialEventType = {\n name: \"\",\n description: \"\",\n instructions: \"\",\n amount: { cents: 0, currency: \"USD\" },\n capacity: null,\n kind: \"in_person\",\n location: \"\",\n slug: \"\"\n}\n\nexport const BookableEventTypesContext = createContext()\n\nexport const BookableEventTypesProvider = ({ children, bookableEventTypes: bookableEventTypesProp }) => {\n const [showFlyout, setShowFlyout] = useState(false)\n const [bookableEventType, setBookableEventType] = useState({ ...initialEventType })\n const [bookableEventTypes, setBookableEventTypes] = useState(bookableEventTypesProp || [])\n const [googlePlacesLoaded, setGooglePlacesLoaded] = useState(false)\n const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n\n // Only fetch event types if they are not provided - useful in the AppointmentFlyout\n const [{ data: fetchedEventTypesData, fetching: fetchingEventTypes }] = useQuery({\n query: GET_BOOKABLE_EVENT_TYPES_QUERY,\n pause: !!bookableEventTypesProp\n })\n\n const [{ fetching: upsertMutationFetching }, upsertBookableEventType] = useMutation(\n UPSERT_BOOKABLE_EVENT_TYPE_MUTATION\n )\n const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION)\n const [{ fetching: deleteMutationFetching }, deleteBookableEventType] = useMutation(\n DELETE_BOOKABLE_EVENT_TYPE_MUTATION\n )\n const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(\n REMOVE_BOOKABLE_EVENT_TYPE_PHOTO_MUTATION\n )\n\n const fetching =\n upsertMutationFetching ||\n photoMutationFetching ||\n deleteMutationFetching ||\n removePhotoMutationFetching ||\n fetchingEventTypes\n\n // Set the bookableEventTypes state if it was fetched\n useEffect(() => {\n if (fetchedEventTypesData?.bookableEventTypes && !bookableEventTypesProp) {\n setBookableEventTypes(fetchedEventTypesData.bookableEventTypes)\n }\n }, [fetchedEventTypesData, bookableEventTypesProp])\n\n // Initialize the Google Places API for the location field\n useEffect(() => {\n async function initPlaces() {\n await window.google.maps.importLibrary(\"places\")\n setGooglePlacesLoaded(true)\n }\n\n initPlaces()\n }, [])\n\n const updateBookableEventTypes = (newEventType) => {\n if (!bookableEventTypes) return\n\n setBookableEventTypes((prevEventTypes) => {\n const newEventTypes = [...prevEventTypes]\n const index = newEventTypes.findIndex((s) => s.id.toString() === newEventType.id.toString())\n\n if (index !== -1) {\n newEventTypes[index] = newEventType\n } else {\n newEventTypes.push(newEventType)\n }\n\n return newEventTypes\n })\n }\n\n const removeBookableEventTypeFromList = (id) => {\n setBookableEventTypes((prevEventTypes) => prevEventTypes.filter((eventType) => eventType.id !== id))\n }\n\n const resetEventType = useCallback(() => {\n setBookableEventType({ ...initialEventType })\n }, [])\n\n const editEventType = useCallback((eventType) => {\n setBookableEventType({ ...eventType })\n setShowFlyout(true)\n }, [])\n\n const addEventType = useCallback(() => {\n resetEventType()\n setShowFlyout(true)\n }, [resetEventType])\n\n const saveEventType = useCallback(async () => {\n const result = await upsertBookableEventType({ ...bookableEventType })\n\n // If success, update the bookableEventTypes state\n if (result?.data?.upsertBookableEventType?.result === \"success\") {\n updateBookableEventTypes(result.data.upsertBookableEventType.bookableEventType)\n }\n\n return result\n }, [upsertBookableEventType, bookableEventType])\n\n const value = {\n bookableEventTypes,\n setBookableEventTypes,\n showFlyout,\n setShowFlyout,\n bookableEventType,\n setBookableEventType,\n editEventType,\n addEventType,\n saveEventType,\n googlePlacesLoaded,\n fetching,\n upsertBookableEventType,\n updatePhoto,\n deleteBookableEventType,\n removePhoto,\n updateBookableEventTypes,\n deleteModalVisible,\n setDeleteModalVisible,\n removeBookableEventTypeFromList\n }\n\n return <BookableEventTypesContext.Provider value={value}>{children}</BookableEventTypesContext.Provider>\n}\n\nexport const useBookableEventTypes = () => useContext(BookableEventTypesContext)\n","export const GET_BOOKABLE_EVENT_TYPES_QUERY = `\n query GetBookableEventTypes {\n bookableEventTypes {\n id\n name\n description\n instructions\n capacity\n amountCents\n amountCurrency\n location\n kind\n photoUrl\n slug\n url\n }\n }\n`\n","import { ArrowTopRightOnSquareIcon } from \"@heroicons/react/24/solid\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { CheckBox, Label, Select, TimePicker } from \"../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useCalendarFlyout } from \"../../contexts/CalendarFlyoutContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { useBookableEventTypes } from \"../BookableEventTypes/BookableEventTypesContext\"\n\nimport { useBookableEvents } from \"./BookableEventsContext\"\n\nconst BookableEventForm = ({ onBookableEventChanged, onDeleteBookableEvent }) => {\n const {\n bookableEvent,\n setBookableEvent,\n getDefaultNewEvent,\n fetching,\n deleteBookableEvent,\n deleteModalVisible,\n setDeleteModalVisible,\n upsertBookableEvent\n } = useBookableEvents()\n const { bookableEventTypes, fetching: fetchingEventTypes } = useBookableEventTypes()\n const { showToast } = useToast()\n const { setShowFlyout } = useCalendarFlyout()\n\n const onSave = () => {\n upsertBookableEvent({ ...bookableEvent }).then((result) => {\n if (result?.data?.upsertBookableEvent?.result === \"success\") {\n const newEvent = result.data.upsertBookableEvent.bookableEvent\n onBookableEventChanged(newEvent)\n setBookableEvent(newEvent)\n setShowFlyout(false)\n showToast(`Your event was saved successfully`)\n } else {\n console.error(result)\n let errorMessage = \"There was an error saving your event\"\n if (result.data?.upsertBookableEvent?.errors) errorMessage += `: ${result.data.upsertBookableEvent.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n const handleEventTypeChange = (eventTypeId) => {\n if (eventTypeId) {\n setBookableEvent((prev) => ({\n ...prev,\n bookableEventTypeId: eventTypeId\n }))\n } else {\n setBookableEvent((prev) => ({ ...prev, bookableEventTypeId: null }))\n }\n }\n\n const editingExistingEvent = !!bookableEvent.id\n const selectedEventType = bookableEventTypes?.find(\n (et) => et.id.toString() === bookableEvent.bookableEventTypeId?.toString()\n )\n const saveEnabled = !fetching && bookableEvent.bookableEventTypeId\n const isLoading = fetching || fetchingEventTypes\n\n console.log(\"selectedEventType\", selectedEventType)\n\n if (isLoading) {\n return <LoadingSpinner className=\"py-12\" spinnerClassName=\"text-teal h-12 w-12\" />\n }\n\n return (\n <>\n <div className=\"mb-4 flex flex-col\">\n {bookableEventTypes && bookableEventTypes.length > 0 ? (\n <div className=\"mb-4\">\n <Label htmlFor=\"bookable-event-type\">Event Type</Label>\n <Select\n id=\"bookable-event-type\"\n disabled={!!bookableEvent.id}\n value={bookableEvent.bookableEventTypeId || \"\"}\n onChange={(e) => handleEventTypeChange(e.target.value)}>\n <option value=\"\">Select an event type</option>\n {bookableEventTypes.map((eventType) => (\n <option key={eventType.id} value={eventType.id}>\n {eventType.name}\n </option>\n ))}\n </Select>\n </div>\n ) : (\n <Typography variant=\"body\">\n No event types available. Please{\" \"}\n <a href=\"/portal/services#events\" className=\"text-teal hover:underline\">\n create an event type in the Services Page\n </a>\n .\n </Typography>\n )}\n\n {selectedEventType && (\n <>\n <div className=\"mt-4\">\n <Typography variant=\"body\" className=\"font-medium\">\n Event Details\n </Typography>\n <div className=\"mt-2 rounded bg-gray-light p-3\">\n <Typography variant=\"body\">\n <span className=\"font-medium\">Name:</span> {selectedEventType.name}\n </Typography>\n {selectedEventType.description && (\n <Typography variant=\"body\" className=\"mt-1\">\n <span className=\"font-medium\">Description:</span> {selectedEventType.description}\n </Typography>\n )}\n <Typography variant=\"body\" className=\"mt-1\">\n <span className=\"font-medium\">Location:</span> {selectedEventType.location || \"Virtual\"}\n </Typography>\n {selectedEventType.amountCents > 0 && (\n <Typography variant=\"body\" className=\"mt-1\">\n <span className=\"font-medium\">Price:</span> ${(selectedEventType.amountCents / 100).toFixed(2)}\n </Typography>\n )}\n {selectedEventType.capacity && (\n <Typography variant=\"body\" className=\"mt-1\">\n <span className=\"font-medium\">Capacity:</span> {selectedEventType.capacity}\n </Typography>\n )}\n {selectedEventType.url && (\n <Typography variant=\"body\" className=\"mt-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">Link to book:</span>{\" \"}\n <a href={selectedEventType.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n </a>\n </div>\n </Typography>\n )}\n </div>\n </div>\n\n <div className=\"mt-2\">\n <CheckBox\n id=\"all-day-checkbox\"\n label=\"All-Day\"\n name=\"All-Day\"\n checked={bookableEvent.allDay}\n onChange={() => {\n if (!bookableEvent.allDay) {\n const startsAt = dayjs(bookableEvent.startsAt)\n .tz(bookableEvent.timeZone)\n .startOf(\"day\")\n .toISOString()\n const endsAt = dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone).endOf(\"day\").toISOString()\n setBookableEvent((event) => ({ ...event, allDay: !event.allDay, startsAt, endsAt }))\n } else {\n setBookableEvent((event) => ({\n ...event,\n allDay: !event.allDay,\n startsAt: getDefaultNewEvent().startsAt,\n endsAt: getDefaultNewEvent().endsAt\n }))\n }\n }}\n />\n </div>\n </>\n )}\n </div>\n\n {selectedEventType && bookableEvent.timeZone && (\n <>\n <div className=\"flex flex-row justify-between gap-4\">\n <div className=\"mb-4 flex w-1/2 flex-col\">\n <Label>Start date</Label>\n <DatePicker\n className=\"w-full\"\n selected={new Date(dayjs(bookableEvent.startsAt).tz(bookableEvent.timeZone))}\n onChange={(date) =>\n setBookableEvent((event) => {\n const day = dayjs(date)\n const endsAt = day.add(1, \"hour\").toISOString()\n return { ...event, startsAt: date, endsAt }\n })\n }\n />\n </div>\n <div className=\"flex w-1/2 flex-col\">\n <Label>End date</Label>\n <DatePicker\n className=\"w-full\"\n selected={new Date(dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone))}\n onChange={(date) => setBookableEvent((event) => ({ ...event, endsAt: date }))}\n />\n </div>\n </div>\n {!bookableEvent.allDay && (\n <div className=\"flex flex-row justify-between gap-4\">\n <div className=\"w-1/2\">\n <Label htmlFor=\"bookable-event-start-time\">Start time</Label>\n <TimePicker\n id=\"bookable-event-start-time\"\n value={dayjs(bookableEvent.startsAt).tz(bookableEvent.timeZone).format(\"HH:mm\")}\n valueFormat=\"HH:mm\"\n showFifteenIncrements={true}\n onChange={(e) => {\n const [hour, minute] = e.target.value.split(\":\")\n const duration = dayjs(bookableEvent.endsAt).diff(dayjs(bookableEvent.startsAt), \"minute\")\n setBookableEvent((event) => ({\n ...event,\n startsAt: dayjs(event.startsAt).set(\"hour\", hour).set(\"minute\", minute).toDate(),\n endsAt: dayjs(event.startsAt)\n .set(\"hour\", hour)\n .set(\"minute\", minute)\n .add(duration, \"minute\")\n .toDate()\n }))\n }}\n />\n </div>\n <div className=\"w-1/2\">\n <Label htmlFor=\"bookable-event-end-time\">End time</Label>\n <TimePicker\n id=\"bookable-event-end-time\"\n value={dayjs(bookableEvent.endsAt).tz(bookableEvent.timeZone).format(\"HH:mm\")}\n valueFormat=\"HH:mm\"\n showFifteenIncrements={true}\n onChange={(e) => {\n const [hour, minute] = e.target.value.split(\":\")\n setBookableEvent((event) => ({\n ...event,\n endsAt: dayjs(event.endsAt).set(\"hour\", hour).set(\"minute\", minute).toDate()\n }))\n }}\n />\n </div>\n </div>\n )}\n <div className=\"mt-4\">\n <Label htmlFor=\"time-zone\">Time zone</Label>\n <Select\n value={bookableEvent.timeZone}\n onChange={(e) =>\n setBookableEvent((event) => {\n const startsAt = dayjs(event.startsAt)\n .tz(e.target.value)\n .set(\"hour\", dayjs(event.startsAt).tz(event.timeZone).get(\"hour\"))\n .set(\"minute\", dayjs(event.startsAt).tz(event.timeZone).get(\"minute\"))\n .toISOString()\n const endsAt = dayjs(event.endsAt)\n .tz(e.target.value)\n .set(\"hour\", dayjs(event.endsAt).tz(event.timeZone).get(\"hour\"))\n .set(\"minute\", dayjs(event.endsAt).tz(event.timeZone).get(\"minute\"))\n .toISOString()\n return {\n ...event,\n timeZone: e.target.value,\n startsAt,\n endsAt\n }\n })\n }\n id=\"time-zone\">\n {Intl.supportedValuesOf(\"timeZone\").map((tz) => (\n <option key={tz} value={tz}>\n {tz}\n </option>\n ))}\n </Select>\n </div>\n </>\n )}\n\n <div className=\"mt-8 flex justify-between\">\n {editingExistingEvent && (\n <Button onClick={() => setDeleteModalVisible(true)} type=\"warning\" size=\"small\">\n Delete\n </Button>\n )}\n <Button disabled={!saveEnabled} onClick={onSave} type=\"primary\" size=\"small\">\n Save\n </Button>\n </div>\n\n {/* Delete Modal */}\n <AnimatedModal\n header=\"Delete event\"\n visible={deleteModalVisible}\n hideModal={() => setDeleteModalVisible(false)}\n actionButtonCopy=\"Yes, delete\"\n actionButtonType=\"destructive\"\n saveDisabled={fetching}\n onSave={() => {\n deleteBookableEvent({ id: bookableEvent.id }).then((result) => {\n if (result?.data?.deleteBookableEvent?.result === \"success\") {\n if (onDeleteBookableEvent) onDeleteBookableEvent(bookableEvent)\n\n setDeleteModalVisible(false)\n setShowFlyout(false)\n showToast(`Your event was deleted successfully`)\n } else {\n console.error(result)\n let errorMessage = \"There was an error deleting your event\"\n if (result.data?.deleteBookableEvent?.errors)\n errorMessage += `: ${result.data.deleteBookableEvent.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }}\n showFooter={true}>\n <p>Are you sure you want to delete this event?</p>\n </AnimatedModal>\n </>\n )\n}\n\nexport default BookableEventForm\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { Button } from \"./Buttons\"\nimport { NewModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst DELETE_CLIENT_MUTATION = `\n mutation DeleteClient($clientId: ID!) {\n deleteClient(clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nexport default function DeleteClientModal({ client, deleteModalId, onSuccess }) {\n const { showToast } = useToast()\n const [, deleteClient] = useMutation(DELETE_CLIENT_MUTATION)\n\n const [loading, setLoading] = useState(false)\n\n return (\n <NewModal id={deleteModalId} header=\"Delete client now\" showFooter={false}>\n <div className=\"pb-24\">\n <Typography variant=\"body\" as=\"p\">\n This will remove the client{\" \"}\n <span className=\"font-semibold\">\n {client?.firstName} {client?.lastName}\n </span>{\" \"}\n from your account now. This action can't be undone.\n </Typography>\n <div className=\"absolute inset-x-0 bottom-0 flex justify-end border-t border-gray-light bg-white p-8 sm:bottom-12\">\n <Button\n type=\"tertiary\"\n className=\"mr-4\"\n onClick={() => {\n NiceModal.remove(deleteModalId)\n }}>\n No, don't delete\n </Button>\n <Button\n type=\"destructive\"\n loading={loading}\n onClick={() => {\n setLoading(true)\n deleteClient({ clientId: client.id }).then((result) => {\n if (result.error || result.data.deleteClient.errors) {\n showToast({\n content: `Payment could not be processed: ${result.error || result.data.editClient.errors}`,\n type: \"error\"\n })\n setLoading(false)\n } else {\n setLoading(false)\n NiceModal.remove(deleteModalId)\n showToast(\"Client deleted successfully. \")\n onSuccess()\n }\n })\n }}>\n Yes, delete\n </Button>\n </div>\n </div>\n </NewModal>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPhone, isClientValid } from \"../../utils/utils\"\n\nimport { Button } from \"./Buttons\"\nimport DeleteClientModal from \"./DeleteClientModal\"\nimport { Input, Label, InputWithLabel } from \"./Inputs\"\nimport { NewModal } from \"./Modal\"\n\nconst EDIT_CLIENT_MUTATION = `\n mutation EditClient($clientId: ID!, $fields: ClientInput!) {\n editClient(clientId: $clientId, fields: $fields) {\n result\n errors\n }\n }\n`\n\nexport default function EditClientModal({ client, modalId, deleteModalId, onSuccess }) {\n const { showToast } = useToast()\n const [, editClient] = useMutation(EDIT_CLIENT_MUTATION)\n const [error, setError] = useState(null)\n const [loading, setLoading] = useState(false)\n const [clientInput, setClientInput] = useState({\n email: client?.email,\n phone: client?.phone,\n firstName: client?.firstName,\n lastName: client?.lastName,\n address: client?.address,\n addressTwo: client?.addressTwo,\n city: client?.city,\n state: client?.state,\n postalCode: client?.postalCode,\n country: client?.country\n })\n\n useEffect(() => {\n if (client) {\n setClientInput({\n email: client?.email,\n phone: client?.phone,\n firstName: client?.firstName,\n lastName: client?.lastName,\n address: client?.address,\n addressTwo: client?.addressTwo,\n city: client?.city,\n state: client?.state,\n postalCode: client?.postalCode,\n country: client?.country\n })\n }\n }, [client])\n\n return (\n <>\n <NewModal id={modalId} fullHeightInMobile={true} header=\"Edit client\">\n <div className=\"pb-24\">\n {error && <p className=\"text-red\">{error}</p>}\n <Label className=\"mt-4\">Full name</Label>\n <div className=\"flex flex-row\">\n <Input\n placeholder=\"First\"\n id=\"client-first-name-edit\"\n defaultValue={clientInput.firstName}\n onChange={(input) => setClientInput({ ...clientInput, firstName: input.target.value })}\n className=\"relative -mr-1 mb-4 rounded-none rounded-l-lg hover:z-20 focus:z-20\"\n />\n <Input\n placeholder=\"Last\"\n id=\"client-last-name-edit\"\n defaultValue={clientInput.lastName}\n onChange={(input) => setClientInput({ ...clientInput, lastName: input.target.value })}\n className=\"relative mb-4 rounded-none rounded-r-lg hover:z-20 focus:z-20\"\n />\n </div>\n\n <InputWithLabel\n label=\"Email\"\n id=\"client-email-edit\"\n placeholder=\"Email\"\n onChange={(input) => {\n setClientInput({ ...clientInput, email: input.target.value })\n }}\n value={clientInput?.email ? clientInput.email : \"\"}\n className=\"mb-4\"\n labelClassName=\"mb-2\"\n />\n\n <InputWithLabel\n label=\"Phone\"\n id=\"client-phone-edit\"\n placeholder=\"Phone\"\n onChange={(input) => {\n setClientInput({ ...clientInput, phone: input.target.value })\n }}\n value={clientInput?.phone ? formatPhone(clientInput.phone) : \"\"}\n className=\"mb-4 w-1/2\"\n labelClassName=\"mb-2\"\n />\n\n <InputWithLabel\n label=\"Address\"\n id=\"client-address-edit\"\n placeholder=\"Address\"\n onChange={(input) => {\n setClientInput({ ...clientInput, address: input.target.value })\n }}\n value={clientInput?.address || \"\"}\n className=\"mb-4\"\n labelClassName=\"mb-2\"\n />\n\n <InputWithLabel\n label=\"Address Line 2\"\n id=\"client-address-two-edit\"\n placeholder=\"Apartment, suite, etc.\"\n onChange={(input) => {\n setClientInput({ ...clientInput, addressTwo: input.target.value })\n }}\n value={clientInput?.addressTwo || \"\"}\n className=\"mb-4\"\n labelClassName=\"mb-2\"\n />\n\n <div className=\"mb-4 flex flex-row gap-4\">\n <InputWithLabel\n label=\"City\"\n id=\"client-city-edit\"\n placeholder=\"City\"\n onChange={(input) => {\n setClientInput({ ...clientInput, city: input.target.value })\n }}\n value={clientInput?.city || \"\"}\n className=\"flex-1\"\n labelClassName=\"mb-2\"\n />\n\n <InputWithLabel\n label=\"State/Province\"\n id=\"client-state-edit\"\n placeholder=\"State\"\n onChange={(input) => {\n setClientInput({ ...clientInput, state: input.target.value })\n }}\n value={clientInput?.state || \"\"}\n className=\"flex-1\"\n labelClassName=\"mb-2\"\n />\n </div>\n\n <div className=\"mb-4 flex flex-row gap-4\">\n <InputWithLabel\n label=\"Postal Code\"\n id=\"client-postal-code-edit\"\n placeholder=\"Postal Code\"\n onChange={(input) => {\n setClientInput({ ...clientInput, postalCode: input.target.value })\n }}\n value={clientInput?.postalCode || \"\"}\n className=\"flex-1\"\n labelClassName=\"mb-2\"\n />\n\n <InputWithLabel\n label=\"Country\"\n id=\"client-country-edit\"\n placeholder=\"Country\"\n onChange={(input) => {\n setClientInput({ ...clientInput, country: input.target.value })\n }}\n value={clientInput?.country || \"\"}\n className=\"flex-1\"\n labelClassName=\"mb-2\"\n />\n </div>\n\n <div className=\"absolute inset-x-0 bottom-0 flex justify-between border-t border-gray-light bg-white p-8 sm:bottom-12\">\n <Button\n type=\"warning\"\n onClick={() => {\n NiceModal.show(deleteModalId)\n }}>\n Delete\n </Button>\n <div className=\"flex w-full items-center justify-end gap-4\">\n <Button\n type=\"tertiary\"\n onClick={() => {\n NiceModal.remove(modalId)\n }}>\n Cancel\n </Button>\n <Button\n type=\"primary\"\n loading={loading}\n disabled={!isClientValid}\n onClick={() => {\n setLoading(true)\n editClient({ clientId: client.id, fields: clientInput }).then((result) => {\n if (result.error || result.data.editClient.errors) {\n setError(`Error updating client: ${result.error || result.data.editClient.errors}`)\n } else {\n setError(null)\n showToast(\"Client edited successfully. \")\n NiceModal.remove(modalId)\n onSuccess(clientInput)\n }\n setLoading(false)\n })\n }}>\n Save\n </Button>\n </div>\n </div>\n </div>\n </NewModal>\n <DeleteClientModal client={client} onSuccess={onSuccess} deleteModalId={deleteModalId} />\n </>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState, useEffect, useRef } from \"react\"\nimport { components } from \"react-select\"\nimport Creatable from \"react-select/creatable\"\nimport { useQuery } from \"urql\"\n\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { selectStyling, formatPhone, urqlClient } from \"../../../utils/utils\"\nimport EditClientModal from \"../../shared/EditClientModal\"\nimport { InputWithLabel } from \"../../shared/Inputs\"\nimport { Banner } from \"../../shared/Layout\"\nimport { Link } from \"../../shared/Links\"\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\n\nconst CLIENTS_QUERY = `\n query clientsQuery {\n clients {\n id\n practiceId\n userId\n email\n phone\n firstName\n lastName\n clientType\n invitedFrom\n }\n }\n`\n\nconst CLIENT_DETAILS_QUERY = `\n query clientDetailsQuery($clientId: ID!) {\n client(clientId: $clientId) {\n id\n openPackages { \n id \n createdAt \n name \n sessionsRemaining \n serviceId \n }\n lastBookedService { \n id \n }\n customPrices { \n id \n amountCents \n serviceId \n }\n }\n }\n`\n\nconst CustomOption = ({ data, setClientToEdit, ...restProps }) => {\n const { name, label, value, contactInfo, preventBooking, __isNew__ } = data\n\n return (\n <components.Option {...restProps}>\n <div>\n {__isNew__ ? <>{label}</> : <>{name}</>}\n\n <span className=\"block text-sm text-gray-dark\">\n {preventBooking ? (\n <span>\n No email or phone on file{\" \"}\n <Link\n className=\"font-semibold\"\n onClick={() => {\n const [firstName, lastName] = name.split(\" \")\n\n setClientToEdit({\n id: value,\n firstName: firstName,\n lastName: lastName\n })\n NiceModal.show(\"edit-client-appointment\")\n }}>\n Add either to book a session\n </Link>\n </span>\n ) : (\n contactInfo\n )}\n </span>\n </div>\n </components.Option>\n )\n}\n\nexport default function ClientSelector({ defaultClient, onSelect }) {\n const [{ data, error }, reexecuteQuery] = useQuery({\n query: CLIENTS_QUERY,\n requestPolicy: \"cache-and-network\"\n })\n\n const [clientList, setClientList] = useState([])\n const [newClient, setNewClient] = useState(false)\n const [selectedClient, setSelectedClient] = useState(defaultClient)\n const [listValue, setListValue] = useState()\n const [clientToEdit, setClientToEdit] = useState()\n const [isLoadingDetails, setIsLoadingDetails] = useState(false)\n\n const { practicePhone, practiceEmail } = usePractice()\n\n let clientPhone = formatPhone(selectedClient?.phone)\n if (clientPhone) {\n clientPhone = clientPhone.startsWith(\"+1\") || clientPhone.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n }\n\n const DropdownIndicator = (props) => (\n <components.DropdownIndicator {...props}>\n <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" aria-hidden=\"true\" />\n </components.DropdownIndicator>\n )\n\n const WrappedCustomOption = (props) => <CustomOption {...props} setClientToEdit={setClientToEdit} />\n\n useEffect(() => {\n if (data && data.clients) {\n setClientList(data.clients)\n\n if (defaultClient) {\n setListValue({\n value: defaultClient.id,\n name: `${defaultClient.firstName} ${defaultClient.lastName}`,\n label: `${defaultClient.firstName} ${defaultClient.lastName}\n <span class='block text-sm text-gray-dark'>${\n formatPhone(defaultClient.phone) ? formatPhone(defaultClient.phone) : defaultClient.email\n } </span>`\n })\n }\n }\n }, [data])\n\n useEffect(() => {\n if (clientList.length > 0) {\n const params = new URLSearchParams(window.location.search)\n const clientId = params.get(\"clientId\")\n if (clientId) {\n onSelect(clientList.find((client) => client.id === clientId))\n window.history.replaceState({}, \"\", window.location.pathname)\n }\n }\n }, [clientList])\n\n if (error) {\n console.log(error)\n }\n\n const ref = useRef(null)\n\n const enrichClientWithDetails = (client) => {\n if (!client) return\n\n setIsLoadingDetails(true)\n urqlClient\n .query(CLIENT_DETAILS_QUERY, { clientId: client.id })\n .toPromise()\n .then((result) => {\n const clientDetailsData = result.data\n if (clientDetailsData?.client) {\n const enrichedClient = {\n ...client,\n ...clientDetailsData.client\n }\n onSelect(enrichedClient)\n }\n })\n .finally(() => {\n setIsLoadingDetails(false)\n })\n }\n\n return (\n <div className=\"mb-4\">\n {newClient ? (\n <div className=\"grid grid-cols-2 gap-2\">\n <InputWithLabel\n label=\"First name\"\n value={selectedClient.firstName}\n onChange={(e) => setSelectedClient({ ...selectedClient, firstName: e.target.value })}\n required\n />\n <InputWithLabel\n label=\"Last name\"\n value={selectedClient.lastName}\n onChange={(e) => setSelectedClient({ ...selectedClient, lastName: e.target.value })}\n required\n />\n <InputWithLabel\n label=\"Email\"\n value={selectedClient?.email ? selectedClient.email : \"\"}\n className=\"mt-2\"\n onChange={(e) => {\n setSelectedClient({ ...selectedClient, email: e.target.value })\n onSelect({ ...selectedClient, email: e.target.value })\n }}\n />\n <InputWithLabel\n label=\"Phone\"\n className=\"mt-2\"\n onChange={(e) => {\n setSelectedClient({ ...selectedClient, phone: e.target.value })\n onSelect({ ...selectedClient, phone: e.target.value })\n }}\n value={selectedClient?.phone ? formatPhone(selectedClient.phone) : \"\"}\n disabled={!newClient}\n required\n />\n </div>\n ) : (\n <div className=\"relative\">\n <Creatable\n id=\"client-select\"\n placeholder=\"Type to select or create client\"\n formatCreateLabel={(inputValue) => `Create new client \"${inputValue}\"`}\n components={{ DropdownIndicator, Option: WrappedCustomOption }}\n options={clientList.map((client) => {\n let name = client.firstName\n if (client.lastName) name += ` ${client.lastName}`\n const preventBooking = !client.phone && !client.email\n const contactInfo = formatPhone(client.phone) ? formatPhone(client.phone) : client.email\n\n return {\n value: client.id,\n name: name,\n label: name,\n contactInfo,\n preventBooking,\n isDisabled: preventBooking\n }\n })}\n onChange={(clientFromSelect) => {\n const fullClient = clientList.find((client) => client.id === clientFromSelect.value)\n setSelectedClient(fullClient)\n setListValue(clientFromSelect)\n enrichClientWithDetails(fullClient)\n }}\n value={listValue}\n menuPortalTarget={document.body}\n formatOptionLabel={(option, { context }) => (\n <div className=\"flex items-center justify-between\">\n {context === \"menu\" ? (\n <span className=\"block font-manrope text-base\" dangerouslySetInnerHTML={{ __html: option.label }} />\n ) : (\n <>\n <span className=\"font-manrope text-base\" dangerouslySetInnerHTML={{ __html: option.name }} />\n {isLoadingDetails && <LoadingSpinner className=\"p-0\" spinnerClassName=\"h-4 w-4\" />}\n </>\n )}\n </div>\n )}\n styles={selectStyling()}\n onCreateOption={(e) => {\n const client = {\n firstName: e.split(\" \")[0],\n lastName: e.split(\" \")[1],\n email: \"\",\n phone: \"\",\n clientType: \"invited\",\n invitedFrom: \"web_appointment_invite\"\n }\n setNewClient(true)\n setSelectedClient(client)\n onSelect(client)\n }}\n ref={ref}\n />\n </div>\n )}\n\n {clientPhone === practicePhone && !!practicePhone && (\n <Banner type=\"error\">\n Cannot use your phone number for a client.\n {newClient ? (\n <> Please leave blank and add email if client phone is unknown.</>\n ) : (\n <>\n {\" \"}\n Please edit this client in the{\" \"}\n <a className=\"cursor-pointer underline hover:text-gray\" href=\"/portal/clients\">\n client directory\n </a>{\" \"}\n before booking.\n </>\n )}\n </Banner>\n )}\n {selectedClient?.email?.trim() === practiceEmail && (\n <Banner type=\"error\">\n Cannot use your email for a client.\n {newClient ? (\n <> Please add phone for client or use a placeholder email.</>\n ) : (\n <>\n {\" \"}\n Please edit this client in the{\" \"}\n <a className=\"underline hover:text-gray\" href=\"/portal/clients\">\n client directory\n </a>{\" \"}\n before booking.\n </>\n )}\n </Banner>\n )}\n <EditClientModal\n client={clientToEdit}\n onSuccess={reexecuteQuery}\n key={clientToEdit?.id}\n modalId=\"edit-client-appointment\"\n deleteModalId=\"delete-client-appointment\"\n />\n </div>\n )\n}\n","export const BOOKABLE_EVENT_REGISTRANTS_QUERY = `\n query BookableEvent($id: ID!) {\n bookableEvent(id: $id) {\n clients {\n id\n firstName\n lastName\n email\n phone\n }\n }\n }\n`\n\nexport const BOOKABLE_EVENT_REGISTRATION_QUERY = `\n query BookableEventRegistration($bookableEventId: ID!, $clientId: ID!) {\n bookableEventRegistration(bookableEventId: $bookableEventId, clientId: $clientId) {\n id\n amountCents\n createdAt\n paymentStatus\n discount {\n code\n amountCents\n }\n }\n }\n`\n\nexport const DEFAULT_PAYMENT_METHOD_QUERY = `\n query DefaultPaymentMethod($clientId: ID!, $practiceId: ID!) {\n defaultPaymentMethodPractice(clientId: $clientId, practiceId: $practiceId) {\n brand\n last4\n expMonth\n expYear\n }\n }\n`\n","import React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { PROCESS_REGISTRATION_PAYMENT_MUTATION } from \"./mutations\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"./queries\"\n\nexport default function BookableEventPaymentModal({ visible, hideModal, client, registration, onPaymentSuccess }) {\n const [paymentMethod, setPaymentMethod] = useState(\"saved_card\")\n const [processingPayment, setProcessingPayment] = useState(false)\n const [paymentError, setPaymentError] = useState(null)\n const { practice } = usePractice()\n const { showToast } = useToast()\n\n const [{ data: paymentMethodData, fetching: fetchingPaymentMethod }] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: client?.id,\n practiceId: practice.id\n }\n })\n\n const [, processPayment] = useMutation(PROCESS_REGISTRATION_PAYMENT_MUTATION)\n\n const defaultPaymentMethod = paymentMethodData?.defaultPaymentMethodPractice\n const hasSavedCard = !!defaultPaymentMethod\n\n const handlePaymentMethodChange = (e) => {\n setPaymentMethod(e.target.value)\n }\n\n const handleProcessPayment = async () => {\n setProcessingPayment(true)\n setPaymentError(null)\n\n try {\n const result = await processPayment({\n registrationId: registration.id\n })\n\n if (result.data?.processRegistrationPayment?.result === \"success\") {\n showToast(\"Payment processed successfully\")\n hideModal()\n onPaymentSuccess()\n } else {\n const errorMessage = result.data?.processRegistrationPayment?.errors?.[0] || \"Payment processing failed\"\n setPaymentError(errorMessage)\n }\n } catch (err) {\n setPaymentError(err.message || \"An unexpected error occurred\")\n } finally {\n setProcessingPayment(false)\n }\n }\n\n const formatCurrency = (amountCents) => `$${(amountCents / 100).toFixed(2)}`\n\n if (!registration || fetchingPaymentMethod) {\n return (\n <AnimatedModal visible={visible} hideModal={hideModal} header=\"Process Payment\">\n <div className=\"py-4\">\n <LoadingSpinner />\n </div>\n </AnimatedModal>\n )\n }\n\n return (\n <AnimatedModal\n visible={visible}\n hideModal={hideModal}\n header=\"Process Payment\"\n showFooter={true}\n cancelButtonCopy=\"Cancel\"\n cancelButtonType=\"tertiary\"\n actionButtonCopy={processingPayment ? \"Processing...\" : \"Process Payment\"}\n actionButtonType=\"primary\"\n saveDisabled={processingPayment || (paymentMethod === \"saved_card\" && !hasSavedCard)}\n onSave={handleProcessPayment}>\n <div className=\"py-4\">\n <div className=\"mb-6\">\n <Typography variant=\"body\">\n Process payment for{\" \"}\n <strong>\n {client?.firstName} {client?.lastName}\n </strong>\n </Typography>\n <Typography variant=\"body\" className=\"mt-2\">\n Amount: <strong>{formatCurrency(registration.amountCents)}</strong>\n </Typography>\n </div>\n\n <div className=\"mb-6\">\n <Typography variant=\"body\" className=\"mb-3 font-semibold\">\n Select Payment Method\n </Typography>\n\n <RadioWithLabel\n id=\"saved_card\"\n name=\"payment_method\"\n label={\n hasSavedCard\n ? `Use saved card (${defaultPaymentMethod.brand} ending in ${defaultPaymentMethod.last4})`\n : \"No saved card available\"\n }\n checked={paymentMethod === \"saved_card\"}\n onChange={handlePaymentMethodChange}\n value=\"saved_card\"\n disabled={!hasSavedCard}\n className=\"mb-3\"\n />\n\n <RadioWithLabel\n id=\"new_card\"\n name=\"payment_method\"\n label=\"Add a new card\"\n checked={paymentMethod === \"new_card\"}\n onChange={handlePaymentMethodChange}\n value=\"new_card\"\n className=\"mb-3\"\n />\n\n {paymentMethod === \"new_card\" && <PaymentProviderCardForm practice={practice} />}\n </div>\n\n {paymentError && (\n <Banner type=\"error\" className=\"mb-4\">\n {paymentError}\n </Banner>\n )}\n </div>\n </AnimatedModal>\n )\n}\n","import { ArrowTopRightOnSquareIcon, CreditCardIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\n\nimport BookableEventPaymentModal from \"./BookableEventPaymentModal\"\nimport { REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION } from \"./mutations\"\nimport { BOOKABLE_EVENT_REGISTRATION_QUERY } from \"./queries\"\n\nexport default function ClientDetailsFlyout({ visible, closeFlyout, client, bookableEventId, onClientRemoved }) {\n const [removeError, setRemoveError] = useState(null)\n const [{ fetching: removeFetching }, removeClientFromEvent] = useMutation(REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION)\n const [showRemoveConfirmation, setShowRemoveConfirmation] = useState(false)\n const [showPaymentModal, setShowPaymentModal] = useState(false)\n const { practice } = usePractice()\n\n const [{ data: registrationData, fetching: registrationFetching, error: registrationError }, reexecuteQuery] =\n useQuery({\n query: BOOKABLE_EVENT_REGISTRATION_QUERY,\n variables: {\n bookableEventId,\n clientId: client?.id\n },\n pause: !visible || !client?.id\n })\n\n const registration = registrationData?.bookableEventRegistration\n\n const formatCurrency = (amountCents) => `$${(amountCents / 100).toFixed(2)}`\n\n const getPaymentStatusDisplay = () => {\n if (!registration) return { label: \"Unknown\", color: \"gray-dark\" }\n\n switch (registration.paymentStatus) {\n case \"free\":\n return { label: \"Free Event\", color: \"green\" }\n case \"paid\":\n return { label: \"Paid\", color: \"green\" }\n case \"upcoming\":\n return { label: \"Upcoming\", color: \"orange\" }\n case \"unpaid\":\n return { label: \"Payment Pending\", color: \"orange\" }\n case \"failed\":\n return { label: \"Payment Failed\", color: \"red\" }\n default:\n return { label: \"No Payment Required\", color: \"gray-dark\" }\n }\n }\n\n const canProcessPayment = () => {\n if (!registration) return false\n if (registration.amountCents === 0) return false // Free event\n if (registration.paymentStatus === \"paid\") return false // Already paid\n\n // Can process if payment is pending, failed, or none\n return [\"unpaid\", \"failed\", \"none\"].includes(registration.paymentStatus)\n }\n\n const paymentStatus = getPaymentStatusDisplay()\n\n const handleShowRemoveConfirmation = () => {\n setShowRemoveConfirmation(true)\n }\n\n const handleCancelRemove = () => {\n setShowRemoveConfirmation(false)\n setRemoveError(null)\n }\n\n const handleRemoveClient = async () => {\n if (!client) return\n\n setRemoveError(null)\n\n try {\n const result = await removeClientFromEvent({\n bookableEventId: bookableEventId,\n clientId: client.id\n })\n\n if (result.data?.removeClientFromBookableEvent?.result === \"success\") {\n setShowRemoveConfirmation(false)\n onClientRemoved()\n closeFlyout()\n } else {\n const errorMessage =\n result.data?.removeClientFromBookableEvent?.errors?.[0] || \"Failed to remove client from event\"\n setRemoveError(errorMessage)\n }\n } catch (err) {\n console.error(\"Error removing client:\", err)\n setRemoveError(err.message || \"An unexpected error occurred\")\n }\n }\n\n const handleShowPaymentModal = () => {\n setShowPaymentModal(true)\n }\n\n const handlePaymentSuccess = () => {\n reexecuteQuery({ requestPolicy: \"network-only\" })\n }\n\n return (\n <>\n <Flyout header=\"Client Details\" visible={visible} closeFlyout={closeFlyout}>\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"mb-2 font-semibold\">Client Information</h3>\n <div className=\"rounded-lg border border-gray-light p-4\">\n <div className=\"mb-2 flex items-center\">\n <span className=\"font-medium\">Name:</span>\n <span className=\"mx-1\">\n {client?.firstName} {client?.lastName}\n </span>\n <a\n href={`/portal/clients/${client?.id}`}\n className=\"ml-1 inline-flex items-center text-teal hover:text-teal-dark\"\n title=\"View client profile\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n </a>\n </div>\n <div className=\"mb-2\">\n <span className=\"font-medium\">Email:</span> {client?.email || \"N/A\"}\n </div>\n <div>\n <span className=\"font-medium\">Phone:</span> {client?.phone || \"N/A\"}\n </div>\n </div>\n </div>\n\n <div>\n <h3 className=\"mb-2 font-semibold\">Payment Status</h3>\n {registrationFetching ? (\n <div className=\"flex justify-center py-4\">\n <LoadingSpinner />\n </div>\n ) : registrationError ? (\n <div className=\"rounded-lg border border-red p-4 text-red\">Error loading payment information</div>\n ) : (\n <div className=\"rounded-lg border border-gray-light p-4\">\n {!registration ? (\n <div className=\"text-center italic text-gray-dark\">Registration information not found</div>\n ) : (\n <>\n <div className=\"mb-2\">\n <span className=\"font-medium\">Status:</span>\n <span\n className={`ml-2 inline-block rounded-full px-2 py-0.5`}\n style={{ color: paymentStatus.color }}>\n {paymentStatus.label}\n </span>\n </div>\n <div className=\"mb-2\">\n <span className=\"font-medium\">Registration Date:</span>{\" \"}\n {registration.createdAt ? new Date(registration.createdAt).toLocaleDateString() : \"N/A\"}\n </div>\n {registration.amountCents > 0 && (\n <div className=\"mb-2\">\n <span className=\"font-medium\">Amount:</span> {formatCurrency(registration.amountCents)}\n </div>\n )}\n {registration.discount && (\n <>\n <div className=\"mb-2\">\n <span className=\"font-medium\">Discount Code:</span> {registration.discount.code}\n </div>\n <div className=\"mb-2\">\n <span className=\"font-medium\">Discount Amount:</span>{\" \"}\n {formatCurrency(registration.discount.amountCents)}\n </div>\n </>\n )}\n\n {canProcessPayment() && practice.hasPaymentProvider && (\n <div className=\"mt-4\">\n <Button\n type=\"secondary\"\n className=\"flex w-full items-center justify-center\"\n onClick={handleShowPaymentModal}>\n <CreditCardIcon className=\"mr-2 h-5 w-5\" />\n Process Payment\n </Button>\n </div>\n )}\n\n {canProcessPayment() && !practice.hasPaymentProvider && (\n <div className=\"mt-4 rounded bg-gray-ultralight p-3\">\n <p className=\"text-sm text-gray-dark\">\n To process payments, you need to connect a payment provider.{\" \"}\n <a href=\"/portal/settings/banking\" className=\"text-teal underline\">\n Connect payment provider\n </a>\n </p>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n\n <div className=\"pt-4\">\n <Button type=\"destructive\" onClick={handleShowRemoveConfirmation} className=\"w-full\">\n Remove Client from Event\n </Button>\n </div>\n </div>\n </Flyout>\n\n {/* Confirmation Modal */}\n <AnimatedModal\n visible={showRemoveConfirmation}\n hideModal={handleCancelRemove}\n header=\"Remove Client from Event\"\n showFooter={true}\n cancelButtonCopy=\"Cancel\"\n cancelButtonType=\"tertiary\"\n actionButtonCopy={removeFetching ? \"Removing...\" : \"Yes, Remove Client\"}\n actionButtonType=\"destructive\"\n saveDisabled={removeFetching}\n onSave={handleRemoveClient}>\n <div className=\"py-4\">\n <p className=\"mb-4\">\n Are you sure you want to remove{\" \"}\n <strong>\n {client?.firstName} {client?.lastName}\n </strong>{\" \"}\n from this event?\n </p>\n <p className=\"mb-4\">This action cannot be undone.</p>\n {removeError && <div className=\"mt-4 rounded border border-red p-3 text-red\">{removeError}</div>}\n </div>\n </AnimatedModal>\n\n {/* Payment Modal */}\n {client && registration && (\n <PaymentProviderWrapper practice={practice} client={client}>\n <BookableEventPaymentModal\n visible={showPaymentModal}\n hideModal={() => setShowPaymentModal(false)}\n client={client}\n registration={registration}\n onPaymentSuccess={handlePaymentSuccess}\n />\n </PaymentProviderWrapper>\n )}\n </>\n )\n}\n","import { PencilIcon } from \"@heroicons/react/24/outline\"\nimport React, { useMemo, useState } from \"react\"\nimport { useQuery, useMutation } from \"urql\"\n\nimport ClientSelector from \"../../components/pro_portal/calendar/ClientSelector\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { IconButton } from \"../../components/shared/Buttons\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\n\nimport { useBookableEvents } from \"./BookableEventsContext\"\nimport ClientDetailsFlyout from \"./ClientDetailsFlyout\"\nimport { ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION } from \"./mutations\"\nimport { BOOKABLE_EVENT_REGISTRANTS_QUERY } from \"./queries\"\n\nexport default function BookableEventRegistrants() {\n const { bookableEvent } = useBookableEvents()\n const [showAddClientModal, setShowAddClientModal] = useState(false)\n const [selectedClient, setSelectedClient] = useState(null)\n const [clientDetailsFlyoutVisible, setClientDetailsFlyoutVisible] = useState(false)\n\n const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n query: BOOKABLE_EVENT_REGISTRANTS_QUERY,\n variables: { id: bookableEvent.id }\n })\n\n const atCapacity = useMemo(\n () => bookableEvent.capacity && data?.bookableEvent?.clients?.length >= bookableEvent.capacity,\n [bookableEvent.capacity, data?.bookableEvent?.clients?.length]\n )\n\n const handleAddClient = () => {\n setShowAddClientModal(true)\n }\n\n const handleAddClientSuccess = () => {\n // Explicitly refetch the registrants data\n reexecuteQuery({ requestPolicy: \"network-only\" })\n setShowAddClientModal(false)\n }\n\n const handleEditClient = (client) => {\n setSelectedClient(client)\n setClientDetailsFlyoutVisible(true)\n }\n\n const handleClientRemoved = () => {\n reexecuteQuery({ requestPolicy: \"network-only\" })\n }\n\n return (\n <div>\n {fetching ? (\n <LoadingSpinner />\n ) : error ? (\n <p>Error loading registrants</p>\n ) : (\n <>\n <div className=\"mb-4 flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold\">Event Registrants</h3>\n <Button type=\"primary\" onClick={handleAddClient}>\n Add Client\n </Button>\n </div>\n {/* Show the capacity */}\n <div className=\"mb-4 text-sm text-gray-dark\">\n Capacity: {data?.bookableEvent?.clients?.length} taken / {bookableEvent?.capacity} max\n </div>\n <div className=\"border-t border-gray-light\">\n {data?.bookableEvent?.clients?.length > 0 ? (\n data.bookableEvent.clients.map((client) => (\n <div key={client.id} className=\"flex justify-between border-b border-gray-light py-2\">\n <div>\n {client.firstName} {client.lastName}\n </div>\n <div className=\"flex items-center\">\n <div className=\"mr-4 text-right\">\n <div>{client.email}</div>\n <div>{client.phone}</div>\n </div>\n <IconButton\n Icon={PencilIcon}\n onClick={() => handleEditClient(client)}\n tooltip=\"Edit registration\"\n />\n </div>\n </div>\n ))\n ) : (\n <div className=\"py-4 text-center text-gray-dark\">No registrants yet for this event.</div>\n )}\n </div>\n\n {/* Add client modal */}\n <AnimatedModal\n visible={showAddClientModal}\n hideModal={() => setShowAddClientModal(false)}\n header=\"Add Client to Event\">\n <AddClientToEvent\n bookableEventId={bookableEvent.id}\n onSuccess={handleAddClientSuccess}\n onCancel={() => setShowAddClientModal(false)}\n reexecuteQuery={reexecuteQuery}\n atCapacity={atCapacity}\n />\n </AnimatedModal>\n\n {/* Client Details Flyout */}\n {selectedClient && (\n <ClientDetailsFlyout\n visible={clientDetailsFlyoutVisible}\n closeFlyout={() => setClientDetailsFlyoutVisible(false)}\n client={selectedClient}\n bookableEventId={bookableEvent.id}\n onClientRemoved={handleClientRemoved}\n />\n )}\n </>\n )}\n </div>\n )\n}\n\n// This component will handle adding a client to the event\nconst AddClientToEvent = ({ bookableEventId, onSuccess, onCancel, reexecuteQuery, atCapacity }) => {\n const [selectedClient, setSelectedClient] = useState(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(null)\n const [{ fetching }, addClientToEvent] = useMutation(ADD_CLIENT_TO_BOOKABLE_EVENT_MUTATION)\n\n const handleClientSelect = (client) => {\n setSelectedClient(client)\n }\n\n const handleAddClient = async () => {\n if (!selectedClient) {\n setError(\"Please select a client first\")\n return\n }\n\n setLoading(true)\n setError(null)\n\n try {\n // Determine if this is an existing client or a new one\n const variables = { bookableEventId }\n\n if (selectedClient.id) {\n // Existing client case\n variables.clientId = selectedClient.id\n } else {\n // New client case - we need to prepare the client params\n variables.clientParams = {\n firstName: selectedClient.firstName,\n lastName: selectedClient.lastName,\n email: selectedClient.email,\n phone: selectedClient.phone\n }\n }\n\n const result = await addClientToEvent(variables)\n\n if (result.data?.addClientToBookableEvent?.result === \"success\") {\n // First, explicitly refetch the registrants query to ensure fresh data\n if (reexecuteQuery) {\n reexecuteQuery({ requestPolicy: \"network-only\" })\n }\n onSuccess()\n } else {\n const errorMessage = result.data?.addClientToBookableEvent?.errors?.[0] || \"Failed to add client to event\"\n setError(errorMessage)\n }\n } catch (err) {\n setError(err.message || \"Failed to add client to event\")\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"py-4\">\n {/* Ensure dropdown appears above modal content with a higher z-index */}\n <div style={{ position: \"relative\", zIndex: 20000 }}>\n <ClientSelector defaultClient={null} onSelect={handleClientSelect} />\n </div>\n\n {atCapacity && (\n <Banner type=\"warning\">\n Just a reminder: this event is at capacity, but you can add more clients if you want.\n </Banner>\n )}\n\n {error && <div className=\"mt-2 text-red\">{error}</div>}\n\n <div className=\"mt-4 flex justify-end space-x-2\">\n <Button type=\"tertiary\" onClick={onCancel}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={handleAddClient} disabled={loading || !selectedClient || fetching}>\n {loading || fetching ? \"Adding...\" : \"Add Client\"}\n </Button>\n </div>\n </div>\n )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nconst CalendarEvent = ({ calendarEvent }) => (\n <div className=\"grid grid-cols-[auto,1fr] gap-4\">\n <div className=\"font-bold\">When</div>\n <div>\n {dayjs(calendarEvent.start).format(\"dddd, MMM Do, YYYY [at] h:mm A\")} -{\" \"}\n {dayjs(calendarEvent.end).format(\"h:mm A z\")}\n </div>\n {calendarEvent.extendedProps.location && (\n <>\n <div className=\"font-bold\">Where</div>\n <div>{calendarEvent.extendedProps.location}</div>\n </>\n )}\n <div className=\"font-bold\">Calendar</div>\n <div>{calendarEvent.extendedProps.calendarName}</div>\n {calendarEvent.extendedProps.about && (\n <>\n <div className=\"font-bold\">About</div>\n <div>{calendarEvent.extendedProps.about}</div>\n </>\n )}\n </div>\n)\n\nexport default CalendarEvent\n","export const PAYMENT_STATUS_OPTIONS = {\n FREE: \"Free\",\n PAID: \"Paid\",\n PAST_DUE: \"Past due\",\n FAILED: \"Failed\",\n CARD_NEEDED: \"Card needed\",\n CARD_NEEDED_PAST_DUE: \"Card needed past due\",\n PENDING: \"Pending\",\n CANCELLED: \"Cancelled\",\n UNPAID: \"Unpaid\"\n}\n\nexport const paymentProviderName = (appointment) => {\n switch (appointment?.paymentMethod) {\n case \"stripe\":\n return \"Stripe\"\n case \"square\":\n return \"Square\"\n case \"paypal\":\n return \"PayPal\"\n case \"venmo\":\n return \"Venmo\"\n default:\n return null\n }\n}\n\nexport const isPaidOnProvider = (appointment) => appointment?.paymentIntentId !== null\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { isPaidOnProvider, paymentProviderName } from \"../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPrice } from \"../../utils/utils\"\n\nimport DatePicker from \"./DatePicker\"\nimport { Label, CurrencyInput, TextArea } from \"./Inputs\"\nimport { Banner } from \"./Layout\"\nimport { AnimatedModal } from \"./Modal\"\n\nconst CREATE_ADJUSTMENT = `\n mutation CreateAdjustment($appointmentId: ID, $adjustedAt: String!, $amountCents: Int, $note: String, ) {\n createAdjustment(appointmentId: $appointmentId, adjustedAt: $adjustedAt, amountCents: $amountCents, note: $note ) {\n result\n errors\n adjustment {\n id\n adjustedAt\n amountCents\n note\n }\n }\n }\n`\n\nexport default function AdjustmentModal({ showAdjustmentModal, hideModal }) {\n const { appointment, setAppointment } = useManualBooking()\n const [note, setNote] = useState()\n const [adjustmentDate, setAdjustmentDate] = useState(new Date())\n const [adjustmentAmount, setAdjustmentAmount] = useState(appointment?.fullTotal)\n const [loading, setLoading] = useState(false)\n\n const [, addAdjustment] = useMutation(CREATE_ADJUSTMENT)\n const { showToast } = useToast()\n\n const handleAmountChange = (amountCents) => {\n if (amountCents <= appointment.fullTotal) {\n setAdjustmentAmount(amountCents)\n } else {\n showToast({\n content: `Adjustment amount cannot exceed the refundable amount (${formatPrice(appointment.fullTotal)})`,\n type: \"error\"\n })\n }\n }\n\n return (\n <AnimatedModal\n visible={showAdjustmentModal}\n className=\"overflow-visible\"\n hideModal={hideModal}\n header=\"Add refund or adjustment\"\n actionButtonCopy={loading ? \"Adding...\" : \"Add\"}\n saveDisabled={loading}\n showFooter={true}\n overflowVisible={true}\n onSave={() => {\n setLoading(true)\n addAdjustment({\n appointmentId: appointment.id,\n adjustedAt: dayjs(adjustmentDate).format(\"YYYY-MM-DDTHH:mm:ssZ\"),\n amountCents: adjustmentAmount,\n note\n }).then((result) => {\n setLoading(false)\n if (result.data?.createAdjustment?.result === \"success\") {\n const newAdjustment = result.data.createAdjustment.adjustment\n const updatedAdjustments = [...(appointment.adjustments || []), newAdjustment].filter(\n (adj) => adj !== undefined\n )\n setAppointment({ ...appointment, adjustments: updatedAdjustments })\n showToast(\"Adjustment added \")\n } else {\n showToast({\n content: `We weren't able to add this adjustment: ${result.data.createAdjustment.errors.join()}`,\n type: \"error\"\n })\n }\n hideModal()\n })\n }}>\n <p className=\"mb-4\">You can note any refunds or adjustments to this payment here for your records.</p>\n {isPaidOnProvider(appointment) && (\n <Banner type=\"warning\" className=\"mb-4\">\n This payment was made via {paymentProviderName(appointment)}. This will issue a true refund.\n </Banner>\n )}\n <div className=\"mb-4 grid grid-cols-2 gap-4\">\n <div className=\"flex flex-col\">\n <Label>Refund amount</Label>\n <CurrencyInput\n placeholder=\"Amount\"\n id=\"adjustment-input\"\n value={adjustmentAmount}\n onChange={(amountCents) => handleAmountChange(amountCents)}\n />\n </div>\n <div className=\"flex flex-col\">\n <Label>Adjustment date</Label>\n <DatePicker className=\"w-full\" selected={adjustmentDate} onChange={(date) => setAdjustmentDate(date)} />\n </div>\n </div>\n <TextArea placeholder=\"Add a note here\" rows=\"2\" onChange={(e) => setNote(e.target.value)} value={note} />\n </AnimatedModal>\n )\n}\n","import { XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatDate, formatPrice } from \"../../utils/utils\"\n\nimport AdjustmentModal from \"./AdjustmentModal\"\nimport { Label } from \"./Inputs\"\nimport { UnderlinedLink } from \"./Links\"\nimport { AnimatedModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst REMOVE_ADJUSTMENT = `\n mutation RemoveAdjustment($adjustmentId: ID!) {\n removeAdjustment(adjustmentId: $adjustmentId) {\n result\n errors\n }\n }\n`\n\nexport default function AppointmentAdjustments() {\n const [showAdjustmentModal, setShowAdjustmentModal] = useState(false)\n const [showRemoveAdjustmentModal, setShowRemoveAdjustmentModal] = useState(false)\n const [adjustment, setAdjustment] = useState()\n const [loading, setLoading] = useState(false)\n const { showToast } = useToast()\n\n const { appointment, setAppointment } = useManualBooking()\n\n const isStripePayment = appointment?.paymentIntentId !== null\n\n const [, removeAdjustment] = useMutation(REMOVE_ADJUSTMENT)\n\n return (\n <>\n <div className=\"my-8 w-full border-t border-gray-light\" />\n <Label>Refunds / Adjustment</Label>\n <Typography className=\"my-2 block\" variant=\"small\">\n Record any refunds or adjustments to this payment.\n </Typography>\n {appointment?.adjustments?.length > 0 && (\n <ul className=\"list-disc \">\n {appointment.adjustments.map((adjustment) => (\n <li className=\"relative mb-4 ml-4\" key={adjustment.id}>\n <Typography variant=\"body\" as=\"p\" className=\"mb-0 text-sm\">\n {adjustment.amountCents >= 0 ? \"Refunded \" : \"Adjusted \"} {formatPrice(adjustment.amountCents)} on{\" \"}\n {formatDate(adjustment.adjustedAt)}{\" \"}\n </Typography>\n <Typography variant=\"body\" as=\"p\" className=\"text-sm text-gray-dark\">\n Note: {adjustment.note || \"No note provided\"}\n </Typography>\n {!isStripePayment && (\n <XMarkIcon\n onClick={() => {\n setAdjustment(adjustment)\n setShowRemoveAdjustmentModal(true)\n }}\n className=\"absolute right-1 top-2 h-6 w-6 cursor-pointer p-1 font-bold text-black\"\n />\n )}\n </li>\n ))}\n </ul>\n )}\n <UnderlinedLink onClick={() => setShowAdjustmentModal(true)} className=\"text-sm\">\n Add refund/adjustment\n </UnderlinedLink>\n {showAdjustmentModal && (\n <AdjustmentModal showAdjustmentModal={showAdjustmentModal} hideModal={() => setShowAdjustmentModal(false)} />\n )}\n {showRemoveAdjustmentModal && (\n <AnimatedModal\n visible={showRemoveAdjustmentModal}\n hideModal={() => setShowRemoveAdjustmentModal(false)}\n header=\"Remove adjustment?\"\n actionButtonCopy=\"Remove\"\n actionButtonType=\"warning\"\n saveDisabled={loading}\n showFooter={true}\n onSave={() => {\n setLoading(true)\n removeAdjustment({\n adjustmentId: adjustment.id\n }).then((result) => {\n setLoading(false)\n if (result.data?.removeAdjustment?.result === \"success\") {\n const updatedAdjustments = appointment.adjustments.filter((adj) => adj.id !== adjustment.id)\n setAppointment({ ...appointment, adjustments: updatedAdjustments })\n showToast(\"Adjustment removed \")\n } else {\n showToast({\n content: `We weren't able to remove this adjustment: ${result.data.removeAdjustment.errors.join()}`,\n type: \"error\"\n })\n }\n setShowRemoveAdjustmentModal(false)\n })\n }}>\n <div>\n <Typography variant=\"body\" as=\"p\" className=\"mb-0 text-sm\">\n {adjustment.amountCents >= 0 ? \"Refunded \" : \"Adjusted \"} {formatPrice(adjustment.amountCents)} on{\" \"}\n {formatDate(adjustment.adjustedAt)}{\" \"}\n </Typography>\n <Typography variant=\"body\" as=\"p\" className=\"text-sm text-gray-dark\">\n Note: {adjustment.note || \"No note provided\"}\n </Typography>\n </div>\n </AnimatedModal>\n )}\n </>\n )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { formatClientPhonePlusOne, isClientValid } from \"../../../../utils/utils\"\nimport { Button } from \"../../../shared/Buttons\"\n\nconst AppointmentActions = ({\n fetching,\n onDecline,\n removeAppointmentFromCalendar,\n onAccept,\n onAppointmentChanged,\n onCancel,\n createManualAppointment,\n editManualAppointment,\n onRecurringAppointmentsChanged,\n resetBookingState,\n setShowPackageConfirmModal,\n setShowPastAppointmentModal,\n setPendingAction\n}) => {\n const { showToast } = useToast()\n\n const {\n appointment,\n services,\n client,\n locationId,\n startsAt,\n endsAt,\n recurringStartTimes,\n recurrencePattern,\n createRecurringAppointments,\n recurringAppointmentError,\n setAppointmentErrors,\n initialAppointmentValues\n } = useManualBooking()\n\n const { practicePhone, practiceEmail } = usePractice()\n\n const pending = appointment?.state === \"pending\"\n const packageData =\n client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service?.id) || appointment?.package\n const clientPhone = formatClientPhonePlusOne(client?.phone)\n\n const hasChangesInAppointment = () => {\n if (!appointment || !initialAppointmentValues) return true\n\n return (\n initialAppointmentValues.locationId !== locationId ||\n initialAppointmentValues.startsAt !== startsAt ||\n initialAppointmentValues.endsAt !== endsAt ||\n JSON.stringify(initialAppointmentValues.services) !== JSON.stringify(services) ||\n JSON.stringify(initialAppointmentValues.client) !== JSON.stringify(client)\n )\n }\n\n const isDisabled =\n (recurrencePattern && recurringStartTimes?.length === 0) ||\n !!recurringAppointmentError ||\n fetching ||\n !services?.[0]?.service ||\n !locationId ||\n !client ||\n !isClientValid(client, clientPhone, practicePhone, practiceEmail) ||\n (appointment && !hasChangesInAppointment())\n\n const isCreatingNewPackage = services?.[0]?.service?.package && !packageData\n\n const isPastAppointment = () => dayjs(startsAt).isBefore(dayjs())\n\n const handleSave = () => {\n // Remove the possible empty object from services\n const validServices = services?.filter((service) => service.service)\n\n if (validServices?.length > 0 && validServices?.every((service) => service.service?.addOn)) {\n setAppointmentErrors(\"You can't create an appointment with only add-on services\")\n return\n }\n\n if (isPastAppointment() && !appointment) {\n setShowPastAppointmentModal(true)\n setPendingAction(() => executeSave)\n return\n }\n\n executeSave()\n }\n\n const executeSave = () => {\n if (appointment) {\n editManualAppointment()\n } else {\n if (recurringStartTimes && recurrencePattern) {\n if (services?.[0]?.service?.package && !packageData) {\n setShowPackageConfirmModal(true)\n } else {\n createRecurringAppointments((appointments) => {\n resetBookingState()\n onRecurringAppointmentsChanged(appointments)\n setShowPackageConfirmModal(false)\n })\n }\n } else {\n if (isCreatingNewPackage) {\n setShowPackageConfirmModal(true)\n } else {\n createManualAppointment()\n setShowPackageConfirmModal(false)\n }\n }\n }\n }\n\n return (\n <div className=\"mt-8 flex w-full justify-between border-t border-gray-light py-4\">\n {pending ? (\n <>\n <Button\n type=\"warning\"\n className=\"sm:w-full\"\n onClick={() => {\n onDecline().then((result) => {\n if (result.data?.declineAppointment?.result === \"success\") {\n removeAppointmentFromCalendar([appointment.id])\n showToast(\"Appointment declined\")\n } else {\n showToast({\n type: \"error\",\n content: \"Unexpected error declining appointment. Please contact support if this persists.\"\n })\n }\n })\n }}>\n Decline\n </Button>\n <Button\n className=\"sm:w-full\"\n type=\"primary\"\n onClick={() => {\n onAccept().then((result) => {\n if (result.data.acceptAppointment?.result === \"success\") {\n onAppointmentChanged(result.data.acceptAppointment.appointment)\n showToast(\"Appointment accepted\")\n } else {\n showToast({\n type: \"error\",\n content: \"Unexpected error accepting appointment. Please contact support if this persists.\"\n })\n }\n })\n }}>\n Accept\n </Button>\n </>\n ) : (\n <>\n {appointment && (\n <Button type=\"warning\" className=\"mr-4 sm:w-full\" onClick={onCancel}>\n Cancel appt.\n </Button>\n )}\n <Button type=\"primary\" className=\"sm:w-full\" onClick={handleSave} disabled={isDisabled}>\n Save\n </Button>\n </>\n )}\n </div>\n )\n}\n\nexport default AppointmentActions\n","import dayjs from \"dayjs\"\nimport React, { useMemo, useEffect } from \"react\"\n\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport { Label, TimePicker } from \"../../shared/Inputs\"\n\nconst getTimeFromDateAndTime = (date, time) =>\n dayjs(date)\n .hour(parseInt(time.split(\":\")[0]))\n .minute(parseInt(time.split(\":\")[1]))\n\nexport default function EditAppointmentDateTime() {\n const { startsAt, setStartsAt, endsAt, setEndsAt } = useManualBooking()\n\n const startDate = useMemo(() => (startsAt ? dayjs(startsAt).toDate() : dayjs().toDate()), [startsAt])\n const startTime = useMemo(() => {\n if (startsAt) {\n return dayjs(startsAt).format(\"HH:mm\")\n } else {\n const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n return nextHour.format(\"HH:mm\")\n }\n }, [startsAt])\n const endTime = useMemo(() => {\n if (endsAt) {\n return dayjs(endsAt).format(\"HH:mm\")\n } else {\n const nextHour = dayjs().add(1, \"hour\").startOf(\"hour\")\n return nextHour.add(60, \"minutes\").format(\"HH:mm\")\n }\n }, [endsAt])\n\n useEffect(() => {\n // Sometimes startsAt or endsAt is not valid at the first render, so set them to the startDate and times\n if (!dayjs(startsAt).isValid()) {\n const startDateTime = getTimeFromDateAndTime(startDate, startTime)\n setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n if (!dayjs(endsAt).isValid()) {\n const endDateTime = getTimeFromDateAndTime(startDate, endTime)\n setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n }, [startsAt, endsAt, startDate, startTime, endTime, setStartsAt, setEndsAt])\n\n const handleStartDateChange = (date) => {\n const startDateTime = getTimeFromDateAndTime(date, startTime)\n setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n\n const endDateTime = getTimeFromDateAndTime(date, endTime)\n setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n\n const handleStartTimeChange = (e) => {\n const startDateTime = getTimeFromDateAndTime(startDate, e.target.value)\n setStartsAt(startDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n\n // Maintain the same duration by adding it to the new start time\n const newEndDateTime = startDateTime.add(duration, \"minutes\")\n setEndsAt(newEndDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n\n const handleEndTimeChange = (e) => {\n const endDateTime = getTimeFromDateAndTime(startDate, e.target.value)\n setEndsAt(endDateTime.format(\"YYYY-MM-DDTHH:mm:ssZ\"))\n }\n\n const duration = useMemo(() => {\n const start = dayjs(`2000-01-01 ${startTime}`)\n const end = dayjs(`2000-01-01 ${endTime}`)\n return end.diff(start, \"minute\")\n }, [startTime, endTime])\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"w-2/5\">\n <Label htmlFor=\"date-picker\">Date</Label>\n <DatePicker id=\"date-picker\" selected={startDate} onChange={handleStartDateChange} />\n </div>\n <div className=\"flex w-full flex-row items-end gap-2\">\n <div className=\"w-2/5\">\n <Label htmlFor=\"start-time-picker\">Start Time</Label>\n <TimePicker\n id=\"start-time-picker\"\n showFifteenIncrements={true}\n value={startTime}\n onChange={handleStartTimeChange}\n />\n </div>\n <div className=\"w-2/5\">\n <Label htmlFor=\"end-time-picker\">End Time</Label>\n <TimePicker\n id=\"end-time-picker\"\n showFifteenIncrements={true}\n value={endTime}\n startAt={startTime}\n onChange={handleEndTimeChange}\n />\n </div>\n <div className=\"w-1/5 pb-2 text-right\">\n <span>{duration} mins</span>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport MaskedInput from \"react-text-mask\"\nimport styled from \"styled-components\"\nimport createNumberMask from \"text-mask-addons/dist/createNumberMask\"\n\nimport { BASE_INPUT_CLASSNAMES } from \"./Inputs\"\n\nconst InputWrapper = styled.div`\n input {\n border: 1px solid rgb(var(--color-gray));\n background: white;\n padding: 6px 12px;\n width: 100%;\n margin: 0;\n outline: 0;\n box-shadow: none;\n border-radius: 0.5rem;\n }\n\n input:disabled {\n background-color: rgb(var(--color-ultra-light-gray));\n color: rgb(var(--color-dark-gray));\n cursor: not-allowed;\n }\n\n input:focus {\n border-color: rgb(var(--color-black));\n box-shadow: 0 0 0 4px rgb(var(--color-blue));\n }\n\n input::placeholder {\n color: rgb(var(--color-dark-gray));\n }\n`\n\nconst defaultMaskOptions = {\n prefix: \"$\",\n suffix: \"\",\n includeThousandsSeparator: true,\n thousandsSeparatorSymbol: \",\",\n allowDecimal: true,\n decimalSymbol: \".\",\n decimalLimit: 2, // how many digits allowed after the decimal\n integerLimit: 7, // limit length of integer numbers\n allowNegative: false,\n allowLeadingZeroes: false\n}\n\nconst CurrencyInput = ({ ...inputProps }) => {\n const currencyMask = createNumberMask({\n ...defaultMaskOptions\n })\n\n return (\n <InputWrapper>\n <MaskedInput className={BASE_INPUT_CLASSNAMES} mask={currencyMask} {...inputProps} />\n </InputWrapper>\n )\n}\n\nexport default CurrencyInput\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useMemo, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { networkOnlyUrqlClient } from \"../../../utils/utils\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport HealMeTooltip from \"../../shared/HealMeTooltip\"\nimport { BASE_INPUT_CLASSNAMES, CheckBox, Label, Select } from \"../../shared/Inputs\"\nimport { Banner } from \"../../shared/Layout\"\n\nconst RECURRING_TIMES_QUERY = `\n query RecurringTimes($practiceId: ID!, $startsAt: String!, $recurrencePattern: String!, $duration: Int!) {\n recurringTimes(practiceId: $practiceId, startsAt: $startsAt, recurrencePattern: $recurrencePattern, duration: $duration) {\n startsAt\n displayTime\n conflicts { id name type timeRange }\n }\n }\n`\n\nconst seriesEndOptions = [\n { value: \"after\", label: \"Series ends after\" },\n { value: \"on\", label: \"Series ends on\" }\n]\n\nconst getDateInNMonths = (n) => {\n const now = new Date()\n let year = now.getFullYear()\n let month = now.getMonth() + n\n const day = now.getDate()\n\n if (month > 11) {\n month = month % 12\n year++\n }\n\n let oneMonthLater = new Date(year, month, day, 23, 59, 59)\n\n // Checking if the month has wrapped, which indicates that the day was invalid for the next month\n // For example, if the current date is January 31st, then one month later will be February 28th/29th\n if (oneMonthLater.getMonth() !== month) {\n oneMonthLater = new Date(year, month, 0, 23, 59, 59) // The 0th day of a month will be the last day of the previous month\n }\n\n return oneMonthLater\n}\n\nconst ordinals = {\n 1: \"first\",\n 2: \"second\",\n 3: \"third\",\n 4: \"fourth\",\n 5: \"last\"\n}\n\nconst getDayOfWeekAndDayInMonth = (dateObj) => {\n const dayOfWeek = dateObj.toLocaleDateString(\"en-US\", { weekday: \"short\" }).toUpperCase().substring(0, 2)\n const dayInMonth = dateObj.getDate()\n let weekOfMonth = Math.ceil(dayInMonth / 7)\n weekOfMonth = weekOfMonth === 5 ? -1 : weekOfMonth\n\n return `${weekOfMonth}${dayOfWeek}`\n}\n\nconst getDayOfWeekAndDayInMonthOrdinal = (dateObj) => {\n const dayOfWeek = dateObj.toLocaleDateString(\"en-US\", { weekday: \"long\" })\n const dayInMonth = dateObj.getDate()\n const weekOfMonth = Math.ceil(dayInMonth / 7)\n\n return `${ordinals[weekOfMonth]} ${dayOfWeek}`\n}\n\nconst RecurrenceSelect = ({ className, disabled }) => {\n const {\n startsAt,\n endsAt,\n setRecurringStartTimes,\n setRecurrencePattern,\n services,\n recurringAppointmentError,\n setRecurringAppointmentError,\n appointment,\n client\n } = useManualBooking()\n const { practice } = usePractice()\n\n const dayOfWeek = new Date(startsAt).toLocaleString(\"default\", { weekday: \"long\" })\n const dayOfWeekWithOrdinal = getDayOfWeekAndDayInMonthOrdinal(new Date(startsAt))\n\n const options = [\n { value: \"\", label: \"Does not repeat\" },\n { value: \"FREQ=DAILY\", label: \"Daily\" },\n { value: \"FREQ=WEEKLY\", label: `Weekly on ${dayOfWeek}` },\n { value: \"FREQ=WEEKLY;INTERVAL=2\", label: `Every 2 weeks on ${dayOfWeek}` },\n {\n value: `FREQ=MONTHLY;BYMONTHDAY=${new Date(startsAt).getDate()}`,\n label: `Monthly on the ${new Date(startsAt).getDate()}th`\n },\n {\n value: `FREQ=MONTHLY;BYDAY=${getDayOfWeekAndDayInMonth(new Date(startsAt)).replace(\"4\", \"-1\")}`,\n label: dayOfWeekWithOrdinal.startsWith(\"fourth\")\n ? `Monthly on the last ${dayOfWeek}`\n : `Monthly on the ${dayOfWeekWithOrdinal}`\n },\n { value: \"custom\", label: \"Custom...\" }\n ]\n\n const currentServiceOpenPackage = client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service.id)\n const openPackage = !!currentServiceOpenPackage\n const isNewPackage = services?.[0]?.service?.package && !appointment && !openPackage\n let defaultFrequency = appointment ? appointment.recurrenceFrequency : isNewPackage ? \"FREQ=WEEKLY\" : \"\"\n // if not one of the \"options\" var, set to custom\n if (options.map((option) => option.value).indexOf(defaultFrequency) === -1) {\n defaultFrequency = \"custom\"\n }\n\n const packageData = currentServiceOpenPackage || appointment?.package\n const maxOccurrences = isNewPackage\n ? services?.[0]?.service?.numberOfSessions\n : packageData?.sessionsRemaining\n ? Math.min(25, packageData.sessionsRemaining)\n : 25\n const numberOfOccurrenceOptions = Array(maxOccurrences ? maxOccurrences - 1 : 0)\n .fill(0)\n .map((_, i) => ({ value: i + 2, label: (i + 2).toString() }))\n\n const getNumberOfSessions = (appointment, isNewPackage, service, openPackage, packageData) => {\n if (appointment) {\n return appointment.recurrenceCount\n } else if (isNewPackage) {\n return service.service.numberOfSessions\n } else if (openPackage) {\n return packageData?.sessionsRemaining || 10\n } else {\n return 10\n }\n }\n\n const removedRecurringTimes = useMemo(() => [], [])\n\n const [frequency, setFrequency] = useState(defaultFrequency)\n const [seriesEnd, setSeriesEnd] = useState(appointment?.recurrenceUntil ? \"on\" : \"after\")\n const [numberOfOccurrences, setNumberOfOccurrences] = useState(\n getNumberOfSessions(appointment, isNewPackage, services?.[0], openPackage, packageData)\n )\n const [endsOnDate, setEndsOnDate] = useState(\n appointment?.recurrenceUntil ? new Date(appointment.recurrenceUntil) : getDateInNMonths(1)\n )\n const [recurringTimes, setRecurringTimes] = useState([])\n\n const [customRecurrence, setCustomRecurrence] = useState({\n repeatEveryValue: 1,\n repeatEveryUnit: \"weekly\",\n repeatOn: {\n SU: dayOfWeek === \"Sunday\",\n MO: dayOfWeek === \"Monday\",\n TU: dayOfWeek === \"Tuesday\",\n WE: dayOfWeek === \"Wednesday\",\n TH: dayOfWeek === \"Thursday\",\n FR: dayOfWeek === \"Friday\",\n SA: dayOfWeek === \"Saturday\"\n }\n })\n\n const handleCustomDayChange = (day) => {\n setCustomRecurrence((prevState) => {\n const newRepeatOn = {\n ...prevState.repeatOn,\n [day]: !prevState.repeatOn[day]\n }\n const newCustomRecurrence = { ...prevState, repeatOn: newRepeatOn }\n return newCustomRecurrence\n })\n }\n\n const handleCustomRecurrenceChange = (key, value) => {\n setCustomRecurrence((prevState) => {\n let newCustomRecurrence = { ...prevState, [key]: value }\n return newCustomRecurrence\n })\n }\n\n const getPattern = (frequency, seriesEnd, numberOfOccurrences, endsOnDate) => {\n if (frequency === \"custom\") {\n if (!customRecurrence.repeatEveryValue || !customRecurrence.repeatEveryUnit) {\n return null\n }\n let customPattern = `FREQ=${customRecurrence.repeatEveryUnit.toUpperCase()};INTERVAL=${\n customRecurrence.repeatEveryValue\n }`\n if (customRecurrence.repeatEveryUnit === \"weekly\") {\n const daysActive = Object.entries(customRecurrence.repeatOn)\n .filter(([, isChecked]) => isChecked)\n .map(([day]) => day)\n .join(\",\")\n if (daysActive) {\n customPattern += `;BYDAY=${daysActive}`\n }\n }\n customPattern += seriesEnd === \"after\" ? `;COUNT=${numberOfOccurrences};` : `;UNTIL=${endsOnDate.toISOString()};`\n return customPattern\n }\n return frequency\n ? [frequency, seriesEnd === \"after\" ? `COUNT=${numberOfOccurrences}` : `UNTIL=${endsOnDate.toISOString()}`].join(\n \";\"\n )\n : null\n }\n\n useEffect(() => {\n onChange(frequency, seriesEnd, numberOfOccurrences, endsOnDate)\n }, [startsAt, customRecurrence])\n useEffect(() => {\n const newNumberOfSessions = getNumberOfSessions(appointment, isNewPackage, services?.[0], openPackage, packageData)\n setNumberOfOccurrences(newNumberOfSessions)\n onChange(frequency, seriesEnd, newNumberOfSessions, endsOnDate)\n }, [services])\n\n const conflictsCount = recurringTimes.filter((recurringTime) => recurringTime.conflicts.length > 0).length\n\n const onChange = (frequency, seriesEnd, numberOfOccurrences, endsOnDate) => {\n const pattern = getPattern(frequency, seriesEnd, numberOfOccurrences, endsOnDate)\n fetchRecurringTimes(pattern)\n setRecurrencePattern(pattern)\n }\n\n const fetchRecurringTimes = (recurrencePattern) => {\n if (!recurrencePattern) {\n setRecurringStartTimes(null)\n setRecurringTimes([])\n return\n }\n\n const duration = dayjs(endsAt).diff(dayjs(startsAt), \"minutes\")\n\n if (!duration || !recurrencePattern || appointment) return\n\n networkOnlyUrqlClient\n .query(RECURRING_TIMES_QUERY, {\n practiceId: practice.id,\n startsAt: startsAt,\n recurrencePattern,\n duration\n })\n .toPromise()\n .then((res) => {\n if (res.data?.recurringTimes) {\n const recurringTimes = res.data.recurringTimes.map((recurringTime) => ({\n ...recurringTime,\n shouldBook: recurringTime.conflicts.length === 0\n }))\n updateState(recurringTimes)\n const lastRecurringTime = recurringTimes[recurringTimes.length - 1]\n const nonConflictingLength = recurringTimes.filter((time) => time.conflicts.length === 0).length\n\n let error =\n nonConflictingLength > maxOccurrences\n ? `You can create at most ${maxOccurrences} appointments at once. You are currently attempting to create ${nonConflictingLength} appointments.`\n : lastRecurringTime && new Date(lastRecurringTime.startsAt) > getDateInNMonths(12)\n ? \"You can create appointments at most one year into the future.\"\n : null\n if (error) {\n error += \" Please select a different frequency or end date.\"\n setRecurringAppointmentError(error)\n } else {\n setRecurringAppointmentError(null)\n }\n } else {\n console.error(\"Error fetching recurring times\", res)\n }\n })\n }\n\n const updateState = (newRecurringTimes) => {\n setRecurringTimes(newRecurringTimes)\n setRecurringStartTimes(newRecurringTimes.filter((time) => time.shouldBook).map((time) => time.startsAt))\n }\n\n return (\n <div className={twMerge(\"flex flex-col gap-4\", disabled ? \"pointer-events-none\" : \"\", className)}>\n <div>\n <Label htmlFor=\"recurring-select\">Recurring</Label>\n <Select\n disabled={disabled || maxOccurrences < 2}\n id=\"recurring-select\"\n options={options}\n value={frequency}\n onChange={(e) => {\n setFrequency(e.target.value)\n onChange(e.target.value, seriesEnd, numberOfOccurrences, endsOnDate)\n }}\n />\n </div>\n {frequency === \"custom\" && !disabled && (\n <div className=\"flex flex-col\">\n <div>\n <Label>Repeat every</Label>\n <div className=\"flex flex-row gap-2\">\n <input\n className={twMerge(\"w-1/2\", BASE_INPUT_CLASSNAMES)}\n type=\"number\"\n min=\"1\"\n value={customRecurrence.repeatEveryValue}\n onChange={(e) => handleCustomRecurrenceChange(\"repeatEveryValue\", parseInt(e.target.value))}\n />\n <Select\n className=\"w-1/2\"\n options={[\n { value: \"daily\", label: \"day(s)\" },\n { value: \"weekly\", label: \"week(s)\" }\n ]}\n value={customRecurrence.repeatEveryUnit}\n onChange={(e) => handleCustomRecurrenceChange(\"repeatEveryUnit\", e.target.value)}\n />\n </div>\n </div>\n {customRecurrence.repeatEveryUnit === \"weekly\" && (\n <div className=\"mt-4 flex justify-between\">\n {[\"SU\", \"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\"].map((day) => (\n <CheckBox\n key={day}\n label={day}\n className={\"gap-1.5\"}\n checked={customRecurrence.repeatOn[day]}\n onChange={() => handleCustomDayChange(day)}\n />\n ))}\n </div>\n )}\n </div>\n )}\n\n {frequency && (\n <div className=\"flex items-center gap-2\">\n <Select\n disabled={disabled || maxOccurrences < 2}\n name=\"series-end\"\n className=\"w-1/2\"\n options={seriesEndOptions}\n value={seriesEnd}\n onChange={(e) => {\n setSeriesEnd(e.target.value)\n onChange(frequency, e.target.value, numberOfOccurrences, endsOnDate)\n }}\n />\n {seriesEnd === \"after\" ? (\n <>\n <Select\n disabled={disabled || maxOccurrences < 2}\n name=\"number-of-occurrences\"\n options={numberOfOccurrenceOptions}\n value={numberOfOccurrences}\n onChange={(e) => {\n setNumberOfOccurrences(e.target.value)\n onChange(frequency, seriesEnd, e.target.value, endsOnDate)\n }}\n />\n <span>sessions</span>\n </>\n ) : (\n <DatePicker\n disabled={disabled}\n selected={endsOnDate}\n onChange={(date) => {\n date.setHours(23, 59, 59)\n setEndsOnDate(date)\n onChange(frequency, seriesEnd, numberOfOccurrences, date)\n }}\n />\n )}\n </div>\n )}\n\n {recurringTimes.length > 0 && frequency && (\n <>\n {recurringAppointmentError ? (\n <Banner type=\"error\">{recurringAppointmentError}</Banner>\n ) : (\n <Banner type={conflictsCount > 0 ? \"warning\" : \"info\"}>\n {conflictsCount > 0 ? (\n <>\n <div className=\"font-bold\">\n We found <span className=\"underline\">{conflictsCount} times</span> that are already booked/filled.\n </div>\n <div>We skipped these, but you can include them.</div>\n </>\n ) : (\n <div className=\"font-bold\">Here are the dates and times included in this recurring series:</div>\n )}\n <ul className=\"mt-4 flex flex-col gap-2\">\n {recurringTimes.map((recurringTime) => {\n const hasConflicts = recurringTime.conflicts.length > 0\n\n return (\n <li key={recurringTime.startsAt} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div\n className={[\n hasConflicts && \"text-red\",\n !recurringTime.shouldBook && \"font-bold line-through\"\n ].join(\" \")}>\n {dayjs(recurringTime.startsAt).format(\"MM/DD/YYYY [@] h:mma\")}\n </div>\n {hasConflicts && (\n <>\n <InformationCircleIcon className=\"h-5 w-5\" data-tooltip-id={recurringTime.startsAt} />\n <HealMeTooltip\n id={recurringTime.startsAt}\n render={() => (\n <div className=\"flex flex-col gap-4\">\n {recurringTime.conflicts.map((conflict) => (\n <div key={`${recurringTime.startsAt}-${conflict.id}`}>\n <div className=\"font-bold\">{conflict.name}</div>\n <div>{conflict.timeRange}</div>\n </div>\n ))}\n </div>\n )}\n />\n </>\n )}\n </div>\n {hasConflicts && (\n <button\n className=\"underline\"\n onClick={() => {\n const newRecurringTimes = [...recurringTimes]\n const time = newRecurringTimes.find((time) => time.startsAt === recurringTime.startsAt)\n if (!time.shouldBook) {\n const finalTime = newRecurringTimes.pop()\n removedRecurringTimes.push(finalTime)\n } else {\n const nextTime = removedRecurringTimes.pop()\n newRecurringTimes.push(nextTime)\n }\n time.shouldBook = !time.shouldBook\n updateState(newRecurringTimes)\n }}>\n {recurringTime.shouldBook ? \"Remove\" : \"Include\"}\n </button>\n )}\n </li>\n )\n })}\n </ul>\n </Banner>\n )}\n </>\n )}\n </div>\n )\n}\n\nexport default RecurrenceSelect\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport { TrashIcon } from \"@heroicons/react/24/solid\"\nimport React, { useMemo } from \"react\"\nimport ReactSelect, { components } from \"react-select\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { formatPrice, selectStyling, unformatPrice } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport CurrencyInput from \"../../shared/CurrencyInput\"\nimport HealMeTooltip from \"../../shared/HealMeTooltip\"\nimport { CheckBox, Label } from \"../../shared/Inputs\"\nimport Typography from \"../../shared/Typography\"\n\nimport RecurrenceSelect from \"./RecurrenceSelect\"\n\nconst getServiceLabel = (service, variation) => {\n if (service.package) {\n return `${service.name} (${service.numberOfSessions} sessions${\n variation.timeLength ? `, ${variation.timeLength} mins` : \"\"\n })`\n }\n if (service.addOn) {\n return `${service.name}`\n }\n return `${service.name}${variation.timeLength ? ` (${variation.timeLength} mins)` : \"\"}`\n}\n\nexport default function EditAppointmentService() {\n const { appointment, client, services, setServices, updateEndsAtWithServicesDuration } = useManualBooking()\n const { practice, practiceServices } = usePractice()\n\n const upcoming = new Date(appointment?.startsAt) >= new Date()\n const isServicesEditable = appointment?.paymentStatus !== PAYMENT_STATUS_OPTIONS.PAID\n\n const handleServiceSelect = (serviceId, variationId, index) => {\n const fullService = practiceServices.find((service) => service.id === serviceId)\n if (!fullService) return\n\n const selectedVariation = fullService.variations.find((variation) => variation.id === variationId)\n if (!selectedVariation) return\n\n const updatedServices = [...services]\n updatedServices[index] = {\n amountCents: selectedVariation.amountCents,\n service: {\n ...fullService,\n id: variationId,\n serviceId: serviceId,\n timeLength: selectedVariation.timeLength\n }\n }\n\n setServices(updatedServices)\n updateEndsAtWithServicesDuration(updatedServices)\n\n // If client is set, query for the custom price and update the service price\n if (client) {\n const originalPrice = selectedVariation.amountCents\n const customPrice = client.customPrices?.find((cp) => cp.serviceId === variationId)\n if (customPrice) {\n const updatedServicesAfterPriceChange = [...updatedServices]\n updatedServicesAfterPriceChange[index].amountCents = customPrice.amountCents\n updatedServicesAfterPriceChange[index].priceChanged = originalPrice !== customPrice.amountCents\n updatedServicesAfterPriceChange[index].saveCustomPrice = originalPrice !== customPrice.amountCents\n setServices(updatedServicesAfterPriceChange)\n }\n }\n }\n\n const handlePriceChange = (index, newDisplayPrice) => {\n const newAmountCents = unformatPrice(newDisplayPrice)\n const updatedServices = [...services]\n const currentService = updatedServices[index]\n\n const clientCustomPrice = client?.customPrices?.find((cp) => cp.serviceId === currentService.service.serviceId)\n\n updatedServices[index] = {\n ...currentService,\n amountCents: newAmountCents,\n priceChanged: clientCustomPrice?.amountCents !== newAmountCents,\n saveCustomPrice: false // Reset when price changes\n }\n setServices(updatedServices)\n }\n\n // Add new handler for checkbox\n const handleSaveCustomPriceChange = (index) => {\n const updatedServices = [...services]\n updatedServices[index] = {\n ...updatedServices[index],\n saveCustomPrice: !updatedServices[index].saveCustomPrice\n }\n setServices(updatedServices)\n }\n\n // Flatten services and variations for the select options\n const serviceOptions = useMemo(() => {\n if (!practiceServices) return []\n return practiceServices.flatMap((service) =>\n service.variations.map((variation) => ({\n value: `${service.id}-${variation.id}`,\n label: getServiceLabel(service, variation),\n package: service.package,\n addOn: service.addOn\n }))\n )\n }, [practiceServices])\n\n const serviceOptionsWithoutPackages = useMemo(\n () => serviceOptions?.filter((service) => !service.package),\n [serviceOptions]\n )\n\n const serviceOptionsToUse = useMemo(\n () => (services.length > 1 ? serviceOptionsWithoutPackages : serviceOptions),\n [services, serviceOptions, serviceOptionsWithoutPackages]\n )\n\n // Build the options for ReactSelect\n const regularServiceOptions = useMemo(\n () => serviceOptionsToUse?.filter((service) => !service.addOn),\n [serviceOptionsToUse]\n )\n const addOnServiceOptions = useMemo(\n () => serviceOptionsToUse?.filter((service) => service.addOn),\n [serviceOptionsToUse]\n )\n const groupedOptions = useMemo(\n () =>\n services.length > 1\n ? [\n {\n label: \"Add-ons\",\n options: addOnServiceOptions\n },\n {\n label: \"Services\",\n options: regularServiceOptions\n }\n ]\n : [\n {\n label: \"Services\",\n options: regularServiceOptions\n },\n {\n label: \"Add-ons\",\n options: addOnServiceOptions\n }\n ],\n [services, addOnServiceOptions, regularServiceOptions]\n )\n const formatGroupLabel = (data) => (\n <div className=\"flex justify-between\">\n <span>{data.label}</span>\n <span>{data.options.length}</span>\n </div>\n )\n const CustomOptionComponent = (props) => (\n <components.Option {...props} innerProps={{ ...props.innerProps, \"data-test-id\": `option-${props.data.value}` }}>\n {props.children}\n </components.Option>\n )\n\n const totalPrice = useMemo(() => services.reduce((sum, service) => sum + (service.amountCents || 0), 0), [services])\n\n // last service is empty OR\n // first service is a package\n const addServiceDisabled =\n (services.length > 0 && !services[services.length - 1].service) ||\n (services.length > 0 && services[0].service && services[0].service.package)\n\n // First service is a package, and is in client's open packages\n const isBookingOpenPackage =\n services.length > 0 &&\n services[0].service &&\n services[0].service.package &&\n client?.openPackages?.find((pkg) => pkg.serviceId === services[0].service.serviceId)\n\n const getAddOnsTooltip = () => {\n if (services.length > 0 && !services[services.length - 1].service) {\n return \"Please select a service before adding another\"\n }\n if (services.length > 0 && services[0].service?.package) {\n return \"Cannot add other services to a package appointment during booking\"\n }\n return \"\"\n }\n\n return (\n <div className=\"mt-4\">\n {practiceServices && (\n <>\n <Label>Add services</Label>\n\n {services.map((service, index) => (\n <div key={index} className=\"mb-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1\">\n <ReactSelect\n id={`service-select-${index}`}\n isDisabled={!isServicesEditable}\n options={groupedOptions}\n formatGroupLabel={formatGroupLabel}\n placeholder={services.length > 1 ? \"-- select an add-on --\" : \"-- select a service --\"}\n onChange={(option) => {\n const [serviceId, variationId] = option.value.split(\"-\")\n handleServiceSelect(serviceId, variationId, index)\n }}\n styles={selectStyling()}\n value={\n service.service\n ? serviceOptionsToUse.find(\n (option) => option.value === `${service.service.serviceId}-${service.service.id}`\n )\n : null\n }\n components={{ Option: CustomOptionComponent }}\n />\n </div>\n\n {service.service && (\n <div className=\"w-1/4\">\n <CurrencyInput\n disabled={isBookingOpenPackage || !isServicesEditable}\n placeholder=\"Price\"\n id={`price-input-${index}`}\n value={formatPrice(service.amountCents) || \"\"}\n onChange={(e) => handlePriceChange(index, e.target.value)}\n style={service.priceChanged ? { color: \"#0D9DA4\" } : { color: \"#0B3954\" }}\n />\n </div>\n )}\n\n {services.length > 1 && isServicesEditable && (\n <div className=\"flex h-full items-center\">\n <TrashIcon\n className=\"h-6 w-6 cursor-pointer\"\n onClick={() => {\n const updatedServices = services.filter((_, i) => i !== index)\n setServices(updatedServices)\n updateEndsAtWithServicesDuration(updatedServices)\n }}\n />\n </div>\n )}\n </div>\n\n {/* Only show the checkbox if the price has changed and the client is set */}\n {client && service.priceChanged && isServicesEditable && (\n <div className=\"mt-2 flex items-center gap-2\">\n <CheckBox\n id={`save-price-${index}`}\n checked={service.saveCustomPrice}\n onChange={() => handleSaveCustomPriceChange(index)}\n />\n <label htmlFor={`save-price-${index}`} className=\"text-sm\">\n Remember this price for this client\n </label>\n </div>\n )}\n </div>\n ))}\n\n {isServicesEditable && (\n <div className=\"relative mt-2 flex items-center gap-2\">\n <Button type=\"secondary\" onClick={() => setServices([...services, {}])} disabled={addServiceDisabled}>\n + Add-ons\n </Button>\n {addServiceDisabled && (\n <>\n <InformationCircleIcon className=\"h-5 w-5\" data-tooltip-id=\"add-ons-tooltip\" />\n <HealMeTooltip id=\"add-ons-tooltip\" render={() => <div>{getAddOnsTooltip()}</div>} />\n </>\n )}\n </div>\n )}\n\n {services.some((s) => s.service) && (\n <div className=\"my-4 space-y-2\">\n {(appointment?.tipAmountCents > 0 || appointment?.discountCodeRedemptions?.length > 0) && (\n <div className=\"flex justify-between\">\n <span>Subtotal:</span>\n <span>{formatPrice(totalPrice)}</span>\n </div>\n )}\n\n {appointment?.discountCodeRedemptions?.map((discount, index) => (\n <div key={index} className=\"flex justify-between\">\n <span>Discount ({discount.code}):</span>\n <span>-{formatPrice(discount.amountCents)}</span>\n </div>\n ))}\n\n {appointment?.tipAmountCents > 0 && (\n <div className=\"flex justify-between\">\n <span>Tip:</span>\n <span>{formatPrice(appointment.tipAmountCents)}</span>\n </div>\n )}\n\n <Typography variant=\"h5\" className=\"flex justify-between\">\n <span>Total:</span>\n <span>\n {formatPrice(\n totalPrice +\n (appointment?.tipAmountCents || 0) -\n (appointment?.discountCodeRedemptions?.reduce((sum, discount) => sum + discount.amountCents, 0) ||\n 0)\n )}\n </span>\n </Typography>\n </div>\n )}\n\n {!appointment && services.length > 0 && practice.recurringBookingsEnabled && totalPrice > 0 && (\n <RecurrenceSelect className=\"mt-4\" />\n )}\n\n {appointment?.recurrenceFrequency && !appointment?.package && (\n <RecurrenceSelect disabled={true} className={upcoming ? \"mb-4\" : \"\"} />\n )}\n </>\n )}\n </div>\n )\n}\n","import { VideoCameraIcon } from \"@heroicons/react/24/outline\"\nimport React, { useEffect } from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { Label, Select } from \"../../../shared/Inputs\"\n\nconst LocationSelect = () => {\n const { practice } = usePractice()\n const { appointment, locationId, setLocationId } = useManualBooking()\n\n // Set default location to first location if no location is selected\n useEffect(() => {\n if (!locationId && practice?.locations?.length > 0) {\n setLocationId(practice.locations[0].id)\n }\n }, [locationId, practice])\n\n const virtualLink = appointment?.virtualMeetingLinkWithFallback\n\n return (\n <div className=\"mt-4\">\n <Label htmlFor=\"location-select\">Location</Label>\n <Select\n id=\"location-select\"\n options={practice?.locations?.map((location) => ({ label: location.singleLine, value: location.id }))}\n onChange={(e) => setLocationId(e.target.value)}\n value={locationId || undefined}\n />\n {appointment && virtualLink && (\n <div className=\"mt-2 text-sm\">\n <VideoCameraIcon className=\"mr-2 inline h-4 w-4\" />\n <a href={virtualLink} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-teal\">\n Join virtual meeting\n </a>\n </div>\n )}\n </div>\n )\n}\n\nexport default LocationSelect\n","import React from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { Button } from \"../../../shared/Buttons\"\nimport EditAppointmentDateTime from \"../EditAppointmentDateTime\"\nimport EditAppointmentService from \"../EditAppointmentService\"\n\nimport LocationSelect from \"./LocationSelect\"\n\nconst RESEND_PRO_APPOINTMENT_CONFIRMATION = `\n mutation ResendProAppointmentConfirmation($appointmentId: ID!, $sendTo: String!) {\n resendProAppointmentConfirmation(appointmentId: $appointmentId, sendTo: $sendTo) {\n result\n errors\n }\n }\n`\n\nconst AppointmentDetails = () => {\n const { appointment } = useManualBooking()\n const { showToast } = useToast()\n\n const [, resendProAppointmentConfirmation] = useMutation(RESEND_PRO_APPOINTMENT_CONFIRMATION)\n const resendProAppointmentConfirmationHandler = ({ appointmentId, sendTo }) => {\n resendProAppointmentConfirmation({ appointmentId, sendTo }).then((result) => {\n if (result.data.resendProAppointmentConfirmation.result === \"success\") {\n showToast(\"Confirmation resent!\")\n } else {\n showToast({\n content: `Error resending confirmation: ${result.data.resendProAppointmentConfirmation.errors.join()}`,\n type: \"error\"\n })\n }\n })\n }\n const upcoming = new Date(appointment?.startsAt) >= new Date()\n\n return (\n <>\n <EditAppointmentDateTime />\n\n <LocationSelect />\n\n <EditAppointmentService />\n\n {appointment && upcoming && (\n <>\n <div className=\"mt-8 flex gap-2\">\n <Button\n type=\"secondary\"\n className=\"w-full\"\n onClick={() =>\n resendProAppointmentConfirmationHandler({\n appointmentId: appointment.id,\n sendTo: \"email\"\n })\n }>\n Resend Email\n </Button>\n <Button\n type=\"secondary\"\n className=\"w-full\"\n onClick={() =>\n resendProAppointmentConfirmationHandler({\n appointmentId: appointment.id,\n sendTo: \"sms\"\n })\n }>\n Resend Text\n </Button>\n </div>\n </>\n )}\n </>\n )\n}\n\nexport default AppointmentDetails\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../../../utils/utils\"\nimport { CopyLinkButton } from \"../../../shared/Buttons\"\nimport { Label } from \"../../../shared/Inputs\"\nimport Typography from \"../../../shared/Typography\"\n\nconst AppointmentReview = () => {\n const { appointment, client } = useManualBooking()\n const { showToast } = useToast()\n\n if (!appointment || new Date(appointment.startsAt) >= new Date()) return null\n\n const handleCopy = async () => {\n await copyToClipboard(appointment.reviewLink, showToast)\n }\n\n return (\n <>\n <div className=\"my-8 w-full border-t border-gray-light\" />\n <Label>Review</Label>\n <CopyLinkButton value={appointment.reviewLink} className=\"w-[325px]\" onClick={handleCopy} />\n <Typography className=\"mt-2 block\" variant=\"small\">\n You can send this link to {client?.firstName} to complete a review.\n </Typography>\n </>\n )\n}\n\nexport default AppointmentReview\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useEffect, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../../../utils/mutations\"\nimport { formatShortDate } from \"../../../../utils/utils\"\nimport Badge from \"../../../shared/Badge\"\nimport { Button } from \"../../../shared/Buttons\"\nimport { InputWithLabel } from \"../../../shared/Inputs\"\nimport LoadingSpinner from \"../../../shared/LoadingSpinner\"\nimport { NewModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\nimport AddOrRetryButton from \"../AddOrRetryButton\"\nimport { MARK_AS_PAID, UNDO_MARK_PAID, RETRY_PAYMENT_MUTATION } from \"../appointment_graphql\"\n\nexport default function AppointmentStatus() {\n const { appointment } = useManualBooking()\n\n const [, markPaid] = useMutation(MARK_AS_PAID)\n const [, undoMarkPaid] = useMutation(UNDO_MARK_PAID)\n const [, retryPayment] = useMutation(RETRY_PAYMENT_MUTATION)\n\n const [selectedPaymentOption, setSelectedPaymentOption] = useState(\"cash\")\n const [otherPaymentOption, setOtherPaymentOption] = useState(\"\")\n\n const options = [\n { label: \"Cash\", value: \"cash\" },\n { label: \"Venmo\", value: \"venmo\" },\n { label: \"PayPal\", value: \"paypal\" },\n { label: \"Other\", value: \"other\" }\n ]\n\n const handleChange = (event) => {\n setSelectedPaymentOption(event.target.value)\n }\n\n const [appointmentCopy, setAppointmentCopy] = useState(appointment)\n const [retryingPayment, setRetryingPayment] = useState(false)\n const { showToast } = useToast()\n const { practice } = usePractice()\n\n const markAsPaid = (id) => {\n markPaid({\n appointmentId: id,\n paidBy: selectedPaymentOption === \"other\" ? otherPaymentOption : selectedPaymentOption\n }).then((res) => {\n NiceModal.hide(\"markPaidModal\")\n if (res.data.markPaid.result === \"success\") {\n setAppointmentCopy({ ...appointment, markPaid: true })\n }\n })\n }\n\n const undoMarkAsPaid = (id) => {\n undoMarkPaid({ appointmentId: id }).then((res) => {\n if (res.data.undoMarkPaid.result === \"success\") {\n setAppointmentCopy({ ...appointment, markPaid: false, paymentStatus: \"Unpaid\" })\n }\n })\n }\n\n const handleRetryPayment = () => {\n setRetryingPayment(true)\n retryPayment({ appointmentId: appointment?.id }).then((res) => {\n if (res.data?.retryPayment?.result === \"success\") {\n showToast(\"Success! Payment processed.\")\n setAppointmentCopy({ ...appointment, paymentError: false, hasPaymentMethod: true, paymentStatus: \"Paid\" })\n } else {\n showToast({\n content: `Payment failed: ${res.data?.retryPayment?.errors[0] || \"Internal server error\"}`,\n type: \"error\"\n })\n setAppointmentCopy({ ...appointment, paymentError: res.data?.retryPayment?.errors[0] })\n }\n setRetryingPayment(false)\n })\n }\n\n const [{ data, fetching, error }] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: appointment?.client?.id,\n userId: appointment?.user?.id,\n practiceId: practice.id\n },\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (!appointmentCopy.hasPaymentMethod && data?.defaultPaymentMethodPractice) {\n setAppointmentCopy({\n ...appointmentCopy,\n hasPaymentMethod: true,\n client: { ...appointmentCopy.client, defaultPaymentMethod: data.defaultPaymentMethodPractice }\n })\n }\n }, [data, appointmentCopy.hasPaymentMethod])\n\n const upcoming = new Date(appointment.startsAt) >= new Date()\n const canShowWarning =\n !appointmentCopy.markPaid && appointmentCopy.amountCents > 0 && appointmentCopy.paymentStatus !== \"Paid\"\n const missingPaymentMethod = !appointmentCopy.paymentError && !appointmentCopy.hasPaymentMethod\n const overduePayment = canShowWarning && missingPaymentMethod && !upcoming\n const unprocessedPayment =\n canShowWarning &&\n !upcoming &&\n appointmentCopy.hasPaymentMethod &&\n appointmentCopy.paymentStatus === PAYMENT_STATUS_OPTIONS.UNPAID\n const failedPayment = canShowWarning && appointmentCopy.paymentError\n const client = appointmentCopy.user || appointmentCopy.client\n const isPackage = !!appointmentCopy.packageSessionNumber\n\n if (fetching) return <LoadingSpinner />\n if (error)\n return (\n <Typography variant=\"body\" className=\"mb-4 text-red\">\n Error fetching payment method, please try again later.\n </Typography>\n )\n\n return (\n <div className=\"relative flex flex-col\">\n <div className=\"mb-2 flex items-center justify-between\">\n {!upcoming && (overduePayment || failedPayment || unprocessedPayment) ? (\n <Badge type=\"error\">Unpaid</Badge>\n ) : (\n (appointmentCopy.paymentStatus === \"Paid\" || appointmentCopy.markPaid) && <Badge>Paid</Badge>\n )}\n {appointmentCopy.amountCents > 0 && (appointmentCopy.paymentStatus !== \"Paid\" || appointmentCopy.markPaid) && (\n <>\n {appointmentCopy.markPaid ? (\n <div>\n <span className=\"text-sm text-teal\">Marked as Paid</span>\n <Button\n type=\"link\"\n className=\"ml-2 text-sm text-gray-dark\"\n onClick={() => {\n undoMarkAsPaid(appointment.id)\n }}>\n Undo\n </Button>\n </div>\n ) : (\n <Button\n type=\"link\"\n onClick={() => {\n NiceModal.show(\"markPaidModal\")\n }}>\n Mark as Paid\n </Button>\n )}\n </>\n )}\n </div>\n <Typography variant=\"small\" className=\"mb-4 text-gray-dark\">\n Booked by {appointment.bookedBy === \"client\" ? client.firstName : \"me\"} on{\" \"}\n {formatShortDate(appointment.createdAt)}\n </Typography>\n {(overduePayment || failedPayment || unprocessedPayment) && (\n <>\n <div className=\"mb-4 rounded-xl border border-orange bg-orange-light p-4\">\n {retryingPayment && (\n <Typography variant=\"body\" className=\"mb-0\">\n Processing payment. Please wait...\n </Typography>\n )}\n\n {!overduePayment && !retryingPayment && (failedPayment || unprocessedPayment) && (\n <Typography variant=\"body\">\n <div className=\"font-bold\">Payment not processed</div>\n {practice.hasPaymentProvider ? (\n <>\n Try adding a new card or retry this payment method.{\" \"}\n <AddOrRetryButton\n appointment={appointmentCopy}\n headerLabel={\"Choose your payment method\"}\n label=\"Add or retry\"\n onSave={handleRetryPayment}\n type={\"link\"}\n />\n </>\n ) : (\n <>\n <div>Payment provider not connected</div>\n <a className=\"font-bold text-teal hover:underline\" href=\"/portal/settings/banking\">\n Click here to connect to a payment provider\n </a>\n </>\n )}\n </Typography>\n )}\n\n {!retryingPayment && overduePayment && (\n <Typography variant=\"body\">\n <div className=\"font-bold\">Payment is overdue for this {isPackage ? \"package\" : \"appointment\"}</div>\n {practice.hasPaymentProvider ? (\n <>\n Please add a payment method for this client.{\" \"}\n <AddOrRetryButton\n appointment={appointmentCopy}\n headerLabel={\"Choose your payment method\"}\n label=\"Add or retry\"\n onSave={handleRetryPayment}\n type={\"link\"}\n />\n </>\n ) : (\n <>\n <div>Payment provider not connected</div>\n <a className=\"font-bold text-teal hover:underline\" href=\"/portal/settings/banking\">\n Click here to connect to a payment provider\n </a>\n </>\n )}\n </Typography>\n )}\n </div>\n </>\n )}\n <NewModal\n id=\"markPaidModal\"\n header=\"Mark as paid\"\n showFooter={true}\n fullHeightInMobile={true}\n hideModal={() => {\n NiceModal.hide(\"markPaidModal\")\n }}\n onSave={() => markAsPaid(appointment.id)}>\n <div className=\"sm:pb-12\">\n <Typography variant=\"body\" className=\"mb-6 text-gray-dark\">\n You can note how an offline payment was made:\n </Typography>\n {options.map((option) => (\n <RadioWithLabel\n key={option.value}\n id={option.value}\n label={option.label}\n checked={selectedPaymentOption === option.value}\n onChange={handleChange}\n value={option.value}\n name=\"paymentMethod\"\n className=\"mb-4\"\n />\n ))}\n {selectedPaymentOption === \"other\" && (\n <InputWithLabel\n label=\"Note how the client paid:\"\n value={otherPaymentOption}\n onChange={(e) => setOtherPaymentOption(e.target.value)}\n />\n )}\n </div>\n </NewModal>\n </div>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { EditableValue, TextArea } from \"./Inputs\"\n\nconst CLIENT_NOTES_QUERY = `\n query ClientNotes($clientId: ID!) {\n client(clientId: $clientId) {\n id\n clientNote { text time }\n }\n }\n`\n\nconst ADD_NOTE_MUTATION = `\n mutation($text: String!, $clientId: ID!) {\n addNote(text: $text, clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nconst ClientNotes = ({ client, className }) => {\n const [text, setText] = useState(\"\")\n const [{ data, fetching }, refetchQuery] = useQuery({\n query: CLIENT_NOTES_QUERY,\n variables: { clientId: client.id },\n requestPolicy: \"network-only\"\n })\n\n const [{ fetching: addNoteFetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n\n const onSave = () => {\n addNote({ text, clientId: client.id }).then((result) => {\n if (result.data?.addNote?.result === \"success\") {\n refetchQuery()\n } else {\n console.error(result)\n }\n })\n }\n\n const value = data?.client?.clientNote?.text || \"\"\n\n return (\n <EditableValue\n className={className}\n name=\"Client notes\"\n value={value.replaceAll(\"\\n\", \"<br />\")}\n saveDisabled={fetching || addNoteFetching || text.length < 1}\n disabled={fetching || addNoteFetching}\n titleClassName=\"text-sm\"\n truncateLength={null}\n onSave={onSave}\n onOpened={() => setText(value)}\n onCancel={() => setText(value)}>\n <TextArea value={text} onChange={(e) => setText(e.target.value)} />\n </EditableValue>\n )\n}\n\nexport default ClientNotes\n","import { ChevronRightIcon, XMarkIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatPhone } from \"../../../../utils/utils\"\nimport ClientNotes from \"../../../shared/ClientNotes\"\nimport Typography from \"../../../shared/Typography\"\nimport ClientSelector from \"../ClientSelector\"\n\nconst ClientInfo = () => {\n const { client, setClient, appointment, services, setServices, updateEndsAtWithServicesDuration } = useManualBooking()\n const { practice, practiceServices } = usePractice()\n\n const packageData =\n client?.openPackages?.find((p) => p.serviceId === services?.[0]?.service?.serviceId) || appointment?.package\n\n const handleClientSelect = (selectedClient) => {\n setClient(selectedClient)\n if (selectedClient.openPackages && selectedClient.openPackages.length > 0) {\n const selectedService = practiceServices.find(\n (service) => service.id === selectedClient.openPackages[0].serviceId\n )\n updateStateOnClientSelect(selectedService, selectedClient)\n } else if (selectedClient.lastBookedService) {\n const selectedService = practiceServices.find((service) => service.id === selectedClient.lastBookedService.id)\n updateStateOnClientSelect(selectedService, selectedClient)\n }\n }\n\n const updateStateOnClientSelect = (selectedService, selectedClient) => {\n if (selectedService) {\n const serviceObj = buildServiceObj(selectedService, selectedClient)\n setServices([serviceObj])\n updateEndsAtWithServicesDuration([serviceObj])\n }\n }\n\n const buildServiceObj = (selectedService, selectedClient) => {\n const selectedVariation = selectedService.variations[0]\n\n const serviceObj = {\n amountCents: selectedVariation.amountCents,\n service: {\n ...selectedService,\n id: selectedVariation.id,\n serviceId: selectedService.id,\n timeLength: selectedVariation.timeLength\n }\n }\n\n const customPrice = selectedClient.customPrices?.find((cp) => cp.serviceId === selectedVariation.id)\n if (customPrice) {\n const originalPrice = selectedVariation.amountCents\n return {\n ...serviceObj,\n amountCents: customPrice.amountCents,\n priceChanged: originalPrice !== customPrice.amountCents,\n saveCustomPrice: originalPrice !== customPrice.amountCents\n }\n }\n\n return serviceObj\n }\n\n return (\n <div className=\"mb-6\">\n {client && client.id ? (\n <div className=\"relative rounded-xl border border-gray-light px-4 py-2\">\n <a href={`/portal/clients/${client.id}`}>\n <Typography variant=\"h5\">\n {client.firstName} {client.lastName}\n </Typography>\n <Typography variant=\"small\">\n {client.email && `${client.email}`} {formatPhone(client.phone) && `${formatPhone(client.phone)}`}{\" \"}\n </Typography>\n {appointment && (\n <button className=\"absolute right-4 top-4\">\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n )}\n </a>\n\n {packageData && (\n <div className=\"-mx-4 -mb-2 mt-2 box-content bg-gray-ultralight px-4 py-2\">\n <Typography variant=\"small\">\n <span className=\"font-bold\">\n {appointment?.packageSessionNumber\n ? `Session ${appointment.packageSessionNumber} of ${packageData.numberOfSessions}`\n : `${packageData.sessionsRemaining} sessions left`}\n </span>\n : They purchased the '{packageData.name}' on{\" \"}\n {dayjs(packageData.createdAt).format(\"MM/DD/YYYY\")}.\n </Typography>\n </div>\n )}\n {practice.clientNotesEnabled && (\n <div className=\"-mx-4 -mb-2 mt-2 box-content rounded-b-xl px-4 py-2\">\n <ClientNotes client={client} />\n </div>\n )}\n {!appointment && (\n <button className=\"absolute right-4 top-4\" onClick={() => setClient(null)}>\n <XMarkIcon className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n ) : practiceServices ? (\n <ClientSelector defaultClient={client} onSelect={handleClientSelect} />\n ) : null}\n </div>\n )\n}\n\nexport default ClientInfo\n","import React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport LoadingSpinner from \"../../shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../shared/Modal\"\n\nconst DEFAULT_PAYMENT_METHOD_QUERY = `\n query($clientId: ID, $userId: ID, $practiceId: ID!) {\n defaultPaymentMethodPractice(clientId: $clientId, userId: $userId, practiceId: $practiceId) {\n brand\n last4\n expMonth\n expYear\n }\n }\n`\n\nconst ConfirmPackageModal = ({ showPackageConfirmModal, hideModal, onSave, client, amount, disabled, practice }) => {\n const clientId = client?.__typename === \"Client\" ? client?.id : null\n const userId = client?.__typename === \"User\" ? client?.id : null\n\n const [{ data, fetching, error }] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: { clientId, userId, practiceId: practice?.id },\n pause: !client?.id\n })\n\n if (error) console.error(error)\n\n const cardOnFile = data?.defaultPaymentMethodPractice\n const clientName = client?.firstName || \"This client\"\n\n return (\n <AnimatedModal\n visible={showPackageConfirmModal}\n hideModal={hideModal}\n header={cardOnFile ? \"Charge card on file now\" : \"No card on file\"}\n showFooter={true}\n actionButtonCopy={cardOnFile ? `Charge ${amount} now` : \"Continue & book\"}\n saveDisabled={disabled}\n onSave={onSave}>\n {fetching ? (\n <LoadingSpinner />\n ) : cardOnFile ? (\n <p>\n Booking this package will charge {clientName}'s card on file now ({cardOnFile.brand} ending in{\" \"}\n {cardOnFile.last4}) for {amount}. Click cancel to go back.\n </p>\n ) : (\n <p>{clientName} doesn't have a card on file, but you can still book this package and add a card later.</p>\n )}\n </AnimatedModal>\n )\n}\n\nexport default ConfirmPackageModal\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatPrice } from \"../../../../utils/utils\"\nimport ConfirmRescheduleModal from \"../../../shared/ConfirmRescheduleModal\"\nimport { Label, TextArea } from \"../../../shared/Inputs\"\nimport { AnimatedModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\nimport ConfirmPackageModal from \"../ConfirmPackageModal\"\n\nconst ConfirmModals = ({\n showReschedule,\n showCancelModal,\n showPackageConfirmModal,\n showPastAppointmentModal,\n onRescheduleSuccess,\n onCancelSuccess,\n hideRescheduleModal,\n hideCancelModal,\n hidePackageConfirmModal,\n hidePastAppointmentModal,\n onPackageConfirm,\n onPastAppointmentConfirm,\n practitionerNote,\n setPractitionerNote,\n cancelRecurringSeries,\n setCancelRecurringSeries\n}) => {\n const { appointment, client, services } = useManualBooking()\n const { practice } = usePractice()\n\n const serviceAmount = formatPrice(services?.[0]?.amountCents)\n\n return (\n <>\n {showReschedule && (\n <ConfirmRescheduleModal\n showReschedule={showReschedule}\n onRescheduleSuccess={onRescheduleSuccess}\n hideModal={hideRescheduleModal}\n />\n )}\n {showCancelModal && (\n <AnimatedModal\n visible={showCancelModal}\n hideModal={hideCancelModal}\n header=\"Cancel session now\"\n showFooter={true}\n cancelButtonCopy=\"No, don't cancel\"\n actionButtonCopy=\"Yes, cancel\"\n actionButtonType=\"destructive\"\n onSave={onCancelSuccess}>\n <Typography variant=\"subtitle\">You can add an optional message to the cancellation email.</Typography>\n <TextArea\n placeholder=\"Message to client (optional)\"\n onChange={(e) => setPractitionerNote(e.target.value)}\n value={practitionerNote}\n />\n {appointment.recurrenceFrequency && (\n <div className=\"mt-4\">\n <Label>Cancel recurring session</Label>\n <RadioWithLabel\n value={!cancelRecurringSeries}\n label=\"This session only\"\n checked={!cancelRecurringSeries}\n onChange={() => setCancelRecurringSeries(!cancelRecurringSeries)}\n />\n <RadioWithLabel\n className=\"mt-1.5\"\n value={cancelRecurringSeries}\n label=\"This and all following sessions\"\n checked={cancelRecurringSeries}\n onChange={() => setCancelRecurringSeries(!cancelRecurringSeries)}\n />\n </div>\n )}{\" \"}\n </AnimatedModal>\n )}\n <ConfirmPackageModal\n showPackageConfirmModal={showPackageConfirmModal}\n client={client}\n hideModal={hidePackageConfirmModal}\n practice={practice}\n onSave={onPackageConfirm}\n amount={serviceAmount}\n />\n {showPastAppointmentModal && (\n <AnimatedModal\n visible={showPastAppointmentModal}\n hideModal={hidePastAppointmentModal}\n header=\"Create Past Appointment\"\n showFooter={true}\n cancelButtonCopy=\"No, cancel\"\n actionButtonCopy=\"Yes, continue\"\n onSave={onPastAppointmentConfirm}>\n <p>\n It looks like you're creating an appointment in the past, are you sure this is what you want to do?\n </p>\n <br />\n {practice.hasPaymentProvider && <p>If the client has a card on file, it will be charged right away.</p>}\n </AnimatedModal>\n )}\n </>\n )\n}\n\nexport default ConfirmModals\n","import React from \"react\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../../contexts/PracticeContext\"\nimport { formatClientPhonePlusOne } from \"../../../../utils/utils\"\nimport { Banner } from \"../../../shared/Layout\"\n\nconst ErrorBanner = ({ appointmentErrors }) => {\n const { client } = useManualBooking()\n const { practicePhone, practiceEmail } = usePractice()\n const clientPhone = formatClientPhonePlusOne(client?.phone)\n const clientEmail = client?.email\n\n return (\n <>\n {appointmentErrors && (\n <Banner type=\"error\" className=\"mt-6\">\n {appointmentErrors}\n </Banner>\n )}\n\n {clientPhone === practicePhone && !!practicePhone && (\n <Banner className=\"mt-4\" type=\"error\">\n Cannot use your phone number for a client.\n </Banner>\n )}\n {clientEmail?.trim() === practiceEmail && (\n <Banner className=\"mt-4\" type=\"error\">\n Cannot use your email for a client.\n </Banner>\n )}\n </>\n )\n}\n\nexport default ErrorBanner\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useManualBooking } from \"../../../../contexts/ManualBookingContext\"\nimport { useToast } from \"../../../../contexts/ToastContext\"\nimport { Button } from \"../../../shared/Buttons\"\nimport { AnimatedModal } from \"../../../shared/Modal\"\nimport { RadioWithLabel } from \"../../../shared/RadioButtons\"\nimport Typography from \"../../../shared/Typography\"\n\nconst SEND_INVOICE = `\n mutation SendClientInvoiceMutation($appointmentId: ID!, $sendTo: String!) {\n sendClientInvoiceMutation(appointmentId: $appointmentId, sendTo: $sendTo) {\n result\n errors\n }\n }\n`\n\nexport default function ManualPaymentInvoiceSection() {\n const { appointment } = useManualBooking()\n\n const [showInvoiceModal, setShowInvoiceModal] = useState(false)\n const [sendTo, setSendTo] = useState(\"email\")\n\n const [, sendInvoice] = useMutation(SEND_INVOICE)\n const { showToast } = useToast()\n\n const sendInvoiceHandler = ({ appointmentId, sendTo }) => {\n sendInvoice({\n appointmentId,\n sendTo\n }).then((res) => {\n if (res?.data?.sendClientInvoiceMutation?.result === \"success\") {\n showToast(\"Invoice sent successfully\")\n } else {\n if (res?.data?.sendClientInvoiceMutation?.errors?.length > 0) {\n showToast({ content: res.data.sendClientInvoiceMutation.errors.join(\", \"), type: \"error\" })\n return\n }\n showToast({ content: \"Failed to send invoice\", type: \"error\" })\n }\n })\n }\n\n return (\n <div className=\"mb-4 flex justify-between\">\n <Button type=\"secondary\" onClick={() => window.open(\"/m/c/\" + appointment.instantActionToken, \"_blank\")}>\n In Person Payment\n </Button>\n <Button type=\"secondary\" onClick={() => setShowInvoiceModal(true)}>\n Send invoice\n </Button>\n\n <AnimatedModal\n visible={showInvoiceModal}\n hideModal={() => setShowInvoiceModal(false)}\n header={\"Send invoice notification\"}\n showFooter={true}\n actionButtonCopy=\"Send now\"\n onSave={() => {\n sendInvoiceHandler({\n appointmentId: appointment.id,\n sendTo\n })\n setShowInvoiceModal(false)\n }}>\n <Typography variant=\"subtitle\">Where do you want to send?</Typography>\n <div className=\"mt-4 flex flex-col gap-2\">\n <RadioWithLabel\n label=\"Email\"\n name=\"sendTo\"\n value=\"email\"\n checked={sendTo === \"email\"}\n onChange={() => setSendTo(\"email\")}\n />\n <RadioWithLabel\n label=\"SMS\"\n name=\"sendTo\"\n value=\"sms\"\n checked={sendTo === \"sms\"}\n onChange={() => setSendTo(\"sms\")}\n />\n <RadioWithLabel\n label=\"Both\"\n name=\"sendTo\"\n value=\"both\"\n checked={sendTo === \"both\"}\n onChange={() => setSendTo(\"both\")}\n />\n </div>\n </AnimatedModal>\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../../../@core/appointment/appointment.model\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { formatPhone } from \"../../../utils/utils\"\nimport AppointmentAdjustments from \"../../shared/AppointmentAdjustments\"\nimport { Link } from \"../../shared/Links\"\n\nimport {\n PRACTICE_QUERY,\n CREATE_APPOINTMENT_MUTATION,\n CANCEL_APPOINTMENT_MUTATION,\n ACCEPT_APPOINTMENT_MUTATION,\n DECLINE_APPOINTMENT_MUTATION,\n UPDATE_APPOINTMENT_V2_MUTATION\n} from \"./appointment_graphql\"\nimport AppointmentActions from \"./client_event_form/AppointmentActions\"\nimport AppointmentDetails from \"./client_event_form/AppointmentDetails\"\nimport AppointmentReview from \"./client_event_form/AppointmentReview\"\nimport AppointmentStatus from \"./client_event_form/AppointmentStatus\"\nimport ClientInfo from \"./client_event_form/ClientInfo\"\nimport ConfirmModals from \"./client_event_form/ConfirmModals\"\nimport ErrorBanner from \"./client_event_form/ErrorBanner\"\nimport ManualPaymentInvoiceSection from \"./client_event_form/ManualPaymentInvoiceSection\"\n\nconst ClientEventForm = ({\n onAppointmentChanged,\n onRescheduleSuccess,\n onAppointmentCancelled,\n onRecurringAppointmentsChanged\n}) => {\n const [showReschedule, setShowReschedule] = useState(null)\n const [practitionerNote, setPractitionerNote] = useState(\"\")\n const [showCancelModal, setShowCancelModal] = useState(false)\n const [showPackageConfirmModal, setShowPackageConfirmModal] = useState(false)\n const [showPastAppointmentModal, setShowPastAppointmentModal] = useState(false)\n const [pendingAction, setPendingAction] = useState(null)\n const [cancelRecurringSeries, setCancelRecurringSeries] = useState(false)\n\n const {\n appointment,\n services,\n locationId,\n client,\n startsAt,\n endsAt,\n recurringStartTimes,\n recurrencePattern,\n createRecurringAppointments,\n createRecurringAppointmentsFetching,\n resetBookingState,\n appointmentErrors,\n setAppointmentErrors\n } = useManualBooking()\n\n const [{ fetching: createFetching }, createAppointment] = useMutation(CREATE_APPOINTMENT_MUTATION)\n const [{ fetching: updateV2Fetching }, updateAppointmentV2] = useMutation(UPDATE_APPOINTMENT_V2_MUTATION)\n const [{ fetching: cancelFetching }, cancelAppointment] = useMutation(CANCEL_APPOINTMENT_MUTATION)\n const [{ fetching: acceptFetching }, acceptAppointment] = useMutation(ACCEPT_APPOINTMENT_MUTATION)\n const [{ fetching: declineFetching }, declineAppointment] = useMutation(DECLINE_APPOINTMENT_MUTATION)\n\n const fetching =\n createFetching ||\n updateV2Fetching ||\n cancelFetching ||\n createRecurringAppointmentsFetching ||\n acceptFetching ||\n declineFetching\n\n const { showToast } = useToast()\n const { practice, setPracticeServices, setPractice } = usePractice()\n\n const [{ data: practiceData }] = useQuery({\n query: PRACTICE_QUERY,\n variables: { includePrivate: true, includeAddOns: true },\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (practiceData?.currentPractice?.services) {\n setPracticeServices(practiceData.currentPractice.services)\n }\n if (practiceData && practiceData.currentPractice.bookingAvailability.availableSlots && !appointment) {\n resetDefaultValues()\n setPractice((prev) => ({ ...prev, bookingAvailability: practiceData.currentPractice.bookingAvailability }))\n }\n }, [practiceData, appointment])\n\n const resetDefaultValues = () => {\n resetBookingState()\n }\n\n const handleErrors = (data, successCallback) => {\n if (data?.result === \"success\") {\n successCallback(data)\n } else {\n setAppointmentErrors(data?.errors?.join() || \"Unexpected error. Please contact support if this persists.\")\n }\n }\n\n const createManualAppointment = () => {\n let clientId = null\n let newClient = null\n\n if (client.id) {\n clientId = client.id\n } else {\n newClient = client\n }\n\n createAppointment({\n appointmentServices: services\n .filter((service) => service.service?.id)\n .map((service) => ({\n amountCents: service.amountCents,\n serviceId: service.service.id,\n saveCustomPrice: service.saveCustomPrice\n })),\n locationId: locationId,\n startsAt,\n endsAt,\n clientId: clientId,\n client: newClient\n }).then((result) => {\n handleErrors(result.data.proCreateAppointment, () => {\n resetDefaultValues()\n setShowPackageConfirmModal(false)\n showToast(\"Appointment created successfully.\")\n onAppointmentChanged(result.data.proCreateAppointment.appointment)\n })\n })\n }\n\n const editManualAppointment = () => {\n updateAppointmentV2({\n appointmentId: appointment.id,\n appointmentServices: services\n .filter((service) => service.service?.id)\n .map((service) => ({\n amountCents: service.amountCents,\n serviceId: service.service.id,\n saveCustomPrice: service.saveCustomPrice\n })),\n locationId,\n startsAt,\n endsAt,\n practitionerNote\n }).then((result) => {\n handleErrors(result.data?.updateAppointmentV2, () => {\n showToast(\"Appointment updated successfully.\")\n onAppointmentChanged(result.data?.updateAppointmentV2?.appointment)\n })\n })\n }\n\n const handleCancelSuccess = () => {\n cancelAppointment({ appointmentId: appointment.id, practitionerNote, cancelRecurringSeries }).then((result) => {\n if (result.data.cancelAppointment.result === \"success\") {\n setShowCancelModal(false)\n showToast({\n type: \"info\",\n content: cancelRecurringSeries ? \"Your recurring series was cancelled\" : \"Your appointment was cancelled\"\n })\n onAppointmentCancelled(result.data.cancelAppointment.cancelledAppointmentIds)\n } else {\n setShowCancelModal(false)\n setAppointmentErrors(result.data.cancelAppointment.errors.join())\n }\n })\n }\n\n const handlePackageConfirm = () => {\n if (recurringStartTimes && recurrencePattern) {\n createRecurringAppointments((appointments) => {\n resetDefaultValues()\n onRecurringAppointmentsChanged(appointments)\n setShowPackageConfirmModal(false)\n })\n } else {\n createManualAppointment()\n }\n }\n\n const handlePastAppointmentConfirm = () => {\n if (pendingAction) {\n pendingAction()\n }\n setShowPastAppointmentModal(false)\n setPendingAction(null)\n }\n\n const showManualPaymentButton =\n appointment?.paymentStatus !== PAYMENT_STATUS_OPTIONS.PAID && appointment?.amountCents > 0\n\n let clientPhone = formatPhone(client?.phone)\n if (clientPhone) {\n clientPhone = clientPhone.startsWith(\"+1\") || clientPhone.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n }\n\n return (\n <div className={fetching ? \"pointer-events-none opacity-25\" : \"\"}>\n {appointment && <AppointmentStatus />}\n\n {showManualPaymentButton && <ManualPaymentInvoiceSection />}\n\n <ClientInfo />\n\n {practice.clientNotesEnabled && client && appointment && (\n <div className=\"mb-6 flex w-full justify-end\">\n <Link href={`/portal/clients/${client?.id}#${appointment.instantActionToken}`}>+ Add appointment notes</Link>\n </div>\n )}\n\n <AppointmentDetails />\n\n <AppointmentReview />\n\n {appointment && appointment.paymentStatus === \"Paid\" && <AppointmentAdjustments />}\n\n <ErrorBanner appointmentErrors={appointmentErrors} />\n\n <AppointmentActions\n fetching={fetching}\n onDecline={() => declineAppointment({ appointmentId: appointment.id })}\n removeAppointmentFromCalendar={onAppointmentCancelled}\n onAccept={() => acceptAppointment({ appointmentId: appointment.id })}\n onAppointmentChanged={onAppointmentChanged}\n onCancel={() => setShowCancelModal(true)}\n createManualAppointment={createManualAppointment}\n editManualAppointment={editManualAppointment}\n onRecurringAppointmentsChanged={onRecurringAppointmentsChanged}\n resetBookingState={resetBookingState}\n setShowPackageConfirmModal={setShowPackageConfirmModal}\n setShowPastAppointmentModal={setShowPastAppointmentModal}\n setPendingAction={setPendingAction}\n />\n\n <ConfirmModals\n showReschedule={showReschedule}\n showCancelModal={showCancelModal}\n showPackageConfirmModal={showPackageConfirmModal}\n showPastAppointmentModal={showPastAppointmentModal}\n onRescheduleSuccess={onRescheduleSuccess}\n onCancelSuccess={handleCancelSuccess}\n hideRescheduleModal={() => setShowReschedule(false)}\n hideCancelModal={() => setShowCancelModal(false)}\n hidePackageConfirmModal={() => setShowPackageConfirmModal(false)}\n hidePastAppointmentModal={() => {\n setShowPastAppointmentModal(false)\n setPendingAction(null)\n }}\n onPackageConfirm={handlePackageConfirm}\n onPastAppointmentConfirm={handlePastAppointmentConfirm}\n practitionerNote={practitionerNote}\n setPractitionerNote={setPractitionerNote}\n cancelRecurringSeries={cancelRecurringSeries}\n setCancelRecurringSeries={setCancelRecurringSeries}\n />\n </div>\n )\n}\n\nexport default ClientEventForm\n","import dayjs from \"dayjs\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { UPSERT_PERSONAL_EVENT } from \"../../../utils/mutations\"\nimport { Button } from \"../../shared/Buttons\"\nimport DatePicker from \"../../shared/DatePicker\"\nimport { CheckBox, Input, Label, TimePicker } from \"../../shared/Inputs\"\nimport { AnimatedModal } from \"../../shared/Modal\"\n\nconst DELETE_PERSONAL_EVENT = `\n mutation DeletePersonalEvent ($id: ID!) {\n deletePersonalEvent (id: $id) {\n result\n errors\n }\n }\n`\n\nconst combineDateAndTime = (date, time) => {\n const tempDate = new Date(date)\n tempDate.setHours(parseInt(time.split(\":\")[0]), parseInt(time.split(\":\")[1]), 0)\n return dayjs(tempDate).format(\"YYYY-MM-DDTHH:mm:ssZ\")\n}\n\nexport default function PersonalEventForm({ onCreate, onDelete, personalEvent, clickedTime }) {\n const [name, setName] = useState(personalEvent?.title || \"\")\n const [startDate, setStartDate] = useState(new Date())\n const [endDate, setEndDate] = useState(new Date())\n const [startTime, setStartTime] = useState(\"10:00\")\n const [endTime, setEndTime] = useState(\"11:00\")\n const [allDay, setAllDay] = useState(personalEvent?.allDay || false)\n const [showCancelModal, setShowCancelModal] = useState(false)\n const [errors, setErrors] = useState([])\n const [, upsertPersonalEvent] = useMutation(UPSERT_PERSONAL_EVENT)\n const [, deletePersonalEvent] = useMutation(DELETE_PERSONAL_EVENT)\n\n useEffect(() => {\n let newStartDate, newEndDate\n\n if (personalEvent) {\n newStartDate = new Date(personalEvent.start)\n newEndDate = new Date(personalEvent.allDay ? dayjs(personalEvent.end).subtract(1, \"day\") : personalEvent.end)\n } else if (clickedTime) {\n newStartDate = new Date(clickedTime)\n newEndDate = new Date(clickedTime)\n newEndDate.setHours(newEndDate.getHours() + 1)\n } else {\n newStartDate = new Date()\n newEndDate = new Date()\n newEndDate.setHours(newEndDate.getHours() + 1)\n }\n\n setStartDate(newStartDate)\n setEndDate(newEndDate)\n setStartTime(dayjs(newStartDate).format(\"HH:mm\"))\n setEndTime(dayjs(newEndDate).format(\"HH:mm\"))\n setName(personalEvent?.title || \"\")\n setAllDay(personalEvent?.allDay || false)\n }, [personalEvent, clickedTime])\n\n const personalEventId = personalEvent ? Number(personalEvent.id.split(\"-\").slice(-1)[0]) : undefined\n\n return (\n <div className=\"relative\">\n <div className=\"mb-4 flex flex-col\">\n <Input\n id=\"event-name\"\n value={name}\n placeholder=\"Event name (optional)\"\n onChange={(event) => {\n setName(event.target.value)\n }}\n />\n <div className=\"mt-2\">\n <CheckBox\n id=\"all-day-checkbox\"\n label=\"All-Day\"\n name=\"All-Day\"\n checked={allDay}\n onChange={() => {\n setAllDay(!allDay)\n }}\n />\n </div>\n </div>\n <div className=\"flex flex-row justify-between gap-4\">\n <div className=\"mb-4 flex w-1/2 flex-col\">\n <Label>Start date</Label>\n <DatePicker className=\"w-full\" selected={startDate} onChange={(date) => setStartDate(date)} />\n </div>\n <div className=\"flex w-1/2 flex-col\">\n <Label>End date</Label>\n <DatePicker className=\"w-full\" selected={endDate} onChange={(date) => setEndDate(date)} minDate={startDate} />\n </div>\n </div>\n {!allDay && (\n <div className=\"flex flex-row justify-between gap-4\">\n <div className=\"w-1/2\">\n <Label htmlFor=\"personal-event-start-time\">Start time</Label>\n <TimePicker\n id=\"personal-event-start-time\"\n value={startTime}\n valueFormat=\"H:mm\"\n showFifteenIncrements={true}\n onChange={(e) => setStartTime(e.target.value)}\n />\n </div>\n <div className=\"w-1/2\">\n <Label htmlFor=\"personal-event-end-time\">End time</Label>\n <TimePicker\n id=\"personal-event-end-time\"\n value={endTime}\n valueFormat=\"H:mm\"\n showFifteenIncrements={true}\n onChange={(e) => setEndTime(e.target.value)}\n />\n </div>\n </div>\n )}\n\n {errors.length > 0 && (\n <div className=\"mb-4 rounded p-3 text-red\">\n <ul className=\"list-disc pl-5\">\n {errors.map((error, index) => (\n <li key={index}>{error}</li>\n ))}\n </ul>\n </div>\n )}\n\n <div className=\"mt-10 flex w-full items-end justify-end gap-4 border-t border-gray-light py-4\">\n {personalEvent && (\n <Button className=\"sm:w-full\" type=\"warning\" onClick={() => setShowCancelModal(true)}>\n Cancel Event\n </Button>\n )}\n <Button\n type=\"primary\"\n className=\"sm:w-full\"\n onClick={() => {\n const variables = {\n name,\n allDay,\n startsAt: combineDateAndTime(startDate, startTime),\n endsAt: combineDateAndTime(endDate, endTime),\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n }\n if (personalEvent) {\n variables.id = personalEventId\n }\n setErrors([])\n upsertPersonalEvent(variables).then((result) => {\n if (result.error) {\n console.error(result.error)\n setErrors([\"An unexpected error occurred. Please try again.\"])\n } else if (result.data.upsertPersonalEvent.errors?.length > 0) {\n setErrors(result.data.upsertPersonalEvent.errors)\n } else {\n onCreate(result.data.upsertPersonalEvent.personalEvent)\n }\n })\n }}>\n Save\n </Button>\n </div>\n <AnimatedModal\n visible={showCancelModal}\n hideModal={() => setShowCancelModal(false)}\n header=\"Cancel Event\"\n showFooter={true}\n cancelButtonCopy=\"Go back\"\n actionButtonCopy=\"Cancel\"\n actionButtonType=\"destructive\"\n onSave={() => {\n deletePersonalEvent({ id: personalEventId }).then((response) => {\n if (response.data.deletePersonalEvent?.result === \"success\") {\n setShowCancelModal(false)\n onDelete(personalEventId)\n } else {\n console.error(response)\n }\n })\n }}>\n <p>Are you sure you want to cancel this personal event?</p>\n </AnimatedModal>\n </div>\n )\n}\n","import React from \"react\"\n\nimport { useCalendarFlyout } from \"../../../contexts/CalendarFlyoutContext\"\nimport { useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { usePractice } from \"../../../contexts/PracticeContext\"\nimport BookableEventForm from \"../../../pages/BookableEvents/BookableEventForm\"\nimport BookableEventRegistrants from \"../../../pages/BookableEvents/BookableEventRegistrants\"\nimport { useBookableEvents } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport { BookableEventTypesProvider } from \"../../../pages/BookableEventTypes/BookableEventTypesContext\"\nimport { ToggleButtonGroup } from \"../../shared/Inputs\"\nimport { Flyout } from \"../../shared/Layout\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\n\nimport CalendarEvent from \"./CalendarEvent\"\nimport ClientEventForm from \"./ClientEventForm\"\nimport PersonalEventForm from \"./PersonalEventForm\"\n\nexport default function AppointmentFlyout({\n personalEvent: selectedPersonalEvent,\n calendarEvent: selectedCalendarEvent,\n clickedTime,\n onAppointmentChanged,\n onCreatePersonal,\n onDeletePersonal,\n onRescheduleSuccess,\n onAppointmentCancelled,\n onRecurringAppointmentsChanged,\n onBookableEventChanged,\n onDeleteBookableEvent,\n visible,\n closeFlyout\n}) {\n const { appointment } = useManualBooking()\n const { eventType, setEventType } = useCalendarFlyout()\n const { bookableEvent, bookableEventTab, setBookableEventTab } = useBookableEvents()\n const { practice } = usePractice()\n\n const sidebarHeader = () => {\n if (selectedCalendarEvent) return selectedCalendarEvent.title\n\n if (eventType === \"personal\") {\n return selectedPersonalEvent ? \"Edit personal event\" : \"Create personal event\"\n }\n\n if (eventType === \"bookable\") {\n return bookableEvent?.id ? \"Edit class/event\" : \"Create class/event\"\n }\n\n if (!appointment) return \"Create appointment\"\n\n let upcoming = false\n let pending = false\n\n if (appointment) {\n upcoming = new Date(appointment.startsAt) >= new Date()\n pending = appointment.state === \"pending\"\n } else if (selectedPersonalEvent) {\n upcoming = new Date(selectedPersonalEvent.startDate) >= new Date()\n }\n\n if (pending && upcoming) return \"New appointment request\"\n if (upcoming) return \"Upcoming appointment\"\n return \"Past appointment\"\n }\n\n const handlePersonalEventCreate = (personalEvent) => {\n setEventType(\"appointment\")\n onCreatePersonal(personalEvent)\n }\n\n const handleCloseFlyout = () => {\n closeFlyout()\n }\n const showRadioButtons = !appointment && !selectedPersonalEvent && !selectedCalendarEvent && !bookableEvent?.id\n\n return (\n <Flyout header={sidebarHeader()} visible={visible} closeFlyout={handleCloseFlyout}>\n <div className=\"relative\">\n {showRadioButtons && (\n <>\n <div className=\"mb-4 flex flex-row gap-4\">\n <RadioWithLabel\n value=\"client\"\n name=\"event-type\"\n label=\"Client\"\n checked={eventType === \"client\"}\n onChange={(e) => setEventType(e.target.value)}\n />\n <RadioWithLabel\n value=\"personal\"\n name=\"event-type\"\n label=\"Personal\"\n checked={eventType === \"personal\"}\n onChange={(e) => setEventType(e.target.value)}\n />\n {practice?.bookableEventsEnabled && (\n <RadioWithLabel\n value=\"bookable\"\n name=\"event-type\"\n label=\"Class/Event\"\n checked={eventType === \"bookable\"}\n onChange={(e) => setEventType(e.target.value)}\n />\n )}\n </div>\n </>\n )}\n\n {eventType === \"personal\" ? (\n <PersonalEventForm\n onCreate={handlePersonalEventCreate}\n onDelete={onDeletePersonal}\n personalEvent={selectedPersonalEvent}\n clickedTime={clickedTime}\n />\n ) : eventType === \"client\" ? (\n <ClientEventForm\n onAppointmentChanged={onAppointmentChanged}\n onRescheduleSuccess={onRescheduleSuccess}\n onAppointmentCancelled={onAppointmentCancelled}\n onRecurringAppointmentsChanged={onRecurringAppointmentsChanged}\n />\n ) : eventType === \"bookable\" ? (\n <BookableEventTypesProvider>\n {bookableEvent?.id && (\n <>\n <ToggleButtonGroup\n className=\"mb-4\"\n value={bookableEventTab}\n onChange={(value) => setBookableEventTab(value)}\n options={[\n { label: \"Details\", value: \"details\" },\n { label: \"Registrants\", value: \"registrants\" }\n ]}\n />\n </>\n )}\n {bookableEventTab === \"details\" ? (\n <BookableEventForm\n onBookableEventChanged={onBookableEventChanged}\n onDeleteBookableEvent={onDeleteBookableEvent}\n />\n ) : bookableEventTab === \"registrants\" ? (\n <BookableEventRegistrants />\n ) : null}\n </BookableEventTypesProvider>\n ) : eventType === \"calendar\" ? (\n <CalendarEvent calendarEvent={selectedCalendarEvent} />\n ) : null}\n </div>\n </Flyout>\n )\n}\n","import dayGridPlugin from \"@fullcalendar/daygrid\"\nimport interactionPlugin from \"@fullcalendar/interaction\"\nimport FullCalendar from \"@fullcalendar/react\"\nimport timeGridPlugin from \"@fullcalendar/timegrid\"\nimport dayjs from \"dayjs\"\nimport React, { useRef, useEffect, useState } from \"react\"\nimport LoadingBar from \"react-top-loading-bar\"\n\nimport { CalendarFlyoutProvider } from \"../../../contexts/CalendarFlyoutContext\"\nimport { FeatureFlagProvider } from \"../../../contexts/FeatureFlagContext\"\nimport { ManualBookingProvider } from \"../../../contexts/ManualBookingContext\"\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { ProCalendarProvider, useProCalendar } from \"../../../contexts/ProCalendarContext\"\nimport { BookableEventsProvider } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { handleDayHeaderContent, renderEventContent } from \"../../../utils/calendarUtils\"\nimport AcceptTermsModal from \"../../shared/AcceptTermsModal\"\nimport ConfirmRescheduleModal from \"../../shared/ConfirmRescheduleModal\"\n\nimport AppointmentFlyout from \"./AppointmentFlyout\"\n\nconst initialIsMobile = () => window.innerWidth < 768\n\nconst CalendarComponent = () => {\n const {\n calendarEvents,\n isLoading,\n handleEventClick,\n handleDateClick,\n handleDragReschedule,\n isFlyoutVisible,\n selectedPersonalEvent,\n selectedExternalEvent,\n closeFlyout,\n calendarData,\n selectedDateTime,\n handleCreatePersonalEvent,\n handleDeletePersonalEvent,\n handleAppointmentChange,\n handleRecurringAppointmentsChange,\n handleAppointmentCancellation,\n handleRescheduleSuccess,\n showRescheduleConfirm,\n hideRescheduleConfirm,\n handleCreateAppointmentButtonClick,\n handleDatesSet,\n handleBookableEventChange,\n handleDeleteBookableEvent\n } = useProCalendar()\n\n const [isMobile, setIsMobile] = useState(initialIsMobile())\n const loadingBarRef = useRef(null)\n\n useEffect(() => {\n const handleResize = () => setIsMobile(window.innerWidth < 768)\n window.addEventListener(\"resize\", handleResize)\n return () => window.removeEventListener(\"resize\", handleResize)\n }, [])\n\n useEffect(() => {\n if (isLoading) {\n loadingBarRef.current.continuousStart()\n } else {\n loadingBarRef.current.complete()\n }\n }, [isLoading])\n\n return (\n <>\n <LoadingBar color={\"rgb(var(--color-teal))\"} height={3} ref={loadingBarRef} />\n <FullCalendar\n plugins={[timeGridPlugin, dayGridPlugin, interactionPlugin]}\n initialView={isMobile ? \"timeGridDay\" : \"timeGridWeek\"}\n headerToolbar={{\n left: isMobile ? \"prev,title,next\" : \"today prev,next,title timeGridDay,timeGridWeek,dayGridMonth\",\n center: \"\",\n right: \"createAppointment\"\n }}\n customButtons={{\n createAppointment: {\n text: \"Create appointment\",\n click: handleCreateAppointmentButtonClick\n }\n }}\n datesSet={handleDatesSet}\n editable={true}\n events={calendarEvents}\n eventContent={renderEventContent}\n eventClick={handleEventClick}\n dateClick={handleDateClick}\n eventDrop={handleDragReschedule}\n eventResize={handleDragReschedule}\n views={{\n timeGridWeek: {\n titleFormat: { year: \"numeric\", month: \"long\" },\n dayHeaderContent: handleDayHeaderContent\n },\n timeGridDay: {\n dayHeaderContent: handleDayHeaderContent\n }\n }}\n slotDuration=\"00:15\"\n slotLabelInterval=\"01:00\"\n nowIndicator={true}\n contentHeight={isMobile ? 200 : 1600}\n expandRows={!isMobile}\n slotMinTime={\"00:00:00\"}\n scrollTime={dayjs().format(\"HH:mm:ss\") || \"07:00:00\"}\n />\n\n <AppointmentFlyout\n personalEvent={selectedPersonalEvent}\n calendarEvent={selectedExternalEvent}\n clickedTime={selectedDateTime}\n onAppointmentChanged={handleAppointmentChange}\n onCreatePersonal={handleCreatePersonalEvent}\n onDeletePersonal={handleDeletePersonalEvent}\n onRescheduleSuccess={handleRescheduleSuccess}\n onAppointmentCancelled={handleAppointmentCancellation}\n onRecurringAppointmentsChanged={handleRecurringAppointmentsChange}\n visible={isFlyoutVisible}\n closeFlyout={closeFlyout}\n onBookableEventChanged={handleBookableEventChange}\n onDeleteBookableEvent={handleDeleteBookableEvent}\n />\n\n {showRescheduleConfirm && (\n <ConfirmRescheduleModal\n showReschedule={showRescheduleConfirm}\n onRescheduleSuccess={handleRescheduleSuccess}\n hideModal={hideRescheduleConfirm}\n />\n )}\n\n {calendarData?.currentUser?.practice && (\n <AcceptTermsModal showModal={calendarData.currentUser.practice.showTermsModal} />\n )}\n </>\n )\n}\n\nconst ProCalendar = ({ featureFlags }) => (\n <DefaultProvider>\n <FeatureFlagProvider flags={featureFlags}>\n <PracticeProvider>\n <ManualBookingProvider>\n <BookableEventsProvider>\n <CalendarFlyoutProvider>\n <ProCalendarProvider>\n <CalendarComponent />\n </ProCalendarProvider>\n </CalendarFlyoutProvider>\n </BookableEventsProvider>\n </ManualBookingProvider>\n </PracticeProvider>\n </FeatureFlagProvider>\n </DefaultProvider>\n)\n\nexport default ProCalendar\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst SEND_INTAKE_FORM_MUTATION = `\n mutation SendIntakeForm($clientId: ID!) {\n sendIntakeForm(clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nconst SendIntakeFormButton = ({ clientId, intakeLastSentAt }) => {\n const [{ fetching }, sendIntakeForm] = useMutation(SEND_INTAKE_FORM_MUTATION)\n const [sentForm, setSentForm] = useState(false)\n\n const { showToast } = useToast()\n\n return (\n <div className=\"flex flex-col gap-1\">\n <Button\n className=\"w-fit\"\n disabled={fetching}\n onClick={() => {\n sendIntakeForm({ clientId }).then((result) => {\n if (result.error) {\n console.error(result.error) // eslint-disable-line no-console\n showToast({ content: \"Error sending intake form\", type: \"error\" })\n } else if (result.data.sendIntakeForm.result === \"error\") {\n showToast({ content: result.data.sendIntakeForm.errors.join(\", \"), type: \"error\" })\n } else if (result.data.sendIntakeForm.result === \"success\") {\n showToast(\"Intake form sent 🎉\")\n setSentForm(true)\n }\n })\n }}>\n Send intake form\n </Button>\n {(intakeLastSentAt || sentForm) && (\n <Typography variant=\"micro\">Last sent {dayjs(sentForm ? new Date() : intakeLastSentAt).fromNow()}</Typography>\n )}\n </div>\n )\n}\n\nexport default SendIntakeFormButton\n","import React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Link } from \"../../components/shared/Links\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\n\nimport SendIntakeFormButton from \"./SendIntakeFormButton\"\n\nconst CLIENT_HAS_INTAKE_FORM_QUERY = `\n query IntakeForm($clientId: ID!) {\n client(clientId: $clientId) {\n id\n intakeFormSubmitted\n intakeLastSentAt\n }\n }\n`\n\nconst IntakeFormSection = ({ clientId }) => {\n const [{ data, fetching }] = useQuery({\n query: CLIENT_HAS_INTAKE_FORM_QUERY,\n variables: { clientId },\n requestPolicy: \"network-only\"\n })\n\n if (fetching) return <LoadingSpinner />\n\n const hasIntakeForm = data?.client?.intakeFormSubmitted\n\n return (\n <div>\n {hasIntakeForm ? (\n <Link href={`/portal/clients/${clientId}/intake_form`}>View intake form</Link>\n ) : (\n <SendIntakeFormButton clientId={clientId} intakeLastSentAt={data?.client?.intakeLastSentAt} />\n )}\n </div>\n )\n}\n\nexport default IntakeFormSection\n","import React, { useState } from \"react\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../components/payments/PaymentProviderWrapper\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst AddCreditCardModal = ({ headerLabel, open, closeModal, practice, onSave }) => {\n const [loading, setLoading] = useState(false)\n const { showToast } = useToast()\n\n const { handleCardSavedOnProvider } = usePaymentProvider()\n\n const handleCardSaved = async () => {\n const showErrorAndClose = (message) => {\n showToast({ content: `There was an error: ${message}`, type: \"error\" })\n setLoading(false)\n closeModal()\n }\n\n setLoading(true)\n\n const paymentProviderResult = await handleCardSavedOnProvider()\n if (paymentProviderResult.error) {\n showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n return\n }\n\n setLoading(false)\n showToast({ content: \"Card saved successfully\", type: \"success\" })\n closeModal()\n onSave()\n }\n\n return (\n <AnimatedModal\n visible={open}\n hideModal={closeModal}\n header={headerLabel}\n showFooter={true}\n onSave={handleCardSaved}\n saveDisabled={loading}>\n <div className=\"mt-4\">\n <Typography variant=\"h5\" className=\"mb-4\">\n New Credit card\n </Typography>\n <PaymentProviderCardForm practice={practice} />\n </div>\n </AnimatedModal>\n )\n}\n\nexport default AddCreditCardModal\n","import React from \"react\"\n\nimport { Divider } from \"../../shared/Layout\"\nimport Typography from \"../../shared/Typography\"\n\nexport default function AppointmentSummaryRow({ appointment, hideDivider }) {\n const startsAtDate = new Date(appointment.startsAt)\n const endsAtDate = new Date(appointment.endsAt)\n const duration = (endsAtDate - startsAtDate) / 60000\n\n return (\n <div className=\"py-1\">\n <div className=\"flex flex-row sm:flex-col\">\n <div className=\"flex w-full flex-col\">\n <Typography variant=\"small\" className=\"mb-1 text-gray-dark\">\n {appointment.service.name}\n </Typography>\n <Typography variant=\"small\" className=\"mb-1 text-gray-dark\">\n <span>{duration} minutes</span> <span>·</span> <span>{appointment.location.shortSingleLine}</span>\n </Typography>\n {!hideDivider && <Divider className=\"mt-6\" />}\n </div>\n </div>\n </div>\n )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Label } from \"../../shared/Inputs\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nimport AppointmentSummaryRow from \"./AppointmentSummaryRow\"\n\nconst PAST_APPOINTMENTS_QUERY = `\n query PastAppointments($clientId: ID, $userId: ID){\n pastAppointments(clientId: $clientId, userId: $userId) {\n id\n isVirtual\n startsAt\n endsAt\n amountCents\n timeZone\n instantActionToken\n isReviewed\n state\n hasEndorsements\n hasTextReview\n fullTotal\n user {\n id\n name\n phone\n email\n }\n client {\n id\n firstName\n userId\n email\n phone\n }\n practice {\n id\n isStripeApproved\n user {\n id\n name\n profilePhotos {\n xLarge {\n jpeg\n webp\n }\n large {\n jpeg\n webp\n }\n medium {\n jpeg\n webp\n }\n small {\n jpeg\n webp\n }\n original {\n jpeg\n webp\n }\n }\n }\n }\n service {\n id\n name\n timeLength\n description\n photoUrl\n parent {\n id\n name\n description\n photoUrl\n timeLength\n }\n variations {\n id\n timeLength\n amountCents\n }\n }\n location {\n id\n name\n latitude\n longitude\n singleLine\n shortSingleLine\n virtualLink\n virtualInstructions\n }\n review {\n id\n review\n rating\n endorsedSkillIds\n videoUrl\n skillsForEndorsement {\n id\n name\n }\n }\n }\n }\n`\n\nexport default function AppointmentHistory({ client, appointment, limit }) {\n const [{ data, fetching }] = useQuery({\n query: PAST_APPOINTMENTS_QUERY,\n variables: { clientId: client?.id },\n requestPolicy: \"cache-and-network\"\n })\n\n let pastAppointments = data?.pastAppointments\n if (pastAppointments && limit) {\n pastAppointments = pastAppointments.slice(0, limit)\n }\n\n return (\n <div>\n <Label>Past appointments</Label>\n {fetching ? (\n <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n ) : (\n <div>\n {pastAppointments && pastAppointments.length > 0 ? (\n <div>\n {pastAppointments.map((pastAppointment, index) => {\n const isLastItem = index === pastAppointments.length - 1\n if (!appointment || pastAppointment.id !== appointment?.id) {\n return (\n <div key={index} className=\"pt-0\">\n <p>{dayjs(pastAppointment.startsAt).format(\"dddd, MMMM DD, h:mm a\")}</p>\n <AppointmentSummaryRow appointment={pastAppointment} hideDivider={isLastItem} />\n </div>\n )\n }\n return null\n })}\n {limit && data.pastAppointments.length > limit && (\n <div className=\"mt-2 flex justify-end\">\n <Link href={`/portal/clients/${client.id}`}>\n View all {data.pastAppointments.length} past appointments\n </Link>\n </div>\n )}\n </div>\n ) : (\n <Typography variant=\"body\">None</Typography>\n )}\n </div>\n )}\n </div>\n )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { Label } from \"../../shared/Inputs\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nimport AppointmentSummaryRow from \"./AppointmentSummaryRow\"\n\nconst UPCOMING_APPOINTMENTS_QUERY = `\n query UpcomingAppointments($clientId: ID, $userId: ID){\n upcomingAppointments(clientId: $clientId, userId: $userId) {\n id\n isVirtual\n startsAt\n endsAt\n amountCents\n timeZone\n instantActionToken\n isReviewed\n state\n hasEndorsements\n hasTextReview\n user {\n id\n name\n phone\n email\n }\n client {\n id\n firstName\n userId\n email\n phone\n }\n practice {\n id\n isStripeApproved\n user {\n id\n name\n profilePhotos {\n xLarge {\n jpeg\n webp\n }\n large {\n jpeg\n webp\n }\n medium {\n jpeg\n webp\n }\n small {\n jpeg\n webp\n }\n original {\n jpeg\n webp\n }\n }\n }\n }\n service {\n id\n name\n timeLength\n description\n photoUrl\n parent {\n id\n name\n description\n photoUrl\n timeLength\n }\n variations {\n id\n timeLength\n amountCents\n }\n }\n location {\n id\n name\n latitude\n longitude\n singleLine\n virtualLink\n virtualInstructions\n shortSingleLine\n }\n review {\n id\n review\n rating\n endorsedSkillIds\n videoUrl\n skillsForEndorsement {\n id\n name\n }\n }\n }\n }\n`\n\nexport default function UpcomingAppointments({ client }) {\n const [{ data, fetching, error }] = useQuery({\n query: UPCOMING_APPOINTMENTS_QUERY,\n variables: { clientId: client.id },\n requestPolicy: \"cache-and-network\"\n })\n\n const upcomingAppointments = data?.upcomingAppointments\n\n return (\n <div>\n <Label>Upcoming appointments</Label>\n {error ? (\n <div>Error fetching upcoming appointments</div>\n ) : fetching ? (\n <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n ) : (\n <div>\n {upcomingAppointments.length > 0 ? (\n <div>\n {upcomingAppointments.map((upcomingAppointment, index) => (\n <div key={index}>\n <p>{dayjs(upcomingAppointment.startsAt).format(\"dddd, MMMM DD, h:mm a\")}</p>\n <AppointmentSummaryRow\n appointment={upcomingAppointment}\n hideDivider={index === upcomingAppointments.length - 1}\n />\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex flex-row items-center justify-between\">\n <Typography variant=\"body\">None</Typography>\n <Link href={`/portal/calendar?clientId=${client.id}#create-appointment`}>+ New appointment</Link>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport IntakeFormSection from \"../../pages/IntakeForms/IntakeFormSection\"\nimport AddCreditCardModal from \"../../pages/ManagePaymentMethods/AddCreditCardModal\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\nimport { capitalize, formatPhone } from \"../../utils/utils\"\nimport PaymentProviderWrapper from \"../payments/PaymentProviderWrapper\"\nimport AppointmentHistory from \"../pro_portal/calendar/AppointmentHistory\"\nimport UpcomingAppointments from \"../pro_portal/calendar/UpcomingAppointments\"\n\nimport { Button } from \"./Buttons\"\nimport ClientNotes from \"./ClientNotes\"\nimport { Label } from \"./Inputs\"\nimport { Flyout, Divider } from \"./Layout\"\nimport { ButtonLink } from \"./Links\"\nimport Typography from \"./Typography\"\n\nexport default function ClientFlyout({ client, closeFlyout, visible }) {\n const [paymentMethod, setPaymentMethod] = useState(client?.defaultPaymentMethod)\n\n const [creditCardModalOpen, setCreditCardModalOpen] = React.useState(false)\n\n const { practice } = usePractice()\n\n const [{ data, fetching }, reexecuteQuery] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: client?.id,\n practiceId: practice.id\n },\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (client) {\n setPaymentMethod(null)\n }\n }, [client])\n\n useEffect(() => {\n if (data?.defaultPaymentMethodPractice) {\n setPaymentMethod(data.defaultPaymentMethodPractice)\n }\n }, [data])\n\n return (\n <Flyout\n header=\"Client Details\"\n visible={visible}\n closeFlyout={closeFlyout}\n footer={\n <div className=\"flex items-center justify-end gap-4\">\n <Button type=\"tertiary\" onClick={closeFlyout}>\n Close\n </Button>\n <ButtonLink href={`/portal/clients/${client?.id}`}>View</ButtonLink>\n </div>\n }>\n {client && (\n <div>\n <div className=\"flex items-center justify-between\">\n <div>\n <Label className=\"mb-1\">Full name</Label>\n <div>{client.name ? client.name : client.firstName}</div>\n </div>\n {practice.clientNotesEnabled && <IntakeFormSection clientId={client.id} showData={false} />}\n </div>\n\n {formatPhone(client.phone) && (\n <>\n <Divider />\n <Label className=\"mb-1 mt-6\">Phone</Label>\n <Typography className=\"mb-6\" variant=\"body\">\n {formatPhone(client.phone) ? formatPhone(client.phone) : \"\"}\n </Typography>\n </>\n )}\n {client.email && (\n <>\n <Divider />\n <Label className=\"mb-1 mt-6\">Email</Label>\n <Typography className=\"mb-6\" variant=\"body\">\n {client.email}\n </Typography>\n </>\n )}\n\n <Divider className=\"mb-4\" />\n {practice.clientNotesEnabled && (\n <>\n <ClientNotes client={client} />\n <Divider className=\"mb-4\" />\n </>\n )}\n\n <Label className=\"mb-1 mt-6\">Card on file</Label>\n\n {!practice.hasPaymentProvider ? (\n <a className=\"font-bold text-teal hover:underline\" href={`/portal/settings/banking`}>\n Click here to connect to a payment provider\n </a>\n ) : fetching ? (\n <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n ) : paymentMethod ? (\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"body\">\n {capitalize(paymentMethod.brand)} ending in {paymentMethod.last4} • Expires {paymentMethod.expMonth}/\n {paymentMethod.expYear}\n </Typography>\n <button\n className=\"font-bold text-teal hover:underline\"\n onClick={() => {\n setCreditCardModalOpen(true)\n }}>\n Change\n </button>\n </div>\n ) : (\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"body\">None</Typography>\n <button\n className=\"font-bold text-teal hover:underline\"\n onClick={() => {\n setCreditCardModalOpen(true)\n }}>\n Add\n </button>\n </div>\n )}\n\n {practice.hasPaymentProvider && creditCardModalOpen && (\n <PaymentProviderWrapper practice={practice} client={client}>\n <AddCreditCardModal\n headerLabel={\"Add a credit card\"}\n open={creditCardModalOpen}\n closeModal={() => setCreditCardModalOpen(false)}\n practice={practice}\n onSave={() => reexecuteQuery()}\n />\n </PaymentProviderWrapper>\n )}\n\n <Divider className=\"mb-6 mt-4\" />\n <UpcomingAppointments client={client} />\n <Divider />\n <AppointmentHistory client={client} limit={2} />\n </div>\n )}\n </Flyout>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { formatPhone, isClientValid, validEmail } from \"../../utils/utils\"\n\nimport { Input, Label, InputWithLabel, TextArea } from \"./Inputs\"\nimport { Banner } from \"./Layout\"\nimport { NewModal } from \"./Modal\"\nimport Typography from \"./Typography\"\n\nconst CREATE_CLIENT_MUTATION = `\n mutation CreateClient($client: ClientInput!) {\n createClient(client: $client) {\n result\n errors\n }\n }\n`\n\nexport const modalId = \"create-client-modal\"\n\nconst initialClientInput = {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n notes: \"\"\n}\n\nexport default function CreateClientModal({ close }) {\n const [errorMessage, setErrorMessage] = useState(\"\")\n\n const [createClientResult, createClient] = useMutation(CREATE_CLIENT_MUTATION)\n const [clientInput, setClientInput] = useState(initialClientInput)\n\n const { practicePhone, practiceEmail } = usePractice()\n\n let clientPhone = formatPhone(clientInput?.phone?.trim())\n if (clientPhone) {\n clientPhone = clientPhone?.startsWith(\"+1\") || clientPhone?.startsWith(\"1\") ? clientPhone : \"+1 \" + clientPhone\n }\n\n const handleSave = () => {\n if (clientInput.email && !validEmail(clientInput.email)) {\n setErrorMessage(\"Invalid email\")\n return\n }\n\n const invitedClient = {\n ...clientInput,\n clientType: \"invited\",\n invitedFrom: \"web_single_invite\"\n }\n\n createClient({ client: invitedClient }).then((result) => {\n if (result.error || result.data.createClient.errors) {\n setErrorMessage(`Error creating client: ${result.error || result.data.createClient.errors.join(\", \")}`)\n } else {\n setClientInput(initialClientInput)\n setErrorMessage(\"\")\n close(true)\n }\n })\n }\n\n return (\n <NewModal\n id={modalId}\n showFooter={true}\n fullHeightInMobile={true}\n header=\"Create client\"\n saveDisabled={\n !isClientValid(clientInput, clientPhone, practicePhone, practiceEmail) || createClientResult.fetching\n }\n onSave={handleSave}\n hideModal={() => {\n setClientInput(initialClientInput)\n setErrorMessage(\"\")\n NiceModal.hide(modalId)\n }}>\n <div className=\"sm:pb-12\">\n <Typography variant=\"subtitle\" className=\"mb-2\">\n Phone is required to create a client.\n </Typography>\n <Label className=\"mt-4\">\n Full name <span className=\"text-red\">*</span>\n </Label>\n <div className=\"flex flex-row\">\n <Input\n placeholder=\"First\"\n onChange={(input) => setClientInput({ ...clientInput, firstName: input.target.value })}\n className=\"relative -mr-1 mb-4 rounded-none rounded-l-lg hover:z-20 focus:z-20\"\n />\n\n <Input\n placeholder=\"Last\"\n onChange={(input) => setClientInput({ ...clientInput, lastName: input.target.value })}\n className=\"relative mb-4 rounded-none rounded-r-lg hover:z-20 focus:z-20\"\n />\n </div>\n\n <InputWithLabel\n label=\"Email\"\n onChange={(input) => {\n setClientInput({ ...clientInput, email: input.target.value })\n if (errorMessage) setErrorMessage(\"\")\n }}\n className=\"mb-4\"\n />\n\n {clientInput?.email?.trim() === practiceEmail && (\n <Banner type=\"error\">\n Cannot use your email for a client. Please add phone for client or use a placeholder email.\n </Banner>\n )}\n\n <InputWithLabel\n label={\"Phone\"}\n required\n onChange={(input) => {\n setClientInput({ ...clientInput, phone: input.target.value })\n }}\n value={clientInput?.phone ? formatPhone(clientInput.phone) : \"\"}\n className=\"mb-4 w-1/2\"\n />\n\n {clientPhone === practicePhone && !!practicePhone && (\n <Banner type=\"error\">\n Cannot use your phone number for a client. Please leave blank and add email if client phone is unknown.\n </Banner>\n )}\n\n {errorMessage && <Banner type=\"error\">{errorMessage}</Banner>}\n\n <div className=\"mt-4\">\n <Label>Notes</Label>\n <TextArea\n onChange={(input) => {\n setClientInput({ ...clientInput, notes: input.target.value })\n }}\n />\n </div>\n </div>\n </NewModal>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { ExportToCsv } from \"export-to-csv\"\nimport React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { formatShortDate, formatPhone } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport ClientFlyout from \"../../shared/ClientFlyout\"\nimport ClientUpload from \"../../shared/ClientUpload\"\nimport CreateClientModal, { modalId } from \"../../shared/CreateClientModal\"\nimport HealMeTable from \"../../shared/HealMeTable\"\nimport { Link } from \"../../shared/Links\"\nimport Typography from \"../../shared/Typography\"\n\nconst CLIENTS_QUERY = `\n query clientsQuery{\n clients {\n id\n practiceId\n userId\n email\n phone\n firstName\n lastName\n name\n clientType\n invitedFrom\n lastAppointmentDate\n }\n }\n`\n\nconst ClientsTable = ({ practice }) => {\n const [showClientDetail, setShowClientDetail] = useState(false)\n const [clientToDetail, setClientToDetail] = useState()\n const [editClient, setEditClient] = useState()\n\n const [{ data, fetching }, reexecuteQuery] = useQuery({\n query: CLIENTS_QUERY,\n requestPolicy: \"network-only\"\n })\n\n const showHideClient = (client) => {\n setShowClientDetail(true)\n setClientToDetail(client)\n }\n\n const { showToast } = useToast()\n\n const columns = [\n {\n accessor: \"name\",\n Header: \"Full Name\",\n Cell: (props) => {\n const preventBooking = !props.cell.row.original.phone && !props.cell.row.original.email\n return (\n <div className={preventBooking ? \"pb-6\" : \"\"}>\n <span>{props.cell.value}</span>\n {preventBooking && (\n <Typography variant=\"small\" className=\"absolute mt-2 block text-gray-dark\">\n You cannot book any sessions for this client until you add an email or phone number.{\" \"}\n <Link\n className=\"font-semibold\"\n onClick={() => {\n NiceModal.show(\"edit-client-directory\")\n }}>\n Add now\n </Link>\n </Typography>\n )}\n </div>\n )\n }\n },\n {\n accessor: \"email\",\n Header: \"Email\"\n },\n {\n accessor: \"phone\",\n Header: \"Phone\",\n Cell: (props) => (formatPhone(props.cell.value) ? `${formatPhone(props.cell.value)}` : \"\")\n },\n {\n accessor: \"lastAppointmentDate\",\n Header: \"Last appt.\"\n }\n ]\n\n const options = {\n fieldSeparator: \",\",\n quoteStrings: '\"',\n decimalSeparator: \".\",\n showLabels: true,\n useTextFile: false,\n useBom: true,\n filename: \"Heal.me Clients\",\n headers: [\"First Name\", \"Last Name\", \"Email\", \"Phone\", \"Last Appointment\"]\n }\n\n const exportToCSV = () => {\n const csvExporter = new ExportToCsv(options)\n const exportable = data.clients.map((client) => ({\n \"First Name\": client.firstName,\n \"Last Name\": client.lastName,\n Email: client.email || \"\",\n Phone: formatPhone(client.phone) ? formatPhone(client.phone) : \"\",\n \"Last Appointment\": client.lastAppointmentDate ? formatShortDate(client.lastAppointmentDate) : \"\"\n }))\n csvExporter.generateCsv(exportable)\n }\n\n const refreshScreen = () => {\n setShowClientDetail(false)\n setClientToDetail(null)\n setEditClient(false)\n reexecuteQuery()\n }\n\n return (\n <>\n <div className=\"mb-8 flex justify-between align-bottom sm:mb-4\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Clients\n </Typography>\n <Typography variant=\"subtitle\">{data?.clients?.length} clients</Typography>\n </div>\n <div className=\"flex\">\n {data?.clients.length > 1 && (\n <Button type=\"tertiary\" className=\"mr-4 sm:hidden\" size=\"small\" onClick={exportToCSV}>\n Export\n </Button>\n )}\n <ClientUpload practice={practice} buttonStyle=\"white\" buttonSize=\"small\" className=\"mr-4 sm:hidden\" />\n <Button\n type=\"primary\"\n size=\"small\"\n floatingInMobile={true}\n onClick={() => {\n NiceModal.show(modalId)\n }}>\n <span>Create client</span>\n </Button>\n </div>\n </div>\n {data?.clients && !fetching && (\n <HealMeTable data={data?.clients} columns={columns} searchType=\"clients\" rowClick={showHideClient} />\n )}\n\n <ClientFlyout\n closeFlyout={() => {\n setShowClientDetail(false)\n }}\n visible={showClientDetail}\n client={clientToDetail}\n openToEdit={editClient}\n refreshClient={refreshScreen}\n clientDeleted={refreshScreen}\n />\n\n <CreateClientModal\n close={(clientAdded) => {\n NiceModal.remove(modalId)\n if (clientAdded) {\n reexecuteQuery()\n showToast(\"Client added successfully\")\n }\n }}\n />\n </>\n )\n}\n\nexport default function ClientDirectory(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <ClientsTable {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport styled from \"styled-components\"\nimport { useMutation } from \"urql\"\n\nconst appStore = require(\"../../../../../public/apple-store.png\")\nconst googlePlaystore = require(\"../../../../../public/google-playstore.png\")\nconst iphone13 = require(\"../../../../../public/iPhone-13.png\")\nconst mobileAppStore = require(\"../../../../assets/images/app-store-badge.png\")\nconst mobileConsumerIphone = require(\"../../../../assets/images/consumer-iphone-mobile.png\")\nconst consumerIphone = require(\"../../../../assets/images/consumer-iphone.png\")\nconst mobileIphone13 = require(\"../../../../assets/images/iphone-screenshot.png\")\nconst mobileGooglePlaystore = require(\"../../../../assets/images/playstore.png\")\n\nconst SEND_TEXT = `\n mutation DownloadMobileApp($type: String!) {\n sendText (type: $type) {\n result\n errors\n }\n }\n`\n\nconst Wrapper = styled.div`\n height: auto;\n display: flex;\n flex-direction: column;\n margin-top: 32px;\n\n @media only screen and (min-width: 768px) {\n flex-direction: row;\n margin-top: 0;\n height: 90vh;\n }\n\n p {\n font-size: 16px;\n font-weight: 400;\n }\n`\nconst TextWrapper = styled.div`\n padding-right: 10%;\n padding-left: 10%;\n display: block;\n margin: auto;\n\n @media only screen and (max-width: 768px) {\n margin: 0;\n }\n`\n\nconst Title = styled.div`\n font-weight: 700;\n font-size: 36px;\n color: #0b3954;\n margin-bottom: 24px;\n\n @media only screen and (max-width: 768px) {\n font-weight: 700;\n font-size: 24px;\n margin-bottom: 16px;\n }\n`\n\nconst Subtitle = styled.div`\n font-weight: 500;\n font-size: 21px;\n color: #0b3954;\n margin-bottom: 16px;\n\n @media only screen and (max-width: 768px) {\n font-weight: 700;\n font-size: 21px;\n margin-bottom: 24px;\n }\n`\n\nconst SubHeader = styled.div`\n font-weight: 700;\n font-size: 17px;\n color: #55778a;\n margin-bottom: 16px;\n text-transform: uppercase;\n\n @media only screen and (max-width: 768px) {\n font-weight: 700;\n font-size: 15px;\n margin-bottom: 24px;\n }\n`\n\nconst Helper = styled.div`\n font-weight: 400;\n font-size: 18px;\n color: #55778a;\n margin-top: 8px;\n margin-bottom: 24px;\n\n @media only screen and (max-width: 768px) {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 12px;\n }\n`\n\nconst HelperLink = styled.div`\n font-weight: 400;\n font-size: 18px;\n color: #55778a;\n margin-top: 8px;\n margin-bottom: 24px;\n text-decoration: underline;\n color: #0d9da4;\n\n &:hover {\n cursor: pointer;\n }\n`\n\nconst IconWrapper = styled.div`\n display: flex;\n\n a {\n height: 100%;\n }\n`\n\nconst Logo = styled.div`\n max-width: 48px;\n max-height: 52px;\n margin-right: 16px;\n\n @media only screen and (max-width: 768px) {\n max-width: 142px;\n max-height: 40px;\n }\n`\n\nconst ImageWrapper = styled.div`\n display: block;\n margin: auto;\n\n @media only screen and (max-width: 768px) {\n margin: 0;\n margin-top: 50px;\n }\n`\n\nexport default function DownloadMobileApp({ isPro = true, contextHeader }) {\n const [, sendText] = useMutation(SEND_TEXT)\n const [loading, setLoading] = useState(false)\n const [dimension, updateDimention] = useState({ width: 0, height: 0 })\n\n const sendTextMessage = () => {\n setLoading(true)\n sendText({ type: \"download_mobile_app\" }).then((res) => {\n if (res.data.sendText.result === \"success\") {\n setLoading(false)\n }\n })\n }\n\n useEffect(() => {\n updateDimention({\n ...dimension,\n width: window.innerWidth,\n height: window.innerHeight\n })\n }, [window.innerWidth])\n\n return (\n <>\n {dimension?.width < 768 ? (\n <Wrapper>\n <TextWrapper>\n {contextHeader && <Subtitle>{contextHeader}</Subtitle>}\n {isPro ? (\n <div>\n <Subtitle>Your profile is live!</Subtitle>\n <Helper>What's next?</Helper>\n <Subtitle>Get it now and discover over 3000+ trusted wellness practitioners.</Subtitle>\n <p>Install the practitioner app so you can manage your bookings.</p>\n </div>\n ) : (\n <div>\n <SubHeader>Next Step</SubHeader>\n <Subtitle>Download the Heal.me App</Subtitle>\n <p>Get it now and discover over 3000+ trusted wellness practitioners.</p>\n </div>\n )}\n\n <Helper>Available on iPhone and Android.</Helper>\n <IconWrapper>\n <Logo>\n <a href=\"https://apps.apple.com/app/id1599744549\">\n <img src={mobileAppStore} />\n </a>\n </Logo>\n <Logo>\n <a href=\"https://play.google.com/store/apps/details?id=me.heal.mobile\">\n <img src={mobileGooglePlaystore} />\n </a>\n </Logo>\n </IconWrapper>\n </TextWrapper>\n <ImageWrapper>{isPro ? <img src={mobileIphone13} /> : <img src={mobileConsumerIphone} />}</ImageWrapper>\n </Wrapper>\n ) : (\n <Wrapper>\n <TextWrapper>\n {contextHeader && <Subtitle>{contextHeader}</Subtitle>}\n <SubHeader>Next Step</SubHeader>\n <Title>Check your phone.</Title>\n <Subtitle>We've sent you a text message with a link to download the mobile app.</Subtitle>\n {isPro ? (\n <Subtitle>Get it now and start managing your bookings.</Subtitle>\n ) : (\n <Subtitle>Get it now and discover over 3000+ trusted wellness practitioners.</Subtitle>\n )}\n\n <Helper>Available on iPhone and Android.</Helper>\n <IconWrapper>\n <Logo>\n <img src={appStore} />\n </Logo>\n <Logo>\n <img src={googlePlaystore} />\n </Logo>\n </IconWrapper>\n {isPro ? (\n <HelperLink onClick={() => sendTextMessage()}>\n {loading ? \"Sending...\" : \"Didn't get it? Send again.\"}\n </HelperLink>\n ) : (\n <a href=\"/practitioner-search\">Or continue with the web version</a>\n )}\n </TextWrapper>\n <ImageWrapper>{isPro ? <img src={iphone13} /> : <img src={consumerIphone} />}</ImageWrapper>\n </Wrapper>\n )}\n </>\n )\n}\n","import { APPOINTMENT_QUERY } from \"../components/pro_portal/calendar/appointment_graphql\"\n\nimport { createUrqlClient } from \"./utils\"\n\nconst urqlClient = createUrqlClient({ requestPolicy: \"network-only\" })\n\nexport const fetchAppointment = async (instantActionToken) => {\n const result = await urqlClient.query(APPOINTMENT_QUERY, { instantActionToken }).toPromise()\n if (result.data?.tokenAppointment) {\n result.data.tokenAppointment\n return result.data.tokenAppointment\n } else {\n console.error(\"Error fetching profile status data\")\n return null\n }\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { commIntervals } from \"../../../utils/utils\"\nimport { Button } from \"../../shared/Buttons\"\nimport { Select, CheckBox } from \"../../shared/Inputs\"\nimport { Flyout } from \"../../shared/Layout\"\nimport { Divider } from \"../../shared/Layout\"\nimport { UnderlinedLink } from \"../../shared/Links\"\nimport { RadioWithLabel } from \"../../shared/RadioButtons\"\nimport Typography from \"../../shared/Typography\"\n\nconst UPDATE_PAYMENT_SETTINGS = `\n mutation UpdatePaymentSettings(\n $requireClientCcToBook: Boolean,\n $chargeClientCcAtBooking: Boolean,\n $paymentPastDueEmailEnabled: Boolean,\n $paymentPastDueTextEnabled: Boolean,\n $paymentPastDueEmailMinutes: Int,\n $paymentPastDueTextMinutes: Int,\n ) {\n updatePaymentSettings(\n requireClientCcToBook: $requireClientCcToBook,\n chargeClientCcAtBooking: $chargeClientCcAtBooking,\n paymentPastDueEmailEnabled: $paymentPastDueEmailEnabled,\n paymentPastDueTextEnabled: $paymentPastDueTextEnabled,\n paymentPastDueEmailMinutes: $paymentPastDueEmailMinutes,\n paymentPastDueTextMinutes: $paymentPastDueTextMinutes,\n ) {\n result\n error\n }\n }\n`\n\nexport default function PaymentSettingsFlyout({\n hasPaymentProvider,\n hasOffline,\n communicationSettings,\n visible,\n closeFlyout\n}) {\n const [{ fetching }, updatePaymentSettings] = useMutation(UPDATE_PAYMENT_SETTINGS)\n\n const [settings, setSettings] = useState(communicationSettings)\n const [originalSettings, setOriginalSettings] = useState(communicationSettings)\n\n const { showToast } = useToast()\n\n const handleUpdate = (key) => (newValue) => {\n let update = newValue\n if (newValue.value) {\n update = newValue.value\n }\n setSettings((prevSettings) => ({ ...prevSettings, [key]: update }))\n }\n\n const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n const handleSettingsUpdate = () => {\n updatePaymentSettings(settings)\n .then((result) => {\n if (result.data?.updatePaymentSettings?.result) {\n showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n setOriginalSettings(settings)\n closeFlyout()\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updatePaymentSettings?.error ||\n \"Please try again later.\"\n\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }\n\n return (\n <Flyout\n header=\"Payment Settings\"\n visible={visible}\n closeFlyout={closeFlyout}\n footer={\n <div className=\"flex w-full items-center justify-end\">\n <div className=\"flex gap-4\">\n <Button type=\"tertiary\" onClick={closeFlyout}>\n Close\n </Button>\n\n <Button type=\"primary\" onClick={handleSettingsUpdate} disabled={fetching || !settingsChanged}>\n Save\n </Button>\n </div>\n </div>\n }>\n <div className=\"relative\">\n <Typography variant=\"h5\" className=\"mb-2\">\n Require credit card when a client books:\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Booking free services will not require a credit card.\n </Typography>\n {hasPaymentProvider ? (\n <>\n <div className=\"mb-4 flex flex-row gap-4\">\n <RadioWithLabel\n id=\"require-cc-yes\"\n value={true}\n name=\"require-cc\"\n label=\"Yes\"\n checked={settings.requireClientCcToBook}\n onChange={() => {\n handleUpdate(\"requireClientCcToBook\")(true)\n handleUpdate(\"chargeClientCcAtBooking\")(false)\n }}\n />\n <RadioWithLabel\n value={false}\n id=\"require-cc-no\"\n name=\"require-cc\"\n label=\"No (recommended)\"\n checked={!settings.requireClientCcToBook}\n onChange={() => {\n handleUpdate(\"requireClientCcToBook\")(false)\n handleUpdate(\"chargeClientCcAtBooking\")(false)\n }}\n />\n </div>\n {hasOffline && (\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Your clients will not have the option to pay with another method.\n </Typography>\n )}\n </>\n ) : (\n <Typography variant=\"subtitle\" className=\"mb-4 text-red\">\n Requires a connected Payment Provider account.{\" \"}\n <UnderlinedLink className=\"ml-2\" href=\"/portal/settings/banking\">\n Connect Now\n </UnderlinedLink>\n </Typography>\n )}\n\n <Divider />\n {settings.requireClientCcToBook && (\n <>\n <Typography variant=\"h5\" className=\"mb-4\">\n Charge credit card when client books:\n </Typography>\n <div className=\"mb-4 flex flex-row gap-4\">\n <RadioWithLabel\n id=\"charge-cc-yes\"\n value={true}\n name=\"charge-cc\"\n label=\"Yes\"\n checked={settings.chargeClientCcAtBooking}\n onChange={() => handleUpdate(\"chargeClientCcAtBooking\")(true)}\n />\n <RadioWithLabel\n id=\"charge-cc-no\"\n value={false}\n name=\"charge-cc\"\n label=\"No (recommended)\"\n checked={!settings.chargeClientCcAtBooking}\n onChange={() => handleUpdate(\"chargeClientCcAtBooking\")(false)}\n />\n </div>\n <Divider />\n </>\n )}\n\n <Typography variant=\"h5\" as=\"h3\">\n Send payment reminders:\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-4 mt-1\">\n Heal.me will remind your clients if they haven’t paid for an appointment.\n </Typography>\n <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Email\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6 text-gray-dark\"\n id=\"payment-email-reminder\"\n onChange={() => handleUpdate(\"paymentPastDueEmailEnabled\")(!settings.paymentPastDueEmailEnabled)}\n checked={settings.paymentPastDueEmailEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.paymentPastDueEmailMinutes}\n onChange={(e) => setSettings({ ...settings, paymentPastDueEmailMinutes: Number(e.target.value) })}\n name=\"emailInterval\"\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none text-gray-dark\">after</p>\n </div>\n <div className=\"flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Text or app notification\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6 text-gray-dark\"\n id=\"payment-text-reminder\"\n onChange={() => handleUpdate(\"paymentPastDueTextEnabled\")(!settings.paymentPastDueTextEnabled)}\n checked={settings.paymentPastDueTextEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.paymentPastDueTextMinutes}\n onChange={(e) => setSettings({ ...settings, paymentPastDueTextMinutes: Number(e.target.value) })}\n name=\"textInterval\"\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none text-gray-dark\">after</p>\n </div>\n </div>\n </Flyout>\n )\n}\n","import { ExportToCsv } from \"export-to-csv\"\nimport React, { useState, useEffect } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport { CalendarFlyoutProvider } from \"../../../contexts/CalendarFlyoutContext\"\nimport { ManualBookingProvider, useManualBooking } from \"../../../contexts/ManualBookingContext\"\nimport { PracticeProvider } from \"../../../contexts/PracticeContext\"\nimport { BookableEventsProvider } from \"../../../pages/BookableEvents/BookableEventsContext\"\nimport DefaultProvider from \"../../../providers/DefaultProvider\"\nimport { fetchAppointment } from \"../../../utils/fetchAppointment\"\nimport { formatShortDate, formatPrice } from \"../../../utils/utils\"\nimport Badge from \"../../shared/Badge\"\nimport { Button } from \"../../shared/Buttons\"\nimport HealMeTable from \"../../shared/HealMeTable\"\nimport { Select } from \"../../shared/Inputs\"\nimport Typography from \"../../shared/Typography\"\nimport AppointmentFlyout from \"../calendar/AppointmentFlyout\"\n\nimport PaymentSettingsFlyout from \"./PaymentSettingsFlyout\"\n\nconst APPOINTMENTS_QUERY = `\n query PaymentDirectory($limit: Int, $offset: Int, $dateFilter: String, $stateFilter: String, $searchTerm: String, $clientId: ID) {\n currentPractice {\n isStripeApproved\n hasPaymentProvider\n requireCcEnabled\n offlinePaymentMethod\n pastAppointments(limit: $limit, offset: $offset, dateFilter: $dateFilter, stateFilter: $stateFilter, searchTerm: $searchTerm, clientId: $clientId) {\n id\n startsAt\n endsAt\n amountCents\n tipAmountCents\n fullTotal\n timeZone\n state\n instantActionToken\n clientName\n paymentStatus\n markPaid\n paidBy\n paymentMethod\n createdAt\n service { id name timeLength }\n appointmentServices {\n amountCents\n service {\n id\n serviceId\n name\n amountCents\n timeLength\n package\n }\n }\n location { id name }\n user { id firstName lastName }\n client { id firstName lastName }\n package { id numberOfSessions }\n discountCodeRedemptions { code amountCents }\n }\n pastAppointmentsCount(dateFilter: $dateFilter, stateFilter: $stateFilter, searchTerm: $searchTerm, clientId: $clientId)\n totalCollected(clientId: $clientId)\n totalOutstanding(clientId: $clientId)\n }\n }\n`\n\nconst dateRangeOptions = [\n { value: \"alltime\", label: \"All time\" },\n { value: \"thisweek\", label: \"This week\" },\n { value: \"lastweek\", label: \"Last week\" },\n { value: \"thismonth\", label: \"This month\" },\n { value: \"lastmonth\", label: \"Last month\" },\n { value: \"thisyear\", label: \"This year\" },\n { value: \"lastyear\", label: \"Last year\" }\n]\n\nconst stateOptions = [\n { value: \"allpayments\", label: \"All payments\" },\n { value: \"paid\", label: \"Paid\" },\n { value: \"upcoming\", label: \"Upcoming\" },\n { value: \"unpaid\", label: \"Unpaid\" },\n { value: \"free\", label: \"Free\" }\n]\n\nconst limitOptions = [\n { value: 20, label: \"20\" },\n { value: 50, label: \"50\" },\n { value: null, label: \"All\" }\n]\n\nconst consolidatePackages = (appointments) => {\n const seenPackages = new Set()\n const filteredAppointments = []\n for (const item of appointments) {\n const packageId = item.package?.id\n\n if (packageId) {\n // This is a hack so the \"createdAt\" accessor for the \"Date\" header in the table can work both packages and appointments.\n // For packages the date should be the date the package was purchased, not the date of the first appointment.\n item.startsAt = item.package.createdAt\n }\n if (!packageId || !seenPackages.has(packageId)) {\n filteredAppointments.push(item)\n if (packageId) seenPackages.add(packageId)\n }\n }\n return filteredAppointments\n}\n\nconst TableHeader = ({ dateFilter, stateFilter, limit, handleFilter, totalCount, showPagination, showSearch }) => (\n <div className={`flex w-full justify-start gap-2 lg:flex-col sm:ml-0 sm:mt-4 ${showSearch ? \"ml-4\" : \"\"}`}>\n <div className=\"flex flex-row gap-2 sm:justify-between\">\n <Select\n options={dateRangeOptions}\n value={dateFilter}\n onChange={(e) => handleFilter(e.target.value, stateFilter, limit)}\n className=\"sm:w-1/2\"\n />\n <Select\n options={stateOptions}\n value={stateFilter}\n onChange={(e) => handleFilter(dateFilter, e.target.value, limit)}\n className=\"sm:w-1/2\"\n />\n </div>\n {showPagination && (\n <div className=\"ml-auto flex flex-row items-center gap-2\">\n <span>Showing</span>\n <Select\n options={limitOptions}\n value={limit}\n onChange={(e) => handleFilter(dateFilter, stateFilter, e.target.value)}\n />\n <span>of {totalCount}</span>\n </div>\n )}\n </div>\n)\n\nconst PaymentsTable = ({ communicationSettings, clientId }) => {\n const { setAppointment } = useManualBooking()\n\n const [appointmentFlyoutVisible, setAppointmentFlyoutVisible] = useState(false)\n const [showSettings, setShowSettings] = useState(false)\n const [filteredPayments, setFilteredPayments] = useState([])\n const [dateFilter, setDateFilter] = useState(dateRangeOptions[0].value)\n const [stateFilter, setStateFilter] = useState(stateOptions[0].value)\n const [limit, setLimit] = useState(limitOptions[0].value)\n const [page, setPage] = useState(0)\n const [searchTerm, setSearchTerm] = useState(\"\")\n\n const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n query: APPOINTMENTS_QUERY,\n variables: {\n limit: parseInt(limit) || undefined,\n offset: limit ? page * parseInt(limit) : undefined,\n dateFilter,\n stateFilter,\n searchTerm,\n clientId\n },\n requestPolicy: \"cache-and-network\"\n })\n\n if (error) console.error(error)\n\n useEffect(() => {\n if (data && data.currentPractice) {\n setFilteredPayments(consolidatePackages(data.currentPractice.pastAppointments))\n }\n }, [data])\n\n const handleFilter = (dateSelection, stateSelection, limitSelection) => {\n setDateFilter(dateSelection || dateFilter)\n setStateFilter(stateSelection || stateFilter)\n setLimit(limitSelection || limit)\n setPage(0)\n reexecuteQuery({ requestPolicy: \"cache-and-network\" })\n }\n\n const columns = [\n {\n accessor: \"startsAt\",\n Header: \"Date\",\n Cell: (props) => formatShortDate(props.cell.value)\n },\n {\n accessor: \"clientName\",\n Header: \"Client\"\n },\n {\n accessor: \"service.name\",\n Header: \"Service\"\n },\n {\n accessor: \"fullTotal\",\n Header: \"Amount\",\n Cell: (props) => {\n const paymentStatus = props.cell.row.original.paymentStatus\n let textColorClass = \"\"\n\n if (paymentStatus === \"Unpaid\") {\n textColorClass = \"text-red\"\n } else if (paymentStatus === \"Paid\") {\n textColorClass = \"text-teal\"\n } else {\n textColorClass = \"text-gray-dark\"\n }\n\n return <span className={`sm:${textColorClass}`}>{formatPrice(props.cell.value || 0)}</span>\n }\n },\n {\n accessor: \"paymentStatus\",\n Header: \"Status\",\n className: \"status\",\n Cell: (props) => {\n const status = props.cell.value\n\n let badgeType\n switch (status) {\n case \"Unpaid\":\n badgeType = \"error\"\n break\n case \"Free\":\n badgeType = \"info\"\n break\n case \"Paid\":\n badgeType = \"success\"\n break\n case \"Upcoming\":\n badgeType = \"warning\"\n break\n default:\n badgeType = \"success\"\n }\n\n let paidBy\n if (badgeType === \"success\") {\n if (props.cell.row.original.markPaid) {\n if (!props.cell.row.original.paidBy) {\n paidBy = \"offline\"\n } else {\n paidBy = props.cell.row.original.paidBy\n }\n } else {\n paidBy = props.cell.row.original.paymentMethod\n }\n }\n\n return (\n <>\n <Badge type={badgeType}>{props.cell.value}</Badge>\n <span className=\"ml-2 text-[12px] font-extrabold uppercase tracking-[0.045rem]\">{paidBy}</span>\n </>\n )\n }\n },\n {\n accessor: \"instantActionToken\",\n Header: \"Action\",\n className: \"row-action\",\n Cell: (props) => (\n <>\n {props.cell.row.original.paymentStatus !== \"Free\" && (\n <a className=\"font-bold text-teal\" onClick={() => showAppointment(props.cell.value)}>\n Manage\n </a>\n )}\n </>\n )\n }\n ]\n\n if (clientId) {\n const index = columns.findIndex((obj) => obj.accessor === \"clientName\")\n if (index !== -1) columns.splice(index, 1)\n }\n\n const showAppointment = async (instantActionToken) => {\n const selectedAppointment = await fetchAppointment(instantActionToken)\n setAppointmentFlyoutVisible(true)\n setAppointment(selectedAppointment)\n }\n\n const options = {\n fieldSeparator: \",\",\n quoteStrings: '\"',\n decimalSeparator: \".\",\n showLabels: true,\n useTextFile: false,\n useBom: true,\n filename: \"Heal.me Payments\",\n headers: [\"Appointment Date\", \"Client Name\", \"Service\", \"Location\", \"Amount\", \"Status\", \"Paid By\"]\n }\n\n const exportToCSV = () => {\n const csvExporter = new ExportToCsv(options)\n const exportable = filteredPayments.map((appt) => ({\n \"Appointment Date\": formatShortDate(appt.startsAt),\n \"Client Name\": appt.clientName,\n Service: appt.service.name,\n Location: appt.location.name ? appt.location.name : \"\",\n Amount: formatPrice(appt.fullTotal),\n Status: appt.paymentStatus,\n \"Paid By\": appt.markPaid ? (appt.paidBy ? appt.paidBy : \"offline\") : appt.paymentMethod\n }))\n csvExporter.generateCsv(exportable)\n }\n\n const genericCallback = () => {\n setAppointmentFlyoutVisible(false)\n setAppointment(null)\n reexecuteQuery()\n }\n\n if (fetching) {\n return (\n <div className=\"flex h-screen items-center justify-center\">\n <img src=\"/loading-spinner.png\" width=\"120px\" />\n </div>\n )\n }\n\n return (\n <>\n {!fetching && (\n <>\n {filteredPayments && (filteredPayments.length > 0 || data.currentPractice.isStripeApproved) ? (\n <>\n <div className=\"mb-8 flex items-end justify-between sm:mb-4\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Payments\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n ${data.currentPractice.totalCollected} collected {\"\\u2022\"} ${data.currentPractice.totalOutstanding}{\" \"}\n outstanding\n </Typography>\n </div>\n <div className=\"block\">\n <Button type=\"tertiary\" size=\"small\" onClick={exportToCSV}>\n Export\n </Button>\n {data.currentPractice.requireCcEnabled && (\n <Button type=\"tertiary\" size=\"small\" className=\"ml-4\" onClick={() => setShowSettings(true)}>\n Settings\n </Button>\n )}\n </div>\n </div>\n <HealMeTable\n data={filteredPayments}\n columns={columns}\n searchType=\"payments\"\n hasPagination={false}\n header={() => (\n <TableHeader\n dateFilter={dateFilter}\n stateFilter={stateFilter}\n limit={limit}\n handleFilter={handleFilter}\n totalCount={data.currentPractice.pastAppointmentsCount}\n showPagination={data.currentPractice.pastAppointmentsCount > limit}\n showSearch={!clientId}\n />\n )}\n rowClick={(rowData) => showAppointment(rowData.instantActionToken)}\n searchTerm={searchTerm}\n setSearchTerm={setSearchTerm}\n searchPlaceholder=\"Search by name or email\"\n showSearch={!clientId}\n />\n {data.currentPractice.pastAppointmentsCount > limit && (\n <div className=\"mt-2 flex justify-center gap-4\">\n <Button disabled={page === 0} className=\"w-36\" onClick={() => setPage(page - 1)}>\n Previous\n </Button>\n <Button\n disabled={\n data.currentPractice.pastAppointments.length < limit ||\n filteredPayments.length === 0 ||\n limit === \"All\"\n }\n className=\"w-36\"\n onClick={() => setPage(page + 1)}>\n Next\n </Button>\n </div>\n )}\n </>\n ) : (\n <div className=\"flex h-screen flex-col items-center justify-center rounded-xl bg-gray-ultralight\">\n <Typography as=\"h1\" variant=\"h3\">\n Start accepting payments today\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-3\">\n Accept online payments and get paid on time, every time.\n </Typography>\n <Button type=\"primary\" size=\"large\" onClick={() => (window.location.href = \"/portal/settings/banking\")}>\n Power-up my practice\n </Button>\n </div>\n )}\n </>\n )}\n <AppointmentFlyout\n visible={appointmentFlyoutVisible}\n closeFlyout={genericCallback}\n onAppointmentChanged={genericCallback}\n onAppointmentCancelled={genericCallback}\n onRescheduleSuccess={genericCallback}\n />\n <PaymentSettingsFlyout\n hasPaymentProvider={data.currentPractice.hasPaymentProvider}\n hasOffline={data.currentPractice.offlinePaymentMethod}\n communicationSettings={communicationSettings}\n closeFlyout={() => {\n setShowSettings(false)\n }}\n visible={showSettings}\n />\n </>\n )\n}\n\nexport default function PaymentDirectory(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <ManualBookingProvider>\n <CalendarFlyoutProvider>\n <BookableEventsProvider>\n <PaymentsTable {...props} />\n </BookableEventsProvider>\n </CalendarFlyoutProvider>\n </ManualBookingProvider>\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../support/amplitude-react\"\n\nconst ViewPhone = `\n mutation ViewPhone($id: ID!) {\n viewPhone (id: $id) {\n formattedPhoneNumber\n phoneNumber\n }\n }\n`\n\nconst ProfilePhoneNumber = ({ practitionerId, className }) => {\n const [phoneNumberHref, setPhoneNumberHref] = useState()\n const [formattedPhoneNumber, setFormattedPhoneNumber] = useState()\n const [isDisabled, setIsDisabled] = useState()\n const [, viewPhone] = useMutation(ViewPhone)\n\n const onClick = () => {\n if (!formattedPhoneNumber) {\n setIsDisabled(true)\n viewPhone({ id: practitionerId }).then((result) => {\n if (result.error) {\n console.error(result.error)\n } else {\n setFormattedPhoneNumber(result.data.viewPhone.formattedPhoneNumber)\n setPhoneNumberHref(`tel:${result.data.viewPhone.phoneNumber}`)\n useEffect(() => {\n window.dataLayer = window.dataLayer || []\n window.dataLayer.push({\n event: \"view_phone\",\n event_category: \"Client Booking Flow\",\n event_label: \"Client View Pro Phone\"\n })\n }, [onClick])\n setIsDisabled(false)\n sendAmplitudeData(\"phone number clicked\")\n }\n })\n }\n }\n\n return (\n <div className={className} style={isDisabled ? { pointerEvents: \"none\" } : {}}>\n <span className=\"details button btn-tertiary small\" data-icon=\"phone\" onClick={onClick}>\n {!formattedPhoneNumber ? \"Show phone number\" : <a href={phoneNumberHref}>{formattedPhoneNumber}</a>}\n </span>\n </div>\n )\n}\n\nexport default ProfilePhoneNumber\n","import clsx from \"clsx\"\nimport PropTypes from \"prop-types\"\nimport React, { forwardRef } from \"react\"\n\nconst InputField = (\n {\n kind = \"form\",\n label,\n id,\n type,\n placeholder,\n value,\n defaultValue,\n onChange,\n onKeyUp,\n autoComplete,\n style,\n disabled\n },\n ref\n) => (\n <>\n {label && <label htmlFor={id}>{label}</label>}\n <input\n ref={ref}\n id={id}\n type={type}\n placeholder={placeholder}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n onKeyUp={onKeyUp}\n autoComplete={autoComplete}\n className={clsx(\n \"m-0 w-full rounded border border-gray bg-white shadow-none outline-0 focus:border-teal active:border-teal\",\n { \"border-none px-0 py-0\": disabled },\n { \"px-4 py-3.5\": kind === \"form\" && !disabled },\n { \"px-8 py-4\": kind === \"search\" && !disabled }\n )}\n style={style}\n disabled={disabled}\n />\n </>\n)\n\nInputField.propTypes = {\n kind: PropTypes.oneOf([\"form\", \"search\"]),\n label: PropTypes.string,\n id: PropTypes.string,\n type: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onChange: PropTypes.func,\n onKeyUp: PropTypes.func,\n autoComplete: PropTypes.string,\n style: PropTypes.object\n}\n\nexport default forwardRef(InputField)\n","import React, { useState } from \"react\"\nimport IntlTelInput from \"react-intl-tel-input\"\nimport styled from \"styled-components\"\n\nimport HealMeSquareButton from \"../shared/HealMeSquareButton\"\nimport InputField from \"../shared/InputField\"\n\nconst EnterPhoneWrapper = styled.div`\n .input-row {\n margin-bottom: 16px;\n }\n`\n\nexport default function EnterPhone({ client, nextStep }) {\n const [name, setName] = useState(client.firstName ? client.firstName : \"\")\n\n return (\n <div className=\"column is-full has-text-left\">\n <EnterPhoneWrapper>\n <p className=\"header has-text-left mb-5\">Add your name to post your review</p>\n <div className=\"create-form\">\n <div className=\"input-row\">\n <label>Name (publicly available)</label>\n <InputField placeholder=\"Name\" value={name} onChange={(e) => setName(e.target.value)} />\n </div>\n <HealMeSquareButton\n type=\"primary\"\n label=\"Continue\"\n fullWidth={true}\n onClick={() => {\n nextStep(name)\n }}\n disabled={!name}\n />\n </div>\n </EnterPhoneWrapper>\n </div>\n )\n}\n","import { ChevronDownIcon, ChevronUpIcon, XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { FeatureFlagProvider } from \"../contexts/FeatureFlagContext\"\nimport { getSideNavigationItems } from \"../utils/sideNavigationUtils\"\n\nimport { CounterBadge } from \"./shared/Badge\"\nimport { Link } from \"./shared/Links\"\nimport { AnimatedModal } from \"./shared/Modal\"\nimport Typography from \"./shared/Typography\"\n\nconst NavigationItem = ({ item, activeHref, badgeCount }) => {\n const hasChildren = item.children && item.children.length > 0\n const hasChildrenActive = hasChildren && item.children.some((child) => activeHref.startsWith(child.href))\n\n const [isOpen, setIsOpen] = useState(hasChildrenActive)\n\n let isActive = (activeHref.startsWith(item.href) && !activeHref.includes(\"personal\")) || hasChildrenActive\n\n // remove this after fully enabling flag \"side_navigation_v2\"\n if (item.name === \"Settings\" && activeHref.includes(\"intake_forms\")) {\n isActive = false\n }\n\n const icon = isActive ? item.solidIcon : item.outlineIcon\n\n const handleClick = (e) => {\n if (hasChildren) {\n e.preventDefault()\n setIsOpen(!isOpen)\n }\n }\n\n return (\n <>\n <div className={twMerge(\"mx-3 rounded-lg\", isOpen ? \"bg-gray/10\" : \"\")}>\n <a\n href={item.href}\n style={{ textDecoration: \"none\" }}\n onClick={handleClick}\n {...(item.id ? { id: item.id } : {})}>\n <div\n className={twMerge(\n \"my-3 flex cursor-pointer items-center justify-start rounded-lg py-1 pl-4 pr-2 hover:text-teal\",\n isActive ? \"font-bold\" : \"\",\n isActive && !hasChildren ? \"bg-gray\" : \"\",\n hasChildren && isOpen ? \"mb-0 rounded-b-none font-bold\" : \"\"\n )}>\n {icon}\n <span className=\"ml-3\">{item.name}</span>\n {badgeCount > 0 && <CounterBadge className=\"ml-8\">{badgeCount}</CounterBadge>}\n {hasChildren && (\n <span className=\"ml-auto\">\n {isOpen ? (\n <ChevronUpIcon className=\"h-5 w-5 text-gray-dark\" />\n ) : (\n <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" />\n )}\n </span>\n )}\n </div>\n </a>\n {isOpen && hasChildren && (\n <div className=\"mt-2 flex flex-col gap-2\">\n {item.children.map((child, index) => (\n <NavigationItemChild\n key={child.name}\n item={child}\n activeHref={activeHref}\n isLast={index === item.children.length - 1}\n />\n ))}\n </div>\n )}\n </div>\n </>\n )\n}\n\nconst NavigationItemChild = ({ item, activeHref, isLast }) => {\n const isActive = activeHref === item.href\n\n return (\n <a\n href={item.href}\n className={twMerge(\n \"flex cursor-pointer items-center justify-start py-1 pl-[52px] pr-2 hover:text-teal\",\n isActive ? \"bg-gray/25 font-bold\" : \"\",\n isLast ? \"rounded-b-lg\" : \"\"\n )}>\n {item.icon}\n <span>{item.name}</span>\n </a>\n )\n}\n\nconst SideNavigationComponent = ({\n activeHref,\n completionCount,\n verificationCount,\n googleConnected,\n cronofyConnected,\n websitePlan\n}) => {\n const [showNotice, setShowNotice] = useState(false)\n const [cronofyModalVisible, setCronofyModalVisible] = useState(false)\n\n const profileBadgeCount = completionCount > 0 ? completionCount : verificationCount\n const syncCalendarCopy = \"Sync Heal.me with your calendar\"\n\n const items = getSideNavigationItems({ websitePlan })\n\n useEffect(() => {\n setShowNotice(!cronofyConnected && localStorage.getItem(\"sideNavNoticeDismissed\") !== \"true\")\n\n const cronofyModalShown = localStorage.getItem(\"cronofyModalShownV2\")\n if (!cronofyModalShown) {\n setCronofyModalVisible(true)\n localStorage.setItem(\"cronofyModalShownV2\", \"true\")\n }\n }, [])\n\n const handleDismiss = () => {\n localStorage.setItem(\"sideNavNoticeDismissed\", \"true\")\n setShowNotice(false)\n }\n\n return (\n <>\n <div className=\"fixed z-30 h-screen min-h-100 w-[200px] overflow-y-auto border-r border-gray-light bg-gray-ultralight pb-125 scrollbar-none\">\n <div className=\"w-full bg-gray-ultralight pb-3 pl-8 pt-6\">\n <a href=\"/\" className=\"\">\n <img src=\"/images/healme_logo.svg\" alt=\"Logo\" />\n </a>\n </div>\n <div className=\"mt-6\">\n {items.map((item) => (\n <NavigationItem\n key={item.name}\n item={item}\n activeHref={activeHref}\n badgeCount={item.name === \"Profile\" ? profileBadgeCount : 0}\n />\n ))}\n\n {showNotice && (\n <div className=\"relative mx-4 my-6 ml-6 rounded-lg border border-gray bg-white p-4\">\n <div className=\"flex flex-col\">\n <Typography variant=\"micro\">{syncCalendarCopy}</Typography>\n <Link href=\"/portal/settings/calendar\" className=\"mt-1 text-sm font-semibold\">\n Connect now\n </Link>\n </div>\n <XMarkIcon\n onClick={handleDismiss}\n className=\"absolute right-1 top-2 h-7 w-7 cursor-pointer p-1 font-semibold text-black\"\n />\n </div>\n )}\n\n {!cronofyConnected && googleConnected && (\n <AnimatedModal\n visible={cronofyModalVisible}\n hideModal={() => (window.location = \"/portal/settings/calendar\")}\n showFooter={true}\n actionButtonCopy=\"Connect calendar\"\n hideCancelButton={true}\n onSave={() => (window.location = \"/portal/settings/calendar\")}\n header=\"Reconnect your calendar\">\n <p>We've made big improvements to our calendar integration!</p>\n <br />\n <p>To continue syncing with your Google Calendar, please reconnect your calendar now.</p>\n <br />\n <p>We apologize for any inconvenience and appreciate your understanding.</p>\n </AnimatedModal>\n )}\n </div>\n </div>\n </>\n )\n}\n\nexport default function SideNavigation(props) {\n return (\n <FeatureFlagProvider flags={props.featureFlags}>\n <SideNavigationComponent {...props} />\n </FeatureFlagProvider>\n )\n}\n","import dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst BookableEventCard = ({ event, onClick }) => (\n <a\n className=\"group relative max-w-64 rounded-xl border border-gray-light text-center\"\n href=\"#\"\n onClick={(e) => {\n e.preventDefault()\n onClick()\n }}>\n {event.photoUrl ? (\n <img src={event.photoUrl} alt={event.name} className=\"box-content max-h-48 w-full rounded-t-xl object-cover\" />\n ) : (\n <div className=\"aspect-square w-full rounded-t-xl bg-gray-light\" />\n )}\n <div className=\"absolute left-0 top-0 rounded-tl-xl bg-black p-2 text-center text-white\">\n <div className=\"text-sm uppercase\">{dayjs(event.startsAt).format(\"MMM\")}</div>\n <div className=\"text-4xl\">{dayjs(event.startsAt).format(\"D\")}</div>\n </div>\n <div className=\"flex flex-col gap-4 p-8\">\n <Typography variant=\"h3\" className=\"group-hover:underline\">\n {event.name}\n </Typography>\n <div>\n {dayjs(event.startsAt).format(\"h:mm A\")} - {dayjs(event.endsAt).format(\"h:mm A z\")}\n </div>\n <div className=\"truncate\">{event.description}</div>\n <Button>Edit event</Button>\n </div>\n </a>\n)\n\nexport default BookableEventCard\n","import React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport BookableEventForm from \"./BookableEventForm\"\nimport { useBookableEvents } from \"./BookableEventsContext\"\n\nconst BookableEventsFlyout = () => {\n const {\n showFlyout,\n setShowFlyout,\n bookableEvent,\n fetching,\n upsertBookableEvent,\n updateBookableEvents,\n setDeleteModalVisible\n } = useBookableEvents()\n const { showToast } = useToast()\n\n const editingExistingEvent = !!bookableEvent.id\n const saveEnabled = !fetching && bookableEvent.name?.length > 0 && bookableEvent.location?.length > 0\n\n const onSave = () => {\n upsertBookableEvent({ ...bookableEvent }).then((result) => {\n if (result?.data?.upsertBookableEvent?.result === \"success\") {\n const newEvent = result.data.upsertBookableEvent.bookableEvent\n newEvent.id = Number(newEvent.id)\n updateBookableEvents(newEvent)\n setShowFlyout(false)\n showToast(`Your event '${newEvent.name}' was saved successfully`)\n } else {\n console.error(result)\n let errorMessage = \"There was an error saving your event\"\n if (result.data?.upsertBookableEvent?.errors) errorMessage += `: ${result.data.upsertBookableEvent.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n return (\n <>\n <Flyout\n header={editingExistingEvent ? \"Edit event\" : \"Create event\"}\n visible={showFlyout}\n closeFlyout={() => setShowFlyout(false)}\n onSave={onSave}\n footer={\n <div className={`flex w-full items-center ${editingExistingEvent ? \"justify-between\" : \"justify-end\"}`}>\n {editingExistingEvent && (\n <Button type=\"destructive\" onClick={() => setDeleteModalVisible(true)} disabled={fetching}>\n Delete\n </Button>\n )}\n <div className=\"flex gap-4\">\n <Button type=\"tertiary\" onClick={() => setShowFlyout(false)} disabled={fetching}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={onSave} disabled={fetching || !saveEnabled}>\n Save\n </Button>\n </div>\n </div>\n }>\n <BookableEventForm />\n </Flyout>\n </>\n )\n}\n\nexport default BookableEventsFlyout\n","import React from \"react\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport Typography from \"../components/shared/Typography\"\nimport { CalendarFlyoutProvider } from \"../contexts/CalendarFlyoutContext\"\nimport { ToastProvider } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nimport BookableEventCard from \"./BookableEvents/BookableEventCard\"\nimport { BookableEventsProvider, useBookableEvents } from \"./BookableEvents/BookableEventsContext\"\nimport BookableEventsFlyout from \"./BookableEvents/BookableEventsFlyout\"\n\nconst BookableEventsPage = () => {\n const { setShowFlyout, bookableEvents, setBookableEvent, defaultNewEvent, defaultTimeZone } = useBookableEvents()\n\n return (\n <>\n <div className=\"mb-8 flex justify-between align-bottom sm:mb-4\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Events\n </Typography>\n <Typography variant=\"subtitle\">Schedule events that multiple people can sign up for</Typography>\n </div>\n <div className=\"flex\">\n <Button\n type=\"primary\"\n size=\"small\"\n floatingInMobile={true}\n onClick={() => {\n setShowFlyout(true)\n setBookableEvent({ ...defaultNewEvent, timeZone: defaultTimeZone })\n }}>\n Create event\n </Button>\n </div>\n </div>\n <div className=\"grid grid-cols-4 gap-4\">\n {bookableEvents.map((event) => (\n <BookableEventCard\n event={event}\n key={event.id}\n onClick={() => {\n setShowFlyout(true)\n setBookableEvent(event)\n }}\n />\n ))}\n </div>\n <BookableEventsFlyout />\n </>\n )\n}\n\n// TODO: CalendarFlyoutProvider should not be here, but BookableEventForm is using it now\nexport default function BookableEvents(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <CalendarFlyoutProvider>\n <BookableEventsProvider {...props}>\n <BookableEventsPage />\n </BookableEventsProvider>\n </CalendarFlyoutProvider>\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import { ChevronRightIcon } from \"@heroicons/react/24/outline\"\nimport PropTypes from \"prop-types\"\nimport React from \"react\"\n\nimport { Link } from \"./Links\"\nimport Typography from \"./Typography\"\n\nconst Breadcrumbs = ({ links, activePage }) => (\n <div className=\"mb-8 flex flex-row items-center sm:mb-4\">\n {links.map((link, index) => (\n <React.Fragment key={link.href}>\n <Link href={link.href} className=\"text-sm font-bold\">\n {link.text}\n </Link>\n {index < links.length - 1 && <ChevronRightIcon className=\"mx-2 h-5 w-5 text-gray\" />}\n </React.Fragment>\n ))}\n\n {activePage && (\n <>\n <ChevronRightIcon className=\"ml-2 h-5 w-5 text-gray\" />\n <Typography variant=\"small\" className=\"ml-2 text-gray-dark\">\n {activePage}\n </Typography>\n </>\n )}\n </div>\n)\n\nBreadcrumbs.propTypes = {\n links: PropTypes.arrayOf(\n PropTypes.shape({\n href: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired\n })\n ).isRequired,\n activePage: PropTypes.string.isRequired\n}\n\nexport default Breadcrumbs\n","import { Listbox, Transition } from \"@headlessui/react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport React, { Fragment } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { BASE_INPUT_CLASSNAMES, BASE_LABEL_CLASSNAMES, DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"./Inputs\"\n\nconst ListBox = ({\n label,\n labelClassNames,\n className,\n options,\n value,\n onChange,\n disabled,\n buttonHint = null,\n placeholder = \"Select an option\"\n}) => {\n if (typeof value === \"string\") value = options.find((option) => option.value === value)\n\n return (\n <Listbox value={value} onChange={onChange}>\n {({ open }) => (\n <>\n {label && <Listbox.Label className={twMerge(BASE_LABEL_CLASSNAMES, labelClassNames)}>{label}</Listbox.Label>}\n <div className=\"relative\">\n <Listbox.Button\n className={twMerge(\n BASE_INPUT_CLASSNAMES,\n disabled ? \"pointer-events-none opacity-50\" : \"relative cursor-pointer\",\n className\n )}>\n <div className=\"flex items-center justify-between gap-2\">\n {value ? (\n <div>{buttonHint ? `${value.label} ${buttonHint}` : value.label}</div>\n ) : (\n <div className=\"text-gray-dark\">{placeholder}</div>\n )}\n <div>\n <ChevronDownIcon className=\"h-5 w-5 text-gray-dark\" aria-hidden=\"true\" />\n </div>\n </div>\n </Listbox.Button>\n\n <Transition\n show={open}\n as={Fragment}\n leave=\"transition ease-in duration-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\">\n <Listbox.Options className={\"absolute \" + DROPDOWN_CLASSNAMES}>\n {options.map((option) => (\n <Listbox.Option key={option.value} className={DROPDOWN_OPTION_CLASSNAMES} value={option}>\n <div className=\"flex items-center\">\n <span className=\"block\">{option.label}</span>\n </div>\n </Listbox.Option>\n ))}\n </Listbox.Options>\n </Transition>\n </div>\n </>\n )}\n </Listbox>\n )\n}\n\nexport default ListBox\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport EditClientModal from \"../../components/shared/EditClientModal\"\nimport { Label } from \"../../components/shared/Inputs\"\nimport { Link, TabNavLink } from \"../../components/shared/Links\"\nimport ListBox from \"../../components/shared/ListBox\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport { clientName, formatPhone } from \"../../utils/utils\"\n\nconst ClientPageView = ({ path, client: clientProp, upcomingAppointments, children, clientNotesEnabled }) => {\n const [client, setClient] = useState(clientProp)\n const navItems = [\n { title: \"Overview\", path: `/portal/clients/${client.id}` },\n { title: \"Billing\", path: `/portal/clients/${client.id}/billing` }\n ]\n\n if (clientNotesEnabled) {\n navItems.push({ title: \"Intake form\", path: `/portal/clients/${client.id}/intake_form` })\n }\n\n const selectItems = navItems.map((item) => ({ value: item.path, label: `${item.title}` }))\n const name = clientName(client)\n\n return (\n <ToastProvider>\n <NiceModal.Provider>\n <div className=\"w-full\">\n <div className=\"mx-auto max-w-[1140px]\">\n <Breadcrumbs\n links={[{ href: \"/portal/clients\", text: \"Client directory\" }]}\n activePage={`${name}'s profile`}\n />\n <div className=\"flex w-full items-start gap-8\">\n <div className=\"flex-1\">\n <Typography variant=\"h3\" as=\"h1\">\n {name}\n </Typography>\n <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n {navItems.map((item) => (\n <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n {item.title}\n </TabNavLink>\n ))}\n </div>\n <div className=\"mt-2 hidden sm:block\">\n <ListBox\n value={selectItems.find((item) => item.value === path)}\n onChange={(item) => {\n if (typeof window !== \"undefined\") window.location = item.value\n }}\n options={selectItems}\n buttonHint=\"(tap to navigate)\"\n />\n </div>\n <div className=\"mt-4 w-full sm:mt-2\">{children}</div>\n </div>\n <div className=\"flex w-[278px] flex-col gap-4\">\n <div className=\"rounded-xl border border-gray p-8\" data-test-id=\"client-details\">\n <div className=\"mb-2 flex items-center justify-between\">\n <div className=\"font-bold\">Client details</div>\n <Button type=\"link\" onClick={() => NiceModal.show(\"edit-client-flyout\")}>\n Edit\n </Button>\n </div>\n <div className=\"flex flex-col gap-4\">\n {formatPhone(client.phone) && (\n <div>\n <Label>Phone</Label>\n <Typography variant=\"micro\" className=\"truncate\" as=\"div\">\n {formatPhone(client.phone)}\n </Typography>\n </div>\n )}\n {client.email && (\n <div>\n <Label>Email</Label>\n <Typography variant=\"micro\" className=\"truncate\" as=\"div\">\n {client.email}\n </Typography>\n </div>\n )}\n {client.fullAddress && (\n <div>\n <Label>Address</Label>\n <Typography variant=\"micro\" className=\"whitespace-pre-wrap\" as=\"div\">\n {client.fullAddress}\n </Typography>\n </div>\n )}\n </div>\n </div>\n <div className=\"rounded-xl border border-gray p-8\">\n <div className=\"mb-2 font-bold\">Upcoming appointments</div>\n {upcomingAppointments.length === 0 && <div className=\"text-sm\">No upcoming appointments</div>}\n {upcomingAppointments.map((appointment, index) => (\n <div key={index}>\n <Link className=\"text-sm\" href={`/portal/calendar#${appointment.instantActionToken}`}>\n {dayjs(appointment.startsAt).format(\"MMM D, YYYY\")}\n </Link>{\" \"}\n <span className=\"text-sm text-gray-dark\">{dayjs(appointment.startsAt).format(\"h:mm A\")}</span>\n </div>\n ))}\n <Link href={`/portal/calendar?clientId=${client.id}#create-appointment`}>+ New appointment</Link>\n </div>\n </div>\n </div>\n </div>\n </div>\n <EditClientModal\n client={client}\n modalId=\"edit-client-flyout\"\n deleteModalId=\"delete-client-flyout\"\n onSuccess={(newClient) => {\n newClient.fullAddress = [\n newClient.address,\n newClient.addressTwo,\n newClient.city,\n newClient.state,\n newClient.postalCode,\n newClient.country\n ]\n .filter(Boolean)\n .join(\", \")\n setClient((prevClient) => ({ ...prevClient, ...newClient }))\n }}\n key={client.id}\n />\n </NiceModal.Provider>\n </ToastProvider>\n )\n}\n\nexport default ClientPageView\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Banner, EmptyStateBox } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\n\nimport AddCreditCardModal from \"./AddCreditCardModal\"\n\nexport const DETACH_PAYMENT_METHOD_PRACTICE_MUTATION = `\n mutation DetachPaymentMethodPractice($clientId: ID!) {\n detachPaymentMethodPractice(clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nconst ClientPaymentMethod = ({ client, setCreditCardModalOpen, setSelectedClient, setShowDeleteModal }) => {\n const [{ data, fetching, error }] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: client.id,\n userId: client.userId,\n practiceId: client.practiceId\n },\n requestPolicy: \"cache-and-network\"\n })\n\n const paymentMethod = data?.defaultPaymentMethodPractice\n\n return (\n <Banner className=\"w-full\">\n <Typography variant=\"h5\" as=\"div\">\n {client.practice?.user?.firstName + \" \" + client.practice?.user?.lastName}\n </Typography>\n <div className=\"flex items-center justify-between gap-2\">\n {fetching ? (\n <div>Loading...</div>\n ) : error ? (\n <div>Error fetching payment method</div>\n ) : (\n <>\n <div>\n {paymentMethod\n ? `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${\n paymentMethod.expMonth\n }/${paymentMethod.expYear}`\n : \"No default payment method\"}\n </div>\n\n <div className=\"flex gap-4\">\n {paymentMethod && (\n <button\n className=\"font-bold text-red hover:underline\"\n onClick={() => {\n setShowDeleteModal(true)\n setSelectedClient(client)\n }}>\n Delete\n </button>\n )}\n\n <button\n className=\"font-bold text-teal hover:underline\"\n onClick={() => {\n setCreditCardModalOpen(true)\n setSelectedClient(client)\n }}>\n {paymentMethod ? \"Change\" : \"Add\"}\n </button>\n </div>\n </>\n )}\n </div>\n </Banner>\n )\n}\n\nconst PaymentMethods = ({ clients }) => {\n const [showDeleteModal, setShowDeleteModal] = useState(false)\n const [creditCardModalOpen, setCreditCardModalOpen] = useState(false)\n const [selectedClient, setSelectedClient] = useState(null)\n const [, detachPaymentMethodPractice] = useMutation(DETACH_PAYMENT_METHOD_PRACTICE_MUTATION)\n\n const { showToast } = useToast()\n\n const getFilteredClients = (clients) => {\n const latestClients = {}\n\n clients.forEach((client) => {\n const { practiceId, id } = client\n const hasPaymentProvider = client.practice.hasPaymentProvider\n if ((!latestClients[practiceId] || latestClients[practiceId].id < id) && hasPaymentProvider) {\n latestClients[practiceId] = client\n }\n })\n\n return Object.values(latestClients)\n }\n\n const filteredClients = getFilteredClients(clients)\n\n return (\n <div>\n <Typography variant=\"h3\" as=\"h1\">\n Payment methods\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Payment methods are saved related to a practitioner.\n </Typography>\n\n {filteredClients.length === 0 && (\n <EmptyStateBox>\n <div className=\"font-bold\">No payment methods saved</div>\n </EmptyStateBox>\n )}\n\n <div className=\"flex flex-col gap-4\">\n {filteredClients.map((client) => (\n <ClientPaymentMethod\n key={client.id}\n client={client}\n setCreditCardModalOpen={setCreditCardModalOpen}\n setSelectedClient={setSelectedClient}\n setShowDeleteModal={setShowDeleteModal}\n />\n ))}\n </div>\n\n {creditCardModalOpen && selectedClient && (\n <PaymentProviderWrapper practice={selectedClient.practice} client={selectedClient}>\n <AddCreditCardModal\n headerLabel={\"Add a credit card\"}\n open={creditCardModalOpen}\n closeModal={() => setCreditCardModalOpen(false)}\n practice={selectedClient.practice}\n onSave={() => window.location.reload()}\n />\n </PaymentProviderWrapper>\n )}\n\n {showDeleteModal && selectedClient && (\n <AnimatedModal\n visible={showDeleteModal}\n header=\"Delete payment method\"\n hideModal={() => setShowDeleteModal(false)}\n actionButtonCopy=\"Yes, delete\"\n actionButtonType=\"destructive\"\n showFooter={true}\n onSave={() => {\n detachPaymentMethodPractice({\n clientId: selectedClient.id\n }).then((res) => {\n if (res.data?.detachPaymentMethodPractice?.result === \"success\") {\n showToast({ content: \"Payment method deleted successfully\", type: \"success\" })\n window.location.reload()\n } else {\n showToast({ content: \"There was an error deleting the payment method\", type: \"error\" })\n console.error(res) // eslint-disable-line no-console\n }\n setShowDeleteModal(false)\n })\n }}>\n <p>Are you sure you want to delete this payment method?</p>\n </AnimatedModal>\n )}\n </div>\n )\n}\n\nexport default function ManagePaymentMethods(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <PaymentMethods {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useQuery, useMutation } from \"urql\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { DEFAULT_PAYMENT_METHOD_QUERY } from \"../../utils/mutations\"\nimport AddCreditCardModal from \"../ManagePaymentMethods/AddCreditCardModal\"\nimport { DETACH_PAYMENT_METHOD_PRACTICE_MUTATION } from \"../ManagePaymentMethods/ManagePaymentMethods\"\n\nconst ManageCreditCard = ({ client, practice }) => {\n const [creditCardModalOpen, setCreditCardModalOpen] = useState(false)\n const [showDeleteModal, setShowDeleteModal] = useState(false)\n const [{ data, fetching, error }, reexecuteQuery] = useQuery({\n query: DEFAULT_PAYMENT_METHOD_QUERY,\n variables: {\n clientId: client.id,\n userId: client.userId,\n practiceId: practice.id\n },\n requestPolicy: \"cache-and-network\"\n })\n const [{ fetching: detachingPaymentMethod }, detachPaymentMethodPractice] = useMutation(\n DETACH_PAYMENT_METHOD_PRACTICE_MUTATION\n )\n const { showToast } = useToast()\n\n const paymentMethod = data?.defaultPaymentMethodPractice\n\n return (\n <div className=\"w-full\">\n {!practice.hasPaymentProvider ? (\n <a className=\"font-bold text-teal hover:underline\" href={`/portal/settings/banking`}>\n Click here to connect to a payment provider\n </a>\n ) : fetching ? (\n <img className=\"loading\" src=\"/loading-spinner.png\" width=\"40px\" />\n ) : error ? (\n <div>Error fetching payment method</div>\n ) : (\n <div className=\"flex w-full items-start justify-between gap-2\">\n <div className=\"pb-5 text-sm text-gray-dark\">\n {paymentMethod\n ? `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${\n paymentMethod.expMonth\n }/${paymentMethod.expYear}`\n : \"No payment method on file\"}\n </div>\n\n <div className=\"flex gap-4\">\n {paymentMethod && (\n <button className=\"font-bold text-red hover:underline\" onClick={() => setShowDeleteModal(true)}>\n Delete\n </button>\n )}\n <button className=\"font-bold text-teal hover:underline\" onClick={() => setCreditCardModalOpen(true)}>\n {paymentMethod ? \"Change\" : \"Add\"}\n </button>\n </div>\n </div>\n )}\n {creditCardModalOpen && client && practice.hasPaymentProvider && (\n <PaymentProviderWrapper practice={practice} client={client}>\n <AddCreditCardModal\n headerLabel=\"Add credit card\"\n open={creditCardModalOpen}\n closeModal={() => setCreditCardModalOpen(false)}\n practice={practice}\n onSave={reexecuteQuery}\n />\n </PaymentProviderWrapper>\n )}\n {showDeleteModal && (\n <AnimatedModal\n visible={showDeleteModal}\n header=\"Delete payment method\"\n hideModal={() => setShowDeleteModal(false)}\n actionButtonCopy=\"Yes, delete\"\n actionButtonType=\"destructive\"\n showFooter={true}\n saveDisabled={detachingPaymentMethod}\n onSave={() => {\n detachPaymentMethodPractice({\n clientId: client.id\n }).then((res) => {\n if (res.data?.detachPaymentMethodPractice?.result === \"success\") {\n showToast({ content: \"Payment method deleted successfully\", type: \"success\" })\n reexecuteQuery()\n } else {\n showToast({ content: \"There was an error deleting the payment method\", type: \"error\" })\n console.error(res) // eslint-disable-line no-console\n }\n setShowDeleteModal(false)\n })\n }}>\n <p>Are you sure you want to delete this payment method?</p>\n </AnimatedModal>\n )}\n </div>\n )\n}\n\nexport default ManageCreditCard\n","import React, { useState } from \"react\"\n\nimport PaymentDirectory from \"../../components/pro_portal/payments/PaymentDirectory\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ClientPageView from \"./ClientPageView\"\nimport ManageCreditCard from \"./ManageCreditCard\"\n\nconst Billing = ({ client: clientProp, upcomingAppointments, communicationSettings, practice, clientNotesEnabled }) => {\n const [client] = useState(clientProp)\n\n return (\n <ClientPageView\n client={client}\n practice={practice}\n upcomingAppointments={upcomingAppointments}\n clientNotesEnabled={clientNotesEnabled}\n path={`/portal/clients/${client.id}/billing`}>\n <div className=\"mb-6 w-full rounded-xl border border-gray p-8\">\n <div className=\"mb-2 font-bold\">Payment Method</div>\n <ManageCreditCard client={client} practice={practice} />\n </div>\n <PaymentDirectory communicationSettings={communicationSettings} clientId={client.id} />\n </ClientPageView>\n )\n}\n\nexport default function ClientBillingPage(props) {\n return (\n <GraphQLProvider>\n <Billing {...props} />\n </GraphQLProvider>\n )\n}\n","import React, { useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\nimport SendIntakeFormButton from \"../IntakeForms/SendIntakeFormButton\"\n\nimport ClientPageView from \"./ClientPageView\"\n\nconst CLIENT_INTAKE_FORM_QUERY = `\n query IntakeForm($clientId: ID!) {\n client(clientId: $clientId) {\n id\n intakeForm { text time }\n intakeLastSentAt\n }\n }\n`\n\nconst IntakeForm = ({ client: clientProp, upcomingAppointments, clientNotesEnabled }) => {\n const [client] = useState(clientProp)\n const [{ data, fetching }] = useQuery({\n query: CLIENT_INTAKE_FORM_QUERY,\n variables: { clientId: client.id },\n requestPolicy: \"network-only\"\n })\n\n const rawJson = data?.client?.intakeForm?.text\n const parsedJson = rawJson && JSON.parse(rawJson)\n\n return (\n <ClientPageView\n client={client}\n upcomingAppointments={upcomingAppointments}\n clientNotesEnabled={clientNotesEnabled}\n path={`/portal/clients/${client.id}/intake_form`}>\n {fetching ? (\n <LoadingSpinner />\n ) : parsedJson ? (\n <div className=\"mb-6\">\n {Object.entries(parsedJson).map((row) => (\n <div key={row[0]} className=\"mb-2 flex flex-col\">\n <span className=\"font-bold\">{row[0].replace(\"-Comment\", \" (Comment)\")}</span>\n {Array.isArray(row[1]) ? (\n <ul className=\"list-inside list-disc\">\n {row[1].map((item, index) => (\n <>\n {typeof item === \"object\" ? (\n <li key={index}>\n Row {index + 1}:\n <ul className=\"ml-4 list-inside list-disc\">\n {Object.entries(item).map(([subKey, subValue]) => (\n <li key={subKey}>\n {subKey}: {subValue}\n </li>\n ))}\n </ul>\n </li>\n ) : (\n <li key={index}>{item}</li>\n )}\n </>\n ))}\n </ul>\n ) : typeof row[1] === \"object\" ? (\n <div>\n {Object.entries(row[1]).map(([key, value]) => (\n <li key={key}>\n {key}:{\" \"}\n {typeof value === \"object\" ? (\n <ul className=\"ml-4 list-inside list-disc\">\n {Object.entries(value).map(([subKey, subValue]) => (\n <li key={subKey}>\n {subKey}: {subValue}\n </li>\n ))}\n </ul>\n ) : (\n value\n )}\n </li>\n ))}\n </div>\n ) : typeof row[1] === \"string\" && row[1].startsWith(\"data:image\") ? (\n <img src={row[1]} alt=\"intake form image\" className=\"max-h-[200px] max-w-[200px]\" />\n ) : (\n <span>{row[1] === true ? \"Yes\" : row[1] === false ? \"No\" : row[1]}</span>\n )}\n </div>\n ))}\n </div>\n ) : (\n <div>\n <p className=\"mb-4\">\n {data?.client?.intakeLastSentAt\n ? \"This client has not submitted their intake form.\"\n : \"This client has not been sent an intake form.\"}\n </p>\n <SendIntakeFormButton clientId={client.id} intakeLastSentAt={data?.client?.intakeLastSentAt} />\n </div>\n )}\n </ClientPageView>\n )\n}\n\nexport default function ClientIntakeForm(props) {\n return (\n <GraphQLProvider>\n <IntakeForm {...props} />\n </GraphQLProvider>\n )\n}\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, TextArea } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\n\nimport ClientPageView from \"./ClientPageView\"\n\nconst ADD_NOTE_MUTATION = `\n mutation($text: String!, $clientId: ID!) {\n addNote(text: $text, clientId: $clientId) {\n result\n errors\n }\n }\n`\n\nconst ClientNotes = ({ client: clientProp }) => {\n const [client, setClient] = useState(clientProp)\n const [text, setText] = useState(\"\")\n const [{ fetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n\n const addNoteToClient = () => {\n addNote({ text, clientId: client.id }).then((result) => {\n if (result.data?.addNote?.result === \"success\") {\n setText(\"\")\n setClient((prev) => ({\n ...prev,\n notes: [\n ...prev.notes,\n {\n text,\n time: new Date().toISOString()\n }\n ]\n }))\n console.log(\"Note added successfully\")\n } else {\n console.error(result)\n }\n })\n }\n\n return (\n <ClientPageView client={client}>\n <Label>Client notes</Label>\n <div className=\"mb-4 rounded-lg border border-gray p-4\">\n {client.notes.map((note, i) => (\n <>\n <div key={note.time} className=\"flex gap-4\">\n <div className=\"flex-none font-bold\">{dayjs(note.time).format(\"MMM Do, YYYY, h:mm A\")}</div>\n <div>{note.text}</div>\n </div>\n {i < client.notes.length - 1 && <Divider className=\"my-4\" />}\n </>\n ))}\n </div>\n <Label htmlFor=\"note-textarea\">Add a new note</Label>\n <TextArea id=\"note-textarea\" onChange={(e) => setText(e.target.value)} value={text} />\n <Button onClick={addNoteToClient} disabled={fetching}>\n Submit\n </Button>\n </ClientPageView>\n )\n}\n\nexport default ClientNotes\n","import React, { useEffect, useRef, useState } from \"react\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { sanitize } from \"../../utils/utils\"\n\nimport { Button } from \"./Buttons\"\nimport { TextArea } from \"./Inputs\"\n\nconst APPOINTMENT_NOTES_QUERY = `\n query AppointmentNote($id: ID!) {\n appointment(id: $id) {\n id\n appointmentNote { text time }\n }\n }\n`\n\nconst ADD_NOTE_MUTATION = `\n mutation($text: String!, $clientId: ID!, $noteType: String, $appointmentId: ID) {\n addNote(text: $text, clientId: $clientId, noteType: $noteType, appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nconst AppointmentNotes = ({ appointment, openAppointmentToken }) => {\n const [text, setText] = useState(\"\")\n const [editing, setEditing] = useState(false)\n const [{ data, fetching }, refetchQuery] = useQuery({\n query: APPOINTMENT_NOTES_QUERY,\n variables: { id: appointment.id },\n requestPolicy: \"network-only\"\n })\n\n const [{ fetching: addNoteFetching }, addNote] = useMutation(ADD_NOTE_MUTATION)\n const ref = useRef(null)\n\n useEffect(() => {\n if (openAppointmentToken === appointment.instantActionToken) {\n setEditing(true)\n }\n }, [openAppointmentToken])\n\n useEffect(() => {\n if (editing && ref.current) ref.current.focus()\n }, [editing])\n\n const onSave = () => {\n addNote({ text, appointmentId: appointment.id, noteType: \"appointment\", clientId: appointment.client.id }).then(\n (result) => {\n if (result.data?.addNote?.result === \"success\") {\n refetchQuery()\n } else {\n console.error(result) // eslint-disable-line no-console\n }\n }\n )\n }\n\n const appointmentNoteText = data?.appointment?.appointmentNote?.text || \"\"\n const saveDisabled = fetching || addNoteFetching || text.length < 1\n const disabled = fetching || addNoteFetching\n\n return (\n <>\n <div className={disabled ? \"opacity-50\" : \"\"}>\n {editing ? (\n <div>\n <div className=\"mb-2\">\n <div className=\"mb-1 font-bold\">Appointment notes</div>\n </div>\n <TextArea value={text} onChange={(e) => setText(e.target.value)} ref={ref} />\n <div className=\"mt-4 flex justify-end gap-4\">\n <Button\n type=\"tertiary\"\n size=\"small\"\n onClick={() => {\n setEditing(false)\n setText(appointmentNoteText)\n }}>\n Cancel\n </Button>\n <Button\n disabled={saveDisabled}\n size=\"small\"\n onClick={() => {\n if (saveDisabled) return\n setEditing(false)\n onSave()\n }}>\n Save\n </Button>\n </div>\n </div>\n ) : appointmentNoteText ? (\n <div>\n <div className=\"text-sm font-bold\">Notes</div>\n <div dangerouslySetInnerHTML={{ __html: sanitize(appointmentNoteText.replaceAll(\"\\n\", \"<br />\")) }} />\n <Button\n type=\"link\"\n className=\"no-underline\"\n onClick={() => {\n if (disabled) return\n setEditing(true)\n setText(appointmentNoteText)\n }}>\n Edit note\n </Button>\n </div>\n ) : (\n <div>\n <Button\n type=\"link\"\n className=\"no-underline\"\n onClick={() => {\n if (disabled) return\n setEditing(true)\n setText(appointmentNoteText)\n }}>\n + Add note\n </Button>\n </div>\n )}\n </div>\n </>\n )\n}\n\nexport default AppointmentNotes\n","import dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { useQuery } from \"urql\"\n\nimport AppointmentNotes from \"../../components/shared/AppointmentNotes\"\nimport Badge from \"../../components/shared/Badge\"\nimport ClientNotes from \"../../components/shared/ClientNotes\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\n\nconst PAST_APPOINTMENTS_QUERY = `\n query PastAppointments($clientId: ID) {\n pastAppointments(clientId: $clientId) {\n id\n startsAt\n endsAt\n amountCents\n timeZone\n instantActionToken\n state\n fullTotal\n client { id }\n service { id name }\n location { id name }\n }\n }\n`\n\nexport default function ClientChronology({ client, clientNotesEnabled }) {\n const [openAppointmentToken, setOpenAppointmentToken] = useState(null)\n const [{ data, fetching }] = useQuery({\n query: PAST_APPOINTMENTS_QUERY,\n variables: { clientId: client.id },\n requestPolicy: \"cache-and-network\"\n })\n\n useEffect(() => {\n if (data && location.hash) setOpenAppointmentToken(location.hash.substring(1))\n }, [data])\n\n const pastAppointments = data?.pastAppointments\n\n return (\n <div>\n {fetching ? (\n <LoadingSpinner />\n ) : (\n <div>\n {clientNotesEnabled && (\n <div className=\"mb-6 rounded-xl bg-orange-light p-6\">\n <ClientNotes client={client} className=\"bg-orange-light\" />\n </div>\n )}\n {pastAppointments && pastAppointments.length > 0 ? (\n <div>\n {pastAppointments.map((appointment) => (\n <div key={appointment.instantActionToken} className=\"mb-4 flex w-full items-start gap-4\">\n <Badge type=\"info\" className=\"w-20 shrink-0 text-center\">\n {dayjs(appointment.startsAt).format(\"MMM D\")}\n </Badge>\n <div className=\"flex w-full justify-between gap-8 border-b border-gray-light\">\n <div className=\"flex w-full flex-col gap-2 pb-4\">\n <div className=\"font-bold\">{appointment.service.name}</div>\n <div className=\"text-sm\">{appointment.location.name}</div>\n {clientNotesEnabled && (\n <AppointmentNotes appointment={appointment} openAppointmentToken={openAppointmentToken} />\n )}\n </div>\n <div className=\"flex-none text-sm text-gray-dark\">\n {dayjs(appointment.startsAt).format(\"h:mm\")} - {dayjs(appointment.endsAt).format(\"h:mm A\")}\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"text-sm\">No past appointments</div>\n )}\n </div>\n )}\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ClientChronology from \"./ClientChronology\"\nimport ClientPageView from \"./ClientPageView\"\n\nconst Overview = ({ client: clientProp, upcomingAppointments, clientNotesEnabled }) => {\n const [client] = useState(clientProp)\n\n return (\n <ClientPageView\n client={client}\n upcomingAppointments={upcomingAppointments}\n path={`/portal/clients/${client.id}`}\n clientNotesEnabled={clientNotesEnabled}>\n <ClientChronology client={client} clientNotesEnabled={clientNotesEnabled} />\n </ClientPageView>\n )\n}\n\nexport default function ClientOverview(props) {\n return (\n <GraphQLProvider>\n <Overview {...props} />\n </GraphQLProvider>\n )\n}\n","import React, { useCallback, useEffect, useState } from \"react\"\nimport { Model } from \"survey-core\"\nimport { Survey } from \"survey-react-ui\"\nimport { useMutation } from \"urql\"\n\nimport \"survey-core/defaultV2.min.css\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nconst SAVE_INTAKE_FORM_RESPONSE_MUTATION = `\n mutation($uniqueId: ID!, $formData: String!) {\n saveIntakeFormResponse(uniqueId: $uniqueId, formData: $formData) {\n result\n errors\n }\n }\n`\n\nconst IntakeFormPage = ({ data, uniqueId, theme, alreadyCompleted, redirectUrl }) => {\n const [countdown, setCountdown] = useState(null)\n const [, saveIntakeFormResponse] = useMutation(SAVE_INTAKE_FORM_RESPONSE_MUTATION)\n\n useEffect(() => {\n if (countdown > 0) {\n const timer = setTimeout(() => {\n setCountdown(countdown - 1)\n }, 1000)\n return () => clearTimeout(timer)\n } else if (countdown === 0) {\n window.location.href = redirectUrl\n }\n }, [countdown])\n\n useEffect(() => {\n if (alreadyCompleted) {\n setCountdown(5)\n }\n }, [alreadyCompleted])\n\n const survey = new Model(data)\n survey.applyTheme(theme)\n const surveyComplete = useCallback((survey) => {\n saveIntakeFormResponse({ uniqueId, formData: JSON.stringify(survey.data) }).then((result) => {\n if (result.error) {\n console.error(result.error)\n } else if (result.data.saveIntakeFormResponse.result === \"success\") {\n setCountdown(5)\n console.log(\"success\")\n } else {\n console.error(result)\n }\n })\n }, [])\n\n survey.onComplete.add(surveyComplete)\n\n return (\n <div className=\"h-screen\">\n {countdown || alreadyCompleted ? (\n <div className=\"flex h-full items-center justify-center\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl\">\n {alreadyCompleted\n ? \"This form has already been completed.\"\n : \"Thank you for completing the intake form. Your response has been saved.\"}\n </h1>\n <p>You will be redirected to your practitioner's website in {countdown} seconds</p>\n </div>\n </div>\n ) : (\n <Survey model={survey} />\n )}\n </div>\n )\n}\n\nexport default function IntakeForm(props) {\n return (\n <GraphQLProvider>\n <IntakeFormPage {...props} />\n </GraphQLProvider>\n )\n}\n","import React from \"react\"\nimport * as SurveyCreatorCore from \"survey-creator-core\"\nimport { SurveyCreator, SurveyCreatorComponent } from \"survey-creator-react\"\nimport \"survey-core/survey.i18n.js\"\nimport \"survey-creator-core/survey-creator-core.i18n.js\"\nimport \"survey-core/defaultV2.css\"\nimport \"survey-creator-core/survey-creator-core.css\"\nimport \"./IntakeFormsPage.sass\"\n\nimport Breadcrumbs from \"../components/shared/Breadcrumbs\"\nimport Typography from \"../components/shared/Typography\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { urqlClient } from \"../utils/utils\"\n\nconst questionTypes = [\n \"boolean\",\n \"checkbox\",\n \"comment\",\n \"dropdown\",\n \"tagbox\",\n // \"expression\",\n // \"file\",\n // \"html\",\n \"image\",\n // \"imagepicker\",\n \"matrix\",\n \"matrixdropdown\",\n \"matrixdynamic\",\n \"multipletext\",\n \"panel\",\n \"paneldynamic\",\n \"radiogroup\",\n \"rating\",\n \"ranking\",\n \"signaturepad\",\n \"text\"\n]\n\nconst UPSERT_INTAKE_FORM_MUTATION = `\n mutation($data: String!, $saveNo: Int!) {\n upsertIntakeForm(data: $data, saveNo: $saveNo) {\n result\n }\n }\n`\n\nconst UPSERT_INTAKE_FORM_THEME_MUTATION = `\n mutation($data: String!) {\n upsertIntakeFormTheme(data: $data) {\n result\n }\n }\n`\n\nconst enLocale = SurveyCreatorCore.localization.getLocale(\"en\")\nenLocale.ed.surveyTypeName = \"Outline\"\n\nfunction IntakeForms({ formJson, theme }) {\n const options = {\n showLogicTab: false,\n showJSONEditorTab: false,\n showThemeTab: true,\n questionTypes\n }\n const creator = new SurveyCreator(options)\n\n const whiteList = [\n \"title\",\n \"description\",\n \"isRequired\",\n \"showCommentArea\",\n \"commentText\",\n \"commentPlaceholder\",\n \"labelTrue\",\n \"labelFalse\",\n \"swapOrder\",\n \"choices\",\n \"choicesFromQuestion\",\n \"choicesFromQuestionMode\",\n \"choiceValuesFromQuestion\",\n \"choiceTextsFromQuestion\",\n \"choicesOrder\"\n ]\n\n creator.onShowingProperty.add(function (_, options) {\n if (options.obj.constructor.name !== \"ThemeModel\" && options.obj.constructor.name !== \"HeaderModel\") {\n options.canShow = whiteList.indexOf(options.property.name) > -1\n }\n })\n\n creator.isAutoSave = true\n creator.showState = true\n creator.JSON = JSON.parse(formJson)\n creator.theme = JSON.parse(theme)\n creator.toolbox.forceCompact = false\n creator.saveSurveyFunc = (saveNo, callback) => {\n urqlClient\n .mutation(UPSERT_INTAKE_FORM_MUTATION, { data: JSON.stringify(creator.JSON), saveNo })\n .toPromise()\n .then((result) => {\n if (result.error) {\n console.error(result)\n callback(saveNo, false)\n } else {\n callback(saveNo, true)\n }\n })\n }\n\n creator.saveThemeFunc = (saveNo, callback) => {\n urqlClient\n .mutation(UPSERT_INTAKE_FORM_THEME_MUTATION, { data: JSON.stringify(creator.theme), saveNo })\n .toPromise()\n .then((result) => {\n if (result.error) {\n console.error(result)\n callback(saveNo, false)\n } else {\n callback(saveNo, true)\n }\n })\n }\n\n return (\n <div className=\"h-[calc(100vh-156px)]\">\n <div className=\"flex flex-col\">\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Intake Form\" />\n <Typography as=\"h1\" variant=\"h3\">\n Intake Form\n </Typography>\n <Typography variant=\"subtitle\">Customize the intake form that you can send to your clients</Typography>\n </div>\n <SurveyCreatorComponent creator={creator} />\n </div>\n )\n}\n\nexport default function IntakeFormsPage(props) {\n return (\n <GraphQLProvider>\n <IntakeForms {...props} />\n </GraphQLProvider>\n )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport default function InfoParagraph({ children, className }) {\n className = twMerge(\"text-sm text-gray-dark\", className)\n return <p className={className}>{children}</p>\n}\n","import { PayPalButtons } from \"@paypal/react-paypal-js\"\nimport React, { useState, useCallback } from \"react\"\nimport { useMutation } from \"urql\"\n\nconst CREATE_PAYPAL_ORDER_MUTATION = `\n mutation($appointmentId: ID!, $tipAmountCents: Int!, $tipOnly: Boolean!) {\n createPaypalOrder(appointmentId: $appointmentId, tipAmountCents: $tipAmountCents, tipOnly: $tipOnly) {\n result\n orderId\n errors\n }\n }\n`\n\nconst CAPTURE_PAYPAL_PAYMENT_MUTATION = `\n mutation($appointmentId: ID!, $orderId: String!) {\n capturePaypalPayment(appointmentId: $appointmentId, orderId: $orderId) {\n result\n errors\n appointment {\n id\n clientPaymentStatus\n tipAmountCents\n }\n }\n }\n`\n\nconst PaypalPaymentButton = ({\n appointment,\n tipAmountCents = 0,\n tipOnly = false,\n fundingSource = \"paypal\",\n onSuccess,\n onError\n}) => {\n const [loading, setLoading] = useState(false)\n const [, createOrder] = useMutation(CREATE_PAYPAL_ORDER_MUTATION)\n const [, capturePayment] = useMutation(CAPTURE_PAYPAL_PAYMENT_MUTATION)\n\n const createOrderCallback = useCallback(async () => {\n setLoading(true)\n const response = await createOrder({\n appointmentId: appointment.id,\n tipAmountCents,\n tipOnly\n })\n setLoading(false)\n\n if (response.error || response.data?.createPaypalOrder?.result === \"failure\") {\n onError(response.error?.message || response.data?.createPaypalOrder?.errors?.[0])\n return null\n }\n\n return response.data?.createPaypalOrder?.orderId\n }, [appointment.id, tipAmountCents, createOrder, onError])\n\n return (\n <PayPalButtons\n forceReRender={[tipAmountCents]}\n fundingSource={fundingSource}\n disabled={loading}\n createOrder={createOrderCallback}\n onApprove={async (data) => {\n setLoading(true)\n const response = await capturePayment({\n appointmentId: appointment.id,\n orderId: data.orderID\n })\n setLoading(false)\n\n if (response.error || response.data?.capturePaypalPayment?.result === \"failure\") {\n onError(response.error?.message || response.data?.capturePaypalPayment?.errors?.[0])\n return\n }\n\n onSuccess(response.data?.capturePaypalPayment?.appointment)\n }}\n onError={() => {\n setLoading(false)\n }}\n style={{\n layout: \"horizontal\",\n color: fundingSource === \"venmo\" ? \"blue\" : \"gold\",\n shape: \"rect\",\n label: \"pay\"\n }}\n />\n )\n}\n\nexport default PaypalPaymentButton\n","import React, { useState, useRef, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport PaymentProviderCardForm from \"../../components/payments/PaymentProviderCardForm\"\nimport { usePaymentProvider } from \"../../components/payments/PaymentProviderWrapper\"\nimport CurrencyInput from \"../../components/shared/CurrencyInput\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useAppointment } from \"../../contexts/AppointmentContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport useBrowserInfo from \"../../hooks/useBrowserInfo\"\nimport { capitalize, stringPriceToInteger } from \"../../utils/utils\"\n\nimport { ADD_TIP_TO_APPOINTMENT_MUTATION, CHARGE_TIP_ONLY_MUTATION } from \"./mutations\"\nimport PaypalPaymentButton from \"./PaypalPaymentButton\"\n\nconst PAYMENT_METHODS = {\n SAVED_CARD: \"saved_card\",\n NEW_CARD: \"new_card\",\n PAYPAL: \"paypal\",\n VENMO: \"venmo\"\n}\n\nconst PAYMENT_METHOD_DESCRIPTIONS = {\n [PAYMENT_METHODS.PAYPAL]:\n 'After clicking \"Pay with PayPal\", you will be redirected to PayPal to complete your purchase securely.',\n [PAYMENT_METHODS.VENMO]:\n 'After clicking \"Pay with Venmo\", you will be redirected to Venmo to complete your purchase securely.'\n}\n\nconst isFundingEnabled = (fundingSource) => {\n if (!window.paypal) return false\n return window.paypal.isFundingEligible(fundingSource)\n}\n\nconst AddPaymentModal = ({\n headerLabel,\n open,\n closeModal,\n onSave,\n tipOnly = false,\n actionButtonCopy,\n onPaypalSuccess\n}) => {\n const [loading, setLoading] = useState(false)\n const [tipOption, setTipOption] = useState(\"\")\n const [tipValue, setTipValue] = useState(0)\n const { appointment } = useAppointment()\n const { showToast } = useToast()\n const browserInfo = useBrowserInfo()\n const customTipInputRef = useRef(null)\n\n const acceptsTips = appointment?.practice?.acceptsTips\n const showPaypal = appointment.practice.hasPaypalPaymentsEnabled\n const showVenmo = appointment.practice.hasVenmoPaymentsEnabled && isFundingEnabled(\"venmo\")\n const isVenmoIncompatible = browserInfo?.isMobile && !browserInfo?.isCompatibleBrowser\n\n const [, addTipToAppointment] = useMutation(ADD_TIP_TO_APPOINTMENT_MUTATION)\n const [, chargeTipOnly] = useMutation(CHARGE_TIP_ONLY_MUTATION)\n\n const { handleCardSavedOnProvider } = usePaymentProvider()\n\n const handleCardSaved = async () => {\n if (acceptsTips && tipOption === \"\") {\n showToast({ content: \"Please select a tip option.\", type: \"error\", timeout: 4000 })\n return\n }\n\n const showErrorAndClose = (message) => {\n showToast({ content: `There was an error: ${message}`, type: \"error\" })\n setLoading(false)\n closeModal()\n }\n\n setLoading(true)\n\n if (paymentMethod === PAYMENT_METHODS.NEW_CARD) {\n const paymentProviderResult = await handleCardSavedOnProvider()\n if (paymentProviderResult.error) {\n showErrorAndClose(paymentProviderResult.error || \"An error occurred\")\n return\n }\n }\n\n if (!tipOnly && acceptsTips && tipValue !== appointment.tipAmountCents) {\n const res = await addTipToAppointment({ appointmentId: appointment.id, tipAmount: tipValue })\n if (res.data?.addTipToAppointment?.errors) {\n showErrorAndClose(res.data.addTipToAppointment.errors.join(\", \") || \"An error occurred\")\n return\n }\n }\n\n if (tipOnly) {\n const res = await chargeTipOnly({ appointmentId: appointment.id, tipAmount: tipValue })\n if (res.data?.chargeTipOnly?.errors) {\n showErrorAndClose(res.data.chargeTipOnly.errors.join(\", \") || \"An error occurred\")\n return\n }\n }\n\n setLoading(false)\n onSave(tipValue)\n closeModal()\n }\n\n const defaultPaymentMethod = appointment?.user?.defaultPaymentMethod || appointment?.client?.defaultPaymentMethod\n const [paymentMethod, setPaymentMethod] = useState(\n defaultPaymentMethod ? PAYMENT_METHODS.SAVED_CARD : PAYMENT_METHODS.NEW_CARD\n )\n\n const getDefaultPaymentMethodText = (paymentMethod) => {\n if (!paymentMethod) return \"No payment method selected\"\n return `${capitalize(paymentMethod.brand)} ending in ${paymentMethod.last4} • Expires ${paymentMethod.expMonth}/${\n paymentMethod.expYear\n }`\n }\n\n const TIPPING_OPTIONS = [\n ...(!tipOnly ? [{ value: \"not-now\", label: \"Not now\" }] : []),\n { value: \"10%\", label: `10% • $${((0.1 * appointment.amountCents) / 100).toFixed(2)}` },\n { value: \"15%\", label: `15% • $${((0.15 * appointment.amountCents) / 100).toFixed(2)}` },\n { value: \"20%\", label: `20% • $${((0.2 * appointment.amountCents) / 100).toFixed(2)}` },\n { value: \"custom-tip\", label: \"Custom Tip\" }\n ]\n\n useEffect(() => {\n if (tipOption === \"custom-tip\" && customTipInputRef.current) {\n customTipInputRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\" })\n }\n }, [tipOption])\n\n return (\n <AnimatedModal\n visible={open}\n hideModal={closeModal}\n header={headerLabel}\n showFooter={paymentMethod !== PAYMENT_METHODS.PAYPAL && paymentMethod !== PAYMENT_METHODS.VENMO}\n onSave={handleCardSaved}\n actionButtonCopy={actionButtonCopy}\n saveDisabled={loading}>\n <div className=\"mt-4\">\n <Typography variant=\"h5\" className=\"mb-4\">\n Payment method\n </Typography>\n <div className=\"flex flex-col gap-2\">\n {/* Credit card buttons */}\n {defaultPaymentMethod && (\n <RadioWithLabel\n value={PAYMENT_METHODS.SAVED_CARD}\n name=\"payment-method\"\n label={getDefaultPaymentMethodText(defaultPaymentMethod)}\n checked={paymentMethod === PAYMENT_METHODS.SAVED_CARD}\n onChange={() => setPaymentMethod(PAYMENT_METHODS.SAVED_CARD)}\n />\n )}\n <RadioWithLabel\n value={PAYMENT_METHODS.NEW_CARD}\n name=\"payment-method\"\n label=\"New Credit card\"\n checked={paymentMethod === PAYMENT_METHODS.NEW_CARD}\n onChange={() => setPaymentMethod(PAYMENT_METHODS.NEW_CARD)}\n />\n {paymentMethod === PAYMENT_METHODS.NEW_CARD && <PaymentProviderCardForm practice={appointment.practice} />}\n\n {/* PayPal / Venmo buttons */}\n {showPaypal && (\n <>\n <RadioWithLabel\n value={PAYMENT_METHODS.PAYPAL}\n name=\"payment-method\"\n label=\"PayPal\"\n checked={paymentMethod === PAYMENT_METHODS.PAYPAL}\n onChange={() => setPaymentMethod(PAYMENT_METHODS.PAYPAL)}\n />\n {paymentMethod === PAYMENT_METHODS.PAYPAL && (\n <div className=\"ml-6 text-sm\">{PAYMENT_METHOD_DESCRIPTIONS[PAYMENT_METHODS.PAYPAL]}</div>\n )}\n </>\n )}\n {showVenmo && (\n <>\n <RadioWithLabel\n value={PAYMENT_METHODS.VENMO}\n name=\"payment-method\"\n label=\"Venmo\"\n checked={paymentMethod === PAYMENT_METHODS.VENMO}\n onChange={() => setPaymentMethod(PAYMENT_METHODS.VENMO)}\n disabled={isVenmoIncompatible}\n />\n {paymentMethod === PAYMENT_METHODS.VENMO && (\n <div className=\"ml-6 text-sm\">{PAYMENT_METHOD_DESCRIPTIONS[PAYMENT_METHODS.VENMO]}</div>\n )}\n {isVenmoIncompatible && (\n <Banner type=\"warning\" className=\"text-sm\">\n {browserInfo?.isIOS && \"Please use Safari browser on iOS to pay with Venmo.\"}\n {browserInfo?.isAndroid && \"Please use Chrome browser on Android to pay with Venmo.\"}\n </Banner>\n )}\n </>\n )}\n </div>\n </div>\n {acceptsTips && (\n <div className=\"mt-4\">\n <Typography variant=\"h5\" className=\"mb-4\">\n Add a tip\n </Typography>\n <div className=\"flex flex-col gap-2\">\n {TIPPING_OPTIONS.map((option) => (\n <RadioWithLabel\n key={option.value}\n value={option.value}\n name=\"tip\"\n label={option.label}\n checked={tipOption === option.value}\n onChange={() => {\n setTipOption(option.value)\n if (option.value === \"not-now\") {\n setTipValue(0)\n return\n }\n if (option.value === \"custom-tip\") {\n setTipValue(parseInt(appointment.amountCents) * 0.1)\n return\n }\n setTipValue((parseInt(appointment.amountCents) * parseInt(option.value)) / 100)\n }}\n />\n ))}\n </div>\n {tipOption === \"custom-tip\" && (\n <div ref={customTipInputRef}>\n <CurrencyInput\n label=\"Custom tip\"\n value={tipValue / 100}\n onChange={(e) => {\n if (e.target.value === \"\") {\n setTipValue(0)\n return\n }\n setTipValue(stringPriceToInteger(e.target.value))\n }}\n className=\"mt-4\"\n autoFocus\n />\n </div>\n )}\n </div>\n )}\n {(paymentMethod === PAYMENT_METHODS.PAYPAL || paymentMethod === PAYMENT_METHODS.VENMO) && (\n <div className=\"mt-4\">\n <PaypalPaymentButton\n appointment={appointment}\n tipAmountCents={tipValue}\n tipOnly={tipOnly}\n fundingSource={paymentMethod === PAYMENT_METHODS.VENMO ? \"venmo\" : \"paypal\"}\n onSuccess={(appointmentResponse) => {\n onPaypalSuccess(appointmentResponse)\n closeModal()\n }}\n onError={(error) => {\n showToast({ content: `Payment failed: ${error}`, type: \"error\" })\n }}\n />\n </div>\n )}\n </AnimatedModal>\n )\n}\n\nexport default AddPaymentModal\n","import { useState, useEffect } from \"react\"\n\nexport default function useBrowserInfo() {\n const [browserInfo, setBrowserInfo] = useState(null)\n\n useEffect(() => {\n const userAgent = navigator.userAgent\n\n const browserData = {\n isChrome: /Chrome/.test(userAgent) && !/Chromium|Edge/.test(userAgent),\n isSafari: /Safari/.test(userAgent) && !/Chrome/.test(userAgent),\n isMobile: /Mobile|Android|iPhone|iPad|iPod/i.test(userAgent),\n isAndroid: /Android/i.test(userAgent),\n isIOS: /iPhone|iPad|iPod/i.test(userAgent)\n }\n\n browserData.isCompatibleBrowser =\n (browserData.isIOS && browserData.isSafari) || (browserData.isAndroid && browserData.isChrome)\n\n setBrowserInfo(browserData)\n }, [])\n\n return browserInfo\n}\n","export const ADD_TIP_TO_APPOINTMENT_MUTATION = `\nmutation AddTipToAppointment($appointmentId: ID!, $tipAmount: Int!) {\n addTipToAppointment(appointmentId: $appointmentId, tipAmount: $tipAmount) {\n result\n errors\n }\n}\n`\nexport const CHARGE_TIP_ONLY_MUTATION = `\nmutation ChargeTipOnly($appointmentId: ID!, $tipAmount: Int!) {\n chargeTipOnly(appointmentId: $appointmentId, tipAmount: $tipAmount) {\n result\n errors\n }\n}\n`\n","import { PayPalScriptProvider } from \"@paypal/react-paypal-js\"\nimport React, { useState } from \"react\"\n\nimport PaymentProviderWrapper from \"../../components/payments/PaymentProviderWrapper\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { useAppointment } from \"../../contexts/AppointmentContext\"\n\nimport AddPaymentModal from \"./AddPaymentModal\"\n\nconst AddPaymentButton = ({\n label,\n modalHeaderLabel,\n onSave,\n loading,\n tipOnly = false,\n modalActionButtonCopy,\n onPaypalSuccess\n}) => {\n const [paymentModalOpen, setPaymentModalOpen] = useState(false)\n const { appointment } = useAppointment()\n\n const onClick = () => {\n setPaymentModalOpen(true)\n }\n\n const renderModalContent = () => {\n if (appointment.practice.hasPaypalAccount) {\n return (\n <PayPalScriptProvider\n options={{\n clientId: window.App.paypal_client_id,\n merchantId: window.App.paypal_merchant_id,\n dataPartnerAttributionId: window.App.paypal_partner_attribution_id,\n currency: appointment.amountCurrency,\n intent: \"capture\",\n enableFunding: \"venmo\",\n components: \"buttons,marks,funding-eligibility\"\n // buyerCountry: \"US\" // Add this in development to test Venmo\n }}>\n <AddPaymentModal\n headerLabel={modalHeaderLabel}\n open={paymentModalOpen}\n closeModal={() => setPaymentModalOpen(false)}\n onSave={onSave}\n tipOnly={tipOnly}\n actionButtonCopy={modalActionButtonCopy}\n onPaypalSuccess={onPaypalSuccess}\n />\n </PayPalScriptProvider>\n )\n }\n\n return (\n <AddPaymentModal\n headerLabel={modalHeaderLabel}\n open={paymentModalOpen}\n closeModal={() => setPaymentModalOpen(false)}\n onSave={onSave}\n tipOnly={tipOnly}\n actionButtonCopy={modalActionButtonCopy}\n onPaypalSuccess={onPaypalSuccess}\n />\n )\n }\n\n return (\n <>\n <Button disabled={loading} onClick={onClick}>\n {label || \"Add credit card\"}\n </Button>\n\n {paymentModalOpen && (\n <PaymentProviderWrapper practice={appointment.practice} appointment={appointment}>\n {renderModalContent()}\n </PaymentProviderWrapper>\n )}\n </>\n )\n}\n\nexport default AddPaymentButton\n","import { useModal } from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { ConfirmCancelModal } from \"../../components/shared/Modal\"\n\nconst CLIENT_CANCEL_MUTATION = `\n mutation($appointmentId: ID!) {\n clientCancel(appointmentId: $appointmentId) {\n result\n }\n }\n`\n\nconst CancelAppointmentButton = ({ appointmentId, onCancel, onError }) => {\n const [cancelButtonLoading, setCancelButtonLoading] = useState(false)\n\n const [, cancelAppointment] = useMutation(CLIENT_CANCEL_MUTATION)\n\n const confirmCancelModal = useModal(ConfirmCancelModal)\n\n return (\n <button\n className=\"hover:text-gray-dark\"\n onClick={() => {\n confirmCancelModal.show({ loading: cancelButtonLoading }).then(() => {\n setCancelButtonLoading(true)\n cancelAppointment({ appointmentId }).then((res) => {\n res.error ? onError(res.error) : onCancel()\n setCancelButtonLoading(false)\n confirmCancelModal.hide()\n })\n })\n }}>\n Cancel appointment\n </button>\n )\n}\n\nexport default CancelAppointmentButton\n","import React from \"react\"\n\nexport default function OfflinePaymentMethods({ appointment }) {\n if (!appointment) return null\n if (!appointment.practice) return null\n return (\n <div className=\"mt-4 flex flex-col\">\n <h3 className=\"mb-2 pb-2 text-center font-semibold tracking-wide\">\n You can {appointment.practice.isStripeApproved && \"also\"} pay with:\n </h3>\n <div className=\"flex flex-row flex-wrap items-center justify-evenly\">\n {appointment.practice.acceptsCash && (\n <div className=\"mb-4 mr-4 flex flex-row items-center\">\n <img src=\"/images/payments-icon-cash.png\" className=\"mr-2\" width=\"32px\" height=\"32px\" />\n <p className=\"font-semibold\">Cash</p>\n </div>\n )}\n {appointment.practice.acceptsOfflineCreditCard && (\n <div className=\"mb-4 mr-4 flex flex-row items-center\">\n <img src=\"/images/payments-icon-credit-card.png\" className=\"mr-2\" width=\"32px\" height=\"32px\" />\n <p className=\"font-semibold\">Credit Card</p>\n </div>\n )}\n {appointment.practice.acceptsPaypal && (\n <div className=\"mb-4 mr-4 flex flex-row items-center\">\n <img src=\"/images/payments-icon-paypal.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n <p className=\"font-semibold\">PayPal</p>\n </div>\n )}\n {appointment.practice.acceptsVenmo && (\n <div className=\"mb-4 mr-4 flex flex-row items-center\">\n <img src=\"/images/payments-icon-venmo.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n <p className=\"font-semibold\">Venmo</p>\n </div>\n )}\n {appointment.practice.acceptsZelle && (\n <div className=\"mb-4 mr-4 flex flex-row items-center\">\n <img src=\"/images/payments-icon-zelle.png\" className=\"mr-2\" width=\"24px\" height=\"24px\" />\n <p className=\"font-semibold\">Zelle</p>\n </div>\n )}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nconst PaymentStatusBox = ({ appointment }) => {\n const { clientPaymentStatus: status, defaultPaymentMethodData: paymentMethod } = appointment\n if (status === \"Free\") return <></>\n\n let statusMessage = {\n Paid: \"Your payment has been processed successfully.\",\n Failed: \"Your payment has failed. Please retry or add a new payment method.\",\n Pending: \"Your payment method will be charged after your appointment.\",\n \"Card needed\": \"Please add a payment method before your appointment.\",\n \"Card needed past due\": \"Your payment is past due. Please add a credit card to pay for your appointment.\",\n \"Past due\": \"Your payment is past due. Please add a credit card or retry the card on file\"\n }[status]\n\n if ((status === \"Past due\" || status === \"Pending\") && paymentMethod) {\n statusMessage += ` (${paymentMethod.brand} ending in ${paymentMethod.last4})`\n }\n\n return (\n <div className={`my-4 rounded p-4 ${status !== \"Paid\" && status !== \"Pending\" ? \"bg-red-light\" : \"bg-offwhite\"}`}>\n {status !== \"Paid\" && status !== \"Pending\" && <i className=\"icon-warning-icon mr-1\" />}\n {statusMessage}\n </div>\n )\n}\n\nexport default PaymentStatusBox\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { PAYMENT_STATUS_OPTIONS } from \"../@core/appointment/appointment.model\"\nimport InfoParagraph from \"../components/shared/InfoParagraph\"\nimport { Divider } from \"../components/shared/Layout\"\nimport Toast from \"../components/shared/Toast\"\nimport { AppointmentProvider, useAppointment } from \"../contexts/AppointmentContext\"\nimport { ToastProvider, useToast } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { CHARGE_CARD_MUTATION } from \"../utils/mutations\"\nimport { formatPhone } from \"../utils/utils\"\n\nimport AddPaymentButton from \"./ManageAppointmentsConsumer/AddPaymentButton\"\nimport CancelAppointmentButton from \"./ManageAppointmentsConsumer/CancelAppointmentButton\"\nimport OfflinePaymentMethods from \"./ManageAppointmentsConsumer/OfflinePaymentMethods\"\nimport PaymentStatusBox from \"./ManageAppointmentsConsumer/PaymentStatusBox\"\n\n// import RescheduleAppointmentButton from \"./ManageAppointmentsConsumer/RescheduleAppointmentButton\"\n\nconst PriceRow = ({ label, value, className }) => (\n <div className={twMerge(\"flex items-center justify-between\", className)}>\n <span className=\"text-left\">{label}</span>\n <span className=\"ml-2 font-bold\">{value}</span>\n </div>\n)\n\nconst PageContent = ({ appointmentData }) => {\n const { showToast } = useToast()\n\n const { setAppointment: setContextAppointment } = useAppointment()\n useEffect(() => {\n setContextAppointment(appointmentData)\n }, [appointmentData])\n\n const [appointment, setAppointment] = useState(appointmentData)\n const [alertContent, setAlertContent] = useState(\"\")\n const [alertVisible, setAlertVisible] = useState(false)\n const [alertWarning, setAlertWarning] = useState(false)\n const [buttonLoading, setButtonLoading] = useState(false)\n\n const timeZone =\n !appointment.ianaTimeZone || appointment.location.kind === \"virtual\" ? dayjs.tz.guess() : appointment.ianaTimeZone\n const startsAt = dayjs(appointment.startsAt).tz(timeZone)\n const endsAt = dayjs(appointment.endsAt).tz(timeZone)\n const appointmentIsPast = appointment.past\n const status = appointment.clientPaymentStatus\n const shouldPayNow =\n status === PAYMENT_STATUS_OPTIONS.CARD_NEEDED_PAST_DUE ||\n status === PAYMENT_STATUS_OPTIONS.PAST_DUE ||\n status === PAYMENT_STATUS_OPTIONS.FAILED\n const showAddCardButton = [\n PAYMENT_STATUS_OPTIONS.PAST_DUE,\n PAYMENT_STATUS_OPTIONS.FAILED,\n PAYMENT_STATUS_OPTIONS.CARD_NEEDED,\n PAYMENT_STATUS_OPTIONS.CARD_NEEDED_PAST_DUE\n ].some((s) => s === status)\n const showAddTipButton =\n status === PAYMENT_STATUS_OPTIONS.PAID &&\n appointmentIsPast &&\n appointment.practice.acceptsTips &&\n appointment.tipAmountCents === 0\n const titleStatus = appointmentIsPast ? \"passed\" : appointment.state === \"pending\" ? \"pending\" : \"accepted!\"\n const subTitle =\n appointment.state === \"cancelled\"\n ? \"This appointment has been cancelled.\"\n : appointment.state === \"pending\"\n ? \"This appointment is pending confirmation from your practitioner.\"\n : appointmentIsPast\n ? \"This appointment has already ended.\"\n : `We're looking forward to seeing you on ${startsAt.format(\"MMMM D\")} at ${startsAt.format(\"h:mm a\")}.`\n const amount = `$${(appointment.amountCents / 100).toFixed(2)}`\n const formattedTip = `$${(appointment.tipAmountCents / 100).toFixed(2)}`\n const formattedTotal = `$${((appointment.amountCents + appointment.tipAmountCents) / 100).toFixed(2)}`\n const formattedPhone = formatPhone(appointment.practice.user.phone)\n const isVirtual = appointment.location.kind === \"virtual\"\n const virtualLink = appointment.virtualMeetingLinkWithFallback\n const isPhoneCall = appointment.location.virtualType === \"phone\"\n\n const [, chargeCard] = useMutation(CHARGE_CARD_MUTATION)\n\n const showAlert = (message, type) => {\n setAlertVisible(true)\n setAlertWarning(type === \"error\")\n setAlertContent(message)\n }\n\n const chargeAndAlert = (tip) => {\n chargeCard({ appointmentId: appointment.id }).then((res) => {\n setButtonLoading(false)\n if (res.data?.chargeCard?.result === \"success\") {\n showAlert(\"Your payment has been processed successfully.\")\n setAppointment({\n ...appointment,\n ...{\n clientPaymentStatus: res.data.chargeCard.appointment.clientPaymentStatus,\n tipAmountCents: tip || appointment.tipAmountCents\n }\n })\n } else {\n if (res.error) console.error(res.error) // eslint-disable-line no-console\n showToast({\n content: `There was an error processing your payment: ${\n res.data?.chargeCard?.errors || \"Internal server error\"\n }`,\n type: \"error\"\n })\n }\n })\n }\n\n const onPaypalSuccess = (appointmentResponse) => {\n setAppointment({\n ...appointment,\n ...{\n clientPaymentStatus: appointmentResponse.clientPaymentStatus,\n tipAmountCents: appointmentResponse.tipAmountCents\n }\n })\n showAlert(\"Your payment has been processed successfully.\")\n }\n\n const onCreditCardSave = (tip) => {\n if (shouldPayNow) {\n setButtonLoading(true)\n chargeAndAlert(tip)\n } else {\n setAppointment({ ...appointment, ...{ clientPaymentStatus: PAYMENT_STATUS_OPTIONS.PENDING } })\n showAlert(\"Your payment method has been saved.\")\n }\n }\n\n const onTipSave = (tip) => {\n setAppointment({ ...appointment, ...{ tipAmountCents: tip } })\n showToast({ content: `Tip added successfully. Thank you!`, type: \"success\" })\n }\n\n return (\n <div className=\"m-auto w-full py-4 text-center\">\n {appointment.state !== \"cancelled\" && <div className=\"mb-4 text-2xl font-bold\">Appointment {titleStatus}</div>}\n <p className=\"mb-4 text-gray-dark\">{subTitle}</p>\n <div className=\"m-auto max-w-lg border border-gray p-4 sm:border-none\">\n <div className=\"mb-4 flex items-center justify-center\">\n <img src={appointment.practice.user.defaultPhotoUrl} className=\"h-16 w-16 rounded-full\" />\n <div className=\"inline-flex flex-col\">\n <div className=\"ml-4 text-lg font-bold\">{appointment.practice.user.name}</div>\n <a href={`tel:${formattedPhone}`} className=\"ml-4 text-sm font-bold text-teal\">\n {formattedPhone}\n </a>\n </div>\n </div>\n\n <div className=\"mb-4 font-bold\">\n <div>{startsAt.format(\"dddd, MMMM D, YYYY\")}</div>\n <div>\n {startsAt.format(\"h:mm a\")} - {endsAt.format(\"h:mm a z\")}\n </div>\n <div className={twMerge(\"my-4\", isVirtual && \"mb-0\")}>\n <span>{appointment.locationName}</span>\n {isVirtual && isPhoneCall && <span> (Phone Call)</span>}\n {isVirtual && !isPhoneCall && <span> (Video)</span>}\n </div>\n {isVirtual && appointment.location.virtualInstructions && (\n <div className=\"font-normal\">{appointment.location.virtualInstructions}</div>\n )}\n {isVirtual && !isPhoneCall && virtualLink && (\n <a href={virtualLink} className=\"text-sm text-teal\">\n Link to Join\n </a>\n )}\n </div>\n\n {appointment.amountCents === 0 && (\n <div>\n {appointment.appointmentServices.map((as) => (\n <div key={as.id}>{as.service.name}</div>\n ))}\n </div>\n )}\n\n {appointment.amountCents > 0 && (\n <div className=\"m-auto w-full\">\n <div className=\"my-4 border-y border-gray py-4\">\n {appointment.appointmentServices.map((as) => (\n <PriceRow key={as.id} label={as.service.name} value={`$${(as.amountCents / 100).toFixed(2)}`} />\n ))}\n\n <Divider className=\"my-2\" />\n <PriceRow label=\"Subtotal\" value={amount} className=\"font-semibold\" />\n\n <PriceRow\n label=\"Tip\"\n value={formattedTip}\n className={appointment.tipAmountCents === 0 ? \"text-gray\" : \"\"}\n />\n\n <Divider className=\"my-2\" />\n <PriceRow label=\"Total\" value={formattedTotal} className=\"text-lg font-bold\" />\n </div>\n </div>\n )}\n\n {appointment.state === \"approved\" && appointment.practice.hasPaymentProvider && (\n <>\n <PaymentStatusBox appointment={appointment} />\n {appointmentIsPast && showAddCardButton && (\n <AddPaymentButton\n label=\"Pay now\"\n modalHeaderLabel=\"Pay for your session\"\n loading={buttonLoading}\n onSave={onCreditCardSave}\n onPaypalSuccess={onPaypalSuccess}\n modalActionButtonCopy={shouldPayNow ? \"Pay now\" : \"Save credit card\"}\n />\n )}\n {!appointmentIsPast && showAddCardButton && (\n <AddPaymentButton\n label=\"Add credit card\"\n modalHeaderLabel=\"Add debit or credit card\"\n loading={buttonLoading}\n onPaypalSuccess={onPaypalSuccess}\n onSave={onCreditCardSave}\n />\n )}\n {showAddTipButton && (\n <AddPaymentButton\n label=\"Add a tip\"\n modalHeaderLabel=\"Add a tip to your session\"\n loading={buttonLoading}\n onSave={onTipSave}\n onPaypalSuccess={onPaypalSuccess}\n tipOnly={true}\n />\n )}\n </>\n )}\n\n {appointment.practice.offlinePaymentMethod && <OfflinePaymentMethods appointment={appointment} />}\n {appointment.state === \"approved\" && appointmentIsPast && (\n <div className=\"mt-4\">\n <InfoParagraph>\n The appointment start time has past so this appointment can't be cancelled or rescheduled.\n </InfoParagraph>\n </div>\n )}\n <div className=\"mt-4 font-bold text-teal [&>*]:m-auto [&>*]:mt-2 [&>*]:block\">\n {!appointmentIsPast && appointment.state !== \"cancelled\" && (\n <>\n {/* <RescheduleAppointmentButton appointmentId={appointment.id} showAlert={showAlert} /> */}\n <CancelAppointmentButton\n appointmentId={appointment.id}\n onCancel={() => {\n setAppointment({ ...appointment, ...{ state: \"cancelled\" } })\n showAlert(\"Your appointment has been cancelled.\")\n }}\n onError={(error) => {\n console.error(error) // eslint-disable-line no-console\n showToast({ content: \"There was an error cancelling your appointment.\", type: \"error\" })\n }}\n showAlert={showAlert}\n />\n </>\n )}\n <div>\n <a href={appointment.practice.url}>Book another appointment</a>\n </div>\n </div>\n </div>\n <Toast visible={alertVisible} setVisible={setAlertVisible} warning={alertWarning}>\n {alertContent}\n </Toast>\n </div>\n )\n}\n\nexport default function ManageAppointmentsConsumer(props) {\n return (\n <NiceModal.Provider>\n <ToastProvider>\n <GraphQLProvider>\n <AppointmentProvider>\n <PageContent {...props} />\n </AppointmentProvider>\n </GraphQLProvider>\n </ToastProvider>\n </NiceModal.Provider>\n )\n}\n","import dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { Divider } from \"../components/shared/Layout\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { formatPhone } from \"../utils/utils\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nconst PriceRow = ({ label, value, className }) => (\n <div className={twMerge(\"flex items-center justify-between\", className)}>\n <span className=\"text-left\">{label}</span>\n <span className=\"ml-2 font-bold\">{value}</span>\n </div>\n)\n\nconst PageContent = ({ eventRegistration }) => {\n const { event, practice, discount, finalAmountCents } = eventRegistration\n\n // Format dates\n const timeZone = event.timeZone || dayjs.tz.guess()\n const startsAt = dayjs(event.startsAt).tz(timeZone)\n const endsAt = dayjs(event.endsAt).tz(timeZone)\n\n // Check if the event is in the past\n const eventIsPast = dayjs().isAfter(endsAt)\n\n // Format location\n const isVirtual = event.kind === \"virtual\"\n const locationDisplay = isVirtual ? \"Virtual\" : event.location\n\n // Format price\n const eventAmount = `$${((event.amountCents || 0) / 100).toFixed(2)}`\n const discountAmount = discount ? `$${(discount.amountCents / 100).toFixed(2)}` : \"$0.00\"\n const finalAmount = `$${(finalAmountCents / 100).toFixed(2)}`\n\n // Format phone\n const formattedPhone = formatPhone(practice.user.phone)\n\n // Status message\n const statusMessage = eventIsPast\n ? \"This event has already ended.\"\n : `We're looking forward to seeing you on ${startsAt.format(\"MMMM D\")} at ${startsAt.format(\"h:mm a\")}.`\n\n return (\n <div className=\"m-auto w-full py-4 text-center\">\n <div className=\"mb-4 text-2xl font-bold\">Event Registration</div>\n <p className=\"mb-4 text-gray-dark\">{statusMessage}</p>\n\n <div className=\"m-auto max-w-lg border border-gray p-4 sm:border-none\">\n {/* Practitioner Info */}\n <div className=\"mb-4 flex items-center justify-center\">\n <img src={practice.user.defaultPhotoUrl} className=\"h-16 w-16 rounded-full\" />\n <div className=\"inline-flex flex-col\">\n <div className=\"ml-4 text-lg font-bold\">{practice.user.name}</div>\n <a href={`tel:${formattedPhone}`} className=\"ml-4 text-sm font-bold text-teal\">\n {formattedPhone}\n </a>\n </div>\n </div>\n\n {/* Event Info */}\n <div className=\"mb-6\">\n <div className=\"text-xl font-bold\">{event.name}</div>\n <div className=\"mb-2 font-bold\">\n <div>{startsAt.format(\"dddd, MMMM D, YYYY\")}</div>\n <div>\n {startsAt.format(\"h:mm a\")} - {endsAt.format(\"h:mm a z\")}\n </div>\n <div className=\"my-4\">\n <span>{locationDisplay}</span>\n {isVirtual && <span> (Virtual)</span>}\n </div>\n </div>\n\n {/* Event Description */}\n {event.description && (\n <div className=\"mb-4 text-left\">\n <div className=\"mb-2 font-bold\">Description:</div>\n <p className=\"text-sm\">{event.description}</p>\n </div>\n )}\n\n {/* Event Instructions */}\n {event.instructions && (\n <div className=\"mb-4 text-left\">\n <div className=\"mb-2 font-bold\">Instructions:</div>\n <p className=\"text-sm\">{event.instructions}</p>\n </div>\n )}\n </div>\n\n {/* Price Info */}\n {event.amountCents > 0 && (\n <div className=\"m-auto w-full\">\n <div className=\"my-4 border-y border-gray py-4\">\n <PriceRow label=\"Event Fee\" value={eventAmount} />\n\n {discount && (\n <>\n <PriceRow label={`Discount (${discount.code})`} value={`-${discountAmount}`} className=\"text-teal\" />\n <Divider className=\"my-2\" />\n </>\n )}\n\n <PriceRow label=\"Total\" value={finalAmount} className=\"text-lg font-bold\" />\n </div>\n </div>\n )}\n\n {/* Footer links */}\n <div className=\"mt-6 font-bold text-teal [&>*]:m-auto [&>*]:mt-2 [&>*]:block\">\n <div>\n <a href={practice.url}>Book another appointment</a>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default function ManageEventRegistration(props) {\n return (\n <GraphQLProvider>\n <PageContent {...props} />\n </GraphQLProvider>\n )\n}\n","import React, { createContext, useContext, useState } from \"react\"\n\nimport { createUrqlClient } from \"../utils/utils\"\n\nimport { useToast } from \"./ToastContext\"\n\nconst urqlClient = createUrqlClient({ requestPolicy: \"network-only\" })\n\nconst PROFILE_STATUS_QUERY = `\n query ProfileStatusData {\n profileStatusData {\n status\n completionSteps { name completed link }\n verificationSteps { name completed }\n practitionerFirstName\n profileUrl\n showCompletedModal\n showTermsModal\n }\n }\n`\n\nexport const ProfileStatusContext = createContext()\n\nexport const ProfileStatusProvider = ({ children, data }) => {\n const [profileStatusData, setProfileStatusData] = useState(data)\n const { showToast } = useToast()\n\n const syncProfileStatus = () => {\n urqlClient\n .query(PROFILE_STATUS_QUERY)\n .toPromise()\n .then((res) => {\n if (res.data?.profileStatusData) {\n setProfileStatusData(res.data.profileStatusData)\n } else {\n showToast({\n type: \"error\",\n content: \"There was an error syncing your profile status. Please refresh the page.\"\n })\n console.error(\"Error fetching profile status data\")\n }\n })\n }\n\n return (\n <ProfileStatusContext.Provider value={{ profileStatusData, setProfileStatusData, syncProfileStatus }}>\n {children}\n </ProfileStatusContext.Provider>\n )\n}\n\nexport const useProfileStatus = () => useContext(ProfileStatusContext)\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { ProfileStatusProvider } from \"../../contexts/ProfileStatusContext\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst ProfileEditProvider = ({ children, profileStatusData }) => (\n <ToastProvider>\n <NiceModal.Provider>\n <PracticeProvider>\n <ProfileStatusProvider data={profileStatusData}>\n <GraphQLProvider>{children}</GraphQLProvider>\n </ProfileStatusProvider>\n </PracticeProvider>\n </NiceModal.Provider>\n </ToastProvider>\n)\n\nexport default ProfileEditProvider\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport DatePicker from \"../components/shared/DatePicker\"\nimport { EditableValue, Input, InputWithLabel } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport { RadioWithLabel } from \"../components/shared/RadioButtons\"\nimport Typography from \"../components/shared/Typography\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\n\nconst UPDATE_INFO_MUTATION = `\n mutation UpdatePersonalSettings($name: String, $email: String, $phone: String, $gender: String, $dob: String, $customGender: String, $password: String, $passwordConfirmation: String) {\n updatePersonalSettings(name: $name, email: $email, phone: $phone, gender: $gender, dob: $dob, customGender: $customGender, password: $password, passwordConfirmation: $passwordConfirmation) {\n result\n user { id name email phone gender dob customGender }\n }\n }\n`\n\nconst Details = ({ user }) => {\n const [userState, setUserState] = useState(user)\n const [lastSavedUserValue, setLastSavedUserValue] = useState(user)\n const [openField, setOpenField] = useState(null)\n\n const [{ fetching }, updatePersonalSettings] = useMutation(UPDATE_INFO_MUTATION)\n\n const { showToast } = useToast()\n\n const onSave = () => {\n if (\n !!userState.password &&\n !!userState.passwordConfirmation &&\n userState.password !== userState.passwordConfirmation\n ) {\n showToast({\n type: \"error\",\n content: \"Your password and password confirmation do not match.\"\n })\n return\n }\n updatePersonalSettings(Object.fromEntries(Object.entries(userState).filter(([, v]) => !!v))).then((result) => {\n setOpenField(null)\n if (result.error) {\n console.error(result)\n setUserState(lastSavedUserValue)\n showToast({\n type: \"error\",\n content: result.error.message.replace(\"[GraphQL]\", \"\")\n })\n } else {\n setLastSavedUserValue(result.data.updatePersonalSettings.user)\n showToast(\"Your settings have been saved.\")\n }\n })\n }\n\n const onOpened = (fieldName) => {\n setOpenField(fieldName)\n }\n\n return (\n <div>\n <Typography variant=\"h3\" as=\"h1\" className=\"mb-6\">\n My account\n </Typography>\n <Box>\n <EditableValue\n name=\"Name\"\n value={userState.name}\n saveDisabled={userState.name === lastSavedUserValue.name || userState.name?.length < 2}\n disabled={fetching || (openField && openField !== \"Name\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <Input\n name=\"Name\"\n value={userState.name || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, name: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Email\"\n value={userState.email}\n saveDisabled={userState.email === lastSavedUserValue.email}\n disabled={fetching || (openField && openField !== \"Email\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <Input\n name=\"Email\"\n value={userState.email || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, email: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Phone\"\n value={userState.phone}\n saveDisabled={userState.phone === lastSavedUserValue.phone}\n disabled={fetching || (openField && openField !== \"Phone\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <Input\n name=\"Phone\"\n value={userState.phone || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, phone: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Gender\"\n value={(userState.gender === \"Custom\" ? userState.customGender : userState.gender) || \"\"}\n saveDisabled={userState.gender === lastSavedUserValue.gender}\n disabled={fetching || (openField && openField !== \"Gender\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <div className=\"flex gap-4\">\n <RadioWithLabel\n value=\"Female\"\n name=\"gender\"\n label=\"Female\"\n checked={userState.gender === \"Female\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n <RadioWithLabel\n value=\"Male\"\n name=\"gender\"\n label=\"Male\"\n checked={userState.gender === \"Male\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n <RadioWithLabel\n value=\"Custom\"\n name=\"gender\"\n label=\"Custom\"\n checked={userState.gender === \"Custom\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n </div>\n {userState.gender === \"Custom\" && (\n <Input\n className=\"mt-4\"\n name=\"Custom gender\"\n value={userState.customGender || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, customGender: e.target.value }))}\n />\n )}\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Date of birth\"\n value={userState.dob ? new Date(userState.dob).toDateString() : null}\n saveDisabled={userState.dob === lastSavedUserValue.dob}\n disabled={fetching || (openField && openField !== \"Date of birth\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <DatePicker\n selected={userState.dob ? new Date(userState.dob) : \"\"}\n onChange={(date) => {\n setUserState((values) => ({ ...values, dob: date }))\n }}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Password\"\n value=\"Reset your password\"\n editButtonCopy=\"Update\"\n disabled={fetching || (openField && openField !== \"Password\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <InputWithLabel\n className=\"mb-4\"\n label=\"New password\"\n type=\"password\"\n value={userState.password || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, password: e.target.value }))}\n />\n <InputWithLabel\n label=\"Confirm password\"\n type=\"password\"\n value={userState.passwordConfirmation || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, passwordConfirmation: e.target.value }))}\n />\n </EditableValue>\n </Box>\n </div>\n )\n}\n\nexport default function PersonalSettings({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Details {...props} />\n </ProfileEditProvider>\n )\n}\n","import React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { CheckBox, Input } from \"../../components/shared/Inputs\"\n\nconst GiftCardForm = ({ giftCard, onSave, onCancel }) => {\n const [formData, setFormData] = useState({\n amountCents: giftCard?.amountCents || \"\",\n description: giftCard?.description || \"\",\n active: giftCard?.active ?? true,\n public: giftCard?.public ?? true\n })\n const [errors, setErrors] = useState({})\n\n const handleChange = (field, value) => {\n setFormData((prev) => ({ ...prev, [field]: value }))\n }\n\n const validate = () => {\n const newErrors = {}\n if (!formData.amountCents) {\n newErrors.amountCents = \"Amount is required\"\n } else if (isNaN(parseFloat(formData.amountCents)) || parseFloat(formData.amountCents) <= 0) {\n newErrors.amountCents = \"Amount must be a positive number\"\n }\n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = () => {\n if (!validate()) return\n onSave(formData)\n }\n\n return (\n <div className=\"flex items-center gap-4 rounded-lg bg-blue/10 p-4\">\n <div className=\"w-32\">\n <div className=\"relative flex items-center\">\n <span className=\"pointer-events-none absolute left-3 text-gray-dark\">$</span>\n <Input\n type=\"number\"\n min=\"0\"\n step=\"1\"\n className=\"pl-7\"\n value={Math.round(Number(formData.amountCents) / 100) || \"\"}\n onChange={(e) => handleChange(\"amountCents\", parseInt(e.target.value * 100))}\n />\n </div>\n {errors.amountCents && <span className=\"mt-1 text-sm text-red\">{errors.amountCents}</span>}\n </div>\n <Input\n type=\"text\"\n className=\"flex-1\"\n placeholder=\"Description (optional)...\"\n value={formData.description}\n onChange={(e) => handleChange(\"description\", e.target.value)}\n />\n <div className=\"flex items-center gap-4\">\n <CheckBox\n label=\"Active\"\n className=\"mb-0\"\n checked={formData.active}\n onChange={(e) => handleChange(\"active\", e.target.checked)}\n />\n <CheckBox\n label=\"Online\"\n className=\"mb-0\"\n checked={formData.public}\n onChange={(e) => handleChange(\"public\", e.target.checked)}\n />\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"primary\" onClick={handleSubmit}>\n Save\n </Button>\n <Button variant=\"secondary\" onClick={onCancel}>\n Cancel\n </Button>\n </div>\n </div>\n )\n}\n\nexport default GiftCardForm\n","import { PencilIcon, TrashIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, IconButton } from \"../../components/shared/Buttons\"\nimport { CheckBox } from \"../../components/shared/Inputs\"\nimport { Box } from \"../../components/shared/Layout\"\nimport { TabNavLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nimport GiftCardForm from \"./GiftCardForm\"\n\nconst UPSERT_GIFT_CARD_TEMPLATE_MUTATION = `\n mutation UpsertGiftCardTemplate($id: ID, $amountCents: Int!, $description: String, $active: Boolean!, $public: Boolean!) {\n upsertGiftCardTemplate(id: $id, amountCents: $amountCents, description: $description, active: $active, public: $public) {\n result\n giftCardTemplate {\n id\n amountCents\n description\n active\n public\n }\n errors\n }\n }\n`\n\nconst GiftCardTemplates = ({ giftCardTemplates: giftCardTemplatesProp }) => {\n const navItems = [\"Gift Cards\", \"Activity\"]\n\n const [giftCardTemplates, setGiftCardTemplates] = useState(giftCardTemplatesProp)\n const [view, setView] = useState(navItems[0])\n const { showToast } = useToast()\n const [showNewForm, setShowNewForm] = useState(giftCardTemplates.length === 0)\n const [editingTemplate, setEditingTemplate] = useState(null)\n const [, upsertGiftCardTemplate] = useMutation(UPSERT_GIFT_CARD_TEMPLATE_MUTATION)\n\n const handleSave = async (formData) => {\n try {\n const result = await upsertGiftCardTemplate({ ...formData, id: editingTemplate?.id })\n\n if (result.data?.upsertGiftCardTemplate?.result === \"success\") {\n const savedTemplate = result.data.upsertGiftCardTemplate.giftCardTemplate\n if (editingTemplate) {\n setGiftCardTemplates((templates) => templates.map((t) => (t.id === savedTemplate.id ? savedTemplate : t)))\n } else {\n setGiftCardTemplates((prev) => [...prev, savedTemplate])\n }\n showToast({ content: \"Gift card template saved successfully\", type: \"success\" })\n setEditingTemplate(null)\n setShowNewForm(false)\n } else {\n const error = result.data?.upsertGiftCardTemplate?.errors?.[0] || \"Failed to save gift card template\"\n showToast({ content: error, type: \"error\" })\n }\n } catch (error) {\n console.error(\"Error saving gift card template:\", error)\n showToast({ content: \"Failed to save gift card template\", type: \"error\" })\n }\n }\n\n return (\n <div>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n Gift Cards\n </Typography>\n <Typography variant=\"subtitle\">Add or edit your gift cards.</Typography>\n </div>\n <Button variant=\"primary\" onClick={() => setShowNewForm(true)} className=\"sm:mt-4\">\n Create New\n </Button>\n </div>\n\n <Box data-test-id=\"gift-card-templates\">\n <div className={twMerge(\"mt-4 flex gap-8 border-b border-gray-light sm:mb-4\")}>\n {navItems.map((item) => (\n <TabNavLink key={item} active={view === item} onClick={() => setView(item)}>\n {item}\n </TabNavLink>\n ))}\n </div>\n <div className=\"flex flex-row sm:hidden\" data-tooltip-id=\"disabled-tooltip\">\n <Button floatingInMobile={true} onClick={() => {}} className=\"hidden sm:block\">\n Add new\n </Button>\n </div>\n\n {view === \"Gift Cards\" && (\n <>\n <div className=\"mb-4\">\n <Typography variant=\"subtitle\">\n Create a gift certificate for any dollar amount and with any description\n </Typography>\n </div>\n\n <div className=\"flex flex-col gap-4\">\n {showNewForm && <GiftCardForm onSave={handleSave} onCancel={() => setShowNewForm(false)} />}\n\n {giftCardTemplates.map((template, index) => (\n <div key={index} className=\"flex items-center gap-4 rounded-lg bg-gray-ultralight p-4\">\n {editingTemplate?.id === template.id ? (\n <GiftCardForm giftCard={template} onSave={handleSave} onCancel={() => setEditingTemplate(null)} />\n ) : (\n <>\n <div className=\"w-32\">${template.amountCents / 100}</div>\n <div className=\"flex-1\">{template.description || `$${template.amountCents / 100} Gift Card`}</div>\n <div className=\"flex items-center gap-4\">\n <CheckBox label=\"Active\" className=\"mb-0\" checked={template.active} disabled />\n <CheckBox label=\"Online\" className=\"mb-0\" checked={template.public} disabled />\n </div>\n <div className=\"flex gap-2\">\n <IconButton Icon={PencilIcon} onClick={() => setEditingTemplate(template)} />\n <IconButton Icon={TrashIcon} onClick={() => {}} />\n </div>\n </>\n )}\n </div>\n ))}\n </div>\n </>\n )}\n </Box>\n </div>\n )\n}\n\nexport default function PortalGiftCardTemplatesPage({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <GiftCardTemplates {...props} />\n </ProfileEditProvider>\n )\n}\n","import React from \"react\"\n\nimport { ORDERED_DAYS } from \"../../utils/utils\"\n\nconst DisplayAvailableTimes = ({ locationOrService, className }) => (\n <div className={className}>\n {ORDERED_DAYS.map((day) => {\n const availableTimesForDay = locationOrService.availableTimes[day]\n if (!availableTimesForDay) return null\n if (availableTimesForDay.enabled === false) return null\n if (!availableTimesForDay.startsAt || !availableTimesForDay.endsAt) return null\n return (\n <div key={`location-${locationOrService.id}-${day}`} className=\"flex items-center justify-between\">\n <span>{day}</span>\n <span>\n {availableTimesForDay.startsAt.replace(/ /g, \"\").toLowerCase()} -{\" \"}\n {availableTimesForDay.endsAt.replace(/ /g, \"\").toLowerCase()}\n </span>\n </div>\n )\n })}\n </div>\n)\n\nexport default DisplayAvailableTimes\n","import React from \"react\"\n\nimport { CheckBox, TimePicker } from \"../../components/shared/Inputs\"\nimport { ORDERED_DAYS } from \"../../utils/utils\"\n\nconst AvailableTimes = ({ availableTimes, updateState }) => {\n const updateAvailableTimes = (day, key, value) => {\n updateState((state) => {\n const newState = JSON.parse(JSON.stringify(state))\n const newTimes = { ...newState.availableTimes }\n newTimes[day] ||= {}\n newTimes[day][key] = value\n return { ...newState, availableTimes: newTimes }\n })\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {ORDERED_DAYS.map((day) => {\n const availableTimesForDay = availableTimes[day]\n\n const enabled = !availableTimesForDay\n ? false\n : typeof availableTimesForDay.enabled === \"undefined\"\n ? !!(availableTimesForDay.startsAt && availableTimesForDay.endsAt)\n : availableTimesForDay.enabled\n return (\n <div key={day} className=\"flex items-center\">\n <CheckBox\n id={`${day}-checkbox`}\n label={day}\n checked={enabled}\n onChange={() => {\n updateAvailableTimes(day, \"enabled\", !enabled)\n if (!enabled) {\n if (!availableTimesForDay?.startsAt) updateAvailableTimes(day, \"startsAt\", \"9:00 AM\")\n if (!availableTimesForDay?.endsAt) updateAvailableTimes(day, \"endsAt\", \"5:00 PM\")\n }\n }}\n className=\"mb-0 w-32 pr-3\"\n />\n {enabled ? (\n <>\n <span>\n <TimePicker\n valueFormat=\"h:mm A\"\n disabled={!enabled}\n value={availableTimesForDay?.startsAt || \"9:00 AM\"}\n onChange={(e) => updateAvailableTimes(day, \"startsAt\", e.target.value)}\n />\n </span>\n <span className=\"px-2\"> - </span>\n <span>\n <TimePicker\n valueFormat=\"h:mm A\"\n value={availableTimesForDay?.endsAt || \"5:00 PM\"}\n onChange={(e) => updateAvailableTimes(day, \"endsAt\", e.target.value)}\n />\n </span>\n </>\n ) : (\n <span className=\"my-[7px] flex-1 text-gray-dark\">Unavailable</span>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default AvailableTimes\n","import React from \"react\"\nimport Autocomplete from \"react-google-autocomplete\"\n\nimport \"./PlacesAutocomplete.sass\"\nimport { VALIDATION_ERROR_INPUT_CLASSNAMES, ValidationError } from \"./Inputs\"\n\nconst PlacesAutocomplete = ({ types = [], validationError, ...props }) => (\n <div>\n <Autocomplete\n {...props}\n options={{ types }}\n className={validationError ? `w-full rounded-lg border px-3 py-1.5 ${VALIDATION_ERROR_INPUT_CLASSNAMES}` : \"\"}\n />\n {validationError && <ValidationError>{validationError}</ValidationError>}\n </div>\n)\n\nexport default PlacesAutocomplete\n","import React from \"react\"\n\nimport { Label } from \"../../components/shared/Inputs\"\nimport PlacesAutocomplete from \"../../components/shared/PlacesAutocomplete\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nconst LocationPlacesSelect = ({\n label,\n location,\n setLocation,\n placeholder = \"Start typing the street address\",\n types = [],\n validationError\n}) => {\n const id = \"location-select-\" + label.toLowerCase().replace(\" \", \"-\")\n\n const onPlaceSelected = (place) => {\n setLocation((location) => {\n const newLocation = {\n ...location,\n neighborhood: null,\n cityGeocoded: null,\n stateProvince: null,\n stateAbbreviation: null,\n country: null,\n countryCode: null,\n placeId: null,\n fullStreetAddress: null\n }\n place.address_components.map((address) => {\n if (address.types.includes(\"street_number\")) {\n newLocation.address = address.long_name\n } else if (address.types.includes(\"route\")) {\n newLocation.address = newLocation.address + \" \" + address.long_name\n } else if (address.types.includes(\"neighborhood\")) {\n newLocation.neighborhood = address.long_name\n } else if (\n address.types.includes(\"locality\") ||\n address.types.includes(\"sublocality\") ||\n address.types.includes(\"postal_town\")\n ) {\n newLocation.cityGeocoded = address.long_name\n newLocation.city = address.long_name\n } else if (address.types.includes(\"administrative_area_level_1\")) {\n newLocation.stateProvince = address.long_name\n newLocation.stateAbbreviation = address.short_name\n } else if (address.types.includes(\"country\")) {\n newLocation.country = address.long_name\n newLocation.countryCode = address.short_name\n } else if (address.types.includes(\"postal_code\")) {\n newLocation.zip = address.long_name\n }\n })\n newLocation.latitude = place.geometry.location.lat()\n newLocation.longitude = place.geometry.location.lng()\n newLocation.fullStreetAddress = place.formatted_address\n newLocation.placeId = place.place_id\n return newLocation\n })\n }\n\n return (\n <div>\n <Label htmlFor={id}>{label}</Label>\n <PlacesAutocomplete\n apiKey={process.env.GOOGLE_MAPS_API_KEY}\n types={types}\n id={id}\n onPlaceSelected={onPlaceSelected}\n defaultValue={stripUSAFromString(location?.fullStreetAddress || location?.address || \"\")}\n placeholder={placeholder}\n validationError={validationError}\n />\n </div>\n )\n}\n\nexport default LocationPlacesSelect\n","import React from \"react\"\n\nimport { Label, Select } from \"../../components/shared/Inputs\"\n\nimport LocationPlacesSelect from \"./LocationPlacesSelect\"\n\nconst SELECT_OPTIONS = []\nfor (let i = 1; i <= 50; i++) {\n SELECT_OPTIONS.push({ value: i.toString(), label: i === 1 ? `1 mile` : `${i} miles` })\n}\n\nconst HomeLocationFields = ({ location, setLocation, validationErrors }) => (\n <>\n <LocationPlacesSelect\n setLocation={setLocation}\n location={location}\n label=\"Your home address\"\n validationError={validationErrors.fullStreetAddress}\n />\n <div>\n <Label htmlFor=\"travel-distance\">How far are you willing to commute to a clients’ home?</Label>\n <Select\n id=\"travel-distance\"\n value={location.travelDistance || \"\"}\n onChange={(e) => setLocation({ ...location, travelDistance: e.target.value })}\n options={SELECT_OPTIONS}\n defaultOption=\"Select distance\"\n validationError={validationErrors.travelDistance}\n />\n </div>\n </>\n)\n\nexport default HomeLocationFields\n","import React from \"react\"\n\nimport { CheckBox, InputWithLabel } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\n\nimport LocationPlacesSelect from \"./LocationPlacesSelect\"\n\nconst OfficeLocationFields = ({ location, setLocation, validationErrors }) => (\n <>\n <div>\n <LocationPlacesSelect\n setLocation={setLocation}\n location={location}\n label=\"Office address\"\n validationError={validationErrors.fullStreetAddress}\n />\n {location.address && (\n <InputWithLabel\n validationError={validationErrors.secondaryAddress}\n className=\"mt-3\"\n label=\"Unit or suite number (optional)\"\n placeholder=\"E.g. Apt. 1A\"\n value={location.secondaryAddress || \"\"}\n onChange={(e) => setLocation({ ...location, secondaryAddress: e.target.value })}\n />\n )}\n </div>\n <div>\n <CheckBox\n className=\"text-base\"\n label=\"Keep address hidden until booking\"\n checked={location.hideAddress}\n onChange={() => {\n setLocation({ ...location, hideAddress: !location.hideAddress })\n }}\n />\n <Typography variant=\"micro\" as=\"div\" className=\"-mt-2 ml-8\">\n Clients will see the area but not the street address\n </Typography>\n </div>\n </>\n)\n\nexport default OfficeLocationFields\n","import dayjs from \"dayjs\"\nimport timezone from \"dayjs/plugin/timezone\"\nimport utc from \"dayjs/plugin/utc\"\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport const TIMEZONE_GROUPS = {\n US_CANADA: \"US & Canada\",\n CENTRAL_SOUTH_AMERICA: \"Central & South America\",\n ATLANTIC: \"Atlantic\",\n EUROPE_RUSSIA: \"Europe & Russia\",\n AFRICA_MIDDLE_EAST: \"Africa & Middle East\",\n INDIA: \"India\",\n ASIA_AUSTRALIA: \"Asia & Australia\",\n PACIFIC: \"Pacific\"\n}\n\nexport const TIMEZONE_OPTIONS = [\n // US & Canada\n {\n group: TIMEZONE_GROUPS.US_CANADA,\n timezones: [\n { value: \"America/Los_Angeles\", label: \"Pacific Time (US & Canada)\" },\n { value: \"America/Denver\", label: \"Mountain Time (US & Canada)\" },\n { value: \"America/Chicago\", label: \"Central Time (US & Canada)\" },\n { value: \"America/New_York\", label: \"Eastern Time (US & Canada)\" },\n { value: \"America/Halifax\", label: \"Atlantic Time (Canada)\" },\n { value: \"Pacific/Honolulu\", label: \"Hawaii\" },\n { value: \"America/Anchorage\", label: \"Alaska\" },\n { value: \"America/Phoenix\", label: \"Arizona\" },\n { value: \"America/St_Johns\", label: \"Newfoundland\" },\n { value: \"America/Puerto_Rico\", label: \"Puerto Rico\" }\n ]\n },\n // Central & South America\n {\n group: TIMEZONE_GROUPS.CENTRAL_SOUTH_AMERICA,\n timezones: [\n { value: \"America/Mexico_City\", label: \"Mexico City\" },\n { value: \"America/Sao_Paulo\", label: \"Brasilia\" },\n { value: \"America/Argentina/Buenos_Aires\", label: \"Buenos Aires\" },\n { value: \"America/Montevideo\", label: \"Montevideo\" },\n { value: \"America/Tijuana\", label: \"Tijuana\" },\n { value: \"America/Chihuahua\", label: \"Chihuahua\" },\n { value: \"America/Mazatlan\", label: \"Mazatlan\" },\n { value: \"America/Guatemala\", label: \"Central America\" },\n { value: \"America/Monterrey\", label: \"Monterrey\" },\n { value: \"America/Regina\", label: \"Saskatchewan\" },\n { value: \"America/Bogota\", label: \"Bogota\" },\n { value: \"America/Lima\", label: \"Lima\" },\n { value: \"America/Lima\", label: \"Quito\" },\n { value: \"America/Caracas\", label: \"Caracas\" },\n { value: \"America/Guyana\", label: \"Georgetown\" },\n { value: \"America/La_Paz\", label: \"La Paz\" },\n { value: \"America/Santiago\", label: \"Santiago\" }\n ]\n },\n // Atlantic\n {\n group: TIMEZONE_GROUPS.ATLANTIC,\n timezones: [\n { value: \"America/Godthab\", label: \"Greenland\" },\n { value: \"Atlantic/South_Georgia\", label: \"Mid-Atlantic\" },\n { value: \"Atlantic/Azores\", label: \"Azores\" },\n { value: \"Atlantic/Cape_Verde\", label: \"Cape Verde Is.\" }\n ]\n },\n // Europe & Russia\n {\n group: TIMEZONE_GROUPS.EUROPE_RUSSIA,\n timezones: [\n { value: \"Europe/Lisbon\", label: \"Edinburgh\" },\n { value: \"Europe/Lisbon\", label: \"Lisbon\" },\n { value: \"Europe/London\", label: \"London\" },\n { value: \"Africa/Monrovia\", label: \"Monrovia\" },\n { value: \"UTC\", label: \"UTC\" },\n { value: \"Europe/Amsterdam\", label: \"Amsterdam\" },\n { value: \"Europe/Belgrade\", label: \"Belgrade\" },\n { value: \"Europe/Berlin\", label: \"Berlin\" },\n { value: \"Europe/Zurich\", label: \"Bern\" },\n { value: \"Europe/Bratislava\", label: \"Bratislava\" },\n { value: \"Europe/Brussels\", label: \"Brussels\" },\n { value: \"Europe/Budapest\", label: \"Budapest\" },\n { value: \"Africa/Casablanca\", label: \"Casablanca\" },\n { value: \"Europe/Copenhagen\", label: \"Copenhagen\" },\n { value: \"Europe/Dublin\", label: \"Dublin\" },\n { value: \"Europe/Ljubljana\", label: \"Ljubljana\" },\n { value: \"Europe/Madrid\", label: \"Madrid\" },\n { value: \"Europe/Paris\", label: \"Paris\" },\n { value: \"Europe/Prague\", label: \"Prague\" },\n { value: \"Europe/Rome\", label: \"Rome\" },\n { value: \"Europe/Sarajevo\", label: \"Sarajevo\" },\n { value: \"Europe/Skopje\", label: \"Skopje\" },\n { value: \"Europe/Stockholm\", label: \"Stockholm\" },\n { value: \"Europe/Vienna\", label: \"Vienna\" },\n { value: \"Europe/Warsaw\", label: \"Warsaw\" },\n { value: \"Europe/Zagreb\", label: \"Zagreb\" },\n { value: \"Europe/Athens\", label: \"Athens\" },\n { value: \"Europe/Bucharest\", label: \"Bucharest\" },\n { value: \"Europe/Helsinki\", label: \"Helsinki\" },\n { value: \"Europe/Kiev\", label: \"Kyiv\" },\n { value: \"Europe/Riga\", label: \"Riga\" },\n { value: \"Europe/Sofia\", label: \"Sofia\" },\n { value: \"Europe/Tallinn\", label: \"Tallinn\" },\n { value: \"Europe/Vilnius\", label: \"Vilnius\" },\n { value: \"Europe/Minsk\", label: \"Minsk\" },\n { value: \"Europe/Moscow\", label: \"Moscow\" },\n { value: \"Europe/Volgograd\", label: \"Volgograd\" },\n { value: \"Asia/Tbilisi\", label: \"Tbilisi\" },\n { value: \"Europe/Samara\", label: \"Samara\" },\n { value: \"Asia/Yekaterinburg\", label: \"Ekaterinburg\" },\n { value: \"Europe/Kaliningrad\", label: \"Kaliningrad\" },\n { value: \"Asia/Vladivostok\", label: \"Vladivostok\" },\n { value: \"Asia/Kamchatka\", label: \"Kamchatka\" }\n ]\n },\n // Africa & Middle East\n {\n group: TIMEZONE_GROUPS.AFRICA_MIDDLE_EAST,\n timezones: [\n { value: \"Africa/Lagos\", label: \"West Central Africa\" },\n { value: \"Africa/Cairo\", label: \"Cairo\" },\n { value: \"Africa/Harare\", label: \"Harare\" },\n { value: \"Asia/Jerusalem\", label: \"Jerusalem\" },\n { value: \"Africa/Johannesburg\", label: \"Pretoria\" },\n { value: \"Asia/Baghdad\", label: \"Baghdad\" },\n { value: \"Europe/Istanbul\", label: \"Istanbul\" },\n { value: \"Asia/Kuwait\", label: \"Kuwait\" },\n { value: \"Africa/Nairobi\", label: \"Nairobi\" },\n { value: \"Asia/Riyadh\", label: \"Riyadh\" },\n { value: \"Asia/Tehran\", label: \"Tehran\" },\n { value: \"Asia/Dubai\", label: \"Abu Dhabi\" },\n { value: \"Asia/Baku\", label: \"Baku\" },\n { value: \"Asia/Muscat\", label: \"Muscat\" },\n { value: \"Asia/Yerevan\", label: \"Yerevan\" },\n { value: \"Asia/Kabul\", label: \"Kabul\" },\n { value: \"Asia/Karachi\", label: \"Karachi\" },\n { value: \"Asia/Tashkent\", label: \"Tashkent\" },\n { value: \"Asia/Almaty\", label: \"Almaty\" },\n { value: \"Asia/Dhaka\", label: \"Astana\" }\n ]\n },\n // India\n {\n group: TIMEZONE_GROUPS.INDIA,\n timezones: [\n { value: \"Asia/Kolkata\", label: \"Chennai\" },\n { value: \"Asia/Kolkata\", label: \"Kolkata\" },\n { value: \"Asia/Kolkata\", label: \"Mumbai\" },\n { value: \"Asia/Kolkata\", label: \"New Delhi\" },\n { value: \"Asia/Colombo\", label: \"Sri Jayawardenepura\" },\n { value: \"Asia/Kathmandu\", label: \"Kathmandu\" },\n { value: \"Asia/Dhaka\", label: \"Dhaka\" }\n ]\n },\n // Asia & Australia\n {\n group: TIMEZONE_GROUPS.ASIA_AUSTRALIA,\n timezones: [\n { value: \"Asia/Urumqi\", label: \"Urumqi\" },\n { value: \"Asia/Rangoon\", label: \"Rangoon\" },\n { value: \"Asia/Bangkok\", label: \"Bangkok\" },\n { value: \"Asia/Ho_Chi_Minh\", label: \"Hanoi\" },\n { value: \"Asia/Jakarta\", label: \"Jakarta\" },\n { value: \"Asia/Krasnoyarsk\", label: \"Krasnoyarsk\" },\n { value: \"Asia/Novosibirsk\", label: \"Novosibirsk\" },\n { value: \"Asia/Shanghai\", label: \"Beijing\" },\n { value: \"Asia/Shanghai\", label: \"Chongqing\" },\n { value: \"Asia/Hong_Kong\", label: \"Hong Kong\" },\n { value: \"Asia/Irkutsk\", label: \"Irkutsk\" },\n { value: \"Asia/Kuala_Lumpur\", label: \"Kuala Lumpur\" },\n { value: \"Australia/Perth\", label: \"Perth\" },\n { value: \"Asia/Singapore\", label: \"Singapore\" },\n { value: \"Asia/Taipei\", label: \"Taipei\" },\n { value: \"Asia/Ulaanbaatar\", label: \"Ulaanbaatar\" },\n { value: \"Asia/Tokyo\", label: \"Osaka\" },\n { value: \"Asia/Tokyo\", label: \"Sapporo\" },\n { value: \"Asia/Seoul\", label: \"Seoul\" },\n { value: \"Asia/Tokyo\", label: \"Tokyo\" },\n { value: \"Asia/Yakutsk\", label: \"Yakutsk\" },\n { value: \"Australia/Adelaide\", label: \"Adelaide\" },\n { value: \"Australia/Darwin\", label: \"Darwin\" },\n { value: \"Australia/Brisbane\", label: \"Brisbane\" },\n { value: \"Australia/Canberra\", label: \"Canberra\" },\n { value: \"Australia/Hobart\", label: \"Hobart\" },\n { value: \"Australia/Melbourne\", label: \"Melbourne\" },\n { value: \"Pacific/Port_Moresby\", label: \"Port Moresby\" },\n { value: \"Australia/Sydney\", label: \"Sydney\" },\n { value: \"Asia/Magadan\", label: \"Magadan\" },\n { value: \"Pacific/Noumea\", label: \"New Caledonia\" },\n { value: \"Asia/Srednekolymsk\", label: \"Srednekolymsk\" },\n { value: \"Pacific/Auckland\", label: \"Auckland\" },\n { value: \"Pacific/Fiji\", label: \"Fiji\" },\n { value: \"Pacific/Auckland\", label: \"Wellington\" }\n ]\n },\n // Pacific\n {\n group: TIMEZONE_GROUPS.PACIFIC,\n timezones: [\n { value: \"Pacific/Midway\", label: \"International Date Line West\" },\n { value: \"Pacific/Pago_Pago\", label: \"American Samoa\" },\n { value: \"Pacific/Midway\", label: \"Midway Island\" },\n { value: \"Pacific/Guam\", label: \"Guam\" },\n { value: \"Pacific/Guadalcanal\", label: \"Solomon Is.\" },\n { value: \"Pacific/Tarawa\", label: \"Marshall Is.\" },\n { value: \"Pacific/Chatham\", label: \"Chatham Is.\" },\n { value: \"Pacific/Tongatapu\", label: \"Nuku'alofa\" },\n { value: \"Pacific/Apia\", label: \"Samoa\" },\n { value: \"Pacific/Fakaofo\", label: \"Tokelau Is.\" }\n ]\n }\n]\n\nexport const formatTimezoneOption = (timezone) => {\n const timeString = dayjs().tz(timezone.value).format(\"hh:mm A\")\n\n return {\n ...timezone,\n label: `${timezone.label}`,\n formattedLabel: `${timezone.label} ${timeString}`,\n currentTime: timeString\n }\n}\n\nexport const getGroupedTimezoneOptions = () =>\n TIMEZONE_OPTIONS.map((group) => ({\n label: group.group,\n options: group.timezones.map(formatTimezoneOption)\n }))\n","import React from \"react\"\nimport ReactSelect from \"react-select\"\n\nimport { InputWithLabel, Label, TextArea, ToggleButtonGroup } from \"../../components/shared/Inputs\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { getGroupedTimezoneOptions } from \"../../utils/timeZoneUtils\"\nimport { selectStyling } from \"../../utils/utils\"\n\nconst VirtualLocationFields = ({ location, setLocation, validationErrors }) => {\n const { practice } = usePractice()\n\n const zoomActive = practice.conferencingServices.some((service) => service.provider === \"zoom\" && service.active)\n\n // State to force update the times on timezone select\n const [timeUpdate, setTimeUpdate] = React.useState(0)\n\n React.useEffect(() => {\n const interval = setInterval(() => {\n setTimeUpdate((prev) => prev + 1)\n }, 30000)\n\n return () => clearInterval(interval)\n }, [])\n\n const timezoneOptions = React.useMemo(() => getGroupedTimezoneOptions(), [timeUpdate])\n\n return (\n <>\n <ToggleButtonGroup\n options={[\n { label: \"Video calls\", value: \"video\" },\n { label: \"Phone calls\", value: \"phone\" }\n ]}\n onChange={(value) => setLocation({ ...location, virtualType: value })}\n value={location.virtualType || \"video\"}\n />\n\n <div className=\"flex flex-col gap-2\">\n <Label>Time Zone</Label>\n <ReactSelect\n id=\"timezone-select\"\n options={timezoneOptions}\n value={\n timezoneOptions\n .flatMap((group) => group.options)\n .find((tz) => tz.label === location.timeZone || tz.value === location.timeZone) || null\n }\n onChange={(option) => setLocation({ ...location, timeZone: option.label })}\n styles={{\n ...selectStyling(),\n option: (provided, state) => ({\n ...provided,\n display: \"flex\",\n justifyContent: \"space-between\",\n \"&:after\": {\n content: `\"${state.data.currentTime}\"`,\n color: \"#666\"\n }\n }),\n group: (provided) => ({\n ...provided,\n padding: \"8px\"\n })\n }}\n formatGroupLabel={(group) => <div className=\"font-semibold text-gray-dark\">{group.label}</div>}\n placeholder=\"Select a time zone...\"\n />\n </div>\n\n {location.virtualType === \"video\" && (\n <>\n {!zoomActive ? (\n <>\n <div className=\"flex flex-col gap-2\">\n <InputWithLabel\n label=\"Virtual link\"\n value={location.virtualLink || \"\"}\n explanatorySubtext=\"Ex: https://zoom.us/j/1234567890\"\n onChange={(e) => setLocation({ ...location, virtualLink: e.target.value })}\n validationError={validationErrors.virtualLink}\n />\n <Banner type=\"info\" className=\"text-sm\">\n You can add Zoom to generate unique links automatically.{\" \"}\n <UnderlinedLink href=\"/portal/settings/conferencing\">Click here to connect</UnderlinedLink>\n </Banner>\n </div>\n </>\n ) : (\n <>\n <div className=\"flex flex-col gap-2\">\n <Label>Virtual link</Label>\n <Banner type=\"info\" className=\"text-sm\">\n Zoom is active and unique links will be generated automatically.{\" \"}\n <UnderlinedLink href=\"/portal/settings/conferencing\">\n Click here to manage Zoom integration\n </UnderlinedLink>\n </Banner>\n </div>\n </>\n )}\n </>\n )}\n <div>\n <Label htmlFor=\"virtual-instructions\">Instructions on how to join</Label>\n <TextArea\n id=\"virtual-instructions\"\n value={location.virtualInstructions || \"\"}\n onChange={(e) => setLocation({ ...location, virtualInstructions: e.target.value })}\n validationError={validationErrors.virtualInstructions}\n />\n <Typography variant=\"micro\" as=\"div\">\n Add simple instructions for how your clients will join these calls\n </Typography>\n </div>\n </>\n )\n}\n\nexport default VirtualLocationFields\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label } from \"../../components/shared/Inputs\"\nimport { Banner, Flyout } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatAvailableTimes } from \"../../utils/utils\"\n\nimport AvailableTimes from \"./AvailableTimes\"\nimport HomeLocationFields from \"./HomeLocationFields\"\nimport OfficeLocationFields from \"./OfficeLocationFields\"\nimport VirtualLocationFields from \"./VirtualLocationFields\"\n\nconst UPSERT_LOCATION = `\n mutation UpsertLocation(\n $id: ID,\n $address: String,\n $secondaryAddress: String,\n $neighborhood: String,\n $cityGeocoded: String,\n $city: String,\n $stateProvince: String,\n $stateAbbreviation: String,\n $country: String,\n $countryCode: String,\n $zip: String,\n $latitude: Float,\n $longitude: Float,\n $timeZone: String,\n $placeId: String,\n $fullStreetAddress: String,\n $hideAddress: Boolean,\n $kind: String\n $virtualType: String,\n $virtualLink: String,\n $virtualInstructions: String,\n $travelDistance: String\n $availableTimes: String\n $countryIds: [String!]\n $stateIds: [String!]) {\n upsertLocation(\n id: $id,\n address: $address,\n secondaryAddress: $secondaryAddress,\n neighborhood: $neighborhood,\n cityGeocoded: $cityGeocoded,\n city: $city,\n stateProvince: $stateProvince,\n stateAbbreviation: $stateAbbreviation,\n country: $country,\n countryCode: $countryCode,\n zip: $zip,\n latitude: $latitude,\n longitude: $longitude,\n timeZone: $timeZone,\n placeId: $placeId,\n fullStreetAddress: $fullStreetAddress,\n hideAddress: $hideAddress,\n kind: $kind,\n virtualType: $virtualType,\n virtualLink: $virtualLink,\n virtualInstructions: $virtualInstructions,\n travelDistance: $travelDistance\n availableTimes: $availableTimes\n countryIds: $countryIds\n stateIds: $stateIds) {\n result\n location {\n id\n name\n latitude\n longitude\n singleLine\n fullStreetAddress\n cityState\n city\n stateAbbreviation\n virtualType\n virtualLink\n virtualInstructions\n kind\n zip\n address\n secondaryAddress\n availableTimes\n hideAddress\n timeZone\n travelDistance\n state\n canDelete\n }\n errors\n }\n }\n`\nconst DISABLE_LOCATION = `\n mutation DisableLocation ($id: ID!){\n disableLocation (id: $id){\n result\n errors\n }\n }\n`\nconst ENABLE_LOCATION = `\n mutation EnableLocation ($id: ID!){\n enableLocation (id: $id){\n result\n errors\n }\n }\n`\nconst DELETE_LOCATION = `\n mutation DeleteLocation ($id: ID!){\n deleteLocation (id: $id){\n result\n errors\n }\n }\n`\n\nconst LocationFlyout = ({ location, setLocation, locations, setLocations, visible, closeFlyout }) => {\n const { syncProfileStatus } = useProfileStatus()\n const [formState, setFormState] = useState(JSON.parse(JSON.stringify(location)))\n const [validationErrors, setValidationErrors] = useState({})\n\n const [{ fetching: upsertLocationFetching }, upsertLocation] = useMutation(UPSERT_LOCATION)\n const [{ fetching: disableLocationFetching }, disableLocation] = useMutation(DISABLE_LOCATION)\n const [{ fetching: enableLocationFetching }, enableLocation] = useMutation(ENABLE_LOCATION)\n const [{ fetching: deleteLocationFetching }, deleteLocation] = useMutation(DELETE_LOCATION)\n\n const { showToast } = useToast()\n\n const editingExistingLocation = !!formState.id\n const lastActiveLocation = locations.filter((l) => l.state === \"active\").length <= 1\n const fetching = upsertLocationFetching || disableLocationFetching || enableLocationFetching || deleteLocationFetching\n const title = editingExistingLocation ? `Edit ${location.kind} location` : \"Add location\"\n\n const handleLocationTypeChange = (e) => {\n setFormState((state) => ({ ...state, kind: e.target.value }))\n }\n\n const updateLocationsState = (newLocation) => {\n const locationsCopy = [...locations]\n const index = locationsCopy.findIndex((location) => Number(location.id) === Number(newLocation.id))\n if (index !== -1) {\n locationsCopy[index] = newLocation\n } else {\n locationsCopy.push(newLocation)\n }\n setLocations(locationsCopy)\n }\n\n const onSave = () => {\n const errors = {}\n\n if (formState.kind === \"office\") {\n if (!formState.fullStreetAddress) {\n errors.fullStreetAddress = \"Address is required\"\n }\n } else if (formState.kind === \"virtual\") {\n if (!formState.virtualLink && !formState.virtualInstructions) {\n errors.virtualLink = \"Either a link or instructions are required\"\n errors.virtualInstructions = \"Either a link or instructions are required\"\n }\n } else {\n if (!formState.travelDistance) {\n errors.travelDistance = \"Travel distance is required\"\n }\n if (!formState.fullStreetAddress) {\n errors.fullStreetAddress = \"Address is required\"\n }\n }\n\n if (Object.keys(errors).length > 0) {\n setValidationErrors(errors)\n return\n } else {\n setValidationErrors({})\n }\n\n upsertLocation({ ...formState, availableTimes: JSON.stringify(formState.availableTimes) }).then((result) => {\n if (result?.data?.upsertLocation?.result === \"success\") {\n const newLocation = result.data.upsertLocation.location\n newLocation.availableTimes = formatAvailableTimes(newLocation.availableTimes)\n setLocation(newLocation)\n updateLocationsState(newLocation)\n\n showToast(\"Location has been saved\")\n syncProfileStatus()\n closeFlyout()\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error saving your location\"\n if (result.data?.upsertLocation?.errors) errorMessage += `: ${result.data.upsertLocation.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n const onDisable = () => {\n disableLocation({ id: location.id }).then((result) => {\n if (result?.data?.disableLocation?.result === \"success\") {\n const newLocation = { ...location, state: \"disabled\" }\n setLocation(newLocation)\n updateLocationsState(newLocation)\n showToast(\"Location has been disabled\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error disabling your location\"\n if (result.data?.disableLocation?.errors) errorMessage += `: ${result.data.disableLocation.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n const onEnable = () => {\n enableLocation({ id: location.id }).then((result) => {\n if (result?.data?.enableLocation?.result === \"success\") {\n const newLocation = { ...location, state: \"enabled\" }\n setLocation(newLocation)\n updateLocationsState(newLocation)\n closeFlyout()\n showToast(\"Location has been enabled\")\n } else {\n console.error(result)\n let errorMessage = \"There was an error enabling your location\"\n if (result.data?.enableLocation?.errors) errorMessage += `: ${result.data.enableLocation.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n const onDelete = () => {\n deleteLocation({ id: location.id }).then((result) => {\n if (result?.data?.deleteLocation?.result === \"success\") {\n setLocations(locations.filter((l) => l.id !== location.id))\n closeFlyout()\n showToast(\"Location has been deleted\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error deleting your location\"\n if (result.data?.deleteLocation?.errors) errorMessage += `: ${result.data.deleteLocation.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n return (\n <Flyout\n visible={visible}\n closeFlyout={() => {\n closeFlyout()\n setValidationErrors({})\n }}\n header={title}\n footer={\n <div className={`flex w-full items-center ${editingExistingLocation ? \"justify-between\" : \"justify-end\"}`}>\n {editingExistingLocation && (\n <>\n {location.state === \"disabled\" ? (\n <Button type=\"destructive\" onClick={onDelete} disabled={fetching}>\n Delete\n </Button>\n ) : (\n <Button\n type=\"destructive\"\n onClick={onDisable}\n disabled={fetching || location.onlyLocationForService || lastActiveLocation}>\n Disable\n </Button>\n )}\n </>\n )}\n <div className=\"flex gap-4\">\n <Button\n type=\"tertiary\"\n onClick={() => {\n closeFlyout()\n setValidationErrors({})\n }}\n disabled={fetching}>\n Cancel\n </Button>\n {location.state === \"disabled\" ? (\n <Button type=\"primary\" onClick={onEnable} disabled={fetching}>\n Enable\n </Button>\n ) : (\n <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n Save\n </Button>\n )}\n </div>\n </div>\n }>\n <div\n className={`flex flex-col gap-6 overflow-y-scroll ${\n location.state === \"disabled\" ? \"pointer-events-none opacity-25\" : \"\"\n }`}>\n {!editingExistingLocation && (\n <div>\n <Label htmlFor=\"location-type\" className=\"mb-2\">\n What type of location is this?\n </Label>\n <div className=\"flex gap-4\">\n <RadioWithLabel\n value=\"office\"\n name=\"location-type\"\n label=\"Office\"\n checked={formState.kind === \"office\"}\n onChange={handleLocationTypeChange}\n />\n <RadioWithLabel\n value=\"virtual\"\n name=\"location-type\"\n label=\"Virtual\"\n disabled={locations.filter((location) => location.kind === \"virtual\").length > 0}\n disabledTooltipMessage=\"Note: You already have a virtual location set up.\"\n checked={formState.kind === \"virtual\"}\n onChange={handleLocationTypeChange}\n />\n <RadioWithLabel\n id=\"in-home-radio\"\n value=\"home\"\n name=\"location-type\"\n label=\"At client's home\"\n disabled={locations.filter((location) => location.kind === \"home\").length > 0}\n disabledTooltipMessage=\"Note: You already have an in-home location set up.\"\n checked={formState.kind === \"home\"}\n onChange={handleLocationTypeChange}\n />\n </div>\n </div>\n )}\n {formState.kind === \"office\" ? (\n <OfficeLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n ) : formState.kind === \"home\" ? (\n <HomeLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n ) : (\n <VirtualLocationFields location={formState} setLocation={setFormState} validationErrors={validationErrors} />\n )}\n <AvailableTimes availableTimes={formState.availableTimes} updateState={setFormState} />\n </div>\n {location.onlyLocationForService && (\n <Banner type=\"warning\" className=\"mt-4\">\n <b>Note:</b> This location is attached to a service(s) and cannot be disabled yet.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8467013-i-can-t-disable-or-delete-a-location-why-not\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </Banner>\n )}\n </Flyout>\n )\n}\n\nexport default LocationFlyout\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport DisplayAvailableTimes from \"../ProfileEdit/DisplayAvailableTimes\"\nimport LocationFlyout from \"../ProfileEdit/LocationFlyout\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nconst Locations = ({ locations, defaultAvailableTimes }) => {\n const newLocationDefaults = {\n availableTimes: defaultAvailableTimes,\n kind: \"office\",\n virtualType: \"video\",\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone // Get user's browser timezone as default\n }\n const [locationsState, setLocationsState] = useState(locations)\n const [location, setLocation] = useState(newLocationDefaults)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n const addNewLocation = () => {\n setFlyoutVisible(true)\n setLocation(newLocationDefaults)\n }\n\n return (\n <>\n <div className=\"w-[600px] md:w-full\">\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n Locations & Hours\n </Typography>\n <Typography variant=\"subtitle\">Add or edit your locations and hours.</Typography>\n </div>\n </div>\n\n {locationsState.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Locations and hours\" onButtonClick={addNewLocation}>\n Add any locations you offer and set your availability for each.\n </ProfilePageEmptyStateBox>\n ) : (\n <Box data-test-id=\"locations\">\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n <Typography variant=\"capitalHeading\">Locations</Typography>\n <Button onClick={addNewLocation}>Add new</Button>\n </div>\n <Button onClick={addNewLocation} floatingInMobile={true} className=\"hidden sm:block\">\n Add new\n </Button>\n <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n {locationsState.map((location) => {\n const title =\n location.kind === \"virtual\"\n ? \"Virtual office\"\n : location.kind === \"home\"\n ? \"In-home\"\n : location.address\n const subTitle =\n location.kind === \"virtual\"\n ? `${capitalize(location.virtualType)} calls`\n : location.kind === \"home\"\n ? \"\"\n : `${location.city}, ${location.stateAbbreviation}`\n return (\n <Box key={location.id}>\n {location.state === \"disabled\" && (\n <div className=\"mb-4\">\n <Badge type=\"error\">Disabled</Badge>\n </div>\n )}\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"title\">{title}</Typography>\n <Button\n type=\"link\"\n onClick={() => {\n setLocation(location)\n setFlyoutVisible(true)\n }}>\n Manage\n </Button>\n </div>\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"smSubtitle\">{subTitle}</Typography>\n {location.kind === \"virtual\" && (\n <Typography variant=\"smSubtitle\">Timezone: {location.timeZone}</Typography>\n )}\n </div>\n\n <DisplayAvailableTimes locationOrService={location} className=\"mt-4\" />\n </Box>\n )\n })}\n </div>\n </Box>\n )}\n </div>\n\n <LocationFlyout\n key={location.id}\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n location={location}\n setLocation={setLocation}\n locations={locationsState}\n setLocations={setLocationsState}\n />\n </>\n )\n}\n\nexport default function PortalServicesLocations({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Locations {...props} />\n </ProfileEditProvider>\n )\n}\n","import { Menu, MenuButton, MenuItem, MenuItems, Transition } from \"@headlessui/react\"\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\"\nimport PropTypes from \"prop-types\"\nimport React from \"react\"\nimport { Fragment } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"./Inputs\"\n\nconst DropdownButton = ({ label, items, className }) => (\n <Menu as=\"div\" className={twMerge(\"relative inline-block text-left\", className)}>\n <div>\n <MenuButton className=\"flex h-8 items-center justify-center gap-2 rounded border border-teal bg-teal px-4 font-bold text-white hover:shadow focus:outline-none focus:ring-2 focus:ring-blue active:bg-teal-dark\">\n {label}\n <ChevronDownIcon className=\"h-5 w-5\" aria-hidden=\"true\" />\n </MenuButton>\n </div>\n\n <Transition\n as={Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\">\n <MenuItems className={twMerge(\"absolute right-0 mt-2 w-56 origin-top-right\", DROPDOWN_CLASSNAMES)}>\n <div className=\"py-1\">\n {items.map((item, index) => (\n <MenuItem key={index}>\n {({ active, selected }) => (\n <button\n className={twMerge(\n DROPDOWN_OPTION_CLASSNAMES({ active, selected }),\n \"mb-0 block w-full pr-3 text-left\"\n )}\n onClick={item.onClick}>\n {item.label}\n </button>\n )}\n </MenuItem>\n ))}\n </div>\n </MenuItems>\n </Transition>\n </Menu>\n)\n\nDropdownButton.propTypes = {\n label: PropTypes.string.isRequired,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n onClick: PropTypes.func\n })\n ).isRequired,\n className: PropTypes.string\n}\n\nexport default DropdownButton\n","import { Combobox, ComboboxButton, ComboboxInput, ComboboxOption, ComboboxOptions } from \"@headlessui/react\"\nimport { MapPinIcon } from \"@heroicons/react/24/solid\"\nimport capitalize from \"lodash/capitalize\"\nimport React, { useState, useRef } from \"react\"\nimport usePlacesService from \"react-google-autocomplete/lib/usePlacesAutocompleteService\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { BASE_INPUT_CLASSNAMES, DROPDOWN_CLASSNAMES, DROPDOWN_OPTION_CLASSNAMES } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nconst LocationInput = ({ eventType, setEventType, previousLocations }) => {\n const [inputValue, setInputValue] = useState(eventType.location || \"\")\n const comboboxRef = useRef(null)\n\n const { placesService, placePredictions, getPlacePredictions, isPlacePredictionsLoading } = usePlacesService({\n debounce: 300\n })\n\n const onChange = (location) => {\n setEventType((prev) => ({ ...prev, location }))\n }\n\n const value = eventType.location || \"\"\n\n return (\n <div>\n <Combobox\n id=\"location-input\"\n as=\"div\"\n className=\"relative sm:flex-1\"\n ref={comboboxRef}\n value={value}\n onChange={(item) => {\n if (typeof item === \"string\") {\n onChange(item)\n setInputValue(item)\n } else if (item) {\n placesService.getDetails({ placeId: item.place_id }, (place) => {\n const newMapCenter = { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }\n const event = new CustomEvent(\"newMapCenter\", { detail: newMapCenter })\n document.dispatchEvent(event)\n onChange(item.description)\n setInputValue(item.description)\n })\n }\n }}>\n <div className=\"relative\">\n <ComboboxInput\n onChange={(evt) => {\n const newValue = evt.target.value\n setInputValue(newValue)\n onChange(newValue)\n getPlacePredictions({ input: newValue })\n }}\n className={BASE_INPUT_CLASSNAMES}\n placeholder=\"Location\"\n value={inputValue}\n />\n {isPlacePredictionsLoading ? (\n <LoadingSpinner className=\"absolute right-2 top-2 py-0\" spinnerClassName=\"h-5 w-5\" />\n ) : (\n // Button is used to trigger the dropdown\n <ComboboxButton className=\"absolute right-1.5 top-1.5 h-6 w-6 text-gray-dark opacity-[0.64] sm:top-[7px]\">\n <MapPinIcon />\n </ComboboxButton>\n )}\n </div>\n\n <ComboboxOptions className={twMerge(DROPDOWN_CLASSNAMES, \"absolute z-50 w-full max-w-[430px]\")}>\n {previousLocations?.length > 0 && <div className=\"px-3 font-bold\">My locations</div>}\n {previousLocations?.map((location) => (\n <ComboboxOption key={location} className={DROPDOWN_OPTION_CLASSNAMES} value={location}>\n {location}\n </ComboboxOption>\n ))}\n {previousLocations?.length > 0 && <Divider />}\n {placePredictions?.length > 0 &&\n !isPlacePredictionsLoading &&\n placePredictions.map((item) => (\n <ComboboxOption key={item.description} className={DROPDOWN_OPTION_CLASSNAMES} value={item}>\n <div\n dangerouslySetInnerHTML={{\n __html: stripUSAFromString(item.description).replace(\n new RegExp(value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"i\"),\n (match) => `<mark style='font-weight: bold'>${capitalize(match)}</mark>`\n )\n }}\n />\n </ComboboxOption>\n ))}\n </ComboboxOptions>\n </Combobox>\n </div>\n )\n}\n\nexport default LocationInput\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { FilePicker } from \"../../components/shared/FileStackWidgets\"\nimport { BASE_INPUT_CLASSNAMES, Label } from \"../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst PhotoUpload = () => {\n const {\n bookableEventType,\n setBookableEventType,\n fetching,\n saveEventType,\n updatePhoto,\n removePhoto,\n updateBookableEventTypes\n } = useBookableEventTypes()\n\n const { showToast } = useToast()\n\n const onUploadDone = (res) => {\n if (bookableEventType.id) {\n uploadPhoto(res)\n } else {\n saveEventType().then((result) => {\n if (result?.data?.upsertBookableEventType?.result === \"success\") {\n const newEventType = result.data.upsertBookableEventType.bookableEventType\n newEventType.photoUrl = null\n setBookableEventType(newEventType)\n updateBookableEventTypes(newEventType)\n uploadPhoto(res, newEventType.id)\n } else {\n console.error(result)\n let errorMessage = \"There was an error saving your event type\"\n if (result.data?.upsertBookableEventType?.errors)\n errorMessage += `: ${result.data.upsertBookableEventType.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n }\n\n const onPhotoDelete = () => {\n removePhoto({ id: bookableEventType.id }).then((result) => {\n if (result?.data?.removeBookableEventTypePhoto?.result === \"success\") {\n const newEventType = { ...bookableEventType, photoUrl: null }\n setBookableEventType(newEventType)\n updateBookableEventTypes(newEventType)\n showToast(\"Your photo has been removed.\")\n } else {\n console.error(result)\n let errorMessage =\n \"There was an error removing your event type photo. Please try again later or contact support.\"\n if (result.data?.removeBookableEventTypePhoto?.errors)\n errorMessage += ` ${result.data.removeBookableEventTypePhoto.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n const uploadPhoto = (res, id) => {\n updatePhoto({\n handle: res.filesUploaded[0].handle,\n id: bookableEventType.id || id\n }).then((result) => {\n if (result?.data?.updateBookableEventTypePhoto?.result === \"success\") {\n const newEventType = {\n ...bookableEventType,\n photoUrl: result.data.updateBookableEventTypePhoto.photoUrl,\n id: bookableEventType.id || id\n }\n setBookableEventType((eventType) => ({\n ...eventType,\n photoUrl: newEventType.photoUrl\n }))\n updateBookableEventTypes(newEventType)\n showToast(\"Your photo has been saved.\")\n } else {\n console.error(result)\n let errorMessage = \"There was an error saving your event type photo. Please try again later or contact support.\"\n if (result.data?.updateBookableEventTypePhoto?.errors)\n errorMessage += ` ${result.data.updateBookableEventTypePhoto.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n return (\n <>\n <div className=\"flex justify-between\">\n <Label htmlFor=\"photo\">Photo</Label>\n {!bookableEventType.photoUrl && <div className=\"text-sm text-gray-dark\">Optional</div>}\n </div>\n {fetching ? (\n <LoadingSpinner className=\"py-0\" />\n ) : bookableEventType.photoUrl ? (\n <div className=\"flex items-center gap-4\">\n <img src={bookableEventType.photoUrl} alt=\"Event type photo\" className=\"h-16 w-16 rounded-lg\" />\n <div>\n <FilePicker\n as=\"button\"\n className=\"font-bold text-teal\"\n onUploadDone={onUploadDone}\n disabled={fetching}\n transformations={{}}>\n Edit photo\n </FilePicker>\n </div>\n <button className=\"font-bold text-red\" onClick={onPhotoDelete}>\n Remove\n </button>\n </div>\n ) : (\n <FilePicker\n as=\"button\"\n onUploadDone={onUploadDone}\n disabled={fetching}\n transformations={{}}\n className={twMerge(BASE_INPUT_CLASSNAMES, \"text-teal\")}>\n + Upload photo\n </FilePicker>\n )}\n </>\n )\n}\n\nexport default PhotoUpload\n","import React from \"react\"\n\nimport CurrencyInput from \"../../components/shared/CurrencyInput\"\nimport { CheckBox, Input, Label, TextArea } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { formatPrice, unformatPrice } from \"../../utils/utils\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\nimport LocationInput from \"./LocationInput\"\nimport PhotoUpload from \"./PhotoUpload\"\n\nconst BookableEventTypeForm = () => {\n const { bookableEventType, setBookableEventType, googlePlacesLoaded } = useBookableEventTypes()\n\n const handleChange = (field, value) => {\n setBookableEventType((prev) => ({ ...prev, [field]: value }))\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div>\n <Label>Name</Label>\n <Input\n value={bookableEventType.name || \"\"}\n onChange={(e) => handleChange(\"name\", e.target.value)}\n placeholder=\"e.g., Yoga Class, Meditation Session, etc.\"\n className=\"mt-1 w-full\"\n />\n </div>\n\n <div>\n <Label>URL</Label>\n <Input\n value={bookableEventType.slug || \"\"}\n onChange={(e) => handleChange(\"slug\", e.target.value)}\n placeholder=\"e.g., yoga-class, meditation-session\"\n className=\"mt-1 w-full\"\n />\n <Typography variant=\"micro\" className=\"\" as=\"div\">\n This is the final part of the link, for example: yoursite.com/yoga-class. Use lowercase letters, numbers, and\n hyphens only.\n </Typography>\n </div>\n\n <div>\n <Label>Description</Label>\n <TextArea\n value={bookableEventType.description || \"\"}\n onChange={(e) => handleChange(\"description\", e.target.value)}\n placeholder=\"Describe your event type to help clients understand what they're booking\"\n className=\"mt-1 w-full\"\n rows={3}\n />\n </div>\n\n <div>\n <Label>Instructions</Label>\n <TextArea\n value={bookableEventType.instructions || \"\"}\n onChange={(e) => handleChange(\"instructions\", e.target.value)}\n placeholder=\"Provide any instructions or information clients need before attending\"\n className=\"mt-1 w-full\"\n rows={3}\n />\n <Typography variant=\"micro\" className=\"-mt-1\" as=\"div\">\n Instructions for attendees. We'll email these to them after they book.\n </Typography>\n </div>\n\n <div>\n <div className=\"flex justify-between\">\n <Label htmlFor=\"price-input\">Price</Label>\n <div className=\"text-sm text-gray-dark\">Optional</div>\n </div>\n <CurrencyInput\n value={bookableEventType.amountCents ? formatPrice(bookableEventType.amountCents) : \"\"}\n onChange={(input) => {\n const newAmount = unformatPrice(input.target.value)\n handleChange(\"amountCents\", newAmount)\n }}\n className=\"mt-1 w-full\"\n placeholder=\"$0.00 (leave blank for free)\"\n />\n </div>\n\n <div>\n <div className=\"flex justify-between\">\n <Label>Capacity</Label>\n <div className=\"text-sm text-gray-dark\">Optional</div>\n </div>\n <Input\n type=\"number\"\n value={bookableEventType.capacity || \"\"}\n onChange={(e) => handleChange(\"capacity\", e.target.value === \"\" ? null : parseInt(e.target.value, 10))}\n placeholder=\"Leave blank for unlimited capacity\"\n className=\"mt-1 w-full\"\n min={1}\n />\n </div>\n\n <div>\n <Label>Event Location</Label>\n <div className=\"mt-4\">\n <CheckBox\n id=\"virtual-event-checkbox\"\n label=\"Virtual Event\"\n name=\"Virtual Event\"\n checked={bookableEventType.kind === \"virtual\"}\n onChange={() => {\n const newKind = bookableEventType.kind === \"in_person\" ? \"virtual\" : \"in_person\"\n setBookableEventType((event) => ({ ...event, kind: newKind }))\n }}\n />\n </div>\n {googlePlacesLoaded && (\n <div className=\"mt-2\">\n {bookableEventType.kind === \"in_person\" ? (\n <>\n <LocationInput eventType={bookableEventType} setEventType={setBookableEventType} />\n <Typography variant=\"micro\">Enter an address for in-person event</Typography>\n </>\n ) : (\n <>\n {/* <Label htmlFor=\"virtual-url\">Virtual Meeting URL</Label> */}\n <Input\n id=\"virtual-url\"\n value={bookableEventType.location || \"\"}\n placeholder=\"https://zoom.us/j/123456789\"\n onChange={(e) => setBookableEventType((event) => ({ ...event, location: e.target.value }))}\n />\n <Typography variant=\"micro\">Enter a URL for virtual events (Zoom, Google Meet, etc.)</Typography>\n </>\n )}\n </div>\n )}\n </div>\n\n {/* <div>\n <Label>Image</Label>\n <div className=\"mt-1\">Image upload coming soon</div>\n </div> */}\n\n <div className=\"mt-4\">\n <PhotoUpload />\n </div>\n </div>\n )\n}\n\nexport default BookableEventTypeForm\n","import React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport BookableEventTypeForm from \"./BookableEventTypeForm\"\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst BookableEventTypeFlyout = () => {\n const {\n showFlyout,\n setShowFlyout,\n bookableEventType,\n saveEventType,\n refetchEventTypes,\n deleteBookableEventType,\n removeBookableEventTypeFromList\n } = useBookableEventTypes()\n\n const [deleteModalVisible, setDeleteModalVisible] = useState(false)\n const [fetching, setFetching] = useState(false)\n const { showToast } = useToast()\n\n const editingExistingEventType = !!bookableEventType.id\n\n const saveEnabled = !fetching && bookableEventType.name?.length > 0 && bookableEventType.location?.length > 0\n\n const handleDelete = async () => {\n setFetching(true)\n try {\n const result = await deleteBookableEventType({ id: bookableEventType.id })\n\n if (result?.data?.deleteBookableEventType?.result === \"success\") {\n showToast(`Event type '${bookableEventType.name}' was deleted successfully`)\n removeBookableEventTypeFromList(bookableEventType.id)\n setDeleteModalVisible(false)\n setShowFlyout(false)\n if (refetchEventTypes) {\n refetchEventTypes()\n }\n } else {\n let errorMessage = \"There was an error deleting your event type\"\n if (result?.data?.deleteBookableEventType?.errors) {\n errorMessage += `: ${result.data.deleteBookableEventType.errors}`\n }\n showToast({ type: \"error\", content: errorMessage })\n }\n } catch (error) {\n console.error(\"Error deleting event type:\", error)\n showToast({ type: \"error\", content: \"There was an error deleting your event type\" })\n } finally {\n setFetching(false)\n }\n }\n\n const handleSave = async () => {\n setFetching(true)\n try {\n const result = await saveEventType()\n if (result?.data?.upsertBookableEventType?.result === \"success\") {\n showToast(`Event type '${bookableEventType.name}' was saved successfully`)\n setShowFlyout(false)\n } else {\n let errorMessage = \"Error\"\n if (result?.data?.upsertBookableEventType?.errors) {\n errorMessage += `: ${result.data.upsertBookableEventType.errors}`\n }\n showToast({ type: \"error\", content: errorMessage })\n }\n } catch (error) {\n console.error(\"Error saving event type:\", error)\n showToast({ type: \"error\", content: \"There was an error saving your event type\" })\n } finally {\n setFetching(false)\n }\n }\n\n return (\n <>\n <Flyout\n header={editingExistingEventType ? \"Edit Event Type\" : \"Create Event Type\"}\n visible={showFlyout}\n closeFlyout={() => setShowFlyout(false)}\n onSave={handleSave}\n saveEnabled={saveEnabled}\n footer={\n <div className={`flex w-full items-center ${editingExistingEventType ? \"justify-between\" : \"justify-end\"}`}>\n {editingExistingEventType && (\n <Button type=\"destructive\" onClick={() => setDeleteModalVisible(true)} disabled={fetching}>\n Delete\n </Button>\n )}\n <div className=\"flex gap-4\">\n <Button type=\"tertiary\" onClick={() => setShowFlyout(false)} disabled={fetching}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={handleSave} disabled={!saveEnabled || fetching}>\n Save\n </Button>\n </div>\n </div>\n }>\n <BookableEventTypeForm />\n </Flyout>\n\n {/* Delete Modal */}\n <AnimatedModal\n visible={deleteModalVisible}\n header=\"Delete Event Type\"\n confirmLabel=\"Delete\"\n confirmType=\"destructive\"\n hideModal={() => setDeleteModalVisible(false)}\n onSave={handleDelete}\n disabled={fetching}\n showFooter={true}\n actionButtonCopy=\"Delete\"\n cancelButtonCopy=\"Cancel\"\n cancelButtonType=\"tertiary\"\n actionButtonType=\"destructive\">\n <p>\n Are you sure you want to delete the event type <strong>{bookableEventType.name}</strong>? This action cannot\n be undone.\n </p>\n </AnimatedModal>\n </>\n )\n}\n\nexport default BookableEventTypeFlyout\n","import { PencilIcon, ArrowTopRightOnSquareIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { formatPrice } from \"../../utils/utils\"\n\nimport { useBookableEventTypes } from \"./BookableEventTypesContext\"\n\nconst EventTypeRow = ({ eventType, onEdit }) => (\n <tr className=\"border-b border-gray\">\n <td className=\"px-2 py-4 align-middle\">{eventType.name}</td>\n <td className=\"px-2 py-4 align-middle\">\n {eventType.amountCents > 0 ? formatPrice(eventType.amountCents) : \"Free\"}\n </td>\n <td className=\"px-2 py-4 align-middle\">{eventType.capacity || \"Unlimited\"}</td>\n <td className=\"px-2 py-4 align-middle\">{eventType.kind === \"in_person\" ? \"In-person\" : \"Virtual\"}</td>\n <td className=\"px-2 py-4 text-right align-middle\">\n <div className=\"flex justify-end gap-2\">\n {eventType.url && (\n <a\n href={eventType.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"rounded-full bg-gray-light p-2 text-xs text-gray-dark transition hover:bg-gray\"\n title=\"Open event page\">\n <ArrowTopRightOnSquareIcon className=\"h-4 w-4\" />\n </a>\n )}\n <button\n className=\"rounded-full bg-gray-light p-2 text-xs text-gray-dark transition hover:bg-gray\"\n onClick={() => onEdit(eventType)}>\n <PencilIcon className=\"h-4 w-4\" />\n </button>\n </div>\n </td>\n </tr>\n)\n\nconst BookableEventTypesTable = () => {\n const { bookableEventTypes, addEventType, editEventType } = useBookableEventTypes()\n\n if (bookableEventTypes.length === 0) {\n return (\n <ProfilePageEmptyStateBox onButtonClick={addEventType}>\n You don't have any event types yet.\n </ProfilePageEmptyStateBox>\n )\n }\n\n return (\n <div className=\"mt-6 w-full sm:mt-0\">\n <div className=\"overflow-hidden rounded-lg border bg-white\">\n <table className=\"w-full table-auto\">\n <thead className=\"bg-gray-light\">\n <tr>\n <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">Name</th>\n <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">Price</th>\n <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">\n Capacity\n </th>\n <th className=\"px-2 py-3 text-left text-xs font-medium uppercase tracking-wider text-gray-dark\">\n Location\n </th>\n <th className=\"px-2 py-3 text-right text-xs font-medium uppercase tracking-wider text-gray-dark\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n {bookableEventTypes.map((eventType) => (\n <EventTypeRow key={eventType.id} eventType={eventType} onEdit={editEventType} />\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"mt-4 flex justify-end\">\n <Button onClick={addEventType}>Add New Event Type</Button>\n </div>\n </div>\n )\n}\n\nexport default BookableEventTypesTable\n","import React, { useMemo } from \"react\"\nimport ReactSelect from \"react-select\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { selectStyling } from \"../../utils/utils\"\n\nconst ServiceSelector = ({ services, selectedServiceIds, onChange, className, disabled }) => {\n const serviceOptions = useMemo(\n () =>\n services.map((service) => ({\n value: service.id,\n label: service.name\n })),\n [services]\n )\n\n return (\n <div className={twMerge(className, disabled && \"pointer-events-none opacity-50\")}>\n <ReactSelect\n isMulti\n options={serviceOptions}\n value={serviceOptions.filter((option) => selectedServiceIds.includes(option.value))}\n onChange={(selected) => !disabled && onChange(selected ? selected.map((s) => s.value) : [])}\n styles={selectStyling()}\n placeholder=\"Select services...\"\n disabled={disabled}\n />\n </div>\n )\n}\n\nexport default ServiceSelector\n","import { InformationCircleIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React, { useEffect, useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { Input, InputWithLabel, Label, Select, CheckBox, ValidationError, Toggle } from \"../../components/shared/Inputs\"\nimport { Divider, Flyout } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport { defaultDiscountCode } from \"./DiscountCodesTable\"\nimport ServiceSelector from \"./ServiceSelector\"\n\nconst UPSERT_DISCOUNT_CODE = `\n mutation UpsertDiscountCode($input: UpsertDiscountCodeInput!) {\n upsertDiscountCode(input: $input) {\n discountCode {\n id\n code\n kind\n amountCents\n percent\n expiresAt\n maxRedemptions\n redemptionCount\n serviceIds\n applyToSpecificServices\n editable\n }\n errors\n result\n }\n }\n`\n\nconst DiscountCodeFlyout = ({ services, setDiscountCodes, visible, setVisible, editingCode, setEditingCode }) => {\n const [formData, setFormData] = useState(defaultDiscountCode)\n\n const [errors, setErrors] = useState({})\n const [, upsertDiscountCode] = useMutation(UPSERT_DISCOUNT_CODE)\n const { showToast } = useToast()\n\n useEffect(() => {\n if (editingCode) {\n setFormData({\n code: editingCode.code || \"\",\n kind: editingCode.kind || \"fixed\",\n amountCents: editingCode.amountCents || null,\n percent: editingCode.percent || null,\n expiresAt: editingCode.expiresAt ? new Date(editingCode.expiresAt) : null,\n maxRedemptions: editingCode.maxRedemptions || null,\n combinationLimit: editingCode.combinationLimit || 1,\n hasExpiration: !!editingCode.expiresAt,\n hasMaxRedemptions: !!editingCode.maxRedemptions,\n applyToSpecificServices: editingCode.applyToSpecificServices,\n serviceIds: editingCode.serviceIds || []\n })\n } else {\n setFormData(defaultDiscountCode)\n }\n }, [editingCode])\n\n const handleSubmit = async (e) => {\n e.preventDefault()\n const newErrors = {}\n\n if (formData.code && (formData.code.length < 8 || !/^[A-Z0-9]+$/.test(formData.code))) {\n newErrors.code = \"Code must be at least 8 characters and contain only uppercase letters and numbers\"\n }\n\n if (formData.kind === \"fixed\" && !formData.amountCents) {\n newErrors.amountCents = \"Please enter an amount for fixed discount\"\n }\n\n if (formData.kind === \"percentage\" && !formData.percent) {\n newErrors.percent = \"Please enter a percentage for percentage discount\"\n }\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors)\n return\n }\n\n // Clear errors before submitting\n setErrors({})\n const result = await upsertDiscountCode({\n input: {\n id: editingCode?.id,\n code: formData.code,\n kind: formData.kind,\n amountCents: formData.amountCents ? parseInt(formData.amountCents) : null,\n percent: formData.percent ? parseInt(formData.percent) : null,\n expiresAt: formData.expiresAt ? dayjs(formData.expiresAt).format(\"YYYY-MM-DDTHH:mm:ssZ\") : null,\n maxRedemptions: formData.maxRedemptions ? parseInt(formData.maxRedemptions) : null,\n applyToSpecificServices: formData.applyToSpecificServices,\n serviceIds: formData.serviceIds\n }\n })\n\n if (result.data?.upsertDiscountCode?.result === \"success\") {\n const newCode = result.data?.upsertDiscountCode?.discountCode\n newCode.id = Number(newCode.id)\n newCode.serviceIds = newCode.serviceIds.map(Number)\n setDiscountCodes((codes) => {\n const codeIndex = codes.findIndex((c) => c.id === newCode.id)\n if (codeIndex >= 0) {\n return codes.map((c) => (c.id === newCode.id ? newCode : c))\n } else {\n return [newCode, ...codes]\n }\n })\n showToast({ content: \"Coupon saved successfully\", type: \"success\" })\n } else {\n showToast({\n content: `Error: ${result.data?.upsertDiscountCode?.errors?.join(\", \") || result.error}`,\n type: \"error\"\n })\n return\n }\n\n setEditingCode(null)\n setVisible(false)\n }\n\n return (\n <Flyout\n visible={visible}\n closeFlyout={() => setVisible(false)}\n header={`${editingCode.id ? \"Edit\" : \"New\"} Coupon`}\n footer={\n <div className=\"flex w-full items-center justify-end\">\n <div className=\"flex gap-4\">\n <Button type=\"tertiary\" onClick={() => setVisible(false)}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={handleSubmit}>\n Save\n </Button>\n </div>\n </div>\n }>\n <form className=\"flex flex-col gap-4\">\n <div>\n <InputWithLabel\n label=\"Code\"\n value={formData.code}\n disabled={!editingCode.editable}\n onChange={(e) =>\n setFormData({\n ...formData,\n code: e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\")\n })\n }\n validationError={errors.code}\n />\n <Typography variant=\"micro\">Leave blank to generate a random code (recommended).</Typography>\n </div>\n\n <div className=\"flex gap-4\">\n <div className=\"w-1/2\">\n <Label>Type</Label>\n <Select\n value={formData.kind}\n onChange={(e) => {\n setFormData({ ...formData, kind: e.target.value, amountCents: null, percent: null })\n }}\n disabled={!editingCode.editable}\n options={[\n { label: \"Fixed Amount\", value: \"fixed\" },\n { label: \"Percentage\", value: \"percentage\" }\n ]}\n required\n />\n </div>\n\n {formData.kind === \"fixed\" ? (\n <div className=\"w-1/2\">\n <Label htmlFor=\"amountCents\">Amount</Label>\n <div className=\"relative flex w-20 items-center\">\n <span className=\"pointer-events-none absolute left-3 text-gray-dark\">$</span>\n <Input\n id=\"amountCents\"\n type=\"number\"\n min=\"1\"\n step=\"1\"\n className=\"pl-7\"\n disabled={!editingCode.editable}\n value={Math.round(Number(formData.amountCents) / 100) || \"\"}\n onChange={(e) => {\n setFormData({ ...formData, amountCents: parseInt(e.target.value * 100) })\n }}\n validationError={!!errors.amountCents}\n />\n </div>\n {errors.amountCents && <ValidationError>{errors.amountCents}</ValidationError>}\n </div>\n ) : (\n <div className=\"w-1/2\">\n <Label htmlFor=\"percent\">Percentage</Label>\n <div className=\"relative flex w-20 items-center\">\n <Input\n id=\"percent\"\n type=\"number\"\n min=\"0\"\n step=\"1\"\n max=\"100\"\n className=\"pr-7\"\n disabled={!editingCode.editable}\n value={Number(formData.percent) || \"\"}\n onChange={(e) => {\n setFormData({ ...formData, percent: Math.floor(Number(e.target.value)) })\n }}\n onKeyDown={(e) => {\n if (e.key === \".\" || e.key === \",\") {\n e.preventDefault()\n }\n }}\n validationError={!!errors.percent}\n />\n <span className=\"pointer-events-none absolute right-3 text-gray-dark\">%</span>\n </div>\n {errors.percent && <ValidationError>{errors.percent}</ValidationError>}\n </div>\n )}\n </div>\n <div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Toggle\n id=\"applyToSpecificServices\"\n disabled={!editingCode.editable}\n checked={formData.applyToSpecificServices || false}\n onChange={() => setFormData({ ...formData, applyToSpecificServices: !formData.applyToSpecificServices })}\n />\n <Label htmlFor=\"applyToSpecificServices\">Apply to specific services</Label>\n </div>\n {formData.applyToSpecificServices && (\n <ServiceSelector\n disabled={!editingCode.editable}\n className=\"mt-4\"\n services={services}\n selectedServiceIds={formData.serviceIds}\n onChange={(newIds) => setFormData({ ...formData, serviceIds: newIds })}\n />\n )}\n </div>\n {!editingCode.editable && (\n <div className=\"mt-4 flex items-center gap-2\">\n <InformationCircleIcon className=\"h-5 w-5 text-gray-dark\" />\n <Typography variant=\"micro\" className=\"text-gray-dark\">\n Coupons cannot be edited once they have been redeemed.\n </Typography>\n </div>\n )}\n <Divider className=\"my-4\" />\n <div>\n <div>\n <div>\n <CheckBox\n label=\"Add expiration date\"\n checked={formData.hasExpiration}\n onChange={() =>\n setFormData({\n ...formData,\n hasExpiration: !formData.hasExpiration,\n expiresAt: formData.hasExpiration ? null : formData.expiresAt\n })\n }\n />\n </div>\n {formData.hasExpiration && (\n <div className=\"mb-6 ml-8\">\n <Label>Redeem by</Label>\n <DatePicker\n selected={formData.expiresAt}\n onChange={(date) => setFormData({ ...formData, expiresAt: date })}\n />\n </div>\n )}\n </div>\n <div>\n <div>\n <CheckBox\n label=\"Add redemption limit\"\n checked={formData.hasMaxRedemptions}\n onChange={() =>\n setFormData({\n ...formData,\n hasMaxRedemptions: !formData.hasMaxRedemptions,\n maxRedemptions: formData.hasMaxRedemptions ? null : formData.maxRedemptions\n })\n }\n />\n </div>\n {formData.hasMaxRedemptions && (\n <div className=\"ml-8\">\n <InputWithLabel\n className=\"w-32\"\n label=\"Max redemptions\"\n type=\"number\"\n value={formData.maxRedemptions || \"\"}\n onChange={(e) => setFormData({ ...formData, maxRedemptions: e.target.value })}\n />\n <Typography variant=\"micro\">\n This limit applies across customers so it won't prevent a single customer from redeeming multiple\n times.\n </Typography>\n </div>\n )}\n </div>\n </div>\n </form>\n </Flyout>\n )\n}\n\nexport default DiscountCodeFlyout\n","import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { IconButton } from \"../../components/shared/Buttons\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nimport DiscountCodeFlyout from \"./DiscountCodeFlyout\"\n\nconst DELETE_DISCOUNT_CODE = `\n mutation DeleteDiscountCode($id: ID!) {\n deleteDiscountCode(id: $id) {\n result\n }\n }\n`\n\nexport const defaultDiscountCode = {\n code: \"\",\n kind: \"fixed\",\n amountCents: null,\n percent: null,\n expiresAt: null,\n maxRedemptions: null,\n combinationLimit: 1,\n hasExpiration: false,\n hasMaxRedemptions: false,\n applyToSpecificServices: false,\n serviceIds: []\n}\n\nconst DiscountCodesTable = ({\n discountCodes: discountCodesProp,\n services,\n editingCode,\n setEditingCode,\n discountCodesFlyoutVisible,\n setDiscountCodesFlyoutVisible\n}) => {\n const [discountCodes, setDiscountCodes] = useState(discountCodesProp)\n const [, deleteDiscountCode] = useMutation(DELETE_DISCOUNT_CODE)\n\n const { showToast } = useToast()\n\n const handleDelete = async (code) => {\n if (!window.confirm(\"Are you sure you want to delete this coupon?\")) return\n\n const result = await deleteDiscountCode({ id: code.id })\n\n if (result.data?.deleteDiscountCode?.result === \"success\") {\n setDiscountCodes((codes) => codes.filter((c) => c.id !== code.id))\n showToast({ content: \"Coupon deleted successfully\", type: \"success\" })\n } else {\n showToast({\n content: result.error || \"Error deleting coupon\",\n type: \"error\"\n })\n }\n }\n\n return (\n <div className=\"p-4\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-gray-light\">\n <th className=\"px-6 py-4 text-left font-semibold\">Code</th>\n <th className=\"px-6 py-4 text-left font-semibold\">Type</th>\n <th className=\"px-6 py-4 text-left font-semibold\">Amount</th>\n <th className=\"px-6 py-4 text-left font-semibold\">Expires</th>\n <th className=\"px-6 py-4 text-left font-semibold\">Usage</th>\n <th className=\"px-6 py-4 text-left font-semibold\">Actions</th>\n </tr>\n </thead>\n <tbody>\n {discountCodes.map((code) => (\n <tr key={code.id} className=\"border-b border-gray-light transition-colors hover:bg-gray-ultralight\">\n <td className=\"flex items-center gap-1 px-6 py-3\">\n <span>{code.code}</span>\n <IconButton\n Icon={DocumentDuplicateIcon}\n onClick={() => navigator.clipboard.writeText(code.code)}\n tooltip=\"Copy code\"\n />\n </td>\n <td className=\"px-6 py-4\">{code.kind}</td>\n <td className=\"px-6 py-4\">{code.amountCents ? `$${code.amountCents / 100}` : `${code.percent}%`}</td>\n <td className=\"px-6 py-4\">\n {code.expiresAt ? new Date(code.expiresAt).toLocaleDateString() : \"No expiration\"}\n </td>\n <td className=\"px-6 py-4\">\n {code.redemptionCount} / {code.maxRedemptions || \"∞\"}\n </td>\n <td className=\"px-6 py-3\">\n <div className=\"flex gap-2\">\n <IconButton\n Icon={PencilIcon}\n onClick={() => {\n setEditingCode(code)\n setDiscountCodesFlyoutVisible(true)\n }}\n tooltip=\"Edit\"\n />\n <IconButton\n Icon={TrashIcon}\n onClick={() => handleDelete(code)}\n className=\"text-red\"\n tooltip=\"Delete\"\n />\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n\n {editingCode && (\n <DiscountCodeFlyout\n services={services}\n setDiscountCodes={setDiscountCodes}\n visible={discountCodesFlyoutVisible}\n setVisible={setDiscountCodesFlyoutVisible}\n editingCode={editingCode}\n setEditingCode={setEditingCode}\n />\n )}\n </div>\n )\n}\n\nexport default DiscountCodesTable\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\"\nimport isEmpty from \"lodash/isEmpty\"\nimport uniqBy from \"lodash/uniqBy\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\nimport { v4 as uuidv4 } from \"uuid\"\n\nimport { Button, CloseButton } from \"../../components/shared/Buttons\"\nimport { FilePicker } from \"../../components/shared/FileStackWidgets\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport {\n CheckBox,\n InputWithLabel,\n Label,\n CurrencyInput,\n BASE_INPUT_CLASSNAMES,\n ToggleButtonGroup,\n ValidationError\n} from \"../../components/shared/Inputs\"\nimport { Banner, Flyout } from \"../../components/shared/Layout\"\nimport LoadingSpinner from \"../../components/shared/LoadingSpinner\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport QuillEditor from \"../../components/shared/QuillEditor\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatAvailableTimes, stripHTMLTags } from \"../../utils/utils\"\n\nimport AvailableTimes from \"./AvailableTimes\"\n\nconst UPSERT_SERVICE_MUTATION = `\n mutation UpsertService(\n $id: ID,\n $locationIds: [ID!],\n $name: String!,\n $description: String!,\n $timeLength: Int,\n $amountCents: Int!,\n $variationOf: ID,\n $variationsArray: [String!],\n $availableTimes: String,\n $availableTimesEnabled: Boolean,\n $package: Boolean,\n $numberOfSessions: Int,\n $addOn: Boolean,\n $allowedServiceIds: [ID!],\n $public: Boolean,\n $handle: String\n ) {\n upsertService(\n id: $id,\n locationIds: $locationIds,\n name: $name,\n description: $description,\n timeLength: $timeLength,\n amountCents: $amountCents,\n variationOf: $variationOf,\n variationsArray: $variationsArray,\n availableTimes: $availableTimes,\n availableTimesEnabled: $availableTimesEnabled\n package: $package,\n numberOfSessions: $numberOfSessions,\n addOn: $addOn,\n allowedServiceIds: $allowedServiceIds,\n public: $public,\n handle: $handle\n ) {\n result\n service {\n id\n name\n description\n timeLength\n amountCents\n locationIds\n availableTimes\n availableTimesEnabled\n package\n numberOfSessions\n addOn\n allowedServiceIds\n public\n variations { id timeLength amountCents }\n photoUrl\n }\n errors\n }\n }\n`\n\nconst REMOVE_SERVICE_MUTATION = `\n mutation RemoveService($serviceId: ID!) {\n removeService(serviceId: $serviceId) {\n result\n errors\n }\n }\n`\n\nconst UPDATE_SERVICE_PHOTO_MUTATION = `\n mutation UpdateServicePhoto($handle: String!, $serviceId: ID!) {\n updateServicePhoto(handle: $handle, serviceId: $serviceId) { result errors photoUrl }\n }\n`\n\nconst REMOVE_SERVICE_PHOTO_MUTATION = `\n mutation RemoveServicePhoto($serviceId: ID!) {\n removeServicePhoto(serviceId: $serviceId) { result errors }\n }\n`\n\nconst hasDuplicates = (array) => array.length !== new Set(array).size\n\nconst ServiceFlyout = ({\n service,\n setService,\n services,\n setServices,\n allServices,\n addOns,\n setAddOns,\n activeLocations,\n visible,\n closeFlyout,\n defaultAvailableTimes,\n setView,\n showToggle\n}) => {\n const { syncProfileStatus } = useProfileStatus()\n const [{ fetching: upsertMutationFetching }, upsertService] = useMutation(UPSERT_SERVICE_MUTATION)\n const [{ fetching: removeMutationFetching }, removeService] = useMutation(REMOVE_SERVICE_MUTATION)\n const [{ fetching: photoMutationFetching }, updatePhoto] = useMutation(UPDATE_SERVICE_PHOTO_MUTATION)\n const [{ fetching: removePhotoMutationFetching }, removePhoto] = useMutation(REMOVE_SERVICE_PHOTO_MUTATION)\n const { showToast } = useToast()\n const [validationErrors, setValidationErrors] = useState({})\n\n const fetching = upsertMutationFetching || removeMutationFetching\n const editingExistingService = !!service.id\n const lastActiveService = services.length <= 1 && !service.addOn\n const title = editingExistingService\n ? service.addOn\n ? \"Edit add-on\"\n : service.package\n ? \"Edit package\"\n : \"Edit service\"\n : service.addOn\n ? \"Create add-on\"\n : service.package\n ? \"Create package\"\n : \"Create service\"\n const deleteModalId = \"delete-service-modal\"\n const allVariations = [\n { id: service.id, amountCents: service.amountCents, timeLength: service.timeLength },\n ...service.variations\n ]\n const hasMultipleLocationsInSameCity =\n activeLocations && uniqBy(activeLocations, (location) => location.name).length < activeLocations.length\n\n const updateServices = (newService) => {\n const newServices = newService.addOn ? [...addOns] : [...services]\n const index = newServices.findIndex((s) => s.id === newService.id)\n if (index !== -1) {\n newServices[index] = newService\n } else {\n newServices.push(newService)\n }\n\n if (newService.addOn) {\n setAddOns(newServices)\n setView(\"Add-ons\")\n } else {\n setServices(newServices)\n setView(\"Services & Packages\")\n }\n }\n\n const onSave = () => {\n const errors = {}\n\n if (service.name.length < 2) {\n errors.name = \"Name is required\"\n }\n if (stripHTMLTags(service.description).length < 2) {\n errors.description = \"Description is required\"\n }\n if (service.timeLength < 1 && !service.addOn) {\n errors.timeLength = \"Session duration is required\"\n }\n if (service.amountCents < 1 && service.package) {\n errors.amountCents = \"Packages must have a price\"\n }\n if (service.numberOfSessions < 1 && service.package) {\n errors.numberOfSessions = \"Packages must have a number of sessions\"\n }\n if (\n hasDuplicates(allVariations.map((v) => v.amountCents)) ||\n hasDuplicates(allVariations.map((v) => v.timeLength))\n ) {\n errors.variations = \"Variations must be unique\"\n }\n\n if (Object.keys(errors).length > 0) {\n setValidationErrors(errors)\n return\n } else {\n setValidationErrors({})\n }\n\n upsertService({\n ...service,\n availableTimes: JSON.stringify(service.availableTimes),\n variationsArray: service.variations.map((v) => JSON.stringify(v))\n }).then((result) => {\n if (result?.data?.upsertService?.result === \"success\") {\n const newService = result.data.upsertService.service\n newService.variations = newService.variations.filter((v) => v.id !== newService.id) // variations returns the parent service as well\n newService.id = Number(newService.id)\n newService.locationIds = newService.locationIds.map((id) => Number(id))\n newService.allowedServiceIds = newService.allowedServiceIds.map((id) => Number(id))\n newService.availableTimes = formatAvailableTimes(newService.availableTimes)\n newService.smallWebpUrl = newService.photoUrl\n updateServices(newService)\n closeFlyout()\n syncProfileStatus()\n showToast(`Your ${service.package ? \"package\" : \"service\"} '${service.name}' was saved successfully`)\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error saving your service\"\n if (result.data?.upsertService?.errors) errorMessage += `: ${result.data.upsertService.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n setValidationErrors({})\n })\n }\n\n const onDelete = () => {\n removeService({ serviceId: service.id }).then((result) => {\n if (result?.data?.removeService?.result === \"success\") {\n if (service.addOn) {\n setAddOns(addOns.filter((s) => s.id !== service.id))\n } else {\n setServices(services.filter((s) => s.id !== service.id))\n }\n closeFlyout()\n setValidationErrors({})\n NiceModal.remove(deleteModalId)\n syncProfileStatus()\n showToast(\"Service has been deleted\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error deleting your service\"\n if (result.data?.removeService?.errors) errorMessage += `: ${result.data.removeService.errors}`\n showToast({ type: \"error\", content: errorMessage })\n }\n })\n }\n\n const onUploadDone = (res) => {\n if (service.id) {\n updatePhoto({\n handle: res.filesUploaded[0].handle,\n serviceId: service.id\n }).then((result) => {\n if (result?.data?.updateServicePhoto?.result === \"success\") {\n const newService = { ...service, smallWebpUrl: result.data.updateServicePhoto.photoUrl }\n setService(newService)\n updateServices(newService)\n showToast(\"Your photo has been saved.\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error saving your service photo. Please try again later or contact support.\"\n if (result.data?.updateServicePhoto?.errors) errorMessage += ` ${result.data.updateServicePhoto.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n } else {\n setService({ ...service, handle: res.filesUploaded[0].handle, smallWebpUrl: res.filesUploaded[0].url })\n }\n }\n\n const onPhotoDelete = () => {\n removePhoto({ serviceId: service.id }).then((result) => {\n if (result?.data?.removeServicePhoto?.result === \"success\") {\n const newService = { ...service, smallWebpUrl: null }\n setService(newService)\n updateServices(newService)\n showToast(\"Your photo has been removed.\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error removing your service photo. Please try again later or contact support.\"\n if (result.data?.removeServicePhoto?.errors) errorMessage += ` ${result.data.removeServicePhoto.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n return (\n <Flyout\n visible={visible}\n closeFlyout={() => {\n closeFlyout()\n setValidationErrors({})\n }}\n header={title}\n footer={\n <div className={`flex w-full items-center ${editingExistingService ? \"justify-between\" : \"justify-end\"}`}>\n {editingExistingService && (\n <Button\n type=\"destructive\"\n onClick={() => NiceModal.show(deleteModalId)}\n disabled={fetching || lastActiveService}>\n Delete\n </Button>\n )}\n <div className=\"flex gap-4\">\n <Button\n type=\"tertiary\"\n onClick={() => {\n closeFlyout()\n setValidationErrors({})\n }}\n disabled={fetching}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n Save\n </Button>\n </div>\n </div>\n }>\n <div\n className={`flex flex-col gap-6 overflow-y-scroll pl-1 ${\n service.state === \"disabled\" ? \"pointer-events-none opacity-25\" : \"\"\n }`}>\n {showToggle && !editingExistingService && (\n <ToggleButtonGroup\n value={service.package ? \"package\" : service.addOn ? \"add-on\" : \"service\"}\n onChange={(value) => {\n setService({\n ...service,\n ...{\n package: value === \"package\",\n addOn: value === \"add-on\",\n variations: value === \"package\" ? [] : service.variations,\n numberOfSessions: value === \"package\" ? service?.numberOfSessions || 5 : null\n }\n })\n }}\n options={[\n { label: \"Service\", value: \"service\" },\n { label: \"Package\", value: \"package\" },\n { label: \"Add-on\", value: \"add-on\" }\n ]}\n />\n )}\n <div>\n <div className=\"flex justify-between\">\n <Label htmlFor=\"photo\">Photo</Label>\n {!service.smallWebpUrl && <div className=\"text-sm text-gray-dark\">Optional</div>}\n </div>\n {photoMutationFetching || removePhotoMutationFetching ? (\n <LoadingSpinner className=\"py-0\" />\n ) : service.smallWebpUrl ? (\n <div className=\"flex items-center gap-4\">\n <img src={service.smallWebpUrl} alt=\"Service photo\" className=\"h-16 w-16 rounded-lg\" />\n <div>\n <FilePicker\n as=\"button\"\n className=\"font-bold text-teal\"\n onUploadDone={onUploadDone}\n disabled={photoMutationFetching}>\n Edit photo\n </FilePicker>\n </div>\n <button className=\"font-bold text-red\" onClick={onPhotoDelete}>\n Remove\n </button>\n </div>\n ) : (\n <FilePicker\n as=\"button\"\n onUploadDone={onUploadDone}\n disabled={photoMutationFetching}\n className={twMerge(BASE_INPUT_CLASSNAMES, \"text-teal\")}>\n + Upload photo\n </FilePicker>\n )}\n </div>\n <InputWithLabel\n label=\"Name\"\n value={service.name}\n onChange={(e) => setService({ ...service, name: e.target.value })}\n validationError={validationErrors.name}\n />\n <div>\n <Label htmlFor=\"description-input\">Description</Label>\n <QuillEditor\n id=\"description-input\"\n value={service.description}\n onChange={(content) => setService((prevService) => ({ ...prevService, description: content }))}\n validationError={validationErrors.description}\n />\n </div>\n {!service.addOn && (\n <>\n <div className=\"flex w-full gap-4\">\n <div className=\"flex-1\">\n <Label htmlFor=\"price-input\">Price</Label>\n <CurrencyInput\n id=\"price-input\"\n value={service.amountCents}\n onChange={(amountCents) => setService({ ...service, amountCents })}\n validationError={validationErrors.amountCents}\n />\n </div>\n <InputWithLabel\n className=\"flex-1\"\n type=\"number\"\n label=\"Session duration\"\n placeholder=\"__ minutes\"\n value={service.timeLength || \"\"}\n onChange={(e) => setService({ ...service, timeLength: Number(e.target.value) })}\n validationError={validationErrors.timeLength}\n />\n {service.variations.length > 0 && <CloseButton className=\"invisible flex-none\" />}\n </div>\n {service.variations.map((variation) => {\n const otherVariations = allVariations.filter((v) => v.id !== variation.id)\n const priceExists = otherVariations.map((v) => v.amountCents).includes(variation.amountCents)\n const durationExists = otherVariations.map((v) => v.timeLength).includes(variation.timeLength)\n\n return (\n <div key={variation.id} className=\"flex w-full gap-4\" data-test-id=\"adding-variation\">\n <div className=\"flex-1\">\n <Label htmlFor={`price-input-${variation.id}`}>Price</Label>\n <CurrencyInput\n validationError={priceExists ? \"Must be different from other prices\" : null}\n id={`price-input-${variation.id}`}\n value={variation.amountCents}\n onChange={(amountCents) => {\n const newVariations = [...service.variations]\n const newVariation = { ...variation, amountCents }\n const index = newVariations.findIndex((v) => v.id === newVariation.id)\n if (index !== -1) {\n newVariations[index] = newVariation\n } else {\n newVariations.push(newVariation)\n }\n setService({ ...service, variations: newVariations })\n setValidationErrors((prevErrors) => ({\n ...prevErrors,\n variations: null\n }))\n }}\n />\n </div>\n <InputWithLabel\n className=\"flex-1\"\n label=\"Session duration\"\n type=\"number\"\n placeholder=\"__ minutes\"\n value={variation.timeLength || \"\"}\n validationError={durationExists ? \"Must be different from other durations\" : null}\n onChange={(e) => {\n const newVariations = [...service.variations]\n const newVariation = { ...variation, timeLength: Number(e.target.value) }\n const index = newVariations.findIndex((v) => v.id === newVariation.id)\n if (index !== -1) {\n newVariations[index] = newVariation\n } else {\n newVariations.push(newVariation)\n }\n setService({ ...service, variations: newVariations })\n setValidationErrors((prevErrors) => ({\n ...prevErrors,\n variations: null\n }))\n }}\n />\n <CloseButton\n className=\"mt-[26px] flex-none\"\n onClick={() => {\n const newVariations = service.variations.filter((v) => v.id !== variation.id)\n setService({ ...service, variations: newVariations })\n }}\n />\n </div>\n )\n })}\n {validationErrors.variations && <ValidationError>{validationErrors.variations}</ValidationError>}\n {service.package ? (\n <InputWithLabel\n label=\"Number of sessions\"\n type=\"number\"\n value={service.numberOfSessions}\n className=\"w-1/2\"\n onChange={(e) => setService({ ...service, numberOfSessions: Number(e.target.value) })}\n validationError={validationErrors.numberOfSessions}\n />\n ) : (\n <Button\n type=\"secondary\"\n size=\"large\"\n disabled={\n service.variations.filter(\n (variation) =>\n typeof variation.id === \"string\" &&\n (variation.amountCents === null || variation.timeLength === null)\n ).length > 0\n }\n onClick={() => {\n setService({\n ...service,\n variations: [...service.variations, { id: uuidv4(), amountCents: null, timeLength: null }]\n })\n }}>\n Add another price and duration\n </Button>\n )}\n <div className=\"flex flex-col\">\n <CheckBox\n label=\"List this service publicly on my website\"\n checked={service.public}\n onChange={() => setService({ ...service, public: !service.public })}\n />\n </div>\n <div className=\"flex flex-col\">\n <Label>Locations where this is offered</Label>\n {activeLocations.map((location) => {\n var label =\n hasMultipleLocationsInSameCity && location.kind === \"office\" ? location.address : location.name\n\n if (!label) {\n label = location.name\n }\n return (\n <CheckBox\n key={location.id}\n label={label}\n checked={service.locationIds.includes(location.id)}\n onChange={() =>\n service.locationIds.includes(location.id)\n ? setService({\n ...service,\n locationIds: service.locationIds.filter((id) => id !== location.id)\n })\n : setService({ ...service, locationIds: [...service.locationIds, location.id] })\n }\n />\n )\n })}\n </div>\n <div className=\"flex flex-col\">\n <Label>Availability</Label>\n <div className=\"flex gap-1\">\n <CheckBox\n label=\"I only offer this on certain days/times\"\n checked={service.availableTimesEnabled}\n onChange={() =>\n setService((service) => ({\n ...service,\n availableTimesEnabled: !service.availableTimesEnabled,\n availableTimes: isEmpty(service.availableTimes) ? defaultAvailableTimes : service.availableTimes\n }))\n }\n />\n <QuestionMarkCircleIcon\n className=\"h-6 w-6 text-gray-dark\"\n data-tooltip-id=\"custom-availability-tooltip\"\n />\n <HealMeTooltip\n id=\"custom-availability-tooltip\"\n place=\"bottom\"\n content=\"Service availability is based on the location(s) you offer a service from, but you can customize this for each service.\"\n />\n </div>\n {service.availableTimesEnabled && (\n <div className=\"mt-4\">\n <AvailableTimes availableTimes={service.availableTimes} updateState={setService} />\n </div>\n )}\n </div>\n </>\n )}\n {service.addOn && (\n <>\n <div className=\"flex flex-col\">\n <CheckBox\n label=\"List this add-on publicly on my website\"\n checked={service.public}\n onChange={() => setService({ ...service, public: !service.public })}\n />\n </div>\n <div className=\"flex-1\">\n <Label htmlFor=\"price-input\">Price</Label>\n <CurrencyInput\n id=\"price-input\"\n value={service.amountCents}\n onChange={(amountCents) => setService({ ...service, amountCents })}\n />\n </div>\n <div className=\"flex flex-col\">\n <Label>Services this add-on applies to</Label>\n {allServices\n .filter((s) => !s.addOn && !s.package)\n .map((s) => (\n <CheckBox\n key={s.id}\n label={s.name}\n checked={service.allowedServiceIds.includes(s.id)}\n onChange={() =>\n service.allowedServiceIds.includes(s.id)\n ? setService({\n ...service,\n allowedServiceIds: service.allowedServiceIds.filter((id) => id !== s.id)\n })\n : setService({\n ...service,\n allowedServiceIds: [...service.allowedServiceIds, s.id]\n })\n }\n />\n ))}\n </div>\n </>\n )}\n </div>\n {editingExistingService && lastActiveService && (\n <Banner type=\"warning\">\n <b>Note:</b> This service can't be deleted since it is the only service you have.\n </Banner>\n )}\n <NewModal\n id={deleteModalId}\n header=\"Delete service now\"\n showFooter={true}\n onSave={onDelete}\n cancelButtonCopy=\"No, don't delete\"\n actionButtonType=\"destructive\"\n actionButtonCopy=\"Yes, delete\">\n <p>\n This will remove the service <b>{service.name}</b> from your profile.\n </p>\n </NewModal>\n </Flyout>\n )\n}\n\nexport default ServiceFlyout\n","import { ArrowTopRightOnSquareIcon } from \"@heroicons/react/20/solid\"\nimport React from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { usePractice } from \"../../contexts/PracticeContext\"\nimport { formatPrice } from \"../../utils/utils\"\nimport DisplayAvailableTimes from \"../ProfileEdit/DisplayAvailableTimes\"\n\nconst ServiceCard = ({ service, onClick, servicesPagesEnabled }) => {\n const amount = service.amountCents === 0 ? \"$0\" : formatPrice(service.amountCents)\n\n const { practice } = usePractice()\n\n const serviceUrl = `${practice.url}/services/${service.id}`\n\n return (\n <Box key={service.id} className=\"w-full\">\n {service.package && (\n <Badge type=\"info\" className=\"mb-2 inline-block\">\n Package\n </Badge>\n )}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"title\">{service.name}</Typography>\n {servicesPagesEnabled && !service.addOn && (\n <a href={serviceUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-gray-dark\">\n <ArrowTopRightOnSquareIcon className=\"h-5 w-5\" />\n </a>\n )}\n </div>\n <Button type=\"link\" onClick={onClick}>\n Edit\n </Button>\n </div>\n <Typography variant=\"smSubtitle\">\n {service.addOn ? amount : `${service.timeLength} min • ${amount}`}\n {service.package && ` (${service.numberOfSessions} sessions)`}\n </Typography>\n <div className=\"mt-4 flex justify-between gap-4\">\n <div\n className=\"wysiwyg-content text-sm\"\n dangerouslySetInnerHTML={{\n __html: service.description.substring(0, 190) + (service.description.length > 190 ? \"...\" : \"\")\n }}\n />\n {service.smallWebpUrl && (\n <img src={service.smallWebpUrl} alt={service.name} className=\"h-16 w-16 flex-none rounded-lg\" />\n )}\n </div>\n {service.availableTimesEnabled && (\n <DisplayAvailableTimes\n locationOrService={service}\n className=\"-m-8 mt-8 box-content rounded-b-xl bg-gray-ultralight p-8 text-sm\"\n />\n )}\n </Box>\n )\n}\n\nexport default ServiceCard\n","import { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState, useEffect } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DropdownButton from \"../../components/shared/DropdownButton\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, Divider, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { TabNavLink, UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport BookableEventTypeFlyout from \"../BookableEventTypes/BookableEventTypeFlyout\"\nimport { useBookableEventTypes } from \"../BookableEventTypes/BookableEventTypesContext\"\nimport { BookableEventTypesProvider } from \"../BookableEventTypes/BookableEventTypesContext\"\nimport BookableEventTypesTable from \"../BookableEventTypes/BookableEventTypesTable\"\nimport DiscountCodesTable from \"../DiscountCodes/DiscountCodesTable\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\nimport ServiceFlyout from \"../ProfileEdit/ServiceFlyout\"\n\nimport ServiceCard from \"./ServiceCard\"\n\nconst REORDER_SERVICES_MUTATION = `\n mutation ReorderServices($servicesArray: [String!]!) {\n reorderServices(servicesArray: $servicesArray) {\n result\n errors\n }\n }\n`\n\nconst maxNumberOfServices = 25\n\n// Map tab names to URL hash fragments\nconst tabToHashMap = {\n \"Services & Packages\": \"\",\n \"Add-ons\": \"addons\",\n Coupons: \"coupons\",\n \"Event Types\": \"events\"\n}\n\n// Map URL hash fragments to tab names\nconst hashToTabMap = {\n \"\": \"Services & Packages\",\n addons: \"Add-ons\",\n coupons: \"Coupons\",\n events: \"Event Types\"\n}\n\nconst Services = ({\n services: servicesProp,\n discountCodes,\n activeLocations,\n defaultAvailableTimes,\n discountCodesEnabled,\n servicesPagesEnabled,\n eventsEnabled\n}) => {\n const newServiceDefaults = {\n locationIds: [],\n amountCents: 0,\n variations: [],\n name: \"\",\n description: \"\",\n public: true\n }\n const newPackageDefaults = { ...newServiceDefaults, package: true, numberOfSessions: 5 }\n const newAddOnDefaults = { ...newServiceDefaults, addOn: true, allowedServiceIds: [] }\n const navItems =\n discountCodesEnabled && eventsEnabled\n ? [\"Services & Packages\", \"Add-ons\", \"Coupons\", \"Event Types\"]\n : discountCodesEnabled\n ? [\"Services & Packages\", \"Add-ons\", \"Coupons\"]\n : [\"Services & Packages\", \"Add-ons\"]\n\n const [services, setServices] = useState(servicesProp.filter((s) => !s.addOn))\n const [addOns, setAddOns] = useState(servicesProp.filter((s) => s.addOn))\n const [service, setService] = useState(newServiceDefaults)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n const [view, setView] = useState(navItems[0])\n const [showToggleInFlyout, setShowToggleInFlyout] = useState(false)\n const [discountCodesFlyoutVisible, setDiscountCodesFlyoutVisible] = useState(false)\n const [editingDiscountCode, setEditingDiscountCode] = useState({})\n\n const { showToast } = useToast()\n const isMobile = window.innerWidth < 768\n\n const [, reorderServices] = useMutation(REORDER_SERVICES_MUTATION)\n\n const { setShowFlyout: setEventTypeFlyoutVisible } = useBookableEventTypes()\n\n // Function to update view and URL hash\n const updateView = (newView) => {\n setView(newView)\n const hash = tabToHashMap[newView]\n window.location.hash = hash\n }\n\n // Initialize view based on URL hash on component mount\n useEffect(() => {\n const handleHashChange = () => {\n const hash = window.location.hash.replace(\"#\", \"\")\n const tabName = hashToTabMap[hash]\n\n // Only update if the tab exists in our navItems\n if (tabName && navItems.includes(tabName)) {\n setView(tabName)\n }\n }\n\n // Set initial view based on hash\n handleHashChange()\n }, [navItems])\n\n const addNewService = () => {\n setFlyoutVisible(true)\n setService(newServiceDefaults)\n updateView(\"Services & Packages\")\n }\n\n const addNewPackage = () => {\n setFlyoutVisible(true)\n setService(newPackageDefaults)\n updateView(\"Services & Packages\")\n }\n\n const addNewAddOn = () => {\n setFlyoutVisible(true)\n setService(newAddOnDefaults)\n updateView(\"Add-ons\")\n }\n\n const editService = (service) => {\n setService(service)\n setFlyoutVisible(true)\n if (service.addOn) {\n updateView(\"Add-ons\")\n } else {\n updateView(\"Services & Packages\")\n }\n }\n\n const addNewDiscountCode = () => {\n setEditingDiscountCode({ editable: true })\n setDiscountCodesFlyoutVisible(true)\n updateView(\"Coupons\")\n }\n\n const addNewEventType = () => {\n setEventTypeFlyoutVisible(true)\n updateView(\"Event Types\")\n }\n\n const unsortableServices =\n view === \"Services & Packages\" ? services.filter((service) => service.amountCents === 0) : addOns\n const sortableServices = view === \"Services & Packages\" ? services.filter((service) => service.amountCents > 0) : []\n\n const dropDownItems = [\n { label: \"Service\", onClick: addNewService },\n { label: \"Package\", onClick: addNewPackage },\n { label: \"Add-on\", onClick: addNewAddOn }\n ]\n\n if (eventsEnabled) {\n dropDownItems.push({ label: \"Event Type\", onClick: addNewEventType })\n }\n\n if (discountCodesEnabled) {\n dropDownItems.push({ label: \"Coupon\", onClick: addNewDiscountCode })\n }\n\n return (\n <>\n <div className=\"w-full\">\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n My Services\n </Typography>\n <Typography variant=\"subtitle\">Add or edit your services.</Typography>\n </div>\n </div>\n\n {activeLocations.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Services\">\n You need to <UnderlinedLink href=\"/portal/profile/locations\">add a location</UnderlinedLink> first in order\n to add services.\n </ProfilePageEmptyStateBox>\n ) : services.length === 0 ? (\n <ProfilePageEmptyStateBox\n title=\"Services\"\n onButtonClick={() => {\n setShowToggleInFlyout(true)\n addNewService()\n }}>\n Add a free service and any paid services you offer.\n </ProfilePageEmptyStateBox>\n ) : (\n <Box data-test-id=\"services\">\n <div className=\"flex items-center justify-between\">\n <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:mb-4\">\n {navItems.map((item) => (\n <TabNavLink key={item} active={view === item} onClick={() => updateView(item)}>\n {item}\n </TabNavLink>\n ))}\n </div>\n <div className=\"flex flex-row sm:hidden\" data-tooltip-id=\"disabled-tooltip\">\n <DropdownButton label=\"Add new\" items={dropDownItems} />\n </div>\n {services.length >= maxNumberOfServices && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content={`Note: You can add a maximum of ${maxNumberOfServices} services.`}\n />\n )}\n </div>\n {services.length < maxNumberOfServices && (\n <Button floatingInMobile={true} onClick={addNewService} className=\"hidden sm:block\">\n Add new\n </Button>\n )}\n {view === \"Coupons\" && (\n <DiscountCodesTable\n discountCodes={discountCodes}\n services={servicesProp}\n editingCode={editingDiscountCode}\n setEditingCode={setEditingDiscountCode}\n discountCodesFlyoutVisible={discountCodesFlyoutVisible}\n setDiscountCodesFlyoutVisible={setDiscountCodesFlyoutVisible}\n />\n )}\n {view === \"Event Types\" && <BookableEventTypesTable />}\n {view !== \"Coupons\" && view !== \"Event Types\" && (\n <div className=\"mt-6 flex max-w-[600px] flex-col gap-4 sm:mt-0\">\n {view === \"Add-ons\" && addOns.length === 0 && (\n <ProfilePageEmptyStateBox onButtonClick={addNewAddOn}>\n You don't have any add-ons yet.\n </ProfilePageEmptyStateBox>\n )}\n {unsortableServices.map((service) => (\n <ServiceCard\n key={service.id}\n service={service}\n onClick={() => editService(service)}\n servicesPagesEnabled={servicesPagesEnabled}\n />\n ))}\n {sortableServices.length > 0 && (\n <>\n {unsortableServices.length > 0 ? <Divider className=\"sm:my-4\" /> : null}\n {isMobile ? (\n <>\n {sortableServices.map((service) => (\n <div key={service.id} className=\"flex items-center\">\n <ServiceCard\n service={service}\n onClick={() => editService(service)}\n servicesPagesEnabled={servicesPagesEnabled}\n />\n </div>\n ))}\n </>\n ) : (\n <ReactSortable\n className=\"flex flex-col gap-4\"\n list={sortableServices}\n setList={(newPositions) => {\n const newServices = unsortableServices.concat(newPositions)\n if (JSON.stringify(newServices) !== JSON.stringify(services)) {\n const servicesArray = newServices.map((service, i) =>\n JSON.stringify({ id: service.id, position: i + 1 })\n )\n reorderServices({ servicesArray }).then((result) => {\n if (result?.data?.reorderServices?.result !== \"success\") {\n console.error(result) // eslint-disable-line no-console\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n })\n }\n })\n setServices(newServices)\n }\n }}>\n {sortableServices.map((service) => (\n <div key={service.id} className=\"flex cursor-grab items-center\">\n <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n <ServiceCard\n service={service}\n onClick={() => editService(service)}\n servicesPagesEnabled={servicesPagesEnabled}\n />\n </div>\n ))}\n </ReactSortable>\n )}\n </>\n )}\n </div>\n )}\n </Box>\n )}\n </div>\n\n <ServiceFlyout\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n service={service}\n setService={setService}\n services={services}\n allServices={services}\n setServices={setServices}\n addOns={addOns}\n setAddOns={setAddOns}\n activeLocations={activeLocations}\n defaultAvailableTimes={defaultAvailableTimes}\n setView={updateView}\n showToggle={showToggleInFlyout}\n />\n\n <BookableEventTypeFlyout />\n </>\n )\n}\n\nexport default function PortalServicesPage({ profileStatusData, ...props }) {\n return (\n <PracticeProvider>\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <BookableEventTypesProvider bookableEventTypes={props.bookableEventTypes}>\n <Services {...props} />\n </BookableEventTypesProvider>\n </ProfileEditProvider>\n </PracticeProvider>\n )\n}\n","import React from \"react\"\n\nimport { ToastProvider } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst ProfileEditProvider = ({ children }) => (\n <ToastProvider>\n <GraphQLProvider>{children}</GraphQLProvider>\n </ToastProvider>\n)\n\nexport default ProfileEditProvider\n","import React from \"react\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { TabNavLink } from \"../../../components/shared/Links\"\nimport ListBox from \"../../../components/shared/ListBox\"\nimport Typography from \"../../../components/shared/Typography\"\n\nconst NAV_ITEMS = [\n { title: \"Reminders\", path: \"/portal/settings/communication\" },\n { title: \"Custom content\", path: \"/portal/settings/communication/templates\" }\n]\n\nconst SELECT_ITEMS = NAV_ITEMS.map((item) => ({ value: item.path, label: `${item.title}` }))\n\nconst ProCommunicationSettingsView = ({ path, children }) => (\n <div>\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Communications\" />\n <Typography variant=\"h3\" as=\"h1\">\n Communications\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n Manage the timing, type, and content of your client reminders\n </Typography>\n <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n {NAV_ITEMS.map((item) => (\n <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n {item.title}\n </TabNavLink>\n ))}\n </div>\n <div className=\"mt-2 hidden sm:block\">\n <ListBox\n value={SELECT_ITEMS.find((item) => item.value === path)}\n onChange={(item) => {\n if (typeof window !== \"undefined\") window.location = item.value\n }}\n options={SELECT_ITEMS}\n buttonHint=\"(tap to navigate)\"\n />\n </div>\n <div className=\"mt-4 flex gap-4 pt-4 sm:mt-2\">{children}</div>\n </div>\n)\n\nexport default ProCommunicationSettingsView\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Select, CheckBox } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { commIntervals } from \"../../../utils/utils\"\n\nimport ProCommunicationSettingsProvider from \"./ProCommunicationSettingsProvider\"\nimport ProCommunicationSettingsView from \"./ProCommunicationSettingsView\"\n\nconst UPDATE_COMMUNICATION_SETTINGS = `\n mutation UpdateCommunicationSettings(\n $appointmentReminderEmailEnabled: Boolean,\n $appointmentReminderTextEnabled: Boolean,\n $appointmentEmailReminderMinutes: Int,\n $appointmentTextReminderMinutes: Int,\n $paymentPastDueEmailEnabled: Boolean,\n $paymentPastDueTextEnabled: Boolean,\n $paymentPastDueEmailMinutes: Int,\n $paymentPastDueTextMinutes: Int,\n ) {\n updateCommunicationSettings(\n appointmentReminderEmailEnabled: $appointmentReminderEmailEnabled,\n appointmentReminderTextEnabled: $appointmentReminderTextEnabled,\n appointmentEmailReminderMinutes: $appointmentEmailReminderMinutes,\n appointmentTextReminderMinutes: $appointmentTextReminderMinutes,\n paymentPastDueEmailEnabled: $paymentPastDueEmailEnabled,\n paymentPastDueTextEnabled: $paymentPastDueTextEnabled,\n paymentPastDueEmailMinutes: $paymentPastDueEmailMinutes,\n paymentPastDueTextMinutes: $paymentPastDueTextMinutes,\n ) {\n result\n error\n }\n }\n`\n\nconst CommunicationSettings = ({ communicationSettings, path }) => {\n const [, updateCommunicationSettings] = useMutation(UPDATE_COMMUNICATION_SETTINGS)\n\n const [settings, setSettings] = useState(communicationSettings)\n const [originalSettings, setOriginalSettings] = useState(communicationSettings)\n const { showToast } = useToast()\n\n const handleUpdate = (key) => (newValue) => {\n let update = newValue\n if (newValue.value) {\n update = newValue.value\n }\n setSettings((prevSettings) => ({ ...prevSettings, [key]: update }))\n }\n\n const handleSave = () => {\n updateCommunicationSettings(settings)\n .then((result) => {\n if (result.data?.updateCommunicationSettings?.result) {\n showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n setOriginalSettings(settings)\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updateCommunicationSettings?.error ||\n \"Please try again later.\"\n\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }\n\n if (Object.keys(settings).length === 0) {\n return null\n }\n\n const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n return (\n <ProCommunicationSettingsView path={path}>\n <div className=\"relative grid w-full grid-cols-2 gap-8 sm:grid-cols-1 sm:pb-[80px]\">\n <div className=\"absolute -top-28 z-10 flex w-full justify-end sm:fixed sm:bottom-[68px] sm:left-0 sm:top-[auto] sm:border-t sm:border-gray-light sm:bg-white sm:p-6\">\n <Button\n className=\"mr-4\"\n label=\"Cancel\"\n type=\"tertiary\"\n onClick={() => {\n setSettings(originalSettings)\n showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n }}>\n Cancel\n </Button>\n <Button type=\"primary\" disabled={!settingsChanged} onClick={handleSave}>\n Save\n </Button>\n </div>\n <div className=\"rounded-xl border border-gray-light\">\n <div className=\"p-8\">\n <Typography variant=\"h5\" as=\"h3\">\n Appointment reminders\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-6\">\n Heal.me will remind your clients before their next appointment with you.\n </Typography>\n </div>\n <div className=\"rounded-b-xl bg-gray-ultralight p-8\">\n <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Email\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n id=\"appt-email-reminder\"\n onChange={() =>\n handleUpdate(\"appointmentReminderEmailEnabled\")(!settings.appointmentReminderEmailEnabled)\n }\n checked={settings.appointmentReminderEmailEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.appointmentEmailReminderMinutes}\n onChange={(e) =>\n setSettings({ ...settings, appointmentEmailReminderMinutes: Number(e.target.value) })\n }\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none\">before</p>\n </div>\n <div className=\"flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Text\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n id=\"appt-text-reminder\"\n onChange={() =>\n handleUpdate(\"appointmentReminderTextEnabled\")(!settings.appointmentReminderTextEnabled)\n }\n checked={settings.appointmentReminderTextEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.appointmentTextReminderMinutes}\n onChange={(e) => setSettings({ ...settings, appointmentTextReminderMinutes: Number(e.target.value) })}\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none\">before</p>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-gray-light\">\n <div className=\"p-8\">\n <Typography variant=\"h5\" as=\"h3\">\n Payment reminders\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-6\">\n Heal.me will remind your clients if they haven’t paid for an appointment.\n </Typography>\n </div>\n <div className=\"rounded-b-xl bg-gray-ultralight p-8\">\n <div className=\"mb-2 flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Email\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n id=\"payment-email-reminder\"\n onChange={() => handleUpdate(\"paymentPastDueEmailEnabled\")(!settings.paymentPastDueEmailEnabled)}\n checked={settings.paymentPastDueEmailEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.paymentPastDueEmailMinutes}\n onChange={(e) => setSettings({ ...settings, paymentPastDueEmailMinutes: Number(e.target.value) })}\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none\">after</p>\n </div>\n <div className=\"flex flex-row flex-wrap items-center\">\n <CheckBox\n label=\"Text\"\n className=\"flex-none font-manrope text-[16px] font-normal leading-6\"\n id=\"payment-text-reminder\"\n onChange={() => handleUpdate(\"paymentPastDueTextEnabled\")(!settings.paymentPastDueTextEnabled)}\n checked={settings.paymentPastDueTextEnabled}\n />\n <div className=\"mb-2 ml-2 flex-none bg-white\">\n <Select\n options={commIntervals}\n value={settings.paymentPastDueTextMinutes}\n onChange={(e) => setSettings({ ...settings, paymentPastDueTextMinutes: Number(e.target.value) })}\n />\n </div>\n <p className=\"mb-2 ml-2 flex-none\">after</p>\n </div>\n </div>\n </div>\n </div>\n </ProCommunicationSettingsView>\n )\n}\n\nexport default function ProCommunicationSettings(props) {\n return (\n <ProCommunicationSettingsProvider>\n <CommunicationSettings {...props} />\n </ProCommunicationSettingsProvider>\n )\n}\n","import { DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { TextArea } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { useToast } from \"../../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../../utils/utils\"\n\nimport ProCommunicationSettingsProvider from \"./ProCommunicationSettingsProvider\"\nimport ProCommunicationSettingsView from \"./ProCommunicationSettingsView\"\n\nconst UPDATE_COMMUNICATION_SETTINGS = `\n mutation UpdateCommunicationSettings(\n $emailTemplates: [EmailTemplateInput!]!\n ) {\n updateCommunicationSettings(\n emailTemplates: $emailTemplates\n ) {\n result\n error\n }\n }\n`\n\nconst VariableDivider = () => <div className=\"mt-2 w-full border border-gray-light\" />\n\nconst VariableRow = ({ name, exampleValue }) => {\n const { showToast } = useToast()\n\n const handleCopy = async (text) => {\n await copyToClipboard(text, showToast, \"Copied\")\n }\n\n return (\n <div className=\"mt-2 flex flex-row items-center justify-between\">\n <div>\n <p className=\"font-normal text-gray-dark\">{name}</p>\n <p className=\"mt-1 font-bold\">{exampleValue}</p>\n </div>\n <DocumentDuplicateIcon\n className=\"h-7 w-7 flex-none cursor-pointer text-gray-dark\"\n onClick={() => handleCopy(name)}\n />\n </div>\n )\n}\n\nconst CommunicationTemplates = ({ emailTemplates, defaultEmailContent, practice, path }) => {\n const [, updateCommunicationSettings] = useMutation(UPDATE_COMMUNICATION_SETTINGS)\n const { showToast } = useToast()\n\n const initializeEmailTemplates = () =>\n defaultEmailContent.map((defaultEmailTemplate) => {\n const customEmailTemplate = emailTemplates.find((template) => template.name === defaultEmailTemplate.name)\n\n const content = customEmailTemplate?.customContent ?? defaultEmailTemplate.defaultContent\n\n return {\n name: defaultEmailTemplate.name,\n allowedVariables: defaultEmailTemplate.allowedVariables,\n content\n }\n })\n\n const originalEmailTemplates = initializeEmailTemplates()\n const [currentEmailTemplates, setCurrentEmailTemplates] = useState(originalEmailTemplates)\n\n const handleEmailTemplateUpdate = (emailName, content) => {\n setCurrentEmailTemplates((prevEmailTemplates) =>\n prevEmailTemplates.map((emailTemplate) => {\n if (emailTemplate.name === emailName) {\n return { ...emailTemplate, content }\n }\n return emailTemplate\n })\n )\n }\n\n const updatedEmailTemplates = currentEmailTemplates.filter((template) => {\n const originalTemplate = originalEmailTemplates.find((original) => original.name === template.name)\n return originalTemplate.content !== template.content\n })\n\n const emailTemplatesChanged = updatedEmailTemplates.length > 0\n\n const handleSave = () => {\n updateCommunicationSettings({ emailTemplates: updatedEmailTemplates })\n .then((result) => {\n if (result.data?.updateCommunicationSettings?.result) {\n showToast({ content: \"Email template updated successfully.\", timeout: 3000 })\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updateCommunicationSettings?.error ||\n \"Please try again later.\"\n\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }\n\n const handleCancel = () => {\n setCurrentEmailTemplates(originalEmailTemplates)\n showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n }\n\n const confirmationEmail = currentEmailTemplates.find((template) => template.name === \"appointment_confirmed\")\n const reminderEmail = currentEmailTemplates.find((template) => template.name === \"appointment_reminder\")\n\n return (\n <ProCommunicationSettingsView path={path}>\n <div className=\"relative sm:pb-[64px]\">\n <div className=\"absolute -top-28 z-10 flex w-full justify-end sm:fixed sm:bottom-[68px] sm:left-0 sm:top-[auto] sm:border-t sm:border-gray-light sm:bg-white sm:p-6\">\n <Button className=\"mr-4\" label=\"Cancel\" type=\"tertiary\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button type=\"primary\" disabled={!emailTemplatesChanged} onClick={handleSave}>\n Save\n </Button>\n </div>\n <div className=\"mb-5\">\n <div className=\"grid grid-cols-2 gap-6 sm:grid-cols-1 \">\n <div className=\"flex flex-col\">\n <div className=\"rounded-lg border border-gray p-8\">\n <Typography variant=\"h5\" as=\"h3\">\n Confirmations\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-4\">\n You can add a custom message to the emails that are sent to clients when they book appointments.\n </Typography>\n <TextArea\n className=\"mt-4 text-sm\"\n value={confirmationEmail.content}\n key={confirmationEmail.name}\n id=\"custom-email-content\"\n placeholder=\"Type in your message here...\"\n onChange={(event) => {\n handleEmailTemplateUpdate(confirmationEmail.name, event.target.value)\n }}\n />\n </div>\n <div className=\"mt-8 rounded-lg border border-gray p-8\">\n <Typography variant=\"h5\" as=\"h3\">\n Reminders\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-4\">\n You can add a custom message to the emails that are sent to clients before their appointments.\n </Typography>\n <TextArea\n className=\"mt-4 text-sm\"\n value={reminderEmail.content}\n key={reminderEmail.name}\n placeholder=\"Type in your message here...\"\n onChange={(event) => {\n handleEmailTemplateUpdate(reminderEmail.name, event.target.value)\n }}\n />\n </div>\n </div>\n <div className=\"rounded-lg bg-gray-ultralight p-8\">\n <div className=\"grid grid-cols-2 gap-6 2xl:grid-cols-1\">\n <div>\n <p className=\"font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n Client Variables\n </p>\n <VariableDivider />\n <VariableRow exampleValue=\"Stove\" name=\"{{client.first_name}}\" />\n <VariableDivider />\n <VariableRow exampleValue=\"Doran\" name=\"{{client.last_name}}\" />\n <VariableDivider />\n <VariableRow exampleValue=\"Steve Doran\" name=\"{{client.display_name}}\" />\n <VariableDivider />\n <VariableRow exampleValue=\"the.stove_pipe@gmail.com\" name=\"{{client.email}}\" />\n <VariableDivider />\n <VariableRow exampleValue=\"(703) 123-4567\" name=\"{{client.phone}}\" />\n <p className=\"mt-6 font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n Appt. Variables\n </p>\n <VariableDivider />\n <VariableRow exampleValue=\"August 10, 2023 @ 3:00pm\" name=\"{{appointment.date_and_time}}\" />\n <VariableDivider />\n <VariableRow exampleValue=\"Reiki for beginners\" name=\"{{appointment.service_name}}\" />\n </div>\n <div>\n <p className=\"font-manrope text-[12px] font-bold uppercase tracking-wider text-gray-dark\">\n Practice Variables\n </p>\n <VariableDivider />\n <VariableRow exampleValue={practice.firstName} name=\"{{practitioner.first_name}}\" />\n <VariableDivider />\n <VariableRow exampleValue={practice.lastName} name=\"{{practitioner.last_name}}\" />\n <VariableDivider />\n <VariableRow\n exampleValue={practice.firstName + \" \" + practice.lastName}\n name=\"{{practitioner.full_name}}\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ProCommunicationSettingsView>\n )\n}\n\nexport default function ProCommunicationTemplates(props) {\n return (\n <ProCommunicationSettingsProvider>\n <CommunicationTemplates {...props} />\n </ProCommunicationSettingsProvider>\n )\n}\n","import { ExclamationCircleIcon, VideoCameraIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Banner } from \"../../components/shared/Layout\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst DEACTIVATE_VIDEO_CONFERENCING = `\n mutation DeactivateVideoConferencing($provider: String!) {\n deactivateVideoConferencing(provider: $provider) {\n result\n errors\n }\n }\n`\n\nconst ConferencingSettings = ({ zoom }) => {\n const [, deactivateVideoConferencing] = useMutation(DEACTIVATE_VIDEO_CONFERENCING)\n const { showToast } = useToast()\n const [showDeactivateModal, setShowDeactivateModal] = useState(false)\n\n const handleDeactivate = async () => {\n const result = await deactivateVideoConferencing({ provider: \"zoom\" })\n\n if (result.data?.deactivateVideoConferencing?.result === \"success\") {\n showToast(\"Successfully disconnected from Zoom\")\n window.location.reload()\n } else {\n const error = result.data?.deactivateVideoConferencing?.errors?.[0] || \"Something went wrong\"\n showToast({ type: \"error\", content: error })\n }\n }\n\n return (\n <div>\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Video Conferencing\" />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Video Conferencing\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n Connect your video conferencing account to automatically create meeting links for virtual appointments.\n </Typography>\n </div>\n\n <div className=\"w-full max-w-[750px]\">\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n <VideoCameraIcon className=\"h-12 w-12\" />\n </div>\n\n {zoom && zoom.connected ? (\n <>\n <Typography variant=\"h5\" className=\"mb-2\">\n {zoom.erroredAt ? (\n <div className=\"flex items-center gap-2\">\n <span>Disconnected from Zoom</span>\n <ExclamationCircleIcon className=\"h-6 w-6 text-red\" />\n </div>\n ) : (\n <span className=\"text-green\">Connected to Zoom</span>\n )}\n </Typography>\n <Typography variant=\"body\" className=\"mb-4 text-gray-dark\">\n Account: {zoom.accountName} ({zoom.accountEmail})\n </Typography>\n {zoom.erroredAt && (\n <Banner type=\"error\" className=\"mb-2\">\n Heal.me no longer has access to your Zoom account. Please reconnect to continue using the Zoom\n integration.\n </Banner>\n )}\n {zoom.erroredAt ? (\n <ButtonLink href=\"/portal/settings/conferencing/zoom/authorize\" className=\"mt-4 w-fit\">\n Connect Zoom\n </ButtonLink>\n ) : (\n <ButtonLink onClick={() => setShowDeactivateModal(true)} variant=\"secondary\" className=\"mt-4 w-fit\">\n Disconnect Zoom\n </ButtonLink>\n )}\n </>\n ) : (\n <>\n <Typography variant=\"h5\" className=\"mb-2\">\n Connect to Zoom\n </Typography>\n <Typography variant=\"body\" className=\"mb-4 text-gray-dark\">\n Connect your Zoom account to automatically create meeting links.\n </Typography>\n <ButtonLink href=\"/portal/settings/conferencing/zoom/authorize\" className=\"mt-4 w-fit\">\n Connect Zoom\n </ButtonLink>\n </>\n )}\n </div>\n </div>\n\n <AnimatedModal\n visible={showDeactivateModal}\n hideModal={() => setShowDeactivateModal(false)}\n header=\"Disconnect Zoom\"\n showFooter={true}\n actionButtonCopy=\"Yes, disconnect\"\n actionButtonType=\"destructive\"\n onSave={handleDeactivate}>\n <Typography variant=\"body\">\n Are you sure you want to disconnect your Zoom account? This will remove automatic meeting creation for virtual\n appointments.\n </Typography>\n </AnimatedModal>\n </div>\n )\n}\n\nexport default function ConferencingSettingsPage(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <ConferencingSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import { gql } from \"@urql/core\"\nimport React, { useState, useEffect } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Toggle } from \"../../../components/shared/Inputs\"\nimport LoadingSpinner from \"../../../components/shared/LoadingSpinner\"\nimport { AnimatedModal } from \"../../../components/shared/Modal\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst DISCONNECT_PAYPAL_MUTATION = gql`\n mutation DisconnectPaypalAccount {\n disconnectPaypalAccount {\n result\n errors\n }\n }\n`\n\nconst UPDATE_PAYPAL_SETTINGS_MUTATION = gql`\n mutation UpdatePaypalSettings($paypalActive: Boolean!, $venmoActive: Boolean!) {\n updatePaypalSettings(paypalActive: $paypalActive, venmoActive: $venmoActive) {\n result\n errors\n }\n }\n`\n\nconst CHECK_PAYPAL_SELLER_STATUS = gql`\n mutation CheckPaypalSellerStatus {\n checkPaypalSellerStatus {\n result\n errors\n status {\n isOnboardingComplete\n paymentsReceivable\n primaryEmailConfirmed\n }\n }\n }\n`\n\nconst PaypalSettingsComponent = ({ paypalInfo }) => {\n const { showToast } = useToast()\n\n const [paypalConnected, setPaypalConnected] = useState(paypalInfo.paypalConnected)\n const [showDisconnectModal, setShowDisconnectModal] = useState(false)\n const [paypalActive, setPaypalActive] = useState(paypalInfo.paypalActive)\n const [venmoActive, setVenmoActive] = useState(paypalInfo.venmoActive)\n const [sellerStatus, setSellerStatus] = useState(paypalInfo.sellerStatus)\n\n const [, disconnectPaypal] = useMutation(DISCONNECT_PAYPAL_MUTATION)\n const [, updatePaypalSettings] = useMutation(UPDATE_PAYPAL_SETTINGS_MUTATION)\n const [{ fetching: fetchingCheckStatus }, checkStatus] = useMutation(CHECK_PAYPAL_SELLER_STATUS)\n\n const handleUpdateSettings = async (newPaypalActive, newVenmoActive) => {\n const { data } = await updatePaypalSettings({\n paypalActive: newPaypalActive,\n venmoActive: newVenmoActive\n })\n\n if (data?.updatePaypalSettings?.result === \"success\") {\n showToast(\"Settings updated successfully\", \"success\")\n setPaypalActive(newPaypalActive)\n setVenmoActive(newVenmoActive)\n } else {\n showToast(data?.updatePaypalSettings?.errors?.[0] || \"Failed to update settings\", \"error\")\n }\n }\n\n const handleDisconnect = () => {\n disconnectPaypal().then((res) => {\n if (res.data?.disconnectPaypalAccount?.result === \"success\") {\n showToast(\"PayPal account disconnected successfully\", \"success\")\n setPaypalConnected(false)\n } else {\n showToast(res.data?.disconnectPaypalAccount?.errors[0], \"error\")\n }\n })\n setShowDisconnectModal(false)\n }\n\n const checkSellerStatus = async () => {\n const { data } = await checkStatus()\n\n if (data?.checkPaypalSellerStatus?.result === \"success\") {\n setSellerStatus(data.checkPaypalSellerStatus.status)\n } else {\n showToast(data?.checkPaypalSellerStatus?.errors?.[0] || \"Failed to check status\", \"error\")\n }\n }\n\n useEffect(() => {\n if (paypalConnected && !sellerStatus?.isOnboardingComplete) {\n checkSellerStatus()\n }\n }, [paypalConnected])\n\n const renderOnboardingStatus = () => {\n if (!sellerStatus) return null\n\n return (\n <div className=\"mt-4 flex flex-col gap-4\">\n {!sellerStatus.paymentsReceivable && (\n <div className=\"rounded-lg border border-red bg-red-light p-4\">\n <Typography variant=\"body\" className=\"text-red\">\n Attention: You currently cannot receive payments due to restriction on your PayPal account. Please reach\n out to PayPal Customer Support or connect to{\" \"}\n <a target=\"_blank\" rel=\"noopener noreferrer\" className=\"underline\" href=\"https://www.paypal.com\">\n https://www.paypal.com\n </a>{\" \"}\n for more information.\n </Typography>\n </div>\n )}\n\n {!sellerStatus.primaryEmailConfirmed && (\n <div className=\"rounded-lg border border-red bg-red-light p-4\">\n <Typography variant=\"body\" className=\"text-red\">\n Attention: Please confirm your email address on{\" \"}\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline\"\n href=\"https://www.paypal.com/businessprofile/settings\">\n https://www.paypal.com/businessprofile/settings\n </a>{\" \"}\n in order to receive payments! You currently cannot receive payments.\n </Typography>\n </div>\n )}\n\n <div className=\"flex flex-row items-center gap-2\">\n <Button type=\"secondary\" onClick={checkSellerStatus} disabled={fetchingCheckStatus} className=\"w-fit\">\n Check Onboarding Status\n </Button>\n {fetchingCheckStatus && <LoadingSpinner className=\"ml-2 inline py-0\" spinnerClassName=\"h-4 w-4\" />}\n </div>\n </div>\n )\n }\n\n return (\n <div>\n <Breadcrumbs\n links={[\n { href: \"/portal/settings\", text: \"Settings\" },\n { href: \"/portal/settings/banking\", text: \"Payments\" }\n ]}\n activePage=\"PayPal\"\n />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n PayPal\n </Typography>\n </div>\n <div className=\"flex w-1/2 flex-col gap-4 sm:w-full\">\n <div className=\"flex flex-row justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\">{paypalConnected ? \"PayPal Connected\" : \"Not Connected\"}</Typography>\n <div className=\"flex flex-col gap-1\">\n {paypalConnected ? (\n <div className=\"flex flex-col\">\n <Typography variant=\"body\">Merchant ID: {paypalInfo.merchantId}</Typography>\n <Typography variant=\"body\">Clients will be able to pay using PayPal.</Typography>\n </div>\n ) : (\n <Typography variant=\"body\">Connect your PayPal account to start accepting payments.</Typography>\n )}\n </div>\n </div>\n <div className=\"flex flex-col gap-4\">\n <a href=\"/portal/settings/banking/paypal/link\">\n <Button type={paypalConnected ? \"tertiary\" : \"primary\"} className=\"w-full\">\n {paypalConnected ? \"Manage\" : \"Connect\"}\n </Button>\n </a>\n {paypalConnected && (\n <Button type=\"warning\" onClick={() => setShowDisconnectModal(true)}>\n Disconnect\n </Button>\n )}\n </div>\n </div>\n\n {paypalConnected && !sellerStatus?.isOnboardingComplete && renderOnboardingStatus()}\n\n {paypalConnected && sellerStatus?.isOnboardingComplete && (\n <>\n <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\">Accept PayPal Payments</Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Allow clients to pay using PayPal\n </Typography>\n <Typography variant=\"body\" className=\"mt-2 text-sm italic text-gray-dark\">\n This option only controls if it appears as an option for your clients at Heal.me, but you need to have\n it enabled in your PayPal account.\n </Typography>\n </div>\n <Toggle checked={paypalActive} onChange={() => handleUpdateSettings(!paypalActive, venmoActive)} />\n </div>\n\n <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\">Accept Venmo Payments</Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Allow clients to pay using Venmo\n </Typography>\n <Typography variant=\"body\" className=\"mt-2 text-sm italic text-gray-dark\">\n This option only controls if it appears as an option for your clients at Heal.me, but you need to have\n it enabled in your PayPal account.\n </Typography>\n </div>\n <Toggle checked={venmoActive} onChange={() => handleUpdateSettings(paypalActive, !venmoActive)} />\n </div>\n </>\n )}\n </div>\n\n <AnimatedModal\n visible={showDisconnectModal}\n hideModal={() => setShowDisconnectModal(false)}\n header=\"Disconnect PayPal\"\n showFooter\n actionButtonCopy=\"Disconnect\"\n actionButtonType=\"warning\"\n onSave={handleDisconnect}>\n <div className=\"flex flex-col gap-4\">\n <Typography variant=\"body\">\n Disconnecting your PayPal account will prevent you from offering PayPal services and products on your\n website. Do you wish to continue?\n </Typography>\n </div>\n </AnimatedModal>\n </div>\n )\n}\n\nexport default function PaypalSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <PaypalSettingsComponent {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import React from \"react\"\n\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { EditableValue } from \"../../../components/shared/Inputs\"\nimport { Banner } from \"../../../components/shared/Layout\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst SquareSettings = ({ squareInfo }) => {\n const { showToast } = useToast()\n\n if (squareInfo.message) {\n showToast(squareInfo.message)\n }\n if (squareInfo.error) {\n showToast({\n content: squareInfo.error,\n type: \"error\",\n duration: 5000\n })\n }\n\n return (\n <div>\n <Breadcrumbs\n links={[\n { href: \"/portal/settings\", text: \"Settings\" },\n { href: \"/portal/settings/banking\", text: \"Payments\" }\n ]}\n activePage=\"Square\"\n />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Square\n </Typography>\n </div>\n <div className=\"w-1/2 rounded-xl border border-gray-light p-8 sm:w-full\">\n {squareInfo.erroredAt && (\n <Banner type=\"error\" className=\"mb-6\">\n Heal.me no longer has access to your Square account. Please reconnect to continue using the Square\n integration.\n </Banner>\n )}\n <div className=\"flex justify-between\">\n <div className=\"flex flex-col\">\n <EditableValue\n value=\"Client payments will be made to this account.\"\n editable={false}\n name={squareInfo.displayName}\n />\n </div>\n <a href=\"/portal/settings/banking/square/authorize\">\n <Button type={squareInfo.squareConnected ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n {squareInfo.squareConnected ? \"Manage\" : \"Connect\"}\n </Button>\n </a>\n </div>\n </div>\n </div>\n )\n}\n\nexport default function SquarePaymentsSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <SquareSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import React from \"react\"\n\nimport Badge from \"../../../components/shared/Badge\"\nimport Breadcrumbs from \"../../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { EditableValue } from \"../../../components/shared/Inputs\"\nimport Typography from \"../../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../../providers/GraphQLProvider\"\n\nconst StripeSettings = ({ stripeInfo }) => {\n const { showToast } = useToast()\n\n if (stripeInfo.connectionError) {\n showToast(`Issue connecting to Stripe: ${stripeInfo.connectionError}`)\n }\n\n return (\n <div>\n <Breadcrumbs\n links={[\n { href: \"/portal/settings\", text: \"Settings\" },\n { href: \"/portal/settings/banking\", text: \"Payments\" }\n ]}\n activePage=\"Stripe\"\n />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Stripe\n </Typography>\n </div>\n <div className=\"flex w-1/2 flex-row justify-between rounded-xl border border-gray-light p-8 sm:w-full\">\n <div className=\"flex flex-col\">\n <EditableValue\n value=\"Client payments will be made to this account.\"\n editable={false}\n name={stripeInfo.displayName}\n />\n {stripeInfo.requirementsDue ||\n (stripeInfo.requirementsPastDue && (\n <Badge type=\"warning\" className=\"my-2\">\n Check Stripe account for missing requirements\n </Badge>\n ))}\n </div>\n <a href=\"/portal/settings/banking/link\">\n <Button type={stripeInfo.operational ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n {stripeInfo.operational ? \"Manage\" : \"Connect\"}\n </Button>\n </a>\n </div>\n </div>\n )\n}\n\nexport default function StripePaymentsSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <StripeSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, Select, TextArea } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast, ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst UPDATE_BOOKING_SETTINGS = `\n mutation UpdateBookingSettings(\n $appointmentBufferTime: Int,\n $instantClientApproval: Boolean,\n $appointmentLeadTime: Int,\n $startTimeIncrement: Int,\n $requireClientCcToBook: Boolean,\n $chargeClientCcAtBooking: Boolean,\n $cancellationPolicy: String,\n ) {\n updateBookingSettings(\n appointmentBufferTime: $appointmentBufferTime,\n instantClientApproval: $instantClientApproval,\n appointmentLeadTime: $appointmentLeadTime,\n startTimeIncrement: $startTimeIncrement,\n requireClientCcToBook: $requireClientCcToBook,\n chargeClientCcAtBooking: $chargeClientCcAtBooking,\n cancellationPolicy: $cancellationPolicy,\n ) {\n result\n error\n }\n }\n`\n\nconst options = [\n { value: true, label: \"Yes (recommended)\" },\n { value: false, label: \"No (approval required)\" }\n]\n\nconst bufferIntervals = [\n { value: 0, label: \"None\" },\n { value: 5, label: \"5 minutes\" },\n { value: 10, label: \"10 minutes\" },\n { value: 15, label: \"15 minutes (recommended)\" },\n { value: 20, label: \"20 minutes\" },\n { value: 30, label: \"30 minutes\" },\n { value: 45, label: \"45 minutes\" },\n { value: 60, label: \"1 hour\" },\n { value: 90, label: \"1.5 hours\" },\n { value: 120, label: \"2 hours\" },\n { value: 150, label: \"2.5 hours\" },\n { value: 180, label: \"3 hours\" }\n]\n\nconst leadTimes = [\n { value: 0, label: \"No lead time\" },\n { value: 15, label: \"15 minutes in advance\" },\n { value: 30, label: \"30 minutes in advance\" },\n { value: 60, label: \"1 hour in advance\" },\n { value: 180, label: \"3 hours in advance\" },\n { value: 480, label: \"8 hours in advance\" },\n { value: 720, label: \"12 hours in advance\" },\n { value: 1440, label: \"1 day in advance (recommended)\" },\n { value: 2880, label: \"2 days in advance\" },\n { value: 4320, label: \"3 days in advance\" },\n { value: 10080, label: \"1 week in advance\" }\n]\n\nconst startTimeIncrements = [\n { value: 15, label: \"15 minutes\" },\n { value: 30, label: \"30 minutes (recommended)\" },\n { value: 60, label: \"60 minutes\" },\n { value: 75, label: \"75 minutes\" },\n { value: 90, label: \"1.5 hours\" },\n { value: 120, label: \"2 hours\" },\n { value: 150, label: \"2.5 hours\" },\n { value: 180, label: \"3 hours\" },\n { value: 240, label: \"4 hours\" },\n { value: 300, label: \"5 hours\" },\n { value: 360, label: \"6 hours\" }\n]\n\nconst BookingSettings = ({\n bookingSettings,\n requireCcEnabled,\n hasPaymentProvider,\n hasOffline,\n cancellationPolicyEnabled\n}) => {\n const [, updateBookingSettings] = useMutation(UPDATE_BOOKING_SETTINGS)\n\n const [settings, setSettings] = useState(bookingSettings)\n const [originalSettings, setOriginalSettings] = useState(bookingSettings)\n\n const { showToast } = useToast()\n\n const handleSave = () => {\n updateBookingSettings(settings)\n .then((result) => {\n if (result.data?.updateBookingSettings?.result) {\n showToast({ content: \"Settings updated successfully.\", timeout: 3000 })\n setOriginalSettings(settings)\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updateBookingSettings?.error ||\n \"Please try again later.\"\n\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }\n\n if (Object.keys(settings).length === 0) {\n return null\n }\n\n const settingsChanged = JSON.stringify(settings) !== JSON.stringify(originalSettings)\n\n return (\n <div>\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Booking\" />\n <div className=\"mb-4 flex flex-row justify-between\">\n <div className=\"flex flex-col\">\n <Typography as=\"h2\" variant=\"h3\">\n Booking\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n Auto-accept new bookings, edit the time between appointments, and more.\n </Typography>\n </div>\n\n <div className=\"mr-2\">\n <Button\n className=\"mr-4\"\n type=\"tertiary\"\n onClick={() => {\n setSettings(originalSettings)\n showToast({ content: \"Your changes have been discarded.\", timeout: 3000 })\n }}>\n Cancel\n </Button>\n <Button type=\"primary\" disabled={!settingsChanged} onClick={handleSave}>\n Save\n </Button>\n </div>\n </div>\n <Box className=\"w-1/2 sm:w-full\">\n {requireCcEnabled && (\n <div className=\"mb-6\">\n <div className=\"flex flex-col\">\n <Label htmlFor=\"require-booking\" className=\"mb-2 text-base\">\n Require credit card when a client books:\n </Label>\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Booking free services will not require a credit card.\n </Typography>\n\n {hasPaymentProvider ? (\n <div>\n <div className=\"mb-4 flex flex-row gap-4\">\n <RadioWithLabel\n id=\"require-cc-yes\"\n value={true}\n name=\"require-cc\"\n label=\"Yes\"\n checked={settings.requireClientCcToBook}\n onChange={() => setSettings({ ...settings, requireClientCcToBook: true })}\n />\n <RadioWithLabel\n value={false}\n id=\"require-cc-no\"\n name=\"require-cc\"\n label=\"No (recommended)\"\n checked={!settings.requireClientCcToBook}\n onChange={() =>\n setSettings({ ...settings, requireClientCcToBook: false, chargeClientCcAtBooking: false })\n }\n />\n </div>\n {hasOffline && (\n <Typography variant=\"subtitle\" className=\"mb-2\">\n Your clients will not have the option to pay with another method.\n </Typography>\n )}\n </div>\n ) : (\n <Typography variant=\"subtitle\" className=\"mb-4 text-red\">\n Requires a connected Payment Provider account.{\" \"}\n <UnderlinedLink className=\"ml-2\" href=\"/portal/settings/banking\">\n Connect Now\n </UnderlinedLink>\n </Typography>\n )}\n </div>\n </div>\n )}\n <Divider />\n\n {requireCcEnabled && settings.requireClientCcToBook && (\n <div className=\"mb-6\">\n <div className=\"flex flex-col\">\n <Label htmlFor=\"charge-on-booking\" className=\"mb-2 text-base\">\n Charge credit card when client books:\n </Label>\n <div className=\"flex flex-row gap-4\">\n <RadioWithLabel\n id=\"charge-cc-yes\"\n value={true}\n name=\"charge-cc\"\n label=\"Yes\"\n checked={settings.chargeClientCcAtBooking}\n onChange={() => setSettings({ ...settings, chargeClientCcAtBooking: true })}\n />\n <RadioWithLabel\n id=\"charge-cc-no\"\n value={false}\n name=\"charge-cc\"\n label=\"No (recommended)\"\n checked={!settings.chargeClientCcAtBooking}\n onChange={() => setSettings({ ...settings, chargeClientCcAtBooking: false })}\n />\n </div>\n </div>\n <Divider />\n </div>\n )}\n <div className=\"mb-6\">\n <Label htmlFor=\"instant-approval\" className=\"mb-2 text-base\">\n Auto-accept new client appointments:\n </Label>\n <Select\n id=\"instant-approval\"\n className=\"w-fit\"\n options={options}\n value={settings.instantClientApproval}\n onChange={(e) => setSettings({ ...settings, instantClientApproval: e.target.value === \"true\" })}\n defaultOption=\"Select an option\"\n />\n </div>\n <Divider />\n <div className=\"mb-6\">\n <Label htmlFor=\"buffer-time\" className=\"mb-2 text-base\">\n Buffer time between your appointments:\n </Label>\n <Select\n id=\"buffer-time\"\n className=\"w-fit\"\n options={bufferIntervals}\n value={settings.appointmentBufferTime}\n onChange={(e) => setSettings({ ...settings, appointmentBufferTime: Number(e.target.value) })}\n defaultOption=\"Select time interval\"\n />\n </div>\n <Divider />\n <div className=\"mb-6\">\n <Label htmlFor=\"lead-time\" className=\"mb-2 text-base\">\n Appointments can be scheduled:\n </Label>\n <Select\n id=\"lead-time\"\n className=\"w-fit\"\n options={leadTimes}\n value={settings.appointmentLeadTime}\n onChange={(e) => setSettings({ ...settings, appointmentLeadTime: Number(e.target.value) })}\n defaultOption=\"Select time interval\"\n />\n </div>\n <Divider />\n <div className=\"mb-6\">\n <Label htmlFor=\"start-time\" className=\"mb-2 text-base\">\n Start appointment slots every:\n </Label>\n <Select\n id=\"start-time\"\n className=\"w-fit\"\n options={startTimeIncrements}\n value={settings.startTimeIncrement}\n onChange={(e) => setSettings({ ...settings, startTimeIncrement: Number(e.target.value) })}\n defaultOption=\"Select time interval\"\n />\n </div>\n {cancellationPolicyEnabled && (\n <>\n <Divider />\n <div className=\"mb-6\">\n <Label htmlFor=\"cancellation-policy\" className=\"mb-2 text-base\">\n Cancellation Policy:\n </Label>\n <TextArea\n id=\"cancellation-policy\"\n className=\"w-full\"\n rows={4}\n maxLength={250}\n placeholder=\"Enter your cancellation policy...\"\n value={settings.cancellationPolicy || \"\"}\n onChange={(e) => setSettings({ ...settings, cancellationPolicy: e.target.value })}\n />\n </div>\n </>\n )}\n </Box>\n </div>\n )\n}\n\nexport default function ProBookingSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <BookingSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import { CalendarIcon } from \"@heroicons/react/24/solid\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nconst calendarImages = {\n google: \"/images/calendar-icon-google.png\",\n apple: \"/images/calendar-icon-icloud.png\",\n live_connect: \"/images/calendar-icon-outlook.png\"\n}\n\nconst CalIcon = ({ className, iconClassName, provider }) => (\n <div\n className={twMerge(\n \"flex h-7 w-7 flex-none items-center justify-center rounded-full border border-gray\",\n className\n )}>\n {calendarImages[provider] ? (\n <img alt={`${provider} icon`} src={calendarImages[provider]} className={twMerge(\"h-4 w-4\", iconClassName)} />\n ) : (\n <CalendarIcon className={twMerge(\"h-4 w-4\", iconClassName)} />\n )}\n </div>\n)\n\nexport default CalIcon\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { CheckBox } from \"../../../components/shared/Inputs\"\nimport { Divider } from \"../../../components/shared/Layout\"\nimport { useToast } from \"../../../contexts/ToastContext\"\n\nimport CalIcon from \"./CalIcon\"\n\nconst UPDATE_CALENDARS_MUTATION = `\n mutation UpdateCronofyCalendars($calendars: [CronofyCalendarInput!]!) {\n updateCronofyCalendars(calendars: $calendars) {\n result\n }\n }\n`\n\nconst ReadCalendarSettings = ({ selectedProvider, onSave }) => {\n const [newProvider, setNewProvider] = useState(selectedProvider)\n const [, updateCalendars] = useMutation(UPDATE_CALENDARS_MUTATION)\n\n const { showToast } = useToast()\n\n return (\n <div>\n <div className=\"flex items-center gap-4\">\n <CalIcon provider={selectedProvider.providerName} />\n <div>{newProvider.profileName}</div>\n </div>\n <Divider />\n <div className=\"mb-4 font-bold\">Check these places for conflicts</div>\n <ul>\n {newProvider.calendars.map((cal) => (\n <li key={cal.id}>\n <CheckBox\n label={cal.calendarName}\n checked={cal.active}\n onChange={() => {\n setNewProvider((prevProvider) => ({\n ...prevProvider,\n calendars: prevProvider.calendars.map((calendar) => {\n if (calendar.id === cal.id) {\n return { ...calendar, active: !calendar.active }\n }\n return calendar\n })\n }))\n }}\n />\n </li>\n ))}\n </ul>\n <div className=\"mt-4 flex justify-end\">\n <Button\n onClick={() => {\n updateCalendars({\n calendars: newProvider.calendars.map((cal) => ({\n id: cal.id,\n active: cal.active\n }))\n }).then((result) => {\n if (result.data?.updateCronofyCalendars?.result === \"success\") {\n onSave(newProvider.calendars)\n showToast(\"Calendars updated successfully\")\n } else {\n console.error(result)\n showToast({ content: \"There was an error updating calendars\", type: \"error\" })\n }\n })\n }}>\n Save\n </Button>\n </div>\n </div>\n )\n}\n\nexport default ReadCalendarSettings\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../../components/shared/Buttons\"\nimport { Select } from \"../../../components/shared/Inputs\"\nimport { Divider } from \"../../../components/shared/Layout\"\nimport { RadioWithLabel } from \"../../../components/shared/RadioButtons\"\nimport { useToast } from \"../../../contexts/ToastContext\"\n\nconst UPDATE_CRONOFY_CLIENT_MUTATION = `\n mutation UpdateCronofyClient($writeCalendarId: ID!) {\n updateCronofyClient(writeCalendarId: $writeCalendarId) {\n result\n errors\n }\n }\n`\n\nconst WriteCalendarSettings = ({ connectedCalendars, writeCalendar, setWriteCalendar, onSave }) => {\n const [writeProvider, setWriteProvider] = useState(\n connectedCalendars.find((cal) =>\n cal.calendars.map((calendar) => calendar.calendarId).includes(writeCalendar?.calendarId)\n )\n )\n\n const [, updateCronofyClient] = useMutation(UPDATE_CRONOFY_CLIENT_MUTATION)\n const { showToast } = useToast()\n\n return (\n <div>\n <div className=\"my-4 flex flex-col gap-2\">\n {connectedCalendars.map((provider) => (\n <RadioWithLabel\n key={provider.id}\n id={`write-provider-${provider.id}`}\n name=\"write-provider\"\n label={`${provider.profileName} (${capitalize(provider.providerName)})`}\n checked={!writeProvider ? false : writeProvider.id === provider.id}\n onChange={() => {\n setWriteProvider(provider)\n if (!writeProvider) setWriteCalendar(provider.calendars[0])\n }}\n />\n ))}\n <RadioWithLabel\n name=\"write-provider\"\n label=\"Do not add new events to a calendar\"\n checked={!writeProvider}\n onChange={() => {\n setWriteProvider(null)\n setWriteCalendar(null)\n }}\n />\n </div>\n {writeProvider && (\n <>\n <Divider />\n <div className=\"mb-4 font-bold\">Add to calendar</div>\n <Select\n options={writeProvider.calendars.map((cal) => ({ value: cal.calendarId, label: cal.calendarName }))}\n value={writeCalendar?.calendarId || writeProvider.calendars[0].calendarId}\n onChange={(e) => setWriteCalendar(writeProvider.calendars.find((cal) => cal.calendarId === e.target.value))}\n />\n </>\n )}\n <div className=\"mt-4 flex justify-end\">\n <Button\n onClick={() => {\n updateCronofyClient({ writeCalendarId: !writeCalendar ? \"\" : writeCalendar.calendarId }).then((result) => {\n if (result.data?.updateCronofyClient?.result === \"success\") {\n setWriteCalendar(\n writeProvider\n ? writeProvider.calendars.find((cal) => cal.calendarId === writeCalendar.calendarId)\n : null\n )\n showToast(\"Write calendar updated successfully\")\n onSave()\n } else {\n showToast({ content: \"Failed to update write calendar\", type: \"error\" })\n }\n })\n }}>\n Save\n </Button>\n </div>\n </div>\n )\n}\n\nexport default WriteCalendarSettings\n","import { TrashIcon } from \"@heroicons/react/24/outline\"\nimport { CalendarIcon } from \"@heroicons/react/24/solid\"\nimport capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Box, Divider, Flyout } from \"../../components/shared/Layout\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport CalIcon from \"./ProCalendarSettings/CalIcon\"\nimport ReadCalendarSettings from \"./ProCalendarSettings/ReadCalendarSettings\"\nimport WriteCalendarSettings from \"./ProCalendarSettings/WriteCalendarSettings\"\n\nconst REMOVE_CRONOFY_PROFILE_MUTATION = `\n mutation RemoveCronofyProfile($profileId: ID!) {\n removeCronofyProfile(profileId: $profileId) {\n result\n errors\n }\n }\n`\n\nconst CREATE_CRONOFY_FEED_MUTATION = `\n mutation CreateCronofyFeed($feedUrl: String!) {\n createCronofyFeed(feedUrl: $feedUrl) {\n result\n errors\n feed {\n id providerName profileName profileId\n calendars { id providerName profileName calendarName active }\n }\n }\n }\n`\n\nconst CalendarContainer = ({ imgSrc, name, copy, children, className }) => (\n <div className={twMerge(\"flex flex-col rounded-xl border border-gray-light p-8\", className)}>\n <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n {imgSrc ? <img src={imgSrc} width=\"48px\" /> : <CalendarIcon className=\"h-12 w-12\" />}\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n {name}\n </Typography>\n <Typography variant=\"body\" className=\"mb-8 text-gray-dark\">\n {copy}\n </Typography>\n {children}\n </div>\n)\n\nconst ConfigurationButton = ({\n header,\n items,\n onClick,\n provider,\n fallbackCopy = \"Do not check this calendar for conflicts\"\n}) => (\n <button\n className=\"flex w-full justify-between rounded-lg border border-gray p-4 text-sm hover:border-teal\"\n onClick={onClick}>\n <div className=\"flex gap-4\">\n <CalIcon provider={provider} />\n <div className=\"text-left\">\n <div className=\"text-gray-dark\">{header}</div>\n {items?.length > 0 ? (\n <ul>\n {items.map((item) => (\n <li key={item}>• {item}</li>\n ))}\n </ul>\n ) : (\n <div>{fallbackCopy}</div>\n )}\n </div>\n </div>\n <div className=\"flex-none font-bold text-teal\">Edit</div>\n </button>\n)\n\nconst CalendarSettings = ({ authorizationUrl, connectedCalendars: calendars, writeCalendar: writeCal }) => {\n const [connectedCalendars, setConnectedCalendars] = useState(calendars)\n const [writeCalendar, setWriteCalendar] = useState(writeCal)\n const [isFlyoutOpen, setIsFlyoutOpen] = useState(false)\n const [providerId, setProviderId] = useState(null)\n const [profileToDelete, setProfileToDelete] = useState(null)\n const [feedModalVisible, setFeedModalVisible] = useState(false)\n const [feedUrl, setFeedUrl] = useState(\"\")\n const [feedSaving, setFeedSaving] = useState(false)\n\n const [, removeCronofyProfile] = useMutation(REMOVE_CRONOFY_PROFILE_MUTATION)\n const [, createCronofyFeed] = useMutation(CREATE_CRONOFY_FEED_MUTATION)\n const { showToast } = useToast()\n\n const selectedProvider =\n providerId === \"write\"\n ? null\n : connectedCalendars && connectedCalendars.find((provider) => provider.id === providerId)\n\n return (\n <div>\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Calendar Integrations\" />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Calendar Integrations\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n Sync your calendar across apps so wherever you work from, it happens here.\n </Typography>\n </div>\n <div>\n <>\n {connectedCalendars.length > 0 ? (\n <div className=\"w-full max-w-[750px]\">\n <Box>\n <div className=\"mb-4 flex items-center justify-between text-gray-dark\">\n <h2 className=\"text-lg font-bold\">My Calendar Accounts</h2>\n <ButtonLink href={authorizationUrl} target=\"_blank\">\n Connect another calendar\n </ButtonLink>\n </div>\n <Box className=\"p-4\">\n {connectedCalendars.map((provider, i) => (\n <React.Fragment key={`provider-${provider.id}`}>\n <div className=\"flex items-center justify-between gap-4\">\n <CalIcon\n provider={provider.providerName}\n className=\"h-10 w-10 flex-none border-none\"\n iconClassName=\"h-6 w-6\"\n />\n <div className=\"w-full\">\n <h3 className=\"font-bold\">{capitalize(provider.providerName)}</h3>\n <div className=\"text-gray-dark\">{provider.profileName}</div>\n </div>\n <button\n className=\"flex h-8 w-8 flex-none items-center justify-center rounded text-gray-dark hover:bg-gray-light focus:outline-none focus:ring-2 focus:ring-blue active:bg-gray\"\n onClick={() => setProfileToDelete(provider.id)}>\n <TrashIcon className=\"h-5 w-5\" />\n </button>\n </div>\n {i < connectedCalendars.length - 1 && <Divider className=\"-mx-4 my-4 box-content px-4\" />}\n </React.Fragment>\n ))}\n </Box>\n <div className=\"mt-4 flex justify-end\">\n <button className=\"text-sm text-gray-dark\" onClick={() => setFeedModalVisible(true)}>\n Connect an iCal feed\n </button>\n </div>\n <AnimatedModal\n visible={feedModalVisible}\n hideModal={() => setFeedModalVisible(false)}\n header=\"Connect an iCal feed\"\n showFooter={true}\n saveDisabled={feedSaving}\n onSave={() => {\n setFeedSaving(true)\n createCronofyFeed({ feedUrl }).then((result) => {\n if (result.data?.createCronofyFeed?.result === \"success\") {\n showToast(\"Your feed has been added successfully\")\n\n if (\n !connectedCalendars\n .map((cal) => cal.id)\n .includes(result.data.createCronofyFeed.feed.profileId)\n ) {\n setConnectedCalendars((prevCalendars) => [\n ...prevCalendars,\n result.data.createCronofyFeed.feed\n ])\n }\n } else {\n console.error(result)\n showToast({\n content:\n \"There was an error adding your feed. Likely the URL you used in not a valid iCal feed URL.\",\n type: \"error\"\n })\n }\n\n setFeedSaving(false)\n setFeedModalVisible(false)\n })\n }}>\n <InputWithLabel\n label=\"Feed URL\"\n value={feedUrl}\n onChange={(e) => setFeedUrl(e.target.value)}\n placeholder=\"Paste your iCal feed URL\"\n />\n </AnimatedModal>\n </Box>\n <Box className=\"mt-8\">\n <h2 className=\"text-lg font-bold\">Configuration</h2>\n <Divider />\n <div className=\"flex gap-4\">\n <div className=\"flex-none\">\n <CalendarIcon className=\"h-10 w-10\" />\n </div>\n <div className=\"w-1/3\">\n <div className=\"font-bold\">Check for conflicts</div>\n <div className=\"text-sm text-gray-dark\">\n Set the calendar(s) to check for conflicts to prevent double bookings\n </div>\n </div>\n <div className=\"flex w-2/3 flex-col gap-4\">\n {connectedCalendars.map((provider) => (\n <ConfigurationButton\n key={`check-button-${provider.id}`}\n provider={provider.providerName}\n className=\"w-full rounded-lg border border-gray p-4 text-sm hover:border-teal\"\n header={`Check ${provider.profileName}`}\n items={provider.calendars.filter((cal) => cal.active).map((cal) => cal.calendarName)}\n onClick={() => {\n setProviderId(provider.id)\n setIsFlyoutOpen(true)\n }}\n />\n ))}\n </div>\n </div>\n <Divider />\n <div className=\"flex gap-4\">\n <div className=\"flex-none\">\n <CalendarIcon className=\"h-10 w-10\" />\n </div>\n <div className=\"w-1/3\">\n <div className=\"font-bold\">Add to calendar</div>\n <div className=\"text-sm text-gray-dark\">\n Set the calendar you would like to add new events to as they’re scheduled.\n </div>\n </div>\n <div className=\"flex w-2/3 flex-col gap-4\">\n <ConfigurationButton\n provider={writeCalendar?.providerName}\n header={writeCalendar ? `Add to ${writeCalendar.profileName}` : \"CALENDAR NOT SELECTED\"}\n fallbackCopy=\"Do not add new events to any calendar\"\n items={writeCalendar ? [writeCalendar.calendarName] : null}\n onClick={() => {\n setProviderId(\"write\")\n setIsFlyoutOpen(true)\n }}\n />\n </div>\n </div>\n </Box>\n <Flyout\n header={\n providerId === \"write\"\n ? \"Which calendar should we add new events to?\"\n : \"How should we check for conflicts?\"\n }\n visible={isFlyoutOpen}\n closeFlyout={() => setIsFlyoutOpen(false)}>\n {selectedProvider && (\n <ReadCalendarSettings\n selectedProvider={selectedProvider}\n key={selectedProvider?.id}\n setConnectedCalendars={setConnectedCalendars}\n onSave={(newCalendars) => {\n setConnectedCalendars((prevCalendars) =>\n prevCalendars.map((provider) =>\n provider.id === selectedProvider.id ? { ...provider, calendars: newCalendars } : provider\n )\n )\n setIsFlyoutOpen(false)\n }}\n />\n )}\n {providerId === \"write\" && (\n <WriteCalendarSettings\n connectedCalendars={connectedCalendars}\n writeCalendar={writeCalendar}\n setWriteCalendar={setWriteCalendar}\n onSave={() => setIsFlyoutOpen(false)}\n />\n )}\n </Flyout>\n <AnimatedModal\n header=\"Disconnect calendar\"\n visible={!!profileToDelete}\n hideModal={() => setProfileToDelete(null)}\n actionButtonCopy=\"Yes, disconnect\"\n actionButtonType=\"destructive\"\n showFooter={true}\n onSave={() => {\n removeCronofyProfile({ profileId: profileToDelete }).then((result) => {\n if (result.data?.removeCronofyProfile?.result === \"success\") {\n showToast(\"Your calendar has been removed successfully\")\n setConnectedCalendars((prevCalendars) =>\n prevCalendars.filter((cal) => cal.id !== profileToDelete)\n )\n } else {\n console.error(result) // eslint-disable-line no-console\n showToast({ content: \"There was an error removing your calendar\", type: \"error\" })\n }\n setProfileToDelete(null)\n })\n }}>\n <p>Are you sure you want to disconnect this calendar?</p>\n </AnimatedModal>\n </div>\n ) : (\n <CalendarContainer\n className=\"w-fit\"\n name=\"Sync Heal.me with your existing calendar\"\n copy=\"Supports Google, iCloud, Outlook, Office 365, and Exchange\">\n <ButtonLink href={authorizationUrl} target=\"_blank\">\n Connect calendar\n </ButtonLink>\n </CalendarContainer>\n )}\n </>\n </div>\n </div>\n )\n}\n\nexport default function ProCalendarSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <CalendarSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import {\n ArrowPathRoundedSquareIcon,\n CreditCardIcon,\n ChatBubbleLeftEllipsisIcon,\n CalendarDaysIcon,\n NewspaperIcon\n} from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst MainSettings = ({ calendarConnected, showSubscriptionLink }) => (\n <div>\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Settings\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n Manage your Heal.me practice\n </Typography>\n </div>\n <div className=\"grid grid-cols-3 gap-8 sm:grid-cols-1\">\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-gray-ultralight p-4\">\n <ArrowPathRoundedSquareIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Calendar Integrations\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n Sync your calendar across apps so wherever you work from, it happens here.\n </Typography>\n <a href=\"/portal/settings/calendar\">\n <Button type={calendarConnected ? \"tertiary\" : \"primary\"} className=\"w-fit\">\n {calendarConnected ? \"Manage\" : \"Connect\"}\n </Button>\n </a>\n </div>\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-green-light p-4\">\n <CreditCardIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Payments\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8 text-gray-dark\">\n Accept online payments with Heal.me so you get paid on time, every time.\n </Typography>\n <a href=\"/portal/settings/banking\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n {/* <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-gray-light p-4\">\n <CodeBracketSquareIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Booking Widget\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n A few lines of code, a whole lot of bookings: Add to your website now.\n </Typography>\n <a href=\"/portal/settings/banking\">\n <Button type=\"primary\" className=\"w-fit\">\n Install\n </Button>\n </a>\n </div>*/}\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-red-light p-4\">\n <ChatBubbleLeftEllipsisIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Communications\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n Automated appointment, payment, and follow-up booking reminders.\n </Typography>\n <a href=\"/portal/settings/communication\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-orange-light p-4\">\n <CalendarDaysIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Booking\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n Auto-accept new bookings, edit the time between appointments, and more.\n </Typography>\n <a href=\"/portal/settings/booking\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n {showSubscriptionLink && (\n <div className=\"flex flex-col rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-gray-light p-4\">\n <img src=\"/images/icons/heal_me.svg\" className=\"h-10 w-10\" alt=\"Heal.me\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Subscription\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n Manage your subscription to Heal.me.\n </Typography>\n <a href=\"/portal/subscriptions\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n )}\n <div className=\"flex flex-col rounded-xl border border-green-light p-8\">\n <div className=\"mb-8 w-fit rounded-xl bg-green-light p-4\">\n <NewspaperIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n Intake Form\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-8\">\n Customize the intake form that you can send to your clients.\n </Typography>\n <a href=\"/portal/settings/intake_forms\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n </div>\n </div>\n)\n\nconst ProMainSettings = (props) => <MainSettings {...props} />\n\nexport default ProMainSettings\n","import React from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { capitalize } from \"../../../utils/utils\"\nimport { Link, UnderlinedLink } from \"../../shared/Links\"\nimport { AnimatedModal } from \"../../shared/Modal\"\nimport Typography from \"../../shared/Typography\"\n\n// receive either square or stripe\nconst UPDATE_PRACTICE_PAYMENT_PROVIDER = `\n mutation UpdatePracticePaymentProvider($provider: String!) {\n updatePracticePaymentProvider(provider: $provider) {\n result\n errors\n }\n }\n`\n\nexport default function PaymentIntegrations({\n stripeConnected,\n stripeDisplayName,\n squareConnected,\n squareDisplayName,\n paymentProvider,\n paypalConnected,\n paypalEnabled\n}) {\n const [changePaymentProviderModalVisible, setChangePaymentProviderModalVisible] = React.useState(false)\n const [newPaymentProvider, setNewPaymentProvider] = React.useState(\"stripe\")\n\n const [, updatePaymentProvider] = useMutation(UPDATE_PRACTICE_PAYMENT_PROVIDER)\n\n const handleUpdatePaymentProvider = async (p) => {\n const { data } = await updatePaymentProvider({ provider: p })\n if (data) {\n window.location.reload()\n }\n }\n\n const PaymentProviderCard = ({ provider, connected, displayName, imageUrl, manageUrl, connectUrl }) => {\n const [noticeModalVisible, setNoticeModalVisible] = React.useState(false)\n\n const hasAnyConnected = stripeConnected || squareConnected\n\n const isCurrentProvider = provider === paymentProvider && connected\n\n return (\n <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-row justify-items-start\">\n <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n <img src={imageUrl} width=\"32px\" />\n </div>\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\" className=\"mb-2\">\n {capitalize(provider)}\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n {connected ? `Connected to: ${displayName}` : `Sync Heal.me and ${capitalize(provider)}`}\n </Typography>\n </div>\n </div>\n <div className=\"flex flex-col items-end text-end\">\n {isCurrentProvider && <div className=\"font-bold\">Active payment method</div>}\n {!isCurrentProvider && (\n <div>\n <span>Inactive</span>\n {connected && (\n <span\n className=\"ml-1 cursor-pointer hover:underline\"\n onClick={() => {\n setNewPaymentProvider(provider)\n setChangePaymentProviderModalVisible(true)\n }}>\n (activate)\n </span>\n )}\n </div>\n )}\n {connected ? (\n <UnderlinedLink href={manageUrl}>Manage</UnderlinedLink>\n ) : hasAnyConnected ? (\n <>\n <div\n className=\"cursor-pointer font-bold text-teal underline\"\n onClick={() => {\n setNoticeModalVisible(true)\n }}>\n Connect\n </div>\n <AnimatedModal\n visible={noticeModalVisible}\n showFooter={true}\n hideModal={() => setNoticeModalVisible(false)}\n actionButtonCopy={`I understand, switch to ${capitalize(provider)} Payments`}\n onSave={() => {\n window.location.href = connectUrl\n }}\n header={\"Please Note:\"}>\n <p>\n When switching from one payment provider to another, your clients will need to re-enter their payment\n information.\n </p>\n </AnimatedModal>\n </>\n ) : (\n <UnderlinedLink href={connectUrl}>Connect</UnderlinedLink>\n )}\n </div>\n </div>\n )\n }\n\n const providers = [\n {\n provider: \"stripe\",\n connected: stripeConnected,\n displayName: stripeDisplayName,\n imageUrl: \"/images/payments-icon-stripe.png\",\n manageUrl: \"/portal/settings/banking/stripe\",\n connectUrl: \"/portal/settings/banking/link\"\n },\n {\n provider: \"square\",\n connected: squareConnected,\n displayName: squareDisplayName,\n imageUrl: \"/images/payments-icon-square.png\",\n manageUrl: \"/portal/settings/banking/square\",\n connectUrl: \"/portal/settings/banking/square/authorize\"\n }\n ]\n\n const sortedProviders = providers.sort((a) => (a.provider === paymentProvider ? -1 : 1))\n\n return (\n <>\n <Typography as=\"h2\" variant=\"h5\" className=\"mb-2\">\n Integrations\n </Typography>\n <div className=\"space-y-4\">\n {sortedProviders.map((provider) => (\n <PaymentProviderCard\n key={provider.provider}\n provider={provider.provider}\n connected={provider.connected}\n displayName={provider.displayName}\n imageUrl={provider.imageUrl}\n manageUrl={provider.manageUrl}\n connectUrl={provider.connectUrl}\n />\n ))}\n {/* PayPal section */}\n {paypalEnabled && (\n <div className=\"flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-row justify-items-start\">\n <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n <img src=\"/images/payments-icon-paypal.png\" width=\"32px\" />\n </div>\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\" className=\"mb-2\">\n PayPal / Venmo (BETA)\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Accept payments from clients using PayPal or Venmo.\n </Typography>\n <Typography variant=\"small\" className=\"text-gray-dark\">\n You need to have a{\" \"}\n <Link href=\"https://www.paypal.com/us/business\" target=\"_blank\" rel=\"noopener noreferrer\">\n PayPal Business account\n </Link>{\" \"}\n to use this feature.\n </Typography>\n </div>\n </div>\n <div className=\"flex flex-col items-end text-end\">\n {paypalConnected ? (\n <UnderlinedLink href=\"/portal/settings/banking/paypal\">Manage</UnderlinedLink>\n ) : (\n <UnderlinedLink href=\"/portal/settings/banking/paypal/link\">Connect</UnderlinedLink>\n )}\n </div>\n </div>\n )}\n </div>\n <AnimatedModal\n visible={changePaymentProviderModalVisible}\n showFooter={true}\n hideModal={() => setChangePaymentProviderModalVisible(false)}\n actionButtonCopy={`Change to ${capitalize(newPaymentProvider)}`}\n onSave={() => handleUpdatePaymentProvider(newPaymentProvider)}\n header={`Confirm change to ${capitalize(newPaymentProvider)}`}>\n <p>\n By making this change, all future payments will be processed through {capitalize(newPaymentProvider)}. Are you\n sure you want to make this change?\n </p>\n </AnimatedModal>\n </>\n )\n}\n","import { CurrencyDollarIcon, SparklesIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport PaymentIntegrations from \"../../components/pro_portal/payments/PaymentIntegrations.jsx\"\nimport Breadcrumbs from \"../../components/shared/Breadcrumbs\"\nimport { Toggle, Select } from \"../../components/shared/Inputs.jsx\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast, ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nconst UPDATE_PRACTICE_OFFLINE_OPTIONS = `\n mutation UpdatePracticeOfflineOptions($acceptsPaypal: Boolean, $acceptsVenmo: Boolean, $acceptsZelle: Boolean, $acceptsCash: Boolean, $acceptsCreditCard: Boolean) {\n updatePracticeOfflineOptions(acceptsPaypal: $acceptsPaypal, acceptsVenmo: $acceptsVenmo, acceptsZelle: $acceptsZelle, acceptsCash: $acceptsCash, acceptsCreditCard: $acceptsCreditCard) {\n result\n error\n }\n }\n`\n\nconst UPDATE_PRACTICE_CURRENCY = `\n mutation UpdatePracticeCurrency($currency: String!) {\n updatePracticeCurrency(currency: $currency) {\n result\n error\n }\n }\n`\n\nconst UPDATE_TIPPING_OPTION = `\n mutation UpdatePracticeAcceptsTipsMutation($acceptsTips: Boolean!) {\n updatePracticeAcceptsTips(acceptsTips: $acceptsTips) {\n result\n error\n }\n }\n`\n\nconst currencyOptions = [\n { value: \"USD\", label: \"USD\" },\n { value: \"CAD\", label: \"CAD\" }\n]\n\nconst PaymentSettings = ({\n stripeConnected,\n stripeDisplayName,\n acceptsCash,\n acceptsPaypal,\n acceptsZelle,\n acceptsVenmo,\n acceptsCreditCard,\n currencyEnabled,\n currency,\n acceptsTips,\n squareConnected,\n squareDisplayName,\n paymentProvider,\n paypalConnected,\n paypalEnabled\n}) => {\n const [, updateOfflineOptions] = useMutation(UPDATE_PRACTICE_OFFLINE_OPTIONS)\n const [, updateCurrency] = useMutation(UPDATE_PRACTICE_CURRENCY)\n const [, updateTippingOption] = useMutation(UPDATE_TIPPING_OPTION)\n const { showToast } = useToast()\n\n const [editableCurrency, setEditableCurrency] = useState(currency)\n const [editableAcceptsCash, setEditableAcceptsCash] = useState(acceptsCash)\n const [editableAcceptsPaypal, setEditableAcceptsPaypal] = useState(acceptsPaypal)\n const [editableAcceptsZelle, setEditableAcceptsZelle] = useState(acceptsZelle)\n const [editableAcceptsVenmo, setEditableAcceptsVenmo] = useState(acceptsVenmo)\n const [editableAcceptsCreditCard, setEditableAcceptsCreditCard] = useState(acceptsCreditCard)\n\n const [editableAcceptsTips, setEditableAcceptsTips] = useState(acceptsTips)\n\n const paymentMethods = [\n {\n name: \"Cash\",\n state: editableAcceptsCash,\n setState: setEditableAcceptsCash,\n id: \"acceptsCash\",\n icon: \"/images/payments-icon-cash.png\"\n },\n {\n name: \"Credit Card\",\n state: editableAcceptsCreditCard,\n setState: setEditableAcceptsCreditCard,\n id: \"acceptsCreditCard\",\n icon: \"/images/payments-icon-credit-card.png\"\n },\n {\n name: \"PayPal\",\n state: editableAcceptsPaypal,\n setState: setEditableAcceptsPaypal,\n id: \"acceptsPaypal\",\n icon: \"/images/payments-icon-paypal.png\"\n },\n {\n name: \"Venmo\",\n state: editableAcceptsVenmo,\n setState: setEditableAcceptsVenmo,\n id: \"acceptsVenmo\",\n icon: \"/images/payments-icon-venmo.png\"\n },\n {\n name: \"Zelle\",\n state: editableAcceptsZelle,\n setState: setEditableAcceptsZelle,\n id: \"acceptsZelle\",\n icon: \"/images/payments-icon-zelle.png\"\n }\n ]\n\n const onChange = (methodId, newValue) => {\n const variables = paymentMethods.reduce(\n (acc, { id, state }) => ({\n ...acc,\n [id]: id === methodId ? newValue : state\n }),\n {}\n )\n\n updateOfflineOptions(variables)\n .then((result) => {\n if (result.data?.updatePracticeOfflineOptions?.result) {\n showToast(\"Settings updated successfully.\")\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updatePracticeOfflineOptions?.error ||\n \"Please try later.\"\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }\n\n const onChangeAcceptsTips = (newValue) => {\n updateTippingOption({ acceptsTips: newValue })\n .then((result) => {\n if (result.data?.updatePracticeAcceptsTips?.result) {\n showToast(\"Settings updated successfully.\")\n setEditableAcceptsTips(newValue)\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updatePracticeAcceptsTips?.error ||\n \"Please try later.\"\n showToast({ type: \"error\", content: error })\n setEditableAcceptsTips(!newValue)\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n setEditableAcceptsTips(!newValue)\n })\n }\n\n return (\n <div>\n <Breadcrumbs links={[{ href: \"/portal/settings\", text: \"Settings\" }]} activePage=\"Payments\" />\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Payments\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark sm:hidden\">\n Accept online payments with Heal.me so you get paid on time, every time.\n </Typography>\n </div>\n <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-1\">\n <div className=\"w-full\">\n <PaymentIntegrations\n stripeConnected={stripeConnected}\n stripeDisplayName={stripeDisplayName}\n squareConnected={squareConnected}\n squareDisplayName={squareDisplayName}\n paymentProvider={paymentProvider}\n paypalConnected={paypalConnected}\n paypalEnabled={paypalEnabled}\n />\n {currencyEnabled && (\n <>\n <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n Currency\n </Typography>\n <Typography variant=\"body\" className=\"mb-4 text-gray-dark sm:hidden\">\n You can currently list and accept payments in USD or CAD.\n </Typography>\n <div className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-row items-center\">\n <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n <CurrencyDollarIcon className=\"h-7 w-7\" />\n </div>\n <Typography variant=\"h5\">Selected Currency</Typography>\n </div>\n <Select\n options={currencyOptions}\n value={editableCurrency}\n id=\"currency-select\"\n onChange={(e) => {\n setEditableCurrency(e.target.value)\n updateCurrency({ currency: e.target.value })\n .then((result) => {\n if (result.data?.updatePracticeCurrency?.result) {\n showToast(\"Currency updated successfully.\")\n } else {\n const error =\n result.error?.message?.replace(\"[GraphQL]\", \"\") ||\n result.data?.updateCurrency?.error ||\n \"Please try later.\"\n showToast({ type: \"error\", content: error })\n }\n })\n .catch((error) => {\n showToast({ type: \"error\", content: error.message })\n })\n }}\n />\n </div>\n </>\n )}\n <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n Offline Options\n </Typography>\n {paymentMethods.map((method, index) => (\n <div\n key={index}\n className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-row items-center\">\n <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n <img src={method.icon} width=\"32px\" alt={`${method.name} icon`} />\n </div>\n <Typography variant=\"h5\" className=\"mb-2\">\n {method.name}\n </Typography>\n </div>\n <Toggle\n id={`toggle-${method.id}`}\n checked={method.state}\n onChange={() => {\n const newValue = !method.state\n method.setState(newValue)\n onChange(method.id, newValue)\n }}\n />\n </div>\n ))}\n\n <Typography as=\"h2\" variant=\"h5\" className=\"mb-2 mt-9\">\n Tipping\n </Typography>\n <div className=\"mb-4 flex flex-row items-center justify-between rounded-xl border border-gray-light p-8\">\n <div className=\"flex flex-row items-center\">\n <div className=\"mr-4 flex w-fit items-center justify-center rounded-xl bg-gray-ultralight p-4\">\n <SparklesIcon className=\"h-7 w-7\" />\n </div>\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\" className=\"mb-2\">\n Enable Tipping\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Customers will have the option to add a tip to their payment.\n </Typography>\n </div>\n </div>\n <Toggle\n checked={editableAcceptsTips}\n onChange={() => {\n setEditableAcceptsTips(!editableAcceptsTips)\n onChangeAcceptsTips(!editableAcceptsTips)\n }}\n />\n </div>\n </div>\n <div className=\"w-full\">\n <div className=\"mb-4 ml-8 mt-8 rounded-xl border border-gray-light p-8\">\n <Typography as=\"h2\" variant=\"h5\" className=\"mb-2\">\n How do offline options work?\n </Typography>\n <Typography variant=\"body\" className=\"mb-2 text-gray-dark\">\n When you add information for PayPal, Cash, Zelle, or Venmo, you're giving the option for clients to\n pay\n <span className=\"font-bold\"> off of the Heal.me platform </span>\n and pay you directly.\n </Typography>\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Because payments will be handled off of the Heal.me platform, you must ensure you've collected and\n recorded payments and transactions in your{\" \"}\n <UnderlinedLink href=\"/portal/payments\">Payments page</UnderlinedLink>\n </Typography>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default function ProPaymentSettings(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <PaymentSettings {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import { LinkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CheckBox, EditableValue, Input, InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport PlacesAutocomplete from \"../../components/shared/PlacesAutocomplete\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { UPDATE_PRACTICE_DETAILS_MUTATION } from \"../../utils/mutations\"\nimport { stripUSAFromString } from \"../../utils/utils\"\n\nexport default function PersonalInformationPractice({\n practice,\n allLanguages,\n allWorkWiths,\n allAgeWorkWiths,\n userIsWebsitePlan\n}) {\n const [practiceDetails, setPracticeDetails] = useState(practice)\n const [openField, setOpenField] = useState(null)\n const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(practiceDetails)\n const [{ fetching }, updatePracticeDetails] = useMutation(UPDATE_PRACTICE_DETAILS_MUTATION)\n\n const { showToast } = useToast()\n\n const languageIds = practiceDetails.languages.map((l) => Number(l.id))\n const ageWorkWithIds = practiceDetails.ageWorkWiths.map((a) => Number(a.id))\n const workWithIds = practiceDetails.workWiths.map((w) => Number(w.id))\n const location = practiceDetails.location\n\n const onOpened = (fieldName) => {\n setOpenField(fieldName)\n }\n\n const onSave = () => {\n const variables = {\n locationId: practiceDetails.locationId,\n languageIds: practiceDetails.languages?.map((l) => l.id),\n ageWorkWithIds: practiceDetails.ageWorkWiths?.map((a) => a.id),\n workWithIds: practiceDetails.workWiths?.map((w) => w.id),\n website: practiceDetails.website,\n facebook: practiceDetails.facebook,\n instagram: practiceDetails.instagram,\n twitter: practiceDetails.twitter,\n linkedin: practiceDetails.linkedin,\n tiktok: practiceDetails.tiktok,\n youtube: practiceDetails.youtube\n }\n const setVariables = Object.fromEntries(Object.entries(variables).filter(([, v]) => v !== null))\n updatePracticeDetails(setVariables).then((result) => {\n if (result.data?.updatePracticeDetails) {\n setPracticeDetails(result.data.updatePracticeDetails.practice)\n setLastSavedDetailsValues(result.data.updatePracticeDetails.practice)\n setOpenField(null)\n showToast(\"Changes saved\")\n } else {\n console.error(result) // eslint-disable-line no-console\n showToast({ type: \"error\", content: `Error saving changes: ${result.error}` })\n }\n })\n }\n\n const socialsValue = [\n practiceDetails.facebook,\n practiceDetails.instagram,\n practiceDetails.twitter,\n practiceDetails.linkedin,\n practiceDetails.tiktok,\n practiceDetails.youtube\n ]\n .filter((link) => link)\n .map((link) => link.replace(/(^\\w+:|^)\\/\\//, \"\"))\n .join(\", \")\n\n return (\n <>\n <div className=\"w-[600px] md:w-full\">\n <Box className=\"rounded-t-none border-t-0\">\n <EditableValue\n name=\"Location\"\n hint=\"Where is your practice located?\"\n value={location}\n disabled={fetching || (openField && openField !== \"Location\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <PlacesAutocomplete\n apiKey={process.env.GOOGLE_MAPS_API_KEY}\n name=\"Location\"\n types={[\"locality\", \"administrative_area_level_3\"]}\n onPlaceSelected={(place) => {\n setPracticeDetails((values) => ({\n ...values,\n location: stripUSAFromString(place.formatted_address),\n locationId: place.place_id\n }))\n }}\n defaultValue={location ? stripUSAFromString(location) : \"\"}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Languages I speak\"\n hint=\"Set which languages you speak.\"\n saveDisabled={practiceDetails.languages === lastSavedDetailsValues.languages}\n value={practiceDetails.languages.map((l) => l.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Languages I speak\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"grid grid-cols-2\">\n {allLanguages.map((language) => (\n <CheckBox\n key={language.id}\n label={language.name}\n checked={languageIds.includes(language.id)}\n onChange={() =>\n languageIds.includes(language.id)\n ? setPracticeDetails({\n ...practiceDetails,\n languages: practiceDetails.languages.filter((l) => Number(l.id) !== Number(language.id))\n })\n : setPracticeDetails({\n ...practiceDetails,\n languages: [...practiceDetails.languages, language]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Client ages I work with\"\n hint=\"Set which age groups you work with.\"\n saveDisabled={practiceDetails.ageWorkWiths === lastSavedDetailsValues.ageWorkWiths}\n value={practiceDetails.ageWorkWiths.map((a) => a.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Client ages I work with\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col\">\n {allAgeWorkWiths.map((ageWorkWith) => (\n <CheckBox\n key={ageWorkWith.id}\n label={ageWorkWith.name}\n checked={ageWorkWithIds.includes(ageWorkWith.id)}\n onChange={() =>\n ageWorkWithIds.includes(ageWorkWith.id)\n ? setPracticeDetails({\n ...practiceDetails,\n ageWorkWiths: practiceDetails.ageWorkWiths.filter(\n (a) => Number(a.id) !== Number(ageWorkWith.id)\n )\n })\n : setPracticeDetails({\n ...practiceDetails,\n ageWorkWiths: [...practiceDetails.ageWorkWiths, ageWorkWith]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Client types I work with\"\n hint=\"Set which types of clients you work with.\"\n saveDisabled={practiceDetails.workWiths === lastSavedDetailsValues.workWiths}\n value={practiceDetails.workWiths.map((w) => w.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Client types I work with\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col\">\n {allWorkWiths.map((workWith) => (\n <CheckBox\n key={workWith.id}\n label={workWith.name}\n checked={workWithIds.includes(workWith.id)}\n onChange={() =>\n workWithIds.includes(workWith.id)\n ? setPracticeDetails({\n ...practiceDetails,\n workWiths: practiceDetails.workWiths.filter((w) => Number(w.id) !== Number(workWith.id))\n })\n : setPracticeDetails({\n ...practiceDetails,\n workWiths: [...practiceDetails.workWiths, workWith]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n {userIsWebsitePlan && (\n <>\n <EditableValue\n name=\"Website\"\n hint=\"Optional: Add your website for clients to learn more about you.\"\n value={practiceDetails.website?.replace(/(^\\w+:|^)\\/\\//, \"\")}\n saveDisabled={practiceDetails.website === lastSavedDetailsValues.website}\n disabled={fetching || (openField && openField !== \"Website\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"relative\">\n <Input\n className=\"pl-10\"\n name=\"Website\"\n explanatorySubtext=\"Copy and paste your website link\"\n value={practiceDetails.website || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, website: e.target.value }))}\n />\n <LinkIcon className=\"absolute left-2.5 top-2 h-6 w-6 text-gray-dark\" />\n </div>\n </EditableValue>\n <Divider />\n </>\n )}\n <EditableValue\n name=\"Social accounts\"\n hint=\"Optional: Add Instagram, Facebook, TikTok, LinkedIn, Youtube or Twitter/X account(s).\"\n value={socialsValue}\n saveDisabled={\n practiceDetails.facebook === lastSavedDetailsValues.facebook &&\n practiceDetails.instagram === lastSavedDetailsValues.instagram &&\n practiceDetails.tiktok === lastSavedDetailsValues.tiktok &&\n practiceDetails.linkedin === lastSavedDetailsValues.linkedin &&\n practiceDetails.twitter === lastSavedDetailsValues.twitter &&\n practiceDetails.youtube === lastSavedDetailsValues.youtube\n }\n disabled={fetching || (openField && openField !== \"Social accounts\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col gap-4\">\n <InputWithLabel\n label=\"Instagram\"\n name=\"Instagram\"\n explanatorySubtext=\"Copy and paste your Instagram profile link\"\n value={practiceDetails.instagram || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, instagram: e.target.value }))}\n />\n <InputWithLabel\n label=\"Facebook\"\n name=\"Facebook\"\n explanatorySubtext=\"Copy and paste your Facebook profile link\"\n value={practiceDetails.facebook || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, facebook: e.target.value }))}\n />\n <InputWithLabel\n label=\"TiKTok\"\n name=\"TikTok\"\n explanatorySubtext=\"Copy and paste your TikTok profile link\"\n value={practiceDetails.tiktok || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, tiktok: e.target.value }))}\n />\n <InputWithLabel\n label=\"LinkedIn\"\n name=\"LinkedIn\"\n explanatorySubtext=\"Copy and paste your LinkedIn profile link\"\n value={practiceDetails.linkedin || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, linkedin: e.target.value }))}\n />\n <InputWithLabel\n label=\"Twitter / X\"\n name=\"Twitter\"\n explanatorySubtext=\"Copy and paste your Twitter profile link\"\n value={practiceDetails.twitter || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, twitter: e.target.value }))}\n />\n <InputWithLabel\n label=\"YouTube\"\n name=\"YouTube\"\n explanatorySubtext=\"Copy and paste your YouTube profile link\"\n value={practiceDetails.youtube || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, youtube: e.target.value }))}\n />\n </div>\n </EditableValue>\n </Box>\n </div>\n </>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport AcceptTermsModal from \"../../components/shared/AcceptTermsModal\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { EditableValue, Input } from \"../../components/shared/Inputs\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst UPDATE_INFO_MUTATION = `\n mutation UpdatePersonalSettings($name: String, $title: String, $gender: String, $dob: String, $customGender: String) {\n updatePersonalSettings(name: $name, title: $title, gender: $gender, dob: $dob, customGender: $customGender) {\n result\n user { id name gender dob customGender }\n }\n }\n`\n\nexport default function PersonalInformationUser({ user }) {\n const [userState, setUserState] = useState(user)\n const [lastSavedUserValue, setLastSavedUserValue] = useState(user)\n const [openField, setOpenField] = useState(null)\n const { profileStatusData } = useProfileStatus()\n\n const [{ fetching }, updatePersonalSettings] = useMutation(UPDATE_INFO_MUTATION)\n\n const { showToast } = useToast()\n\n const onSave = () => {\n updatePersonalSettings(Object.fromEntries(Object.entries(userState).filter(([, v]) => !!v))).then((result) => {\n setOpenField(null)\n if (result.error) {\n console.error(result) // eslint-disable-line no-console\n setUserState(lastSavedUserValue)\n showToast({\n type: \"error\",\n content: result.error.message.replace(\"[GraphQL]\", \"\")\n })\n } else {\n setLastSavedUserValue(result.data.updatePersonalSettings.user)\n showToast(\"Your settings have been saved.\")\n }\n })\n }\n\n const onOpened = (fieldName) => {\n setOpenField(fieldName)\n }\n\n return (\n <div className=\"mt-4 w-[600px] md:w-full\">\n <Box className=\"rounded-b-none\">\n <EditableValue\n name=\"Name\"\n value={userState.name}\n saveDisabled={userState.name === lastSavedUserValue.name || userState.name?.length < 2}\n disabled={fetching || (openField && openField !== \"Name\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <Input\n name=\"Name\"\n value={userState.name || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, name: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Title\"\n hint=\"Set what your professional title is. Pro-tip: Keep this as short and clear as possible so it's easily understood by clients.\"\n value={userState.title}\n saveDisabled={userState.title === lastSavedUserValue.title || userState.title?.length < 2}\n disabled={fetching || (openField && openField !== \"Title\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <Input\n name=\"Title\"\n placeholder=\"Ex: Licensed Massage Therapist\"\n value={userState.title || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, title: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Gender\"\n value={(userState.gender === \"Custom\" ? userState.customGender : userState.gender) || \"\"}\n saveDisabled={userState.gender === lastSavedUserValue.gender}\n disabled={fetching || (openField && openField !== \"Gender\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <div className=\"flex gap-4\">\n <RadioWithLabel\n value=\"Female\"\n name=\"gender\"\n label=\"Female\"\n checked={userState.gender === \"Female\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n <RadioWithLabel\n value=\"Male\"\n name=\"gender\"\n label=\"Male\"\n checked={userState.gender === \"Male\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n <RadioWithLabel\n value=\"Custom\"\n name=\"gender\"\n label=\"Custom\"\n checked={userState.gender === \"Custom\"}\n onChange={(e) => setUserState({ ...userState, gender: e.target.value })}\n />\n </div>\n {userState.gender === \"Custom\" && (\n <Input\n className=\"mt-4\"\n name=\"Custom gender\"\n value={userState.customGender || \"\"}\n onChange={(e) => setUserState((values) => ({ ...values, customGender: e.target.value }))}\n />\n )}\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Date of birth\"\n value={userState.dob ? new Date(userState.dob).toDateString() : null}\n saveDisabled={userState.dob === lastSavedUserValue.dob}\n disabled={fetching || (openField && openField !== \"Date of birth\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setUserState(lastSavedUserValue)\n }}>\n <DatePicker\n selected={userState.dob ? new Date(userState.dob) : \"\"}\n onChange={(date) => {\n setUserState((values) => ({ ...values, dob: date }))\n }}\n />\n </EditableValue>\n </Box>\n <AcceptTermsModal showModal={profileStatusData.showTermsModal} />\n </div>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { FilePickerDropArea } from \"../../components/shared/FileStackWidgets\"\nimport { InputWithLabel, Label, Select } from \"../../components/shared/Inputs\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport { RadioWithLabel } from \"../../components/shared/RadioButtons\"\nimport { AlgoliaSearchBox } from \"../../components/shared/SearchInputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst ADD_CREDENTIAL_MUTATION = `\n mutation CreateProCredential($credentialId: ID, $issuerId: ID, $stateIssued: String, $licenseNumber: String, $filestackDocument: String, $filestackDocumentName: String) {\n createProCredential(credentialId: $credentialId, issuerId: $issuerId, stateIssued: $stateIssued, licenseNumber: $licenseNumber, filestackDocument: $filestackDocument, filestackDocumentName: $filestackDocumentName) {\n result\n proCredential { id kind stateIssued licenseNumber filestackDocument filestackDocumentName state credential { id name } }\n errors\n }\n }\n`\n\nexport const modalId = \"credentials-modal\"\n\nexport default function CredentialsModal({ setProCredentials }) {\n const { syncProfileStatus } = useProfileStatus()\n const [selectedCredentialType, setSelectedCredentialType] = useState(\"license\")\n const [selectedCredential, setSelectedCredential] = useState(null)\n const [selectedIssuer, setSelectedIssuer] = useState(null)\n const [licenseNumber, setLicenseNumber] = useState(\"\")\n const [issuingState, setIssuingState] = useState(\"\")\n\n const { showToast } = useToast()\n const [, addCredential] = useMutation(ADD_CREDENTIAL_MUTATION)\n\n const saveEnabled = !!(selectedCredential && selectedIssuer && licenseNumber && issuingState)\n\n const handleCredentialChange = (e) => {\n setSelectedCredentialType(e.target.value)\n }\n\n const onMutationComplete = (result) => {\n if (result?.data?.createProCredential?.result === \"success\") {\n setProCredentials((credentials) => [...credentials, result.data.createProCredential.proCredential])\n showToast({\n content: (\n <>\n <b>Nice work!</b> We’ll email you after our review, but let’s keep going now.\n </>\n )\n })\n syncProfileStatus()\n setSelectedCredentialType(\"license\")\n setSelectedCredential(null)\n setSelectedIssuer(null)\n setLicenseNumber(\"\")\n setIssuingState(\"\")\n NiceModal.remove(modalId)\n } else {\n console.error(result)\n let errorMessage = \"There was an error submitting your credential. Please try again later or contact support.\"\n if (result.data?.createProCredential?.errors) errorMessage += ` ${result.data.createProCredential.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n }\n\n return (\n <NewModal\n id={modalId}\n header=\"Add credential\"\n showFooter={true}\n fullHeightInMobile={true}\n saveDisabled={!saveEnabled}\n hideSaveButton={selectedCredentialType === \"certification\"}\n onSave={() => {\n addCredential({\n credentialId: selectedCredential.id,\n issuerId: selectedIssuer?.id,\n licenseNumber: licenseNumber,\n stateIssued: issuingState\n }).then(onMutationComplete)\n }}>\n <div className=\"flex flex-col gap-4\">\n <Typography variant=\"subtitle\">\n <b>Reminder:</b> You only get 5 credentials, so we suggest using the best ones that potential clients will\n care about.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </Typography>\n <div className=\"flex gap-4\">\n <RadioWithLabel\n id=\"license-radio\"\n value=\"license\"\n name=\"credential\"\n label=\"License\"\n checked={selectedCredentialType === \"license\"}\n onChange={handleCredentialChange}\n />\n <RadioWithLabel\n id=\"certification-radio\"\n value=\"certification\"\n name=\"credential\"\n label=\"Degree/Certification\"\n checked={selectedCredentialType === \"certification\"}\n onChange={handleCredentialChange}\n />\n </div>\n <div>\n {selectedCredentialType === \"license\" ? (\n <>\n <AlgoliaSearchBox\n indexName=\"Credential\"\n label=\"Name\"\n filters=\"kind:license\"\n explanatorySubtext=\"Ex: Licensed Massage Therapist\"\n placeholder=\"Start typing credential name\"\n onChange={(hit) => setSelectedCredential({ id: hit.objectID, name: hit.name, kind: hit.kind })}\n />\n {selectedCredential && (\n <div className=\"mt-2\">\n <AlgoliaSearchBox\n indexName=\"Issuer\"\n label=\"Issuer\"\n filters=\"kind:license\"\n placeholder=\"Ex: Department of Regulatory Agencies\"\n onChange={(hit) => setSelectedIssuer({ id: hit.objectID, name: hit.name, kind: hit.kind })}\n />\n <div className=\"flex gap-4 py-4\">\n <InputWithLabel\n className=\"w-1/2\"\n id=\"license-number\"\n label=\"License number\"\n value={licenseNumber}\n onChange={(e) => setLicenseNumber(e.target.value)}\n />\n <div className=\"w-1/2\">\n <Label htmlFor=\"issuing-state\">Issuing state</Label>\n <Select\n defaultOption=\"Select state\"\n id=\"issuing-state\"\n value={issuingState}\n onChange={(e) => setIssuingState(e.target.value)}>\n <optgroup label=\"U.S. States\">\n <option value=\"alabama\">Alabama</option>\n <option value=\"alaska\">Alaska</option>\n <option value=\"arizona\">Arizona</option>\n <option value=\"arkansas\">Arkansas</option>\n <option value=\"california\">California</option>\n <option value=\"colorado\">Colorado</option>\n <option value=\"connecticut\">Connecticut</option>\n <option value=\"delaware\">Delaware</option>\n <option value=\"district_of_columbia\">District of Columbia</option>\n <option value=\"florida\">Florida</option>\n <option value=\"georgia\">Georgia</option>\n <option value=\"hawaii\">Hawaii</option>\n <option value=\"idaho\">Idaho</option>\n <option value=\"illinois\">Illinois</option>\n <option value=\"indiana\">Indiana</option>\n <option value=\"iowa\">Iowa</option>\n <option value=\"kansas\">Kansas</option>\n <option value=\"kentucky\">Kentucky</option>\n <option value=\"louisiana\">Louisiana</option>\n <option value=\"maine\">Maine</option>\n <option value=\"maryland\">Maryland</option>\n <option value=\"massachusetts\">Massachusetts</option>\n <option value=\"michigan\">Michigan</option>\n <option value=\"minnesota\">Minnesota</option>\n <option value=\"mississippi\">Mississippi</option>\n <option value=\"missouri\">Missouri</option>\n <option value=\"montana\">Montana</option>\n <option value=\"nebraska\">Nebraska</option>\n <option value=\"nevada\">Nevada</option>\n <option value=\"new_hampshire\">New Hampshire</option>\n <option value=\"new_jersey\">New Jersey</option>\n <option value=\"new_mexico\">New Mexico</option>\n <option value=\"new_york\">New York</option>\n <option value=\"north_carolina\">North Carolina</option>\n <option value=\"north_dakota\">North Dakota</option>\n <option value=\"ohio\">Ohio</option>\n <option value=\"oklahoma\">Oklahoma</option>\n <option value=\"oregon\">Oregon</option>\n <option value=\"pennsylvania\">Pennsylvania</option>\n <option value=\"rhode_island\">Rhode Island</option>\n <option value=\"south_carolina\">South Carolina</option>\n <option value=\"south_dakota\">South Dakota</option>\n <option value=\"tennessee\">Tennessee</option>\n <option value=\"texas\">Texas</option>\n <option value=\"utah\">Utah</option>\n <option value=\"vermont\">Vermont</option>\n <option value=\"virginia\">Virginia</option>\n <option value=\"washington\">Washington</option>\n <option value=\"west_virginia\">West Virginia</option>\n <option value=\"wisconsin\">Wisconsin</option>\n <option value=\"wyoming\">Wyoming</option>\n </optgroup>\n <optgroup label=\"Canadian Provinces and Territories\">\n <option value=\"alberta\">Alberta</option>\n <option value=\"british_columbia\">British Columbia</option>\n <option value=\"manitoba\">Manitoba</option>\n <option value=\"new_brunswick\">New Brunswick</option>\n <option value=\"newfoundland_and_labrador\">Newfoundland and Labrador</option>\n <option value=\"northwest_territories\">Northwest Territories</option>\n <option value=\"nova_scotia\">Nova Scotia</option>\n <option value=\"nunavut\">Nunavut</option>\n <option value=\"ontario\">Ontario</option>\n <option value=\"prince_edward_island\">Prince Edward Island</option>\n <option value=\"quebec\">Quebec</option>\n <option value=\"saskatchewan\">Saskatchewan</option>\n <option value=\"yukon\">Yukon</option>\n </optgroup>\n </Select>\n </div>\n </div>\n </div>\n )}\n </>\n ) : (\n <div className=\"pb-4\">\n <div className=\"mb-4 rounded border border-orange bg-orange-light p-4\">\n Please upload only PDFs or images of your degrees and certifications that we can verify.\n </div>\n <FilePickerDropArea\n onUploadDone={(res) => {\n addCredential({\n filestackDocument: res.filesUploaded[0].url,\n filestackDocumentName: res.filesUploaded[0].filename\n }).then(onMutationComplete)\n }}\n />\n </div>\n )}\n </div>\n </div>\n </NewModal>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { DocumentTextIcon } from \"@heroicons/react/24/outline\"\nimport { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CloseButton } from \"../../components/shared/Buttons\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { capitalize } from \"../../utils/utils\"\n\nimport CredentialsModal, { modalId } from \"./CredentialsModal\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nconst REMOVE_CREDENTIAL_MUTATION = `\n mutation RemoveCredential($credentialId: ID!) {\n removeCredential(credentialId: $credentialId) {\n result\n errors\n }\n }\n`\n\nconst REORDER_CREDENTIALS_MUTATION = `\n mutation ReorderCredentials($credentialArray: [String!]!) {\n reorderCredentials(credentialArray: $credentialArray) {\n result\n errors\n }\n }\n`\n\nconst CredentialRow = ({ proCredential, deleteCredential }) => {\n const fallbackFilename = proCredential.createdAt\n ? `file_upload_${proCredential.createdAt.split(\"T\")[0].replace(/-/g, \"_\")}`\n : \"file_upload\"\n const suffix =\n proCredential.state === \"pending\" ? <span className=\"flex-none text-gray-dark\"> (Pending review)</span> : null\n\n return (\n <>\n <div className=\"flex items-center justify-between font-bold\">\n <div className=\"truncate\">\n {proCredential.credential?.name || proCredential.filestackDocumentName || fallbackFilename}\n </div>\n <CloseButton className=\"flex-none\" onClick={() => deleteCredential(proCredential)} />\n </div>\n <Typography variant=\"small\" as=\"div\" className=\"w-11/12\">\n {proCredential.licenseNumber ? (\n <>\n {proCredential.licenseNumber}\n {proCredential.stateIssued ? ` • ${capitalize(proCredential.stateIssued)}` : \"\"}\n {suffix}\n </>\n ) : (\n <div className=\"flex items-center gap-1\">\n <DocumentTextIcon className=\"h-4 w-4 flex-none\" />\n <span className=\"flex-1 truncate\">{proCredential.filestackDocumentName || fallbackFilename}</span>\n {suffix}\n </div>\n )}\n </Typography>\n </>\n )\n}\n\nconst Credentials = ({ proCredentials: proCredentialsProp }) => {\n const [proCredentials, setProCredentials] = useState(proCredentialsProp)\n const [credentialToDelete, setCredentialToDelete] = useState(null)\n\n const [, removeCredential] = useMutation(REMOVE_CREDENTIAL_MUTATION)\n const [, reorderCredentials] = useMutation(REORDER_CREDENTIALS_MUTATION)\n\n const { showToast } = useToast()\n\n const approvedCredentials = proCredentials.filter((proCredential) => proCredential.state === \"approved\")\n const pendingCredentials = proCredentials.filter((proCredential) => proCredential.state === \"pending\")\n const deleteCredentialModalId = \"delete-credential-modal\"\n\n const deleteCredential = (credential) => {\n showToast({\n type: \"info\",\n content: \"Credential was deleted successfully.\"\n })\n setProCredentials((credentials) => credentials.filter((c) => c.id !== credential.id))\n NiceModal.remove(deleteCredentialModalId)\n\n removeCredential({ credentialId: credential.id }).then((result) => {\n if (result?.data?.removeCredential?.result !== \"success\") {\n console.error(result) // eslint-disable-line no-console\n showToast({\n type: \"error\",\n content:\n \"There was an error removing your credential. Please try again or contact support if the error persists.\"\n })\n }\n })\n }\n\n const showDeleteModal = (proCredential) => {\n setCredentialToDelete(proCredential)\n NiceModal.show(deleteCredentialModalId)\n }\n\n return (\n <>\n <div className=\"w-[600px] md:w-full\">\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n Credentials\n </Typography>\n <Typography variant=\"subtitle\">Add or edit your credentials.</Typography>\n </div>\n </div>\n {proCredentials.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Credentials\" onButtonClick={() => NiceModal.show(modalId)}>\n Add any licenses, degrees, or certifications.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </ProfilePageEmptyStateBox>\n ) : (\n <div data-test-id=\"credentials\">\n <Box>\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-4\">\n <Typography variant=\"capitalHeading\">Approved</Typography>\n <div data-tooltip-id=\"disabled-tooltip\">\n <Button\n floatingInMobile={true}\n disabled={proCredentials.length >= 5}\n onClick={() => NiceModal.show(modalId)}>\n Add new\n </Button>\n </div>\n {proCredentials.length >= 5 && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content=\"Note: You can add a maximum of 5 credentials.\"\n />\n )}\n </div>\n <div className=\"pt-6 sm:pt-0\">\n {approvedCredentials.length === 0 ? (\n <Typography variant=\"subtitle\">No approved credentials yet.</Typography>\n ) : (\n <ReactSortable\n list={approvedCredentials}\n setList={(newPositions) => {\n const newCredentials = newPositions.concat(pendingCredentials)\n if (JSON.stringify(newCredentials) !== JSON.stringify(proCredentials)) {\n const newOrder = newCredentials.map((proCredential, i) =>\n JSON.stringify({ id: proCredential.id, position: i + 1 })\n )\n reorderCredentials({ credentialArray: newOrder }).then((result) => {\n if (result?.data?.reorderCredentials?.result !== \"success\") {\n console.error(result) // eslint-disable-line no-console\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n })\n }\n })\n setProCredentials(newCredentials)\n }\n }}>\n {approvedCredentials.map((proCredential, i) => (\n <React.Fragment key={proCredential.id}>\n <div className=\"flex cursor-grab items-center\">\n <div\n className={twMerge(\n \"py-4\",\n i === approvedCredentials.length - 1 ? \"pb-0\" : i === 0 ? \"pt-0\" : \"\"\n )}>\n <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n </div>\n <div\n className={twMerge(\n \"w-full border-b border-gray-light py-4\",\n i === approvedCredentials.length - 1 ? \"border-none pb-0\" : i === 0 ? \"pt-0\" : \"\"\n )}>\n <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n </div>\n </div>\n </React.Fragment>\n ))}\n </ReactSortable>\n )}\n </div>\n </Box>\n {pendingCredentials.length > 0 && (\n <Box className=\"mt-8 flex flex-col gap-4\">\n <Typography variant=\"capitalHeading\">Pending</Typography>\n {pendingCredentials.map((proCredential) => (\n <div key={proCredential.id} className=\"flex items-center\">\n <div className=\"w-full\">\n <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n </div>\n </div>\n ))}\n </Box>\n )}\n </div>\n )}\n <CredentialsModal setProCredentials={setProCredentials} />\n <NewModal\n id={deleteCredentialModalId}\n header=\"Delete credential\"\n showFooter={true}\n onSave={() => {\n deleteCredential(credentialToDelete)\n setCredentialToDelete(null)\n }}\n cancelButtonCopy=\"No, don't delete\"\n actionButtonType=\"destructive\"\n actionButtonCopy=\"Yes, delete\">\n <p>\n This will remove the credential <b>{credentialToDelete?.credential?.name}</b> from your profile.\n </p>\n </NewModal>\n </div>\n </>\n )\n}\n\nexport default function ProfileEditCredentialsV2({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Credentials {...props} />\n </ProfileEditProvider>\n )\n}\n","import { CheckIcon } from \"@heroicons/react/24/outline\"\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/solid\"\nimport { loadStripe } from \"@stripe/stripe-js\"\nimport React, { useEffect, useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport { ButtonLink, UnderlinedLink } from \"../../components/shared/Links\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport ProgressBar from \"../../components/shared/ProgressBar\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { urqlClient } from \"../../utils/utils\"\n\nconst VERIFICATION_SESSION_QUERY = `\n query VerificationSession {\n verificationSession\n }\n`\n\nconst stripePromise = typeof window !== \"undefined\" ? loadStripe(`${window.App.stripe_key}`) : null\n\nconst Step = ({ step, kind, number, onClick }) => {\n const Tag = step.link ? \"a\" : onClick ? \"button\" : \"div\"\n\n return (\n <li>\n <Tag href={step.link} className=\"flex items-center gap-3\" onClick={onClick}>\n <div\n className={`flex h-6 w-6 flex-none items-center justify-center rounded-full ${\n kind === \"completed\" ? \"bg-gray\" : kind === \"current\" ? \"bg-gray-dark\" : \"border border-gray-dark\"\n }`}>\n {kind === \"completed\" ? (\n <CheckIcon className=\"h-4 w-4 stroke-[3px] text-gray-dark\" />\n ) : (\n <span className={kind === \"current\" ? \"font-bold text-white\" : \"text-gray-dark\"}>{number}</span>\n )}\n </div>\n <span\n className={\n kind === \"completed\"\n ? \"text-gray-dark line-through\"\n : kind === \"current\"\n ? \"font-bold text-black underline\"\n : \"text-gray-dark\"\n }>\n {step.name}\n </span>\n </Tag>\n </li>\n )\n}\n\nconst ProfileChecklist = ({ className }) => {\n const { profileStatusData } = useProfileStatus()\n const [showModal, setShowModal] = useState(false)\n const [modalShown, setModalShown] = useState(false)\n const profilePublished = profileStatusData.status === \"Verified\"\n const notVerified = profileStatusData.status === \"Not Published\"\n\n useEffect(() => {\n if (profileStatusData.showCompletedModal && !modalShown) {\n setShowModal(true)\n setModalShown(true)\n }\n })\n\n const steps =\n profileStatusData.status === \"Incomplete - Not Published\"\n ? profileStatusData.completionSteps\n : profileStatusData.verificationSteps\n const indexOfCurrentStep = steps.findIndex((step) => !step.completed)\n let progressPercentage =\n profileStatusData.completionSteps.map((step) => step.completed).filter((c) => c).length /\n profileStatusData.completionSteps.length\n progressPercentage = `${Math.round(progressPercentage * 100)}%`\n\n const startVerification = async () => {\n const stripe = await stripePromise\n\n if (!stripe) return\n\n const result = await urqlClient.query(VERIFICATION_SESSION_QUERY).toPromise()\n if (!result.data?.verificationSession) {\n console.error(result.error)\n }\n\n const { error } = await stripe.verifyIdentity(result.data.verificationSession)\n\n if (error) {\n console.error(error)\n } else {\n console.log(\"Verification submitted!\")\n }\n }\n\n return (\n <>\n <Box className={className}>\n <div className=\"font-bold\">\n Profile status:{\" \"}\n <span className={profilePublished ? \"text-teal\" : \"text-red\"}>{profileStatusData.status}</span>\n </div>\n <Typography variant=\"subtitle\" className=\"mt-2\">\n {notVerified ? (\n <>\n Verified profiles rank higher in search and get a profile badge.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8448233-what-is-profile-verification-and-why-should-i-do-it\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </>\n ) : profilePublished ? (\n <>\n Well done {profileStatusData.practitionerFirstName}! Now that you're verified, check out your new\n badge.\n </>\n ) : (\n <>\n You must finish each step for your profile to be complete.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8545385-how-best-to-set-up-your-profile#h_3a7fc229ba\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </>\n )}\n </Typography>\n {profileStatusData.status === \"Incomplete - Not Published\" && (\n <ProgressBar className=\"mt-6 sm:hidden\" percentComplete={progressPercentage} />\n )}\n <ul className=\"mt-6 flex flex-col gap-3\">\n {steps.map((step, i) => (\n <Step\n key={step.name}\n step={step}\n kind={step.completed ? \"completed\" : indexOfCurrentStep === i ? \"current\" : \"incomplete\"}\n onClick={step.name === \"Verify your identity\" ? startVerification : null}\n number={i + 1}\n />\n ))}\n </ul>\n {profileStatusData.status === \"Not Published\" ? (\n <div className=\"mt-6\">\n {!profileStatusData.verificationSteps[1].completed ? (\n <Button onClick={startVerification}>Verify identity</Button>\n ) : (\n <ButtonLink\n href=\"https://help.heal.me/en/articles/8421792-how-can-i-get-reviews-from-existing-clients\"\n target=\"_blank\">\n Get client reviews\n </ButtonLink>\n )}\n </div>\n ) : profileStatusData.status === \"Verified\" ? (\n <div className=\"mt-6\">\n <ButtonLink href={profileStatusData.profileUrl} target=\"_blank\">\n View my profile\n </ButtonLink>\n </div>\n ) : null}\n {profileStatusData.status === \"Incomplete - Not Published\" && (\n <>\n <Divider className=\"-mx-8 box-content px-8\" />\n <div className=\"flex items-start gap-3\">\n <div className=\"flex h-6 w-6 flex-none\">\n <QuestionMarkCircleIcon className=\"text-gray-dark\" />\n </div>\n <div>\n <div className=\"mb-4\">Are you curious about how best to complete your profile?</div>\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8545385-how-best-to-set-up-your-profile-to-get-clients\"\n target=\"_blank\">\n Watch a quick video\n </UnderlinedLink>\n </div>\n </div>\n </>\n )}\n {profileStatusData.status !== \"Incomplete - Not Published\" && notVerified && (\n <>\n <Divider className=\"-mx-8 box-content px-8\" />\n <div className=\"flex items-start gap-3\">\n <div className=\"flex h-6 w-6 flex-none\">\n <QuestionMarkCircleIcon className=\"text-gray-dark\" />\n </div>\n <div>\n <span className=\"font-bold\">Please note:</span> To get published and show in search results, your\n profile needs to be verified.\n </div>\n </div>\n </>\n )}\n </Box>\n <AnimatedModal visible={showModal} hideModal={() => setShowModal(false)}>\n <div className=\"flex flex-col items-center\">\n <div className=\"mt-6 text-[40px]\">ðŸ˜</div>\n <Typography variant=\"h3\" as=\"h2\">\n Great work setting up your profile!\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-2 max-w-xs\">\n Give yourself a high-five! The next step is getting your profile verified.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8448233-what-is-profile-verification-and-why-should-i-do-it\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </Typography>\n <Button className=\"mb-4 mt-6\" size=\"large\" onClick={startVerification}>\n Verify my identity\n </Button>\n </div>\n </AnimatedModal>\n </>\n )\n}\n\nexport default ProfileChecklist\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport React from \"react\"\n\nimport AcceptTermsModal from \"../../components/shared/AcceptTermsModal\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport { TabNavLink } from \"../../components/shared/Links\"\nimport ListBox from \"../../components/shared/ListBox\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\n\nimport ProfileChecklist from \"./ProfileChecklist\"\n\nconst NAV_ITEMS = [\n { title: \"Details\", path: \"/portal/profile\" },\n { title: \"Credentials\", path: \"/portal/profile/credentials\" },\n { title: \"Endorsements\", path: \"/portal/profile/endorsements\" },\n { title: \"Photos\", path: \"/portal/profile/photos\" },\n { title: \"Locations & Hours\", path: \"/portal/profile/locations\" },\n { title: \"Services\", path: \"/portal/profile/services\" },\n { title: \"Misc\", path: \"/portal/profile/audience\" }\n]\n\nconst SELECT_ITEMS = NAV_ITEMS.map((item) => ({ value: item.path, label: `${item.title}` }))\n\nconst ProfileEditView = ({ path, children }) => {\n const { profileStatusData } = useProfileStatus()\n const profileVerified = profileStatusData.status === \"Complete\"\n const notVerified = profileStatusData.status === \"Not Published\"\n const modalId = \"verification-modal\"\n\n return (\n <>\n <div>\n <Typography variant=\"h3\" as=\"h1\">\n Profile\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n Edit or add to your profile here.\n </Typography>\n {profileVerified && (\n <Typography variant=\"subtitle\" className={notVerified ? \"hidden text-red sm:block\" : \"hidden sm:block\"}>\n Your profile is not {notVerified ? \"verified\" : \"published\"}.{\" \"}\n </Typography>\n )}\n <Button type=\"link\" onClick={() => NiceModal.show(modalId)}>\n Learn more\n </Button>\n <div className=\"mt-4 flex gap-8 border-b border-gray-light sm:hidden\">\n {NAV_ITEMS.map((item) => (\n <TabNavLink key={item.title} href={item.path} active={path === item.path}>\n {item.title}\n </TabNavLink>\n ))}\n </div>\n <div className=\"mt-2 hidden sm:block\">\n <ListBox\n value={SELECT_ITEMS.find((item) => item.value === path)}\n onChange={(item) => {\n if (typeof window !== \"undefined\") window.location = item.value\n }}\n options={SELECT_ITEMS}\n buttonHint=\"(tap to navigate)\"\n />\n </div>\n <div className=\"mt-4 flex items-start gap-8 pt-4 sm:mt-2\">\n <div className=\"w-[572px] sm:w-full\">{children}</div>\n <ProfileChecklist className=\"w-[360px] sm:hidden\" />\n </div>\n </div>\n <NewModal id={modalId}>\n <ProfileChecklist className=\"border-none p-0\" />\n </NewModal>\n <AcceptTermsModal showModal={profileStatusData?.showTermsModal} />\n </>\n )\n}\n\nexport default ProfileEditView\n","import { LinkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { CheckBox, EditableValue, InputWithLabel } from \"../components/shared/Inputs\"\nimport { Input } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { UPDATE_PRACTICE_DETAILS_MUTATION } from \"../utils/mutations\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst Audience = ({ path, practice, allLanguages, allWorkWiths, allAgeWorkWiths }) => {\n const [practiceDetails, setPracticeDetails] = useState(practice)\n const [openField, setOpenField] = useState(null)\n const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(practiceDetails)\n const [{ fetching }, updatePracticeDetails] = useMutation(UPDATE_PRACTICE_DETAILS_MUTATION)\n\n const { showToast } = useToast()\n\n const languageIds = practiceDetails.languages.map((l) => Number(l.id))\n const ageWorkWithIds = practiceDetails.ageWorkWiths.map((a) => Number(a.id))\n const workWithIds = practiceDetails.workWiths.map((w) => Number(w.id))\n\n const onOpened = (fieldName) => {\n setOpenField(fieldName)\n }\n\n const onSave = () => {\n const variables = {\n languageIds: practiceDetails.languages?.map((l) => l.id),\n ageWorkWithIds: practiceDetails.ageWorkWiths?.map((a) => a.id),\n workWithIds: practiceDetails.workWiths?.map((w) => w.id),\n website: practiceDetails.website,\n facebook: practiceDetails.facebook,\n instagram: practiceDetails.instagram,\n twitter: practiceDetails.twitter,\n linkedin: practiceDetails.linkedin,\n tiktok: practiceDetails.tiktok,\n youtube: practiceDetails.youtube\n }\n const setVariables = Object.fromEntries(Object.entries(variables).filter(([, v]) => v !== null))\n updatePracticeDetails(setVariables).then((result) => {\n if (result.data?.updatePracticeDetails) {\n setPracticeDetails(result.data.updatePracticeDetails.practice)\n setLastSavedDetailsValues(result.data.updatePracticeDetails.practice)\n setOpenField(null)\n showToast(\"Changes saved\")\n } else {\n console.error(result)\n showToast({ type: \"error\", content: `Error saving changes: ${result.error}` })\n }\n })\n }\n\n const socialsValue = [\n practiceDetails.facebook,\n practiceDetails.instagram,\n practiceDetails.twitter,\n practiceDetails.linkedin,\n practiceDetails.tiktok,\n practiceDetails.youtube\n ]\n .filter((link) => link)\n .map((link) => link.replace(/(^\\w+:|^)\\/\\//, \"\"))\n .join(\", \")\n\n return (\n <ProfileEditView path={path}>\n <Box>\n <EditableValue\n name=\"Languages I speak\"\n hint=\"Set which languages you speak.\"\n saveDisabled={practiceDetails.languages === lastSavedDetailsValues.languages}\n value={practiceDetails.languages.map((l) => l.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Languages I speak\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"grid grid-cols-2\">\n {allLanguages.map((language) => (\n <CheckBox\n key={language.id}\n label={language.name}\n checked={languageIds.includes(language.id)}\n onChange={() =>\n languageIds.includes(language.id)\n ? setPracticeDetails({\n ...practiceDetails,\n languages: practiceDetails.languages.filter((l) => Number(l.id) !== Number(language.id))\n })\n : setPracticeDetails({\n ...practiceDetails,\n languages: [...practiceDetails.languages, language]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Client ages I work with\"\n hint=\"Set which age groups you work with.\"\n saveDisabled={practiceDetails.ageWorkWiths === lastSavedDetailsValues.ageWorkWiths}\n value={practiceDetails.ageWorkWiths.map((a) => a.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Client ages I work with\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col\">\n {allAgeWorkWiths.map((ageWorkWith) => (\n <CheckBox\n key={ageWorkWith.id}\n label={ageWorkWith.name}\n checked={ageWorkWithIds.includes(ageWorkWith.id)}\n onChange={() =>\n ageWorkWithIds.includes(ageWorkWith.id)\n ? setPracticeDetails({\n ...practiceDetails,\n ageWorkWiths: practiceDetails.ageWorkWiths.filter(\n (a) => Number(a.id) !== Number(ageWorkWith.id)\n )\n })\n : setPracticeDetails({\n ...practiceDetails,\n ageWorkWiths: [...practiceDetails.ageWorkWiths, ageWorkWith]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Client types I work with\"\n hint=\"Set which types of clients you work with.\"\n saveDisabled={practiceDetails.workWiths === lastSavedDetailsValues.workWiths}\n value={practiceDetails.workWiths.map((w) => w.name).join(\", \")}\n disabled={fetching || (openField && openField !== \"Client types I work with\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col\">\n {allWorkWiths.map((workWith) => (\n <CheckBox\n key={workWith.id}\n label={workWith.name}\n checked={workWithIds.includes(workWith.id)}\n onChange={() =>\n workWithIds.includes(workWith.id)\n ? setPracticeDetails({\n ...practiceDetails,\n workWiths: practiceDetails.workWiths.filter((w) => Number(w.id) !== Number(workWith.id))\n })\n : setPracticeDetails({\n ...practiceDetails,\n workWiths: [...practiceDetails.workWiths, workWith]\n })\n }\n />\n ))}\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Website\"\n hint=\"Optional: Add your website for clients to learn more about you.\"\n value={practiceDetails.website?.replace(/(^\\w+:|^)\\/\\//, \"\")}\n saveDisabled={practiceDetails.website === lastSavedDetailsValues.website}\n disabled={fetching || (openField && openField !== \"Website\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"relative\">\n <Input\n className=\"pl-10\"\n name=\"Website\"\n explanatorySubtext=\"Copy and paste your website link\"\n value={practiceDetails.website || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, website: e.target.value }))}\n />\n <LinkIcon className=\"absolute left-2.5 top-2 h-6 w-6 text-gray-dark\" />\n </div>\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Social accounts\"\n hint=\"Optional: Add Instagram, Facebook, TikTok, LinkedIn, Youtube or Twitter/X account(s).\"\n value={socialsValue}\n saveDisabled={\n practiceDetails.facebook === lastSavedDetailsValues.facebook &&\n practiceDetails.instagram === lastSavedDetailsValues.instagram &&\n practiceDetails.tiktok === lastSavedDetailsValues.tiktok &&\n practiceDetails.linkedin === lastSavedDetailsValues.linkedin &&\n practiceDetails.twitter === lastSavedDetailsValues.twitter &&\n practiceDetails.youtube === lastSavedDetailsValues.youtube\n }\n disabled={fetching || (openField && openField !== \"Social accounts\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setPracticeDetails(lastSavedDetailsValues)\n }}>\n <div className=\"flex flex-col gap-4\">\n <InputWithLabel\n label=\"Instagram\"\n name=\"Instagram\"\n explanatorySubtext=\"Copy and paste your Instagram profile link\"\n value={practiceDetails.instagram || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, instagram: e.target.value }))}\n />\n <InputWithLabel\n label=\"Facebook\"\n name=\"Facebook\"\n explanatorySubtext=\"Copy and paste your Facebook profile link\"\n value={practiceDetails.facebook || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, facebook: e.target.value }))}\n />\n <InputWithLabel\n label=\"TiKTok\"\n name=\"TikTok\"\n explanatorySubtext=\"Copy and paste your TikTok profile link\"\n value={practiceDetails.tiktok || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, tiktok: e.target.value }))}\n />\n <InputWithLabel\n label=\"LinkedIn\"\n name=\"LinkedIn\"\n explanatorySubtext=\"Copy and paste your LinkedIn profile link\"\n value={practiceDetails.linkedin || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, linkedin: e.target.value }))}\n />\n <InputWithLabel\n label=\"Twitter / X\"\n name=\"Twitter\"\n explanatorySubtext=\"Copy and paste your Twitter profile link\"\n value={practiceDetails.twitter || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, twitter: e.target.value }))}\n />\n <InputWithLabel\n label=\"YouTube\"\n name=\"YouTube\"\n explanatorySubtext=\"Copy and paste your YouTube profile link\"\n value={practiceDetails.youtube || \"\"}\n onChange={(e) => setPracticeDetails((values) => ({ ...values, youtube: e.target.value }))}\n />\n </div>\n </EditableValue>\n </Box>\n </ProfileEditView>\n )\n}\n\nexport default function ProfileEditAudience({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Audience {...props} />\n </ProfileEditProvider>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { DocumentTextIcon } from \"@heroicons/react/24/outline\"\nimport { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CloseButton } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport { NewModal } from \"../components/shared/Modal\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { capitalize } from \"../utils/utils\"\n\nimport CredentialsModal, { modalId } from \"./ProfileEdit/CredentialsModal\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst REMOVE_CREDENTIAL_MUTATION = `\n mutation RemoveCredential($credentialId: ID!) {\n removeCredential(credentialId: $credentialId) {\n result\n errors\n }\n }\n`\n\nconst REORDER_CREDENTIALS_MUTATION = `\n mutation ReorderCredentials($credentialArray: [String!]!) {\n reorderCredentials(credentialArray: $credentialArray) {\n result\n errors\n }\n }\n`\n\nconst CredentialRow = ({ proCredential, deleteCredential }) => {\n const fallbackFilename = proCredential.createdAt\n ? `file_upload_${proCredential.createdAt.split(\"T\")[0].replace(/-/g, \"_\")}`\n : \"file_upload\"\n const suffix =\n proCredential.state === \"pending\" ? <span className=\"flex-none text-gray-dark\"> (Pending review)</span> : null\n\n return (\n <>\n <div className=\"flex items-center justify-between font-bold\">\n <div className=\"truncate\">\n {proCredential.credential?.name || proCredential.filestackDocumentName || fallbackFilename}\n </div>\n <CloseButton className=\"flex-none\" onClick={() => deleteCredential(proCredential)} />\n </div>\n <Typography variant=\"small\" as=\"div\" className=\"w-11/12\">\n {proCredential.licenseNumber ? (\n <>\n {proCredential.licenseNumber}\n {proCredential.stateIssued ? ` • ${capitalize(proCredential.stateIssued)}` : \"\"}\n {suffix}\n </>\n ) : (\n <div className=\"flex items-center gap-1\">\n <DocumentTextIcon className=\"h-4 w-4 flex-none\" />\n <span className=\"flex-1 truncate\">{proCredential.filestackDocumentName || fallbackFilename}</span>\n {suffix}\n </div>\n )}\n </Typography>\n </>\n )\n}\n\nconst Credentials = ({ path, proCredentials: proCredentialsProp }) => {\n const { profileStatusData, syncProfileStatus } = useProfileStatus()\n const [proCredentials, setProCredentials] = useState(proCredentialsProp)\n const [credentialToDelete, setCredentialToDelete] = useState(null)\n\n const [, removeCredential] = useMutation(REMOVE_CREDENTIAL_MUTATION)\n const [, reorderCredentials] = useMutation(REORDER_CREDENTIALS_MUTATION)\n\n const { showToast } = useToast()\n\n const approvedCredentials = proCredentials.filter((proCredential) => proCredential.state === \"approved\")\n const pendingCredentials = proCredentials.filter((proCredential) => proCredential.state === \"pending\")\n const deleteCredentialModalId = \"delete-credential-modal\"\n\n const deleteCredential = (credential) => {\n showToast({\n type: \"info\",\n content: \"Credential was deleted successfully.\"\n })\n setProCredentials((credentials) => credentials.filter((c) => c.id !== credential.id))\n NiceModal.remove(deleteCredentialModalId)\n syncProfileStatus()\n removeCredential({ credentialId: credential.id }).then((result) => {\n if (result?.data?.removeCredential?.result !== \"success\") {\n console.error(result)\n showToast({\n type: \"error\",\n content:\n \"There was an error removing your credential. Please try again or contact support if the error persists.\"\n })\n }\n })\n }\n\n const showDeleteModal = (proCredential) => {\n setCredentialToDelete(proCredential)\n NiceModal.show(deleteCredentialModalId)\n }\n\n return (\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n {proCredentials.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Credentials\" onButtonClick={() => NiceModal.show(modalId)}>\n Add any licenses, degrees, or certifications.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8440296-what-credentials-should-i-add-to-my-profile\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </ProfilePageEmptyStateBox>\n ) : (\n <div data-test-id=\"credentials\">\n <Box>\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-4\">\n <Typography variant=\"capitalHeading\">Approved</Typography>\n <div data-tooltip-id=\"disabled-tooltip\">\n <Button\n floatingInMobile={true}\n disabled={proCredentials.length >= 5}\n onClick={() => NiceModal.show(modalId)}>\n Add new\n </Button>\n </div>\n {proCredentials.length >= 5 && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content=\"Note: You can add a maximum of 5 credentials.\"\n />\n )}\n </div>\n <div className=\"pt-6 sm:pt-0\">\n {approvedCredentials.length === 0 ? (\n <Typography variant=\"subtitle\">No approved credentials yet.</Typography>\n ) : (\n <ReactSortable\n list={approvedCredentials}\n setList={(newPositions) => {\n const newCredentials = newPositions.concat(pendingCredentials)\n if (JSON.stringify(newCredentials) !== JSON.stringify(proCredentials)) {\n const newOrder = newCredentials.map((proCredential, i) =>\n JSON.stringify({ id: proCredential.id, position: i + 1 })\n )\n reorderCredentials({ credentialArray: newOrder }).then((result) => {\n if (result?.data?.reorderCredentials?.result !== \"success\") {\n console.error(result)\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n })\n }\n })\n setProCredentials(newCredentials)\n }\n }}>\n {approvedCredentials.map((proCredential, i) => (\n <React.Fragment key={proCredential.id}>\n <div className=\"flex cursor-grab items-center\">\n <div\n className={twMerge(\n \"py-4\",\n i === approvedCredentials.length - 1 ? \"pb-0\" : i === 0 ? \"pt-0\" : \"\"\n )}>\n <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n </div>\n <div\n className={twMerge(\n \"w-full border-b border-gray-light py-4\",\n i === approvedCredentials.length - 1 ? \"border-none pb-0\" : i === 0 ? \"pt-0\" : \"\"\n )}>\n <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n </div>\n </div>\n </React.Fragment>\n ))}\n </ReactSortable>\n )}\n </div>\n </Box>\n {pendingCredentials.length > 0 && (\n <Box className=\"mt-8 flex flex-col gap-4\">\n <Typography variant=\"capitalHeading\">Pending</Typography>\n {pendingCredentials.map((proCredential) => (\n <div key={proCredential.id} className=\"flex items-center\">\n <div className=\"w-full\">\n <CredentialRow proCredential={proCredential} deleteCredential={showDeleteModal} />\n </div>\n </div>\n ))}\n </Box>\n )}\n </div>\n )}\n <CredentialsModal setProCredentials={setProCredentials} />\n <NewModal\n id={deleteCredentialModalId}\n header=\"Delete credential\"\n showFooter={true}\n onSave={() => {\n deleteCredential(credentialToDelete)\n setCredentialToDelete(null)\n }}\n cancelButtonCopy=\"No, don't delete\"\n actionButtonType=\"destructive\"\n actionButtonCopy=\"Yes, delete\">\n <p>\n This will remove the credential <b>{credentialToDelete?.credential?.name}</b> from your profile.\n </p>\n </NewModal>\n </ProfileEditView>\n )\n}\n\nexport default function ProfileEditCredentials({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Credentials {...props} />\n </ProfileEditProvider>\n )\n}\n","import { PlusIcon } from \"@heroicons/react/24/outline\"\nimport { PencilIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation } from \"urql\"\n\nimport { FilePicker } from \"../components/shared/FileStackWidgets\"\nimport { EditableValue, Input, ShortUrlInput, TextArea } from \"../components/shared/Inputs\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport PlacesAutocomplete from \"../components/shared/PlacesAutocomplete\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\nimport { stripUSAFromString } from \"../utils/utils\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst UPDATE_INFO_MUTATION = `\n mutation UpdateInfo($name: String, $location: String, $locationId: String, $title: String, $headline: String, $about: String $shortLink: String) {\n updateInfo(name: $name, location: $location, locationId: $locationId, title: $title, headline: $headline, about: $about, shortLink: $shortLink) {\n result\n errors\n profileDetails { name location title headline shortLink }\n }\n }\n`\n\nconst UPDATE_USER_PHOTO_MUTATION = `\n mutation UpdateUserPhoto($handle: String!) {\n updateUserPhoto(handle: $handle) {\n result\n errors\n photoUrl\n }\n }\n`\n\nconst Details = ({ details, path, photoUrl, allShortLinks }) => {\n const { profileStatusData, syncProfileStatus } = useProfileStatus()\n const [detailsValues, setDetailsValues] = useState(details)\n const [photoUrlValue, setPhotoUrlValue] = useState(photoUrl)\n const [lastSavedDetailsValues, setLastSavedDetailsValues] = useState(details)\n const [openField, setOpenField] = useState(null)\n\n const [{ fetching: infoFetching }, updateInfo] = useMutation(UPDATE_INFO_MUTATION)\n const [{ fetching: photoFetching }, updateUserPhoto] = useMutation(UPDATE_USER_PHOTO_MUTATION)\n\n const fetching = infoFetching || photoFetching\n\n const { showToast } = useToast()\n\n const { name, location, title, headline, about, shortLink } = detailsValues\n\n const onSave = () => {\n updateInfo(detailsValues).then((result) => {\n setOpenField(null)\n if (result?.data?.updateInfo?.result === \"success\") {\n setLastSavedDetailsValues(result.data.updateInfo.profileDetails)\n syncProfileStatus()\n showToast(\"Your profile details have been saved.\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error saving your profile details. Please try again later or contact support.\"\n if (result.data?.updateInfo?.errors) errorMessage += ` ${result.data.updateInfo.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n const onOpened = (fieldName) => {\n setOpenField(fieldName)\n }\n\n const onUploadDone = (res) => {\n updateUserPhoto({\n handle: res.filesUploaded[0].handle\n }).then((result) => {\n setOpenField(null)\n if (result?.data?.updateUserPhoto?.result === \"success\") {\n setPhotoUrlValue(result.data.updateUserPhoto.photoUrl)\n syncProfileStatus()\n showToast(\"Your profile photo has been saved.\")\n } else {\n console.error(result) // eslint-disable-line no-console\n let errorMessage = \"There was an error saving your profile photo. Please try again later or contact support.\"\n if (result.data?.updateUserPhoto?.errors) errorMessage += ` ${result.data.updateUserPhoto.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n return (\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n <Box>\n <div className={twMerge(\"mb-4 flex items-center justify-center\", fetching || openField ? \"opacity-50\" : \"\")}>\n {photoUrlValue.indexOf(\"defaults\") > -1 ? (\n <FilePicker\n as=\"button\"\n className={twMerge(\n \"flex cursor-pointer flex-col items-center justify-center gap-2\",\n fetching || openField ? \"pointer-events-none\" : \"\"\n )}\n onUploadDone={onUploadDone}>\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-teal/[0.12]\">\n <PlusIcon className=\"h-6 w-6 text-teal\" />\n </div>\n <div className=\"font-bold text-teal\">Upload headshot</div>\n </FilePicker>\n ) : (\n <div className=\"relative flex h-32 w-32 items-center justify-center\">\n <img className=\"h-full w-full rounded-xl\" src={photoUrlValue} />\n <FilePicker\n className={twMerge(\n \"absolute -right-5 flex h-10 w-10 items-center justify-center rounded-full border border-gray bg-white\",\n fetching || openField ? \"pointer-events-none\" : \"\"\n )}\n onUploadDone={onUploadDone}>\n <PencilIcon className=\"h-5 w-5 text-gray-dark\" />\n </FilePicker>\n </div>\n )}\n </div>\n <div>\n <EditableValue\n name=\"Name\"\n value={name}\n saveDisabled={name === lastSavedDetailsValues.name || name?.length < 2}\n disabled={fetching || (openField && openField !== \"Name\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <Input\n name=\"Name\"\n value={name || \"\"}\n onChange={(e) => setDetailsValues((values) => ({ ...values, name: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Location\"\n hint=\"Where is your practice located?\"\n value={location}\n disabled={fetching || (openField && openField !== \"Location\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <PlacesAutocomplete\n apiKey={process.env.GOOGLE_MAPS_API_KEY}\n name=\"Location\"\n types={[\"locality\", \"administrative_area_level_3\"]}\n onPlaceSelected={(place) => {\n setDetailsValues((values) => ({\n ...values,\n location: stripUSAFromString(place.formatted_address),\n locationId: place.place_id\n }))\n }}\n defaultValue={location ? stripUSAFromString(location) : \"\"}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Title\"\n hint=\"Set what your professional title is. Pro-tip: Keep this as short and clear as possible so it’s easily understood by clients.\"\n value={title}\n saveDisabled={title === lastSavedDetailsValues.title || title?.length < 2}\n disabled={fetching || (openField && openField !== \"Title\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <Input\n name=\"Title\"\n placeholder=\"Ex: Licensed Massage Therapist\"\n value={title || \"\"}\n onChange={(e) => setDetailsValues((values) => ({ ...values, title: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Headline\"\n hint=\"Share your approach to helping your clients.\"\n value={headline}\n saveDisabled={headline === lastSavedDetailsValues.headline || headline?.length < 2}\n disabled={fetching || (openField && openField !== \"Headline\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <TextArea\n name=\"Headline\"\n placeholder=\"Ex: I help people to heal and find their inner wisdom, and make meaningful, lasting change in their lives.\"\n value={headline || \"\"}\n onChange={(e) => setDetailsValues((values) => ({ ...values, headline: e.target.value }))}\n maxLength={200}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"About me\"\n value={about}\n hint=\"Add in a short description about your background and your approach to working with your clients.\"\n saveDisabled={about === lastSavedDetailsValues.about || about?.length < 2}\n disabled={fetching || (openField && openField !== \"About me\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <TextArea\n name=\"About me\"\n value={about || \"\"}\n onChange={(e) => setDetailsValues((values) => ({ ...values, about: e.target.value }))}\n />\n </EditableValue>\n <Divider />\n <EditableValue\n name=\"Short link\"\n hint=\"Set your short profile link so it’s easy to share your profile.\"\n value={shortLink ? `https://heal.me/${shortLink}` : null}\n saveDisabled={\n allShortLinks.includes(shortLink) ||\n shortLink?.length < 1 ||\n shortLink === lastSavedDetailsValues.shortLink\n }\n disabled={fetching || (openField && openField !== \"Short link\")}\n onOpened={onOpened}\n onSave={onSave}\n onCancel={() => {\n setOpenField(null)\n setDetailsValues(lastSavedDetailsValues)\n }}>\n <>\n <ShortUrlInput\n name=\"Short link\"\n value={shortLink || \"\"}\n onChange={(e) => {\n const newValue = e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, \"\")\n setDetailsValues((values) => ({ ...values, shortLink: newValue }))\n }}\n />\n <Typography variant=\"micro\">Only lowercase letters, numbers, hyphen and underscore allowed</Typography>\n {shortLink?.length >= 1 && shortLink !== lastSavedDetailsValues.shortLink && (\n <>\n {allShortLinks.includes(shortLink) ? (\n <div className=\"mt-2 text-red\">This short link is already in use.</div>\n ) : (\n <div className=\"mt-2 text-green\">🎉 This short link is available.</div>\n )}\n </>\n )}\n </>\n </EditableValue>\n </div>\n </Box>\n </ProfileEditView>\n )\n}\n\nexport default function ProfileEditDetails({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Details {...props} />\n </ProfileEditProvider>\n )\n}\n","import React, { useState } from \"react\"\nimport { useHits, useSearchBox } from \"react-instantsearch\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { Label, SearchInput } from \"../../components/shared/Inputs\"\nimport { Flyout } from \"../../components/shared/Layout\"\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport { useProfileStatus } from \"../../contexts/ProfileStatusContext\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst UPDATE_SKILLS = `\n mutation UpdateSkills($skills: [String!]) {\n updateSkills(skills: $skills) {\n result\n skills {\n id\n endorsementsCount\n specialty { id name }\n }\n errors\n }\n }\n`\n\nconst EndorsementButton = ({ specialty, active, onClick, onCloseButtonClick }) => (\n <EndorsementPill\n value={specialty.id.toString()}\n active={active}\n className=\"mb-0 block\"\n onClick={onClick}\n onCloseButtonClick={onCloseButtonClick}>\n {specialty.name}\n </EndorsementPill>\n)\n\nexport const EndorsementsFlyout = ({ specialtiesByLetter, skills, setSkills, visible, closeFlyout }) => {\n const { syncProfileStatus } = useProfileStatus()\n const [searchValue, setSearchValue] = useState(\"\")\n const [selectedSpecialties, setSelectedSpecialties] = useState(skills.map((skill) => skill.specialty.id.toString()))\n\n const [{ fetching }, updateSkills] = useMutation(UPDATE_SKILLS)\n\n const { showToast } = useToast()\n const { refine } = useSearchBox()\n const { hits } = useHits()\n\n const setQuery = (newQuery) => {\n setSearchValue(newQuery)\n refine(newQuery)\n }\n\n const onSpecialtyClick = (e) => {\n setSelectedSpecialties((specialties) => {\n const newSpecialties = [...specialties]\n const specialtyId = e.target.value\n\n if (newSpecialties.includes(specialtyId)) {\n const index = newSpecialties.indexOf(specialtyId)\n newSpecialties.splice(index, 1)\n } else {\n newSpecialties.push(specialtyId)\n }\n return newSpecialties\n })\n }\n\n const onSave = () => {\n updateSkills({ skills: Array.from(selectedSpecialties) }).then((result) => {\n if (result?.data?.updateSkills?.result === \"success\") {\n setSkills(result.data.updateSkills.skills)\n closeFlyout()\n syncProfileStatus()\n showToast(\"Successfully updated keywords\")\n } else {\n showToast({ type: \"error\", content: \"Failed to update keywords\" })\n console.error(result)\n }\n })\n }\n\n return (\n <Flyout\n visible={visible}\n closeFlyout={closeFlyout}\n header=\"Add keywords\"\n footer={\n <div className=\"flex items-center justify-end gap-4\">\n <Button type=\"tertiary\" onClick={closeFlyout} disabled={fetching}>\n Cancel\n </Button>\n <Button type=\"primary\" onClick={onSave} disabled={fetching}>\n Save\n </Button>\n </div>\n }>\n <div className=\"flex flex-col gap-4\">\n <div>\n <Label htmlFor=\"endorsements-search\">Search for topics</Label>\n <SearchInput\n id=\"endorsements-search\"\n containerClassName=\"w-full\"\n value={searchValue}\n explanatorySubtext={\n <div className=\"flex justify-between\">\n <span>Ex: Anxiety, Back pain, etc.</span>\n <span className=\"font-bold\">{selectedSpecialties.length}/50 selected</span>\n </div>\n }\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n {searchValue === \"\" ? (\n <>\n {specialtiesByLetter.map(({ letter, specialties }) => (\n <div key={letter}>\n <div className=\"mb-2 text-sm font-bold uppercase text-gray-dark\">{letter}</div>\n <div className=\"flex flex-wrap gap-2\">\n {specialties.map((specialty) => (\n <EndorsementButton\n specialty={specialty}\n key={specialty.id}\n active={selectedSpecialties.includes(specialty.id.toString())}\n onClick={onSpecialtyClick}\n />\n ))}\n </div>\n </div>\n ))}\n </>\n ) : (\n <div className=\"flex flex-wrap gap-2\">\n {hits.map((hit) => {\n const specialty = { id: hit.objectID, name: hit.name }\n return (\n <EndorsementButton\n key={specialty.id}\n specialty={specialty}\n active={selectedSpecialties.includes(specialty.id)}\n onClick={onSpecialtyClick}\n />\n )\n })}\n {hits.length === 0 && <div>No results found</div>}\n </div>\n )}\n </div>\n </Flyout>\n )\n}\n","import React, { useState } from \"react\"\nimport { Configure } from \"react-instantsearch\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport { EndorsementPill } from \"../components/shared/Pill\"\nimport { AlgoliaSearchProvider } from \"../components/shared/SearchInputs\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport { EndorsementsFlyout } from \"./ProfileEdit/EndorsementsFlyout\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst DELETE_SKILLS = `\n mutation DeleteSkills($skillId: String!) {\n deleteSkills(skillId: $skillId) {\n result\n skills {\n id\n endorsementsCount\n specialty { id name }\n }\n errors\n }\n }\n`\n\nconst MOVE_SKILLS = `\n mutation MoveSkills($skillArray: [String!]!) {\n moveSkills(skillArray: $skillArray) {\n result\n skills {\n id\n endorsementsCount\n specialty { id name }\n }\n errors\n }\n }\n`\n\nconst Endorsements = ({ path, skills, specialtiesByLetter }) => {\n const { profileStatusData } = useProfileStatus()\n const [skillsState, setSkillsState] = useState(skills)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n const [, deleteSkills] = useMutation(DELETE_SKILLS)\n const [, moveSkills] = useMutation(MOVE_SKILLS)\n\n const { showToast } = useToast()\n\n const removeSkill = (skill) => {\n deleteSkills({ skillId: skill.id.toString() }).then((result) => {\n if (result?.data?.deleteSkills?.result === \"success\") {\n setSkillsState(result.data.deleteSkills.skills)\n setFlyoutVisible(false)\n showToast(\"Successfully deleted endorsement topic\")\n } else {\n showToast({ type: \"error\", content: \"Failed to delete endorsement topic\" })\n console.error(result)\n }\n })\n\n const index = skillsState.indexOf(skill)\n if (index !== -1) {\n const copySkills = [...skillsState]\n copySkills.splice(index, 1)\n setSkillsState(copySkills)\n }\n }\n\n return (\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n {skillsState.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Endorsements\" onButtonClick={() => setFlyoutVisible(true)}>\n Why do your clients come to see you? List these here.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8441399-what-are-endorsements-and-which-should-i-pick\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </ProfilePageEmptyStateBox>\n ) : (\n <>\n <Box data-test-id=\"endorsements\">\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-0\">\n <Typography variant=\"capitalHeading\">Endorsements</Typography>\n <div data-tooltip-id=\"disabled-tooltip\">\n <Button floatingInMobile={true} disabled={skills.length >= 50} onClick={() => setFlyoutVisible(true)}>\n Add new\n </Button>\n </div>\n {skills.length >= 50 && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content=\"Note: You can add a maximum of 50 credentials.\"\n />\n )}\n </div>\n <Typography variant=\"subtitle\" className=\"mt-6 sm:mt-2\">\n Drag to re-order each endorsement.\n </Typography>\n <ReactSortable\n className=\"mt-6 flex flex-wrap gap-2 sm:mt-4\"\n list={skillsState}\n setList={(newSkills) => {\n if (JSON.stringify(newSkills) !== JSON.stringify(skillsState)) {\n const newOrder = newSkills.map((skill, i) => JSON.stringify({ id: skill.id, position: i + 1 }))\n setSkillsState(newSkills)\n moveSkills({ skillArray: newOrder }).then((result) => {\n if (result?.data?.moveSkills?.result !== \"success\") {\n console.error(result)\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your endorsement topics. Please try again later or contact support if the error persists.\"\n })\n }\n })\n }\n }}>\n {skillsState.map((skill) => (\n <EndorsementPill key={skill.id} draggable active onCloseButtonClick={() => removeSkill(skill)}>\n {skill.specialty.name}\n </EndorsementPill>\n ))}\n </ReactSortable>\n </Box>\n </>\n )}\n <EndorsementsFlyout\n specialtiesByLetter={specialtiesByLetter}\n skills={skillsState}\n setSkills={setSkillsState}\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n />\n </ProfileEditView>\n )\n}\n\nexport default function ProfileEditEndorsements({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <AlgoliaSearchProvider indexName=\"Specialty\">\n <Configure hitsPerPage={50} filters=\"NOT ordered_kind:1\" />\n <Endorsements {...props} />\n </AlgoliaSearchProvider>\n </ProfileEditProvider>\n )\n}\n","import capitalize from \"lodash/capitalize\"\nimport React, { useState } from \"react\"\n\nimport Badge from \"../components/shared/Badge\"\nimport { Button } from \"../components/shared/Buttons\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\n\nimport DisplayAvailableTimes from \"./ProfileEdit/DisplayAvailableTimes\"\nimport LocationFlyout from \"./ProfileEdit/LocationFlyout\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst Locations = ({ path, locations, defaultAvailableTimes }) => {\n const { profileStatusData } = useProfileStatus()\n const newLocationDefaults = { availableTimes: defaultAvailableTimes, kind: \"office\", virtualType: \"video\" }\n const [locationsState, setLocationsState] = useState(locations)\n const [location, setLocation] = useState(newLocationDefaults)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n const addNewLocation = () => {\n setFlyoutVisible(true)\n setLocation(newLocationDefaults)\n }\n\n return (\n <>\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n {locationsState.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Locations and hours\" onButtonClick={addNewLocation}>\n Add any locations you offer and set your availability for each.\n </ProfilePageEmptyStateBox>\n ) : (\n <Box data-test-id=\"locations\">\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n <Typography variant=\"capitalHeading\">Locations</Typography>\n <Button onClick={addNewLocation}>Add new</Button>\n </div>\n <Button onClick={addNewLocation} floatingInMobile={true} className=\"hidden sm:block\">\n Add new\n </Button>\n <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n {locationsState.map((location) => {\n const title =\n location.kind === \"virtual\"\n ? \"Virtual office\"\n : location.kind === \"home\"\n ? \"In-home\"\n : location.address\n const subTitle =\n location.kind === \"virtual\"\n ? `${capitalize(location.virtualType)} calls`\n : location.kind === \"home\"\n ? \"\"\n : `${location.city}, ${location.stateAbbreviation}`\n return (\n <Box key={location.id}>\n {location.state === \"disabled\" && (\n <div className=\"mb-4\">\n <Badge type=\"error\">Disabled</Badge>\n </div>\n )}\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"title\">{title}</Typography>\n <Button\n type=\"link\"\n onClick={() => {\n setLocation(location)\n setFlyoutVisible(true)\n }}>\n Manage\n </Button>\n </div>\n <Typography variant=\"smSubtitle\">{subTitle}</Typography>\n <DisplayAvailableTimes locationOrService={location} className=\"mt-4\" />\n </Box>\n )\n })}\n </div>\n </Box>\n )}\n </ProfileEditView>\n <LocationFlyout\n key={location.id}\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n location={location}\n setLocation={setLocation}\n locations={locationsState}\n setLocations={setLocationsState}\n />\n </>\n )\n}\n\nexport default function ProfileEditLocations({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Locations {...props} />\n </ProfileEditProvider>\n )\n}\n","import { XMarkIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport { FilePicker } from \"../components/shared/FileStackWidgets\"\nimport { Box, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\n\nconst REMOVE_GALLERY_IMAGE_MUTATION = `\n mutation RemoveGalleryImage($galleryId: ID!) {\n removeGalleryImage(galleryId: $galleryId) {\n result\n errors\n }\n }\n`\n\nconst ADD_GALLERY_IMAGE_MUTATION = `\n mutation AddGalleryImage($handles: [String!]!) {\n addGalleryImage(handles: $handles) {\n result\n errors\n galleryImages {\n id\n defaultPhotoUrl\n }\n }\n }\n`\n\nconst REORDER_GALLERY_IMAGES_MUTATION = `\n mutation ReorderGalleryImages($photosArray: [String!]!) {\n reorderGalleryImages(photosArray: $photosArray) {\n result\n }\n }\n`\n\nconst Photos = ({ path, galleryImages }) => {\n const { profileStatusData, syncProfileStatus } = useProfileStatus()\n const [photos, setPhotos] = useState(galleryImages)\n const [{ fetching: removeImageFetching }, removeGalleryImage] = useMutation(REMOVE_GALLERY_IMAGE_MUTATION)\n const [{ fetching: addImagesFetching }, addGalleryImage] = useMutation(ADD_GALLERY_IMAGE_MUTATION)\n const [, reorderGalleryImages] = useMutation(REORDER_GALLERY_IMAGES_MUTATION)\n\n const { showToast } = useToast()\n\n const loading = removeImageFetching || addImagesFetching\n const disabled = loading\n\n const onUploadDone = (res) => {\n addGalleryImage({\n handles: res.filesUploaded.map((file) => file.handle)\n }).then((result) => {\n if (result?.data?.addGalleryImage?.result === \"success\") {\n setPhotos([...photos, ...result.data.addGalleryImage.galleryImages])\n showToast(\"Your photo has been saved.\")\n syncProfileStatus()\n } else {\n console.error(result)\n let errorMessage = \"There was an error saving your profile photo. Please try again later or contact support.\"\n if (result.data?.addGalleryImage?.errors) errorMessage += ` ${result.data.addGalleryImage.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n const removePhoto = (galleryId) => {\n removeGalleryImage({ galleryId }).then((result) => {\n if (result?.data?.removeGalleryImage?.result === \"success\") {\n setPhotos(photos.filter((photo) => photo.id !== galleryId))\n showToast(\"Successfully deleted photo\")\n syncProfileStatus()\n } else {\n showToast({ type: \"error\", content: \"Failed to delete photo\" })\n console.error(result)\n }\n })\n }\n\n return (\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n <div className={loading ? \"pointer-events-none opacity-25\" : \"\"}>\n {photos.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Photos\">\n Add photos that help clients see what working with you is like.\n <FilePicker maxFiles={10} onUploadDone={onUploadDone} disabled={disabled}>\n <Button className=\"mt-4\" size=\"small\" disabled={disabled}>\n Add now\n </Button>\n </FilePicker>\n </ProfilePageEmptyStateBox>\n ) : (\n <Box>\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6\">\n <Typography variant=\"capitalHeading\">Photos</Typography>\n <div data-tooltip-id=\"disabled-tooltip\">\n <FilePicker maxFiles={10} onUploadDone={onUploadDone} disabled={disabled}>\n <Button size=\"small\" disabled={disabled}>\n Add new\n </Button>\n </FilePicker>\n </div>\n </div>\n <div className=\"my-4\" />\n <Typography className=\"my-4\" variant=\"subtitle\">\n Drag to re-order your photos.\n </Typography>\n <ReactSortable\n className=\"grid grid-cols-2 gap-6\"\n list={photos}\n setList={(newPositions) => {\n if (JSON.stringify(newPositions) !== JSON.stringify(photos)) {\n const newOrder = newPositions.map((photo, i) => JSON.stringify({ id: photo.id, position: i + 1 }))\n reorderGalleryImages({ photosArray: newOrder }).then((result) => {\n if (result?.data?.reorderGalleryImages?.result !== \"success\") {\n console.error(result)\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n })\n }\n })\n setPhotos(newPositions)\n }\n }}>\n {photos.map((photo) => (\n <div key={photo.id} className=\"relative aspect-square cursor-grab\">\n <button\n className=\"absolute right-4 top-4 flex h-10 w-10 items-center justify-center rounded-full border border-gray bg-white sm:right-2 sm:top-2 sm:h-6 sm:w-6\"\n onClick={() => removePhoto(photo.id)}>\n <XMarkIcon className=\"h-6 w-6 stroke-2 text-gray-dark sm:h-5 sm:w-5\" />\n </button>\n <img className=\"h-full w-full\" src={photo.defaultPhotoUrl} alt=\"\" />\n </div>\n ))}\n </ReactSortable>\n </Box>\n )}\n </div>\n </ProfileEditView>\n )\n}\n\nexport default function ProfileEditPhotos({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Photos {...props} />\n </ProfileEditProvider>\n )\n}\n","import { EllipsisVerticalIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport HealMeTooltip from \"../components/shared/HealMeTooltip\"\nimport { Box, Divider, ProfilePageEmptyStateBox } from \"../components/shared/Layout\"\nimport { UnderlinedLink } from \"../components/shared/Links\"\nimport Typography from \"../components/shared/Typography\"\nimport { PracticeProvider } from \"../contexts/PracticeContext\"\nimport { useProfileStatus } from \"../contexts/ProfileStatusContext\"\nimport { useToast } from \"../contexts/ToastContext\"\n\nimport ServiceCard from \"./PortalServices/ServiceCard\"\nimport ProfileEditProvider from \"./ProfileEdit/ProfileEditProvider\"\nimport ProfileEditView from \"./ProfileEdit/ProfileEditView\"\nimport ServiceFlyout from \"./ProfileEdit/ServiceFlyout\"\n\nconst REORDER_SERVICES_MUTATION = `\n mutation ReorderServices($servicesArray: [String!]!) {\n reorderServices(servicesArray: $servicesArray) {\n result\n errors\n }\n }\n`\n\nconst maxNumberOfServices = 25\n\nconst Services = ({ path, services, activeLocations, defaultAvailableTimes }) => {\n const { profileStatusData } = useProfileStatus()\n const newServiceDefaults = { locationIds: [], amountCents: 0, variations: [], name: \"\", description: \"\" }\n const newPackageDefaults = {\n package: true,\n numberOfSessions: 5,\n locationIds: [],\n amountCents: 0,\n variations: [],\n name: \"\",\n description: \"\"\n }\n const [servicesState, setServicesState] = useState(services)\n const [service, setService] = useState(newServiceDefaults)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n const { showToast } = useToast()\n\n const [, reorderServices] = useMutation(REORDER_SERVICES_MUTATION)\n\n const addNewService = () => {\n setFlyoutVisible(true)\n setService(newServiceDefaults)\n }\n\n const addNewPackage = () => {\n setFlyoutVisible(true)\n setService(newPackageDefaults)\n }\n\n const editService = (service) => {\n setService(service)\n setFlyoutVisible(true)\n }\n\n const freeServices = servicesState.filter((service) => service.amountCents === 0)\n const paidServices = servicesState.filter((service) => service.amountCents > 0)\n\n return (\n <>\n <ProfileEditView path={path} profileStatusData={profileStatusData}>\n {activeLocations.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Services\">\n You need to <UnderlinedLink href=\"/portal/profile/locations\">add a location</UnderlinedLink> first in order\n to add services.\n </ProfilePageEmptyStateBox>\n ) : servicesState.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Services\" onButtonClick={addNewService}>\n Add a free service and any paid services you offer.\n </ProfilePageEmptyStateBox>\n ) : (\n <Box data-test-id=\"services\">\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:hidden\">\n <Typography variant=\"capitalHeading\">Services</Typography>\n <div className=\"flex flex-row\" data-tooltip-id=\"disabled-tooltip\">\n <Button\n floatingInMobile={true}\n disabled={services.length >= maxNumberOfServices}\n onClick={addNewService}\n className=\"mr-4\">\n Add service\n </Button>\n <Button\n floatingInMobile={true}\n disabled={services.length >= maxNumberOfServices}\n onClick={addNewPackage}\n className=\"sm:hidden\">\n Add package\n </Button>\n </div>\n {services.length >= maxNumberOfServices && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content={`Note: You can add a maximum of ${maxNumberOfServices} services.`}\n />\n )}\n </div>\n {services.length < maxNumberOfServices && (\n <Button floatingInMobile={true} onClick={addNewService} className=\"hidden sm:block\">\n Add new\n </Button>\n )}\n <div className=\"mt-6 flex flex-col gap-4 sm:mt-0\">\n {freeServices.map((service) => (\n <ServiceCard key={service.id} service={service} onClick={() => editService(service)} />\n ))}\n {paidServices.length > 0 && (\n <>\n {freeServices.length > 0 ? <Divider className=\"sm:my-4\" /> : null}\n <ReactSortable\n className=\"flex flex-col gap-4\"\n list={paidServices}\n setList={(newPositions) => {\n const newServices = freeServices.concat(newPositions)\n if (JSON.stringify(newServices) !== JSON.stringify(servicesState)) {\n const servicesArray = newServices.map((service, i) =>\n JSON.stringify({ id: service.id, position: i + 1 })\n )\n reorderServices({ servicesArray }).then((result) => {\n if (result?.data?.reorderServices?.result !== \"success\") {\n console.error(result)\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your credentials. Please try again later or contact support if the error persists.\"\n })\n }\n })\n setServicesState(newServices)\n }\n }}>\n {paidServices.map((service) => (\n <div key={service.id} className=\"flex cursor-grab items-center\">\n <EllipsisVerticalIcon className=\"mr-4 h-6 w-6 text-gray-dark\" />\n <ServiceCard service={service} onClick={() => editService(service)} />\n </div>\n ))}\n </ReactSortable>\n </>\n )}\n </div>\n </Box>\n )}\n </ProfileEditView>\n <ServiceFlyout\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n service={service}\n setService={setService}\n services={servicesState}\n setServices={setServicesState}\n activeLocations={activeLocations}\n defaultAvailableTimes={defaultAvailableTimes}\n />\n </>\n )\n}\n\nexport default function ProfileEditServices({ profileStatusData, ...props }) {\n return (\n <PracticeProvider>\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <Services {...props} />\n </ProfileEditProvider>\n </PracticeProvider>\n )\n}\n","import dayjs from \"dayjs\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport DatePicker from \"../../components/shared/DatePicker\"\nimport { InputWithLabel, TextArea, Select, Label } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\n\nconst IMPORT_REVIEW_MUTATION = `\n mutation ProImportReview($rating: Int!, $review: String, $firstName: String!, $phone: String, $createdAt: String) {\n proImportReview(rating: $rating, review: $review, firstName: $firstName, phone: $phone, createdAt: $createdAt) {\n result\n errors\n }\n }\n`\n\nexport default function ProImportReviews() {\n const { showToast } = useToast()\n\n const [{ fetching }, importReview] = useMutation(IMPORT_REVIEW_MUTATION)\n\n const reviewDefaults = {\n rating: 5,\n review: \"\",\n firstName: \"\",\n phone: \"\",\n createdAt: dayjs()\n }\n\n const [newReview, setNewReview] = useState(reviewDefaults)\n\n const saveEnabled = !!(newReview.rating && newReview.firstName && newReview.createdAt && newReview.phone)\n\n const onMutationComplete = (result) => {\n setNewReview(reviewDefaults)\n\n if (result?.data?.proImportReview?.result === \"success\") {\n showToast(`We sent ${newReview.firstName} a request to confirm this review.`)\n } else {\n console.error(result)\n let errorMessage = \"There was an error adding this review.\"\n if (result.data?.proImportReview?.errors) errorMessage += ` ${result.data.proImportReview.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n }\n\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n return (\n <div className=\"mt-8 flex flex-row sm:flex-col\">\n <div className=\"min_md:mr-8 min_md:w-[572px]\">\n <div className=\"rounded-lg border border-gray-light p-8 sm:w-full\">\n <Label className=\"mb-2\">Review text</Label>\n <TextArea\n placeholder=\"\"\n rows=\"3\"\n onChange={(e) => setNewReview({ ...newReview, review: e.target.value })}\n value={newReview.review}\n />\n <Typography variant=\"small\" className=\"text-gray-dark\">\n Copy & paste or type in the text your client wrote for you.\n </Typography>\n\n <div className=\"grid grid-cols-2 gap-2 md:grid-cols-1\">\n <div>\n <Label className=\"mb-2 mt-4\">Date</Label>\n <DatePicker\n id=\"date-picker\"\n selected={dayjs(newReview.createdAt).toDate()}\n onChange={(date) => setNewReview({ ...newReview, createdAt: date })}\n maxDate={today}\n />\n </div>\n <div>\n <Label className=\"mb-2 mt-4\">Rating</Label>\n <Select\n options={[\n { label: \"1\", value: 1 },\n { label: \"2\", value: 2 },\n { label: \"3\", value: 3 },\n { label: \"4\", value: 4 },\n { label: \"5\", value: 5 }\n ]}\n onChange={(e) => setNewReview({ ...newReview, rating: parseInt(e.target.value) })}\n value={newReview.rating}\n />\n </div>\n <InputWithLabel\n label=\"First name\"\n value={newReview.firstName}\n onChange={(e) => setNewReview({ ...newReview, firstName: e.target.value })}\n className=\"mt-2\"\n />\n <InputWithLabel\n label=\"Phone\"\n type=\"phone\"\n value={newReview.phone}\n onChange={(e) => setNewReview({ ...newReview, phone: e.target.value })}\n className=\"mt-2\"\n />\n </div>\n\n <div className=\"mt-8 block w-full text-right\">\n <Button\n type=\"primary\"\n disabled={!saveEnabled || fetching}\n onClick={() => {\n importReview(newReview).then(onMutationComplete)\n }}>\n Send confirmation\n </Button>\n </div>\n </div>\n </div>\n <div className=\"w-[360px] md:mt-8 sm:w-full\">\n <div className=\"rounded-lg border border-gray-light p-8\">\n <Typography variant=\"body\" className=\"font-semibold\">\n Do you have already have reviews?\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-2\">\n If you’ve gotten some on your website, Google, etc., fill this out and we’ll send a request for your clients\n to confirm their previous review.\n </Typography>\n </div>\n </div>\n </div>\n )\n}\n","import NiceModal from \"@ebay/nice-modal-react\"\nimport { XMarkIcon, DocumentDuplicateIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport { Button } from \"../../components/shared/Buttons\"\nimport HealMeTable from \"../../components/shared/HealMeTable\"\nimport { NewModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatShortDate, formatPhone, copyToClipboard } from \"../../utils/utils\"\n\nconst RESEND_PRO_REVIEW_REQUEST = `\n mutation ResendProReviewRequest($clientId: ID, $appointmentId: ID) {\n resendProReviewRequest(clientId: $clientId, appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nconst DISMISS_REVIEW_REQUEST = `\n mutation DismissReviewRequest($clientId: ID, $appointmentId: ID) {\n dismissReviewRequest(clientId: $clientId, appointmentId: $appointmentId) {\n result\n errors\n }\n }\n`\n\nexport default function ProReviewRequestsTable({ clientRequests }) {\n const handleCopy = async (text) => {\n await copyToClipboard(text, showToast)\n }\n\n const [requests, setRequests] = useState(clientRequests)\n const [reviewToDismiss, setReviewToDismiss] = useState()\n\n const [, dismissReviewRequest] = useMutation(DISMISS_REVIEW_REQUEST)\n const [, resendProReviewRequest] = useMutation(RESEND_PRO_REVIEW_REQUEST)\n const { showToast } = useToast()\n\n const requestColumns = [\n {\n accessor: \"firstName\",\n Header: \"Client\",\n className: \"w-2/12 min-w-[200px] pr-6\",\n Cell: (props) => (\n <>\n <span>{props.cell.value}</span>\n {props.cell.row.original.reviewRequireConfirmation && (\n <span className=\"mt-2 block\">\n <Badge type=\"info\">Imported</Badge>\n </span>\n )}\n </>\n )\n },\n {\n accessor: \"email\",\n Header: \"Email/Phone\",\n className: \"w-1/6 min-w-[120px] pr-6\",\n Cell: (props) => {\n const client = props.cell.row.original\n if (client.phone) {\n return <span className=\"text-gray-dark\">{formatPhone(client.phone)}</span>\n } else {\n return <span className=\"text-gray-dark\"> {client.email} </span>\n }\n }\n },\n {\n accessor: \"reviewRequestedAt\",\n Header: \"Date requested\",\n className: \"w-2/5 max-w-[700px] min-w-[240px] pr-6\",\n Cell: (props) => <span className=\"text-gray-dark\">{formatShortDate(props.cell.value)}</span>\n },\n {\n accessor: \"id\",\n Header: \"Action\",\n className: \"w-3/12 min-w-[80px]\",\n Cell: (props) => (\n <div className=\"flex flex-row\">\n <a\n className=\"mr-6 flex flex-row items-center font-semibold text-gray-dark sm:mb-4 sm:mr-0 sm:flex-col\"\n onClick={() => handleCopy(props.cell.row.original.reviewLink)}>\n {\" \"}\n Copy link <DocumentDuplicateIcon className=\"ml-2 h-5 w-5 sm:ml-0\" />\n </a>\n <a\n className=\"mr-4 font-bold text-teal\"\n onClick={() => {\n resendProReviewRequest({\n clientId: props.cell.row.original.clientId,\n appointmentId: props.cell.row.original.appointmentId\n }).then((result) => {\n if (result.data.resendProReviewRequest.result === \"success\") {\n showToast(\"Review request resent.\")\n } else {\n showToast({\n content: `We weren't able to resend this request: ${result.data.resendProReviewRequest.errors.join()}`,\n type: \"error\"\n })\n }\n })\n }}>\n Resend\n </a>\n <a\n onClick={() => {\n NiceModal.show(\"dismiss-review-modal\")\n setReviewToDismiss(props.cell.row.original)\n }}>\n <XMarkIcon className=\"h-6 w-6\" />\n </a>\n </div>\n )\n }\n ]\n\n return (\n <>\n {clientRequests && (\n <HealMeTable\n data={requests?.sort((a, b) => {\n const dateA = new Date(a.reviewRequestedAt)\n const dateB = new Date(b.reviewRequestedAt)\n return dateB - dateA\n })}\n columns={requestColumns}\n searchType=\"review requests\"\n header={() => <></>}\n rowClick={() => {}}\n />\n )}\n <NewModal id=\"dismiss-review-modal\" fullHeightInMobile={true} header=\"Delete review request now\">\n <div className=\"pb-24\">\n <Typography variant=\"body\">\n This will delete the review request from <span className=\"font-semibold\">{reviewToDismiss?.firstName}</span>{\" \"}\n now. This action cannot be undone.\n </Typography>\n <div className=\"absolute inset-x-0 bottom-0 flex justify-end border-t border-gray-light bg-white p-8 sm:bottom-12\">\n <Button\n type=\"tertiary\"\n className=\"mr-4\"\n onClick={() => {\n NiceModal.remove(\"dismiss-review-modal\")\n }}>\n No, don't delete\n </Button>\n <Button\n type=\"destructive\"\n onClick={() => {\n dismissReviewRequest({\n clientId: reviewToDismiss.clientId,\n appointmentId: reviewToDismiss.appointmentId\n }).then((result) => {\n if (result.data.dismissReviewRequest.result === \"success\") {\n setRequests((requests) =>\n requests.filter(\n (request) =>\n request.clientId !== reviewToDismiss.clientId ||\n request.appointmentId !== reviewToDismiss.appointmentId\n )\n )\n NiceModal.remove(\"dismiss-review-modal\")\n showToast(\"Review request was deleted.\")\n } else {\n showToast({\n content: `We weren't able to delete this request: ${result.data.dismissReviewRequest.errors.join()}`,\n type: \"error\"\n })\n }\n })\n }}>\n Yes, delete\n </Button>\n </div>\n </div>\n </NewModal>\n </>\n )\n}\n","import dayjs from \"dayjs\"\n\nconst dateFormat = \"YYYY-MM-DDTHH:mm:ssZ\"\n\nexport const filterByDate = (data, dateSelection) => {\n if (!dateSelection || dateSelection.value === \"alltime\") {\n return data\n }\n\n switch (dateSelection) {\n case \"thisweek\":\n return data.filter(\n (appt) =>\n appt.startsAt >= dayjs().startOf(\"week\").format(dateFormat) &&\n appt.startsAt < dayjs().endOf(\"week\").format(dateFormat)\n )\n case \"thismonth\":\n return data.filter(\n (appt) =>\n appt.startsAt >= dayjs().startOf(\"month\").format(dateFormat) &&\n appt.startsAt < dayjs().endOf(\"month\").format(dateFormat)\n )\n case \"lastweek\":\n return data.filter(\n (appt) =>\n appt.startsAt < dayjs().startOf(\"week\").format(dateFormat) &&\n appt.startsAt >= dayjs().startOf(\"week\").subtract(1, \"weeks\").format(dateFormat)\n )\n case \"lastmonth\":\n return data.filter(\n (appt) =>\n appt.startsAt < dayjs().startOf(\"month\").format(dateFormat) &&\n appt.startsAt >= dayjs().startOf(\"month\").subtract(1, \"months\").format(dateFormat)\n )\n case \"thisyear\":\n return data.filter(\n (appt) =>\n appt.startsAt >= dayjs().startOf(\"year\").format(dateFormat) &&\n appt.startsAt < dayjs().endOf(\"year\").format(dateFormat)\n )\n case \"lastyear\":\n return data.filter(\n (appt) =>\n appt.startsAt < dayjs().startOf(\"year\").format(dateFormat) &&\n appt.startsAt >= dayjs().startOf(\"year\").subtract(1, \"years\").format(dateFormat)\n )\n default:\n return data // return the original data if there's no match\n }\n}\n\nexport const filterByState = (data, stateSelection) => {\n if (!stateSelection || stateSelection === \"allpayments\") {\n return filterOutFutureUnpaid(data)\n }\n\n switch (stateSelection) {\n case \"paid\":\n return data.filter((appt) => appt.paymentStatus === \"Paid\")\n case \"unpaid\":\n return data.filter((appt) => appt.paymentStatus === \"Unpaid\")\n case \"free\":\n return data.filter((appt) => appt.paymentStatus === \"Free\")\n case \"upcoming\":\n return data.filter((appt) => dayjs(appt.startsAt).isAfter(dayjs()))\n default:\n return data\n }\n}\n\nexport const filterReviewsByDate = (data, dateSelection) => {\n if (!dateSelection || dateSelection.value === \"alltime\") {\n return data\n }\n\n switch (dateSelection) {\n case \"thisweek\":\n return data.filter((review) => review.createdAt >= dayjs().startOf(\"week\").format(dateFormat))\n case \"thismonth\":\n return data.filter((review) => review.createdAt >= dayjs().startOf(\"month\").format(dateFormat))\n case \"lastweek\":\n return data.filter(\n (review) =>\n review.createdAt < dayjs().startOf(\"week\").format(dateFormat) &&\n review.createdAt >= dayjs().startOf(\"week\").subtract(1, \"weeks\").format(dateFormat)\n )\n case \"lastmonth\":\n return data.filter(\n (review) =>\n review.createdAt < dayjs().startOf(\"month\").format(dateFormat) &&\n review.createdAt >= dayjs().startOf(\"month\").subtract(1, \"months\").format(dateFormat)\n )\n case \"thisyear\":\n return data.filter((review) => review.createdAt >= dayjs().startOf(\"year\").format(dateFormat))\n case \"lastyear\":\n return data.filter(\n (review) =>\n review.createdAt < dayjs().startOf(\"year\").format(dateFormat) &&\n review.createdAt >= dayjs().startOf(\"year\").subtract(1, \"years\").format(dateFormat)\n )\n default:\n return data\n }\n}\n\nexport const filterByRating = (data, ratingSelection) => {\n if (!ratingSelection || ratingSelection === \"all\") {\n return data\n }\n\n return data.filter((review) => review.rating == ratingSelection)\n}\n\nexport const filterOutFutureUnpaid = (data) =>\n data.filter(\n (appt) =>\n dayjs(appt.startsAt).isBefore(dayjs()) ||\n (dayjs(appt.startsAt).isAfter(dayjs()) && appt.paymentStatus !== \"Unpaid\")\n )\n","import { ChevronRightIcon } from \"@heroicons/react/24/outline\"\nimport React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport ClientFlyout from \"../../components/shared/ClientFlyout\"\nimport { Label, TextArea } from \"../../components/shared/Inputs\"\nimport { Flyout, Divider } from \"../../components/shared/Layout\"\nimport { Link } from \"../../components/shared/Links\"\nimport RatingStarRow from \"../../components/shared/RatingStarRow\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { formatPhone } from \"../../utils/utils\"\n\nconst REVIEW_REPLY_MUTATION = `\n mutation AddEditReviewReply($reviewId: ID!, $message: String!) {\n addEditReviewReply(reviewId: $reviewId, message: $message) {\n result\n errors\n }\n }\n`\n\nexport default function ReviewFlyout({ review, closeFlyout, visible }) {\n const [showClientDetail, setShowClientDetail] = useState(false)\n const [showReplyEdit, setShowReplyEdit] = useState(false)\n\n const [reviewReply, setReviewReply] = useState(review?.reviewReply?.message || \"\")\n\n const client = review?.client ? review?.client : review?.user\n const { showToast } = useToast()\n const [, addEditReply] = useMutation(REVIEW_REPLY_MUTATION)\n\n const handleReviewReply = () => {\n addEditReply({ reviewId: review.id, message: reviewReply }).then((res) => {\n closeFlyout({ replied: true })\n if (res.data.addEditReviewReply.result === \"success\") {\n showToast(\"Your reply has been posted\")\n } else {\n showToast({\n content: `Error replying to review: ${res.data.addEditReviewReply.errors.join(\" \")}`,\n type: \"error\"\n })\n }\n })\n }\n\n let saveEnabled = reviewReply?.length > 5\n\n return (\n <>\n <Flyout\n visible={visible}\n closeFlyout={closeFlyout}\n header=\"Review details\"\n footer={\n <div className=\"flex w-full items-center justify-end\">\n <div className=\"flex gap-4\">\n <Button type=\"tertiary\" onClick={closeFlyout}>\n Close\n </Button>\n {(showReplyEdit || !review?.reviewReply) && (\n <Button type=\"primary\" onClick={handleReviewReply} disabled={!saveEnabled}>\n {review?.reviewReply ? \"Edit reply\" : \"Leave reply\"}\n </Button>\n )}\n </div>\n </div>\n }>\n {review && (\n <>\n <div className=\"relative rounded-xl border border-gray-light px-4 py-2\">\n {client ? (\n <a onClick={() => setShowClientDetail(true)}>\n <Typography variant=\"h5\">\n {client.firstName} {client.lastName}\n </Typography>\n <Typography variant=\"small\">\n {client.email && `${client.email}`} {formatPhone(client.phone) && `${formatPhone(client.phone)}`}{\" \"}\n </Typography>\n\n <button className=\"absolute right-4 top-4\">\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n </a>\n ) : (\n <Typography variant=\"h5\">{review.unverifiedName}</Typography>\n )}\n </div>\n <div className=\"mt-6 flex flex-row justify-items-start\">\n <Typography variant=\"h1\" as=\"p\" className=\"font-bold\">\n {review.rating}\n </Typography>\n <Typography variant=\"h1\" as=\"p\" className=\"font-normal text-gray-dark\">\n /{review.rating}\n </Typography>\n </div>\n <RatingStarRow total={review.rating} />\n {review.endorsedSkills?.length > 0 && (\n <>\n <Label className=\"mt-6\">Endorsements</Label>\n <div className=\"flex flex-row flex-wrap\">\n {review.endorsedSkills.map((skill, i) => (\n <div\n key={i}\n className=\"mb-2 mr-2 flex items-center justify-center rounded-lg bg-gray-light p-2 leading-none\">\n {skill}\n </div>\n ))}\n </div>\n </>\n )}\n <Divider />\n <Label>Review</Label>\n <Typography variant=\"body\" as=\"p\" className=\"font-normal text-black\">\n <div className=\"flex\">\n {review.review ? (\n <>\n “<span className=\"pl-1\"> {review.review}”</span>\n </>\n ) : (\n <Typography className=\"text-gray-dark\">No text review</Typography>\n )}\n </div>\n </Typography>\n {review.review && (\n <>\n <Divider />\n <Label>Your reply</Label>\n {review.reviewReply && !showReplyEdit ? (\n <>\n <div className=\"flex\">\n “<span className=\"pl-1\"> {review.reviewReply.message}”</span>\n </div>\n <Link className=\"float-right mt-4\" onClick={() => setShowReplyEdit(true)}>\n Edit\n </Link>\n </>\n ) : (\n <>\n {!review.reviewReply && (\n <Typography variant=\"body\" className=\"text-gray-dark\">\n Letting your clients know how their review makes you feel is a nice touch.\n </Typography>\n )}\n </>\n )}\n {(showReplyEdit || !review.reviewReply) && (\n <TextArea\n className=\"mt-4\"\n placeholder=\"Ex: Thank you for such a nice review!\"\n value={reviewReply}\n onChange={(e) => setReviewReply(e.target.value)}\n />\n )}\n </>\n )}\n </>\n )}\n </Flyout>\n <ClientFlyout\n closeFlyout={() => {\n setShowClientDetail(false)\n }}\n visible={showClientDetail}\n refreshClient={() => {}}\n client={client}\n clientEdited={() => {\n showToast(\"Client edited successfully. \")\n }}\n />\n </>\n )\n}\n","import React, { useState } from \"react\"\n\nimport Badge from \"../../components/shared/Badge\"\nimport HealMeTable from \"../../components/shared/HealMeTable\"\nimport { Select } from \"../../components/shared/Inputs\"\nimport { filterReviewsByDate, filterByRating } from \"../../utils/setupFilters\"\nimport { formatShortDate } from \"../../utils/utils\"\nimport ReviewFlyout from \"../ProReviews/ReviewFlyout\"\n\nconst dateRangeOptions = [\n { value: \"alltime\", label: \"All time\" },\n { value: \"thisweek\", label: \"This week\" },\n { value: \"lastweek\", label: \"Last week\" },\n { value: \"thismonth\", label: \"This month\" },\n { value: \"lastmonth\", label: \"Last month\" },\n { value: \"thisyear\", label: \"This year\" },\n { value: \"lastyear\", label: \"Last year\" }\n]\n\nconst ratingOptions = [\n { value: \"all\", label: \"All ratings\" },\n { value: 5, label: \"5\" },\n { value: 4, label: \"4\" },\n { value: 3, label: \"3\" },\n { value: 2, label: \"2\" },\n { value: 1, label: \"1\" }\n]\n\nconst TableHeader = ({ dateFilter, ratingFilter, handleFilter }) => (\n <div className=\"ml-4 flex w-full sm:ml-0 sm:mt-4\">\n <Select\n className=\"mr-4\"\n options={dateRangeOptions}\n value={dateFilter}\n onChange={(e) => handleFilter(e.target.value, ratingFilter)}\n />\n <Select options={ratingOptions} value={ratingFilter} onChange={(e) => handleFilter(dateFilter, e.target.value)} />\n </div>\n)\n\nexport default function ProReviewsTable({ reviews }) {\n const allReviews = reviews\n const [flyoutKey, setFlyoutKey] = useState(0)\n const [showReviewDetail, setShowReviewDetail] = useState(false)\n const [selectedReview, setSelectedReview] = useState(null)\n\n const [filteredReviews, setFilteredReviews] = useState(reviews)\n const [dateFilter, setDateFilter] = useState(dateRangeOptions[0].value)\n const [ratingFilter, setRatingFilter] = useState(ratingOptions[0].value)\n\n const showReview = (review) => {\n setTimeout(() => setFlyoutKey(review.id), 500)\n setShowReviewDetail(true)\n setSelectedReview(review)\n }\n\n const handleFilter = (dateSelection, ratingSelection) => {\n setDateFilter(dateSelection || dateFilter)\n setRatingFilter(ratingSelection || ratingFilter)\n\n let combinedArray = allReviews\n\n combinedArray = filterReviewsByDate(combinedArray, dateSelection)\n combinedArray = filterByRating(combinedArray, ratingSelection)\n\n setFilteredReviews(combinedArray)\n }\n\n const reviewColumns = [\n {\n accessor: \"id\",\n Header: \"Client\",\n className: \"w-1/5 min-w-[200px] pr-6\",\n Cell: (props) => {\n const review = props.cell.row.original\n const clientOrUser = review.client || review.user\n\n let client_name = clientOrUser?.firstName\n\n if (clientOrUser?.lastName) {\n client_name += \" \" + clientOrUser.lastName\n }\n\n if (!client_name) {\n client_name = review.unverifiedName\n }\n\n return (\n <>\n <span className=\"mb-0 block\"> {client_name}</span>\n {review.reviewReply && <Badge className=\"mt-2 inline-block\">REPLIED</Badge>}\n </>\n )\n }\n },\n {\n accessor: \"rating\",\n Header: \"Rating\",\n className: \"w-1/12 min-w-[80px] pr-6\",\n Cell: (props) => (\n <>\n <span className=\"font-bold\">{props.cell.value}</span>\n <span className=\"text-gray-dark\">/5</span>\n </>\n )\n },\n {\n accessor: \"review\",\n Header: \"Review\",\n className: \"w-2/5 max-w-[700px] min-w-[240px] pr-6\",\n Cell: (props) => {\n const link = props.cell.row.original.reviewReply ? \"View reply\" : \"Leave reply\"\n\n return (\n <>\n {props.cell.value ? (\n <>\n <span className=\"mb-0 block\">“{props.cell.value}”</span>\n <span className=\"mt-2 block\">\n <a className=\"font-bold text-teal\">{link}</a>\n </span>\n </>\n ) : (\n <span className=\"text-gray-dark\">No text review</span>\n )}\n </>\n )\n }\n },\n {\n accessor: \"createdAt\",\n Header: \"Date\",\n className: \"w-1/6 min-w-[120px] pr-6\",\n Cell: (props) => <span className=\"text-gray-dark\">{formatShortDate(props.cell.value)}</span>\n },\n {\n accessor: \"updatedAt\",\n Header: \"Action\",\n className: \"w-1/12 min-w-[80px]\",\n Cell: () => <a className=\"font-bold text-teal\">View</a>\n }\n ]\n\n return (\n <>\n {reviews && (\n <HealMeTable\n data={filteredReviews}\n columns={reviewColumns}\n searchType=\"reviews\"\n rowClick={showReview}\n header={() => <TableHeader dateFilter={dateFilter} ratingFilter={ratingFilter} handleFilter={handleFilter} />}\n />\n )}\n\n <ReviewFlyout\n key={flyoutKey}\n review={selectedReview}\n closeFlyout={({ replied }) => {\n if (replied) {\n window.location.reload()\n } else {\n setShowReviewDetail(false)\n setTimeout(() => setFlyoutKey(selectedReview.id), 500)\n }\n }}\n visible={showReviewDetail}\n />\n </>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button, CopyLinkButton } from \"../../components/shared/Buttons\"\nimport { InputWithLabel } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { copyToClipboard } from \"../../utils/utils\"\n\nconst SEND_BULK_REVIEW_REQUESTS = `\n mutation SendBulkReviewRequests($clients: [ClientInput!]!) {\n sendBulkReviewRequests (clients: $clients) {\n result\n erroredClients {\n email\n errors\n }\n }\n }\n`\n\nexport default function ReviewRequestForm({ existingRequests, requestReviewLink, defaultRows = 1 }) {\n const [clients, setClients] = useState(Array(defaultRows).fill({ firstName: \"\", phone: \"\", clientType: \"invited\" }))\n const { showToast } = useToast()\n\n const [, sendBulkReviewRequests] = useMutation(SEND_BULK_REVIEW_REQUESTS)\n\n const formIsValid = () => clients.some((client) => client.firstName.trim() !== \"\" && client.phone.trim().length > 12)\n\n const handleClientChange = (index, field, value) => {\n const updatedClients = [...clients]\n updatedClients[index] = { ...updatedClients[index], [field]: value }\n setClients(updatedClients)\n }\n\n const addClient = () => {\n setClients([...clients, { firstName: \"\", phone: \"\", clientType: \"invited\" }])\n }\n\n const handleInvitesSent = () => {\n showToast(\"Awesome stuff! We’ll email you when your clients leave reviews for you.\")\n setTimeout(() => window.location.reload(), 1500)\n }\n\n const handleSubmit = async () => {\n const validClients = clients.filter((client) => client.firstName || client.phone)\n\n const formattedClients = validClients.map((client) => ({\n firstName: client.firstName,\n phone: client.phone,\n clientType: client.clientType\n }))\n\n try {\n const response = await sendBulkReviewRequests({ clients: formattedClients })\n if (response.data.sendBulkReviewRequests.erroredClients.length > 0) {\n showToast({\n content: `Error requesting reviews: ${response.data.sendBulkReviewRequests.erroredClients\n .map((client) => client.errors)\n .join(\" \")}`,\n type: \"error\"\n })\n } else {\n handleInvitesSent()\n }\n } catch (error) {\n showToast({ content: `An error occurred: ${error.message}`, type: \"error\" })\n }\n }\n\n const handleCopy = async (text) => {\n await copyToClipboard(text, showToast)\n }\n\n return (\n <div className=\"mt-8 flex flex-row sm:flex-col\">\n <div className=\"min_md:mr-8 min_md:w-[572px]\">\n <div className=\"rounded-lg border border-gray-light p-8 sm:w-full\">\n {clients.map((client, index) => (\n <div key={index}>\n <div className=\"mb-4 grid grid-cols-2 gap-6 sm:grid-cols-1\">\n <InputWithLabel\n label=\"First name\"\n value={client.firstName}\n onChange={(e) => handleClientChange(index, \"firstName\", e.target.value)}\n />\n\n <InputWithLabel\n id=\"phone\"\n type=\"phone\"\n label=\"Mobile phone\"\n value={client.phone}\n onChange={(e) => handleClientChange(index, \"phone\", e.target.value)}\n />\n </div>\n\n {index !== clients.length - 1 && <Divider />}\n </div>\n ))}\n {existingRequests + clients.length < 10 && (\n <Button type=\"link\" onClick={addClient}>\n Add another client\n </Button>\n )}\n <Divider />\n <div className=\"mt-8 block w-full text-right md:mb-8\">\n <Button type=\"primary\" size=\"large\" className=\"\" disabled={!formIsValid()} onClick={handleSubmit}>\n Send request{clients.length > 1 ? \"s\" : \"\"}\n </Button>\n </div>\n </div>\n <div className=\"mt-8 rounded-lg border border-gray-light p-8 md:mb-8\">\n <Typography variant=\"body\" className=\"mb-4 font-bold\">\n Want to share your link instead?\n </Typography>\n <CopyLinkButton\n value={requestReviewLink}\n onClick={() => {\n handleCopy(requestReviewLink)\n }}\n />\n </div>\n </div>\n <div className=\"w-[360px] sm:w-full\">\n <div className=\"rounded-lg border border-gray-light p-8\">\n <Typography variant=\"body\" className=\"font-semibold\">\n Why do reviews matter?\n </Typography>\n <Typography variant=\"subtitle\" className=\"mt-2\">\n When shopping online for goods and services, clients trust reviews from other clients more than anything\n else. We know getting 10+ reviews builds trust for potential clients.\n </Typography>\n </div>\n </div>\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport { TabNavLink } from \"../components/shared/Links\"\nimport Typography from \"../components/shared/Typography\"\nimport { PracticeProvider } from \"../contexts/PracticeContext\"\nimport DefaultProvider from \"../providers/DefaultProvider\"\n\nimport ProImportReviews from \"./ProReviews/ProImportReviews\"\nimport ProReviewRequestsTable from \"./ProReviews/ProReviewRequestsTable\"\nimport ProReviewsTable from \"./ProReviews/ProReviewsTable\"\nimport ReviewRequestForm from \"./ProReviews/ReviewRequestForm\"\n\nconst Reviews = ({ requestReviewLink, clientRequests, reviews, importReviewsEnabled }) => {\n const [activeTab, setActiveTab] = useState(reviews.length < 11 ? \"newRequests\" : \"completed\")\n\n const handleTabClick = (tabId) => {\n setActiveTab(tabId)\n }\n\n return (\n <>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Reviews\n </Typography>\n <Typography variant=\"subtitle\">\n {reviews.length === 0 ? <>No reviews </> : <>{reviews?.length} completed </>}\n {clientRequests?.length > 0 && <>• {clientRequests.length} pending</>}\n </Typography>\n </div>\n </div>\n <div className=\"mb-8 mt-4 flex gap-8 border-b border-gray-light\">\n {reviews.length < 999999 && (\n <>\n <TabNavLink active={activeTab === \"newRequests\"} onClick={() => handleTabClick(\"newRequests\")}>\n Request reviews\n </TabNavLink>\n {importReviewsEnabled && (\n <TabNavLink active={activeTab === \"import\"} onClick={() => handleTabClick(\"import\")}>\n Import reviews\n </TabNavLink>\n )}\n </>\n )}\n <TabNavLink active={activeTab === \"completed\"} onClick={() => handleTabClick(\"completed\")}>\n Completed\n </TabNavLink>\n <TabNavLink active={activeTab === \"pending\"} onClick={() => handleTabClick(\"pending\")}>\n Pending\n </TabNavLink>\n </div>\n {activeTab === \"newRequests\" && (\n <ReviewRequestForm\n existingRequests={clientRequests.length}\n requestReviewLink={requestReviewLink}\n defaultRows={1}\n />\n )}\n {activeTab === \"import\" && importReviewsEnabled && <ProImportReviews />}\n\n {activeTab === \"pending\" && <ProReviewRequestsTable clientRequests={clientRequests} />}\n\n {activeTab === \"completed\" && <ProReviewsTable reviews={reviews} />}\n </>\n )\n}\n\nexport default function ProReviews(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <Reviews {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProReviewsTable from \"./ProReviewsTable\"\n\nconst Reviews = ({ reviews }) => (\n <>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Completed Reviews\n </Typography>\n <Typography variant=\"subtitle\">\n {reviews.length === 0 ? <>No reviews </> : <>{reviews?.length} completed </>}\n </Typography>\n </div>\n </div>\n\n <ProReviewsTable reviews={reviews} />\n </>\n)\n\nexport default function ProReviewsCompletedPage(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <Reviews {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React, { useState } from \"react\"\nimport { Configure } from \"react-instantsearch\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport HealMeTooltip from \"../../components/shared/HealMeTooltip\"\nimport { Box, ProfilePageEmptyStateBox } from \"../../components/shared/Layout\"\nimport { UnderlinedLink } from \"../../components/shared/Links\"\nimport { EndorsementPill } from \"../../components/shared/Pill\"\nimport { AlgoliaSearchProvider } from \"../../components/shared/SearchInputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { EndorsementsFlyout } from \"../ProfileEdit/EndorsementsFlyout\"\nimport ProfileEditProvider from \"../ProfileEdit/ProfileEditProvider\"\n\nconst DELETE_SKILLS = `\n mutation DeleteSkills($skillId: String!) {\n deleteSkills(skillId: $skillId) {\n result\n skills {\n id\n endorsementsCount\n specialty { id name }\n }\n errors\n }\n }\n`\n\nconst MOVE_SKILLS = `\n mutation MoveSkills($skillArray: [String!]!) {\n moveSkills(skillArray: $skillArray) {\n result\n skills {\n id\n endorsementsCount\n specialty { id name }\n }\n errors\n }\n }\n`\n\nconst Endorsements = ({ skills, specialtiesByLetter }) => {\n const [skillsState, setSkillsState] = useState(skills)\n const [flyoutVisible, setFlyoutVisible] = useState(false)\n\n const [, deleteSkills] = useMutation(DELETE_SKILLS)\n const [, moveSkills] = useMutation(MOVE_SKILLS)\n\n const { showToast } = useToast()\n\n const removeSkill = (skill) => {\n deleteSkills({ skillId: skill.id.toString() }).then((result) => {\n if (result?.data?.deleteSkills?.result === \"success\") {\n setSkillsState(result.data.deleteSkills.skills)\n setFlyoutVisible(false)\n showToast(\"Successfully deleted keyword\")\n } else {\n showToast({ type: \"error\", content: \"Failed to delete keyword\" })\n console.error(result) // eslint-disable-line no-console\n }\n })\n\n const index = skillsState.indexOf(skill)\n if (index !== -1) {\n const copySkills = [...skillsState]\n copySkills.splice(index, 1)\n setSkillsState(copySkills)\n }\n }\n\n return (\n <>\n <div className=\"w-[600px] md:w-full\">\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Keywords\n </Typography>\n <Typography variant=\"subtitle\">Add or edit your keywords.</Typography>\n </div>\n </div>\n\n {skillsState.length === 0 ? (\n <ProfilePageEmptyStateBox title=\"Keywords\" onButtonClick={() => setFlyoutVisible(true)}>\n Why do your clients come to see you? List these here.{\" \"}\n <UnderlinedLink\n href=\"https://help.heal.me/en/articles/8441399-what-are-endorsements-and-which-should-i-pick\"\n target=\"_blank\">\n Learn more\n </UnderlinedLink>\n </ProfilePageEmptyStateBox>\n ) : (\n <>\n <Box data-test-id=\"endorsements\">\n <div className=\"flex items-center justify-between border-b border-gray-light pb-6 sm:border-none sm:pb-0\">\n <Typography variant=\"capitalHeading\">Keywords</Typography>\n <div data-tooltip-id=\"disabled-tooltip\">\n <Button floatingInMobile={true} disabled={skills.length >= 50} onClick={() => setFlyoutVisible(true)}>\n Add new\n </Button>\n </div>\n {skills.length >= 50 && (\n <HealMeTooltip\n id=\"disabled-tooltip\"\n place=\"bottom\"\n content=\"Note: You can add a maximum of 50 credentials.\"\n />\n )}\n </div>\n <Typography variant=\"subtitle\" className=\"mt-6 sm:mt-2\">\n Drag to re-order each keyword.\n </Typography>\n <ReactSortable\n className=\"mt-6 flex flex-wrap gap-2 sm:mt-4\"\n list={skillsState}\n setList={(newSkills) => {\n if (JSON.stringify(newSkills) !== JSON.stringify(skillsState)) {\n const newOrder = newSkills.map((skill, i) => JSON.stringify({ id: skill.id, position: i + 1 }))\n setSkillsState(newSkills)\n moveSkills({ skillArray: newOrder }).then((result) => {\n if (result?.data?.moveSkills?.result !== \"success\") {\n console.error(result) // eslint-disable-line no-console\n showToast({\n type: \"error\",\n content:\n \"There was error reordering your keywords. Please try again later or contact support if the error persists.\"\n })\n }\n })\n }\n }}>\n {skillsState.map((skill) => (\n <EndorsementPill key={skill.id} draggable active onCloseButtonClick={() => removeSkill(skill)}>\n {skill.specialty.name}\n </EndorsementPill>\n ))}\n </ReactSortable>\n </Box>\n </>\n )}\n </div>\n\n <EndorsementsFlyout\n specialtiesByLetter={specialtiesByLetter}\n skills={skillsState}\n setSkills={setSkillsState}\n visible={flyoutVisible}\n closeFlyout={() => setFlyoutVisible(false)}\n />\n </>\n )\n}\n\nexport default function ProReviewsEndorsementsPage({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <AlgoliaSearchProvider indexName=\"Specialty\">\n <Configure hitsPerPage={50} filters=\"NOT ordered_kind:1\" />\n <Endorsements {...props} />\n </AlgoliaSearchProvider>\n </ProfileEditProvider>\n )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProImportReviews from \"./ProImportReviews\"\n\nconst Reviews = () => (\n <>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Import Reviews\n </Typography>\n <Typography variant=\"subtitle\">Import your past reviews from Google, Facebook, Yelp, and more.</Typography>\n </div>\n </div>\n\n <ProImportReviews />\n </>\n)\n\nexport default function ProReviewsImportPage(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <Reviews {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ProReviewRequestsTable from \"./ProReviewRequestsTable\"\n\nconst Reviews = ({ clientRequests }) => (\n <>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Pending Reviews\n </Typography>\n <Typography variant=\"subtitle\">\n {clientRequests?.length === 0 ? <>No pending reviews </> : <>{clientRequests.length} pending reviews</>}\n </Typography>\n </div>\n </div>\n\n <ProReviewRequestsTable clientRequests={clientRequests} />\n </>\n)\n\nexport default function ProReviewsPendingPage(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <Reviews {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\nimport { PracticeProvider } from \"../../contexts/PracticeContext\"\nimport DefaultProvider from \"../../providers/DefaultProvider\"\n\nimport ReviewRequestForm from \"./ReviewRequestForm\"\n\nconst Reviews = ({ requestReviewLink, clientRequests }) => (\n <>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography as=\"h1\" variant=\"h3\">\n Request Reviews\n </Typography>\n <Typography variant=\"subtitle\">Send review request to your clients.</Typography>\n </div>\n </div>\n\n <ReviewRequestForm existingRequests={clientRequests.length} requestReviewLink={requestReviewLink} defaultRows={1} />\n </>\n)\n\nexport default function ProReviewsRequestPage(props) {\n return (\n <DefaultProvider>\n <PracticeProvider>\n <Reviews {...props} />\n </PracticeProvider>\n </DefaultProvider>\n )\n}\n","import { ClipboardIcon } from \"@heroicons/react/24/outline\"\nimport dayjs from \"dayjs\"\nimport React from \"react\"\n\nimport Badge from \"../components/shared/Badge\"\nimport { Box, Divider } from \"../components/shared/Layout\"\nimport Typography from \"../components/shared/Typography\"\nimport { ToastProvider, useToast } from \"../contexts/ToastContext\"\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\nimport { formatPrice } from \"../utils/utils\"\n\nconst ReferralProgram = ({ practitionerReferral, referralCreditWithdrawals, isLifer }) => {\n const { showToast } = useToast()\n\n const discountCode = practitionerReferral.discountCode\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(discountCode)\n showToast(\"Discount code copied to clipboard!\")\n }\n\n // const socialMediaUrls = {\n // facebook: `https://www.facebook.com/sharer/sharer.php?u="e=Check out this discount code: ${discountCode}`,\n // twitter: `https://twitter.com/intent/tweet?text=Check out this discount code: ${discountCode}`,\n // linkedin: `https://www.linkedin.com/shareArticle?mini=true&url=&summary=Check out this discount code: ${discountCode}`\n // }\n\n return (\n <div className=\"w-[600px] md:w-full\">\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n Referral Program: Give $50, Get $50\n </Typography>\n <Typography variant=\"subtitle\">\n Share your discount code with other practitioners.\n <br />\n They'll get $50 off, and you'll earn $50 when they join!\n </Typography>\n </div>\n </div>\n\n <Box>\n <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n Copy your discount code\n </Typography>\n <button className=\"flex items-center gap-2 hover:text-teal\" onClick={copyToClipboard}>\n <span className=\"rounded-lg bg-gray-ultralight px-4 py-1\">Discount code: {discountCode}</span>\n <ClipboardIcon className=\"h-5 w-5\" />\n </button>\n\n {/* <Divider /> */}\n {/* <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\"> */}\n {/* Share on social media */}\n {/* </Typography> */}\n {/* <div className=\"flex gap-4\"> */}\n {/* <a href={socialMediaUrls.facebook} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n {/* <FacebookIcon height={32} width={24} /> */}\n {/* </a> */}\n {/* <a href={socialMediaUrls.twitter} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n {/* <XTwitterIcon height={32} width={21} /> */}\n {/* </a> */}\n {/* <a href={socialMediaUrls.linkedin} target=\"_blank\" rel=\"noopener noreferrer\"> */}\n {/* <LinkedinIcon height={32} width={22} /> */}\n {/* </a> */}\n {/* </div> */}\n </Box>\n\n <Box className=\"mt-8\">\n <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n Referral History\n </Typography>\n {practitionerReferral.referralUses.length === 0 ? (\n <div className=\"text-gray-dark\">When people use your referral code, they will show up here</div>\n ) : (\n <>\n {practitionerReferral.referralUses.map((referral) => (\n <div key={referral.id} className=\"flex items-center justify-between gap-4\">\n <div className=\"font-bold\">{dayjs(referral.useDate).format(\"MM/DD/YYYY\")}</div>\n <div className=\"text-gray-dark\">{formatPrice(practitionerReferral.amountCents)}</div>\n </div>\n ))}\n <Divider />\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"font-bold\">Total</div>\n <div className=\"text-gray-dark\">\n {formatPrice(practitionerReferral.referralUses.length * practitionerReferral.amountCents)}\n </div>\n </div>\n </>\n )}\n </Box>\n\n {isLifer && (\n <Box className=\"mt-8\">\n <Typography variant=\"capitalHeading\" as=\"h3\" className=\"mb-4\">\n Referral Credit Withdrawals\n </Typography>\n {referralCreditWithdrawals.length === 0 ? (\n <div className=\"text-gray-dark\">When you withdraw referral credit, it will show up here</div>\n ) : (\n <>\n {referralCreditWithdrawals.map((withdrawal) => (\n <div key={withdrawal.id} className=\"flex items-center justify-between gap-4 space-y-2\">\n <div className=\"font-bold\">{dayjs(withdrawal.withdrawalDate).format(\"MM/DD/YYYY\")}</div>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-24 text-right text-gray-dark\">{formatPrice(withdrawal.amountCents)}</div>\n <Badge type={withdrawal.status === \"pending\" ? \"warning\" : \"success\"} className=\"w-20 text-center\">\n {withdrawal.status}\n </Badge>\n </div>\n </div>\n ))}\n </>\n )}\n </Box>\n )}\n </div>\n )\n}\n\nexport default function ReferralProgramPage(props) {\n return (\n <GraphQLProvider>\n <ToastProvider>\n <ReferralProgram {...props} />\n </ToastProvider>\n </GraphQLProvider>\n )\n}\n","import { GlobeAltIcon, StarIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\n\nimport { Button } from \"../components/shared/Buttons\"\nimport Typography from \"../components/shared/Typography\"\n\nconst WebsiteDash = () => (\n <div>\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Website\n </Typography>\n <Typography variant=\"subtitle\" className=\"sm:hidden\">\n Build your Heal.me website and choose a custom domain.\n </Typography>\n </div>\n <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-1\">\n <div className=\"flex flex-row gap-4 rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 h-fit w-fit rounded-xl bg-green-light p-4\">\n <StarIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\" className=\"mb-2\">\n Builder (soon)\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Choose a website theme and customization option.\n </Typography>\n <a href=\"#\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Soon\n </Button>\n </a>\n </div>\n </div>\n\n <div className=\"flex flex-row gap-4 rounded-xl border border-gray-light p-8\">\n <div className=\"mb-8 h-fit w-fit rounded-xl bg-orange-light p-4\">\n <GlobeAltIcon className=\"h-10 w-10 text-gray-dark\" />\n </div>\n <div className=\"flex flex-col\">\n <Typography variant=\"h5\" className=\"mb-2\">\n Domain\n </Typography>\n <Typography variant=\"subtitle\" className=\"mb-4\">\n Setup your custom domain: yourdomain.com\n </Typography>\n <a href=\"/portal/website/domain\">\n <Button type=\"tertiary\" className=\"w-fit\">\n Manage\n </Button>\n </a>\n </div>\n </div>\n </div>\n </div>\n)\n\nexport default WebsiteDash\n","import { gql } from \"urql\"\n\nexport const GENERATE_IMAGE_ALT_TEXT_MUTATION = gql`\n mutation GenerateImageAltText {\n generateImageAltText {\n result\n errors\n }\n }\n`\n","import { gql } from \"urql\"\n\nexport const GENERATE_SITE_METADATA_MUTATION = gql`\n mutation GenerateSiteMetadata {\n generateSiteMetadata {\n result\n errors\n websiteMetadata {\n title\n description\n ogSiteName\n primaryModality\n }\n }\n }\n`\n","import { gql } from \"@urql/core\"\n\nexport const UPSERT_WEBSITE_METADATA_MUTATION = gql`\n mutation UpsertWebsiteMetadata($input: UpsertWebsiteMetadataInput!) {\n upsertWebsiteMetadata(input: $input) {\n result\n errors\n websiteMetadata {\n id\n title\n description\n ogSiteName\n primaryModality\n }\n }\n }\n`\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { EditableValue, Input, TextArea } from \"../../components/shared/Inputs\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport { GENERATE_IMAGE_ALT_TEXT_MUTATION } from \"../../graphql/mutations/generateImageAltText\"\nimport { GENERATE_SITE_METADATA_MUTATION } from \"../../graphql/mutations/generateSiteMetadata\"\nimport { UPSERT_WEBSITE_METADATA_MUTATION } from \"../../graphql/mutations/upsertWebsiteMetadata\"\n\nconst SeoSettings = ({ websiteMetadata: initialWebsiteMetadata }) => {\n const [websiteMetadata, setWebsiteMetadata] = useState(initialWebsiteMetadata)\n const [lastSavedValues, setLastSavedValues] = useState(initialWebsiteMetadata)\n\n const [{ fetching }, upsertMetadata] = useMutation(UPSERT_WEBSITE_METADATA_MUTATION)\n const { showToast } = useToast()\n const [{ fetching: generating }, generateMetadata] = useMutation(GENERATE_SITE_METADATA_MUTATION)\n const [{ fetching: generatingAlt }, generateAltText] = useMutation(GENERATE_IMAGE_ALT_TEXT_MUTATION)\n\n const handleSave = (field, value) => {\n upsertMetadata({\n input: {\n [field]: value\n }\n }).then((result) => {\n if (result?.data?.upsertWebsiteMetadata?.result === \"success\") {\n setLastSavedValues((prev) => ({ ...prev, [field]: value }))\n showToast(\"SEO settings updated successfully\")\n } else {\n const errorMessage = result?.data?.upsertWebsiteMetadata?.errors?.join(\" \") || \"An error occurred\"\n showToast({\n content: errorMessage,\n type: \"error\"\n })\n }\n })\n }\n\n const handleGenerate = () => {\n generateMetadata().then((result) => {\n if (result?.data?.generateSiteMetadata?.result === \"success\") {\n const newMetadata = result.data.generateSiteMetadata.websiteMetadata\n setWebsiteMetadata(newMetadata)\n setLastSavedValues(newMetadata)\n showToast(\"SEO settings generated successfully\")\n } else {\n const errorMessage = result?.data?.generateSiteMetadata?.errors?.join(\" \") || \"An error occurred\"\n showToast({\n content: errorMessage,\n type: \"error\"\n })\n }\n })\n }\n\n const handleGenerateAltText = () => {\n generateAltText().then((result) => {\n if (result?.data?.generateImageAltText?.result === \"success\") {\n showToast(\"Alt text generated successfully\")\n } else {\n const errorMessage = result?.data?.generateImageAltText?.errors?.join(\" \") || \"An error occurred\"\n showToast({\n content: errorMessage,\n type: \"error\"\n })\n }\n })\n }\n\n return (\n <>\n <Typography as=\"h2\" variant=\"h4\" className=\"mb-4\">\n SEO Settings\n </Typography>\n <div className=\"flex w-max flex-col items-start justify-start gap-6 rounded-xl border border-gray-light p-8 md:w-full min_sm:min-w-[529px]\">\n <EditableValue\n name=\"Site Title\"\n value={websiteMetadata.title}\n saveDisabled={websiteMetadata.title === lastSavedValues.title}\n disabled={fetching}\n onSave={() => handleSave(\"title\", websiteMetadata.title)}\n onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, title: lastSavedValues.title }))}\n className=\"w-full\">\n <Input\n name=\"Site Title\"\n value={websiteMetadata.title}\n onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, title: e.target.value }))}\n className=\"w-full\"\n />\n </EditableValue>\n\n <EditableValue\n name=\"Description\"\n value={websiteMetadata.description}\n saveDisabled={websiteMetadata.description === lastSavedValues.description}\n disabled={fetching}\n onSave={() => handleSave(\"description\", websiteMetadata.description)}\n onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, description: lastSavedValues.description }))}\n className=\"w-full\">\n <TextArea\n name=\"Description\"\n value={websiteMetadata.description}\n onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, description: e.target.value }))}\n className=\"w-full\"\n />\n </EditableValue>\n\n <EditableValue\n name=\"Open Graph Site Name\"\n value={websiteMetadata.ogSiteName}\n saveDisabled={websiteMetadata.ogSiteName === lastSavedValues.ogSiteName}\n disabled={fetching}\n onSave={() => handleSave(\"ogSiteName\", websiteMetadata.ogSiteName)}\n onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, ogSiteName: lastSavedValues.ogSiteName }))}\n className=\"w-full\">\n <Input\n name=\"Open Graph Site Name\"\n value={websiteMetadata.ogSiteName}\n onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, ogSiteName: e.target.value }))}\n className=\"w-full\"\n />\n </EditableValue>\n\n <EditableValue\n name=\"Primary Modality\"\n value={websiteMetadata.primaryModality}\n saveDisabled={websiteMetadata.primaryModality === lastSavedValues.primaryModality}\n disabled={fetching}\n onSave={() => handleSave(\"primaryModality\", websiteMetadata.primaryModality)}\n onCancel={() => setWebsiteMetadata((prev) => ({ ...prev, primaryModality: lastSavedValues.primaryModality }))}\n className=\"w-full\">\n <Input\n name=\"Primary Modality\"\n value={websiteMetadata.primaryModality}\n onChange={(e) => setWebsiteMetadata((prev) => ({ ...prev, primaryModality: e.target.value }))}\n className=\"w-full\"\n />\n </EditableValue>\n\n <div className=\"flex gap-4\">\n <Button onClick={handleGenerate} disabled={generating || generatingAlt}>\n {generating ? \"Generating...\" : \"Generate Site Metadata\"}\n </Button>\n <Button onClick={handleGenerateAltText} disabled={generating || generatingAlt}>\n {generatingAlt ? \"Generating...\" : \"Generate Alt Text\"}\n </Button>\n </div>\n </div>\n </>\n )\n}\n\nexport default SeoSettings\n","export const customDomainConfig = (token) => {\n const isDev = window.App.environment === \"development\"\n const isStaging = window.App.environment === \"staging\"\n const url = isDev ? \"https://heal.me\" : `https://${window.location.hostname}`\n const appId = isDev || isStaging ? \"heal.me_dev\" : \"heal.me\"\n return {\n applicationId: appId,\n token: token,\n power: true,\n dnsRecords: {\n domain: [\n {\n type: \"A\",\n host: \"@\",\n value: \"{ENTRI_SERVERS}\", // This will be automatically replaced for the Entri servers IPs\n ttl: 300,\n applicationUrl: url,\n powerRootPathAccess: [\"packs/\", \"assets/\"]\n },\n {\n type: \"CNAME\",\n host: \"www\",\n value: \"{CNAME_TARGET}\", // This will automatically use the CNAME target entered in the dashboard\n ttl: 300,\n applicationUrl: url,\n powerRootPathAccess: [\"packs/\", \"assets/\"]\n }\n ],\n subDomain: [\n {\n type: \"CNAME\",\n host: \"{SUBDOMAIN}\", // This will use the user inputted subdomain\n value: \"{CNAME_TARGET}\", // This will automatically use the CNAME target entered in the dashboard\n ttl: 300,\n applicationUrl: url,\n powerRootPathAccess: [\"packs/\", \"assets/\"]\n }\n ]\n }\n }\n}\n\nexport const showCustomDomainModal = (config) => {\n if (window.entri) {\n window.entri.showEntri(config)\n } else {\n console.warn(\"entri is not defined\") // eslint-disable-line no-console\n }\n}\n\nexport const showPurchaseDomainModal = (config) => {\n if (window.entri) {\n window.entri.purchaseDomain(config)\n } else {\n console.warn(\"entri is not defined\") // eslint-disable-line no-console\n }\n}\n\nexport const handleCustomDomainModalStepChange = ({ event, upsertCustomDomain, showToast, updateState }) => {\n if (\n event.detail &&\n (event.detail.step === \"FINISHED_SUCCESSFULLY\" || event.detail.step === \"FINISHED_SUCCESSFULLY_MANUAL\")\n ) {\n const domain = event.detail.domain\n\n upsertCustomDomain({ domain }).then((result) => {\n if (result?.data?.upsertCustomDomain?.result === \"success\") {\n showToast(\"Custom domain created successfully\")\n updateState(domain)\n } else {\n showToast({\n type: \"error\",\n content: \"Error creating custom domain\"\n })\n }\n })\n }\n}\n","import { ArrowPathIcon, CheckIcon, ExclamationCircleIcon } from \"@heroicons/react/24/outline\"\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { useMutation, useQuery } from \"urql\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { AnimatedModal } from \"../../components/shared/Modal\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport {\n customDomainConfig,\n handleCustomDomainModalStepChange,\n showCustomDomainModal,\n showPurchaseDomainModal\n} from \"../../utils/customDomainUtils\"\nimport { isValidUrl } from \"../../utils/utils\"\n\nconst JWT_TOKEN_MUTATION = `\n mutation DomainProviderJwtToken {\n domainProviderJwtToken {\n result\n jwtToken\n errors\n }\n }\n`\n\nconst UPSERT_CUSTOM_DOMAIN_MUTATION = `\n mutation upsertCustomDomain($domain: String!) {\n upsertCustomDomain(domain: $domain ) {\n result\n errors\n }\n }\n`\n\nconst DELETE_CUSTOM_DOMAIN_MUTATION = `\n mutation deleteCustomDomain {\n deleteCustomDomain {\n result\n errors\n }\n }\n`\n\nconst GET_DOMAIN_STATUS_QUERY = `\n query domainStatus($domain: String!) {\n domainStatus(domain: $domain)\n }\n`\n\nexport default function CustomDomainSection({ customDomain, setDetailsValues, website }) {\n const [showDeleteModal, setShowDeleteModal] = React.useState(false)\n const [domainStatus, setDomainStatus] = React.useState(null)\n\n const [{ fetching: jwtTokenFetching }, domainProviderJwtToken] = useMutation(JWT_TOKEN_MUTATION)\n const [, upsertCustomDomain] = useMutation(UPSERT_CUSTOM_DOMAIN_MUTATION)\n const [{ fetching: deleteFetching }, deleteCustomDomain] = useMutation(DELETE_CUSTOM_DOMAIN_MUTATION)\n\n const [{ data, fetching: statusFeching, error }, reexecuteQuery] = useQuery({\n query: GET_DOMAIN_STATUS_QUERY,\n variables: { domain: customDomain },\n requestPolicy: \"network-only\"\n })\n\n React.useEffect(() => {\n if (data?.domainStatus) {\n setDomainStatus(data.domainStatus)\n }\n }, [data])\n\n const { showToast } = useToast()\n\n const handleAddOrEditDomain = () => {\n domainProviderJwtToken().then((result) => {\n if (result?.data?.domainProviderJwtToken?.result === \"success\") {\n const token = result.data.domainProviderJwtToken.jwtToken\n\n const config = customDomainConfig(token)\n\n showCustomDomainModal(config)\n window.addEventListener(\n \"onEntriStepChange\",\n (event) =>\n handleCustomDomainModalStepChange({\n event,\n upsertCustomDomain,\n showToast,\n updateState: setDetailsValues\n }),\n false\n )\n } else {\n let errorMessage = \"There was an error getting your custom domain.\"\n if (result.data?.domainProviderJwtToken?.errors) errorMessage += ` ${result.data.domainProviderJwtToken.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n const handleDeleteDomain = () => {\n deleteCustomDomain().then((result) => {\n if (result?.data?.deleteCustomDomain?.result === \"success\") {\n setDetailsValues(\"\")\n setShowDeleteModal(false)\n showToast({\n type: \"success\",\n content: \"Custom domain deleted successfully\"\n })\n } else {\n let errorMessage = \"There was an error deleting your custom domain.\"\n if (result.data?.deleteCustomDomain?.errors) errorMessage += ` ${result.data.deleteCustomDomain.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n const handleRefreshDomain = () => {\n reexecuteQuery()\n }\n\n const handlePurchaseDomain = () => {\n domainProviderJwtToken().then((result) => {\n if (result?.data?.domainProviderJwtToken?.result === \"success\") {\n const token = result.data.domainProviderJwtToken.jwtToken\n\n const config = customDomainConfig(token)\n\n showPurchaseDomainModal(config)\n window.addEventListener(\n \"onEntriStepChange\",\n (event) =>\n handleCustomDomainModalStepChange({\n event,\n upsertCustomDomain,\n showToast,\n updateState: setDetailsValues\n }),\n false\n )\n } else {\n let errorMessage = \"There was an error getting your custom domain.\"\n if (result.data?.domainProviderJwtToken?.errors) errorMessage += ` ${result.data.domainProviderJwtToken.errors}`\n showToast({\n type: \"error\",\n content: errorMessage\n })\n }\n })\n }\n\n const domainActive = domainStatus === \"active\"\n\n const domainStatsIcon = statusFeching ? (\n <ArrowPathIcon className=\"inline-block h-6 w-6 animate-spin rounded-full bg-orange p-1 text-white\" />\n ) : error ? (\n <span className=\"text-red\">Error getting status</span>\n ) : domainActive ? (\n <CheckIcon className=\"inline-block h-6 w-6 rounded-full bg-green p-1 text-white\" />\n ) : (\n <ExclamationCircleIcon className=\"inline-block h-6 w-6 rounded-full bg-red p-1 text-white\" />\n )\n\n const domainStatsText = statusFeching ? \"Processing\" : error ? \"Error\" : domainActive ? \"Active\" : \"Activating\"\n\n const cleanWebsite = customDomain\n ? \"\"\n : website && isValidUrl(website)\n ? `(${new URL(website).hostname.replace(/^www\\./, \"\")})`\n : \"(yourwebsite.com)\"\n\n return (\n <div className=\"flex flex-col\">\n <Typography variant=\"title\">Custom domain {cleanWebsite}</Typography>\n <Typography variant=\"smSubtitle\">\n This will point your personal web address to your Heal.me website.\n <br />\n Heal.me partners with Entri to connect and configure custom domains.\n </Typography>\n {customDomain && (\n <>\n <div\n className={twMerge(\n \"mt-2 flex w-full items-start justify-start gap-1 rounded-lg border p-4 md:flex-col md:gap-2\",\n domainActive ? \"border-green bg-green-light\" : \"\",\n statusFeching ? \"border-orange bg-orange-light\" : \"\",\n !statusFeching && (error || !domainActive) ? \"border-gray-light bg-gray-ultralight\" : \"\"\n )}>\n <div className=\"flex flex-col items-start justify-start gap-1\">\n <Typography variant=\"smSubtitle\">Custom domain:</Typography>\n <a href={`https://${customDomain}`} target=\"_blank\" rel=\"noreferrer\" className=\"font-bold text-teal\">\n {`https://${customDomain}`}\n </a>\n </div>\n <div className=\"ml-auto flex flex-col items-start justify-start gap-1 md:ml-0\">\n <Typography variant=\"smSubtitle\">Status:</Typography>\n <div className=\"flex items-center justify-start gap-1\">\n <div className=\"flex items-start justify-start gap-2\">\n {domainStatsIcon}\n\n <div className=\"font-bold\">{domainStatsText}</div>\n </div>\n </div>\n </div>\n </div>\n {!statusFeching && !domainActive && (\n <Typography variant=\"smSubtitle\" className=\"mt-2\">\n It may take up to 48 hours for the domain to be fully active.\n <br />\n If it takes more than that, please contact support.\n </Typography>\n )}\n\n <div className=\"mt-4 flex items-center justify-start gap-2\">\n <Button onClick={handleAddOrEditDomain}>Manage</Button>\n <Button\n type=\"secondary\"\n onClick={() => {\n setShowDeleteModal(true)\n }}>\n Delete\n </Button>\n <Button type=\"secondary\" onClick={handleRefreshDomain}>\n Refresh\n </Button>\n </div>\n </>\n )}\n {!customDomain && (\n <>\n <Button className=\"my-2 w-max\" disabled={jwtTokenFetching} onClick={handleAddOrEditDomain}>\n Connect my website domain\n </Button>\n <Button type=\"link\" className=\"w-fit text-left text-sm\" onClick={handlePurchaseDomain}>\n Purchase a website domain\n </Button>\n </>\n )}\n\n <AnimatedModal\n visible={showDeleteModal}\n hideModal={() => {\n setShowDeleteModal(false)\n }}\n showFooter={true}\n actionButtonCopy=\"Delete domain\"\n actionButtonType=\"destructive\"\n onSave={handleDeleteDomain}\n header={\"Delete custom domain\"}\n saveDisabled={deleteFetching}>\n <Typography variant=\"smSubtitle\">\n Are you sure you want to delete your custom domain? Your custom domain will stop working but your short link\n will continue working.\n </Typography>\n </AnimatedModal>\n </div>\n )\n}\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { EditableValue, ShortUrlInput } from \"../../components/shared/Inputs\"\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { useToast } from \"../../contexts/ToastContext\"\nimport CustomDomainSection from \"../ProfileEdit/CustomDomainSection\"\n\nconst UPDATE_SHORT_LINK_MUTATION = `\n mutation UpdateShortLink($shortLink: String!) {\n updateShortLink(shortLink: $shortLink) {\n result\n errors\n }\n }\n`\n\nconst WebsiteDomain = ({ shortLink, customDomain, customDomainEnabled, website }) => {\n const [shortLinkValue, setShortLinkValue] = useState(shortLink)\n const [lastSavedShortLink, setLastSavedShortLink] = useState(shortLink)\n const [customDomainValue, setCustomDomainValue] = useState(customDomain)\n\n const [{ fetching }, updateShortLink] = useMutation(UPDATE_SHORT_LINK_MUTATION)\n\n const { showToast } = useToast()\n\n const onSave = () => {\n updateShortLink({ shortLink: shortLinkValue }).then((result) => {\n if (result?.data?.updateShortLink?.result === \"success\") {\n setLastSavedShortLink(shortLinkValue)\n showToast(\"Short link updated successfully\")\n } else {\n console.error(result) // eslint-disable-line no-console\n setShortLinkValue(lastSavedShortLink)\n const errorMessage = result?.data?.updateShortLink?.errors?.join(\" \") || \"An error occurred\"\n showToast({\n content: errorMessage,\n type: \"error\"\n })\n }\n })\n }\n\n return (\n <>\n <Typography as=\"h2\" variant=\"h4\" className=\"mb-4\">\n Shortlink and custom domain\n </Typography>\n <div className=\"flex w-max flex-col items-start justify-start gap-6 rounded-xl border border-gray-light p-8 md:w-full\">\n <EditableValue\n name=\"Heal.me domain (heal.me/link)\"\n hint=\"Set your short profile link so it's easy to share your profile.\"\n value={shortLinkValue ? `https://heal.me/${shortLinkValue}` : null}\n saveDisabled={shortLinkValue?.length < 1 || shortLinkValue === lastSavedShortLink}\n disabled={fetching}\n onSave={onSave}\n onCancel={() => setShortLinkValue(lastSavedShortLink)}\n className={\"w-full\"}>\n <>\n <ShortUrlInput\n name=\"Short link\"\n value={shortLinkValue || \"\"}\n onChange={(e) => {\n const newValue = e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, \"\")\n setShortLinkValue(newValue)\n }}\n />\n <Typography variant=\"micro\">Only lowercase letters, numbers, hyphen and underscore allowed</Typography>\n </>\n </EditableValue>\n\n {customDomainEnabled && (\n <>\n <Divider className=\"my-2\" />\n <CustomDomainSection\n customDomain={customDomainValue}\n setDetailsValues={setCustomDomainValue}\n website={website}\n />\n </>\n )}\n </div>\n </>\n )\n}\n\nexport default WebsiteDomain\n","import React from \"react\"\n\nimport { Divider } from \"../../components/shared/Layout\"\nimport Typography from \"../../components/shared/Typography\"\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport SeoSettings from \"./SeoSettings\"\nimport WebsiteDomain from \"./WebsiteDomain\"\n\nconst WebsiteSettingsComponent = ({\n shortLink,\n customDomain,\n customDomainEnabled,\n website,\n websiteMetadata,\n isImpersonating\n}) => (\n <>\n <div>\n <div className=\"mb-9 flex flex-col sm:mb-4\">\n <Typography as=\"h1\" variant=\"h3\">\n Website Settings\n </Typography>\n </div>\n </div>\n <WebsiteDomain\n shortLink={shortLink}\n customDomain={customDomain}\n customDomainEnabled={customDomainEnabled}\n website={website}\n />\n {isImpersonating && (\n <>\n <Divider className=\"my-10\" />\n <SeoSettings websiteMetadata={websiteMetadata} />\n </>\n )}\n </>\n)\n\nexport default function WebsiteSettings({ ...props }) {\n return (\n <ToastProvider>\n <GraphQLProvider>\n <WebsiteSettingsComponent {...props} />\n </GraphQLProvider>\n </ToastProvider>\n )\n}\n","require(\"@rails/ujs\").start()\nrequire(\"channels/consumer\")\nrequire(\"swiper\")\nrequire(\"../src/application/setup\")\nrequire(\"../src/application/misc\")\nrequire(\"../src/application/amplitude\")\nrequire(\"../src/application/tabs\")\nrequire(\"../src/application/forms\")\nrequire(\"../src/application/quiz\")\nrequire(\"../src/application/toggle-controls\")\nrequire(\"../src/application/intlTelInput\")\nrequire(\"../src/application/utils\")\n\nimport \"controllers\"\nimport \"../stylesheets/application.css.sass\"\nimport \"react-tooltip/dist/react-tooltip.css\"\n\nimport ReactOnRails from \"react-on-rails\"\nimport { setLicenseKey } from \"survey-core\"\n\nimport { wrapWithErrorBoundary } from \"../@core/HoneyBadgerErrorBoundary\"\nimport ClientBookings from \"../components/client_bookings/ClientBookings\"\nimport ClientUploadButton from \"../components/ClientUploadButton\"\nimport BrowseTherapiesCTA from \"../components/header/BrowseTherapiesCTA\"\nimport MobileMenu from \"../components/header/MobileMenu\"\nimport SearchBar from \"../components/header/SearchBar\"\nimport InviteClients from \"../components/invite_clients/InviteClients\"\nimport ReviewBookNext from \"../components/leave_review/ReviewBookNext\"\nimport ReviewClientInfo from \"../components/leave_review/ReviewClientInfo\"\nimport ReviewConfirm from \"../components/leave_review/ReviewConfirm\"\nimport ReviewEndorsements from \"../components/leave_review/ReviewEndorsements\"\nimport ReviewIntro from \"../components/leave_review/ReviewIntro\"\nimport ReviewRating from \"../components/leave_review/ReviewRating\"\nimport ReviewTextReview from \"../components/leave_review/ReviewTextReview\"\nimport ListPracticeCTA from \"../components/ListPracticeCTA\"\nimport PortalHeader from \"../components/PortalHeader\"\nimport ProCalendar from \"../components/pro_portal/calendar/ProCalendar\"\nimport ClientDirectory from \"../components/pro_portal/clients/ClientDirectory\"\nimport DownloadMobileApp from \"../components/pro_portal/dashboard/DownloadMobileApp\"\nimport PaymentDirectory from \"../components/pro_portal/payments/PaymentDirectory\"\nimport ProInbox from \"../components/pro_portal/ProInbox\"\nimport ProfilePhoneNumber from \"../components/ProfilePhoneNumber\"\nimport ClientUpload from \"../components/shared/ClientUpload\"\nimport EnterPhone from \"../components/shared/EnterPhone\"\nimport SideNavigation from \"../components/SideNavigation\"\nimport BookableEvents from \"../pages/BookableEvents\"\nimport ClientBillingPage from \"../pages/Client/ClientBillingPage\"\nimport ClientIntakeForm from \"../pages/Client/ClientIntakeForm\"\nimport ClientNotes from \"../pages/Client/ClientNotes\"\nimport ClientOverview from \"../pages/Client/ClientOverview\"\nimport HomePage from \"../pages/HomePage\"\nimport IntakeForm from \"../pages/IntakeForm\"\nimport IntakeFormsPage from \"../pages/IntakeFormsPage\"\nimport ManageAppointmentsConsumer from \"../pages/ManageAppointmentsConsumer\"\nimport ManageEventRegistration from \"../pages/ManageEventRegistration\"\nimport ManagePaymentMethods from \"../pages/ManagePaymentMethods/ManagePaymentMethods\"\nimport PersonalSettings from \"../pages/PersonalSettings\"\nimport PortalGiftCardTemplatesPage from \"../pages/PortalGiftCardTemplates/PortalGiftCardTemplatesPage\"\nimport PortalServicesLocations from \"../pages/PortalServices/PortalServicesLocations\"\nimport PortalServicesPage from \"../pages/PortalServices/PortalServicesPage\"\nimport ProCommunicationSettings from \"../pages/PortalSettings/Communications/ProCommunicationSettings\"\nimport ProCommunicationTemplates from \"../pages/PortalSettings/Communications/ProCommunicationTemplates\"\nimport ConferencingSettingsPage from \"../pages/PortalSettings/ConferencingSettings\"\nimport PaypalSettings from \"../pages/PortalSettings/Payments/PaypalSettings\"\nimport SquarePaymentsSettings from \"../pages/PortalSettings/Payments/SquarePaymentsSettings\"\nimport StripePaymentsSettings from \"../pages/PortalSettings/Payments/StripePaymentsSettings\"\nimport ProBookingSettings from \"../pages/PortalSettings/ProBookingSettings\"\nimport ProCalendarSettings from \"../pages/PortalSettings/ProCalendarSettings\"\nimport ProMainSettings from \"../pages/PortalSettings/ProMainSettings\"\nimport ProPaymentSettings from \"../pages/PortalSettings/ProPaymentSettings\"\nimport PractitionerLandingPage from \"../pages/PractitionerLandingPage/PractitionerLandingPage\"\nimport CombinedInformationPage from \"../pages/ProfileEdit/CombinedInformationPage\"\nimport PersonalInformationPage from \"../pages/ProfileEdit/PersonalInformationPage\"\nimport PracticeInformationPage from \"../pages/ProfileEdit/PracticeInformationPage\"\nimport ProfileEditCredentialsV2 from \"../pages/ProfileEdit/ProfileEditCredentialsV2\"\nimport ProfileEditAudience from \"../pages/ProfileEditAudience\"\nimport ProfileEditCredentials from \"../pages/ProfileEditCredentials\"\nimport ProfileEditDetails from \"../pages/ProfileEditDetails\"\nimport ProfileEditEndorsements from \"../pages/ProfileEditEndorsements\"\nimport ProfileEditLocations from \"../pages/ProfileEditLocations\"\nimport ProfileEditPhotos from \"../pages/ProfileEditPhotos\"\nimport ProfileEditServices from \"../pages/ProfileEditServices\"\nimport ProProfile from \"../pages/ProProfile\"\nimport ProProfileV2 from \"../pages/ProProfileV2\"\nimport ProReviews from \"../pages/ProReviews\"\nimport ProReviewsCompletedPage from \"../pages/ProReviews/ProReviewsCompletedPage\"\nimport ProReviewsEndorsementsPage from \"../pages/ProReviews/ProReviewsEndorsementsPage\"\nimport ProReviewsImportPage from \"../pages/ProReviews/ProReviewsImportPage\"\nimport ProReviewsPendingPage from \"../pages/ProReviews/ProReviewsPendingPage\"\nimport ProReviewsRequestPage from \"../pages/ProReviews/ProReviewsRequestPage\"\nimport ReferralProgramPage from \"../pages/ReferralProgramPage\"\nimport SearchPage from \"../pages/SearchPage\"\nimport TopNavSearchBox from \"../pages/SearchPage/TopNavSearchBox\"\nimport WebsiteBuilderPage from \"../pages/WebsiteBuilder/WebsiteBuilderPage\"\nimport WebsiteContentPage from \"../pages/WebsiteBuilder/WebsiteContentPage\"\nimport WebsiteDash from \"../pages/WebsiteDash\"\nimport WebsiteSettings from \"../pages/WebsiteSettings/WebsiteSettings\"\nimport dayJsPlugins from \"../utils/dayJsPlugins\" // eslint-disable-line no-unused-vars\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Note: we've removed turbolinks, but much of the legacy code still listens for this event. Eventually we want to remove even these events.\n document.dispatchEvent(new Event(\"turbolinks:load\", { bubbles: true, cancelable: true }))\n})\n\nsetLicenseKey(\n \"ZjY4NTJmMjItNzgzNS00MWY0LWFjNzktMTZhNjFhOTUzNTJkJmRvbWFpbnM6aGVhbC5tZSxsb2NhbGhvc3Q6MzAwMDsxPTIwMjUtMDctMTksMj0yMDI1LTA3LTE5LDQ9MjAyNS0wNy0xOQ==\"\n)\n\nconst components = {\n ProfilePhoneNumber,\n InviteClients,\n ListPracticeCTA,\n DownloadMobileApp,\n ProCalendar,\n ProInbox,\n ProMainSettings,\n ProCalendarSettings,\n ProReviews,\n BrowseTherapiesCTA,\n SearchBar,\n MobileMenu,\n ClientDirectory,\n PaymentDirectory,\n ClientUpload,\n EnterPhone,\n ManageAppointmentsConsumer,\n ManageEventRegistration,\n ClientBookings,\n ProCommunicationSettings,\n ProCommunicationTemplates,\n SideNavigation,\n ClientUploadButton,\n ProfileEditDetails,\n ProfileEditCredentials,\n ProfileEditEndorsements,\n ProfileEditPhotos,\n ProfileEditServices,\n ProfileEditLocations,\n ProfileEditAudience,\n ProPaymentSettings,\n StripePaymentsSettings,\n SquarePaymentsSettings,\n PaypalSettings,\n ProBookingSettings,\n PortalHeader,\n PersonalSettings,\n ReviewIntro,\n ReviewClientInfo,\n ReviewRating,\n ReviewEndorsements,\n ReviewTextReview,\n ReviewBookNext,\n ReviewConfirm,\n ManagePaymentMethods,\n HomePage,\n ProProfile,\n ProProfileV2,\n SearchPage,\n TopNavSearchBox,\n BookableEvents,\n ClientNotes,\n IntakeFormsPage,\n IntakeForm,\n ClientOverview,\n ClientIntakeForm,\n ClientBillingPage,\n WebsiteBuilderPage,\n WebsiteContentPage,\n WebsiteDash,\n WebsiteSettings,\n PortalServicesPage,\n PortalServicesLocations,\n ProReviewsCompletedPage,\n ProReviewsImportPage,\n ProReviewsPendingPage,\n ProReviewsRequestPage,\n ProReviewsEndorsementsPage,\n PersonalInformationPage,\n ProfileEditCredentialsV2,\n PracticeInformationPage,\n PractitionerLandingPage,\n ReferralProgramPage,\n CombinedInformationPage,\n PortalGiftCardTemplatesPage,\n ConferencingSettingsPage\n}\n\nObject.entries(components).forEach(([name, Component]) => {\n ReactOnRails.register({\n [name]: wrapWithErrorBoundary(Component)\n })\n})\n","import React, { useState } from \"react\"\nimport { useMutation } from \"urql\"\n\nimport { sendAmplitudeData } from \"../../support/amplitude-react\"\nimport LoadingSpinner from \"../shared/LoadingSpinner\"\n\nimport ChooseMethod from \"./ChooseMethod\"\nimport Confirmation from \"./Confirmation\"\nimport CopyPaste from \"./CopyPaste\"\nimport Review from \"./Review\"\n\nconst InviteClientsMutation = `\n mutation InviteClients($clients: [ClientInput!]!) {\n inviteClients (clients: $clients) {\n erroredClients {\n email\n }\n }\n }\n`\n\nexport default function InviteClients() {\n const [active, setActive] = useState(\"file\")\n const [step, setStep] = useState(1)\n const [clients, setClients] = useState([])\n const [existingClients, setExistingClients] = useState([])\n const [field, setField] = useState(\"\")\n const [, inviteClients] = useMutation(InviteClientsMutation)\n const [errorMessage, setErrorMessage] = useState(\"\")\n\n const handleChoiceUpdate = (newVal) => {\n setActive(newVal)\n }\n\n const handleChoice = (choice) => {\n if (choice === \"file\") {\n setStep(2)\n sendAmplitudeData(\"import method selected\", { \"Method Selected\": \"CSV\" })\n } else if (choice === \"single\") {\n window.location.href = \"/portal/clients?show_add_client_form=1\"\n } else {\n setStep(3)\n sendAmplitudeData(\"import method selected\", { \"Method Selected\": \"Copy Paste\" })\n }\n }\n\n const handleFieldChange = (val) => {\n sendAmplitudeData(\"import row edited\")\n setField(val)\n }\n\n const handleFileUpload = () => {\n setStep(4)\n sendAmplitudeData(\"csv uploaded\")\n }\n\n const review = (clients) => {\n setClients(clients)\n setStep(4)\n }\n\n const editContacts = () => {\n setStep(3)\n }\n\n const submitContacts = () => {\n setStep(6)\n inviteClients({ clients: clients }).then((result) => {\n if (result.error) {\n console.error(result.error)\n } else {\n sendAmplitudeData(\"import clients submitted\", {\n \"Total Rows\": clients.length,\n \"Errored Invites\": result.data.inviteClients.erroredClients.length\n })\n setExistingClients(result.data.inviteClients.erroredClients)\n setStep(5)\n }\n })\n }\n\n const reviewInput = (userInput, invitationType) => {\n const clients = []\n // split input on linebreaks\n const array = userInput.split(/\\r?\\n/)\n array.forEach((row) => {\n // split row on commas\n const rowArray = row.split(/[,\\t]+/)\n if (validateEmail(rowArray[0])) {\n clients.push({\n email: rowArray[0],\n firstName: rowArray[1],\n lastName: rowArray[2],\n phone: rowArray[3],\n clientType: \"invited\",\n invitedFrom: invitationType\n })\n }\n })\n if (clients.length) {\n if (invitationType == \"csv_upload\") {\n sendAmplitudeData(\"csv upload sucess\", { \"Valid Rows\": clients.length })\n } else {\n sendAmplitudeData(\"copy paste sucess\", { \"Valid Rows\": clients.length })\n }\n\n review(clients)\n } else {\n if (invitationType == \"csv_upload\") {\n sendAmplitudeData(\"csv upload failed\")\n } else {\n sendAmplitudeData(\"copy paste failed\")\n }\n\n setErrorMessage(\n invitationType == \"csv_upload\"\n ? \"Please make sure the file contains at least one correct email and the formatting of your file is in this order: Email | First name | Last name | Phone number\"\n : \"Please make sure you entered at least one correct email and you entered the information in this order: Email | First name | Last name | Phone number\"\n )\n }\n handleFieldChange(userInput)\n }\n\n const validateEmail = (email) => {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return re.test(email)\n }\n\n const SwitchCase = ({ value }) => {\n switch (value) {\n case 1:\n return (\n <ChooseMethod\n handleChoice={handleChoice}\n active={active}\n handleChoiceUpdate={handleChoiceUpdate}\n handleFileUpload={handleFileUpload}\n reviewInput={reviewInput}\n />\n )\n case 2:\n return <div />\n case 3:\n return <CopyPaste field={field} reviewInput={reviewInput} errorMessage={errorMessage} />\n case 4:\n return <Review clients={clients} submitContacts={submitContacts} editContacts={editContacts} />\n case 5:\n return <Confirmation clients={clients} existingClients={existingClients} />\n case 6:\n return <LoadingSpinner />\n }\n }\n\n return (\n <div>\n <SwitchCase value={step} />\n </div>\n )\n}\n","import React from \"react\"\n\nimport { sendAmplitudeData } from \"../support/amplitude-react\"\nexport default function ListPracticeCTA({ classname, amplitudeData, styling }) {\n const sendAnalytics = () => {\n sendAmplitudeData(amplitudeData)\n fbq(\"trackCustom\", \"typeform_opened\")\n }\n\n const ctaUrl = \"/pro\"\n\n return (\n <div onClick={sendAnalytics} style={{ display: \"flex\" }}>\n <a href={ctaUrl} className={classname} style={styling}>\n Join as a practitioner\n </a>\n </div>\n )\n}\n","import React from \"react\"\n\nimport GraphQLProvider from \"../providers/GraphQLProvider\"\n\nimport ClientUpload from \"./shared/ClientUpload\"\n\nexport default function ClientUploadButton(props) {\n return (\n <GraphQLProvider>\n <ClientUpload {...props} />\n </GraphQLProvider>\n )\n}\n","import React from \"react\"\n\nimport { ToastProvider } from \"../../contexts/ToastContext\"\nimport GraphQLProvider from \"../../providers/GraphQLProvider\"\n\nimport ContentTab from \"./ContentTab\"\nimport { WebsiteBuilderProvider } from \"./WebsiteBuilderContext\"\nimport WebsitePreviewView from \"./WebsitePreviewView\"\n\nimport \"../../components/shared/wysiwyg.sass\"\n\nexport default function WebsiteBuilderPage(props) {\n return (\n <ToastProvider>\n <GraphQLProvider>\n <WebsiteBuilderProvider {...props}>\n <WebsitePreviewView>\n <div className=\"p-8 pt-6\">\n <ContentTab />\n </div>\n </WebsitePreviewView>\n </WebsiteBuilderProvider>\n </GraphQLProvider>\n </ToastProvider>\n )\n}\n","import React from \"react\"\n\nimport PersonalInformationUser from \"./PersonalInformationUser\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function PersonalInformationPage({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <PersonalInformationUser {...props} />\n </ProfileEditProvider>\n )\n}\n","import React from \"react\"\n\nimport PersonalInformationPractice from \"./PersonalInformationPractice\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function PracticeInformationPage({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <PersonalInformationPractice {...props} />\n </ProfileEditProvider>\n )\n}\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport PersonalInformationPractice from \"./PersonalInformationPractice\"\nimport PersonalInformationUser from \"./PersonalInformationUser\"\nimport ProfileEditProvider from \"./ProfileEditProvider\"\n\nexport default function CombinedInformationPage({ profileStatusData, ...props }) {\n return (\n <ProfileEditProvider profileStatusData={profileStatusData}>\n <div className=\"mb-8 flex items-center justify-between align-bottom sm:mb-4 sm:flex-col sm:items-start\">\n <div className=\"flex flex-col\">\n <Typography variant=\"h3\" as=\"h1\">\n Details\n </Typography>\n <Typography variant=\"subtitle\">Edit information about you and your practice</Typography>\n </div>\n </div>\n\n <div className=\"space-y-8\">\n <section>\n <PersonalInformationUser {...props} />\n <PersonalInformationPractice {...props} />\n </section>\n </div>\n </ProfileEditProvider>\n )\n}\n","import React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { ButtonLink } from \"../../components/shared/Links\"\n\nconst CTALink = ({ className, href = \"/practitioner-search\", children = \"Find a practitioner\", ...rest }) => (\n <ButtonLink\n {...rest}\n className={twMerge(\"block px-10 py-4 text-center hover:shadow active:bg-teal-dark sm:w-full\", className)}\n href={href}>\n {children}\n </ButtonLink>\n)\n\nexport default CTALink\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst BottomCTA = () => (\n <section className=\"mx-auto flex max-w-splash-container py-10 pb-20 hplg:px-8 sm:p-0 sm:py-5 sm:pb-10\">\n <div className=\"w-full bg-[url('~/public/images/homepage/bottom-cta.webp')] bg-cover bg-no-repeat bg-blend-multiply\">\n <div className=\"h-full w-full bg-black bg-opacity-[0.64] p-24 sm:flex sm:h-[320px] sm:flex-col sm:justify-center sm:p-8\">\n <Typography variant=\"hxl\" className=\"leading-tight text-white sm:text-[24px]\">\n Explore over 4,000+ holistic practitioners.\n </Typography>\n <Typography variant=\"h4\" as=\"p\" className=\"mb-6 mt-4 font-normal leading-normal text-white\">\n The best practitioners are on Heal.me, book a session today.\n </Typography>\n <CTALink href=\"/practitioner-search\">Find a practitioner</CTALink>\n </div>\n </div>\n </section>\n)\n\nexport default BottomCTA\n","import React, { useState, useEffect } from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst bgImageClasses = [\n \"bg-[url('~/public/images/homepage/hero_images/image-1.webp')]\",\n \"bg-[url('~/public/images/homepage/hero_images/image-2.webp')]\",\n \"bg-[url('~/public/images/homepage/hero_images/image-3.webp')]\",\n \"bg-[url('~/public/images/homepage/hero_images/image-4.webp')]\",\n \"bg-[url('~/public/images/homepage/hero_images/image-5.webp')]\"\n]\nconst randomIndex = Math.floor(Math.random() * bgImageClasses.length)\nconst currentBgImageClass = bgImageClasses[randomIndex]\n\nconst HeroSection = () => {\n const [ctaButtonIsSticky, setCtaButtonIsSticky] = useState(false)\n const [ctaButtonLeftOffset, setCtaButtonLeftOffset] = useState(0)\n\n useEffect(() => {\n const ctaButton = document.getElementById(\"cta-button\")\n const stickyPoint = ctaButton.offsetTop\n setCtaButtonLeftOffset(ctaButton.offsetLeft)\n\n const handleScroll = () => setCtaButtonIsSticky(window.scrollY > stickyPoint)\n\n window.addEventListener(\"scroll\", handleScroll)\n handleScroll()\n\n return () => window.removeEventListener(\"scroll\", handleScroll)\n }, [])\n\n return (\n <section className=\"h-[75vh]\">\n <div\n className={`mb-10 h-[75vh] bg-cover bg-center bg-no-repeat bg-blend-multiply sm:mb-5 ${currentBgImageClass}`}>\n <div className=\"h-full w-full bg-black bg-opacity-[0.64]\">\n <div className=\"mx-auto flex h-full max-w-splash-container items-center hplg:px-8 sm:items-end sm:px-6\">\n <div className=\"flex max-w-3xl flex-col gap-4 py-24 sm:pb-16\">\n <Typography variant=\"hxl\" className=\"leading-tight text-white\">\n Book with 4000+\n <br />\n holistic practitioners\n </Typography>\n <Typography variant=\"h3\" as=\"p\" className=\"mb-4 font-normal leading-normal text-white\">\n From massage therapists to reiki masters, nutritionists to naturopaths, and everything in between.\n </Typography>\n {!ctaButtonIsSticky && (\n <CTALink id=\"cta-button\" href=\"/practitioner-search\">\n Find a practitioner\n </CTALink>\n )}\n </div>\n </div>\n </div>\n </div>\n {ctaButtonIsSticky && (\n <div\n className=\"fixed top-[12px] z-9998 py-2 sm:-left-4 sm:top-[63px] sm:mx-4 sm:w-full sm:border-y sm:border-gray-light sm:bg-white sm:px-6 sm:py-4\"\n style={{ left: ctaButtonLeftOffset }}>\n <CTALink id=\"cta-button\" href=\"/practitioner-search\" className=\"py-2\">\n Find a practitioner\n </CTALink>\n </div>\n )}\n </section>\n )\n}\n\nexport default HeroSection\n","import React from \"react\"\n\nimport Typography from \"../../components/shared/Typography\"\n\nimport CTALink from \"./CTALink\"\n\nconst PractitionerJoinCTA = () => (\n <section className=\"mx-auto flex max-w-splash-container px-0 py-10 sm:py-5\">\n <div className=\"w-[816px] bg-orange-light px-20 py-24 hplg:w-full sm:p-8\">\n <Typography variant=\"h2\" className=\"!leading-tight\">\n <span>Holistic practitioner? Apply today.</span>\n </Typography>\n <p className=\"mb-6 mt-4\">\n Grow your practice with the all-in-one platform and marketplace for holistic professionals.\n </p>\n <CTALink href=\"https://heal.me/lp/application\">Apply Now</CTALink>\n </div>\n <div className=\"w-[384px] hplg:hidden\">\n <img className=\"h-full w-full\" src=\"/images/homepage/pro-cta.webp\" alt=\"Practitioner\" loading=\"lazy\" />\n </div>\n </section>\n)\n\nexport default PractitionerJoinCTA\n","import React, { useEffect, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { practitionerWebsiteUrl } from \"../../@core/practitioner/practitioner.utils\"\nimport { Box, Divider } from \"../../components/shared/Layout\"\nimport ReviewStars from \"../../components/shared/ReviewStars\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst ReviewCard = ({ review, className }) => {\n const isAnonymous = review.isAnonymous\n const reviewText = review.review.trim()\n const name = review.client?.firstName || review.user?.firstName\n const lastName = review.client?.lastName || review.user?.lastName\n const firstName = name && name.split(\" \")[0]\n const firstInitial = firstName && `${firstName[0]}.`?.toUpperCase()\n const lastInitial = (lastName && `${lastName[0]}.`?.toUpperCase()) || (name && name.split(\" \")[1]?.toUpperCase())\n\n return (\n <Box\n as=\"a\"\n href={practitionerWebsiteUrl(review.practice.user, review.practice)}\n target=\"_blank\"\n key={review.id}\n keepBorderInMobile={true}\n className={twMerge(\n \"flex min-h-[328px] flex-col transition-opacity duration-700 ease-in-out focus:outline-none focus:ring-4 sm:min-h-[285px]\",\n className\n )}>\n <div className=\"line-clamp-5 text-black\" dangerouslySetInnerHTML={{ __html: reviewText }}></div>\n <div className=\"mt-auto\">\n <div className=\"flex w-full flex-wrap items-center gap-2\">\n <Typography variant=\"small\" as=\"div\" className=\"hidden text-gray-dark sm:block\">\n {isAnonymous ? \"Anonymous\" : `${firstInitial} ${lastInitial}`} • {review.createdAtAgoInWords}\n </Typography>\n <Typography variant=\"small\" as=\"div\" className=\"text-gray-dark sm:hidden\">\n {isAnonymous ? \"Anonymous\" : `${firstName}${lastInitial ? ` ${lastInitial}` : \"\"}`} •{\" \"}\n {review.createdAtAgoInWords}\n </Typography>\n <ReviewStars rating={review.rating} />\n </div>\n <Divider className=\"my-4\" />\n <div className=\"flex w-full items-center gap-3 truncate\">\n <img\n src={review.practice.user.smallPhotoUrl}\n alt=\"Practitioner photo\"\n className=\"h-12 w-12 rounded-full object-cover object-center\"\n />\n <div className=\"flex flex-col truncate\">\n <div className=\"flex items-center gap-1\">\n <span className=\"truncate font-bold\">{review.practice.user.name}</span>\n <img className=\"h-5 w-5\" src=\"/images/email/verified.png\" alt=\"Verified\" />\n </div>\n <Typography variant=\"smSubtitle\" className=\"truncate\">\n {review.practice.user.title}\n </Typography>\n </div>\n </div>\n </div>\n </Box>\n )\n}\n\nconst ReviewsSection = ({ reviews }) => {\n const defaultNumReviewsShown = 3\n const [reviewsState, setReviewsState] = useState({\n numReviewsShown: defaultNumReviewsShown,\n shownReviews: reviews.slice(0, defaultNumReviewsShown),\n nextReviewIndex: defaultNumReviewsShown,\n nextSlotIndex: 0\n })\n const [startAnimation, setStartAnimation] = useState(false)\n\n useEffect(() => {\n if (reviews.length === 0) return\n\n const interval = setInterval(() => {\n setStartAnimation(true)\n setTimeout(() => {\n setReviewsState((prevState) => {\n const nextReview = reviews[prevState.nextReviewIndex]\n const newShownReviews = [...prevState.shownReviews]\n newShownReviews[prevState.nextSlotIndex] = nextReview\n return {\n ...prevState,\n shownReviews: newShownReviews,\n nextReviewIndex: (prevState.nextReviewIndex + 1) % reviews.length\n }\n })\n }, 650)\n\n setTimeout(() => {\n setStartAnimation(false)\n setReviewsState((prevState) => ({\n ...prevState,\n nextSlotIndex: (prevState.nextSlotIndex + 1) % prevState.numReviewsShown\n }))\n }, 700)\n }, 3000)\n return () => clearTimeout(interval)\n }, [])\n\n return (\n <section className=\"mx-auto max-w-splash-container py-10 hplg:px-8 sm:px-6 sm:py-5\">\n <Typography variant=\"h3\" as=\"h2\" className=\"mb-4\">\n Recent client reviews\n </Typography>\n <div className=\"grid grid-cols-3 gap-4 sm:grid-cols-1\">\n {reviewsState.shownReviews.map((review, i) => (\n <ReviewCard\n key={review.id}\n review={review}\n className={\n startAnimation && i === reviewsState.nextSlotIndex % reviewsState.numReviewsShown\n ? \"opacity-0\"\n : \"opacity-100\"\n }\n />\n ))}\n </div>\n </section>\n )\n}\n\nexport default ReviewsSection\n","import { ArrowRightIcon, ChevronRightIcon } from \"@heroicons/react/24/solid\"\nimport React, { useState } from \"react\"\n\nimport { Button } from \"../../components/shared/Buttons\"\nimport { ButtonLink } from \"../../components/shared/Links\"\nimport Typography from \"../../components/shared/Typography\"\n\nconst TherapyCategoriesSection = ({ therapyCategories }) => {\n const [showAll, setShowAll] = useState(false)\n\n const limitedTherapyCategories = therapyCategories.slice(0, 13)\n const fullTherapyCategories = therapyCategories\n\n return (\n <section className=\"mx-auto max-w-splash-container py-10 hplg:px-8 sm:px-6 sm:py-5\">\n <Typography variant=\"h3\" as=\"h2\" className=\"mb-4\">\n Explore holistic services\n </Typography>\n <div className=\"columns-4 lg:columns-3 md:columns-2 sm:hidden\">\n {fullTherapyCategories.map((category) => (\n <a\n className=\"group mb-2 flex items-center text-gray-dark hover:font-bold hover:text-black hover:underline\"\n href={`/practitioner-search?query=${encodeURIComponent(category)}`}\n key={category}>\n {category}\n <span className=\"-mx-16 h-6 w-6 translate-x-16 text-gray-dark opacity-0 transition-opacity duration-500 ease-in-out group-hover:opacity-100\">\n <ChevronRightIcon />\n </span>\n </a>\n ))}\n </div>\n <ButtonLink\n href=\"/practitioner-search\"\n className=\"mt-4 flex items-center justify-center border border-teal bg-white text-teal active:bg-gray-light sm:hidden\">\n Explore all services <ArrowRightIcon className=\"ml-2 h-6 w-6\" />\n </ButtonLink>\n\n <div className=\"hidden sm:flex sm:flex-col\">\n {(showAll ? fullTherapyCategories : limitedTherapyCategories).map((category) => (\n <a\n className=\"mb-2 text-gray-dark hover:font-bold hover:text-black hover:underline\"\n href={`/practitioner-search?query=${encodeURIComponent(category)}`}\n key={category}>\n {category}\n </a>\n ))}\n {!showAll && (\n <div className=\"w-full bg-gradient-to-t from-white sm:-mt-8\">\n <Button type=\"tertiary\" onClick={() => setShowAll(true)} className=\"mx-auto sm:block\">\n Show all services\n </Button>\n </div>\n )}\n {showAll && (\n <ButtonLink\n href=\"/practitioner-search\"\n className=\"mt-4 hidden w-full items-center justify-center border border-teal bg-white text-teal sm:flex\">\n Explore all services <ArrowRightIcon className=\"ml-2 h-6 w-6\" />\n </ButtonLink>\n )}\n </div>\n </section>\n )\n}\n\nexport default TherapyCategoriesSection\n","import React from \"react\"\n\nimport BottomCTA from \"./HomePage/BottomCTA\"\nimport HeroSection from \"./HomePage/HeroSection\"\nimport PractitionerJoinCTA from \"./HomePage/PractitionerJoinCTA\"\nimport ReviewsSection from \"./HomePage/ReviewsSection\"\nimport TherapyCategoriesSection from \"./HomePage/TherapyCategoriesSection\"\n\nconst HomePage = ({ reviews, therapyCategories, isMobile }) => (\n <div>\n <HeroSection />\n <ReviewsSection reviews={reviews} isMobile={isMobile} />\n <TherapyCategoriesSection therapyCategories={therapyCategories} />\n <PractitionerJoinCTA />\n <BottomCTA />\n </div>\n)\n\nexport default HomePage\n","import amplitude from \"amplitude-js\"\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n amplitude.getInstance().init(App.amplitude_id, null, {\n includeUtm: true,\n includeReferrer: true,\n includeGclid: true,\n includeFbclid: true\n })\n\n amplitude.getInstance().logEvent(`page view: ${App.page_name}`, { \"page title\": document.title })\n if (App.user_id) {\n amplitude.getInstance().setUserId(App.user_id)\n amplitude.getInstance().setUserProperties({ \"profile type\": App.user_kind })\n }\n\n $(\"a:not([data-amplitude])\").click(() => {\n const link = $(this).attr(\"href\")\n const text = $(this).text()\n if (link) {\n amplitude.getInstance().logEvent(\"link clicked\", { href: link, screen: App.page_name, text: text })\n }\n })\n\n $(\"[data-amplitude='home-search']\").click(() => {\n amplitude.getInstance().logEvent(\"search from homepage\", { query: $(\"[data-amplitude='query']\").val() })\n })\n\n $(\"[data-amplitude='homepage-category']\").click(() => {\n amplitude.getInstance().logEvent(\"homepage category clicked\", { Category: $(this).text() })\n })\n\n $(\"[data-amplitude='homepage-list-practice']\").click(() => {\n amplitude.getInstance().logEvent(\"homepage list practice clicked\")\n })\n\n $(\"[data-amplitude='slide-pro-carousel']\").click(() => {\n amplitude.getInstance().logEvent(\"viewed more pros\")\n })\n\n $(\"[data-amplitude='homepage-top-practitioner']\").click(() => {\n amplitude.getInstance().logEvent(\"homepage top practitioner clicked\")\n })\n\n // Booking Widget Clicks\n $(\"[data-amplitude='service']\").click(() => {\n const serviceName = $(this).text()\n amplitude.getInstance().logEvent(\"service selected\", { value: serviceName })\n })\n\n $(\"[data-amplitude='location']\").click(() => {\n const locationName = $(this).text()\n amplitude.getInstance().logEvent(\"location selected\", { value: locationName })\n })\n\n $(\"[data-amplitude='time']\").click(() => {\n amplitude.getInstance().logEvent(\"time selected\")\n })\n\n $(\"[data-amplitude='booking-started-profile']\").click(() => {\n amplitude.getInstance().logEvent(\"booking started\", {\n screen: \"Profile Page\",\n \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n })\n })\n\n function initAccountHandler() {\n setTimeout(() => {\n $(\"[data-amplitude='login-created']\").click(() => {\n amplitude.getInstance().logEvent(\"client login created\", {\n email: $(\"[data-amplitude=email-selection]\").val()\n })\n })\n }, 1000)\n }\n\n $(\"[data-amplitude='personal-details-submitted']\").click(() => {\n amplitude.getInstance().logEvent(\"client personal details entered\", {\n \"full name\": $(\"[data-amplitude=name-selection]\").val(),\n dob: $(\"[data-amplitude=dob-selection]\").val(),\n gender: $(\"[data-amplitude=gender-selection]\").val()\n })\n initAccountHandler()\n })\n\n function initVerifyHandler() {\n setTimeout(() => {\n $(\"[data-amplitude='verify-phone']\").click(() => {\n amplitude.getInstance().logEvent(\"client phone verified\")\n })\n\n $(\"[data-amplitude='phone-no-code']\").click(() => {\n amplitude.getInstance().logEvent(\"phone code not received\")\n })\n }, 1000)\n }\n\n $(\"[data-amplitude='text-verify']\").click(() => {\n initVerifyHandler()\n amplitude.getInstance().logEvent(\"client phone entered\", {\n \"phone number\": $(\"[data-amplitude=phone-selection]\").val(),\n \"verification method\": \"text\"\n })\n })\n\n $(\"[data-amplitude='call-verify']\").click(() => {\n initVerifyHandler()\n amplitude.getInstance().logEvent(\"client phone entered\", {\n \"phone number\": $(\"[data-amplitude=phone-selection]\").val(),\n \"verification method\": \"call\"\n })\n })\n\n $(\"[data-amplitude='quiz-start']\").click(() => {\n amplitude.getInstance().logEvent(\"quiz started\")\n })\n\n if ($(\"[data-amplitude='checkout-screen\").length > 0) {\n amplitude.getInstance().logEvent(\"checkout started\", {\n \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n })\n }\n\n $(\"[data-amplitude='new-card']\").click(() => {\n amplitude.getInstance().logEvent(\"card added\", {\n \"pro name\": $(\"[data-amplitude=name-selection]\").text(),\n \"service name\": $(\"[data-amplitude=service-selection]\").text(),\n \"service location\": $(\"[data-amplitude=location-selection]\").text(),\n \"service price\": $(\"[data-amplitude=cost-selection]\").text()\n })\n })\n\n function collectCancelData(canceledBy) {\n amplitude.getInstance().logEvent(\"booking canceled\", {\n \"pro name\": $(this).data(\"amplitude-pro\"),\n \"service name\": $(this).data(\"amplitude-service\"),\n \"service location\": $(this).data(\"amplitude-location\"),\n \"service price\": $(this).data(\"amplitude-price\"),\n \"canceled by\": canceledBy\n })\n }\n\n $(\"[data-amplitude='consumer-cancel']\").click(() => {\n collectCancelData(\"cancel\")\n })\n\n $(\"[data-amplitude='pro-cancel']\").click(() => {\n collectCancelData(\"pro\")\n })\n\n function initRescheduleHandler() {\n setTimeout(() => {\n $(\"[data-amplitude='pro-reject-reschedule']\").click(() => {\n amplitude.getInstance().logEvent(\"booking rejected\", {\n \"pro name\": $(this).data(\"amplitude-pro\"),\n \"service name\": $(this).data(\"amplitude-service\"),\n \"service location\": $(this).data(\"amplitude-location\"),\n \"service price\": $(this).data(\"amplitude-price\"),\n \"canceled by\": \"pro\"\n })\n })\n }, 1000)\n }\n\n $(\"[data-amplitude='start-reschedule']\").click(() => {\n initRescheduleHandler()\n })\n\n $(\"[data-amplitude='new-time-accepted']\").click(() => {\n amplitude.getInstance().logEvent(\"booking new time accepted\", {\n \"pro name\": $(this).data(\"amplitude-pro\"),\n \"service name\": $(this).data(\"amplitude-service\"),\n \"service location\": $(this).data(\"amplitude-location\"),\n \"service price\": $(this).data(\"amplitude-price\")\n })\n })\n\n $(\"[data-amplitude='question-asked']\").click(() => {\n amplitude.getInstance().logEvent(\"question asked\", {\n question: $(\"[data-amplitude=question]\").val(),\n tags: $(\"[data-amplitude=tags]\").val(),\n \"additional details\": $(\"[data-amplitude=details]\").val()\n })\n })\n\n function initQuestionHandler() {\n setTimeout(() => {\n $(\"[data-amplitude='quiz-step-completed']\").on(\"click\", () => {\n amplitude.getInstance().logEvent(\"quiz step completed\", {\n \"question title\": $(this).data(\"amplitude-title\"),\n \"question step\": $(this).data(\"amplitude-step\"),\n \"question answer\": $(\"#quiz_answer_values\").val()\n })\n initQuestionHandler()\n })\n }, 1000)\n }\n\n $(\"[data-amplitude='quiz-start']\").click(() => {\n amplitude.getInstance().logEvent(\"quiz started\")\n initQuestionHandler()\n })\n\n $(\"[data-amplitude='first-login']\").click(() => {\n amplitude.getInstance().logEvent(\"first time pro login\")\n })\n\n $(\"[data-amplitude='save-info']\").click(() => {\n if ($(\"#setup_info_title\").val() && $(\"#headline-id\").val() && $(\"#setup_info_personal_nickname\").val()) {\n amplitude.getInstance().logEvent(\"basic info completed\")\n }\n })\n\n $(\"[data-amplitude='save-photo']\").click(() => {\n if ($(\".filestack-upload.with-profile\").length) {\n amplitude.getInstance().logEvent(\"profile photo uploaded\")\n }\n\n if ($(\".filestack-upload.with-video\").length) {\n amplitude.getInstance().logEvent(\"video uploaded\")\n }\n\n if ($(\".filestack-upload.with-header\").length) {\n amplitude.getInstance().logEvent(\"cover photo uploaded\")\n }\n })\n\n $(\"[data-amplitude='save-location']\").click(() => {\n amplitude.getInstance().logEvent(\"location saved\")\n })\n\n if ($(\"[data-amplitude='stripe-connected']\").length && $(\"[data-amplitude='stripe-connected']\").is(\":visible\")) {\n amplitude.getInstance().logEvent(\"stripe connected\")\n }\n\n $(\"[data-amplitude='save-service']\").click(() => {\n amplitude.getInstance().logEvent(\"service saved\", {\n \"service name\": $(\"[data-amplitude=service-name]\").val(),\n \"service price\": $(\"[data-amplitude=service-price]\").val(),\n \"service length\": $(\"[data-amplitude=service-length]\").val()\n })\n })\n\n $(\"[data-amplitude='save-license']\").click(() => {\n amplitude.getInstance().logEvent(\"credential uploaded\", {\n \"credential type\": \"license\"\n })\n })\n\n $(\"[data-amplitude='save-certificate']\").click(() => {\n amplitude.getInstance().logEvent(\"credential uploaded\", {\n \"credential type\": \"certificate\"\n })\n })\n\n $(\"[data-amplitude='save-membership']\").click(() => {\n amplitude.getInstance().logEvent(\"credential uploaded\", {\n \"credential type\": \"membership\"\n })\n })\n\n $(\"[data-amplitude='save-degree']\").click(() => {\n amplitude.getInstance().logEvent(\"credential uploaded\", {\n \"Credential Type\": \"degree\"\n })\n })\n\n $(\"[data-amplitude='save-skills']\").click(() => {\n if ($(\"[data-amplitude='specialty-ids']\").val()) {\n amplitude.getInstance().logEvent(\"skills added\")\n }\n })\n\n $(\"[data-amplitude='save-shortlink']\").click(() => {\n if ($(\"[data-amplitude='vanity-slug']\").val()) {\n amplitude.getInstance().logEvent(\"skills added\")\n }\n })\n\n $(\"[data-amplitude='save-about']\").click(() => {\n amplitude.getInstance().logEvent(\"learn more fields edited\", {\n \"Bio / About\": $(\"[data-amplitude='one']\").val(),\n \"Your Philosophy of Care\": $(\"[data-amplitude='two']\").val(),\n \"What Can a Client Expect on Their First Visit?\": $(\"[data-amplitude='three']\").val(),\n \"Your Inspiration to Become a Healer\": $(\"[data-amplitude='four']\").val()\n })\n })\n\n $(\"[data-amplitude='save-details']\").click(() => {\n amplitude.getInstance().logEvent(\"practice details edited\", {\n Insurance: $(\"[data-amplitude='insurance']\").val(),\n \"Work Withs\": $(\"[data-amplitude='work-withs']\").val(),\n Ages: $(\"[data-amplitude='ages']\").val(),\n Languages: $(\"[data-amplitude='languages']\").val()\n })\n })\n\n $(\"[data-amplitude='upload-gallery']\").click(() => {\n amplitude.getInstance().logEvent(\"gallery photo uploaded\")\n })\n\n $(\"[data-amplitude='connect-calendar']\").click(() => {\n amplitude.getInstance().logEvent(\"calendar connected\", {\n \"calendar type\": \"Google\"\n })\n })\n\n $(\"[data-amplitude='bookings-settings-updated']\").click(() => {\n amplitude.getInstance().logEvent(\"booking settings updated\", {\n \"instant booking\": $(\"[data-amplitude='instant-booking']\").val(),\n \"artificial scarcity\": $(\"[data-amplitude='scarcity']\").val(),\n \"buffer time\": $(\"[data-amplitude='buffer-time']\").val(),\n \"lead time\": $(\"[data-amplitude='lead-time']\").val(),\n \"increment time\": $(\"[data-amplitude='increment-time']\").val()\n })\n })\n\n $(\"[data-amplitude='invite-single-client']\").click(() => {\n amplitude.getInstance().logEvent(\"single client invited\", {\n \"client email\": $(\"[data-amplitude='client-email']\").val()\n })\n })\n\n $(\"[data-amplitude='invite-multiple']\").click(() => {\n amplitude.getInstance().logEvent(\"import clients started\")\n })\n\n $(\"[data-amplitude='send-message-client']\").click(() => {\n amplitude.getInstance().logEvent(\"consumer message sent\", {\n \"pro id\": $(\"[data-amplitude='pro-id']\").val(),\n \"consumer email\": $(\"[data-amplitude='consumer-email']\").val()\n })\n })\n})\n","import Inputmask from \"inputmask\"\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n // Submit icon\n $(\"body\").on(\"click\", \"form button[type='submit']\", function (e) {\n $(this).addClass(\"working\")\n })\n\n // Input icons\n $(\"input[data-icon]\").each(function () {\n const wrapper = $(this).closest(\".input-wrapper\")\n $(`<i class=\"icon-${$(this).attr(\"data-icon\")}\"></i>`).prependTo(wrapper)\n wrapper.addClass(\"with-icon\")\n })\n\n // Tel input formats\n document.querySelectorAll(\"input[type='tel']\").forEach((input) => {\n const mask = new Inputmask(\"(999) 999-9999\")\n mask.mask(input)\n })\n\n // Money input formats\n document.querySelectorAll(\".money input\").forEach((input) => {\n const mask = new Inputmask({ alias: \"currency\" })\n mask.mask(input)\n })\n\n // Range Slider - move bullet\n const slider = $(\".range-slider input\")\n if (slider.length) {\n const getRgbColorFromGradient = function (beginColor, endColor, ratio) {\n return (\n \"rgb(\" +\n Math.round(endColor[0] * ratio + beginColor[0] * (1 - ratio)) +\n \",\" +\n Math.round(endColor[1] * ratio + beginColor[1] * (1 - ratio)) +\n \",\" +\n Math.round(endColor[2] * ratio + beginColor[2] * (1 - ratio)) +\n \")\"\n )\n }\n\n const getGradientColor = function (percent) {\n // Gradient is #0B3B56 0%, #1B9D9F 33.4%, #F4B765 68.89%, #F39881 100%\n if (percent <= 33.4) {\n return getRgbColorFromGradient([11, 59, 86], [27, 157, 159], percent / 33.4)\n }\n if (percent <= 68.89) {\n return getRgbColorFromGradient([27, 157, 159], [244, 183, 101], percent / 68.89)\n }\n if (percent <= 100) {\n return getRgbColorFromGradient([244, 183, 101], [243, 152, 129], percent / 100)\n }\n }\n\n const moveSliderBullet = function (sliderInputElement) {\n const inputElement = sliderInputElement.length ? sliderInputElement : $(this)\n const value = inputElement.val()\n const max = inputElement.attr(\"max\")\n const percent = Math.round(((value - 1) / (max - 1)) * 10000) / 100\n const bullet = inputElement.parent().parent().find(\".bullet\")\n // restet line and number colors\n const lines = inputElement.parent().parent().find(\".line\")\n const numbers = inputElement.parent().parent().find(\".tick-number\")\n lines.css(\"color\", \"#C8D6DF\")\n numbers.css(\"color\", \"#55778A\")\n // Set current chosen line and number color\n lines[value - 1].style.color = \"#0B3954\"\n numbers[value - 1].style.color = \"#0B3954\"\n // Move bullet and set its background color\n bullet.css(\"left\", percent + \"%\")\n bullet.css(\"background-color\", getGradientColor(percent))\n // Size bullet according to length of text to be shown in it\n const values = inputElement.data(\"values\")\n if (values[value - 1].length < 6) {\n bullet.css(\"width\", \"77px\")\n bullet.css(\"height\", \"40px\")\n bullet.css(\"top\", \"-93px\")\n } else if (values[value - 1].length < 15) {\n bullet.css(\"width\", \"119px\")\n bullet.css(\"height\", \"40px\")\n bullet.css(\"top\", \"-93px\")\n } else if (values[value - 1].length < 32) {\n bullet.css(\"width\", \"250px\")\n bullet.css(\"height\", \"40px\")\n bullet.css(\"top\", \"-93px\")\n } else {\n bullet.css(\"width\", \"250px\")\n bullet.css(\"height\", \"60px\")\n bullet.css(\"top\", \"-113px\")\n }\n bullet.children(\".text\").text(values[value - 1])\n }\n\n moveSliderBullet(slider)\n slider.on(\"input\", moveSliderBullet)\n }\n\n // Word count\n if ($(\"#char-count-1\").length > 0) {\n $(\"#char-count-1\").html($(\"#counted-1\").val().length)\n $(\"#counted-1\").keyup(function () {\n $(\"#char-count-1\").html($(this).val().length)\n })\n }\n\n if ($(\"#char-count-2\").length > 0) {\n $(\"#char-count-2\").html($(\"#counted-2\").val().length)\n\n $(\"#counted-2\").keyup(function () {\n $(\"#char-count-2\").html($(this).val().length)\n })\n }\n\n if ($(\"#char-count-3\").length > 0) {\n $(\"#char-count-3\").html($(\"#counted-3\").val().length)\n\n $(\"#counted-3\").keyup(function () {\n $(\"#char-count-3\").html($(this).val().length)\n })\n }\n\n if ($(\"#char-count-4\").length > 0) {\n $(\"#char-count-4\").html($(\"#counted-4\").val().length)\n\n $(\"#counted-4\").keyup(function () {\n $(\"#char-count-4\").html($(this).val().length)\n })\n }\n\n if ($(\"#char-count-5\").length > 0) {\n $(\"#char-count-5\").html($(\"#counted-5\").val().length)\n\n $(\"#counted-5\").keyup(function () {\n $(\"#char-count-5\").html($(this).val().length)\n })\n }\n\n // if ($('#title-char-count').length > 0 ){\n // $('#title-char-count').html($('#title-id').val().length);\n\n // $('#title-id').keyup(function() {\n // $('#title-char-count').html($(this).val().length);\n // });\n // }\n\n if ($(\"#headline-char-count\").length > 0) {\n $(\"#headline-char-count\").html($(\"#headline-id\").val().length)\n\n $(\"#headline-id\").keyup(function () {\n $(\"#headline-char-count\").html($(this).val().length)\n })\n }\n\n $(\".select\").change(function (e) {\n $(this).addClass(\"touched\")\n })\n})\n","/*\n * International Telephone Input v12.3.0\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD - see https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js\n;(function (factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"jquery\"], function ($) {\n factory($, window, document)\n })\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(\n require(\"../../../../../../../../../Library/Caches/typescript/2.9/node_modules/@types/jquery\"),\n window,\n document\n )\n } else {\n factory(jQuery, window, document)\n }\n})(function ($, window, document, undefined) {\n \"use strict\"\n // these vars persist through all instances of the plugin\n var pluginName = \"intlTelInput\",\n id = 1, // give each instance it's own id for namespaced event handling\n defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // if there is just a dial code in the input: remove it on blur, and re-add it on focus\n autoHideDialCode: true,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: \"polite\",\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to a specific element\n dropdownContainer: \"\",\n // don't display these countries\n excludeCountries: [],\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: \"\",\n // initial country\n initialCountry: \"\",\n // don't insert international dial codes\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: \"MOBILE\",\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [\"us\", \"gb\"],\n // display the country dial code next to the selected flag so it's not part of the typed number\n separateDialCode: false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: \"\"\n },\n keys = {\n UP: 38,\n DOWN: 40,\n ENTER: 13,\n ESC: 27,\n PLUS: 43,\n A: 65,\n Z: 90,\n SPACE: 32,\n TAB: 9\n }, // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n regionlessNanpNumbers = [\n \"800\",\n \"822\",\n \"833\",\n \"844\",\n \"855\",\n \"866\",\n \"877\",\n \"880\",\n \"881\",\n \"882\",\n \"883\",\n \"884\",\n \"885\",\n \"886\",\n \"887\",\n \"888\",\n \"889\"\n ]\n // keep track of if the window.load event has fired as impossible to check after the fact\n $(window).on(\"load\", function () {\n // UPDATE: use a public static field so we can fudge it in the tests\n $.fn[pluginName].windowLoaded = true\n })\n function Plugin(element, options) {\n this.telInput = $(element)\n this.options = $.extend({}, defaults, options)\n // event namespace\n this.ns = \".\" + pluginName + id++\n // Chrome, FF, Safari, IE9+\n this.isGoodBrowser = Boolean(element.setSelectionRange)\n this.hadInitialPlaceholder = Boolean($(element).attr(\"placeholder\"))\n }\n Plugin.prototype = {\n _init: function () {\n // if in nationalMode, disable options relating to dial codes\n if (this.options.nationalMode) {\n this.options.autoHideDialCode = false\n }\n // if separateDialCode then doesn't make sense to A) insert dial code into input (autoHideDialCode), and B) display national numbers (because we're displaying the country dial code next to them)\n if (this.options.separateDialCode) {\n this.options.autoHideDialCode = this.options.nationalMode = false\n }\n // we cannot just test screen size as some smartphones/website meta tags will report desktop resolutions\n // Note: for some reason jasmine breaks if you put this in the main Plugin function with the rest of these declarations\n // Note: to target Android Mobiles (and not Tablets), we must find \"Android\" and \"Mobile\"\n this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n if (this.isMobile) {\n // trigger the mobile dropdown css\n $(\"body\").addClass(\"iti-mobile\")\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (!this.options.dropdownContainer) {\n this.options.dropdownContainer = \"body\"\n }\n }\n // we return these deferred objects from the _init() call so they can be watched, and then we resolve them when each specific request returns\n // Note: again, jasmine breaks when I put these in the Plugin function\n this.autoCountryDeferred = new $.Deferred()\n this.utilsScriptDeferred = new $.Deferred()\n // in various situations there could be no country selected initially, but we need to be able to assume this variable exists\n this.selectedCountryData = {}\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData()\n // generate the markup\n this._generateMarkup()\n // set the initial state of the input value and the selected flag\n this._setInitialState()\n // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n this._initListeners()\n // utils script, and auto country\n this._initRequests()\n // return the deferreds\n return [this.autoCountryDeferred, this.utilsScriptDeferred]\n },\n /********************\n * PRIVATE METHODS\n ********************/\n // prepare all of the country data, including onlyCountries, excludeCountries and preferredCountries options\n _processCountryData: function () {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries()\n // process the countryCodes map\n this._processCountryCodes()\n // process the preferredCountries\n this._processPreferredCountries()\n },\n // add a country code to this.countryCodes\n _addCountryCode: function (iso2, dialCode, priority) {\n if (!(dialCode in this.countryCodes)) {\n this.countryCodes[dialCode] = []\n }\n var index = priority || 0\n this.countryCodes[dialCode][index] = iso2\n },\n // process onlyCountries or excludeCountries array if present\n _processAllCountries: function () {\n if (this.options.onlyCountries.length) {\n var lowerCaseOnlyCountries = this.options.onlyCountries.map(function (country) {\n return country.toLowerCase()\n })\n this.countries = allCountries.filter(function (country) {\n return lowerCaseOnlyCountries.indexOf(country.iso2) > -1\n })\n this.countries.sort(this._countryNameSort)\n } else if (this.options.excludeCountries.length) {\n var lowerCaseExcludeCountries = this.options.excludeCountries.map(function (country) {\n return country.toLowerCase()\n })\n this.countries = allCountries.filter(function (country) {\n return lowerCaseExcludeCountries.indexOf(country.iso2) === -1\n })\n } else {\n this.countries = allCountries\n }\n },\n // sort by country name\n _countryNameSort: function (a, b) {\n return a.name.localeCompare(b.name)\n },\n // process the countryCodes map\n _processCountryCodes: function () {\n this.countryCodes = {}\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i]\n this._addCountryCode(c.iso2, c.dialCode, c.priority)\n // area codes\n if (c.areaCodes) {\n for (var j = 0; j < c.areaCodes.length; j++) {\n // full dial code is country code + dial code\n this._addCountryCode(c.iso2, c.dialCode + c.areaCodes[j])\n }\n }\n }\n },\n // process preferred countries - iterate through the preferences, fetching the country data for each one\n _processPreferredCountries: function () {\n this.preferredCountries = []\n for (var i = 0; i < this.options.preferredCountries.length; i++) {\n var countryCode = this.options.preferredCountries[i].toLowerCase(),\n countryData = this._getCountryData(countryCode, false, true)\n if (countryData) {\n this.preferredCountries.push(countryData)\n }\n }\n },\n // generate all of the markup for the plugin: the selected flag overlay, and the dropdown\n _generateMarkup: function () {\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can easily put the plugin in an inconsistent state e.g. the wrong flag selected for the autocompleted number, which on submit could mean the wrong number is saved (esp in nationalMode)\n this.telInput.attr(\"autocomplete\", \"off\")\n // containers (mostly for positioning)\n var parentClass = \"intl-tel-input\"\n if (this.options.allowDropdown) {\n parentClass += \" allow-dropdown\"\n }\n if (this.options.separateDialCode) {\n parentClass += \" separate-dial-code\"\n }\n this.telInput.wrap(\n $(\"<div>\", {\n class: parentClass\n })\n )\n this.flagsContainer = $(\"<div>\", {\n class: \"flag-container\",\n id: \"flag-container\"\n }).insertBefore(this.telInput)\n // currently selected flag (displayed to left of input)\n var selectedFlag = $(\"<div>\", {\n class: \"selected-flag\"\n })\n selectedFlag.appendTo(this.flagsContainer)\n this.selectedFlagInner = $(\"<div>\", {\n class: \"iti-flag\"\n }).appendTo(selectedFlag)\n if (this.options.separateDialCode) {\n this.selectedDialCode = $(\"<div>\", {\n class: \"selected-dial-code\",\n id: \"selected-dial-code\"\n }).appendTo(selectedFlag)\n }\n if (this.options.allowDropdown) {\n // make element focusable and tab naviagable\n selectedFlag.attr(\"tabindex\", \"0\")\n // CSS triangle\n $(\"<div>\", {\n class: \"iti-arrow\"\n }).appendTo(selectedFlag)\n // country dropdown: preferred countries, then divider, then all countries\n this.countryList = $(\"<ul>\", {\n class: \"country-list hide\"\n })\n if (this.preferredCountries.length) {\n this._appendListItems(this.preferredCountries, \"preferred\")\n $(\"<li>\", {\n class: \"divider\"\n }).appendTo(this.countryList)\n }\n this._appendListItems(this.countries, \"\")\n // this is useful in lots of places\n this.countryListItems = this.countryList.children(\".country\")\n // create dropdownContainer markup\n if (this.options.dropdownContainer) {\n this.dropdown = $(\"<div>\", {\n class: \"intl-tel-input iti-container\"\n }).append(this.countryList)\n } else {\n this.countryList.appendTo(this.flagsContainer)\n }\n } else {\n // a little hack so we don't break anything\n this.countryListItems = $()\n }\n if (this.options.hiddenInput) {\n this.hiddenInput = $(\"<input>\", {\n type: \"hidden\",\n name: this.options.hiddenInput\n }).insertAfter(this.telInput)\n }\n },\n // add a country <li> to the countryList <ul> container\n _appendListItems: function (countries, className) {\n // we create so many DOM elements, it is faster to build a temp string\n // and then add everything to the DOM in one go at the end\n var tmp = \"\"\n // for each country\n for (var i = 0; i < countries.length; i++) {\n var c = countries[i]\n // open the list item\n tmp +=\n \"<li class='country \" +\n className +\n \"' data-dial-code='\" +\n c.dialCode +\n \"' data-country-code='\" +\n c.iso2 +\n \"'>\"\n // add the flag\n tmp += \"<div class='flag-box'><div class='iti-flag \" + c.iso2 + \"'></div></div>\"\n // and the country name and dial code\n tmp += \"<span class='country-name'>\" + c.name + \"</span>\"\n tmp += \"<span class='dial-code'>+\" + c.dialCode + \"</span>\"\n // close the list item\n tmp += \"</li>\"\n }\n this.countryList.append(tmp)\n },\n // set the initial state of the input value and the selected flag by:\n // 1. extracting a dial code from the given number\n // 2. using explicit initialCountry\n // 3. picking the first preferred country\n // 4. picking the first country\n _setInitialState: function () {\n var val = this.telInput.val()\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the flag, else fall back to the default country\n // UPDATE: actually we do want to set the flag for a regionlessNanp in one situation: if we're in nationalMode and there's no initialCountry - otherwise we lose the +1 and we're left with an invalid number\n if (\n this._getDialCode(val) &&\n (!this._isRegionlessNanp(val) || (this.options.nationalMode && !this.options.initialCountry))\n ) {\n this._updateFlagFromNumber(val)\n } else if (this.options.initialCountry !== \"auto\") {\n // see if we should select a flag\n if (this.options.initialCountry) {\n this._setFlag(this.options.initialCountry.toLowerCase())\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length\n ? this.preferredCountries[0].iso2\n : this.countries[0].iso2\n if (!val) {\n this._setFlag(this.defaultCountry)\n }\n }\n // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n if (!val && !this.options.nationalMode && !this.options.autoHideDialCode && !this.options.separateDialCode) {\n this.telInput.val(\"+\" + this.selectedCountryData.dialCode)\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format\n if (val) {\n // this wont be run after _updateDialCode as that's only called if no val\n this._updateValFromNumber(val)\n }\n },\n // initialise the main event listeners: input keyup, and click selected flag\n _initListeners: function () {\n this._initKeyListeners()\n if (this.options.autoHideDialCode) {\n this._initFocusListeners()\n }\n if (this.options.allowDropdown) {\n this._initDropdownListeners()\n }\n if (this.hiddenInput) {\n this._initHiddenInputListener()\n }\n },\n // update hidden input on form submit\n _initHiddenInputListener: function () {\n var that = this\n var form = this.telInput.closest(\"form\")\n if (form.length) {\n form.submit(function () {\n that.hiddenInput.val(that.getNumber())\n })\n }\n },\n // initialise the dropdown listeners\n _initDropdownListeners: function () {\n var that = this\n // hack for input nested inside label: clicking the selected-flag to open the dropdown would then automatically trigger a 2nd click on the input which would close it again\n var label = this.telInput.closest(\"label\")\n if (label.length) {\n label.on(\"click\" + this.ns, function (e) {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (that.countryList.hasClass(\"hide\")) {\n that.telInput.focus()\n } else {\n e.preventDefault()\n }\n })\n }\n // toggle country dropdown on click\n var selectedFlag = this.selectedFlagInner.parent()\n selectedFlag.on(\"click\" + this.ns, function (e) {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (that.countryList.hasClass(\"hide\") && !that.telInput.prop(\"disabled\") && !that.telInput.prop(\"readonly\")) {\n that._showDropdown()\n }\n })\n // open dropdown list if currently focused\n this.flagsContainer.on(\"keydown\" + that.ns, function (e) {\n var isDropdownHidden = that.countryList.hasClass(\"hide\")\n if (\n isDropdownHidden &&\n (e.which == keys.UP || e.which == keys.DOWN || e.which == keys.SPACE || e.which == keys.ENTER)\n ) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault()\n // prevent event from being handled again by document\n e.stopPropagation()\n that._showDropdown()\n }\n // allow navigation from dropdown to input on TAB\n if (e.which == keys.TAB) {\n that._closeDropdown()\n }\n })\n },\n // init many requests: utils script / geo ip lookup\n _initRequests: function () {\n var that = this\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript) {\n // if the plugin is being initialised after the window.load event has already been fired\n if ($.fn[pluginName].windowLoaded) {\n $.fn[pluginName].loadUtils(this.options.utilsScript, this.utilsScriptDeferred)\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n $(window).on(\"load\", function () {\n $.fn[pluginName].loadUtils(that.options.utilsScript, that.utilsScriptDeferred)\n })\n }\n } else {\n this.utilsScriptDeferred.resolve()\n }\n if (this.options.initialCountry === \"auto\") {\n this._loadAutoCountry()\n } else {\n this.autoCountryDeferred.resolve()\n }\n },\n // perform the geo ip lookup\n _loadAutoCountry: function () {\n var that = this\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if ($.fn[pluginName].autoCountry) {\n this.handleAutoCountry()\n } else if (!$.fn[pluginName].startedLoadingAutoCountry) {\n // don't do this twice!\n $.fn[pluginName].startedLoadingAutoCountry = true\n if (typeof this.options.geoIpLookup === \"function\") {\n this.options.geoIpLookup(function (countryCode) {\n $.fn[pluginName].autoCountry = countryCode.toLowerCase()\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight away (e.g. if they have already done the geo ip lookup somewhere else). Using setTimeout means that the current thread of execution will finish before executing this, which allows the plugin to finish initialising.\n setTimeout(function () {\n $(\".intl-tel-input input\").intlTelInput(\"handleAutoCountry\")\n })\n })\n }\n }\n },\n // initialize any key listeners\n _initKeyListeners: function () {\n var that = this\n // update flag on keyup\n // (keep this listener separate otherwise the setTimeout breaks all the tests)\n this.telInput.on(\"keyup\" + this.ns, function () {\n if (that._updateFlagFromNumber(that.telInput.val())) {\n that._triggerCountryChange()\n }\n })\n // update flag on cut/paste events (now supported in all major browsers)\n this.telInput.on(\"cut\" + this.ns + \" paste\" + this.ns, function () {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(function () {\n if (that._updateFlagFromNumber(that.telInput.val())) {\n that._triggerCountryChange()\n }\n })\n })\n },\n // adhere to the input's maxlength attr\n _cap: function (number) {\n var max = this.telInput.attr(\"maxlength\")\n return max && number.length > max ? number.substr(0, max) : number\n },\n // listen for mousedown, focus and blur\n _initFocusListeners: function () {\n var that = this\n // mousedown decides where the cursor goes, so if we're focusing we must preventDefault as we'll be inserting the dial code, and we want the cursor to be at the end no matter where they click\n this.telInput.on(\"mousedown\" + this.ns, function (e) {\n if (!that.telInput.is(\":focus\") && !that.telInput.val()) {\n e.preventDefault()\n // but this also cancels the focus, so we must trigger that manually\n that.telInput.focus()\n }\n })\n // on focus: if empty, insert the dial code for the currently selected flag\n this.telInput.on(\"focus\" + this.ns, function (e) {\n if (!that.telInput.val() && !that.telInput.prop(\"readonly\") && that.selectedCountryData.dialCode) {\n // insert the dial code\n that.telInput.val(\"+\" + that.selectedCountryData.dialCode)\n // after auto-inserting a dial code, if the first key they hit is '+' then assume they are entering a new number, so remove the dial code. use keypress instead of keydown because keydown gets triggered for the shift key (required to hit the + key), and instead of keyup because that shows the new '+' before removing the old one\n that.telInput.one(\"keypress.plus\" + that.ns, function (e) {\n if (e.which == keys.PLUS) {\n that.telInput.val(\"\")\n }\n })\n // after tabbing in, make sure the cursor is at the end we must use setTimeout to get outside of the focus handler as it seems the selection happens after that\n setTimeout(function () {\n var input = that.telInput[0]\n if (that.isGoodBrowser) {\n var len = that.telInput.val().length\n input.setSelectionRange(len, len)\n }\n })\n }\n })\n // on blur or form submit: if just a dial code then remove it\n var form = this.telInput.prop(\"form\")\n if (form) {\n $(form).on(\"submit\" + this.ns, function () {\n that._removeEmptyDialCode()\n })\n }\n this.telInput.on(\"blur\" + this.ns, function () {\n that._removeEmptyDialCode()\n })\n },\n _removeEmptyDialCode: function () {\n var value = this.telInput.val(),\n startsPlus = value.charAt(0) == \"+\"\n if (startsPlus) {\n var numeric = this._getNumeric(value)\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode == numeric) {\n this.telInput.val(\"\")\n }\n }\n // remove the keypress listener we added on focus\n this.telInput.off(\"keypress.plus\" + this.ns)\n },\n // extract the numeric digits from the given string\n _getNumeric: function (s) {\n return s.replace(/\\D/g, \"\")\n },\n // show the dropdown\n _showDropdown: function () {\n this._setDropdownPosition()\n // update highlighting and scroll to active list item\n var activeListItem = this.countryList.children(\".active\")\n if (activeListItem.length) {\n this._highlightListItem(activeListItem)\n this._scrollTo(activeListItem)\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners()\n // update the arrow\n this.selectedFlagInner.children(\".iti-arrow\").addClass(\"up\")\n this.telInput.trigger(\"open:countrydropdown\")\n },\n // decide where to position dropdown (depends on position within viewport, and scroll)\n _setDropdownPosition: function () {\n var that = this\n if (this.options.dropdownContainer) {\n this.dropdown.appendTo(this.options.dropdownContainer)\n }\n // show the menu and grab the dropdown height\n this.dropdownHeight = this.countryList.removeClass(\"hide\").outerHeight()\n if (!this.isMobile) {\n var pos = this.telInput.offset(),\n inputTop = pos.top,\n windowTop = $(window).scrollTop(), // dropdownFitsBelow = (dropdownBottom < windowBottom)\n dropdownFitsBelow =\n inputTop + this.telInput.outerHeight() + this.dropdownHeight < windowTop + $(window).height(),\n dropdownFitsAbove = inputTop - this.dropdownHeight > windowTop\n // by default, the dropdown will be below the input. If we want to position it above the input, we add the dropup class.\n this.countryList.toggleClass(\"dropup\", !dropdownFitsBelow && dropdownFitsAbove)\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow. If we want to position it below, we need to add some extra top value.\n var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.innerHeight()\n // calculate placement\n this.dropdown.css({\n top: inputTop + extraTop,\n left: pos.left\n })\n // close menu on window scroll\n $(window).on(\"scroll\" + this.ns, function () {\n that._closeDropdown()\n })\n }\n }\n },\n // we only bind dropdown listeners when the dropdown is open\n _bindDropdownListeners: function () {\n var that = this\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this.countryList.on(\"mouseover\" + this.ns, \".country\", function (e) {\n that._highlightListItem($(this))\n })\n // listen for country selection\n this.countryList.on(\"click\" + this.ns, \".country\", function (e) {\n that._selectListItem($(this))\n })\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n var isOpening = true\n $(\"html\").on(\"click\" + this.ns, function (e) {\n if (!isOpening) {\n that._closeDropdown()\n }\n isOpening = false\n })\n // listen for up/down scrolling, enter to select, or letters to jump to country name.\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n var query = \"\",\n queryTimer = null\n $(document).on(\"keydown\" + this.ns, function (e) {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n e.preventDefault()\n if (e.which == keys.UP || e.which == keys.DOWN) {\n // up and down to navigate\n that._handleUpDownKey(e.which)\n } else if (e.which == keys.ENTER) {\n // enter to select\n that._handleEnterKey()\n } else if (e.which == keys.ESC) {\n // esc to close\n that._closeDropdown()\n } else if ((e.which >= keys.A && e.which <= keys.Z) || e.which == keys.SPACE) {\n // upper case letters (note: keyup/keydown only return upper case letters)\n // jump to countries that start with the query string\n if (queryTimer) {\n clearTimeout(queryTimer)\n }\n query += String.fromCharCode(e.which)\n that._searchForCountry(query)\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(function () {\n query = \"\"\n }, 1e3)\n }\n })\n },\n // highlight the next/prev item in the list (and ensure it is visible)\n _handleUpDownKey: function (key) {\n var current = this.countryList.children(\".highlight\").first()\n var next = key == keys.UP ? current.prev() : current.next()\n if (next.length) {\n // skip the divider\n if (next.hasClass(\"divider\")) {\n next = key == keys.UP ? next.prev() : next.next()\n }\n this._highlightListItem(next)\n this._scrollTo(next)\n }\n },\n // select the currently highlighted item\n _handleEnterKey: function () {\n var currentCountry = this.countryList.children(\".highlight\").first()\n if (currentCountry.length) {\n this._selectListItem(currentCountry)\n }\n },\n // find the first list item whose name starts with the query string\n _searchForCountry: function (query) {\n for (var i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n var listItem = this.countryList\n .children(\"[data-country-code=\" + this.countries[i].iso2 + \"]\")\n .not(\".preferred\")\n // update highlighting and scroll\n this._highlightListItem(listItem)\n this._scrollTo(listItem, true)\n break\n }\n }\n },\n // check if (uppercase) string a starts with string b\n _startsWith: function (a, b) {\n return a.substr(0, b.length).toUpperCase() == b\n },\n // update the input's value to the given val (format first if possible)\n // NOTE: this is called from _setInitialState, handleUtils and setNumber\n _updateValFromNumber: function (number) {\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n var format =\n !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) != \"+\")\n ? intlTelInputUtils.numberFormat.NATIONAL\n : intlTelInputUtils.numberFormat.INTERNATIONAL\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format)\n }\n number = this._beforeSetNumber(number)\n this.telInput.val(number)\n },\n // check if need to select a new flag based on the given number\n // Note: called from _setInitialState, keyup handler, setNumber\n _updateFlagFromNumber: function (number) {\n // if we're in nationalMode and we already have US/Canada selected, make sure the number starts with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag from the number), that means we're initialising the plugin with a number that already has a dial code, so fine to ignore this bit\n if (number && this.options.nationalMode && this.selectedCountryData.dialCode == \"1\" && number.charAt(0) != \"+\") {\n if (number.charAt(0) != \"1\") {\n number = \"1\" + number\n }\n number = \"+\" + number\n }\n // try and extract valid dial code from input\n var dialCode = this._getDialCode(number),\n countryCode = null,\n numeric = this._getNumeric(number)\n if (dialCode) {\n // check if one of the matching countries is already selected\n var countryCodes = this.countryCodes[this._getNumeric(dialCode)],\n alreadySelected = $.inArray(this.selectedCountryData.iso2, countryCodes) > -1, // check if the given number contains a NANP area code i.e. the only dialCode that could be extracted was +1 (instead of say +1204) and the actual number's length is >=4\n isNanpAreaCode = dialCode == \"+1\" && numeric.length >= 4,\n nanpSelected = this.selectedCountryData.dialCode == \"1\"\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) either a matching country is not already selected OR the number contains a NANP area code (ensure the flag is set to the first matching country)\n if (!(nanpSelected && this._isRegionlessNanp(numeric)) && (!alreadySelected || isNanpAreaCode)) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first non-empty index\n for (var j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j]\n break\n }\n }\n }\n } else if (number.charAt(0) == \"+\" && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain bad chars\n countryCode = \"\"\n } else if (!number || number == \"+\") {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode)\n }\n return false\n },\n // check if the given number is a regionless NANP number (expects the number to contain an international dial code)\n _isRegionlessNanp: function (number) {\n var numeric = this._getNumeric(number)\n if (numeric.charAt(0) == \"1\") {\n var areaCode = numeric.substr(1, 3)\n return $.inArray(areaCode, regionlessNanpNumbers) > -1\n }\n return false\n },\n // remove highlighting from other list items and highlight the given item\n _highlightListItem: function (listItem) {\n this.countryListItems.removeClass(\"highlight\")\n listItem.addClass(\"highlight\")\n },\n // find the country data for the given country code\n // the ignoreOnlyCountriesOption is only used during init() while parsing the onlyCountries array\n _getCountryData: function (countryCode, ignoreOnlyCountriesOption, allowFail) {\n var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries\n for (var i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 == countryCode) {\n return countryList[i]\n }\n }\n if (allowFail) {\n return null\n } else {\n throw new Error(\"No country data for '\" + countryCode + \"'\")\n }\n },\n // select the given flag, update the placeholder and the active list item\n // Note: called from _setInitialState, _updateFlagFromNumber, _selectListItem, setCountry\n _setFlag: function (countryCode) {\n var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {}\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {}\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2\n }\n this.selectedFlagInner.attr(\"class\", \"iti-flag \" + countryCode)\n // update the selected country's title attribute\n var title = countryCode ? this.selectedCountryData.name + \": +\" + this.selectedCountryData.dialCode : \"Unknown\"\n this.selectedFlagInner.parent().attr(\"title\", title)\n if (this.options.separateDialCode) {\n var dialCode = this.selectedCountryData.dialCode ? \"+\" + this.selectedCountryData.dialCode : \"\",\n parent = this.telInput.parent()\n if (prevCountry.dialCode) {\n parent.removeClass(\"iti-sdc-\" + (prevCountry.dialCode.length + 1))\n }\n if (dialCode) {\n parent.addClass(\"iti-sdc-\" + dialCode.length)\n }\n this.selectedDialCode.text(dialCode)\n }\n // and the input's placeholder\n this._updatePlaceholder()\n // update the active list item\n this.countryListItems.removeClass(\"active\")\n if (countryCode) {\n this.countryListItems\n .find(\".iti-flag.\" + countryCode)\n .first()\n .closest(\".country\")\n .addClass(\"active\")\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode\n },\n // update the input placeholder to an example number from the currently selected country\n _updatePlaceholder: function () {\n var shouldSetPlaceholder =\n this.options.autoPlaceholder === \"aggressive\" ||\n (!this.hadInitialPlaceholder &&\n (this.options.autoPlaceholder === true || this.options.autoPlaceholder === \"polite\"))\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType],\n placeholder = this.selectedCountryData.iso2\n ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType)\n : \"\"\n placeholder = this._beforeSetNumber(placeholder)\n if (typeof this.options.customPlaceholder === \"function\") {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData)\n }\n this.telInput.attr(\"placeholder\", placeholder)\n }\n },\n // called when the user selects a list item from the dropdown\n _selectListItem: function (listItem) {\n // update selected flag and active list item\n var flagChanged = this._setFlag(listItem.attr(\"data-country-code\"))\n this._closeDropdown()\n this._updateDialCode(listItem.attr(\"data-dial-code\"), true)\n // focus the input\n this.telInput.focus()\n // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto inserting dial code), who try to put the cursor at the beginning the first time\n if (this.isGoodBrowser) {\n var len = this.telInput.val().length\n this.telInput[0].setSelectionRange(len, len)\n }\n if (flagChanged) {\n this._triggerCountryChange()\n }\n },\n // close the dropdown and unbind any listeners\n _closeDropdown: function () {\n this.countryList.addClass(\"hide\")\n // update the arrow\n this.selectedFlagInner.children(\".iti-arrow\").removeClass(\"up\")\n // unbind key events\n $(document).off(this.ns)\n // unbind click-off-to-close\n $(\"html\").off(this.ns)\n // unbind hover and click listeners\n this.countryList.off(this.ns)\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.isMobile) {\n $(window).off(\"scroll\" + this.ns)\n }\n this.dropdown.detach()\n }\n this.telInput.trigger(\"close:countrydropdown\")\n },\n // check if an element is visible within it's container, else scroll until it is\n _scrollTo: function (element, middle) {\n var container = this.countryList,\n containerHeight = container.height(),\n containerTop = container.offset().top,\n containerBottom = containerTop + containerHeight,\n elementHeight = element.outerHeight(),\n elementTop = element.offset().top,\n elementBottom = elementTop + elementHeight,\n newScrollTop = elementTop - containerTop + container.scrollTop(),\n middleOffset = containerHeight / 2 - elementHeight / 2\n if (elementTop < containerTop) {\n // scroll up\n if (middle) {\n newScrollTop -= middleOffset\n }\n container.scrollTop(newScrollTop)\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) {\n newScrollTop += middleOffset\n }\n var heightDifference = containerHeight - elementHeight\n container.scrollTop(newScrollTop - heightDifference)\n }\n },\n // replace any existing dial code with the new one\n // Note: called from _selectListItem and setCountry\n _updateDialCode: function (newDialCode, hasSelectedListItem) {\n var inputVal = this.telInput.val(),\n newNumber\n // save having to pass this every time\n newDialCode = \"+\" + newDialCode\n if (inputVal.charAt(0) == \"+\") {\n // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n var prevDialCode = this._getDialCode(inputVal)\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode)\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode\n }\n } else if (this.options.nationalMode || this.options.separateDialCode) {\n // don't do anything\n return\n } else {\n // nationalMode is disabled\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal\n } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n // no existing value and either they've just selected a list item, or autoHideDialCode is disabled: insert new dial code\n newNumber = newDialCode\n } else {\n return\n }\n }\n this.telInput.val(newNumber)\n },\n // try and extract a valid international dial code from a full telephone number\n // Note: returns the raw string inc plus character and any whitespace/dots etc\n _getDialCode: function (number) {\n var dialCode = \"\"\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) == \"+\") {\n var numericChars = \"\"\n // iterate over chars\n for (var i = 0; i < number.length; i++) {\n var c = number.charAt(i)\n // if char is number\n if ($.isNumeric(c)) {\n numericChars += c\n // if current numericChars make a valid dial code\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1)\n }\n // longest dial code is 4 chars\n if (numericChars.length == 4) {\n break\n }\n }\n }\n }\n return dialCode\n },\n // get the input val, adding the dial code if separateDialCode is enabled\n _getFullNumber: function () {\n var val = $.trim(this.telInput.val()),\n dialCode = this.selectedCountryData.dialCode,\n prefix,\n numericVal = this._getNumeric(val), // normalized means ensure starts with a 1, so we can match against the full dial code\n normalizedVal = numericVal.charAt(0) == \"1\" ? numericVal : \"1\" + numericVal\n if (this.options.separateDialCode) {\n prefix = \"+\" + dialCode\n } else if (\n val.charAt(0) != \"+\" &&\n val.charAt(0) != \"1\" &&\n dialCode &&\n dialCode.charAt(0) == \"1\" &&\n dialCode.length == 4 &&\n dialCode != normalizedVal.substr(0, 4)\n ) {\n // if the user has entered a national NANP number, then ensure it includes the full dial code / area code\n prefix = dialCode.substr(1)\n } else {\n prefix = \"\"\n }\n return prefix + val\n },\n // remove the dial code if separateDialCode is enabled\n _beforeSetNumber: function (number) {\n if (this.options.separateDialCode) {\n var dialCode = this._getDialCode(number)\n if (dialCode) {\n // US dialCode is \"+1\", which is what we want\n // CA dialCode is \"+1 123\", which is wrong - should be \"+1\" (as it has multiple area codes)\n // AS dialCode is \"+1 684\", which is what we want\n // Solution: if the country has area codes, then revert to just the dial code\n if (this.selectedCountryData.areaCodes !== null) {\n dialCode = \"+\" + this.selectedCountryData.dialCode\n }\n // a lot of numbers will have a space separating the dial code and the main number, and some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n var start =\n number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length\n number = number.substr(start)\n }\n }\n return this._cap(number)\n },\n // trigger the 'countrychange' event\n _triggerCountryChange: function () {\n this.telInput.trigger(\"countrychange\", this.selectedCountryData)\n },\n /**************************\n * SECRET PUBLIC METHODS\n **************************/\n // this is called when the geoip call returns\n handleAutoCountry: function () {\n if (this.options.initialCountry === \"auto\") {\n // we must set this even if there is an initial val in the input: in case the initial val is invalid and they delete it - they should see their auto country\n this.defaultCountry = $.fn[pluginName].autoCountry\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.val()) {\n this.setCountry(this.defaultCountry)\n }\n this.autoCountryDeferred.resolve()\n }\n },\n // this is called when the utils request completes\n handleUtils: function () {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.val()) {\n this._updateValFromNumber(this.telInput.val())\n }\n this._updatePlaceholder()\n }\n this.utilsScriptDeferred.resolve()\n },\n /********************\n * PUBLIC METHODS\n ********************/\n // remove plugin\n destroy: function () {\n if (this.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown()\n // click event to open dropdown\n this.selectedFlagInner.parent().off(this.ns)\n // label click hack\n this.telInput.closest(\"label\").off(this.ns)\n }\n // unbind submit event handler on form\n if (this.options.autoHideDialCode) {\n var form = this.telInput.prop(\"form\")\n if (form) {\n $(form).off(this.ns)\n }\n }\n // unbind all events: key events, and focus/blur events if autoHideDialCode=true\n this.telInput.off(this.ns)\n // remove markup (but leave the original input)\n var container = this.telInput.parent()\n container.before(this.telInput).remove()\n },\n // get the extension from the current number\n getExtension: function () {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2)\n }\n return \"\"\n },\n // format the number to the given format\n getNumber: function (format) {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.formatNumber(this._getFullNumber(), this.selectedCountryData.iso2, format)\n }\n return \"\"\n },\n // get the type of the entered number e.g. landline/mobile\n getNumberType: function () {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2)\n }\n return -99\n },\n // get the country data for the currently selected flag\n getSelectedCountryData: function () {\n return this.selectedCountryData\n },\n // get the validation error\n getValidationError: function () {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getValidationError(this._getFullNumber(), this.selectedCountryData.iso2)\n }\n return -99\n },\n // validate the input val - assumes the global function isValidNumber (from utilsScript)\n isValidNumber: function () {\n var val = $.trim(this._getFullNumber()),\n countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\"\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null\n },\n // update the selected flag, and update the input val accordingly\n setCountry: function (countryCode) {\n countryCode = countryCode.toLowerCase()\n // check if already selected\n if (!this.selectedFlagInner.hasClass(countryCode)) {\n this._setFlag(countryCode)\n this._updateDialCode(this.selectedCountryData.dialCode, false)\n this._triggerCountryChange()\n }\n },\n // set the input value and update the flag\n setNumber: function (number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for formatting the number before displaying it\n var flagChanged = this._updateFlagFromNumber(number)\n this._updateValFromNumber(number)\n if (flagChanged) {\n this._triggerCountryChange()\n }\n },\n // set the placeholder number typ\n setPlaceholderNumberType: function (type) {\n this.options.placeholderNumberType = type\n this._updatePlaceholder()\n }\n }\n // using https://github.com/jquery-boilerplate/jquery-boilerplate/wiki/Extending-jQuery-Boilerplate\n // (adapted to allow public functions)\n $.fn[pluginName] = function (options) {\n var args = arguments\n // Is the first parameter an object (options), or was omitted,\n // instantiate a new instance of the plugin.\n if (options === undefined || typeof options === \"object\") {\n // collect all of the deferred objects for all instances created with this selector\n var deferreds = []\n this.each(function () {\n if (!$.data(this, \"plugin_\" + pluginName)) {\n var instance = new Plugin(this, options)\n var instanceDeferreds = instance._init()\n // we now have 2 deffereds: 1 for auto country, 1 for utils script\n deferreds.push(instanceDeferreds[0])\n deferreds.push(instanceDeferreds[1])\n $.data(this, \"plugin_\" + pluginName, instance)\n }\n })\n // return the promise from the \"master\" deferred object that tracks all the others\n return $.when.apply(null, deferreds)\n } else if (typeof options === \"string\" && options[0] !== \"_\") {\n // If the first parameter is a string and it doesn't start\n // with an underscore or \"contains\" the `init`-function,\n // treat this as a call to a public method.\n // Cache the method call to make it possible to return a value\n var returns\n this.each(function () {\n var instance = $.data(this, \"plugin_\" + pluginName)\n // Tests that there's already a plugin-instance\n // and checks that the requested public method exists\n if (instance instanceof Plugin && typeof instance[options] === \"function\") {\n // Call the method of our plugin instance,\n // and pass it the supplied arguments.\n returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1))\n }\n // Allow instances to be destroyed via the 'destroy' method\n if (options === \"destroy\") {\n $.data(this, \"plugin_\" + pluginName, null)\n }\n })\n // If the earlier cached method gives a value back return the value,\n // otherwise return this to preserve chainability.\n return returns !== undefined ? returns : this\n }\n }\n /********************\n * STATIC METHODS\n ********************/\n // get the country data object\n $.fn[pluginName].getCountryData = function () {\n return allCountries\n }\n // load the utils script\n $.fn[pluginName].loadUtils = function (path, utilsScriptDeferred) {\n if (!$.fn[pluginName].loadedUtilsScript) {\n // don't do this twice! (dont just check if window.intlTelInputUtils exists as if init plugin multiple times in quick succession, it may not have finished loading yet)\n $.fn[pluginName].loadedUtilsScript = true\n // dont use $.getScript as it prevents caching\n $.ajax({\n type: \"GET\",\n url: path,\n complete: function () {\n // tell all instances that the utils request is complete\n $(\".intl-tel-input input\").intlTelInput(\"handleUtils\")\n },\n dataType: \"script\",\n cache: true\n })\n } else if (utilsScriptDeferred) {\n utilsScriptDeferred.resolve()\n }\n }\n // default options\n $.fn[pluginName].defaults = defaults\n // version\n $.fn[pluginName].version = \"12.3.0\"\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [\n [\"Afghanistan (‫اÙغانستان‬‎)\", \"af\", \"93\"],\n [\"Albania (Shqipëri)\", \"al\", \"355\"],\n [\"Algeria (‫الجزائر‬‎)\", \"dz\", \"213\"],\n [\"American Samoa\", \"as\", \"1684\"],\n [\"Andorra\", \"ad\", \"376\"],\n [\"Angola\", \"ao\", \"244\"],\n [\"Anguilla\", \"ai\", \"1264\"],\n [\"Antigua and Barbuda\", \"ag\", \"1268\"],\n [\"Argentina\", \"ar\", \"54\"],\n [\"Armenia (Õ€Õ¡ÕµÕ¡Õ½Õ¿Õ¡Õ¶)\", \"am\", \"374\"],\n [\"Aruba\", \"aw\", \"297\"],\n [\"Australia\", \"au\", \"61\", 0],\n [\"Austria (Österreich)\", \"at\", \"43\"],\n [\"Azerbaijan (AzÉ™rbaycan)\", \"az\", \"994\"],\n [\"Bahamas\", \"bs\", \"1242\"],\n [\"Bahrain (‫البØرين‬‎)\", \"bh\", \"973\"],\n [\"Bangladesh (বাংলাদেশ)\", \"bd\", \"880\"],\n [\"Barbados\", \"bb\", \"1246\"],\n [\"Belarus (БеларуÑÑŒ)\", \"by\", \"375\"],\n [\"Belgium (België)\", \"be\", \"32\"],\n [\"Belize\", \"bz\", \"501\"],\n [\"Benin (Bénin)\", \"bj\", \"229\"],\n [\"Bermuda\", \"bm\", \"1441\"],\n [\"Bhutan (འབྲུག)\", \"bt\", \"975\"],\n [\"Bolivia\", \"bo\", \"591\"],\n [\"Bosnia and Herzegovina (БоÑна и Херцеговина)\", \"ba\", \"387\"],\n [\"Botswana\", \"bw\", \"267\"],\n [\"Brazil (Brasil)\", \"br\", \"55\"],\n [\"British Indian Ocean Territory\", \"io\", \"246\"],\n [\"British Virgin Islands\", \"vg\", \"1284\"],\n [\"Brunei\", \"bn\", \"673\"],\n [\"Bulgaria (БългариÑ)\", \"bg\", \"359\"],\n [\"Burkina Faso\", \"bf\", \"226\"],\n [\"Burundi (Uburundi)\", \"bi\", \"257\"],\n [\"Cambodia (កម្ពុជា)\", \"kh\", \"855\"],\n [\"Cameroon (Cameroun)\", \"cm\", \"237\"],\n [\n \"Canada\",\n \"ca\",\n \"1\",\n 1,\n [\n \"204\",\n \"226\",\n \"236\",\n \"249\",\n \"250\",\n \"289\",\n \"306\",\n \"343\",\n \"365\",\n \"387\",\n \"403\",\n \"416\",\n \"418\",\n \"431\",\n \"437\",\n \"438\",\n \"450\",\n \"506\",\n \"514\",\n \"519\",\n \"548\",\n \"579\",\n \"581\",\n \"587\",\n \"604\",\n \"613\",\n \"639\",\n \"647\",\n \"672\",\n \"705\",\n \"709\",\n \"742\",\n \"778\",\n \"780\",\n \"782\",\n \"807\",\n \"819\",\n \"825\",\n \"867\",\n \"873\",\n \"902\",\n \"905\"\n ]\n ],\n [\"Cape Verde (Kabu Verdi)\", \"cv\", \"238\"],\n [\"Caribbean Netherlands\", \"bq\", \"599\", 1],\n [\"Cayman Islands\", \"ky\", \"1345\"],\n [\"Central African Republic (République centrafricaine)\", \"cf\", \"236\"],\n [\"Chad (Tchad)\", \"td\", \"235\"],\n [\"Chile\", \"cl\", \"56\"],\n [\"China (ä¸å›½)\", \"cn\", \"86\"],\n [\"Christmas Island\", \"cx\", \"61\", 2],\n [\"Cocos (Keeling) Islands\", \"cc\", \"61\", 1],\n [\"Colombia\", \"co\", \"57\"],\n [\"Comoros (‫جزر القمر‬‎)\", \"km\", \"269\"],\n [\"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\"],\n [\"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\"],\n [\"Cook Islands\", \"ck\", \"682\"],\n [\"Costa Rica\", \"cr\", \"506\"],\n [\"Côte d’Ivoire\", \"ci\", \"225\"],\n [\"Croatia (Hrvatska)\", \"hr\", \"385\"],\n [\"Cuba\", \"cu\", \"53\"],\n [\"Curaçao\", \"cw\", \"599\", 0],\n [\"Cyprus (ΚÏÏ€Ïος)\", \"cy\", \"357\"],\n [\"Czech Republic (ÄŒeská republika)\", \"cz\", \"420\"],\n [\"Denmark (Danmark)\", \"dk\", \"45\"],\n [\"Djibouti\", \"dj\", \"253\"],\n [\"Dominica\", \"dm\", \"1767\"],\n [\"Dominican Republic (República Dominicana)\", \"do\", \"1\", 2, [\"809\", \"829\", \"849\"]],\n [\"Ecuador\", \"ec\", \"593\"],\n [\"Egypt (‫مصر‬‎)\", \"eg\", \"20\"],\n [\"El Salvador\", \"sv\", \"503\"],\n [\"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\"],\n [\"Eritrea\", \"er\", \"291\"],\n [\"Estonia (Eesti)\", \"ee\", \"372\"],\n [\"Ethiopia\", \"et\", \"251\"],\n [\"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\"],\n [\"Faroe Islands (Føroyar)\", \"fo\", \"298\"],\n [\"Fiji\", \"fj\", \"679\"],\n [\"Finland (Suomi)\", \"fi\", \"358\", 0],\n [\"France\", \"fr\", \"33\"],\n [\"French Guiana (Guyane française)\", \"gf\", \"594\"],\n [\"French Polynesia (Polynésie française)\", \"pf\", \"689\"],\n [\"Gabon\", \"ga\", \"241\"],\n [\"Gambia\", \"gm\", \"220\"],\n [\"Georgia (სáƒáƒ¥áƒáƒ თველáƒ)\", \"ge\", \"995\"],\n [\"Germany (Deutschland)\", \"de\", \"49\"],\n [\"Ghana (Gaana)\", \"gh\", \"233\"],\n [\"Gibraltar\", \"gi\", \"350\"],\n [\"Greece (Ελλάδα)\", \"gr\", \"30\"],\n [\"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\"],\n [\"Grenada\", \"gd\", \"1473\"],\n [\"Guadeloupe\", \"gp\", \"590\", 0],\n [\"Guam\", \"gu\", \"1671\"],\n [\"Guatemala\", \"gt\", \"502\"],\n [\"Guernsey\", \"gg\", \"44\", 1],\n [\"Guinea (Guinée)\", \"gn\", \"224\"],\n [\"Guinea-Bissau (Guiné Bissau)\", \"gw\", \"245\"],\n [\"Guyana\", \"gy\", \"592\"],\n [\"Haiti\", \"ht\", \"509\"],\n [\"Honduras\", \"hn\", \"504\"],\n [\"Hong Kong (香港)\", \"hk\", \"852\"],\n [\"Hungary (Magyarország)\", \"hu\", \"36\"],\n [\"Iceland (Ãsland)\", \"is\", \"354\"],\n [\"India (à¤à¤¾à¤°à¤¤)\", \"in\", \"91\"],\n [\"Indonesia\", \"id\", \"62\"],\n [\"Iran (‫ایران‬‎)\", \"ir\", \"98\"],\n [\"Iraq (‫العراق‬‎)\", \"iq\", \"964\"],\n [\"Ireland\", \"ie\", \"353\"],\n [\"Isle of Man\", \"im\", \"44\", 2],\n [\"Israel (‫ישר×ל‬‎)\", \"il\", \"972\"],\n [\"Italy (Italia)\", \"it\", \"39\", 0],\n [\"Jamaica\", \"jm\", \"1\", 4, [\"876\", \"658\"]],\n [\"Japan (日本)\", \"jp\", \"81\"],\n [\"Jersey\", \"je\", \"44\", 3],\n [\"Jordan (‫الأردن‬‎)\", \"jo\", \"962\"],\n [\"Kazakhstan (КазахÑтан)\", \"kz\", \"7\", 1],\n [\"Kenya\", \"ke\", \"254\"],\n [\"Kiribati\", \"ki\", \"686\"],\n [\"Kosovo\", \"xk\", \"383\"],\n [\"Kuwait (‫الكويت‬‎)\", \"kw\", \"965\"],\n [\"Kyrgyzstan (КыргызÑтан)\", \"kg\", \"996\"],\n [\"Laos (ລາວ)\", \"la\", \"856\"],\n [\"Latvia (Latvija)\", \"lv\", \"371\"],\n [\"Lebanon (‫لبنان‬‎)\", \"lb\", \"961\"],\n [\"Lesotho\", \"ls\", \"266\"],\n [\"Liberia\", \"lr\", \"231\"],\n [\"Libya (‫ليبيا‬‎)\", \"ly\", \"218\"],\n [\"Liechtenstein\", \"li\", \"423\"],\n [\"Lithuania (Lietuva)\", \"lt\", \"370\"],\n [\"Luxembourg\", \"lu\", \"352\"],\n [\"Macau (澳門)\", \"mo\", \"853\"],\n [\"Macedonia (FYROM) (Македонија)\", \"mk\", \"389\"],\n [\"Madagascar (Madagasikara)\", \"mg\", \"261\"],\n [\"Malawi\", \"mw\", \"265\"],\n [\"Malaysia\", \"my\", \"60\"],\n [\"Maldives\", \"mv\", \"960\"],\n [\"Mali\", \"ml\", \"223\"],\n [\"Malta\", \"mt\", \"356\"],\n [\"Marshall Islands\", \"mh\", \"692\"],\n [\"Martinique\", \"mq\", \"596\"],\n [\"Mauritania (‫موريتانيا‬‎)\", \"mr\", \"222\"],\n [\"Mauritius (Moris)\", \"mu\", \"230\"],\n [\"Mayotte\", \"yt\", \"262\", 1],\n [\"Mexico (México)\", \"mx\", \"52\"],\n [\"Micronesia\", \"fm\", \"691\"],\n [\"Moldova (Republica Moldova)\", \"md\", \"373\"],\n [\"Monaco\", \"mc\", \"377\"],\n [\"Mongolia (Монгол)\", \"mn\", \"976\"],\n [\"Montenegro (Crna Gora)\", \"me\", \"382\"],\n [\"Montserrat\", \"ms\", \"1664\"],\n [\"Morocco (‫المغرب‬‎)\", \"ma\", \"212\", 0],\n [\"Mozambique (Moçambique)\", \"mz\", \"258\"],\n [\"Myanmar (Burma) (မြန်မာ)\", \"mm\", \"95\"],\n [\"Namibia (Namibië)\", \"na\", \"264\"],\n [\"Nauru\", \"nr\", \"674\"],\n [\"Nepal (नेपाल)\", \"np\", \"977\"],\n [\"Netherlands (Nederland)\", \"nl\", \"31\"],\n [\"New Caledonia (Nouvelle-Calédonie)\", \"nc\", \"687\"],\n [\"New Zealand\", \"nz\", \"64\"],\n [\"Nicaragua\", \"ni\", \"505\"],\n [\"Niger (Nijar)\", \"ne\", \"227\"],\n [\"Nigeria\", \"ng\", \"234\"],\n [\"Niue\", \"nu\", \"683\"],\n [\"Norfolk Island\", \"nf\", \"672\"],\n [\"North Korea (ì¡°ì„ ë¯¼ì£¼ì£¼ì˜ ì¸ë¯¼ 공화êµ)\", \"kp\", \"850\"],\n [\"Northern Mariana Islands\", \"mp\", \"1670\"],\n [\"Norway (Norge)\", \"no\", \"47\", 0],\n [\"Oman (‫عÙمان‬‎)\", \"om\", \"968\"],\n [\"Pakistan (‫پاکستان‬‎)\", \"pk\", \"92\"],\n [\"Palau\", \"pw\", \"680\"],\n [\"Palestine (‫Ùلسطين‬‎)\", \"ps\", \"970\"],\n [\"Panama (Panamá)\", \"pa\", \"507\"],\n [\"Papua New Guinea\", \"pg\", \"675\"],\n [\"Paraguay\", \"py\", \"595\"],\n [\"Peru (Perú)\", \"pe\", \"51\"],\n [\"Philippines\", \"ph\", \"63\"],\n [\"Poland (Polska)\", \"pl\", \"48\"],\n [\"Portugal\", \"pt\", \"351\"],\n [\"Puerto Rico\", \"pr\", \"1\", 3, [\"787\", \"939\"]],\n [\"Qatar (‫قطر‬‎)\", \"qa\", \"974\"],\n [\"Réunion (La Réunion)\", \"re\", \"262\", 0],\n [\"Romania (România)\", \"ro\", \"40\"],\n [\"Russia (РоÑÑиÑ)\", \"ru\", \"7\", 0],\n [\"Rwanda\", \"rw\", \"250\"],\n [\"Saint Barthélemy\", \"bl\", \"590\", 1],\n [\"Saint Helena\", \"sh\", \"290\"],\n [\"Saint Kitts and Nevis\", \"kn\", \"1869\"],\n [\"Saint Lucia\", \"lc\", \"1758\"],\n [\"Saint Martin (Saint-Martin (partie française))\", \"mf\", \"590\", 2],\n [\"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\"],\n [\"Saint Vincent and the Grenadines\", \"vc\", \"1784\"],\n [\"Samoa\", \"ws\", \"685\"],\n [\"San Marino\", \"sm\", \"378\"],\n [\"São Tomé and PrÃncipe (São Tomé e PrÃncipe)\", \"st\", \"239\"],\n [\"Saudi Arabia (‫المملكة العربية السعودية‬‎)\", \"sa\", \"966\"],\n [\"Senegal (Sénégal)\", \"sn\", \"221\"],\n [\"Serbia (Србија)\", \"rs\", \"381\"],\n [\"Seychelles\", \"sc\", \"248\"],\n [\"Sierra Leone\", \"sl\", \"232\"],\n [\"Singapore\", \"sg\", \"65\"],\n [\"Sint Maarten\", \"sx\", \"1721\"],\n [\"Slovakia (Slovensko)\", \"sk\", \"421\"],\n [\"Slovenia (Slovenija)\", \"si\", \"386\"],\n [\"Solomon Islands\", \"sb\", \"677\"],\n [\"Somalia (Soomaaliya)\", \"so\", \"252\"],\n [\"South Africa\", \"za\", \"27\"],\n [\"South Korea (대한민êµ)\", \"kr\", \"82\"],\n [\"South Sudan (‫جنوب السودان‬‎)\", \"ss\", \"211\"],\n [\"Spain (España)\", \"es\", \"34\"],\n [\"Sri Lanka (à·à·Šâ€à¶»à·“ ලංකà·à·€)\", \"lk\", \"94\"],\n [\"Sudan (‫السودان‬‎)\", \"sd\", \"249\"],\n [\"Suriname\", \"sr\", \"597\"],\n [\"Svalbard and Jan Mayen\", \"sj\", \"47\", 1],\n [\"Swaziland\", \"sz\", \"268\"],\n [\"Sweden (Sverige)\", \"se\", \"46\"],\n [\"Switzerland (Schweiz)\", \"ch\", \"41\"],\n [\"Syria (‫سوريا‬‎)\", \"sy\", \"963\"],\n [\"Taiwan (å°ç£)\", \"tw\", \"886\"],\n [\"Tajikistan\", \"tj\", \"992\"],\n [\"Tanzania\", \"tz\", \"255\"],\n [\"Thailand (ไทย)\", \"th\", \"66\"],\n [\"Timor-Leste\", \"tl\", \"670\"],\n [\"Togo\", \"tg\", \"228\"],\n [\"Tokelau\", \"tk\", \"690\"],\n [\"Tonga\", \"to\", \"676\"],\n [\"Trinidad and Tobago\", \"tt\", \"1868\"],\n [\"Tunisia (‫تونس‬‎)\", \"tn\", \"216\"],\n [\"Turkey (Türkiye)\", \"tr\", \"90\"],\n [\"Turkmenistan\", \"tm\", \"993\"],\n [\"Turks and Caicos Islands\", \"tc\", \"1649\"],\n [\"Tuvalu\", \"tv\", \"688\"],\n [\"U.S. Virgin Islands\", \"vi\", \"1340\"],\n [\"Uganda\", \"ug\", \"256\"],\n [\"Ukraine (Україна)\", \"ua\", \"380\"],\n [\"United Arab Emirates (‫الإمارات العربية المتØدة‬‎)\", \"ae\", \"971\"],\n [\"United Kingdom\", \"gb\", \"44\", 0],\n [\"United States\", \"us\", \"1\", 0],\n [\"Uruguay\", \"uy\", \"598\"],\n [\"Uzbekistan (OÊ»zbekiston)\", \"uz\", \"998\"],\n [\"Vanuatu\", \"vu\", \"678\"],\n [\"Vatican City (Città del Vaticano)\", \"va\", \"39\", 1],\n [\"Venezuela\", \"ve\", \"58\"],\n [\"Vietnam (Việt Nam)\", \"vn\", \"84\"],\n [\"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\"],\n [\"Western Sahara (‫الصØراء الغربية‬‎)\", \"eh\", \"212\", 1],\n [\"Yemen (‫اليمن‬‎)\", \"ye\", \"967\"],\n [\"Zambia\", \"zm\", \"260\"],\n [\"Zimbabwe\", \"zw\", \"263\"],\n [\"Ã…land Islands\", \"ax\", \"358\", 1]\n ]\n // loop over all of the countries above\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i]\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null\n }\n }\n})\n","import \"animate.css/animate.css\"\nimport LocalTime from \"local-time\"\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n let calendarIndex = 0\n\n // LocalTime\n LocalTime.run()\n\n // Flash\n if ($(\".flashes\").length) {\n setTimeout(function () {\n $(\".flashes\").attr(\"data-state\", \"displayed\")\n }, 10000)\n }\n\n // Buttons\n $(\"a[data-icon]\").each(function () {\n const text = $(this).text()\n const icon = $(this).attr(\"data-icon\")\n return $(this).html(`<i class='icon-${icon}'></i><span>${text}</span>`)\n })\n\n $(\"body\").on(\"click\", \"a[data-working]\", function (e) {\n $(this).addClass(\"working\")\n })\n\n // Close Dropdowns\n $(\"body\").on(\"click\", \".dropdown button.button-close\", function (e) {\n e.preventDefault()\n $(this).closest(\".dropdown\").removeClass(\"is-active\")\n })\n\n // Read More\n $(\"[data-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"data-read-more\"))\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" data-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[data-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[data-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Read More Bottom\n $(\"[data-read-more-bottom]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"data-read-more-bottom\"))\n\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" data-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[data-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[data-read-more-bottom]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Read More Field2\n $(\"[field2-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"field2-read-more\"))\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" field2-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[field2-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[field2-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Read More Field3\n $(\"[field3-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"field3-read-more\"))\n\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" field3-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[field3-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[field3-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Read More Field4\n $(\"[field4-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"field4-read-more\"))\n\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" field4-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[field4-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[field4-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Read More Field5\n $(\"[field5-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"field5-read-more\"))\n\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" field5-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[field5-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[field5-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // Service description read more\n $(\"[service-description-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"service-description-read-more\"))\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" service-description-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[service-description-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[service-description-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n // See more reviews - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-reviews-button\", function (e) {\n $(\"html,body\").animate(\n {\n scrollTop: $(\"#bottom-reviews\").offset().top - 150\n },\n \"slow\"\n )\n $(\"#see-more-reviews-bottom\").fadeIn(() => {\n if ((document.getElementById(\"see-more-reviews-button\").value = !null)) {\n document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"inline-block\"\n }\n })\n })\n\n // See less reviews - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-reviews-button\", function (e) {\n document.getElementById(\"see-less-reviews-button\").style.display = \"none\"\n $(\"#see-more-reviews\").fadeOut(() => {\n document.getElementById(\"see-more-reviews-button\").style.display = \"inline-block\"\n })\n })\n\n // See more reviews bottom - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-reviews-bottom-button\", function (e) {\n document.getElementById(\"see-more-reviews-bottom-button\").style.display = \"none\"\n $(\"#see-more-reviews-bottom\").fadeIn(() => {\n document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"inline-block\"\n })\n })\n\n // See less reviews bottom - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-reviews-bottom-button\", function (e) {\n document.getElementById(\"see-less-reviews-bottom-button\").style.display = \"none\"\n $(\"#see-more-reviews-bottom\").fadeOut(() => {\n document.getElementById(\"see-more-reviews-bottom-button\").style.display = \"inline-block\"\n })\n })\n\n // See more skills - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-skills-button\", function (e) {\n document.getElementById(\"see-more-skills-button\").style.display = \"none\"\n $(\"#see-more-skills\").fadeIn(() => {\n document.getElementById(\"see-less-skills-button\").style.display = \"inline-block\"\n })\n })\n\n // See less skills - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-skills-button\", function (e) {\n document.getElementById(\"see-less-skills-button\").style.display = \"none\"\n $(\"#see-more-skills\").fadeOut(() => {\n document.getElementById(\"see-more-skills-button\").style.display = \"inline-block\"\n })\n })\n\n // See more articles - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-articles-button\", function (e) {\n document.getElementById(\"see-more-articles-button\").style.display = \"none\"\n $(\"#see-more-articles\").fadeIn(() => {\n document.getElementById(\"see-less-articles-button\").style.display = \"inline-block\"\n })\n })\n\n // See less articles - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-articles-button\", function (e) {\n document.getElementById(\"see-less-articles-button\").style.display = \"none\"\n $(\"#see-more-articles\").fadeOut(() => {\n document.getElementById(\"see-more-articles-button\").style.display = \"inline-block\"\n })\n })\n\n // See more images - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-images-button\", function (e) {\n document.getElementById(\"see-more-images-button\").style.display = \"none\"\n $(\"#see-more-images\").fadeIn(() => {\n document.getElementById(\"see-less-images-button\").style.display = \"inline-block\"\n })\n })\n\n // See less images - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-images-button\", function (e) {\n document.getElementById(\"see-less-images-button\").style.display = \"none\"\n $(\"#see-more-images\").fadeOut(() => {\n document.getElementById(\"see-more-images-button\").style.display = \"inline-block\"\n })\n })\n\n // See more answers - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-answers-button\", function (e) {\n document.getElementById(\"see-more-answers-button\").style.display = \"none\"\n $(\"#see-more-answers\").fadeIn(() => {\n document.getElementById(\"see-less-answers-button\").style.display = \"inline-block\"\n })\n })\n\n // See less answers - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-answers-button\", function (e) {\n document.getElementById(\"see-less-answers-button\").style.display = \"none\"\n $(\"#see-more-answers\").fadeOut(() => {\n document.getElementById(\"see-more-answers-button\").style.display = \"inline-block\"\n })\n })\n\n // See more services - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-more-services-button\", function (e) {\n document.getElementById(\"see-more-services-button\").style.display = \"none\"\n $(\"#hidden-divider\").fadeIn()\n $(\"#see-more-services\").fadeIn(() => {\n document.getElementById(\"see-less-services-button\").style.display = \"inline-block\"\n })\n })\n\n // See less services - Parctitioner Page\n $(\"body\").on(\"click\", \"#see-less-services-button\", function (e) {\n document.getElementById(\"see-less-services-button\").style.display = \"none\"\n $(\"#see-more-services\").fadeOut(() => {\n document.getElementById(\"see-more-services-button\").style.display = \"inline-block\"\n })\n })\n\n // Add License - Profile Setup\n $(\"body\").on(\"click\", \"#add-license-button\", function (e) {\n document.getElementById(\"add-license-button\").style.display = \"none\"\n $(\"#add-license\").fadeIn(() => {\n document.getElementById(\"done-add-license-button\").style.display = \"inline-block\"\n })\n })\n\n // Done adding license - Profile Setup\n $(\"body\").on(\"click\", \"#done-add-license-button\", function (e) {\n document.getElementById(\"done-add-license-button\").style.display = \"none\"\n $(\"#add-license\").fadeOut(() => {\n document.getElementById(\"add-license-button\").style.display = \"inline-block\"\n })\n })\n\n // Add Certificate - Profile Setup\n $(\"body\").on(\"click\", \"#add-certificate-button\", function (e) {\n document.getElementById(\"add-certificate-button\").style.display = \"none\"\n $(\"#add-certificate\").fadeIn(() => {\n document.getElementById(\"done-add-certificate-button\").style.display = \"inline-block\"\n })\n })\n\n // Done adding certificate - Profile Setup\n $(\"body\").on(\"click\", \"#done-add-certificate-button\", function (e) {\n document.getElementById(\"done-add-certificate-button\").style.display = \"none\"\n $(\"#add-certificate\").fadeOut(() => {\n document.getElementById(\"add-certificate-button\").style.display = \"inline-block\"\n })\n })\n\n // Add Degree - Profile Setup\n $(\"body\").on(\"click\", \"#add-degree-button\", function (e) {\n document.getElementById(\"add-degree-button\").style.display = \"none\"\n $(\"#add-degree\").fadeIn(() => {\n document.getElementById(\"done-add-degree-button\").style.display = \"inline-block\"\n })\n })\n\n // Done adding degree - Profile Setup\n $(\"body\").on(\"click\", \"#done-add-degree-button\", function (e) {\n document.getElementById(\"done-add-degree-button\").style.display = \"none\"\n $(\"#add-degree\").fadeOut(() => {\n document.getElementById(\"add-degree-button\").style.display = \"inline-block\"\n })\n })\n\n // Add Membership - Profile Setup\n $(\"body\").on(\"click\", \"#add-membership-button\", function (e) {\n document.getElementById(\"add-membership-button\").style.display = \"none\"\n $(\"#add-membership\").fadeIn(() => {\n document.getElementById(\"done-add-membership-button\").style.display = \"inline-block\"\n })\n })\n\n // Done adding membership - Profile Setup\n $(\"body\").on(\"click\", \"#done-add-membership-button\", function (e) {\n document.getElementById(\"done-add-membership-button\").style.display = \"none\"\n $(\"#add-membership\").fadeOut(() => {\n document.getElementById(\"add-membership-button\").style.display = \"inline-block\"\n })\n })\n\n // show more days - appointment offer alternative times modal\n $(\"body\").on(\"click\", \"#show-more-days\", function (e) {\n document.getElementById(\"show-more-days\").style.display = \"none\"\n document.getElementById(\"calendar-times\").style.overflowY = \"scroll\"\n })\n\n // See all insurances - Parctitioner Search Page\n $(\"body\").on(\"click\", \"#see-all-insurances\", function (e) {\n document.getElementById(\"see-all-insurances\").style.display = \"none\"\n document.getElementById(\"insurance-accepted\").style.maxHeight = \"100%\"\n })\n\n // Clear all filters - Parctitioner Search Page\n $(\"body\").on(\"click\", \"#clear-all-filters\", function (e) {\n $('input[type=\"checkbox\"]:checked').prop(\"checked\", false)\n })\n\n // Equalizer heights\n $(\"[data-equalizer]\").each(function () {\n const parentElement = $(this)\n const children = parentElement.find(\"[data-equalizer-watch]\")\n if (children.length) {\n const heights = children.map(function () {\n return $(this).height()\n })\n const maxHeight = heights.get().reduce(function (a, b) {\n return Math.max(a, b)\n })\n children.height(maxHeight)\n }\n })\n\n // Modal Close\n $(\".modal button.close\").click(function (e) {\n e.preventDefault()\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal .modal-background\").click(function (e) {\n e.preventDefault()\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal button.close-fullwidth\").click(function (e) {\n e.preventDefault()\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal [data-close]\").click(function (e) {\n e.preventDefault()\n if ($(this).closest(\".modal\").hasClass(\"video\")) {\n $(\"iframe.youtube-video\").attr(\"src\", function (i, val) {\n return val\n })\n }\n\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal [data-close]\").click(function (e) {\n e.preventDefault()\n if ($(this).closest(\".modal\").hasClass(\"video\")) {\n $(\"iframe.vimeo-video\").attr(\"src\", function (i, val) {\n return val\n })\n }\n\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal [data-close]\").click(function (e) {\n e.preventDefault()\n if ($(this).closest(\".modal\").hasClass(\"video\")) {\n $(\"iframe.bitchute-video\").attr(\"src\", function (i, val) {\n return val\n })\n }\n\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal [data-close]\").click(function (e) {\n e.preventDefault()\n if ($(this).closest(\".modal\").hasClass(\"video\")) {\n $(\"iframe.brandnewtube-video\").attr(\"src\", function (i, val) {\n return val\n })\n }\n\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\".modal [data-close]\").click(function (e) {\n e.preventDefault()\n if ($(this).closest(\".modal\").hasClass(\"video\")) {\n $(\"iframe.brighteon-video\").attr(\"src\", function (i, val) {\n return val\n })\n }\n\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n // Toggle View Password\n $(\".toggle-view-password\").click(function () {\n const pass = document.getElementById(\"session_password\")\n if (pass.type === \"password\") {\n pass.type = \"text\"\n document.getElementById(\"show-hide-pw\").classList.add(\"icon-eye-blocked\")\n document.getElementById(\"show-hide-pw\").classList.remove(\"icon-eye\")\n } else {\n pass.type = \"password\"\n document.getElementById(\"show-hide-pw\").classList.remove(\"icon-eye-blocked\")\n document.getElementById(\"show-hide-pw\").classList.add(\"icon-eye\")\n }\n })\n\n // Toggle View Password\n $(\".toggle-view-password-registration\").click(function () {\n const pass = document.getElementById(\"user_password\")\n if (pass.type === \"password\") {\n pass.type = \"text\"\n document.getElementById(\"show-hide-signup-pw\").classList.add(\"icon-eye-blocked\")\n document.getElementById(\"show-hide-signup-pw\").classList.remove(\"icon-eye\")\n } else {\n pass.type = \"password\"\n document.getElementById(\"show-hide-signup-pw\").classList.remove(\"icon-eye-blocked\")\n document.getElementById(\"show-hide-signup-pw\").classList.add(\"icon-eye\")\n }\n })\n\n $(\"#next-calendar\").click(function (e) {\n e.preventDefault()\n if (calendarIndex < 2) {\n calendarIndex += 1\n }\n const baseIndex = calendarIndex * 4\n document.getElementsByClassName(\"pro-search-calendar\").forEach((element) => {\n $(element).find(\"th\").hide()\n $(element).find(\"td\").hide()\n $(element).find(`th[data-index=${baseIndex}]`).show()\n $(element).find(`td[data-index=${baseIndex}]`).show()\n $(element)\n .find(`th[data-index=${baseIndex + 1}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 1}]`)\n .show()\n $(element)\n .find(`th[data-index=${baseIndex + 2}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 2}]`)\n .show()\n $(element)\n .find(`th[data-index=${baseIndex + 3}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 3}]`)\n .show()\n })\n })\n\n $(\"#prev-calendar\").click(function (e) {\n e.preventDefault()\n if (calendarIndex > 0) {\n calendarIndex -= 1\n }\n const baseIndex = calendarIndex * 4\n document.getElementsByClassName(\"pro-search-calendar\").forEach((element) => {\n $(element).find(\"th\").hide()\n $(element).find(\"td\").hide()\n $(element).find(`th[data-index=${baseIndex}]`).show()\n $(element).find(`td[data-index=${baseIndex}]`).show()\n $(element)\n .find(`th[data-index=${baseIndex + 1}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 1}]`)\n .show()\n $(element)\n .find(`th[data-index=${baseIndex + 2}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 2}]`)\n .show()\n $(element)\n .find(`th[data-index=${baseIndex + 3}]`)\n .show()\n $(element)\n .find(`td[data-index=${baseIndex + 3}]`)\n .show()\n })\n })\n\n // Make calendar/practitioners found sticky on scroll\n $(window).scroll(function () {\n if ($(window).scrollTop() > 5) {\n $(\".sticky-calendar\").addClass(\"sticky\")\n } else {\n $(\".sticky-calendar\").removeClass(\"sticky\")\n }\n })\n\n // \"Fake\" clicking buttons to trigger actions in stimulus controller\n $(\"#virtual-button\").click(function (e) {\n const btn = document.getElementById(\"virtual-remote-checkbox\")\n btn.click()\n document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-button\").classList.remove(\"active\")\n document.getElementById(\"in-home-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-button\").classList.add(\"active\")\n })\n $(\"#in-home-button\").click(function (e) {\n const btn = document.getElementById(\"in-home-remote-checkbox\")\n btn.click()\n document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-button\").classList.remove(\"active\")\n document.getElementById(\"in-home-button\").classList.add(\"active\")\n })\n $(\"#in-person-button\").click(function (e) {\n const btn = document.getElementById(\"inperson-remote-checkbox\")\n btn.click()\n document.getElementById(\"all-pros-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-button\").classList.add(\"active\")\n document.getElementById(\"virtual-button\").classList.remove(\"active\")\n document.getElementById(\"in-home-button\").classList.remove(\"active\")\n })\n $(\"#all-pros-button\").click(function (e) {\n const btn = document.getElementById(\"allpros-remote-checkbox\")\n btn.click()\n document.getElementById(\"all-pros-button\").classList.add(\"active\")\n document.getElementById(\"in-person-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-button\").classList.remove(\"active\")\n document.getElementById(\"in-home-button\").classList.remove(\"active\")\n })\n $(\"#apply-filters\")\n .unbind()\n .click(function (e) {\n console.log(\"track this click event\")\n const btn = document.getElementById(\"submitFilters\")\n btn.click()\n $(this).closest(\".modal\").removeClass(\"is-active\")\n })\n\n $(\"#search-field-mobile-button\").click(function (e) {\n $(\"#modal-slider\").fadeIn(() => {\n document.getElementById(\"modal-slider\").style.display = \"inline-block\"\n })\n })\n\n $(\"#close-modal-slider\").click(function (e) {\n $(\"#modal-slider\").fadeOut(() => {})\n })\n\n $(\"#search-button\").click(function (e) {\n $(\"#modal-slider\").fadeOut(() => {})\n })\n\n // \"Fake\" clicking buttons to trigger filters in localities page\n $(\"#virtual-localities-button\").click(function (e) {\n document.getElementById(\"all-pros-localities-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-localities-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-localities-button\").classList.add(\"active\")\n $(\"#virtual-locality-value\").prop(\"checked\", true)\n $(\"#in-person-locality-value\").prop(\"checked\", false)\n const btn = document.getElementById(\"submit-localities-filters\")\n btn.click()\n })\n $(\"#in-person-localities-button\").click(function (e) {\n document.getElementById(\"all-pros-localities-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-localities-button\").classList.add(\"active\")\n document.getElementById(\"virtual-localities-button\").classList.remove(\"active\")\n $(\"#virtual-locality-value\").prop(\"checked\", false)\n $(\"#in-person-locality-value\").prop(\"checked\", true)\n const btn = document.getElementById(\"submit-localities-filters\")\n btn.click()\n })\n $(\"#all-pros-localities-button\").click(function (e) {\n document.getElementById(\"all-pros-localities-button\").classList.add(\"active\")\n document.getElementById(\"in-person-localities-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-localities-button\").classList.remove(\"active\")\n $(\"#virtual-locality-value\").prop(\"checked\", false)\n $(\"#in-person-locality-value\").prop(\"checked\", false)\n const btn = document.getElementById(\"submit-localities-filters\")\n btn.click()\n })\n\n // \"Fake\" clicking buttons to trigger filters in quiz page\n $(\"#virtual-quiz-button\").click(function (e) {\n document.getElementById(\"all-pros-quiz-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-quiz-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-quiz-button\").classList.add(\"active\")\n $(\"#virtual-quiz-value\").prop(\"checked\", true)\n $(\"#in-person-quiz-value\").prop(\"checked\", false)\n const btn = document.getElementById(\"submit-quiz-filters\")\n btn.click()\n })\n $(\"#in-person-quiz-button\").click(function (e) {\n document.getElementById(\"all-pros-quiz-button\").classList.remove(\"active\")\n document.getElementById(\"in-person-quiz-button\").classList.add(\"active\")\n document.getElementById(\"virtual-quiz-button\").classList.remove(\"active\")\n $(\"#virtual-quiz-value\").prop(\"checked\", false)\n $(\"#in-person-quiz-value\").prop(\"checked\", true)\n const btn = document.getElementById(\"submit-quiz-filters\")\n btn.click()\n })\n $(\"#all-pros-quiz-button\").click(function (e) {\n document.getElementById(\"all-pros-quiz-button\").classList.add(\"active\")\n document.getElementById(\"in-person-quiz-button\").classList.remove(\"active\")\n document.getElementById(\"virtual-quiz-button\").classList.remove(\"active\")\n $(\"#virtual-quiz-value\").prop(\"checked\", false)\n $(\"#in-person-quiz-value\").prop(\"checked\", false)\n const btn = document.getElementById(\"submit-quiz-filters\")\n btn.click()\n })\n\n // Read More Service description\n $(\"[service-read-more]\").each(function () {\n let innerStr = $(this).text()\n const maxLength = parseInt($(this).attr(\"service-read-more\"))\n if (innerStr.includes(\"read more...\")) {\n innerStr = innerStr.substring(maxLength + 13)\n }\n\n if (\n innerStr.length > maxLength &&\n innerStr.substring(maxLength, maxLength + maxLength / 2) != innerStr.substring(0, maxLength / 2)\n ) {\n const newStr = innerStr.substring(0, maxLength)\n $(this).empty().html(newStr)\n $(this).append(' <a href=\"\" service-read-more-trigger>read more...</a>')\n $(this).append('<span data-more-text class=\"hidden\">' + innerStr + \"</span>\")\n }\n })\n\n $(\"body\").on(\"click\", \"a[service-read-more-trigger]\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\"[service-read-more]\")\n const originalString = parent.find(\"span[data-more-text]\").html()\n parent.empty().html(originalString)\n })\n\n $(\"body\").on(\"click\", \"#add-time-length-1\", function (e) {\n e.preventDefault()\n $(this).parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n $(this).addClass(\"hidden\")\n })\n\n $(\"body\").on(\"click\", \"#add-time-length-2\", function (e) {\n e.preventDefault()\n $(this).parent().parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n $(this).parent().remove()\n })\n\n $(\"body\").on(\"click\", \"#add-time-length-3\", function (e) {\n e.preventDefault()\n $(this).parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n $(this).addClass(\"hidden\")\n })\n\n $(\"body\").on(\"click\", \"#add-time-length-4\", function (e) {\n e.preventDefault()\n $(this).parent().parent().siblings(\".is-hidden\").first().removeClass(\"is-hidden\")\n $(this).parent().remove()\n })\n\n $(\"body\").on(\"click\", \"#book-now-services\", function (e) {\n document.getElementById(\"booking-side-bar\").style.border = \"2px solid #0c3954\"\n document.getElementById(\"booking-side-bar\").style.transition = \"border-width 1.5s linear\"\n })\n\n $(\"body\").on(\"click\", \"#coupon-section\", function (e) {\n $(\"#coupon-section\").fadeOut(() => {\n $(\"#coupon-form\").fadeIn()\n })\n })\n\n // TEMPORARY: Show Performance data in Development\n if (process.env.NODE_ENV === \"development\" && window.performance) {\n const performance = window.performance\n const performanceEntries = performance.getEntriesByType(\"paint\")\n performanceEntries.forEach((performanceEntry, i, entries) => {\n console.log(\"The time to \" + performanceEntry.name + \" was \" + performanceEntry.startTime + \" milliseconds.\")\n })\n }\n\n $(\"#phone_input\").intlTelInput({\n formatOnInit: true,\n separateDialCode: true\n })\n\n // Press Escape key to close modal\n $(document).keydown(function (event) {\n if (event.keyCode === 27) {\n Array.from(document.getElementsByClassName(\"modal is-active\")).forEach((modal) => {\n modal.classList.remove(\"is-active\")\n })\n }\n })\n\n const current_url = document.location.toString()\n window.addEventListener(\"popstate\", (event) => {\n if (\n document.location.toString().includes(\"practitioner-search\") &&\n document.location.toString().includes(\"query\")\n ) {\n if (current_url && !current_url.includes(\"practitioner-search\")) {\n location.reload()\n }\n }\n })\n\n $(\"#checkout_is_recurring_true\").click(function () {\n $(\".recurrence\").show()\n })\n $(\"#checkout_is_recurring_false\").click(function () {\n $(\".recurrence\").hide()\n })\n\n $(\"body\").on(\"click\", \".copy-link\", function (e) {\n e.preventDefault()\n const parent = $(this).closest(\".copy-link\")\n var link = parent.prevObject[0].dataset.value\n var txtArea = document.createElement(\"textarea\")\n document.body.appendChild(txtArea)\n txtArea.value = link\n txtArea.select()\n document.execCommand(\"copy\")\n document.body.removeChild(txtArea)\n document.execCommand(\"copy\")\n parent.prevObject[0].innerText = \"Copied to clipboard\"\n })\n})\n","document.addEventListener(\"turbolinks:load\", function () {\n // Quiz Completion\n if ($(\"body.quizzes\").length && $(\".computation-state\").length) {\n const element = $(\".computation-state\")\n\n setTimeout(function () {\n element.find(\".computing\").fadeOut(function () {\n const resultsElement = element.find(\".results\")\n $(\".image.hero-img img\").replaceWith(resultsElement.data(\"image-tag\"))\n resultsElement.fadeIn(1000)\n })\n }, 3000)\n }\n})\n","if (!window.App) {\n window.App = {}\n}\n\nApp.$ = $ // Allows us to use App.$ in UJS partials to get the Cash wrapper.\n\nApp.refireLoad = () => document.dispatchEvent(new Event(\"turbolinks:load\", { bubbles: true, cancelable: true }))\n","document.addEventListener(\"turbolinks:load\", function () {\n // Tabs\n $(\"body\").on(\"click\", \".tabs ul li a\", function (e) {\n if ($(this).attr(\"data-index\")) {\n e.preventDefault()\n const parent = $(this).closest(\".tabs\")\n const tabsetName = parent.attr(\"data-tabs\")\n const index = $(this).attr(\"data-index\")\n const tabPanels = $(`.tab-panels[data-tabs='${tabsetName}']`)\n\n parent.find(\"li\").removeClass(\"is-active\")\n $(this).closest(\"li\").addClass(\"is-active\")\n\n tabPanels.find(\".tab-panel.is-active\").removeClass(\"is-active\")\n tabPanels.find(`.tab-panel[data-index='${index}']`).addClass(\"is-active\")\n }\n })\n})\n","(function(){var aa=this;function k(a){return\"string\"==typeof a}function m(a,b){a=a.split(\".\");var c=aa;a[0]in c||!c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}\nfunction n(a,b){function c(){}c.prototype=b.prototype;a.o=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.aa=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};var p=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(k(a))return k(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function q(a,b){a.sort(b||ba)}function ba(a,b){return a>b?1:a<b?-1:0};function ca(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};function da(a,b){this.a=a;this.h=!!b.i;this.c=b.b;this.m=b.type;this.l=!1;switch(this.c){case ea:case fa:case ha:case ia:case ja:case ka:case la:this.l=!0}this.g=b.defaultValue}var la=1,ka=2,ea=3,fa=4,ha=6,ia=16,ja=18;function ma(a,b){this.c=a;this.a={};for(a=0;a<b.length;a++){var c=b[a];this.a[c.a]=c}}function na(a){a=ca(a.a);q(a,function(a,c){return a.a-c.a});return a};function r(){this.a={};this.g=this.f().a;this.c=this.h=null}r.prototype.has=function(a){return null!=this.a[a.a]};r.prototype.get=function(a,b){return t(this,a.a,b)};r.prototype.set=function(a,b){u(this,a.a,b)};r.prototype.add=function(a,b){v(this,a.a,b)};\nfunction oa(a,b){for(var c=na(a.f()),d=0;d<c.length;d++){var e=c[d],f=e.a;if(null!=b.a[f]){a.c&&delete a.c[e.a];var g=11==e.c||10==e.c;if(e.h){e=w(b,f);for(var h=0;h<e.length;h++)v(a,f,g?e[h].clone():e[h])}else e=x(b,f),g?(g=x(a,f))?oa(g,e):u(a,f,e.clone()):u(a,f,e)}}}r.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.a={},a.c&&(a.c={}),oa(a,this));return a};\nfunction x(a,b){var c=a.a[b];if(null==c)return null;if(a.h){if(!(b in a.c)){var d=a.h,e=a.g[b];if(null!=c)if(e.h){for(var f=[],g=0;g<c.length;g++)f[g]=d.c(e,c[g]);c=f}else c=d.c(e,c);return a.c[b]=c}return a.c[b]}return c}function t(a,b,c){var d=x(a,b);return a.g[b].h?d[c||0]:d}function y(a,b){if(null!=a.a[b])a=t(a,b,void 0);else a:{a=a.g[b];if(void 0===a.g)if(b=a.m,b===Boolean)a.g=!1;else if(b===Number)a.g=0;else if(b===String)a.g=a.l?\"0\":\"\";else{a=new b;break a}a=a.g}return a}\nfunction w(a,b){return x(a,b)||[]}function A(a,b){return a.g[b].h?null!=a.a[b]?a.a[b].length:0:null!=a.a[b]?1:0}function u(a,b,c){a.a[b]=c;a.c&&(a.c[b]=c)}function v(a,b,c){a.a[b]||(a.a[b]=[]);a.a[b].push(c);a.c&&delete a.c[b]}function B(a,b){var c=[],d;for(d in b)0!=d&&c.push(new da(d,b[d]));return new ma(a,c)};function C(){}C.prototype.a=function(a){new a.c;throw Error(\"Unimplemented\");};C.prototype.c=function(a,b){if(11==a.c||10==a.c)return b instanceof r?b:this.a(a.m.prototype.f(),b);if(14==a.c)return k(b)&&pa.test(b)&&(a=Number(b),0<a)?a:b;if(!a.l)return b;a=a.m;if(a===String){if(\"number\"==typeof b)return String(b)}else if(a===Number&&k(b)&&(\"Infinity\"===b||\"-Infinity\"===b||\"NaN\"===b||pa.test(b)))return Number(b);return b};var pa=/^-?[0-9]+$/;function D(){}n(D,C);D.prototype.a=function(a,b){a=new a.c;a.h=this;a.a=b;a.c={};return a};function E(){}n(E,D);E.prototype.c=function(a,b){return 8==a.c?!!b:C.prototype.c.apply(this,arguments)};E.prototype.a=function(a,b){return E.o.a.call(this,a,b)};function F(a,b){null!=a&&this.a.apply(this,arguments)}F.prototype.c=\"\";F.prototype.set=function(a){this.c=\"\"+a};F.prototype.a=function(a,b,c){this.c+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.c+=arguments[d];return this};F.prototype.toString=function(){return this.c};/*\n Protocol Buffer 2 Copyright 2008 Google Inc.\n All other code copyright its respective owners.\n Copyright (C) 2010 The Libphonenumber Authors\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction G(){r.call(this)}n(G,r);var qa=null;function H(){r.call(this)}n(H,r);var ra=null;function I(){r.call(this)}n(I,r);var sa=null;\nG.prototype.f=function(){var a=qa;a||(qa=a=B(G,{0:{name:\"NumberFormat\",j:\"i18n.phonenumbers.NumberFormat\"},1:{name:\"pattern\",required:!0,b:9,type:String},2:{name:\"format\",required:!0,b:9,type:String},3:{name:\"leading_digits_pattern\",i:!0,b:9,type:String},4:{name:\"national_prefix_formatting_rule\",b:9,type:String},6:{name:\"national_prefix_optional_when_formatting\",b:8,defaultValue:!1,type:Boolean},5:{name:\"domestic_carrier_code_formatting_rule\",b:9,type:String}}));return a};G.f=G.prototype.f;\nH.prototype.f=function(){var a=ra;a||(ra=a=B(H,{0:{name:\"PhoneNumberDesc\",j:\"i18n.phonenumbers.PhoneNumberDesc\"},2:{name:\"national_number_pattern\",b:9,type:String},9:{name:\"possible_length\",i:!0,b:5,type:Number},10:{name:\"possible_length_local_only\",i:!0,b:5,type:Number},6:{name:\"example_number\",b:9,type:String}}));return a};H.f=H.prototype.f;\nI.prototype.f=function(){var a=sa;a||(sa=a=B(I,{0:{name:\"PhoneMetadata\",j:\"i18n.phonenumbers.PhoneMetadata\"},1:{name:\"general_desc\",b:11,type:H},2:{name:\"fixed_line\",b:11,type:H},3:{name:\"mobile\",b:11,type:H},4:{name:\"toll_free\",b:11,type:H},5:{name:\"premium_rate\",b:11,type:H},6:{name:\"shared_cost\",b:11,type:H},7:{name:\"personal_number\",b:11,type:H},8:{name:\"voip\",b:11,type:H},21:{name:\"pager\",b:11,type:H},25:{name:\"uan\",b:11,type:H},27:{name:\"emergency\",b:11,type:H},28:{name:\"voicemail\",b:11,type:H},\n29:{name:\"short_code\",b:11,type:H},30:{name:\"standard_rate\",b:11,type:H},31:{name:\"carrier_specific\",b:11,type:H},33:{name:\"sms_services\",b:11,type:H},24:{name:\"no_international_dialling\",b:11,type:H},9:{name:\"id\",required:!0,b:9,type:String},10:{name:\"country_code\",b:5,type:Number},11:{name:\"international_prefix\",b:9,type:String},17:{name:\"preferred_international_prefix\",b:9,type:String},12:{name:\"national_prefix\",b:9,type:String},13:{name:\"preferred_extn_prefix\",b:9,type:String},15:{name:\"national_prefix_for_parsing\",\nb:9,type:String},16:{name:\"national_prefix_transform_rule\",b:9,type:String},18:{name:\"same_mobile_and_fixed_line_pattern\",b:8,defaultValue:!1,type:Boolean},19:{name:\"number_format\",i:!0,b:11,type:G},20:{name:\"intl_number_format\",i:!0,b:11,type:G},22:{name:\"main_country_for_code\",b:8,defaultValue:!1,type:Boolean},23:{name:\"leading_digits\",b:9,type:String},26:{name:\"leading_zero_possible\",b:8,defaultValue:!1,type:Boolean}}));return a};I.f=I.prototype.f;function J(){r.call(this)}n(J,r);var ta=null,ua={$:0,w:1,v:5,u:10,s:20};\nJ.prototype.f=function(){var a=ta;a||(ta=a=B(J,{0:{name:\"PhoneNumber\",j:\"i18n.phonenumbers.PhoneNumber\"},1:{name:\"country_code\",required:!0,b:5,type:Number},2:{name:\"national_number\",required:!0,b:4,type:Number},3:{name:\"extension\",b:9,type:String},4:{name:\"italian_leading_zero\",b:8,type:Boolean},8:{name:\"number_of_leading_zeros\",b:5,defaultValue:1,type:Number},5:{name:\"raw_input\",b:9,type:String},6:{name:\"country_code_source\",b:14,defaultValue:0,type:ua},7:{name:\"preferred_domestic_carrier_code\",\nb:9,type:String}}));return a};J.ctor=J;J.ctor.f=J.prototype.f;/*\n Copyright (C) 2010 The Libphonenumber Authors\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar K={1:\"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI\".split(\" \"),7:[\"RU\",\"KZ\"],20:[\"EG\"],27:[\"ZA\"],30:[\"GR\"],31:[\"NL\"],32:[\"BE\"],33:[\"FR\"],34:[\"ES\"],36:[\"HU\"],39:[\"IT\",\"VA\"],40:[\"RO\"],41:[\"CH\"],43:[\"AT\"],44:[\"GB\",\"GG\",\"IM\",\"JE\"],45:[\"DK\"],46:[\"SE\"],47:[\"NO\",\"SJ\"],48:[\"PL\"],49:[\"DE\"],51:[\"PE\"],52:[\"MX\"],53:[\"CU\"],54:[\"AR\"],55:[\"BR\"],56:[\"CL\"],57:[\"CO\"],58:[\"VE\"],60:[\"MY\"],61:[\"AU\",\"CC\",\"CX\"],62:[\"ID\"],63:[\"PH\"],64:[\"NZ\"],65:[\"SG\"],66:[\"TH\"],81:[\"JP\"],82:[\"KR\"],84:[\"VN\"],\n86:[\"CN\"],90:[\"TR\"],91:[\"IN\"],92:[\"PK\"],93:[\"AF\"],94:[\"LK\"],95:[\"MM\"],98:[\"IR\"],211:[\"SS\"],212:[\"MA\",\"EH\"],213:[\"DZ\"],216:[\"TN\"],218:[\"LY\"],220:[\"GM\"],221:[\"SN\"],222:[\"MR\"],223:[\"ML\"],224:[\"GN\"],225:[\"CI\"],226:[\"BF\"],227:[\"NE\"],228:[\"TG\"],229:[\"BJ\"],230:[\"MU\"],231:[\"LR\"],232:[\"SL\"],233:[\"GH\"],234:[\"NG\"],235:[\"TD\"],236:[\"CF\"],237:[\"CM\"],238:[\"CV\"],239:[\"ST\"],240:[\"GQ\"],241:[\"GA\"],242:[\"CG\"],243:[\"CD\"],244:[\"AO\"],245:[\"GW\"],246:[\"IO\"],247:[\"AC\"],248:[\"SC\"],249:[\"SD\"],250:[\"RW\"],251:[\"ET\"],252:[\"SO\"],\n253:[\"DJ\"],254:[\"KE\"],255:[\"TZ\"],256:[\"UG\"],257:[\"BI\"],258:[\"MZ\"],260:[\"ZM\"],261:[\"MG\"],262:[\"RE\",\"YT\"],263:[\"ZW\"],264:[\"NA\"],265:[\"MW\"],266:[\"LS\"],267:[\"BW\"],268:[\"SZ\"],269:[\"KM\"],290:[\"SH\",\"TA\"],291:[\"ER\"],297:[\"AW\"],298:[\"FO\"],299:[\"GL\"],350:[\"GI\"],351:[\"PT\"],352:[\"LU\"],353:[\"IE\"],354:[\"IS\"],355:[\"AL\"],356:[\"MT\"],357:[\"CY\"],358:[\"FI\",\"AX\"],359:[\"BG\"],370:[\"LT\"],371:[\"LV\"],372:[\"EE\"],373:[\"MD\"],374:[\"AM\"],375:[\"BY\"],376:[\"AD\"],377:[\"MC\"],378:[\"SM\"],380:[\"UA\"],381:[\"RS\"],382:[\"ME\"],383:[\"XK\"],385:[\"HR\"],\n386:[\"SI\"],387:[\"BA\"],389:[\"MK\"],420:[\"CZ\"],421:[\"SK\"],423:[\"LI\"],500:[\"FK\"],501:[\"BZ\"],502:[\"GT\"],503:[\"SV\"],504:[\"HN\"],505:[\"NI\"],506:[\"CR\"],507:[\"PA\"],508:[\"PM\"],509:[\"HT\"],590:[\"GP\",\"BL\",\"MF\"],591:[\"BO\"],592:[\"GY\"],593:[\"EC\"],594:[\"GF\"],595:[\"PY\"],596:[\"MQ\"],597:[\"SR\"],598:[\"UY\"],599:[\"CW\",\"BQ\"],670:[\"TL\"],672:[\"NF\"],673:[\"BN\"],674:[\"NR\"],675:[\"PG\"],676:[\"TO\"],677:[\"SB\"],678:[\"VU\"],679:[\"FJ\"],680:[\"PW\"],681:[\"WF\"],682:[\"CK\"],683:[\"NU\"],685:[\"WS\"],686:[\"KI\"],687:[\"NC\"],688:[\"TV\"],689:[\"PF\"],690:[\"TK\"],\n691:[\"FM\"],692:[\"MH\"],800:[\"001\"],808:[\"001\"],850:[\"KP\"],852:[\"HK\"],853:[\"MO\"],855:[\"KH\"],856:[\"LA\"],870:[\"001\"],878:[\"001\"],880:[\"BD\"],881:[\"001\"],882:[\"001\"],883:[\"001\"],886:[\"TW\"],888:[\"001\"],960:[\"MV\"],961:[\"LB\"],962:[\"JO\"],963:[\"SY\"],964:[\"IQ\"],965:[\"KW\"],966:[\"SA\"],967:[\"YE\"],968:[\"OM\"],970:[\"PS\"],971:[\"AE\"],972:[\"IL\"],973:[\"BH\"],974:[\"QA\"],975:[\"BT\"],976:[\"MN\"],977:[\"NP\"],979:[\"001\"],992:[\"TJ\"],993:[\"TM\"],994:[\"AZ\"],995:[\"GE\"],996:[\"KG\"],998:[\"UZ\"]},wa={AC:[,[,,\"[46]\\\\d{4}|[01589]\\\\d{5}\",,\n,,,,,[5,6]],[,,\"6[2-467]\\\\d{3}\",,,,\"62889\",,,[5]],[,,\"4\\\\d{4}\",,,,\"40123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AC\",247,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[01589]\\\\d{5}\",,,,\"542011\",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,\"[16]\\\\d{5,8}|[37-9]\\\\d{5}\",,,,,,,[6,8,9]],[,,\"[78]\\\\d{5}\",,,,\"712345\",,,[6]],[,,\"(?:3\\\\d|6(?:[0-8]|9(?:0\\\\d{2})?))\\\\d{4}\",,,,\"312345\",,,[6,9]],[,,\"180[02]\\\\d{4}\",,,,\"18001234\",,,[8]],[,,\"[19]\\\\d{5}\",,,,\"912345\",,,[6]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AD\",376,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[136-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"180\",\"180[02]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"690\"]]],,[,,,,,,,,,[-1]],,,[,,\"1800\\\\d{4}\",,,,\"18000000\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,\"[2-79]\\\\d{7,8}|800\\\\d{2,9}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"[2-4679][2-8]\\\\d{6}\",,,,\"22345678\",,,[8],[7]],[,,\"5[024-68]\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"400\\\\d{6}|800\\\\d{2,9}\",,,,\"800123456\"],\n[,,\"900[02]\\\\d{5}\",,,,\"900234567\",,,[9]],[,,\"700[05]\\\\d{5}\",,,,\"700012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AE\",971,\"00\",\"0\",,,\"0\",,,,[[,\"([2-4679])(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-4679][2-8]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"([479]00)(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]00\"],\"$1\"],[,\"([68]00)(\\\\d{2,9})\",\"$1 $2\",[\"[68]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"600[25]\\\\d{5}\",,,,\"600212345\",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,\"[2-7]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\",\n,,,\"234567890\",,,,[7]],[,,\"7(?:[014-9]\\\\d|2[89]|3[01])\\\\d{6}\",,,,\"701234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AF\",93,\"00\",\"0\",,,\"0\",,,,[[,\"([2-7]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\",,,,\"2684601234\",,,,[7]],[,,\"268(?:464|7(?:1[3-9]|2\\\\d|3[246]|64|[78][0-689]))\\\\d{4}\",,,,\"2684641234\",,,,[7]],\n[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"26848[01]\\\\d{4}\",,,,\"2684801234\",,,,[7]],\"AG\",1,\"011\",\"1\",,,\"1\",,,,,,[,,\"26840[69]\\\\d{4}\",,,,\"2684061234\",,,,[7]],,\"268\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"2644(?:6[12]|9[78])\\\\d{4}\",,,,\"2644612345\",,,,[7]],[,,\"264(?:235|476|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\",\n,,,\"2642351234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AI\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"264\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,\"[2-57]\\\\d{7}|6\\\\d{8}|8\\\\d{5,7}|9\\\\d{5}\",,,,,,,[6,7,8,9],[5]],[,,\"(?:[2358](?:[16-9]\\\\d[2-9]|[2-5][2-9]\\\\d)|4(?:[2-57-9][2-9]\\\\d|6\\\\d{2}))\\\\d{4}\",,,,\"22345678\",,,[8],[5,\n6,7]],[,,\"6(?:[689][2-9]|7[2-6])\\\\d{6}\",,,,\"662123456\",,,[9]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"900[1-9]\\\\d{2}\",,,,\"900123\",,,[6]],[,,\"808[1-9]\\\\d{2}\",,,,\"808123\",,,[6]],[,,\"700[2-9]\\\\d{4}\",,,,\"70021234\",,,[8]],[,,,,,,,,,[-1]],\"AL\",355,\"00\",\"0\",,,\"0\",,,,[[,\"(4)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[0-6]\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"[235][16-9]|[79]|8[016-9]\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,\"[1-9]\\\\d{7}\",,,,,,,[8],[5,6]],[,,\"(?:1[0-2]\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2|47\\\\d)\\\\d{5}\",,,,\"10123456\",,,,[5,6]],[,,\"(?:4[1349]|55|77|88|9[13-9])\\\\d{6}\",,,,\"77123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[016]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-4]\\\\d{5}\",,,,\"80112345\"],[,,,,,,,,,[-1]],[,,\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|90)\\\\d{4}\",,,,\"60271234\"],\"AM\",374,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\n\"$1 $2\",[\"1|47\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4[1349]|[5-7]|88|9[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8|90\"],\"0 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,\"[29]\\\\d{8}\",,,,,,,[9]],[,,\"2\\\\d(?:[26-9]\\\\d|\\\\d[26-9])\\\\d{5}\",,,,\"222123456\"],[,,\"9[1-49]\\\\d{7}\",,,,\"923123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AO\",244,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AR:[,[,,\"11\\\\d{8}|[2368]\\\\d{9}|9\\\\d{10}\",,,,,,,[10,11],[6,7,8]],[,,\"11\\\\d{8}|(?:2(?:2(?:[013]\\\\d|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:[07]\\\\d|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|6[013-9])|4(?:7[3-8]|9\\\\d)|6(?:[01346]\\\\d|2[24-6]|5[15-8])|80\\\\d|9(?:[012789]\\\\d|3[1-6]|4[02-9]|5[234]|6[2-46]))|3(?:3(?:2[79]|6\\\\d|8[2578])|4(?:0[0124-9]|[1-357]\\\\d|4[24-7]|6[02-9]|8[0-79]|9[1236-8])|5(?:[138]\\\\d|2[1245]|4[1-9]|6[2-4]|7[1-6])|6[24]\\\\d|7(?:[069]\\\\d|1[1568]|2[013-9]|3[145]|4[0-35-9]|5[14-8]|7[2-57]|8[0-24-9])|8(?:[01578]\\\\d|2[15-7]|3[0-24-9]|4[13-6]|6[1-357-9]|9[124]))|670\\\\d)\\\\d{6}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"675\\\\d{7}|9(?:11[2-9]\\\\d{7}|(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[12358]|5[138]|6[24]|7[069]|8[013578]))[2-9]\\\\d{6}|\\\\d{4}[2-9]\\\\d{5})\",,,,\"91123456789\",,,,[6,7,8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"60[04579]\\\\d{7}\",,,,\"6001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AR\",54,\"00\",\"0\",,,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))?15)?\",\n\"9$1\",,,[[,\"([68]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"],\"$1\"],[,\"(9)(11)(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"911\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-4689]|3[3-8])\",\"9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))\",\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\",\n\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\"],\"0$1\"],[,\"(9)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9[23]\"],\"0$1\"],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"11\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\",\n\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d{3})\",\"$1\",[\"1[0-2]|911\"],\"$1\"]],[[,\"([68]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(9)(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"911\"]],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9(?:2[2-4689]|3[3-8])\",\"9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))\",\n\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\",\"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))\"]],[,\"(9)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9[23]\"]],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"11\"],\"0$1\",\n,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\",\"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\",,,,\"6846221234\",,,,[7]],[,,\"684(?:2(?:5[2468]|72)|7(?:3[13]|70))\\\\d{4}\",,,,\"6847331234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AS\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"684\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,\"[1-9]\\\\d{3,12}\",,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,\"1\\\\d{3,12}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-8]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|63|7[1368]|8[2457])|5(?:12|2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[1-35-8]|5[468]|62)|7(?:2[1-8]|3[25]|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{3,10}\",\n,,,\"1234567890\",,,,[3]],[,,\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",,,,\"664123456\",,,[7,8,9,10,11,12,13]],[,,\"800\\\\d{6,10}\",,,,\"800123456\",,,[9,10,11,12,13]],[,,\"9(?:0[01]|3[019])\\\\d{6,10}\",,,,\"900123456\",,,[9,10,11,12,13]],[,,\"8(?:10\\\\d|2(?:[01]\\\\d|8\\\\d?))\\\\d{5,9}\",,,,\"810123456\",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,\"780\\\\d{6,10}\",,,,\"780123456\",,,[9,10,11,12,13]],\"AT\",43,\"00\",\"0\",,,\"0\",,,,[[,\"(116\\\\d{3})\",\"$1\",[\"116\"],\"$1\"],[,\"(1)(\\\\d{3,12})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3,5})\",\"$1 $2\",\n[\"5[079]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5[079]\"],\"0$1\"],[,\"(5\\\\d)(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:[28]0|32)|[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-9]|5[468])|7(?:[24][1-8]|35|[5-79])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"5(?:(?:0[1-9]|17)\\\\d{2,10}|[79]\\\\d{3,11})|720\\\\d{6,10}\",,,,\"50123\",,,[5,6,7,8,9,10,11,12,13]],,,[,,,,,,\n,,,[-1]]],AU:[,[,,\"1\\\\d{4,9}|[2-578]\\\\d{8}\",,,,,,,[5,6,7,8,9,10]],[,,\"[237]\\\\d{8}|8(?:51(?:0(?:0[03-9]|[1247]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\\\d|4[0-4]))|[6-8]\\\\d{4}|9(?:[02-9]\\\\d{3}|1(?:[0-57-9]\\\\d{2}|6[0135-9]\\\\d)))\\\\d{3}\",,,,\"212345678\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12457-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],\n[,,\"13(?:00\\\\d{3}|45[0-4]|\\\\d)\\\\d{3}\",,,,\"1300123456\",,,[6,8,10]],[,,\"500\\\\d{6}\",,,,\"500123456\",,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"AU\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011)|001[14-689]\",\"0\",,,\"0\",,\"0011\",,[[,\"([2378])(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|[45]\"],\"0$1\"],[,\"(16)(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(16)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(1[389]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[389]0\",\"1(?:[38]0|9)0\"]],\n[,\"(180)(2\\\\d{3})\",\"$1 $2\",[\"180\",\"1802\"]],[,\"(19\\\\d)(\\\\d{3})\",\"$1 $2\",[\"19[13]\"]],[,\"(19\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"19[679]\"]],[,\"(13)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"13[1-9]\"]]],,[,,\"16\\\\d{3,7}\",,,,\"1612345\",,,[5,6,7,8,9]],1,,[,,\"1(?:3(?:00\\\\d{3}|45[0-4]|\\\\d)\\\\d{3}|80(?:0\\\\d{6}|2\\\\d{3}))\",,,,\"1300123456\",,,[6,7,8,10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,\"[25-9]\\\\d{6}\",,,,,,,[7]],[,,\"5(?:2\\\\d|8[1-9])\\\\d{4}\",,,,\"5212345\"],[,,\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\",\n,,,\"5601234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,\"900\\\\d{4}\",,,,\"9001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"28\\\\d{5}|501\\\\d{4}\",,,,\"5011234\"],\"AW\",297,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,\"1\\\\d{5,11}|[35]\\\\d{5,9}|2\\\\d{4,9}|4\\\\d{5,10}|6\\\\d{7,9}|7\\\\d{4,9}|8\\\\d{6,9}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"18[1-8]\\\\d{3,9}\",,,,\"181234567\",,,[6,7,8,9,10,11,12]],[,,\"4\\\\d{5,10}|50\\\\d{4,8}\",,,,\"412345678\",,,[6,7,8,9,10,11]],[,,\"800\\\\d{4,7}\",\n,,,\"8001234567\",,,[7,8,9,10]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AX\",358,\"00|99(?:[01469]|5(?:11|3[23]|41|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,,,[,,,,,,,,,[-1]],,,[,,\"[13]00\\\\d{3,7}|2(?:0(?:0\\\\d{3,7}|2[023]\\\\d{1,6}|9[89]\\\\d{1,6}))|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"1001234\",,,[5,6,7,8,9,10]],[,,\"[13]0\\\\d{4,8}|2(?:0(?:[016-8]\\\\d{3,7}|[2-59]\\\\d{2,7})|9\\\\d{4,8})|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{2,7})\",\n,,,\"10112345\",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],AZ:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:1[28]\\\\d{3}|2(?:02|1[24]|2[2-4]|33|[45]2|6[23])\\\\d{2}|365(?:[0-46-9]\\\\d|5[0-35-9]))\\\\d{4}\",,,,\"123123456\",,,,[7]],[,,\"(?:36554|(?:4[04]|5[015]|60|7[07])\\\\d{3})\\\\d{4}\",,,,\"401234567\"],[,,\"88\\\\d{7}\",,,,\"881234567\"],[,,\"900200\\\\d{3}\",,,,\"900200123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AZ\",994,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2(?:[0-36]|[45]2)|365\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[4-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,\"[3-9]\\\\d{7,8}\",,,,,,,[8,9],[6]],[,,\"(?:3(?:[05679][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",,,,\"30212345\",,,[8],[6]],[,,\"6(?:0(?:3\\\\d|40)|[1-356]\\\\d|44[0-6]|71[137])\\\\d{5}\",,,,\"61123456\"],\n[,,\"8[08]\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[0246]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"8[12]\\\\d{6}\",,,,\"82123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BA\",387,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-356]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6[047]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70(?:3[0146]|[56]0)\\\\d{4}\",,,,\"70341234\",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,\"[2589]\\\\d{9}\",,,,\n,,,[10],[7]],[,,\"246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7(?:37|57)|9(?:1[89]|63))\\\\d{4}\",,,,\"2464123456\",,,,[7]],[,,\"246(?:2(?:[356]\\\\d|4[0-57-9]|8[0-79])|45\\\\d|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d{4}\",,,,\"2462501234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900\\\\d{7}|246976\\\\d{4}\",,,,\"9002123456\",,,,[7]],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"24631\\\\d{5}\",,,,\"2463101234\",,,,\n[7]],\"BB\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"246\",[,,,,,,,,,[-1]],[,,\"246(?:292|367|4(?:1[7-9]|3[01]|44|67)|736)\\\\d{4}\",,,,\"2464301234\",,,,[7]],,,[,,,,,,,,,[-1]]],BD:[,[,,\"[2-79]\\\\d{5,9}|1\\\\d{9}|8[0-7]\\\\d{4,8}\",,,,,,,[6,7,8,9,10]],[,,\"2(?:[45]\\\\d{3}|7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|[139][1-6]|2[0157-9]|41|6[1-35]|7[1-5]|8[1-8]|90)|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0167]|7[15]|8[0146-9]))\\\\d{4}|3(?:12?[5-7]\\\\d{2}|0(?:2(?:[025-79]\\\\d|[348]\\\\d{1,2})|3(?:[2-4]\\\\d|[56]\\\\d?))|2(?:1\\\\d{2}|2(?:[12]\\\\d|[35]\\\\d{1,2}|4\\\\d?))|3(?:1\\\\d{2}|2(?:[2356]\\\\d|4\\\\d{1,2}))|4(?:1\\\\d{2}|2(?:2\\\\d{1,2}|[47]|5\\\\d{2}))|5(?:1\\\\d{2}|29)|[67]1\\\\d{2}|8(?:1\\\\d{2}|2(?:2\\\\d{2}|3|4\\\\d)))\\\\d{3}|4(?:0(?:2(?:[09]\\\\d|7)|33\\\\d{2})|1\\\\d{3}|2(?:1\\\\d{2}|2(?:[25]\\\\d?|[348]\\\\d|[67]\\\\d{1,2}))|3(?:1\\\\d{2}(?:\\\\d{2})?|2(?:[045]\\\\d|[236-9]\\\\d{1,2})|32\\\\d{2})|4(?:[18]\\\\d{2}|2(?:[2-46]\\\\d{2}|3)|5[25]\\\\d{2})|5(?:1\\\\d{2}|2(?:3\\\\d|5))|6(?:[18]\\\\d{2}|2(?:3(?:\\\\d{2})?|[46]\\\\d{1,2}|5\\\\d{2}|7\\\\d)|5(?:3\\\\d?|4\\\\d|[57]\\\\d{1,2}|6\\\\d{2}|8))|71\\\\d{2}|8(?:[18]\\\\d{2}|23\\\\d{2}|54\\\\d{2})|9(?:[18]\\\\d{2}|2[2-5]\\\\d{2}|53\\\\d{1,2}))\\\\d{3}|5(?:02[03489]\\\\d{2}|1\\\\d{2}|2(?:1\\\\d{2}|2(?:2(?:\\\\d{2})?|[457]\\\\d{2}))|3(?:1\\\\d{2}|2(?:[37](?:\\\\d{2})?|[569]\\\\d{2}))|4(?:1\\\\d{2}|2[46]\\\\d{2})|5(?:1\\\\d{2}|26\\\\d{1,2})|6(?:[18]\\\\d{2}|2|53\\\\d{2})|7(?:1|24)\\\\d{2}|8(?:1|26)\\\\d{2}|91\\\\d{2})\\\\d{3}|6(?:0(?:1\\\\d{2}|2(?:3\\\\d{2}|4\\\\d{1,2}))|2(?:2[2-5]\\\\d{2}|5(?:[3-5]\\\\d{2}|7)|8\\\\d{2})|3(?:1|2[3478])\\\\d{2}|4(?:1|2[34])\\\\d{2}|5(?:1|2[47])\\\\d{2}|6(?:[18]\\\\d{2}|6(?:2(?:2\\\\d|[34]\\\\d{2})|5(?:[24]\\\\d{2}|3\\\\d|5\\\\d{1,2})))|72[2-5]\\\\d{2}|8(?:1\\\\d{2}|2[2-5]\\\\d{2})|9(?:1\\\\d{2}|2[2-6]\\\\d{2}))\\\\d{3}|7(?:(?:02|[3-589]1|6[12]|72[24])\\\\d{2}|21\\\\d{3}|32)\\\\d{3}|8(?:(?:4[12]|[5-7]2|1\\\\d?)|(?:0|3[12]|[5-7]1|217)\\\\d)\\\\d{4}|9(?:[35]1|(?:[024]2|81)\\\\d|(?:1|[24]1)\\\\d{2})\\\\d{3}\",\n,,,\"27111234\",,,[6,7,8,9]],[,,\"(?:1[13-9]\\\\d|(?:3[78]|44)[02-9]|6(?:44|6[02-9]))\\\\d{7}\",,,,\"1812345678\",,,[10]],[,,\"80[03]\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"96(?:0[469]|1[0-4]|3[389]|6[69]|7[78])\\\\d{6}\",,,,\"9604123456\",,,[10]],\"BD\",880,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"[3-79]1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"1|3(?:0|[2-58]2)|4(?:0|[25]2|3[23]|[4689][25])|5(?:[02-578]2|6[25])|6(?:[0347-9]2|[26][25])|7[02-9]2|8(?:[023][23]|[4-7]2)|9(?:[02][23]|[458]2|6[01367])\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"[3-79][2-9]|8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,\"[1-9]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}|80[2-8]\\\\d{5}\",,,,\"12345678\",,,[8]],[,,\"4(?:56|6[0135-8]|[79]\\\\d|8[3-9])\\\\d{6}\",,,,\"470123456\",,,[9]],[,,\"800[1-9]\\\\d{4}\",,,,\"80012345\",,,[8]],[,,\"(?:70(?:2[0-57]|3[0457]|44|69|7[0579])|90(?:0[0-35-8]|1[36]|2[0-3568]|3[0135689]|4[2-68]|5[1-68]|6[0-378]|7[23568]|9[34679]))\\\\d{4}\",\n,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BE\",32,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4[5-9]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]|4[23]|9[2-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[156]|7[018]|8(?:0[1-9]|[1-79])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"78[0-7]\\\\d{5}\",,,,\"78102345\",,,[8]],,,[,,,,,,,,,[-1]]],BF:[,[,,\"[25-7]\\\\d{7}\",\n,,,,,,[8]],[,,\"2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\",,,,\"20491234\"],[,,\"(?:5[124-8]|[67]\\\\d)\\\\d{6}\",,,,\"70123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BF\",226,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,\"[23567]\\\\d{5,7}|[489]\\\\d{6,8}\",,,,,,,[6,7,8,9],[4,5]],[,,\"2\\\\d{5,7}|(?:[36]\\\\d|5[1-9]|8[1-6]|9[1-7])\\\\d{5,6}|(?:4(?:[124-7]\\\\d|3[1-6])|7(?:0[1-9]|[1-9]\\\\d))\\\\d{4,5}\",\n,,,\"2123456\",,,[6,7,8],[4,5]],[,,\"(?:8[7-9]\\\\d|9(?:8\\\\d|9[69]))\\\\d{6}|4(?:3[0789]|8\\\\d)\\\\d{5}\",,,,\"48123456\",,,[8,9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,\"700\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],\"BG\",359,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(2)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[124-7]|70[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[124-7]|70[1-9]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[78]00\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"99[69]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"48|8[7-9]|9[08]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,\"[136-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9])|9[69][69])|7(?:1(?:11|78)|7\\\\d{2}))\\\\d{4}\",\n,,,\"17001234\"],[,,\"(?:3(?:[1-4679]\\\\d|5[013-69]|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:[69]\\\\d|3[03-9]|7[0-6])))\\\\d{4}\",,,,\"36001234\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"(?:87|9[014578])\\\\d{6}\",,,,\"90123456\"],[,,\"84\\\\d{6}\",,,,\"84123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BH\",973,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,\"[2367]\\\\d{7}\",,,,,,,[8]],[,,\"22\\\\d{6}\",,,,\"22201234\"],[,,\"(?:29|31|6[189]|7[125-9])\\\\d{6}\",,,,\"79561234\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BI\",257,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,\"[2689]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:02|1[037]|2[45]|3[68])\\\\d{5}\",,,,\"20211234\"],[,,\"(?:6\\\\d|9[03-9])\\\\d{6}\",,,,\"90011234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"857[58]\\\\d{4}\",,,,\"85751234\"],\"BJ\",229,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[2689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"81\\\\d{6}\",,,,\"81123456\"],,,[,,,,,,,,,[-1]]],BL:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:2[7-9]|5[12]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BL\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,\"[4589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"441(?:2(?:02|23|61|[3479]\\\\d)|[46]\\\\d{2}|5(?:4\\\\d|60|89)|824)\\\\d{4}\",\n,,,\"4412345678\",,,,[7]],[,,\"441(?:[37]\\\\d|5[0-39])\\\\d{5}\",,,,\"4413701234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"441\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,\"[2-578]\\\\d{6}\",,,,,,,[7]],[,,\"2(?:[013-9]\\\\d|2[0-7])\\\\d{4}|[3-5]\\\\d{6}\",,,,\"2345678\"],[,,\"22[89]\\\\d{4}|[78]\\\\d{6}\",\n,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BN\",673,\"00\",,,,,,,,[[,\"([2-578]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,\"[23467]\\\\d{7}|8\\\\d{8}\",,,,,,,[8,9],[7]],[,,\"(?:2(?:2\\\\d{2}|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d{2}|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:2\\\\d|3[234]|4[248]|5[24]|6[2-6]|7\\\\d))|4(?:4\\\\d{2}|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",\n,,,\"22123456\",,,[8],[7]],[,,\"[67]\\\\d{7}\",,,,\"71234567\",,,[8]],[,,\"80017\\\\d{4}\",,,,\"800171234\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BO\",591,\"00(1\\\\d)?\",\"0\",,,\"0(1\\\\d)?\",,,,[[,\"([234])(\\\\d{7})\",\"$1 $2\",[\"[2-4]\"],,\"0$CC $1\"],[,\"([67]\\\\d{7})\",\"$1\",[\"[67]\"],,\"0$CC $1\"],[,\"(800)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"],,\"0$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,\"[347]\\\\d{6}\",,,,,,,[7]],[,,\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|50)\\\\d)\\\\d{3}\",\n,,,\"7151234\"],[,,\"(?:31(?:8[14-8]|9[14578])|416[145-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\",,,,\"3181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BQ\",599,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,\"[1-46-9]\\\\d{7,10}|5(?:[0-4]\\\\d{7,9}|5(?:[2-8]\\\\d{7}|9\\\\d{7,8}))\",,,,,,,[8,9,10,11]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",,,,\"1123456789\",,,[10],[8]],[,,\"(?:[189][1-9]|2[12478])(?:7|9\\\\d)\\\\d{7}|(?:3[1-578]|[46][1-9]|5[13-5]|7[13-579])(?:[6-9]|9\\\\d)\\\\d{7}\",\n,,,\"11961234567\",,,[10,11],[8]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,,[9,10]],[,,\"(?:300|[59]00\\\\d?)\\\\d{6}\",,,,\"300123456\",,,[9,10]],[,,\"(?:300\\\\d(?:\\\\d{2})?|4(?:0(?:0\\\\d|20)|370))\\\\d{4}\",,,,\"40041234\",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BR\",55,\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"0\",,,\"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"300|4(?:0(?:0|20)|370)\"]],[,\"([3589]00)(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3589]00\"],\"0$1\"],[,\n\"(\\\\d{3,5})\",\"$1\",[\"1[125689]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-9](?:0[1-9]|[1-9])\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"9(?:0[1-9]|[1-9])\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]9\"],\"($1)\",\"0 $CC ($1)\"]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"300|4(?:0(?:0|20)|370)\"]],[,\"([3589]00)(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3589]00\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]\"],\"($1)\",\"0 $CC ($1)\"],\n[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[1-9][1-9]9\"],\"($1)\",\"0 $CC ($1)\"]],[,,,,,,,,,[-1]],,,[,,\"(?:300\\\\d|40(?:0\\\\d|20))\\\\d{4}\",,,,\"40041234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\",,,,\"2423456789\",,,,[7]],[,,\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\",\n,,,\"2423591234\",,,,[7]],[,,\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\",,,,[7]],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BS\",1,\"011?\",\"1\",,,\"1\",,\"011\",,,,[,,,,,,,,,[-1]],,\"242\",[,,,,,,,,,[-1]],[,,\"242225[0-46-9]\\\\d{3}\",,,,\"2422250123\"],,,[,,,,,,,,,[-1]]],BT:[,[,,\"[1-8]\\\\d{6,7}\",,,,,,,[7,8],[6]],[,,\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",,,,\"2345678\",,,[7],[6]],\n[,,\"(?:1[67]|77)\\\\d{6}\",,,,\"17123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BT\",975,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1|77\"]],[,\"([2-8])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,\"[2-79]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[01])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",\n,,,\"2401234\",,,[7]],[,,\"7(?:[1-6]\\\\d|7[014-8])\\\\d{5}\",,,,\"71123456\",,,[8]],[,,,,,,,,,[-1]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"79[12][01]\\\\d{4}\",,,,\"79101234\",,,[8]],\"BW\",267,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-6]\"]],[,\"(7\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[,\"(90)(\\\\d{5})\",\"$1 $2\",[\"90\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,\"[1-4]\\\\d{8}|8(?:0(?:0\\\\d{3,7}|[13]\\\\d{7})|(?:10|20\\\\d)\\\\d{7})|9\\\\d{9,10}\",,,,,,,[6,\n7,8,9,10,11],[5]],[,,\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d{2})|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",,,,\"152450911\",,,[9],[5,6,7]],[,,\"(?:2(?:5[5679]|9[1-9])|33\\\\d|44\\\\d)\\\\d{6}\",,,,\"294911911\",,,[9]],[,,\"8(?:0[13]|20\\\\d)\\\\d{7}|800\\\\d{3,7}\",,,,\"8011234567\"],[,,\"(?:810|902)\\\\d{7}\",,,,\"9021234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"249\\\\d{6}\",,,,\"249123456\",,,[9]],\"BY\",375,\"810\",\"8\",,,\"8?0?\",,\"8~10\",\n,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"17[0-3589]|2[4-9]|[34]\",\"17(?:[02358]|1[0-2]|9[0189])|2[4-9]|[34]\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:5[24]|6[235]|7[467])|2(?:1[246]|2[25]|3[26])\",\"1(?:5[24]|6(?:2|3[04-9]|5[0346-9])|7(?:[46]|7[37-9]))|2(?:1[246]|2[25]|3[26])\"],\"8 0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\n\"8 0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8[01]|9\"],\"8 $1\"],[,\"(82\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"82\"],\"8 $1\"],[,\"(800)(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[,\"(800)(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"8(?:0[13]|10|20\\\\d)\\\\d{7}|800\\\\d{3,7}|902\\\\d{7}\",,,,\"82012345678\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,\"[2-8]\\\\d{6}|0\\\\d{10}\",,,,,,,[7,11]],[,,\"(?:2(?:[02]\\\\d|36)|[3-58][02]\\\\d|7(?:[02]\\\\d|32))\\\\d{4}\",,,,\"2221234\",,,[7]],[,,\"6[0-35-7]\\\\d{5}\",,,,\"6221234\",\n,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234123\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BZ\",501,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(0)(800)(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"080\",\"0800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,\"[2-9]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",\n,,,\"5062345678\",,,,[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"2042345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"CA\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],CC:[,[,,\"[1458]\\\\d{5,9}\",,,,,,,[6,7,8,9,10]],[,,\"8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:08|22|68)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",,,,\"891621234\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12547-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],[,,\"13(?:00\\\\d{2})?\\\\d{4}\",,,,\"1300123456\",,,[6,10]],\n[,,\"500\\\\d{6}\",,,,\"500123456\",,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"CC\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]\",\"0\",,,\"0\",,\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,\"[2-6]\\\\d{6}|[18]\\\\d{6,8}|9\\\\d{8}\",,,,,,,[7,9]],[,,\"1(?:2\\\\d{7}|\\\\d{6})|[2-6]\\\\d{6}\",,,,\"1234567\"],[,,\"8(?:[0-2459]\\\\d{2}|8)\\\\d{5}|9[017-9]\\\\d{7}\",,,,\"991234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CD\",243,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"12\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[0-2459]|9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,\"[278]\\\\d{7}\",,,,,,,[8]],[,,\"2[12]\\\\d{6}\",,,,\"21612345\"],[,,\"7[0257]\\\\d{6}\",,,,\"70012345\"],[,,,,,,,,,[-1]],[,,\"8776\\\\d{4}\",,,,\"87761234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CF\",236,\"00\",\n,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,\"[028]\\\\d{8}\",,,,,,,[9]],[,,\"222[1-589]\\\\d{5}\",,,,\"222123456\"],[,,\"0[14-6]\\\\d{7}\",,,,\"061234567\"],[,,,,,,,,,[-1]],[,,\"80(?:0\\\\d{2}|11[0-4])\\\\d{4}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CG\",242,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"801\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,\"[2-9]\\\\d{8}|860\\\\d{9}\",,,,,,,[9,12]],[,,\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"7[5-9]\\\\d{7}\",,,,\"781234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[016]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"84[0248]\\\\d{6}\",,,,\"840123456\",,,[9]],[,,\"878\\\\d{6}\",,,,\"878123456\",,,[9]],[,,,,,,,,,[-1]],\"CH\",41,\"00\",\"0\",,,\"0\",,,,[[,\"([2-9]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[2-7]|[89]1\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"860\"],\"0$1\"]],,[,,\"74[0248]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"5[18]\\\\d{7}\",,,,\"581234567\",,,[9]],,,[,,\"860\\\\d{9}\",,,,\"860123456789\",,,[12]]],CI:[,[,,\"[02-8]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\\\d{5}\",,,,\"21234567\"],[,,\"(?:0[1-9]|[45]\\\\d|6[014-9]|7[124-9]|8[4-9])\\\\d{6}\",\n,,,\"01234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CI\",225,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CK:[,[,,\"[2-8]\\\\d{4}\",,,,,,,[5]],[,,\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\",,,,\"21234\"],[,,\"[5-8]\\\\d{4}\",,,,\"71234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CK\",682,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,\"1230\\\\d{7}|[2-46-9]\\\\d{8,10}|5[1-3578]\\\\d{7}\",,,,,,,[9,10,11]],[,,\"2(?:1962\\\\d{4}|2\\\\d{7}|32[0-467]\\\\d{5})|(?:3[2-5]\\\\d|[47][1-35]\\\\d|5[1-3578]\\\\d|6[13-57]\\\\d|8(?:0[1-9]|[1-9]\\\\d)|9[3-9]\\\\d)\\\\d{6}\",,,,\"221234567\",,,[9]],[,,\"2(?:1962\\\\d{4}|2\\\\d{7}|32[0-467]\\\\d{5})|(?:3[2-5]\\\\d|[47][1-35]\\\\d|5[1-3578]\\\\d|6[13-57]\\\\d|8(?:0[1-9]|[1-9]\\\\d)|9[3-9]\\\\d)\\\\d{6}\",,,,\"961234567\",,,[9]],[,,\"800\\\\d{6}|1230\\\\d{7}\",,,,\"800123456\",,,[9,11]],[,,,,,,,,,[-1]],\n[,,\"600\\\\d{7,8}\",,,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,\"44\\\\d{7}\",,,,\"441234567\",,,[9]],\"CL\",56,\"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0\",,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[23]\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[357]|4[1-35]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(9)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]],[,\"(44)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"([68]00)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[68]00\"]],[,\"(600)(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",\n[\"600\"]],[,\"(1230)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"123\",\"1230\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\"],\"($1)\"],[,\"(\\\\d{4,5})\",\"$1\",[\"[1-9]\"],\"$1\"]],[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[23]\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[357]|4[1-35]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(9)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]],[,\"(44)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"([68]00)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[68]00\"]],[,\"(600)(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"600\"]],[,\"(1230)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"123\",\"1230\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\"],\"($1)\"]],[,,,,,,,,,[-1]],,,[,,\"600\\\\d{7,8}\",,,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,\"[2368]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"2(?:22|33|4[23])\\\\d{6}\",,,,\"222123456\",,,[9]],[,,\"6[5-9]\\\\d{7}\",,,,\"671234567\",,,[9]],[,,\"88\\\\d{6}\",,,,\"88012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CM\",237,\"00\",,,,,,,,[[,\"([26])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[23]|88\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,\"[1-7]\\\\d{6,11}|8[0-357-9]\\\\d{6,9}|9\\\\d{7,10}\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"21(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{8,10})|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98))(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{8})|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-4689]|6[2368]|9[02-9])|8(?:078|1[236-8]|2[5-7]|3\\\\d|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100\\\\d{2}|95\\\\d{3,4}|\\\\d{7})\",\n,,,\"1012345678\",,,,[5,6]],[,,\"1(?:[38]\\\\d{3}|4[57]\\\\d{2}|5[0-35-9]\\\\d{2}|66\\\\d{2}|7(?:[0-35-8]\\\\d{2}|40[0-5])|9[89]\\\\d{2})\\\\d{6}\",,,,\"13123456789\",,,[11]],[,,\"(?:10)?800\\\\d{7}\",,,,\"8001234567\",,,[10,12]],[,,\"16[08]\\\\d{5}\",,,,\"16812345\",,,[8]],[,,\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[4789]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[3678]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",\n,,,\"4001234567\",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CN\",86,\"(?:1(?:[12]\\\\d{3}|79\\\\d{2}|9[0-7]\\\\d{2}))?00\",\"0\",,,\"(1(?:[12]\\\\d{3}|79\\\\d{2}|9[0-7]\\\\d{2}))|0\",,\"00\",,[[,\"([48]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[48]00\"]],[,\"(\\\\d{5,6})\",\"$1\",[\"100|95\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2\\\\d)[19]\",\"(?:10|2\\\\d)(?:10|9[56])\",\"(?:10|2\\\\d)(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[3-9]\",\"[3-9]\\\\d\\\\d[19]\",\"[3-9]\\\\d\\\\d(?:10|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3,4})(\\\\d{4})\",\n\"$1 $2\",[\"[2-9]\"]],[,\"(21)(\\\\d{4})(\\\\d{4,6})\",\"$1 $2 $3\",[\"21\"],\"0$1\",\"$CC $1\",1],[,\"([12]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10[1-9]|2[02-9]\",\"10[1-9]|2[02-9]\",\"10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"807\",\"8078\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[3-57-9]|66)\"],,\"$CC $1\"],[,\"(10800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"108\",\"1080\",\"10800\"]],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"950\"]]],[[,\"([48]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[48]00\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\n\"$1 $2\",[\"(?:10|2\\\\d)[19]\",\"(?:10|2\\\\d)(?:10|9[56])\",\"(?:10|2\\\\d)(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[3-9]\",\"[3-9]\\\\d\\\\d[19]\",\"[3-9]\\\\d\\\\d(?:10|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(21)(\\\\d{4})(\\\\d{4,6})\",\"$1 $2 $3\",[\"21\"],\"0$1\",\"$CC $1\",1],[,\"([12]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10[1-9]|2[02-9]\",\"10[1-9]|2[02-9]\",\"10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"807\",\"8078\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[3-57-9]|66)\"],,\"$CC $1\"],[,\"(10800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"108\",\"1080\",\"10800\"]],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"950\"]]],[,,,,,,,,,[-1]],,,[,,\"(?:4|(?:10)?8)00\\\\d{7}|950\\\\d{7,8}\",,,,\"4001234567\",\n,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,\"(?:[13]\\\\d{0,3}|[24-8])\\\\d{7}\",,,,,,,[8,10,11],[7]],[,,\"[124-8][2-9]\\\\d{6}\",,,,\"12345678\",,,[8],[7]],[,,\"3(?:0[0-5]|1\\\\d|2[0-3]|5[01])\\\\d{7}\",,,,\"3211234567\",,,[10]],[,,\"1800\\\\d{7}\",,,,\"18001234567\",,,[11]],[,,\"19(?:0[01]|4[78])\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CO\",57,\"00(?:4(?:[14]4|56)|[579])\",\"0\",,,\"0([3579]|4(?:44|56))?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1(?:[2-7]|8[2-9]|9[0-3])|[24-8]\",\"1(?:[2-7]|8[2-9]|9(?:09|[1-3]))|[24-8]\"],\n\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],,\"0$CC $1\"],[,\"(1)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1(?:80|9[04])\",\"1(?:800|9(?:0[01]|4[78]))\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1(?:[2-7]|8[2-9]|9[0-3])|[24-8]\",\"1(?:[2-7]|8[2-9]|9(?:09|[1-3]))|[24-8]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],,\"0$CC $1\"],[,\"(1)(\\\\d{3})(\\\\d{7})\",\"$1 $2 $3\",[\"1(?:80|9[04])\",\"1(?:800|9(?:0[01]|4[78]))\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,\"[24-9]\\\\d{7,9}\",,\n,,,,,[8,10]],[,,\"2(?:[024-7]\\\\d{2}|1(?:0[7-9]|[1-9]\\\\d))\\\\d{4}\",,,,\"22123456\",,,[8]],[,,\"5(?:0[01]|7[0-3])\\\\d{5}|6(?:[0-4]\\\\d{3}|500[01])\\\\d{3}|(?:7[0-3]|8[3-9])\\\\d{6}\",,,,\"83123456\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"90[059]\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"210[0-6]\\\\d{4}|4\\\\d{7}|5100\\\\d{4}\",,,,\"40001234\",,,[8]],\"CR\",506,\"00\",,,,\"(19(?:0[012468]|1[09]|20|66|77|99))\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24-7]|8[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1-$2-$3\",[\"[89]0\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,\"[2-57]\\\\d{5,7}\",,,,,,,[6,7,8],[4,5]],[,,\"2[1-4]\\\\d{5,6}|3(?:1\\\\d{6}|[23]\\\\d{4,6})|4(?:[125]\\\\d{5,6}|[36]\\\\d{6}|[78]\\\\d{4,6})|7\\\\d{6,7}\",,,,\"71234567\",,,,[4,5]],[,,\"5\\\\d{7}\",,,,\"51234567\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CU\",53,\"119\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"[2-4]\"],\"(0$1)\"],\n[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,\"[2-59]\\\\d{6}\",,,,,,,[7]],[,,\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\",,,,\"2211234\"],[,,\"(?:[34][36]|5[1-389]|9\\\\d)\\\\d{5}\",,,,\"9911234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CV\",238,\"0\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,\"[134679]\\\\d{6,7}\",\n,,,,,,[7,8]],[,,\"9(?:[48]\\\\d{2}|50\\\\d|7(?:2[0-24]|[34]\\\\d|6[35-7]|77|8[7-9]))\\\\d{4}\",,,,\"94151234\",,,[8]],[,,\"9(?:5(?:[12467]\\\\d|3[01])|6(?:[15-9]\\\\d|3[01]))\\\\d{4}\",,,,\"95181234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"60[0-2]\\\\d{4}\",,,,\"6001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CW\",599,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[13-7]\"]],[,\"(9)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],,[,,\"955\\\\d{5}\",,,,\"95581234\",,,[8]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,\"[1458]\\\\d{5,9}\",\n,,,,,,[6,7,8,9,10]],[,,\"8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:21|49|78|81)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",,,,\"891641234\",,,[9],[8]],[,,\"14(?:5\\\\d|71)\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[12547-9]|9[017-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"19(?:0[0126]\\\\d|[679])\\\\d{5}\",,,,\"1900123456\",,,[8,10]],[,,\"13(?:00\\\\d{2})?\\\\d{4}\",,,,\"1300123456\",,,[6,8,10]],[,,\"500\\\\d{6}\",,,,\"500123456\",\n,,[9]],[,,\"550\\\\d{6}\",,,,\"550123456\",,,[9]],\"CX\",61,\"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]\",\"0\",,,\"0\",,\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,\"[257-9]\\\\d{7}\",,,,,,,[8]],[,,\"2[2-6]\\\\d{6}\",,,,\"22345678\"],[,,\"9[4-79]\\\\d{6}\",,,,\"96123456\"],[,,\"800\\\\d{5}\",,,,\"80001234\"],[,,\"90[09]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-9]\\\\d{5}\",,,,\"80112345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"CY\",357,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\"]],,[,,,,,\n,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:50|77)\\\\d{6}\",,,,\"77123456\"],,,[,,,,,,,,,[-1]]],CZ:[,[,,\"[2-8]\\\\d{8}|9\\\\d{8,11}\",,,,,,,[9,10,11,12]],[,,\"2\\\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",,,,\"601123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:0[05689]|76)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[134]\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"70[01]\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"9[17]0\\\\d{6}\",,,,\"910123456\",,,[9]],\"CZ\",420,\"00\",,,,,,,\n,[[,\"([2-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[,\"(96\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"96\"]],[,\"(9\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9[36]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"9(?:5\\\\d|7[234])\\\\d{6}\",,,,\"972123456\",,,[9]],,,[,,\"9(?:3\\\\d{9}|6\\\\d{7,10})\",,,,\"93123456789\"]],DE:[,[,,\"[1-35-9]\\\\d{3,14}|4(?:[0-8]\\\\d{3,12}|9(?:[0-37]\\\\d|4(?:[1-35-8]|4\\\\d?)|5\\\\d{1,2}|6[1-8]\\\\d?)\\\\d{2,8})\",,,,,,,[4,5,6,7,8,9,10,11,12,13,14,15],[3]],[,,\"2\\\\d{5,13}|3(?:0\\\\d{3,13}|2\\\\d{9}|[3-9]\\\\d{4,13})|4(?:0\\\\d{3,12}|[1-8]\\\\d{4,12}|9(?:[0-37]\\\\d|4(?:[1-35-8]|4\\\\d?)|5\\\\d{1,2}|6[1-8]\\\\d?)\\\\d{2,8})|5(?:0[2-8]|[1256]\\\\d|[38][0-8]|4\\\\d{0,2}|[79][0-7])\\\\d{3,11}|6(?:\\\\d{5,13}|9\\\\d{3,12})|7(?:0[2-8]|[1-9]\\\\d)\\\\d{3,10}|8(?:0[2-9]|[1-8]\\\\d|9\\\\d?)\\\\d{3,10}|9(?:0[6-9]\\\\d{3,10}|1\\\\d{4,12}|[2-9]\\\\d{4,11})\",\n,,,\"30123456\",,,[5,6,7,8,9,10,11,12,13,14,15],[3,4]],[,,\"1(?:5[0-25-9]\\\\d{8}|6[023]\\\\d{7,8}|7\\\\d{8,9})\",,,,\"15123456789\",,,[10,11]],[,,\"800\\\\d{7,12}\",,,,\"8001234567890\",,,[10,11,12,13,14,15]],[,,\"137[7-9]\\\\d{6}|900(?:[135]\\\\d{6}|9\\\\d{7})\",,,,\"9001234567\",,,[10,11]],[,,\"1(?:3(?:7[1-6]\\\\d{6}|8\\\\d{4})|80\\\\d{5,11})\",,,,\"18012345\",,,[7,8,9,10,11,12,13,14]],[,,\"700\\\\d{8}\",,,,\"70012345678\",,,[11]],[,,,,,,,,,[-1]],\"DE\",49,\"00\",\"0\",,,\"0\",,,,[[,\"(1\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[,\"(15\\\\d{3})(\\\\d{6})\",\n\"$1 $2\",[\"15[0568]\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"15\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,11})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,11})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|[4-8][1-9]1|9(?:06|[1-9]1)\",\"2(?:0[1-389]|1(?:[14]|2[0-8])|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|[4-8][1-9]1|9(?:06|[1-9]1)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|[7-9](?:0[1-9]|[1-9])\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|[49][1246]|6[1-4]|7[13468]|8[13568])|6(?:0[1356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|[7-9](?:0[1-9]|[1-9])\"],\n\"0$1\"],[,\"(3\\\\d{4})(\\\\d{1,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(800)(\\\\d{7,12})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:37|80)|900\",\"1(?:37|80)|900[1359]\"],\"0$1\"],[,\"(1\\\\d{2})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[,\"(18\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[,\"(18\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[,\"(18\\\\d)(\\\\d{8})\",\"$1 $2\",[\"18[2-579]\"],\"0$1\"],[,\"(700)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"700\"],\"0$1\"],[,\"(138)(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[,\"(15[013-68])(\\\\d{2})(\\\\d{8})\",\n\"$1 $2 $3\",[\"15[013-68]\"],\"0$1\"],[,\"(15[279]\\\\d)(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[,\"(1[67]\\\\d)(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"]],,[,,\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",,,,\"16412345\",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",,,,\"18500123456\",,,[8,9,10,11,12,13,14]],,,[,,\"1(?:5(?:(?:2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}|(?:[034568]00|113)\\\\d{8})|6(?:013|255|399)\\\\d{7,8}|7(?:[015]13|[234]55|[69]33|[78]99)\\\\d{7,8})\",,,,\"177991234567\",\n,,[12,13]]],DJ:[,[,,\"[27]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:1[2-5]|7[45])\\\\d{5}\",,,,\"21360003\"],[,,\"77\\\\d{6}\",,,,\"77831001\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DJ\",253,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-36-9])\\\\d{6}\",,,,\"32123456\"],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-36-9])\\\\d{6}\",,,,\"20123456\"],[,,\"80\\\\d{6}\",\n,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DK\",45,\"00\",,,,,,,1,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,\"[57-9]\\\\d{9}\",,,,,,,[10],[7]],[,,\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4]|70[1-3])\\\\d{4}\",,,,\"7674201234\",,,,[7]],[,,\"767(?:2(?:[234689]5|7[5-7])|31[5-7]|61[1-7])\\\\d{4}\",,,,\"7672251234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],\n[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"767\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DO:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"8(?:[04]9[2-9]\\\\d{6}|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d{2}|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9]))\\\\d{4})\",\n,,,\"8092345678\",,,,[7]],[,,\"8[024]9[2-9]\\\\d{6}\",,,,\"8092345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DO\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"8[024]9\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,\"(?:[1-4]|[5-9]\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"(?:1\\\\d|2[013-79]|3[0-8]|4[0135689])\\\\d{6}|9619\\\\d{5}\",,,,\"12345678\"],[,,\n\"(?:5[4-6]|7[7-9])\\\\d{7}|6(?:[569]\\\\d|7[0-6])\\\\d{6}\",,,,\"551234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"80[3-689]1\\\\d{5}\",,,,\"808123456\",,,[9]],[,,\"80[12]1\\\\d{5}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"98[23]\\\\d{6}\",,,,\"983123456\",,,[9]],\"DZ\",213,\"00\",\"0\",,,\"0\",,,,[[,\"([1-4]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[,\"([5-8]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"],[,\"(9\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EC:[,[,,\"1\\\\d{9,10}|[2-8]\\\\d{7}|9\\\\d{8}\",,,,,,,[8,9,10,11],[7]],[,,\"[2-7][2-7]\\\\d{6}\",,,,\"22123456\",,,[8],[7]],[,,\"9(?:(?:39|[57][89]|[89]\\\\d)\\\\d|6(?:[0-27-9]\\\\d|30))\\\\d{5}\",,,,\"991234567\",,,[9]],[,,\"1800\\\\d{6,7}\",,,,\"18001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[2-7]890\\\\d{4}\",,,,\"28901234\",,,[8]],\"EC\",593,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[247]|[356][2-8]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\"]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[247]|[356][2-8]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,\"[3-9]\\\\d{6,7}|800\\\\d{6,7}\",,,,,,,[7,8,10]],[,,\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",,,,\"3212345\",,,[7]],[,,\"(?:5\\\\d|8[1-5])\\\\d{6}|5(?:[02]\\\\d{2}|1(?:[0-8]\\\\d|95)|5[0-478]\\\\d|64[0-4]|65[1-589])\\\\d{3}\",\n,,,\"51234567\",,,[7,8]],[,,\"800(?:0\\\\d{3}|1\\\\d|[2-9])\\\\d{3}\",,,,\"80012345\"],[,,\"(?:40\\\\d{2}|900)\\\\d{4}\",,,,\"9001234\",,,[7,8]],[,,,,,,,,,[-1]],[,,\"70[0-2]\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],\"EE\",372,\"00\",,,,,,,,[[,\"([3-79]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]\"]],[,\"(70)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"70\"]],[,\"(8000)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\",\"8000\"]],[,\"([458]\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2\",[\"40|5|8(?:00|[1-5])\",\"40|5|8(?:00[1-9]|[1-5])\"]]],,[,,,,,,,,,[-1]],,,[,,\"800[2-9]\\\\d{3}\",,,,\"8002123\",,,[7]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EG:[,[,,\"1\\\\d{4,9}|[24-6]\\\\d{8}|3\\\\d{7}|[89]\\\\d{8,9}\",,,,,,,[8,9,10],[7]],[,,\"(?:1(?:3[23]\\\\d|5(?:[23]|9\\\\d))|2[2-4]\\\\d{2}|3\\\\d{2}|4(?:0[2-5]|[578][23]|64)\\\\d|5(?:0[2-7]|5\\\\d|7[23])\\\\d|6[24-689]3\\\\d|8(?:2[2-57]|4[26]|6[237]|8[2-4])\\\\d|9(?:2[27]|3[24]|52|6[2356]|7[2-4])\\\\d)\\\\d{5}\",,,,\"234567890\",,,[8,9],[7]],[,,\"1[0125]\\\\d{8}\",,,,\"1001234567\",,,[10]],\n[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"EG\",20,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1(?:3|5[239])|[4-6]|[89][2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[0-25]|[89]00\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"528[89]\\\\d{5}\",,,,\"528812345\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\\\d{6}\",\n,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5924[01]\\\\d{4}\",,,,\"592401234\"],\"EH\",212,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"528[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,\"[178]\\\\d{6}\",,,,,,,[7],[6]],[,,\"1(?:1[12568]|20|40|55|6[146])\\\\d{4}|8\\\\d{6}\",,,,\"8370362\",,,,[6]],[,,\"17[1-3]\\\\d{4}|7\\\\d{6}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ER\",291,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"8(?:[1356]\\\\d|[28][0-8]|[47][1-9])\\\\d{6}|9(?:[135]\\\\d{7}|[28][0-8]\\\\d{6}|4[1-9]\\\\d{6}|6(?:[0-8]\\\\d{6}|9(?:0(?:[0-57-9]\\\\d{4}|6(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d{2})|[1-9]\\\\d{5}))|7(?:[124-9]\\\\d{2}|3(?:[0-8]\\\\d|9[1-9]))\\\\d{4})\",,,,\"810123456\"],[,,\"(?:6\\\\d{6}|7[1-48]\\\\d{5}|9(?:6906(?:09|10)|7390\\\\d{2}))\\\\d{2}\",,,,\"612345678\"],[,,\"[89]00\\\\d{6}\",,,,\"800123456\"],\n[,,\"80[367]\\\\d{6}\",,,,\"803123456\"],[,,\"90[12]\\\\d{6}\",,,,\"901123456\"],[,,\"70\\\\d{7}\",,,,\"701234567\"],[,,,,,,,,,[-1]],\"ES\",34,\"00\",,,,,,,,[[,\"([89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[,\"([5-9]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[568]|[79][0-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"51\\\\d{7}\",,,,\"511234567\"],,,[,,,,,,,,,[-1]]],ET:[,[,,\"[1-59]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:18|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\",\n,,,\"111112345\",,,,[7]],[,,\"9\\\\d{8}\",,,,\"911234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ET\",251,\"00\",\"0\",,,\"0\",,,,[[,\"([1-59]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,\"1\\\\d{4,11}|[2-9]\\\\d{4,10}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"1(?:[3569][1-8]\\\\d{3,9}|[47]\\\\d{5,10})|2[1-8]\\\\d{3,9}|3(?:[1-8]\\\\d{3,9}|9\\\\d{4,8})|[5689][1-8]\\\\d{3,9}\",,,,\"1312345678\"],[,,\"4(?:[0-8]\\\\d{4,9}|9\\\\d{3,8})|50\\\\d{4,8}\",\n,,,\"412345678\",,,[6,7,8,9,10,11]],[,,\"800\\\\d{4,7}\",,,,\"8001234567\",,,[7,8,9,10]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FI\",358,\"00|99(?:[01469]|5(?:11|3[23]|41|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[6-8])0\"],\"0$1\"],[,\"(75\\\\d{3})\",\"$1\",[\"75[12]\"],\"0$1\"],[,\"(116\\\\d{3})\",\"$1\",[\"116\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{4,10})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4,11})\",\"$1 $2\",[\"[25689][1-8]|3\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],1,,[,,\"[13]00\\\\d{3,7}|2(?:0(?:0\\\\d{3,7}|2[023]\\\\d{1,6}|9[89]\\\\d{1,6}))|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"100123\",,,[5,6,7,8,9,10]],[,,\"[13]0\\\\d{4,8}|2(?:0(?:[016-8]\\\\d{3,7}|[2-59]\\\\d{2,7})|9\\\\d{4,8})|60(?:[12]\\\\d{5,6}|6\\\\d{7})|7(?:1\\\\d{7}|3\\\\d{8}|5[03-9]\\\\d{3,7})\",,,,\"10112345\",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],FJ:[,[,,\"[2-9]\\\\d{6}|0\\\\d{10}\",,,,,,,[7,11]],[,,\"(?:3[0-5]\\\\d|6(?:03|[25-7]\\\\d)|8[58]\\\\d)\\\\d{4}\",,,,\"3212345\",,,[7]],[,,\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",\n,,,\"7012345\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FJ\",679,\"0(?:0|52)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,\"[2-7]\\\\d{4}\",,,,,,,[5]],[,,\"[2-47]\\\\d{4}\",,,,\"31234\"],[,,\"[56]\\\\d{4}\",,,,\"51234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FK\",500,\"00\",\n,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,\"[39]\\\\d{6}\",,,,,,,[7]],[,,\"3[2357]0[1-9]\\\\d{3}|9[2-6]\\\\d{5}\",,,,\"3201234\"],[,,\"3[2357]0[1-9]\\\\d{3}|9[2-7]\\\\d{5}\",,,,\"3501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FM\",691,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,\"[2-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:20|[3-4]\\\\d|8[19])\\\\d{4}\",,,,\"201234\"],[,,\"(?:[27][1-9]|5\\\\d)\\\\d{4}\",\n,,,\"211234\"],[,,\"80[257-9]\\\\d{3}\",,,,\"802123\"],[,,\"90(?:[1345][15-7]|2[125-7]|99)\\\\d{2}\",,,,\"901123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6[0-36]|88)\\\\d{4}\",,,,\"601234\"],\"FO\",298,\"00\",,,,\"(10(?:01|[12]0|88))\",,,,[[,\"(\\\\d{6})\",\"$1\",,,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9]],[,,\"[1-5]\\\\d{8}\",,,,\"123456789\"],[,,\"(?:6\\\\d|7[3-9])\\\\d{7}\",,,,\"612345678\"],[,,\"80[0-5]\\\\d{6}\",,,,\"801234567\"],[,,\"8[129]\\\\d{7}\",,,,\"891123456\"],[,,\"884\\\\d{6}\",\n,,,\"884012345\"],[,,,,,,,,,[-1]],[,,\"9\\\\d{8}\",,,,\"912345678\"],\"FR\",33,\"00\",\"0\",,,\"0\",,,,[[,\"([1-79])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"],[,\"(1\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"11\"],\"$1\"],[,\"(8\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"]],[[,\"([1-79])(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"80[6-9]\\\\d{6}\",,,,\"806123456\"],,,[,,,\n,,,,,,[-1]]],GA:[,[,,\"0?\\\\d{7}\",,,,,,,[7,8]],[,,\"01\\\\d{6}\",,,,\"01441234\",,,[8]],[,,\"0?[2-7]\\\\d{6}\",,,,\"06031234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GA\",241,\"00\",,,,,,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,\"\\\\d{7,10}\",,,,,,,[7,9,10],[4,5,6,8]],[,,\"2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{7}|1(?:1(?:3[0-48]|[46][0-4]|5[0-26-9]|[78][0-49])|21[0-7]|31[0-8]|[4-69]1\\\\d)\\\\d{6}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)|3(?:0\\\\d|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[28][02-57-9]|[37]\\\\d|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|5[03-9]|6\\\\d|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\\\\d|9[2-57]))\\\\d{6}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[345])))|3(?:638[2-5]|647[23]|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[123]))|5(?:24(?:3[2-79]|6\\\\d)|276\\\\d|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[567]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|955[0-4])|7(?:26(?:6[13-9]|7[0-7])|442\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|84(?:3[2-58]))|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}|176888[2-46-8]\\\\d{2}|16977[23]\\\\d{3}\",\n,,,\"1212345678\",,,[9,10],[4,5,6,7,8]],[,,\"7(?:[1-3]\\\\d{3}|4(?:[0-46-9]\\\\d{2}|5(?:[0-689]\\\\d|7[0-57-9]))|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])\\\\d|7(?:0(?:0[01]|[1-9]\\\\d)|[1-7]\\\\d{2}|8[02-9]\\\\d|9[0-689]\\\\d)|8(?:[014-9]\\\\d|[23][0-8])\\\\d|9(?:[024-9]\\\\d{2}|1(?:[02-9]\\\\d|1[028])|3[0-689]\\\\d))\\\\d{5}\",,,,\"7400123456\",,,[10]],[,,\"80(?:0(?:1111|\\\\d{6,7})|8\\\\d{7})\",,,,\"8001234567\"],[,,\"(?:87[123]|9(?:[01]\\\\d|8[2349]))\\\\d{7}\",,,,\"9012345678\",,,[10]],[,,\"8(?:4(?:5464\\\\d|[2-5]\\\\d{7})|70\\\\d{7})\",,,,\"8431234567\",,,[7,\n10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",,,[10]],\"GB\",44,\"00\",\"0\",\" x\",,\"0\",,,,[[,\"(7\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"7(?:[1-57-9]|62)\",\"7(?:[1-57-9]|624)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2|5[56]|7[06]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[02-9]1|1)|3|9[018]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{5,6})\",\n\"$1 $2\",[\"1\"],\"0$1\"],[,\"(800)(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[,\"(845)(46)(4\\\\d)\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8(?:4[2-5]|7[0-3])\"],\"0$1\"],[,\"(80\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\"],[,\"(800)(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"]],,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\",,,[10]],1,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,\n,,,[-1]]],GD:[,[,,\"[4589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|68|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\",,,,\"4732691234\",,,,[7]],[,,\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\",,,,\"4734031234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GD\",1,\"011\",\"1\",,,\n\"1\",,,,,,[,,,,,,,,,[-1]],,\"473\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,\"[34578]\\\\d{8}\",,,,,,,[9],[6]],[,,\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\",,,,\"322123456\",,,,[6]],[,,\"(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\",,,,\"555123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"706\\\\d{6}\",,,,\"706123456\"],\"GE\",995,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[348]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5|790\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"706\\\\d{6}\",,,,\"706123456\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"594(?:[023]\\\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[014])\\\\d{4}\",,,,\"594101234\"],[,,\"694(?:[0-249]\\\\d|3[0-48])\\\\d{4}\",,,,\"694201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GF\",594,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[7,9,10],[6]],[,,\"1481[25-9]\\\\d{5}\",,,,\"1481256789\",,,[10],[6]],[,,\"7(?:781\\\\d|839\\\\d|911[17])\\\\d{5}\",,,,\"7781123456\",,,[10]],[,,\"80(?:0(?:1111|\\\\d{6,7})|8\\\\d{7})\",,,,\"8001234567\"],[,,\"(?:87[123]|9(?:[01]\\\\d|8[0-3]))\\\\d{7}\",,,,\"9012345678\",,,[10]],[,,\"8(?:4(?:5464\\\\d|[2-5]\\\\d{7})|70\\\\d{7})\",,,,\"8431234567\",,,[7,10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",\n,,[10]],\"GG\",44,\"00\",\"0\",,,\"0\",,,,,,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\",,,[10]],,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,\"[235]\\\\d{8}|8\\\\d{7}\",,,,,,,[8,9],[7]],[,,\"3(?:0(?:[237]\\\\d|80)|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",,,,\"302345678\",,,[9],[7]],[,,\"(?:2[034678]\\\\d|5(?:[0457]\\\\d|6[01]))\\\\d{6}\",\n,,,\"231234567\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GH\",233,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,\"[256]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:00\\\\d{2}|1(?:6[24-7]\\\\d|90[0-2])|2(?:2[2457]\\\\d|50[0-2]))\\\\d{3}\",,,,\"20012345\"],[,,\"(?:5[46-8]|62)\\\\d{6}\",,,,\"57123456\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GI\",350,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,\"[1-689]\\\\d{5}\",,,,,,,[6]],[,,\"(?:19|3[1-7]|6[14689]|8[14-79]|9\\\\d)\\\\d{4}\",,,,\"321000\"],[,,\"(?:[25][1-9]|4[2-9])\\\\d{4}\",,,,\"221234\"],[,,\"80\\\\d{4}\",,,,\"801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[89]\\\\d{4}\",,,,\"381234\"],\"GL\",299,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:4(?:[23]\\\\d{2}|4(?:1[024679]|[6-9]\\\\d))|5(?:54[0-7]|6(?:[67]\\\\d)|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\",,,,\"5661234\"],[,,\"[23679]\\\\d{6}\",,,,\"3012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GM\",220,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,\"[367]\\\\d{7,8}\",\n,,,,,,[8,9]],[,,\"30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\\\d{4}\",,,,\"30241234\",,,[8]],[,,\"6[02356]\\\\d{7}\",,,,\"601123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"722\\\\d{6}\",,,,\"722123456\",,,[9]],\"GN\",224,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\",\n,,,\"590201234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GP\",590,\"00\",\"0\",,,\"0\",,,,[[,\"([56]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"590|69[01]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,\"[23589]\\\\d{8}\",,,,,,,[9]],[,,\"3(?:3(?:3\\\\d[7-9]|[0-24-9]\\\\d[46])|5\\\\d{2}[7-9])\\\\d{4}\",,,,\"333091234\"],[,,\"(?:222|55[15])\\\\d{6}\",,,,\"222123456\"],[,,\"80\\\\d[1-9]\\\\d{5}\",\n,,,\"800123456\"],[,,\"90\\\\d[1-9]\\\\d{5}\",,,,\"900123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GQ\",240,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,\"[26-9]\\\\d{9}\",,,,,,,[10]],[,,\"2(?:1\\\\d{2}|2(?:2[1-46-9]|3[1-8]|4[1-7]|5[1-4]|6[1-8]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|3[1245]|4[1-7]|5[13-9]|[269][1-6]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",\n,,,\"2123456789\"],[,,\"6(?:8[57-9]|9\\\\d)\\\\d{7}\",,,,\"6912345678\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"90[19]\\\\d{7}\",,,,\"9091234567\"],[,,\"8(?:0[16]|12|25)\\\\d{7}\",,,,\"8011234567\"],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,,,,,,,,[-1]],\"GR\",30,\"00\",,,,,,,,[[,\"([27]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[2-9]1|[689]\"]],[,\"(2\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"2[2-9][02-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GT:[,[,,\"[2-7]\\\\d{7}|1[89]\\\\d{9}\",\n,,,,,,[8,11]],[,,\"[267][2-9]\\\\d{6}\",,,,\"22456789\",,,[8]],[,,\"[345]\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"18[01]\\\\d{8}\",,,,\"18001112222\",,,[11]],[,,\"19\\\\d{9}\",,,,\"19001112222\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GT\",502,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[079]7|2[0167]|3[45]|47|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",\n,,,\"6713001234\",,,,[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[079]7|2[0167]|3[45]|47|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",,,,\"6713001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GU\",1,\"011\",\"1\",,,\"1\",,,1,\n,,[,,,,,,,,,[-1]],,\"671\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,\"(?:4(?:0\\\\d{5}|4\\\\d{7})|9\\\\d{8})\",,,,,,,[7,9]],[,,\"443\\\\d{6}\",,,,\"443201234\",,,[9]],[,,\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",,,,\"955012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"40\\\\d{5}\",,,,\"4012345\",,,[7]],\"GW\",245,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"44|9[5-7]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nGY:[,[,,\"[2-46-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\",,,,\"2201234\"],[,,\"6\\\\d{6}\",,,,\"6091234\"],[,,\"(?:289|862)\\\\d{4}\",,,,\"2891234\"],[,,\"9008\\\\d{3}\",,,,\"9008123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GY\",592,\"001\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,\"[2-7]\\\\d{7}|8[0-4]\\\\d{6,7}|9\\\\d{4,10}\",,,,,,,[5,6,7,8,9,11]],[,\n,\"(?:2(?:[13-8]\\\\d|2[013-9]|9[0-24-9])\\\\d|3(?:[1569][0-24-9]\\\\d|4[0-246-9]\\\\d|7[0-24-69]\\\\d|8(?:4[04]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",,,,\"21234567\",,,[8]],[,,\"(?:46(?:0[0-6]|4[0-57-9])|5(?:[1-59][0-46-9]\\\\d|6[0-4689]\\\\d|7(?:[0-2469]\\\\d|30))|6(?:0[1-9]\\\\d|[1459]\\\\d{2}|2(?:[0-57-9]\\\\d|6[01])|[368][0-57-9]\\\\d|7[0-79]\\\\d)|707[1-5]|8480|9(?:0[1-9]\\\\d|1[02-9]\\\\d|2(?:[0-8]\\\\d|9[03-9])|[358][0-8]\\\\d|[467]\\\\d{2}))\\\\d{4}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",\n,,,\"90012345678\",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",,,,\"81123456\",,,[8]],[,,,,,,,,,[-1]],\"HK\",852,\"00(?:[126-9]|30|5[09])?\",,,,,,\"00\",,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|[89](?:0[1-9]|[1-9])\"]],[,\"(800)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\"]],[,\"(900)(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"900\"]],[,\"(900)(\\\\d{2,5})\",\"$1 $2\",[\"900\"]]],,[,,\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",\n,,,\"71123456\",,,[8]],,,[,,,,,,,,,[-1]],[,,\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",,,,\"30161234\",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,\"[237-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2(?:0[019]|1[1-36]|[23]\\\\d|4[04-6]|5[57]|7[013689]|8[0146-9]|9[012])|4(?:07|2[3-59]|3[13-689]|4[0-68]|5[1-35])|5(?:16|4[03-5]|5\\\\d|6[4-6]|74)|6(?:[056]\\\\d|17|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034])|8(?:79|8[0-35789]|9[1-57-9]))\\\\d{4}\",,,,\"22123456\"],[,,\"[37-9]\\\\d{7}\",,,,\"91234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"HN\",504,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,\"[1-7]\\\\d{5,8}|[89]\\\\d{6,8}\",,,,,,,[6,7,8,9]],[,,\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"9(?:01\\\\d|[1259]\\\\d{2}|7(?:[0679]\\\\d|51)|8\\\\d{1,2})\\\\d{5}\",,,,\"921234567\",,,[8,9]],[,,\"80[01]\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"6(?:[01]\\\\d{0,2}|[459]\\\\d{2})\\\\d{4}\",,,,\"611234\",,,[6,\n7,8]],[,,,,,,,,,[-1]],[,,\"7[45]\\\\d{6}\",,,,\"74123456\",,,[8]],[,,,,,,,,,[-1]],\"HR\",385,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"([2-5]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[,\"(9\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(6[01])(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[,\"([67]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"(80[01])(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"80[01]\"],\"0$1\"],[,\"(80[01])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]\"],\"0$1\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:62\\\\d?|72)\\\\d{6}\",,,,\"62123456\",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,\"[2-489]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\",,,,\"22453300\"],[,,\"[34]\\\\d{7}\",,,,\"34101234\"],[,,\"8\\\\d{7}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:9(?:[67][0-4]|8[0-3589]|9\\\\d))\\\\d{5}\",,,,\"98901234\"],\"HT\",509,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,\"[1-9]\\\\d{7,8}\",\n,,,,,,[8,9],[6]],[,,\"(?:1\\\\d|2[2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|7[2-9]|8[2-57-9]|9[2-69])\\\\d{6}\",,,,\"12345678\",,,[8],[6]],[,,\"(?:[257]0|3[01])\\\\d{7}\",,,,\"201234567\",,,[9]],[,,\"[48]0\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"21\\\\d{7}\",,,,\"211234567\",,,[9]],\"HU\",36,\"00\",\"06\",,,\"06\",,,,[[,\"(1)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"($1)\"]],,[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{6}\",,,,\"80123456\",\n,,[8]],[,,\"38\\\\d{7}\",,,,\"381234567\",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,\"(?:[1-79]\\\\d{6,10}|8\\\\d{7,11})\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"2(?:1(?:14\\\\d{3}|500\\\\d{3}|\\\\d{7,8})|2\\\\d{6,8}|4\\\\d{7,8})|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:19?|[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",\n,,,\"612345678\",,,[7,8,9,10,11],[5,6]],[,,\"(?:2(?:1(?:3[145]|4[01]|5[1-469]|60|8[0359])|2(?:88|9[1256])|3[1-4]9|4(?:36|91)|5(?:1[349]|[2-4]9)|6[0-7]9|7(?:[1-36]9|4[39])|8[1-5]9|9[1-48]9)|3(?:19[1-3]|2[12]9|3[13]9|4(?:1[69]|39)|5[14]9|6(?:1[69]|2[89])|709)|4[13]19|5(?:1(?:19|8[39])|4[129]9|6[12]9)|6(?:19[12]|2(?:[23]9|77))|7(?:1[13]9|2[15]9|419|5(?:1[89]|29)|6[15]9|7[178]9))\\\\d{5,6}|8[1-35-9]\\\\d{7,10}\",,,,\"812345678\",,,[9,10,11,12]],[,,\"177\\\\d{6,8}|800\\\\d{5,7}\",,,,\"8001234567\",,,[8,9,10,11]],[,,\"809\\\\d{7}\",\n,,,\"8091234567\",,,[10]],[,,\"804\\\\d{7}\",,,,\"8041234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ID\",62,\"0(?:0[1789]|10(?:00|1[67]))\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5,8})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"2[035-9]|[36][02-9]|[4579]\"],\"(0$1)\"],[,\"(8\\\\d{2})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(8\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(1)(500)(\\\\d{3})\",\"$1 $2 $3\",[\"150\",\"1500\"],\"$1\"],[,\"(177)(\\\\d{6,8})\",\"$1 $2\",[\"177\"],\"0$1\"],[,\n\"(800)(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(804)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(80\\\\d)(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80[79]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"8071\\\\d{6}\",,,,\"8071123456\",,,[10]],[,,\"1500\\\\d{3}|8071\\\\d{6}\",,,,\"8071123456\",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,\"[124-9]\\\\d{6,9}\",,,,,,,[7,8,9,10],[5,6]],[,,\"1\\\\d{7,8}|2(?:1\\\\d{6,7}|3\\\\d{7}|[24-9]\\\\d{5})|4(?:0[24]\\\\d{5}|[1-469]\\\\d{7}|5\\\\d{6}|7\\\\d{5}|8[0-46-9]\\\\d{7})|5(?:0[45]\\\\d{5}|1\\\\d{6}|[23679]\\\\d{7}|8\\\\d{5})|6(?:1\\\\d{6}|[237-9]\\\\d{5}|[4-6]\\\\d{7})|7[14]\\\\d{7}|9(?:1\\\\d{6}|[04]\\\\d{7}|[35-9]\\\\d{5})\",\n,,,\"2212345\",,,,[5,6]],[,,\"8(?:22\\\\d{6}|[35-9]\\\\d{7})\",,,,\"850123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",,,,\"1520123456\",,,[10]],[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,,\"700\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"76\\\\d{7}\",,,,\"761234567\",,,[9]],\"IE\",353,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"40[24]|50[45]\"],\"(0$1)\"],\n[,\"(48)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"48\"],\"(0$1)\"],[,\"(818)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"818\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[24-69]|7[14]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"76|8[35-9]\"],\"0$1\"],[,\"(8\\\\d)(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8[35-9]5\"],\"0$1\"],[,\"(700)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"700\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:5|8[059])\",\"1(?:5|8[059]0)\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,\n,\"818\\\\d{6}\",,,,\"818123456\",,,[9]],,,[,,\"8[35-9]5\\\\d{7}\",,,,\"8551234567\",,,[10]]],IL:[,[,,\"1\\\\d{6,11}|[2-589]\\\\d{3}(?:\\\\d{3,6})?|6\\\\d{3}|7\\\\d{6,9}\",,,,,,,[4,7,8,9,10,11,12]],[,,\"(?:153\\\\d{1,2}|[2-489])\\\\d{7}\",,,,\"21234567\",,,[8,11,12],[7]],[,,\"5(?:[0-489][2-9]\\\\d|5(?:01|[23][23]|4[45]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9])|6\\\\d{2})\\\\d{5}\",,,,\"502345678\",,,[9]],[,,\"1(?:80[019]\\\\d{3}|255)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"1(?:212|(?:9(?:0[01]|19)|200)\\\\d{2})\\\\d{4}\",,,,\"1919123456\",,,[8,9,10]],\n[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"7(?:18\\\\d|2[23]\\\\d|3[237]\\\\d|47\\\\d|6[58]\\\\d|7\\\\d{2}|8(?:2\\\\d|33|55|77|81)|9[2579]\\\\d)\\\\d{5}\",,,,\"771234567\",,,[9]],\"IL\",972,\"0(?:0|1[2-9])\",\"0\",,,\"0\",,,,[[,\"([2-489])(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[,\"([57]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[,\"(153)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"153\"]],[,\"(1)([7-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[,\"(1255)(\\\\d{3})\",\"$1-$2\",[\"125\",\"1255\"]],[,\"(1200)(\\\\d{3})(\\\\d{3})\",\n\"$1-$2-$3\",[\"120\",\"1200\"]],[,\"(1212)(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\",\"1212\"]],[,\"(1599)(\\\\d{6})\",\"$1-$2\",[\"159\",\"1599\"]],[,\"(151)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"151\"]],[,\"(\\\\d{4})\",\"*$1\",[\"[2-689]\"]]],,[,,,,,,,,,[-1]],,,[,,\"1700\\\\d{6}|[2-689]\\\\d{3}\",,,,\"1700123456\",,,[4,10]],[,,\"[2-689]\\\\d{3}|1599\\\\d{6}\",,,,\"1599123456\",,,[4,10]],,,[,,\"151\\\\d{8,9}\",,,,\"15112340000\",,,[11,12]]],IM:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[10],[6]],[,,\"1624[5-8]\\\\d{5}\",,,,\"1624756789\",,,,[6]],[,,\"7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\",\n,,,\"7924123456\"],[,,\"808162\\\\d{4}\",,,,\"8081624567\"],[,,\"(?:872299|90[0167]624)\\\\d{4}\",,,,\"9016247890\"],[,,\"8(?:4(?:40[49]06|5624\\\\d)|70624\\\\d)\\\\d{3}\",,,,\"8456247890\"],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"IM\",44,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"3(?:08162\\\\d|3\\\\d{5}|4(?:40[49]06|5624\\\\d)|7(?:0624\\\\d|2299\\\\d))\\\\d{3}|55\\\\d{8}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],IN:[,[,,\"008\\\\d{9}|1\\\\d{7,12}|[2-9]\\\\d{9,10}\",,,,,,,[8,9,10,11,12,13],[6,7]],[,,\"(?:11|2[02]|33|4[04]|79|80)[2-7]\\\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|[36][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|[57][2-689]|6[24-578]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\\\d)\\\\d|8(?:2[0-6]|[013-8]\\\\d)))[2-7]\\\\d{5}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"(?:6(?:0(?:0[0-35]|26)\\\\d|1279|2(?:0[0-49]|3[589]|[68][0-49]|9[0-6])\\\\d|3(?:0[0-39]\\\\d|5(?:0[0-6]|[1-9]\\\\d)|6[0-2]\\\\d|7[015-79]\\\\d|[89][0-79]\\\\d)|90[019]\\\\d)|7(?:0\\\\d{3}|19[0-5]\\\\d|2(?:[0235679]\\\\d{2}|[14][017-9]\\\\d|8(?:[0-59]\\\\d|[678][089]))|3(?:[05-8]\\\\d{2}|1(?:[089]\\\\d|11|7[024-8])|2(?:[0-49][089]|[5-8]\\\\d)|3[017-9]\\\\d|4(?:[07-9]\\\\d|11)|9(?:[016-9]\\\\d|[2-5][089]))|4(?:0\\\\d{2}|1(?:[015-9]\\\\d|[23][089]|4[089])|2(?:0[089]|[1-7][089]|[89]\\\\d)|3(?:[0-8][089]|9\\\\d)|4(?:[089]\\\\d|11|7[02-8])|[56]\\\\d[089]|7(?:[089]\\\\d|11|7[02-8])|8(?:[0-24-7][089]|[389]\\\\d)|9(?:[0-6][089]|7[089]|[89]\\\\d))|5(?:[0346-8]\\\\d{2}|1(?:[07-9]\\\\d|11)|2(?:[04-9]\\\\d|[123][089])|5[017-9]\\\\d|9(?:[0-6][089]|[7-9]\\\\d))|6(?:0(?:[0-47]\\\\d|[5689][089])|(?:1[0-257-9]|[6-9]\\\\d)\\\\d|2(?:[0-4]\\\\d|[5-9][089])|3(?:[02-8][089]|[19]\\\\d)|4\\\\d[089]|5(?:[0-367][089]|[4589]\\\\d))|7(?:0(?:0[02-9]|[13-7][089]|[289]\\\\d)|[1-9]\\\\d{2})|8(?:[0-79]\\\\d{2}|8(?:[089]\\\\d|11|7[02-9]))|9(?:[089]\\\\d{2}|313|7(?:[02-8]\\\\d|9[07-9])))|8(?:0(?:[01589]\\\\d{2}|6[67]\\\\d|7(?:[02-8]\\\\d|9[04-9]))|1(?:[02-57-9]\\\\d{2}|1(?:[0-35-9]\\\\d|4[0-46-9])|6(?:[089]\\\\d|7[02-8]))|2(?:0(?:[089]\\\\d|7[02-8])|[14](?:[089]\\\\d|7[02-8])|[235-9]\\\\d{2})|3(?:[0357-9]\\\\d{2}|1(?:[089]\\\\d|7[02-8])|2(?:[09]\\\\d|7[02-8]|8[0-689])|4\\\\d{2}|6(?:[089]\\\\d|7[02-8]))|[45]\\\\d{3}|6(?:[02457-9]\\\\d{2}|1(?:[089]\\\\d|7[02-8])|3(?:[089]\\\\d|7[02-8])|6(?:[08]\\\\d|7[02-8]|9\\\\d))|7(?:0[07-9]\\\\d|[1-69]\\\\d{2}|[78](?:[089]\\\\d|7[02-8]))|8(?:[0-25-9]\\\\d{2}|3(?:[089]\\\\d|7[02-8])|4(?:[0489]\\\\d|7[02-8]))|9(?:[02-9]\\\\d{2}|1(?:[0289]\\\\d|7[02-8])))|9\\\\d{4})\\\\d{5}\",\n,,,\"8123456789\",,,[10]],[,,\"00800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\",,,,\"1800123456\"],[,,\"186[12]\\\\d{9}\",,,,\"1861123456789\",,,[13]],[,,\"1860\\\\d{7}\",,,,\"18603451234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IN\",91,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{8})\",\"$1\",[\"561\",\"5616\",\"56161\"],\"$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"6(?:0[02]|12|2[03689]|3[05-9]|9[019])|7(?:[02-8]|19|9[037-9])|8(?:0[015-9]|[1-9])|9\",\"6(?:0(?:0|26)|127|2(?:0[0-49]|3[589]|[68][0-39]|9[0-46])|3(?:0[0-39]|5[0-46-9]|6[0-2]|7[015-79]|[89][0-79])|9[019])|7(?:[07]|19[0-5]|2(?:[0235-9]|[14][017-9])|3(?:[025-9]|[134][017-9])|4(?:[0-35689]|[47][017-9])|5(?:[02-46-9]|[15][017-9])|6(?:[02-9]|1[0-257-9])|8(?:[0-79]|8[0189])|9(?:[089]|31|7[02-9]))|8(?:0(?:[01589]|6[67]|7[02-9])|1(?:[0-57-9]|6[07-9])|2(?:[014][07-9]|[235-9])|3(?:[03-57-9]|[126][07-9])|[45]|6(?:[02457-9]|[136][07-9])|7(?:[078][07-9]|[1-69])|8(?:[0-25-9]|3[07-9]|4[047-9])|9(?:[02-9]|1[027-9]))|9\",\n\"6(?:0(?:0|26)|1279|2(?:0[0-49]|3[589]|[68][0-39]|9[0-46])|3(?:0[0-39]|5[0-46-9]|6[0-2]|7[015-79]|[89][0-79])|9[019])|7(?:0|19[0-5]|2(?:[0235-79]|[14][017-9]|8(?:[0-69]|[78][089]))|3(?:[05-8]|1(?:[0189]|7[024-9])|2(?:[0-49][089]|[5-8])|3[017-9]|4(?:[07-9]|11)|9(?:[01689]|[2-5][089]|7[0189]))|4(?:[056]|1(?:[0135-9]|[24][089])|[29](?:[0-7][089]|[89])|3(?:[0-8][089]|9)|[47](?:[089]|11|7[02-8])|8(?:[0-24-7][089]|[389]))|5(?:[0346-9]|[15][017-9]|2(?:[03-9]|[12][089]))|6(?:[0346-9]|1[0-257-9]|2(?:[0-4]|[5-9][089])|5(?:[0-367][089]|[4589]))|7(?:0(?:[02-9]|1[089])|[1-9])|8(?:[0-79]|8(?:0[0189]|11|8[013-9]|9))|9(?:[089]|313|7(?:[02-8]|9[07-9])))|8(?:0(?:[01589]|6[67]|7(?:[02-8]|9[04-9]))|1(?:[02-57-9]|1(?:[0-35-9]|4[0-46-9])|6(?:[089]|7[02-8]))|2(?:[014](?:[089]|7[02-8])|[235-9])|3(?:[03-57-9]|[16](?:[089]|7[02-8])|2(?:[09]|7[02-8]|8[0-689]))|[45]|6(?:[02457-9]|[136](?:[089]|7[02-8]))|7(?:0[07-9]|[1-69]|[78](?:[089]|7[02-8]))|8(?:[0-25-9]|3(?:[089]|7[02-8])|4(?:[0489]|7[02-8]))|9(?:[02-9]|1(?:[0289]|7[02-8])))|9\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-9]|80[2-46]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[59][14]|[68][1-9]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1|9[15])|6(?:12|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[23579]|[468][1-9])|[2-8]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"008\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"160\",\"1600\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"180\",\"1800\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"186\",\"1860\"],\"$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"18[06]\"],\"$1\",,1]],,[,,,,,,,,,[-1]],,,[,,\"00800\\\\d{7}|1(?:600\\\\d{6}|8(?:0(?:0\\\\d{4,9}|3\\\\d{9})|6(?:0\\\\d{7}|[12]\\\\d{9})))\",,,,\"1800123456\"],[,,\"140\\\\d{7}\",,,,\"1409305260\",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,\"3\\\\d{6}\",,,,,,,[7]],[,,\"37\\\\d{5}\",,,,\"3709100\"],[,,\"38\\\\d{5}\",,,,\"3801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IO\",246,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nIQ:[,[,,\"[1-7]\\\\d{7,9}\",,,,,,,[8,9,10],[6,7]],[,,\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"7[3-9]\\\\d{8}\",,,,\"7912345678\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IQ\",964,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"([2-6]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],IR:[,[,,\"[1-8]\\\\d{5,9}|9(?:[0-4]\\\\d{8}|9\\\\d{8})\",,,,,,,[6,7,10],[4,5,8]],[,,\"(?:(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:\\\\d{8}|(?:[16]|[289]\\\\d?)\\\\d{3}))|94(?:000|11[0-7]|2\\\\d{2}|30[01]|4(?:11|40))\\\\d{5}\",,,,\"2123456789\",,,,[4,5,8]],[,,\"9(?:0(?:[1-35]\\\\d{2}|44\\\\d)|[13]\\\\d{3}|2[0-2]\\\\d{2}|9(?:[01]\\\\d{2}|44\\\\d|8(?:10|88)|9(?:0[013]|1[134]|21|9[89])))\\\\d{5}\",,,,\"9123456789\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"993\\\\d{7}\",\n,,,\"9932123456\",,,[10]],\"IR\",98,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"[1-8]\"],\"0$1\"],[,\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:9411[1-7]|94440)\\\\d{5}\",,,,\"9411110000\",,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IS:[,[,,\"[4-9]\\\\d{6}|38\\\\d{7}\",,,,,,,[7,9]],[,,\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-245]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|87[23])\\\\d{4}\",\n,,,\"4101234\",,,[7]],[,,\"38[589]\\\\d{6}|(?:6(?:1[1-8]|2[0-6]|3[027-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-8]\\\\d|9[0-3])|8(?:2[0-59]|[3469]\\\\d|5[1-9]|8[28]))\\\\d{4}\",,,,\"6111234\"],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9011234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"49\\\\d{5}\",,,,\"4921234\",,,[7]],\"IS\",354,\"1(?:0(?:01|10|20)|100)|00\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[,\"(3\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,\"809\\\\d{4}\",,,,\"8091234\",,,[7]],,,[,,\"(?:689|8(?:7[0189]|80)|95[48])\\\\d{4}\",,,,\"6891234\",,,[7]]],IT:[,[,,\"[01589]\\\\d{5,10}|3(?:[12457-9]\\\\d{8}|[36]\\\\d{7,9})\",,,,,,,[6,7,8,9,10,11]],[,,\"0(?:[26]\\\\d{4,9}|(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2346]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[34578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7})\",\n,,,\"0212345678\"],[,,\"3(?:[12457-9]\\\\d{8}|6\\\\d{7,8}|3\\\\d{7,9})\",,,,\"3123456789\",,,[9,10,11]],[,,\"80(?:0\\\\d{6}|3\\\\d{3})\",,,,\"800123456\",,,[6,9]],[,,\"0878\\\\d{5}|1(?:44|6[346])\\\\d{6}|89(?:2\\\\d{3}|4(?:[0-4]\\\\d{2}|[5-9]\\\\d{4})|5(?:[0-4]\\\\d{2}|[5-9]\\\\d{6})|9\\\\d{6})\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{6}|[17]\\\\d{3})\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"IT\",39,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|55\"]],\n[,\"(0[26])(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[,\"(0[26])(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(0\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[245])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))\"]],[,\"(0\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][2-46-8]\"]],[,\"(0\\\\d{3})(\\\\d{2,6})\",\"$1 $2\",[\"0[13-57-9][2-46-8]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13]|8(?:00|4[08]|9[59])\",\"[13]|8(?:00|4[08]|9(?:5[5-9]|9))\"]],\n[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\",\"894[5-9]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],1,,[,,\"848\\\\d{6}\",,,,\"848123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JE:[,[,,\"[135789]\\\\d{6,9}\",,,,,,,[10],[6]],[,,\"1534[0-24-8]\\\\d{5}\",,,,\"1534456789\",,,,[6]],[,,\"7(?:509\\\\d|7(?:00[378]|97[7-9])|829\\\\d|937\\\\d)\\\\d{5}\",,,,\"7797712345\"],[,,\"80(?:07(?:35|81)|8901)\\\\d{4}\",,,,\"8007354567\"],[,,\"(?:871206|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\",,,,\"9018105678\"],[,,\"8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|70002)\\\\d{4}\",\n,,,\"8447034567\"],[,,\"701511\\\\d{4}\",,,,\"7015115678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"JE\",44,\"00\",\"0\",,,\"0\",,,,,,[,,\"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",,,,\"7640123456\"],,,[,,,,,,,,,[-1]],[,,\"3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))\\\\d{4}|55\\\\d{8}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],JM:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[0237-9]|[23]\\\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468]))\\\\d{4}\",\n,,,\"8765123456\",,,,[7]],[,,\"876(?:2[14-9]\\\\d|[348]\\\\d{2}|5(?:0[3-9]|[2-57-9]\\\\d|6[0-24-9])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\\\d{4}\",,,,\"8762101234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"JM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"876\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JO:[,[,,\"[235-9]\\\\d{7,8}\",\n,,,,,,[8,9]],[,,\"(?:2(?:6(?:2[0-35-9]|3[0-57-8]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[57][023]|6[03])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2[50]0|3(?:00|33)|4(?:0[0125]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[17-8]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[02-39]))|87(?:[02]0|7[08]|90))\\\\d{4}\",,,,\"62001234\",,,[8]],[,,\n\"7(?:55[0-49]|7[025-9]\\\\d|8[0-25-9]\\\\d|9[0-25-9]\\\\d)\\\\d{5}\",,,,\"790123456\",,,[9]],[,,\"80\\\\d{6}\",,,,\"80012345\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"85\\\\d{6}\",,,,\"85012345\",,,[8]],[,,\"70\\\\d{7}\",,,,\"700123456\",,,[9]],[,,,,,,,,,[-1]],\"JO\",962,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[,\"(7)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7[457-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"8[0158]|9\"],\"0$1\"]],,[,,\"74(?:66|77)\\\\d{5}\",\n,,,\"746612345\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"8(?:10|8\\\\d)\\\\d{5}\",,,,\"88101234\",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,\"[1-9]\\\\d{8,9}|00(?:[36]\\\\d{7,14}|7\\\\d{5,7}|8\\\\d{7})\",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|2[2-9]\\\\d|[36][1-9]\\\\d|4(?:6[02-8]|[2-578]\\\\d|9[2-59])|5(?:6[1-9]|7[2-8]|[2-589]\\\\d)|7(?:3[4-9]|4[02-9]|[25-9]\\\\d)|8(?:3[2-9]|4[5-9]|5[1-9]|8[03-9]|[2679]\\\\d)|9(?:[679][1-9]|[2-58]\\\\d))\\\\d{6}\",,,,\"312345678\",,,[9]],[,,\"[7-9]0[1-9]\\\\d{7}\",\n,,,\"9012345678\",,,[10]],[,,\"120\\\\d{6}|800\\\\d{7}|00(?:37\\\\d{6,13}|66\\\\d{6,13}|777(?:[01]\\\\d{2}|5\\\\d{3}|8\\\\d{4})|882[1245]\\\\d{4})\",,,,\"120123456\"],[,,\"990\\\\d{6}\",,,,\"990123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"60\\\\d{7}\",,,,\"601234567\",,,[9]],[,,\"50[1-9]\\\\d{7}\",,,,\"5012345678\",,,[10]],\"JP\",81,\"010\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"007\",\"0077\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3,4})\",\n\"$1-$2-$3\",[\"007\",\"0077\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"008\",\"0088\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{5})(\\\\d{5,6})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{4})(\\\\d{6})(\\\\d{6,7})\",\"$1-$2-$3\",[\"00[36]\",\"00(?:37|66)\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]0|80[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))\",\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)\",\"1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])\",\"1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93(?:31|4))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\n\"$1-$2-$3\",[\"2(?:[34]7|[56]9|74|9[14-79])|82|993\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2479][1-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]0|80[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))\",\"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\",\n\"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)\",\"1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])\",\"1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93(?:31|4))\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\n\"$1-$2-$3\",[\"2(?:[34]7|[56]9|74|9[14-79])|82|993\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2479][1-9]\"],\"0$1\"]],[,,\"20\\\\d{8}\",,,,\"2012345678\",,,[10]],,,[,,\"00(?:37\\\\d{6,13}|66\\\\d{6,13}|777(?:[01]\\\\d{2}|5\\\\d{3}|8\\\\d{4})|882[1245]\\\\d{4})\",,,,\"00777012\"],[,,\"570\\\\d{6}\",,,,\"570123456\",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,\"20\\\\d{6,7}|[4-9]\\\\d{6,9}\",,,,,,,[7,8,9,10]],[,,\"20\\\\d{6,7}|4(?:0\\\\d{6,7}|[136]\\\\d{7}|[245]\\\\d{5,7})|5(?:[08]\\\\d{7}|[1-79]\\\\d{5,7})|6(?:[01457-9]\\\\d{5,7}|2\\\\d{7}|6\\\\d{6,7})\",\n,,,\"202012345\",,,[7,8,9]],[,,\"7(?:[0-3679]\\\\d|4[0-9]|5[0-7]|8[0-25-9])\\\\d{6}\",,,,\"712123456\",,,[9]],[,,\"800[24-8]\\\\d{5,6}\",,,,\"800223456\",,,[9,10]],[,,\"900[02-9]\\\\d{5}\",,,,\"900223456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KE\",254,\"000\",\"0\",,,\"005|0\",,,,[[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,,\"[235-8]\\\\d{8,9}\",\n,,,,,,[9,10],[5,6]],[,,\"(?:3(?:1(?:[256]\\\\d|3[1-9]|47)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",,,,\"312123456\",,,[9],[5,6]],[,,\"(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55))\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KG\",996,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[25-7]|31[25]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[36]|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,\"[1-9]\\\\d{7,9}\",,,,,,,[8,9,10],[6,7]],[,,\"(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:[237-9]|4[56]|5\\\\d|6\\\\d?)\\\\d{5}|23(?:4[234]|8\\\\d{2})\\\\d{4}\",,,,\"23756789\",,,[8,9],[6,7]],[,,\"(?:1(?:[013-79]\\\\d|[28]\\\\d{1,2})|2[3-6]48|3(?:[18]\\\\d{2}|[2-6]48)|4[2-4]48|5[2-5]48|6(?:[016-9]\\\\d|[2-5]48)|7(?:[07-9]\\\\d|[16]\\\\d{2}|[2-5]48)|8(?:[013-79]\\\\d|8\\\\d{2})|9(?:6\\\\d{2}|7\\\\d{1,2}|[0-589]\\\\d))\\\\d{5}\",\n,,,\"91234567\",,,[8,9]],[,,\"1800(?:1\\\\d|2[019])\\\\d{4}\",,,,\"1800123456\",,,[10]],[,,\"1900(?:1\\\\d|2[09])\\\\d{4}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KH\",855,\"00[14-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\\\\d[1-9]|[2-9]\"],\"0$1\"],[,\"(1[89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,\"[2458]\\\\d{4}|3\\\\d{4,7}|[67]\\\\d{7}\",,,,,,,[5,8]],[,,\"(?:[24]\\\\d|3[1-9]|50|8[0-5])\\\\d{3}|(?:65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d{2}|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500)))\\\\d{3}\",\n,,,\"31234\"],[,,\"(?:6(?:200[01]|30[01]\\\\d)|7(?:200[01]|3(?:0[0-5]\\\\d|140)))\\\\d{3}\",,,,\"72001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"30(?:0[01]\\\\d{2}|12(?:11|20))\\\\d{2}\",,,,\"30010000\",,,[8]],\"KI\",686,\"00\",,,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,\"[3478]\\\\d{6}\",,,,,,,[7]],[,,\"7[4-7]\\\\d{5}\",,,,\"7712345\"],[,,\"[34]\\\\d{6}\",,,,\"3212345\"],[,,,,,,,,,[-1]],[,,\"8\\\\d{6}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],\"KM\",269,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"869(?:2(?:29|36)|302|4(?:6[015-9]|70))\\\\d{4}\",,,,\"8692361234\",,,,[7]],[,,\"869(?:5(?:5[6-8]|6[5-7])|66\\\\d|76[02-7])\\\\d{4}\",,,,\"8697652917\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],\n[,,,,,,,,,[-1]],\"KN\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"869\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,\"1\\\\d{9}|[28]\\\\d{7}\",,,,,,,[8,10],[6,7]],[,,\"2\\\\d{7}|85\\\\d{6}\",,,,\"21234567\",,,[8],[6,7]],[,,\"19[123]\\\\d{7}\",,,,\"1921234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KP\",850,\"00|99\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"2(?:[0-24-9]\\\\d{2}|3(?:[0-79]\\\\d|8[02-9]))\\\\d{4}\",,,,\"23821234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,\"00(?:3\\\\d{8,9}|7\\\\d{9,11})|[1-7]\\\\d{4,9}|8\\\\d{8}\",,,,,,,[5,6,8,9,10,11,12,13,14],[3,7]],[,,\"2[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])(?:1\\\\d{2,3}|[1-9]\\\\d{6,7})\",,,,\"22123456\",,,[5,6,8,9,10],[3,7]],[,,\"1[0-26-9]\\\\d{7,8}\",,,,\"1000000000\",,,[9,10]],[,,\"(?:00(?:3(?:08|68\\\\d)|798\\\\d{1,3})|80\\\\d)\\\\d{6}\",,,,\"801234567\",,,[9,11,12,13,14]],[,,\n\"60[2-9]\\\\d{6}\",,,,\"602345678\",,,[9]],[,,,,,,,,,[-1]],[,,\"50\\\\d{8}\",,,,\"5012345678\",,,[10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"KR\",82,\"00(?:[1259]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"0\",,,\"0(8[1-46-8]|85\\\\d{2})?\",,,,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1(?:5[246-9]|6[046-8]|8[03579])\",\"1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\n\"1[016-9]114\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60[2-9]|80\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]0\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"003\",\"0030\",\"00308\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"00[37]\",\"00(?:36|79)\",\"00(?:36|79)8\"],\n\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"007\",\"0079\",\"00798\"],\"$1\",\"0$CC-$1\"]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1(?:5[246-9]|6[046-8]|8[03579])\",\"1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))\"],\"$1\",\"0$CC-$1\"],[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\"1[016-9]114\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1-$2-$3\",[\"60[2-9]|80\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]0\"],\"0$1\",\"0$CC-$1\"]],[,,\"15\\\\d{7,8}\",,,,\"1523456789\",,,[9,10]],,,[,,\"00(?:3(?:08|68\\\\d)|798\\\\d{1,3})\\\\d{6}\",,,,\"007981234567\",,,[11,12,13,14]],[,,\"1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))\\\\d{4}\",,,,\"15441234\",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,\"[12569]\\\\d{6,7}\",,,,,,,[7,8]],[,\n,\"(?:18\\\\d|2(?:[23]\\\\d{2}|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7])))\\\\d{4}\",,,,\"22345678\"],[,,\"(?:5(?:[05]\\\\d{2}|1[0-7]\\\\d|2(?:22|5[25])|6[56]\\\\d)|6(?:0[034679]\\\\d|222|5[015-9]\\\\d|6\\\\d{2}|7(?:0[013-9]|[67]\\\\d)|9(?:[069]\\\\d|3[039]))|9(?:0[09]\\\\d|11[01]|22\\\\d|4[01479]\\\\d|55\\\\d|6[0679]\\\\d|7(?:02|[1-9]\\\\d)|8[057-9]\\\\d|9\\\\d{2}))\\\\d{4}\",,,,\"50012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KW\",965,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",\n[\"[16]|2(?:[0-35-9]|4[0-35-9])|52[25]|9[0-24-9]\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"244|5(?:[015]|6[56])\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,\"[3589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\\\d{4}\",,,,\"3452221234\",,,,[7]],[,,\"345(?:32[1-9]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|9(?:1[67]|2[2-9]|3[689]))\\\\d{4}\",,,,\"3453231234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}|345976\\\\d{4}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KY\",1,\"011\",\"1\",,,\"1\",,,,,,[,,\"345849\\\\d{4}\",,,,\"3458491234\"],,\"345\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,\"(?:33\\\\d|7\\\\d{2}|80[089])\\\\d{7}\",,,,,,,[10]],[,,\"33622\\\\d{5}|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[234]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[234]\\\\d|5[139])|4(?:2\\\\d|3[1235-9]|59)|5(?:[23]\\\\d|4[01246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59)))\\\\d{5}\",\n,,,\"7123456789\"],[,,\"7(?:0[012578]|47|6[02-4]|7[15-8]|85)\\\\d{7}\",,,,\"7710009998\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"809\\\\d{7}\",,,,\"8091234567\"],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\"],[,,\"751\\\\d{7}\",,,,\"7511234567\"],\"KZ\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,,,[,,,,,,,,,[-1]],,,[,,\"751\\\\d{7}\",,,,\"7511234567\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,\"[2-8]\\\\d{7,9}\",,,,,,,[8,9,10],[6]],[,,\"(?:2[13]|3(?:0\\\\d|[14])|[5-7][14]|41|8[1468])\\\\d{6}\",,,,\"21212862\",,,[8,9],[6]],[,,\"20(?:2[2389]|5[24-689]|7[6-8]|9[1-35-9])\\\\d{6}\",\n,,,\"2023123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LA\",856,\"00\",\"0\",,,\"0\",,,,[[,\"(20)(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],\"0$1\"],[,\"([2-8]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[,\"(30)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LB:[,[,,\"[13-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:[14-6]\\\\d{2}|7(?:[2-57]\\\\d|62|8[0-7]|9[04-9])|8[02-9]\\\\d|9\\\\d{2})\\\\d{4}\",\n,,,\"1123456\",,,[7]],[,,\"(?:3\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[1-3])|81\\\\d)\\\\d{5}\",,,,\"71123456\"],[,,,,,,,,,[-1]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"80\\\\d{6}\",,,,\"80123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LB\",961,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[,\"([7-9]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7(?:[01]|6[013-9]|8[89]|9[1-3])|[89][01]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,\n[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"758(?:4(?:30|5[0-9]|6[2-9]|8[0-2])|57[0-2]|638)\\\\d{4}\",,,,\"7584305678\",,,,[7]],[,,\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[01]))\\\\d{4}\",,,,\"7582845678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"LC\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"758\",[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],,,[,,,,,,,,,[-1]]],LI:[,[,,\"6\\\\d{8}|[23789]\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:2(?:01|1[27]|3\\\\d|6[02-578]|96)|3(?:7[0135-7]|8[048]|9[0269]))\\\\d{4}\",,,,\"2345678\",,,[7]],[,,\"6(?:5(?:09|1\\\\d|20)|6(?:0[0-6]|10|2[06-9]|39))\\\\d{5}|7(?:[37-9]\\\\d|42|56)\\\\d{4}\",,,,\"660234567\"],[,,\"80(?:02[28]|9\\\\d{2})\\\\d{2}\",,,,\"8002222\",,,[7]],[,,\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d{2}\",,,,\"9002222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LI\",423,\"00\",\"0\",,,\"0|10(?:01|20|66)\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3\",[\"[237-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[56]\"]],[,\"(69)(7\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"697\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"870(?:28|87)\\\\d{2}\",,,,\"8702812\",,,[7]],,,[,,\"697(?:42|56|[78]\\\\d)\\\\d{4}\",,,,\"697861234\",,,[9]]],LK:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"1(?:1[2-57]\\\\d{6}|973\\\\d{5})|(?:2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7]|[89]1)[2-57]\\\\d{6}\",,,,\"112345678\",,,,[7]],[,,\"7[0125-8]\\\\d{7}\",,,,\"712345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LK\",94,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LR:[,[,,\"2\\\\d{7,8}|[378]\\\\d{8}|4\\\\d{6}|5\\\\d{6,8}\",,,,,,,[7,8,9]],[,,\"(?:2\\\\d{3}|33333)\\\\d{4}\",,,,\"21234567\",,,[8,9]],[,,\"(?:20\\\\d{2}|330\\\\d|4[67]|5(?:55)?\\\\d|77\\\\d{2}|88\\\\d{2})\\\\d{5}\",,,,\"770123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"332(?:02|[2-5]\\\\d)\\\\d{4}\",,,,\"332021234\",\n,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LR\",231,\"00\",\"0\",,,\"0\",,,,[[,\"(2\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([4-5])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23578]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,\"[2568]\\\\d{7}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"22123456\"],[,,\"[56]\\\\d{7}\",,,,\"50123456\"],[,,\"800[256]\\\\d{4}\",,,,\"80021234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],\"LS\",266,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,\"[3-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:3[1478]|4[124-6]|52)\\\\d{6}\",,,,\"31234567\"],[,,\"6\\\\d{7}\",,,,\"61234567\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"9(?:0[0239]|10)\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"LT\",370,\"00\",\"8\",,,\"[08]\",,,,[[,\"([34]\\\\d)(\\\\d{6})\",\"$1 $2\",[\"37|4(?:1|5[45]|6[2-4])\"],\"(8-$1)\",,1],[,\"([3-6]\\\\d{2})(\\\\d{5})\",\n\"$1 $2\",[\"3[148]|4(?:[24]|6[09])|528|6\"],\"(8-$1)\",,1],[,\"([7-9]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",,1],[,\"(5)(2\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-79]\"],\"(8-$1)\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{5}\",,,,\"70712345\"],,,[,,,,,,,,,[-1]]],LU:[,[,,\"[24-9]\\\\d{3,10}|3(?:[0-46-9]\\\\d{2,9}|5[013-9]\\\\d{1,8})\",,,,,,,[4,5,6,7,8,9,10,11]],[,,\"(?:2[2-9]\\\\d{2,9}|(?:3(?:[0-46-9]\\\\d|5[013-9])|[457]\\\\d{2}|8(?:0[2-9]|[13-9]\\\\d)|9(?:0[89]|[2-579]\\\\d))\\\\d{1,8})\",,,,\"27123456\"],[,,\"6[25-79][18]\\\\d{6}\",\n,,,\"628123456\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90[015]\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,,,,,,,,[-1]],[,,\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",,,,\"20201234\",,,[4,5,6,7,8,9,10]],\"LU\",352,\"00\",,,,\"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\\\d)\",,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-5]|7[1-9]|[89](?:0[2-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-5]|7[1-9]|[89](?:0[2-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20\"],\n,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,4})\",\"$1 $2 $3 $4\",[\"2(?:[12589]|4[12])|[3-5]|7[1-9]|8(?:0[2-9]|[1-9])|9(?:0[2-46-9]|[1-9])\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"70|80[01]|90[015]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"6\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,\"[2689]\\\\d{7}\",,,,,,,[8]],[,,\"6\\\\d{7}\",,,,\"63123456\"],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,\"81\\\\d{6}\",,,,\"81123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LV\",371,\"00\",,,,,,,,[[,\"([2689]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LY:[,[,,\"[25679]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:2[1345]|5[1347]|6[123479]|71)\\\\d{7}\",\n,,,\"212345678\",,,,[7]],[,,\"9[1-6]\\\\d{7}\",,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LY\",218,\"00\",\"0\",,,\"0\",,,,[[,\"([25-79]\\\\d)(\\\\d{7})\",\"$1-$2\",[\"[25-79]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"5(?:2(?:[015-79]\\\\d|2[02-9]|3[2-57]|4[2-8]|8[235-7])\\\\d|3(?:[0-48]\\\\d|[57][2-9]|6[2-8]|9[3-9])\\\\d|4[067]\\\\d{2}|5[03]\\\\d{2})\\\\d{4}\",,,,\"520123456\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\\\d{6}\",\n,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5924[01]\\\\d{4}\",,,,\"592401234\"],\"MA\",212,\"00\",\"0\",,,\"0\",,,,[[,\"([5-7]\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"5(?:2[015-7]|3[0-4])|[67]\"],\"0$1\"],[,\"([58]\\\\d{3})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|92)|892\",\"5(?:2(?:[2-48]|9[0-7])|3(?:[5-79]|8[0-7])|924)|892\"],\"0$1\"],[,\"(5\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\"],\"0$1\"],[,\"([5]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:4[067]|5[03])\"],\n\"0$1\"],[,\"(8[09])(\\\\d{7})\",\"$1-$2\",[\"8(?:0|9[013-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,\"[34689]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"870\\\\d{5}|9[2-47-9]\\\\d{6}\",,,,\"99123456\",,,[8]],[,,\"3\\\\d{7}|4(?:4\\\\d|5[1-9])\\\\d{5}|6\\\\d{8}\",,,,\"612345678\"],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MC\",377,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[39]\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"4\"],\"0$1\"],[,\"(6)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"8\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,\"870\\\\d{5}\",,,,\"87012345\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,\"[235-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2[1-9]\\\\d|3[1-79]\\\\d|5(?:33|5[257]))\\\\d{5}\",,,,\"22212345\"],[,,\"(?:562|6\\\\d{2}|7(?:[189]\\\\d|6[07]|7[457-9]))\\\\d{5}\",,,,\"62112345\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[056]\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],\n[,,,,,,,,,[-1]],[,,\"3[08]\\\\d{6}\",,,,\"30123456\"],\"MD\",373,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[,\"([25-7]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13-9]|[5-7]\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"803\\\\d{5}\",,,,\"80312345\"],,,[,,,,,,,,,[-1]]],ME:[,[,,\"[2-9]\\\\d{7,8}\",,,,,,,[8,9],[6]],[,,\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:[01][2467]|2[2-467]))\\\\d{5}\",,,,\"30234567\",,,[8],[6]],[,,\"6(?:00\\\\d|3[024]\\\\d|6[0-25]\\\\d|[7-9]\\\\d{2})\\\\d{4}\",\n,,,\"67622901\",,,[8]],[,,\"80(?:[0-2578]|9\\\\d)\\\\d{5}\",,,,\"80080002\"],[,,\"(?:9(?:4[1568]|5[178]))\\\\d{5}\",,,,\"94515151\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"78[1-49]\\\\d{5}\",,,,\"78108780\",,,[8]],\"ME\",382,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57-9]|6[036-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"77[1-9]\\\\d{5}\",,,,\"77273012\",,,[8]],,,[,,,,,,,,,[-1]]],MF:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"590(?:0[079]|13|2[79]|30|43|5[0-268]|7[79]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d{2}|1(?:2[29]|3[0-5]))\\\\d{4}\",\n,,,\"690001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MF\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,\"[23]\\\\d{8}\",,,,,,,[9],[7]],[,,\"20(?:2\\\\d{2}|4[47]\\\\d|5[3467]\\\\d|6[279]\\\\d|7(?:2[29]|[35]\\\\d)|8[268]\\\\d|9[245]\\\\d)\\\\d{4}\",,,,\"202123456\",,,,[7]],[,,\"3[2-49]\\\\d{7}\",,,,\"321234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"22\\\\d{7}\",,,,\"221234567\"],\"MG\",261,\"00\",\"0\",,,\"0\",,\n,,[[,\"([23]\\\\d)(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,\"[2-6]\\\\d{6}\",,,,,,,[7]],[,,\"(?:247|528|625)\\\\d{4}\",,,,\"2471234\"],[,,\"(?:235|329|45[56]|545)\\\\d{4}\",,,,\"2351234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"635\\\\d{4}\",,,,\"6351234\"],\"MH\",692,\"011\",\"1\",,,\"1\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MK:[,[,,\"[2-578]\\\\d{7}\",\n,,,,,,[8],[6,7]],[,,\"(?:2(?:[23]\\\\d|5[0-24578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\",,,,\"22012345\",,,,[6,7]],[,,\"7(?:[0-25-8]\\\\d{2}|3[2-4]\\\\d|421|9[23]\\\\d)\\\\d{4}\",,,,\"72345678\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"5[02-9]\\\\d{6}\",,,,\"50012345\"],[,,\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"80123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MK\",389,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([347]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[347]\"],\"0$1\"],[,\"([58]\\\\d{2})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,\"[24-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:2(?:0(?:2\\\\d|7[0-8])|1(?:2[67]|[4-689]\\\\d))|4(?:0[0-4]|4[1-39])\\\\d)\\\\d{4}\",,,,\"20212345\"],[,,\"(?:2(?:079|17\\\\d)|50\\\\d{2}|[679]\\\\d{3}|8[239]\\\\d{2})\\\\d{4}\",,,,\"65012345\"],[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ML\",223,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[24-9]\"]],[,\"(\\\\d{4})\",\"$1\",[\"67|74\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,\"[178]\\\\d{5,7}|[24-6]\\\\d{5,8}|9(?:[279]\\\\d{0,2}|5|[34]\\\\d{1,2}|6(?:\\\\d{1,2})?|8(?:\\\\d{2})?)\\\\d{6}\",,,,,,,[6,7,8,9,10],[5]],[,,\"1(?:2\\\\d{1,2}|[35]\\\\d|4(?:\\\\d|2[236]|39)|6\\\\d?|[89][0-6]\\\\d)\\\\d{4}|2(?:2(?:000\\\\d{3}|\\\\d{4})|3\\\\d{4}|4(?:0\\\\d{5}|26\\\\d{4}|39\\\\d{4}|\\\\d{4})|5(?:1\\\\d{3,6}|[02-9]\\\\d{3,5})|[6-9]\\\\d{4})|4(?:2[245-8]|3(?:2(?:02)?|[346]|56?)|[46][2-6]|5[3-5])\\\\d{4}|5(?:2(?:2(?:\\\\d{1,2})?|[3-8])|3[2-68]|4(?:21?|[4-8])|5[23]|6[2-4]|7[2-8]|8[24-7]|9[2-7])\\\\d{4}|6(?:0[23]|1(?:2(?:0|4\\\\d)?|[356])|2[2-6]|3[24-6]|4(?:2(?:4\\\\d)?|[3-6])|5[2-4]|6[2-8]|7(?:[2367]|4(?:\\\\d|39)|5\\\\d?|8[145]\\\\d)|8[245]|9(?:20?|4))\\\\d{4}|7(?:[04][24-8]|1(?:20?|[3-7])|22|3[2-4]|5[2-7])\\\\d{4}|8(?:1(?:2\\\\d{1,2}|[3-689]\\\\d)|2(?:2\\\\d|3(?:\\\\d|20)|[4-8]\\\\d)|3[24]\\\\d|4[24-7]\\\\d|5[245]\\\\d|6[23]\\\\d)\\\\d{3}\",\n,,,\"1234567\",,,[6,7,8,9],[5]],[,,\"17[01]\\\\d{4}|9(?:2(?:[0-4]|5\\\\d{2}|6[0-5]\\\\d)|3(?:[0-36]|4[069])\\\\d|4(?:0[0-4]\\\\d|[1379]\\\\d|2\\\\d{2}|4[0-589]\\\\d|5\\\\d{2}|88)|5[0-6]|6(?:1\\\\d|9\\\\d{2}|\\\\d)|7(?:3|5[0-2]|[6-9]\\\\d)\\\\d|8(?:\\\\d|9\\\\d{2})|9(?:1\\\\d|[5-7]\\\\d{2}|[089]))\\\\d{5}\",,,,\"92123456\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1333\\\\d{4}\",,,,\"13331234\",,,[8]],\"MM\",95,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1|2[245]\"],\"0$1\"],[,\"(2)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"251\"],\"0$1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"432|67|81\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-8]\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[,\"(9)([34]\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:3[0-36]|4[0-57-9])\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92[56]\"],\"0$1\"],[,\"(9)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"93\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",,,,,,,[8,9,10],[6,7]],[,,\"[12](?:1\\\\d|2(?:[1-3]\\\\d?|7\\\\d)|3[2-8]\\\\d{1,2}|4[2-68]\\\\d{1,2}|5[1-4689]\\\\d{1,2})\\\\d{5}|5[0568]\\\\d{6}\",,,,\"50123456\",,,,[6,7]],[,,\"(?:8(?:[05689]\\\\d|3[01])|9[013-9]\\\\d)\\\\d{5}\",,,,\"88123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"7[05-8]\\\\d{6}\",,,,\"75123456\",,,[8]],\"MN\",976,\"001\",\"0\",,,\"0\",,,,[[,\"([12]\\\\d)(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[,\"([12]2\\\\d)(\\\\d{5,6})\",\n\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[,\"([12]\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[12](?:27|[3-5])\",\"[12](?:27|[3-5]\\\\d)2\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"],\"$1\"],[,\"([12]\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"[12](?:27|[3-5])\",\"[12](?:27|[3-5]\\\\d)[4-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,\"[268]\\\\d{7}\",,,,,,,[8]],[,,\"(?:28[2-57-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",,,,\"28212345\"],[,,\"6(?:[2356]\\\\d{2}|8(?:[02][5-9]|[1478]\\\\d|[356][0-4]))\\\\d{4}\",,,,\"66123456\"],[,,,,,\n,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MO\",853,\"00\",,,,,,,,[[,\"([268]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",,,,\"6702345678\",,,,[7]],[,,\"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",\n,,,\"6702345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MP\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"670\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,\"[56]\\\\d{8}\",,,,,,,[9]],[,,\"596(?:0[0-7]|10|2[7-9]|3[05-9]|4[0-46-8]|[5-7]\\\\d|8[09]|9[4-8])\\\\d{4}\",,,,\"596301234\"],[,,\"69(?:6(?:[0-47-9]\\\\d|5[0-6]|6[0-4])|727)\\\\d{4}\",,\n,,\"696201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MQ\",596,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,\"[2-48]\\\\d{7}\",,,,,,,[8]],[,,\"25[08]\\\\d{5}|35\\\\d{6}|45[1-7]\\\\d{5}\",,,,\"35123456\"],[,,\"[234][0-46-9]\\\\d{6}\",,,,\"22123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MR\",222,\"00\",,,,,,,,[[,\n\"([2-48]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"664491\\\\d{4}\",,,,\"6644912345\",,,,[7]],[,,\"66449[2-6]\\\\d{4}\",,,,\"6644923456\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MS\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],\n,\"664\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,\"[2357-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:[169]\\\\d|3[1-4])|[1-357]\\\\d{2})\\\\d{4}\",,,,\"21001234\"],[,,\"(?:7(?:210|[79]\\\\d{2})|9(?:2(?:1[01]|31)|69[67]|8(?:1[1-3]|89|97)|9\\\\d{2}))\\\\d{4}\",,,,\"96961234\"],[,,\"800[3467]\\\\d{4}\",,,,\"80071234\"],[,,\"5(?:0(?:0(?:37|43)|6\\\\d{2}|70\\\\d|9[0168]\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\",,,,\"50037123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3550\\\\d{4}\",,,,\"35501234\"],\"MT\",356,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,\n[,,\"7117\\\\d{4}\",,,,\"71171234\"],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{5}\",,,,\"50112345\"],,,[,,,,,,,,,[-1]]],MU:[,[,,\"[2-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:2(?:[03478]\\\\d|1[0-7]|6[1-69])|4(?:[013568]\\\\d|2[4-7])|5(?:44\\\\d|471)|6\\\\d{2}|8(?:14|3[129]))\\\\d{4}\",,,,\"2012345\"],[,,\"5(?:2[589]\\\\d|4(?:2[1-389]|[489]\\\\d|7[1-9])|7\\\\d{2}|8(?:[0-689]\\\\d|7[15-8])|9[0-8]\\\\d)\\\\d{4}\",,,,\"52512345\",,,[8]],[,,\"80[012]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"30\\\\d{5}\",,,,\"3012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3(?:20|9\\\\d)\\\\d{4}\",\n,,,\"3201234\",,,[7]],\"MU\",230,\"0(?:0|[2-7]0|33)\",,,,,,\"020\",,[[,\"([2-46-9]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]],[,\"(5\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"5\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,\"[346-8]\\\\d{6,9}|9(?:00\\\\d{7}|\\\\d{6})\",,,,,,,[7,10]],[,,\"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024568]|8[024689]))\\\\d{4}\",,,,\"6701234\",,,[7]],[,,\"(?:46[46]|7[2-9]\\\\d|9[14-9]\\\\d)\\\\d{4}\",,,,\"7712345\",,,[7]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",\n,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MV\",960,\"0(?:0|19)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9(?:0[1-9]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"4[05]0\\\\d{4}\",,,,\"4001234\",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,\"(?:1(?:\\\\d{2})?|[2789]\\\\d{2}|31\\\\d)\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:1[2-9]|21\\\\d{2})\\\\d{5}\",,,,\"1234567\"],[,,\"(?:111|77\\\\d|88\\\\d|99\\\\d)\\\\d{6}\",,,,\"991234567\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],[,,\"31\\\\d{7}\",,,,\"310123456\",,,[9]],\"MW\",265,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(2\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[17-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"31\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,\"[1-9]\\\\d{9,10}\",,,,,,,[10,11],[7,8]],[,,\"(?:33|55|81)\\\\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\\\d{7}\",\n,,,\"2221234567\",,,[10],[7,8]],[,,\"1(?:(?:33|55|81)\\\\d{8}|(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\\\d{7})\",,,,\"12221234567\",,,[11]],[,,\"8(?:00|88)\\\\d{7}\",\n,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,\"300\\\\d{7}\",,,,\"3001234567\",,,[10]],[,,\"500\\\\d{7}\",,,,\"5001234567\",,,[10]],[,,,,,,,,,[-1]],\"MX\",52,\"0[09]\",\"01\",,,\"0[12]|04[45](\\\\d{10})\",\"1$1\",,,[[,\"([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|55|81\"],\"01 $1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]\"],\"01 $1\",,1],[,\"(1)([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"044 $2 $3 $4\",[\"1(?:33|55|81)\"],\"$1\",,1],[,\"(1)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"044 $2 $3 $4\",\n[\"1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])\"],\"$1\",,1]],[[,\"([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|55|81\"],\"01 $1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]\"],\"01 $1\",,1],[,\"(1)([358]\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1(?:33|55|81)\"]],[,\"(1)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,\"[13-9]\\\\d{7,9}\",,,,,,,[8,9,\n10],[6,7]],[,,\"(?:3(?:2(?:0(?:11|2[0-8]|3[0-24-79]|[579]\\\\d|8[0-57-9])|1(?:0[6-9]|1[03-9]|[467]\\\\d|8[0-2]|9[13])|2(?:0[1-3]|2[2-4]|4[0-25-7]|6[0-8]|7[02-689]|8\\\\d|9[5-9])|3(?:0[0-3]|3[0-36]|8[0-35-9]|9[1-3])|6(?:0[0-5]|[139]\\\\d|8[15-8])|7(?:1\\\\d|2[0-7]|3[0-3]|42|7[0-356]|8[0-35-8])|8(?:00|4[78]|5[6-9])|93[58])|3(?:0(?:0[0-35-9]|10|5[01]|8[0-6]|9[39])|1(?:0[1-39]|10|2[02-469]|3[245]|4[0-3589]|6[0-35-9]|7[067]|8[0-57]|9[0-278])|2(?:1[3467]|2[45]|4[1-3]|5[0689]|6[04589]|7[0-3579]|8[0-489]|9[0-27])|3(?:1[7-9]|2[1-6]|4[1-689]|5[89]|6[1-3]|7\\\\d|8[125]|9[236])|6(?:[12]0|3[01]|5[0-256]|6[08]|8[45]))|4(?:0(?:09|[14]\\\\d|2[0-8]|3[12]|5[01]|65)|1(?:0[0-8]|31|4\\\\d|6[12])|2(?:17|5[0-35-9]|6[024-6]|7[0189]|8[057-9]|9\\\\d)|770|8(?:0[0-2]|1[0-3569]|2[01]))|5(?:0(?:2[0-2]|3[0-35-9])|1(?:0[1-3]|1[05]|2[0-6]|31|6[1-7]|9[1258])|270|48[0-5]|5(?:1\\\\d|2[0-6]|4[0-589]|6[125-9]|9[01])|6(?:1[1-4]|2[0-589]|3\\\\d|5[0-3])|7(?:21|40)|8(?:7[06-9]|8[025-9]|9[12]))|6(?:0(?:2[0-28]|3[24-9]|4[246-9]|5[57]|6[13-6]|7[358]|8[1247]|9[0-59])|1(?:[04][0-58]|15|2[02-8]|3[015-9]|5[016-8]|7[7-9]|8[14-9]|9[1-356])|2(?:[05]\\\\d|11|[46][1-3]|7[02-79]|8[015-7])|303|4(?:1[129]|2[01]|3[36]|6[0-2])|690|7(?:3\\\\d|89))|7(?:118|2(?:0[02]|6[01])|4(?:[59]\\\\d|8[01])|6(?:1[01]|2\\\\d|5[0-2]|6[0-69])|7(?:1[0-37-9]|[28]\\\\d|3[1-5]|7[0-3])|8(?:[04]\\\\d|3[129]|59|6[1-356]|7[02-79]|8[02-7]|90)|9(?:10|3[1-3]|4[016-9]|[56]\\\\d|7[12]|8\\\\d))|8(?:0(?:0[08]|11|2[0-7]|5[12]|6\\\\d|7[013-69]|8[0-24]|9[0-5])|100|21[0-36]|3(?:08|1\\\\d|2[0-589]|31)|408|5(?:2[0-35-79]|88)|6(?:0[0-259]|5[5-79]|6[01]|8[46-9]|9[019])|7(?:0[35-8]|2[3-7]|3\\\\d|4[0149]|5[0-2]|6[016-9]|7[5-9]|8[037]|90)|8(?:00|61|7[0-3]|8\\\\d|9[0-4])|9(?:1[1-3]|[2-5]\\\\d|6[1-4689]|8[89]|9[0-689]))|9(?:0(?:1[0-289]|2[15]|5[014-9]|7[04-68]|8[0-256])|1(?:0[0-3568]|3[0-49]|4[015]|7[0-59]|9[15])|2(?:0[0-25-7]|12|2[1-6]|3[1256]|7[14]|8\\\\d)|3[68]8|41[01]|5(?:14|2[01]|4[03-9]|6[5-79]|7[0-2569])))\\\\d|4(?:2(?:0[01]|1[07-9]|2[02-46-9]|38|4[0-28]|5[0-589]|6[0-47-9]|8[0-389]|9[0-38])\\\\d|3(?:0[5-9]|[12][034]|3[0-37]|47|5[168]|6[7-9]|7[0135-8]|8\\\\d|9[0-27-9])\\\\d|4(?:[02-9]\\\\d{2}|1(?:[02-9]\\\\d|10))|5(?:[07]\\\\d{2}|1[0-358]\\\\d|2[1246]\\\\d|3[06-9]\\\\d|4[0589]\\\\d|5[12457-9]\\\\d|6[0-689]\\\\d|8(?:[0-57-9]\\\\d|60)|9(?:[2-57-9]\\\\d|60))|6(?:0[79]|1[0-689]|2[0135-9]|[3-5]\\\\d|6[07-9]|7[23]|8[03-9]|99)\\\\d|7(?:0[0-59]\\\\d|1[04679]\\\\d|2(?:[02-9]\\\\d|10)|[37]\\\\d{2}|4(?:[0178]\\\\d|5[0-6])|5(?:[0-57-9]\\\\d|60)|6[024-689]\\\\d|8[0-79]\\\\d|9(?:[0479]\\\\d|3[01]))|8(?:1[0189]\\\\d|2[046-9]\\\\d|3[058]\\\\d|5[029]\\\\d|6(?:[0689]\\\\d|40)|8[14568]\\\\d|9[0-389]\\\\d)|9(?:0[1368]\\\\d|1[13-9]\\\\d|[27]\\\\d{2}|3(?:[0-368]\\\\d|7[0-3])|4[013-79]\\\\d|5[0-35689]\\\\d|6[0-46-9]\\\\d|8[0-24-9]\\\\d|97\\\\d))|5(?:2(?:0[13589]\\\\d|1[0-2]\\\\d|2[056]\\\\d|3(?:[067]\\\\d|2[01])|4[0-69]\\\\d|5[3-6]\\\\d|8[0-25-9]\\\\d|9[0-469]\\\\d)|3(?:[12][0-38]|3[0-37]|4[89]|5[01346-9]|[67]\\\\d|8[01589]|95)\\\\d|4(?:0[1346]\\\\d|1[02-35-9]\\\\d|2[1379]\\\\d|3[0-46-9]\\\\d|4[013689]\\\\d|[59]\\\\d{2}|6(?:[15-9]\\\\d|20)|7[036-9]\\\\d|8[015-8]\\\\d)|5(?:0[167]\\\\d|17\\\\d|2[025-9]\\\\d|3[035-7]\\\\d|4[0-35-9]\\\\d|8[13]\\\\d|9(?:[124-9]\\\\d|31))|6(?:0[89]\\\\d|1[02-46-8]\\\\d|2[0-69]\\\\d|3(?:[1-367]\\\\d|40)|4[0-689]\\\\d|5(?:[0-24-9]\\\\d|30)|6[1457-9]\\\\d|7\\\\d{2}|8[0-57-9]\\\\d|9[0-389]\\\\d)|7(?:1(?:[024679]\\\\d|80)|2[0-35-8]\\\\d|3[23]\\\\d|4[34]\\\\d|5[0-36-9]\\\\d|6[356-9]\\\\d|7\\\\d{2}|8(?:[23]\\\\d|[01]1)|9(?:[1-689]\\\\d|70))|8(?:0[145-9]\\\\d|1[0-2]\\\\d|2[09]\\\\d|3(?:[058]\\\\d|0[017])|4[016-9]\\\\d|5[02-9]\\\\d|7(?:10|2\\\\d)|8[013589]\\\\d|9[0-57-9]\\\\d)|9[23]0\\\\d)|6(?:2(?:2[1246-9]\\\\d|3[0-5]\\\\d|4[02]\\\\d|5[1-3]\\\\d|[68]\\\\d{2}|7(?:[04-8]\\\\d|10)|9[2-5]\\\\d)|3(?:1(?:[125-9]\\\\d|3[01])|3[0-7]\\\\d|5[0-478]\\\\d|79\\\\d|8[3-578]\\\\d|9[018]\\\\d)|4(?:1[015]|[2-689]\\\\d|7[1-79])\\\\d|5(?:09\\\\d|1(?:10|[2479]\\\\d)|2[1-579]\\\\d|3(?:[0-467]\\\\d|50)|4[0-24-9]\\\\d|5\\\\d{2}|60\\\\d)|6(?:0[13]\\\\d|1[0-57]\\\\d|2[03]\\\\d|3[0-478]\\\\d|4[0-8]\\\\d|5[013-689]\\\\d|6[0-467]\\\\d|[78]\\\\d{2}|9(?:[13-9]\\\\d|20))|7(?:01|2[06-9]|3[367]|5[7-9]|6\\\\d|7[0156]|8[12]|9[0-47-9])\\\\d|85[0-26]\\\\d|9(?:0[167]|10|[57]\\\\d|6[02-9]|8[013-9])\\\\d)|7(?:2(?:0[7-9]|1[016-9]|2[0-8]|[39]\\\\d|4[014]|5[0-79]|6[125-8]|7[1246-9]|8[37-9])\\\\d|3(?:0[0-5]|[35]\\\\d|40|5[0-478]|6[0-5]|8[0-26-8])\\\\d|4(?:0[07-9]|[1-35]\\\\d|6[7-9]|7[57]|8[1-68])\\\\d|5(?:0[04-9]|1[0-68]|2[0-378]|3[0-3]|5\\\\d|6[0-2]|7[018]|8[5-7]|9[05-9])\\\\d|6(?:5[0-24-9]|6[0-3568]|7[0457-9]|8[02-9]|9\\\\d)\\\\d|7(?:0[25-8]\\\\d|1(?:[01]\\\\d|20)|2[0-2]\\\\d|3[489]\\\\d|[457-9]\\\\d{2}|6(?:[0-8]\\\\d|90))|8(?:01[01]|10\\\\d|[289]\\\\d{2}|3(?:[028]\\\\d|10)|50\\\\d|6[0-357-9]\\\\d|7(?:[0235-9]\\\\d|[14]0))|9(?:0(?:[0246-8]\\\\d|10)|[1-4]\\\\d{2}|50\\\\d|6[014589]\\\\d|[7-9]0\\\\d))|8(?:2(?:2(?:[013-5]\\\\d|[28][0-8]|6[016]|7[0-589]|9[0-49])|3(?:[02][0-689]|1[1-59]|[3-7]\\\\d|8[0-389]|9[13])|4(?:0[1-3]|[1-8]\\\\d|9[1-359])|5(?:0[1-7]|[17]\\\\d|20|3[0-26-9]|4[1-9]|5[0-35]|8[0-689]|9[02367])|6(?:[147]\\\\d|2[0-25-9]|39|5[014-9]|6[1-9]|8[1-8]|9[089])|7(?:0[017-9]|1[1-356]|20|3[01457-9]|4[15]|5[0-25]|6[0-6]|70|8[0-2]|9[01378])|8(?:0[3-57-9]|[15]0|2[124-9]|3[01]|4[02-6]|6[02-578]|7\\\\d|8[25-8]|9[04-689]))|3(?:220|3(?:0[089]|10|2[0-7]|3[7-9]|4[0-48])|4(?:0[68]|1[0-478]|2[5-79]|3[024-9]|50|6\\\\d|7[0-57]|8[05]|96)|5(?:4[4578]|55|6[2-9]|70|8[459]|92))|4(?:2(?:[15]\\\\d|2[0-489]|3[124-9])|3(?:0[1-8]|[1-4]\\\\d|5[0-3]|6[1-7]|7[56]|8[0-4]|9[1-578])|4(?:05|80)|555|6(?:1[0-3]|20|3[1-4]|4[0-24-7]|5\\\\d|6[0-2]|71|8[0-47-9]|9[0-689])|7(02|1[79]|21|3[0-2468]|5[0-5]|6[0256]|7[0-8]|8[01589]|9[026-9])|8(?:0[1-9]|1[0-3568]|2[0138]|3[0-4]|4[046-9]|5[06]|6\\\\d|7[0-579]|80|9[0-8]))|5(?:2(?:0[0-26]|1\\\\d|2[0-5]|3[18]|4[0-2]|6[3-68]|70|8[025-9]|9[05-9])|3(?:10|2\\\\d|31|95)|4(?:0[1-7]|[1-4]\\\\d|5[02-6]|6[0-3]|7[0-245]|8[125]|9[1-6])|5(?:40|55)|6(?:0[1459]|1[0-8]|2[0-36-8]|3[0-35-8]|[45]\\\\d|6[0-8]|80)|7(?:1[07-9]|20|3[3-9]|4[02-4]|5[05689]|6[015-9]|7\\\\d|8[045]|9[0-6]))|6(?:2(?:01|3[12]|5[1-7]|60|8[1-6]|9[0-8])|3(?:0[0137]|[134]\\\\d|2[0-8]|[59][01]|60|[78]1)|4(?:2[2-4]|49|5[17]|6\\\\d|7[0-46-9]|8[0-689])|5(?:0[6-8]|55|8[0149]|90)|8(?:5\\\\d|[68]0)|9(?:5[12]|81))|7(?:2(?:0[189]|[12][1-9]|3[0-47]|50)|3(?:[01][1-9]|3\\\\d|4[0-245]|6[4-9]|7[237-9]|9[12])|4(?:[0-2]\\\\d|3[167-9]|[45][0-3]|6[0-8]|7[25-9]|8[0-6]|90)|5(?:0[1-9]|[89]\\\\d)|7(?:1[89]|[27]\\\\d|3[013-9]|4[0-8]|50|6[01568]|82)|8(?:[03][1-3]|1[0-28]|2[0-38]|48|5[0-4]|6[1-3]|7[124]|8[013-57-9]|9[07]))|8(?:2(?:0[13-7]|[1-9]\\\\d)|3(?:0[1-47-9]|[128]\\\\d|3[0-4]|4[1-9]|5[0-35-7]|6[0-46-9]|9[3-7])|4(?:0[1-58]|1[1-5]|[2-57-9]\\\\d|69)|5(?:1[1-35-9]|2\\\\d|3[2-8]|52)|6(?:0[2-9]|1[1-8]|[23]\\\\d|41|5[12367]|6[1-9]|7[14-9]|8[02-8]|9[05])|7(?:0[1-589]|[1-35-8]\\\\d|4[0-7]|9[0-46-9])|8(?:01|30|5[0-48]|6[13]|7\\\\d|8[013-689]|9[24-9])|9(?:0[2-4689]|1\\\\d|2[08]|3[18]|4[03]|59|6[0-36-9]|7[0-35-79]|8[1235]))|9(?:2(?:[057][1-9]|[1-3]\\\\d|4[0-8]|6[1-5]|8[015-9]|9[04-6])|300|4(?:01|36|6[1-6]|[89][12])|5(?:0[25689]|1\\\\d|2[0134]|3[1-8]|5[17]|6[0-35-9]|7[0-7]|91)|6(?:1[1-9]|2[23]|3[0-4]|6[03-9]|7[0-7])|7(?:0[1-68]|1[1-8]|2[25-9]|3[056]|4[4-9]|[5-8]\\\\d|9[0-46-9])|8(?:0[1-7]|[189]\\\\d|2[1-46]|4[1-689]|5[0-79]|6[1-9]|71)|9(?:0[1-3]|1\\\\d|2[0-35-7]|3[67]|4[12]|5[0-249]|6[5-9]|75|8[1-6])))|9(?:2(?:0[458]\\\\d|1[2-57]\\\\d|2[0-589]\\\\d|[39]\\\\d{2}|4(?:[02-9]\\\\d|10)|5(?:[024-6]\\\\d|[7-9]0)|6(?:[03-9]\\\\d|20)|7[0-26-9]\\\\d|8(?:[0-24-68]\\\\d|7[01]))|3(?:0[0-2689]\\\\d|1(?:[0235]\\\\d|1[0-2]|4[01])|2(?:0[01]|[1-57-9]\\\\d|6[0-2])|3(?:00|1[0-4]|2\\\\d)|4[05]\\\\d|5[0-3568]\\\\d|6(?:[1-357-9]\\\\d|60)|[78]0\\\\d)|4(?:0[24578]\\\\d|1[02-57-9]\\\\d|2\\\\d{2}|3(?:[0278]\\\\d|1[01]|60)|4[013579]\\\\d|5[0-8]\\\\d|6[0678]\\\\d|7[013-9]\\\\d|8[01569]\\\\d)|5(0(?:[589]\\\\d|7[01])|1\\\\d{2}|2[0159]\\\\d|3[14689]\\\\d|4[0-46-9]\\\\d|5[0-35-9]\\\\d|6[0156-8]\\\\d|7[0-35]\\\\d|8[0-7]\\\\d|9[0-3589]\\\\d)|6(?:0[269]\\\\d|[12]\\\\d{2}|3[0-57-9]\\\\d|44[0-2]|5[01379]\\\\d|6[02-9]\\\\d|7[69]\\\\d|8(?:[0-24-8]\\\\d|30)|9(?:[0-24-9]\\\\d|3[01]))|7(?:0[0136-8]|1[02-4]|2[156]|3[258]|[489]\\\\d|5[0-589]|6[024-9]|7[0-689])\\\\d|8(?:0(?:0[01]|1\\\\d)|1[3-9]\\\\d|[23]\\\\d{2}|4[0-24-689]\\\\d|5[0-689]\\\\d|6[02-9]\\\\d|7(?:[01]0|[2-4]\\\\d)|888)|9(?:00\\\\d|1[2-57-9]\\\\d|2(?:00|1[01]|[238]\\\\d)|3(?:[2-467]\\\\d|50)|4[4-9]\\\\d|5(?:[0-2457-9]\\\\d|60)|6[0156]\\\\d|7[04-9]\\\\d|8[01]\\\\d)))\\\\d{3}\",\n,,,\"323856789\",,,[8,9],[6,7]],[,,\"1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])\\\\d|1(?:[1-5]\\\\d{2}|6(?:0[5-9]|[1-9]\\\\d))\\\\d|[23679][2-9]\\\\d{2}|4(?:[235-9]\\\\d{2}|400)|59\\\\d{3}|8(?:1[23]\\\\d|[236]\\\\d{2}|4(?:[06]\\\\d|7[0-4])|5[7-9]\\\\d|7[016-9]\\\\d|8(?:[01]\\\\d|[27][0-4])|9[0-8]\\\\d))\\\\d{4}\",,,,\"123456789\",,,[9,10]],[,,\"1[378]00\\\\d{6}\",,,,\"1300123456\",,,[10]],[,,\"1600\\\\d{6}\",,,,\"1600123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"154(?:6(?:0\\\\d|1[0-3])|8(?:[25]1|4[0189]|7[0-4679]))\\\\d{4}\",,,,\"1546012345\",\n,,[10]],\"MY\",60,\"00\",\"0\",,,\"0\",,,,[[,\"([4-79])(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[,\"(3)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[,\"([18]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1[02-46-9][1-9]|8\"],\"0$1\"],[,\"(1)([36-8]00)(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]0\",\"1[36-8]00\"]],[,\"(11)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"11\"],\"0$1\"],[,\"(15[49])(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15[49]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,\"[28]\\\\d{7,8}\",,,,,,,[8,9]],\n[,,\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",,,,\"21123456\",,,[8]],[,,\"8[2-7]\\\\d{7}\",,,,\"821234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MZ\",258,\"00\",,,,,,,,[[,\"([28]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-7]\"]],[,\"(80\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"80\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,\"[68]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"6(?:1(?:17|2(?:[0189]\\\\d|[2-6]|7\\\\d?)|3(?:[01378]|2\\\\d)|4(?:[024]|10?|3[15]?)|69|7[014])|2(?:17|5(?:[0-36-8]|4\\\\d?)|69|70)|3(?:17|2(?:[0237]\\\\d?|[14-689])|34|6[289]|7[01]|81)|4(?:17|2(?:[012]|7\\\\d?)|4(?:[06]|1\\\\d?)|5(?:[01357]|[25]\\\\d?)|69|7[01])|5(?:17|2(?:[0459]|[23678]\\\\d?)|69|7[01])|6(?:17|2(?:5|6\\\\d?)|38|42|69|7[01])|7(?:17|2(?:[569]|[234]\\\\d?)|3(?:0\\\\d?|[13])|6[89]|7[01]))\\\\d{4}\",\n,,,\"61221234\"],[,,\"(?:60|8[125])\\\\d{7}\",,,,\"811234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"8701\\\\d{5}\",,,,\"870123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8(?:3\\\\d{2}|86)\\\\d{5}\",,,,\"88612345\"],\"NA\",264,\"00\",\"0\",,,\"0\",,,,[[,\"(8\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8[1-35]\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(88)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(870)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"870\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nNC:[,[,,\"[2-57-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\",,,,\"201234\"],[,,\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\",,,,\"751234\"],[,,,,,,,,,[-1]],[,,\"36\\\\d{4}\",,,,\"366711\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NC\",687,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-46-9]|5[0-4]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NE:[,[,,\"[0289]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:20|3[1-7]|4[134]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\",\n,,,\"20201234\"],[,,\"(?:8[04589]|9\\\\d)\\\\d{6}\",,,,\"93123456\"],[,,\"08\\\\d{6}\",,,,\"08123456\"],[,,\"09\\\\d{6}\",,,,\"09123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NE\",227,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"09|[289]\"]],[,\"(08)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,,\"[13]\\\\d{5}\",,,,,,,[6],[5]],[,,\"(?:1(?:06|17|28|39)|3[012]\\\\d)\\\\d{3}\",,,,\"106609\",,,,[5]],[,,\"3[58]\\\\d{4}\",,,,\"381234\",,,,[5]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NF\",672,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,\"[1-6]\\\\d{5,8}|9\\\\d{5,9}|[78]\\\\d{5,13}\",,,,,,,[7,8,10,11,12,13,14],[5,6]],[,,\"[12]\\\\d{6,7}|9(?:0[3-9]|[1-9]\\\\d)\\\\d{5}|(?:3\\\\d|4[023568]|5[02368]|6[02-469]|7[4-69]|8[2-9])\\\\d{6}|(?:4[47]|5[14579]|6[1578]|7[0-357])\\\\d{5,6}|(?:78|41)\\\\d{5}\",,,,\"12345678\",\n,,[7,8],[5,6]],[,,\"(?:1(?:7[34]\\\\d|8(?:04|[124579]\\\\d|8[0-3])|95\\\\d)|287[0-7]|3(?:18[1-8]|88[0-7]|9(?:8[5-9]|6[1-5]))|4(?:28[0-2]|6(?:7[1-9]|8[02-47])|88[0-2])|5(?:2(?:7[7-9]|8\\\\d)|38[1-79]|48[0-7]|68[4-7])|6(?:2(?:7[7-9]|8\\\\d)|4(?:3[7-9]|[68][129]|7[04-69]|9[1-8])|58[0-2]|98[7-9])|7(?:38[0-7]|69[1-8]|78[2-4])|8(?:28[3-9]|38[0-2]|4(?:2[12]|3[147-9]|5[346]|7[4-9]|8[014-689]|90)|58[1-8]|78[2-9]|88[5-7])|98[07]\\\\d)\\\\d{4}|(?:70(?:[1-689]\\\\d|7[0-3])|8(?:0(?:1[01]|[2-9]\\\\d)|1(?:[0-8]\\\\d|9[01]))|90[235-9]\\\\d)\\\\d{6}\",\n,,,\"8021234567\",,,[8,10]],[,,\"800\\\\d{7,11}\",,,,\"80017591759\",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NG\",234,\"009\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-6]|7(?:0[1-9]|[1-79])|8[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"70|8[01]|90[235-9]\"],\"0$1\"],[,\"([78]00)(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]00\"],\"0$1\"],[,\"([78]00)(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",\n[\"[78]00\"],\"0$1\"],[,\"(78)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"700\\\\d{7,11}\",,,,\"7001234567\",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,\"[125-8]\\\\d{7}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|7[5-8]\\\\d|8\\\\d{2})\\\\d{5}\",,,,\"81234567\"],[,,\"1800\\\\d{4}\",,,,\"18001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NI\",505,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,\"1\\\\d{4,8}|[2-7]\\\\d{8}|[89]\\\\d{6,9}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d{2})\\\\d{6}\",,,,\"101234567\",,,[9]],[,,\"6[1-58]\\\\d{7}\",,,,\"612345678\",,,[9]],[,,\"800\\\\d{4,7}\",,,,\"8001234\",,,[7,8,9,10]],[,,\"90[069]\\\\d{4,7}\",\n,,,\"9061234\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6760|85\\\\d{2})\\\\d{5}\",,,,\"851234567\",,,[9]],\"NL\",31,\"00\",\"0\",,,\"0\",,,,[[,\"([1-578]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[4578]\"],\"0$1\"],[,\"([1-5]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(6)(\\\\d{8})\",\"$1 $2\",[\"6[0-57-9]\"],\"0$1\"],[,\"(66)(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(14)(\\\\d{3,4})\",\"$1 $2\",[\"14\"],\"$1\"],[,\"([89]0\\\\d)(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\n\"0$1\"]],,[,,\"66\\\\d{7}\",,,,\"662345678\",,,[9]],,,[,,\"140(?:1(?:[035]|[16-8]\\\\d)|2(?:[0346]|[259]\\\\d)|3(?:[03568]|[124]\\\\d)|4(?:[0356]|[17-9]\\\\d)|5(?:[0358]|[124679]\\\\d)|7\\\\d|8[458])\",,,,\"14023\",,,[5,6]],[,,\"140(?:1(?:[035]|[16-8]\\\\d)|2(?:[0346]|[259]\\\\d)|3(?:[03568]|[124]\\\\d)|4(?:[0356]|[17-9]\\\\d)|5(?:[0358]|[124679]\\\\d)|7\\\\d|8[458])|8[478]\\\\d{7}\",,,,\"14020\",,,[5,6,9]],,,[,,,,,,,,,[-1]]],NO:[,[,,\"0\\\\d{4}|[2-9]\\\\d{7}\",,,,,,,[5,8]],[,,\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",,,,\"21234567\",\n,,[8]],[,,\"(?:4[015-8]|5[89]|9\\\\d)\\\\d{6}\",,,,\"40612345\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"NO\",47,\"00\",,,,,,,,[[,\"([489]\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]\"]],[,\"([235-7]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,\"0\\\\d{4}|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d{2})\\\\d{3}\",\n,,,\"01234\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],NP:[,[,,\"[1-8]\\\\d{7}|9(?:[1-69]\\\\d{6,8}|7[2-6]\\\\d{5,7}|8\\\\d{8})\",,,,,,,[8,10],[6,7]],[,,\"(?:1[0-6]\\\\d|2[13-79][2-6]|3[135-8][2-6]|4[146-9][2-6]|5[135-7][2-6]|6[13-9][2-6]|7[15-9][2-6]|8[1-46-9][2-6]|9[1-79][2-6])\\\\d{5}\",,,,\"14567890\",,,[8],[6,7]],[,,\"9(?:6[0-3]|7[245]|8[0-24-68])\\\\d{7}\",,,,\"9841234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NP\",977,\"00\",\"0\",,,\"0\",,,,[[,\"(1)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-69]|7[15-9])\"],\"0$1\"],[,\"(9\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"9(?:6[013]|7[245]|8)\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,\"[458]\\\\d{6}\",,,,,,,[7]],[,,\"(?:444|888)\\\\d{4}\",,,,\"4441234\"],[,,\"55[4-9]\\\\d{4}\",,,,\"5551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NR\",674,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],NU:[,[,,\"[1-5]\\\\d{3}\",,,,,,,[4]],[,,\"[34]\\\\d{3}\",,,,\"4002\"],[,,\"[125]\\\\d{3}\",,,,\"1234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NU\",683,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NZ:[,[,,\"6[235-9]\\\\d{6}|[2-57-9]\\\\d{7,9}\",,,,,,,[8,9,10],[7]],[,,\"(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}|24099\\\\d{3}\",,,,\"32345678\",,,[8],[7]],[,,\"2(?:[028]\\\\d{7,8}|1\\\\d{6,8}|[79]\\\\d{7})\",,,,\"211234567\"],[,,\"508\\\\d{6,7}|80\\\\d{6,8}\",\n,,,\"800123456\"],[,,\"90\\\\d{6,7}\",,,,\"900123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,\"70\\\\d{7}\",,,,\"701234567\",,,[9]],[,,,,,,,,,[-1]],\"NZ\",64,\"0(?:0|161)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"240|[346]|7[2-57-9]|9[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:1[1-9]|[69]|7[0-35-9])|70|86\"],\"0$1\"],[,\"(2\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[028]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"2(?:10|74)|5|[89]0\"],\"0$1\"]],,[,,\"[28]6\\\\d{6,7}\",,,,\"26123456\",,,[8,9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],OM:[,[,,\"(?:5|[279]\\\\d)\\\\d{6}|800\\\\d{5,6}\",,,,,,,[7,8,9]],[,,\"2[2-6]\\\\d{6}\",,,,\"23123456\",,,[8]],[,,\"7[19]\\\\d{6}|9(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"92123456\",,,[8]],[,,\"8007\\\\d{4,5}|500\\\\d{4}\",,,,\"80071234\"],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"OM\",968,\"00\",,,,,,,,[[,\"(2\\\\d)(\\\\d{6})\",\"$1 $2\",[\"2\"]],[,\"([79]\\\\d{3})(\\\\d{4})\",\n\"$1 $2\",[\"[79]\"]],[,\"([58]00)(\\\\d{4,6})\",\"$1 $2\",[\"[58]00\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,\"[1-9]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|[68][58]|7[0167]|9[39])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[026-9])|3(?:[089]\\\\d|1[014-7]|2[0-35]|33|4[0-579]|55|6[068]|7[06-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[05]|7[0-24-9]|8[7-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",\n,,,\"2001234\",,,[7]],[,,\"(?:1[16]1|21[89]|8(?:1[01]|7[23]))\\\\d{4}|6(?:[02-9]\\\\d|1[0-5])\\\\d{5}\",,,,\"61234567\"],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",,,,\"8601234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PA\",507,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"6\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,\"[14-9]\\\\d{7,8}\",,,,,,,[8,9],[6,7]],[,,\"(?:1\\\\d|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])\\\\d{6}\",\n,,,\"11234567\",,,[8],[6,7]],[,,\"9\\\\d{8}\",,,,\"912345678\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"805\\\\d{5}\",,,,\"80512345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,\"80[24]\\\\d{5}\",,,,\"80212345\",,,[8]],[,,,,,,,,,[-1]],\"PE\",51,\"19(?:1[124]|77|90)00\",\"0\",\" Anexo \",,\"0\",,,,[[,\"(1)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[,\"([4-8]\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[4-7]|8[2-4]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,\"4\\\\d{5,7}|8\\\\d{7}\",,,,,,,[6,8]],[,,\"4(?:[09][45689]\\\\d|4)\\\\d{4}\",,,,\"40412345\"],[,,\"8[79]\\\\d{6}\",,,,\"87123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PF\",689,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4[09]|8[79]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]]],,[,,,,,,,,,[-1]],,,[,,\"44\\\\d{4}\",,,,\"441234\",,,[6]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PG:[,[,,\"[1-9]\\\\d{6,7}\",,\n,,,,,[7,8]],[,,\"(?:3[0-2]\\\\d|4[257]\\\\d|5[34]\\\\d|64[1-9]|77(?:[0-24]\\\\d|30)|85[02-46-9]|9[78]\\\\d)\\\\d{4}\",,,,\"3123456\",,,[7]],[,,\"7(?:[0-689]\\\\d|75)\\\\d{5}\",,,,\"70123456\",,,[8]],[,,\"180\\\\d{4}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"2(?:0[0-47]|7[568])\\\\d{4}\",,,,\"2751234\",,,[7]],\"PG\",675,\"140[1-3]|00\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[13-689]|27\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"20|7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,\n[,,\"1\\\\d{10,12}|2\\\\d{5,7}|[3-7]\\\\d{8}|8\\\\d{7,9}|9\\\\d{9}\",,,,,,,[6,8,9,10,11,12,13],[5,7]],[,,\"2\\\\d{5}(?:\\\\d{2})?|(?:3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\\\d{7}|88(?:22\\\\d{6}|42\\\\d{4})\",,,,\"21234567\",,,[6,8,9,10],[5,7]],[,,\"(?:81[37]|9(?:0[5-9]|1[024-9]|2[0-35-9]|3[02-9]|4[235-9]|5[056]|6[5-7]|7[34-79]|89|9[4-9]))\\\\d{7}\",,,,\"9051234567\",,,[10]],[,,\"1800\\\\d{7,9}\",,,,\"180012345678\",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PH\",63,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[,\"(2)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[,\"([3-8]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"81|9\"],\n\"0$1\"],[,\"(1800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"180\",\"1800\"]],[,\"(1800)(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"180\",\"1800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,\"1\\\\d{8}|[2-8]\\\\d{5,11}|9(?:[013-9]\\\\d{4,10}|2\\\\d(?:111\\\\d{6}|\\\\d{3,7}))\",,,,,,,[8,9,10,11,12],[6,7]],[,,\"(?:21|42)[2-9]\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}|58[126]\\\\d{7}\",\n,,,\"2123456789\",,,[9,10],[6,7,8]],[,,\"3(?:[014]\\\\d|2[0-5]|3[0-7]|55|64)\\\\d{7}\",,,,\"3012345678\",,,[10]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,\"122\\\\d{6}\",,,,\"122044444\",,,[9]],[,,,,,,,,,[-1]],\"PK\",92,\"00\",\"0\",,,\"0\",,,,[[,\"([89]00)(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[89]00\"],\"0$1\"],[,\"(1\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"1\"],\"$1\"],[,\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",\n[\"2[349]|45|54|60|72|8[2-5]|9[2-469]\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-469])\\\\d[2-9]\"],\"(0$1)\"],[,\"(58\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"58[126]\"],\"(0$1)\"],[,\"(3\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{2})(111)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1\",\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)11\",\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)111\"],\"(0$1)\"],[,\"(\\\\d{3})(111)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[349]|45|54|60|72|8[2-5]|9[2-9]\",\n\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d1\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d11\",\"(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\\\d111\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",,,,\"21111825888\",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,\"[1-57-9]\\\\d{6,8}|6\\\\d{5,8}\",,,,,,,[6,7,8,9]],[,,\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:\\\\d{7}|19\\\\d{3})\",\n,,,\"123456789\",,,[7,9]],[,,\"(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",,,,\"512345678\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"70[01346-8]\\\\d{6}\",,,,\"701234567\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"39\\\\d{7}\",,,,\"391234567\",,,[9]],\"PL\",48,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11[68]|64\"]],[,\"(\\\\d{5})\",\"$1\",[\"19\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\n\"$1 $2 $3\",[\"64\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"26|39|45|5[0137]|6[0469]|7[02389]|8[08]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[14]|2[0-57-9]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]\"]]],,[,,\"64\\\\d{4,7}\",,,,\"641234567\"],,,[,,,,,,,,,[-1]],[,,\"804\\\\d{6}\",,,,\"804123456\",,,[9]],,,[,,,,,,,,,[-1]]],PM:[,[,,\"[45]\\\\d{5}\",,,,,,,[6]],[,,\"(?:4[1-3]|50)\\\\d{4}\",,,,\"411234\"],[,,\"(?:4[02-4]|5[05])\\\\d{4}\",,,,\"551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],\"PM\",508,\"00\",\"0\",,,\"0\",,,,[[,\"([45]\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],\n[,,,,,,,,,[-1]],\"PR\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"787|939\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,\"1\\\\d{9}|[24589]\\\\d{7,8}\",,,,,,,[8,9,10],[7]],[,,\"(?:22[234789]|42[45]|82[01458]|92[369])\\\\d{5}\",,,,\"22234567\",,,[8],[7]],[,,\"5[69]\\\\d{7}\",,,,\"599123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PS\",970,\"00\",\"0\",,,\"0\",,,,[[,\"([2489])(2\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]2\"],\n\"0$1\"],[,\"(5[69]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5[69]\"],\"0$1\"],[,\"(1[78]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[78]0\",\"1[78]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,\"[2-46-9]\\\\d{8}\",,,,,,,[9]],[,,\"2(?:[12]\\\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\\\d{6}\",,,,\"212345678\"],[,,\"9(?:[1236]\\\\d{2}|480)\\\\d{5}\",,,,\"912345678\"],[,,\"80[02]\\\\d{6}\",,,,\"800123456\"],[,,\"6(?:0[178]|4[68])\\\\d{6}|76(?:0[1-57]|1[2-47]|2[237])\\\\d{5}\",,,,\"760123456\"],[,,\n\"80(?:8\\\\d|9[1579])\\\\d{5}\",,,,\"808123456\"],[,,\"884[0-4689]\\\\d{5}\",,,,\"884123456\"],[,,\"30\\\\d{7}\",,,,\"301234567\"],\"PT\",351,\"00\",,,,,,,,[[,\"(2\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[,\"([2-46-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[3-9]|[346-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7(?:0(?:7\\\\d|8[17]))\\\\d{5}\",,,,\"707123456\"],,,[,,\"600\\\\d{6}\",,,,\"600110000\"]],PW:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\",,,,\"2771234\"],\n[,,\"(?:6[234689]0|77\\\\d|88[0-4])\\\\d{4}\",,,,\"6201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PW\",680,\"01[12]\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,\"5[0-5]\\\\d{4,7}|[2-46-9]\\\\d{5,8}\",,,,,,,[6,7,8,9],[5]],[,,\"(?:[26]1|3[289]|4[124678]|7[123]|8[1236])\\\\d{5,7}|(?:2(?:2[4568]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51)|4(?:18|2[45]|3[12]|5[13]|64|71|9[1-47])|5(?:[1-4]\\\\d|5[0234])|6(?:3[1-3]|44|7[1-4678])|7(?:17|4[0-4]|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",\n,,,\"212345678\",,,[7,8,9],[5,6]],[,,\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",,,,\"961456789\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8700[0-4]\\\\d{4}\",,,,\"870012345\",,,[9]],\"PY\",595,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9[1-9]\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"870\",\"8700\"]],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"[2-8][1-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8][1-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[2-9]0\\\\d{4,7}\",,,,\"201234567\"],,,[,,,,,,,,,[-1]]],QA:[,[,,\"[2-8]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"4[04]\\\\d{6}\",,,,\"44123456\",,,[8]],[,,\"[3567]\\\\d{7}\",,,,\"33123456\",,,[8]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"QA\",974,\"00\",,,,,,,,[[,\n\"([28]\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[28]\"]],[,\"([3-7]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]],,[,,\"2(?:[12]\\\\d|61)\\\\d{4}\",,,,\"2123456\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,\"[268]\\\\d{8}\",,,,,,,[9]],[,,\"262\\\\d{6}\",,,,\"262161234\"],[,,\"69(?:2\\\\d{2}|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[05]|6[0-26]|7[0-27]|8[0-38]|9[0-479]))\\\\d{4}\",,,,\"692123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89[1-37-9]\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\",,,,\"810123456\"],[,,,,,,,\n,,[-1]],[,,,,,,,,,[-1]],\"RE\",262,\"00\",\"0\",,,\"0\",,,,[[,\"([268]\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[268]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,\"262|69|8\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,\"[23]\\\\d{5,8}|[7-9]\\\\d{8}\",,,,,,,[6,9]],[,,\"2(?:1(?:\\\\d{7}|9\\\\d{3})|[3-6](?:\\\\d{7}|\\\\d9\\\\d{2}))|3(?:1\\\\d{4}(?:\\\\d{3})?|[3-6]\\\\d{7})\",,,,\"211234567\"],[,,\"7(?:[02-7]\\\\d{2}|1(?:[01]\\\\d|20)|8[03-8]\\\\d|99\\\\d)\\\\d{5}\",,,,\"712034567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[036]\\\\d{6}\",\n,,,\"900123456\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RO\",40,\"00\",\"0\",\" int \",,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23][3-7]|[7-9]\"],\"0$1\"],[,\"(2\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"37\\\\d{7}\",,,,\"372123456\",,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,\"[126-9]\\\\d{4,11}|3(?:[0-79]\\\\d{3,10}|8[2-9]\\\\d{2,9})\",,,,,\n,,[6,7,8,9,10,11,12],[5]],[,,\"(?:1(?:[02-9][2-9]|1[1-9])\\\\d|2(?:[0-24-7][2-9]\\\\d|[389](?:0[2-9]|[2-9]\\\\d))|3(?:[0-8][2-9]\\\\d|9(?:[2-9]\\\\d|0[2-9])))\\\\d{3,8}\",,,,\"10234567\",,,[7,8,9,10,11,12],[5,6]],[,,\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",,,,\"601234567\",,,[8,9,10]],[,,\"800\\\\d{3,9}\",,,,\"80012345\"],[,,\"(?:90[0169]|78\\\\d)\\\\d{3,7}\",,,,\"90012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RS\",381,\"00\",\"0\",,,\"0\",,,,[[,\"([23]\\\\d{2})(\\\\d{4,9})\",\"$1 $2\",[\"(?:2[389]|39)0\"],\"0$1\"],[,\"([1-3]\\\\d)(\\\\d{5,10})\",\"$1 $2\",\n[\"1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])\"],\"0$1\"],[,\"(6\\\\d)(\\\\d{6,8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{3,9})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(7[26])(\\\\d{4,9})\",\"$1 $2\",[\"7[26]\"],\"0$1\"],[,\"(7[08]\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"7[08]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7[06]\\\\d{4,10}\",,,,\"700123456\"],,,[,,,,,,,,,[-1]]],RU:[,[,,\"[347-9]\\\\d{9}\",,,,,,,[10]],[,,\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",\n,,,\"3011234567\"],[,,\"9\\\\d{9}\",,,,\"9123456789\"],[,,\"80[04]\\\\d{7}\",,,,\"8001234567\"],[,,\"80[39]\\\\d{7}\",,,,\"8091234567\"],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\"],[,,,,,,,,,[-1]],\"RU\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"[1-79]\"],\"$1\",,1],[,\"([3489]\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",,1],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1]],[[,\"([3489]\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",,1],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,\"[027-9]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"2[258]\\\\d{7}|06\\\\d{6}\",,,,\"250123456\"],[,,\"7[238]\\\\d{7}\",,,,\"720123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900\\\\d{6}\",,,,\"900123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RW\",250,\"00\",\"0\",,,\"0\",,,,[[,\"(2\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[,\"([7-9]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(0\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,\"[15]\\\\d{8}|8\\\\d{9}|92\\\\d{7}\",,,,,,,[9,10],[7]],[,,\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",,,,\"112345678\",,,[9],[7]],[,,\"(?:5(?:[013-689]\\\\d|7[0-36-8])|811\\\\d)\\\\d{6}\",,,,\"512345678\"],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"92[05]\\\\d{6}\",,,,\"920012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SA\",966,\"00\",\"0\",,,\"0\",,,,[[,\"(1\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[1-467]\"],\n\"0$1\"],[,\"(5\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(92\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"92\"],\"$1\"],[,\"(800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"],\"$1\"],[,\"(811)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"811\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SB:[,[,,\"[1-9]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",,,,\"40123\",,,[5]],[,,\"48\\\\d{3}|7(?:30|[46-8]\\\\d|5[025-9]|9[0-5])\\\\d{4}|8[4-9]\\\\d{5}|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8])\\\\d{4}\",\n,,,\"7421234\"],[,,\"1[38]\\\\d{3}\",,,,\"18123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[12]\\\\d{3}\",,,,\"51123\",,,[5]],\"SB\",677,\"0[01]\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[7-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,\"[24689]\\\\d{5,6}\",,,,,,,[7]],[,,\"4[2-46]\\\\d{5}\",,,,\"4217123\"],[,,\"2[5-8]\\\\d{5}\",,,,\"2510123\"],[,,\"8000\\\\d{3}\",,,,\"8000000\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:64\\\\d|971)\\\\d{4}\",,,,\"6412345\"],\"SC\",248,\"0(?:[02]|10?)\",\n,,,,,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1(?:5\\\\d|8[3567])\\\\d{6}\",,,,\"151231234\"],[,,\"(?:1[0-2]|9[0-3569])\\\\d{7}\",,,,\"911231234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SD\",249,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,\"[1-35-9]\\\\d{5,11}|4\\\\d{6,8}\",\n,,,,,,[6,7,8,9,10,12]],[,,\"1(?:0[1-8]\\\\d{6}|[136]\\\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)\\\\d{5,6})|2(?:[136]\\\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])\\\\d{5,6})|3(?:[356]\\\\d{5,7}|(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\\\d{5,6})|4(?:[0246]\\\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\\\d{5,6})|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])\\\\d{5,6}|6(?:[03]\\\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\\\d{5,6})|8\\\\d{6,8}|9(?:0[1-9]\\\\d{4,6}|(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\\\d{5,6})\",\n,,,\"8123456\",,,[7,8,9]],[,,\"7[02369]\\\\d{7}\",,,,\"701234567\",,,[9]],[,,\"20\\\\d{4,7}\",,,,\"20123456\",,,[6,7,8,9]],[,,\"649\\\\d{6}|9(?:00|39|44)[1-8]\\\\d{3,6}\",,,,\"9001234567\",,,[7,8,9,10]],[,,\"77(?:0\\\\d{3}(?:\\\\d{3})?|[1-7]\\\\d{6})\",,,,\"771234567\",,,[6,9]],[,,\"75[1-8]\\\\d{6}\",,,,\"751234567\",,,[9]],[,,,,,,,,,[-1]],\"SE\",46,\"00\",\"0\",,,\"0\",,,,[[,\"(8)(\\\\d{2,3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"([1-69]\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90\"],\"0$1\"],\n[,\"([1-469]\\\\d)(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"],\"0$1\"],[,\"(7\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"7\"],\"0$1\"],[,\"(77)(\\\\d{2})(\\\\d{2})\",\n\"$1-$2$3\",[\"77\"],\"0$1\"],[,\"(20)(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\"],[,\"(9[034]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9[034]\"],\"0$1\"],[,\"(9[034]\\\\d)(\\\\d{4})\",\"$1-$2\",[\"9[034]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"25[245]|67[3-6]\"],\"0$1\"]],[[,\"(8)(\\\\d{2,3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"([1-69]\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90\"]],[,\"([1-469]\\\\d)(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90\"]],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])\"]],[,\"(7\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7\"]],[,\"(77)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"77\"]],[,\"(20)(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"20\"]],[,\"(9[034]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"9[034]\"]],[,\"(9[034]\\\\d)(\\\\d{4})\",\"$1 $2\",[\"9[034]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"25[245]|67[3-6]\"]]],[,,\"74[02-9]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"(?:25[245]|67[3-6])\\\\d{9}\",,,,\"254123456789\",,,[12]]],SG:[,[,,\"[36]\\\\d{7}|[17-9]\\\\d{7,10}\",,,,,,,[8,10,11]],[,,\"6[1-9]\\\\d{6}\",,,,\"61234567\",,,[8]],[,,\"(?:8[1-8]|9[0-8])\\\\d{6}\",,,,\"81234567\",,,[8]],[,,\"1?800\\\\d{7}\",,,,\"18001234567\",,,[10,11]],[,,\"1900\\\\d{7}\",,,,\"19001234567\",\n,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[12]\\\\d{6}\",,,,\"31234567\",,,[8]],\"SG\",65,\"0[0-3]\\\\d\",,,,,,,,[[,\"([3689]\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|8[1-9]\"]],[,\"(1[89]00)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"]],[,\"(7000)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"700\",\"7000\"]],[,\"(800)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"800\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7000\\\\d{7}\",,,,\"70001234567\",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,\"[256]\\\\d{4}|8\\\\d{3}\",,,,,,,[4,5]],[,,\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d{2}\",,,,\"22158\"],\n[,,\"[56]\\\\d{4}\",,,,\"51234\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"262\\\\d{2}\",,,,\"26212\",,,[5]],\"SH\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,\"[1-7]\\\\d{6,7}|[89]\\\\d{4,7}\",,,,,,,[5,6,7,8]],[,,\"(?:1\\\\d|[25][2-8]|3[24-8]|4[24-8]|7[3-8])\\\\d{6}\",,,,\"11234567\",,,[8],[7]],[,,\"(?:[37][01]\\\\d|4[0139]\\\\d|51\\\\d|6(?:[48]\\\\d|5[15-7]|9[69]))\\\\d{5}\",,,,\"31234567\",,,[8]],[,,\"80\\\\d{4,6}\",,,,\"80123456\",,,[6,7,8]],[,,\"90\\\\d{4,6}|89[1-3]\\\\d{2,5}\",\n,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:59|8[1-3])\\\\d{6}\",,,,\"59012345\",,,[8]],\"SI\",386,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[12]|[34][24-8]|5[2-8]|7[3-8]\"],\"(0$1)\"],[,\"([3-7]\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[,\"([89][09])(\\\\d{3,6})\",\"$1 $2\",[\"[89][09]\"],\"0$1\"],[,\"([58]\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"59|8[1-3]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,\"0\\\\d{4}|[45789]\\\\d{7}\",,,,,\n,,[5,8]],[,,\"79\\\\d{6}\",,,,\"79123456\",,,[8]],[,,\"(?:4[015-8]|5[89]|9\\\\d)\\\\d{6}\",,,,\"41234567\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"SJ\",47,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"0\\\\d{4}|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d{2})\\\\d{3}\",,,,\"01234\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],SK:[,[,,\"(?:[2-68]\\\\d{5,8}|9\\\\d{6,8})\",\n,,,,,,[6,7,9]],[,,\"2(?:1(?:6\\\\d{3,4}|7\\\\d{3})|[2-9]\\\\d{7})|[3-5][1-8](?:1(?:6\\\\d{2,3}|7\\\\d{3})|\\\\d{7})\",,,,\"221234567\"],[,,\"9(?:0(?:[1-8]\\\\d|9[1-9])|(?:1[0-24-9]|[45]\\\\d)\\\\d)\\\\d{5}\",,,,\"912123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:[78]\\\\d{7}|00\\\\d{6})\",,,,\"900123456\",,,[9]],[,,\"8[5-9]\\\\d{7}\",,,,\"850123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",,,,\"690123456\",,,[9]],\"SK\",421,\"00\",\"0\",,,\"0\",,,,[[,\"(2)(1[67])(\\\\d{3,4})\",\"$1 $2 $3\",[\"21[67]\"],\"0$1\"],[,\"([3-5]\\\\d)(\\\\d{2})(\\\\d{2,3})\",\n\"$1 $2 $3\",[\"[3-5]\"],\"0$1\"],[,\"(2)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"([3-5]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"],[,\"([689]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(9090)(\\\\d{3})\",\"$1 $2\",[\"909\",\"9090\"],\"0$1\"]],,[,,\"9090\\\\d{3}\",,,,\"9090123\",,,[7]],,,[,,\"(?:602|8(?:00|[5-9]\\\\d)|9(?:00|[78]\\\\d))\\\\d{6}|9090\\\\d{3}\",,,,\"800123456\",,,[7,9]],[,,\"96\\\\d{7}\",,,,\"961234567\",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8],[6]],[,,\"[235]2[2-4][2-9]\\\\d{4}\",\n,,,\"22221234\",,,,[6]],[,,\"(?:2[15]|3[013-5]|4[04]|5[05]|66|7[5-9]|8[08]|99)\\\\d{6}\",,,,\"25123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SL\",232,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",,\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,\"[05-7]\\\\d{7,9}\",,,,,,,[8,10],[6]],[,,\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",,,,\"0549886377\",,,[10],[6]],[,,\"6[16]\\\\d{6}\",,,,\"66661212\",,,[8]],[,,,,,,,,,[-1]],[,,\"7[178]\\\\d{6}\",,,,\"71123456\",\n,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[158]\\\\d{6}\",,,,\"58001110\",,,[8]],\"SM\",378,\"00\",,,,\"([89]\\\\d{5})\",\"0549$1\",,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(0549)(\\\\d{6})\",\"$1 $2\",[\"054\",\"0549\"]],[,\"(\\\\d{6})\",\"0549 $1\",[\"[89]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(0549)(\\\\d{6})\",\"($1) $2\",[\"054\",\"0549\"]],[,\"(\\\\d{6})\",\"(0549) $1\",[\"[89]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,\"[3789]\\\\d{8}\",,,,,\n,,[9]],[,,\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\",,,,\"301012345\"],[,,\"7(?:[06-8]\\\\d|21|90)\\\\d{6}\",,,,\"701234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"88[4689]\\\\d{6}\",,,,\"884123456\"],[,,\"81[02468]\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,\"39[01]\\\\d{6}|3392\\\\d{5}|93330\\\\d{4}\",,,,\"933301234\"],\"SN\",221,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,\n,[,,,,,,,,,[-1]]],SO:[,[,,\"[1-9]\\\\d{5,8}\",,,,,,,[6,7,8,9]],[,,\"(?:1\\\\d{1,2}|2[0-79]\\\\d|3[0-46-8]?\\\\d|4[0-7]?\\\\d|59\\\\d|8[125])\\\\d{4}\",,,,\"4012345\",,,[6,7]],[,,\"(?:15\\\\d|2(?:4\\\\d|8)|3[59]\\\\d{2}|4[89]\\\\d{2}|6[1-9]?\\\\d{2}|7(?:[1-8]\\\\d|9\\\\d{1,2})|8[08]\\\\d{2}|9(?:0[67]|[2-9])\\\\d)\\\\d{5}\",,,,\"71123456\",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SO\",252,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[,\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[13-5]|2[0-79]\"]],[,\"(\\\\d)(\\\\d{7})\",\n\"$1 $2\",[\"24|[67]\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"15|28|6[1-35-9]|799|9[2-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3[59]|4[89]|6[24-6]|79|8[08]|90\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,\"[2-8]\\\\d{5,6}\",,,,,,,[6,7]],[,,\"(?:2[1-3]|3[0-7]|4\\\\d|5[2-58]|68\\\\d)\\\\d{4}\",,,,\"211234\"],[,,\"(?:7[124-7]|8[125-9])\\\\d{5}\",,,,\"7412345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"56\\\\d{4}\",\n,,,\"561234\",,,[6]],\"SR\",597,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|5[2-58]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"18\\\\d{7}\",,,,\"181234567\"],[,,\"(?:12|9[1257])\\\\d{7}\",,,,\"977123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SS\",211,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,\"[29]\\\\d{6}\",,,,,,,[7]],[,,\"22\\\\d{5}\",,,,\"2221234\"],[,,\"9(?:0(?:0[5-9]|[1-9]\\\\d)|[89]\\\\d{2})\\\\d{3}\",,,,\"9812345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ST\",239,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,\"[267]\\\\d{7}|[89]\\\\d{6}(?:\\\\d{4})?\",,,,,,,[7,8,11]],[,,\"2[1-6]\\\\d{6}\",,,,\"21234567\",,,[8]],\n[,,\"[67]\\\\d{7}\",,,,\"70123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{4})?\",,,,\"8001234\",,,[7,11]],[,,\"900\\\\d{4}(?:\\\\d{4})?\",,,,\"9001234\",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SV\",503,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\",,,,\"7215425678\",,\n,,[7]],[,,\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\",,,,\"7215205678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"SX\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"721\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,\"[1-59]\\\\d{7,8}\",,,,,,,[8,9],[6,7]],[,,\"(?:1(?:1\\\\d?|4\\\\d|[2356])|2(?:1\\\\d?|[235])|3(?:[13]\\\\d|4)|4[13]|5[1-3])\\\\d{6}\",\n,,,\"112345678\",,,,[6,7]],[,,\"9(?:22|[3-589]\\\\d|6[024-9])\\\\d{6}\",,,,\"944567890\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SY\",963,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",,1],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,\"[0237]\\\\d{7}|900\\\\d{6}\",,,,,,,[8,9]],[,,\"[23][2-5]\\\\d{6}\",,,,\"22171234\",,,[8]],[,,\"7[6-9]\\\\d{6}\",,,,\"76123456\",\n,,[8]],[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,\"900\\\\d{6}\",,,,\"900012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70\\\\d{6}\",,,,\"70012345\",,,[8]],\"SZ\",268,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"900\"]]],,[,,,,,,,,,[-1]],,,[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,\"8\\\\d{3}\",,,,,,,[4]],[,,\"8\\\\d{3}\",,,,\"8999\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TA\",290,\"00\",\n,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,\"[5689]\\\\d{9}\",,,,,,,[10],[7]],[,,\"649(?:712|9(?:4\\\\d|50))\\\\d{4}\",,,,\"6497121234\",,,,[7]],[,,\"649(?:2(?:3[129]|4[1-7])|3(?:3[1-389]|4[1-8])|4[34][1-3])\\\\d{4}\",,,,\"6492311234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,\"64971[01]\\\\d{4}\",,,,\"6497101234\",,,,[7]],\"TC\",\n1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"649\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,\"[2679]\\\\d{7}\",,,,,,,[8]],[,,\"22(?:[3789]0|5[0-5]|6[89])\\\\d{4}\",,,,\"22501234\"],[,,\"(?:6[023568]\\\\d|77\\\\d|9\\\\d{2})\\\\d{5}\",,,,\"63012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TD\",235,\"00|16\",,,,,,\"00\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,\"[279]\\\\d{7}\",,,,,,,\n[8]],[,,\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\",,,,\"22212345\"],[,,\"(?:7[09]|9[0-36-9])\\\\d{6}\",,,,\"90112345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TG\",228,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,\"1\\\\d{8,9}|[2-9]\\\\d{7,8}\",,,,,,,[8,9,10]],[,,\"(?:2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",,\n,,\"812345678\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"1900\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"6[08]\\\\d{7}\",,,,\"601234567\",,,[9]],\"TH\",66,\"00[1-9]\",\"0\",,,\"0\",,,,[[,\"(2)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"([13-9]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"14|[3-9]\"],\"0$1\"],[,\"(1[89]00)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[89]0\",\"1[89]00\"],\"$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TJ:[,[,,\"[3-57-9]\\\\d{8}\",,,,,,,[9],[3,5,7]],[,\n,\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\",,,,\"372123456\",,,,[3,5,7]],[,,\"(?:41[18]|(?:5[05]|77|88|9[0-35-9])\\\\d)\\\\d{6}\",,,,\"917123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TJ\",992,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"([349]\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"],,,1],[,\"([457-9]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[148]|[578]|9(?:[0235-9]|1[59])\"],,,1],[,\"(331700)(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\",\"33170\",\"331700\"],,\n,1],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\",\"3(?:[1245]|3(?:[02-9]|1[0-589]))\"],,,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TK:[,[,,\"[2-47]\\\\d{3,6}\",,,,,,,[4,5,6,7]],[,,\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\",,,,\"3101\"],[,,\"7[2-4]\\\\d{2,5}\",,,,\"7290\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TK\",690,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,\"[2-489]\\\\d{6}|7\\\\d{6,7}\",,,,,,,[7,8]],[,,\n\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",,,,\"2112345\",,,[7]],[,,\"7[3-8]\\\\d{6}\",,,,\"77212345\",,,[8]],[,,\"80\\\\d{5}\",,,,\"8012345\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,\"70\\\\d{5}\",,,,\"7012345\",,,[7]],[,,,,,,,,,[-1]],\"TL\",670,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7[3-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,\"[1-6]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\",\n,,,\"12345678\"],[,,\"6[1-9]\\\\d{6}\",,,,\"66123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TM\",993,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"13|[2-5]\"],\"(8 $1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,\"[2-57-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:3[0-2]\\\\d{3}|7\\\\d{4}|81200)\\\\d{3}\",,,,\"71234567\"],\n[,,\"(?:[259]\\\\d{3}|3(?:001|1(?:[1-35]\\\\d|40)|240|6[0-4]\\\\d|91\\\\d)|4[0-6]\\\\d{2})\\\\d{4}\",,,,\"20123456\"],[,,\"8010\\\\d{4}\",,,,\"80101234\"],[,,\"88\\\\d{6}\",,,,\"88123456\"],[,,\"8[12]10\\\\d{4}\",,,,\"81101234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TN\",216,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,\"[02-8]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:2\\\\d|3[1-8]|4[1-4]|[56]0|7[0149]|8[05])\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[578]|8[46-9])\\\\d{5}\",\n,,,\"7715123\",,,[7]],[,,\"0800\\\\d{3}\",,,,\"0800222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TO\",676,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[1-6]|7[0-4]|8[05]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"7[5-9]|8[46-9]\"]],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,\"[2-589]\\\\d{9}|444\\\\d{4}\",,,,,,,[7,10]],[,,\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",\n,,,\"2123456789\",,,[10]],[,,\"5(?:(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{2}|6161)\\\\d{5}\",,,,\"5012345678\",,,[10]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"(?:8[89]8|900)\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"592(?:21[12]|461)\\\\d{4}\",,,,\"5922121234\",,,[10]],[,,,,,,,,,[-1]],\"TR\",90,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]|4(?:[0-35-9]|4[0-35-9])\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[02-69]|1[06])\"],\"0$1\",,1],[,\n\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"51|[89]\"],\"0$1\",,1],[,\"(444)(\\\\d{1})(\\\\d{3})\",\"$1 $2 $3\",[\"444\"],,,1]],,[,,\"512\\\\d{7}\",,,,\"5123456789\",,,[10]],,,[,,\"444\\\\d{4}\",,,,\"4441444\",,,[7]],[,,\"444\\\\d{4}|850\\\\d{7}\",,,,\"4441444\"],,,[,,,,,,,,,[-1]]],TT:[,[,,\"[589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"868(?:2(?:01|[23]\\\\d)|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\",,,,\"8682211234\",,,,[7]],[,,\"868(?:2(?:6[6-9]|[789]\\\\d)|3(?:0[1-9]|1[02-9]|[2-9]\\\\d)|4[6-9]\\\\d|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\",\n,,,\"8682911234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"TT\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"868\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"868619\\\\d{4}\",,,,\"8686191234\",,,,[7]]],TV:[,[,,\"[279]\\\\d{4,6}\",,,,,,,[5,6,7]],[,,\"2[02-9]\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[01]\\\\d|90)\\\\d{4}\",,,,\"901234\",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TV\",688,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,\"2\\\\d{6,8}|[3-689]\\\\d{7,8}|7\\\\d{7,9}\",,,,,,,[7,8,9,10]],[,,\"(?:2(?:[235-8]\\\\d{3}|4\\\\d{2,3})|3[2-9]\\\\d{2}|4(?:[239]\\\\d|[78])\\\\d{2}|5[2-8]\\\\d{2}|6[235-79]\\\\d{2}|7[1-9]\\\\d{2}|8(?:2(?:3\\\\d|66)|[7-9]\\\\d{2}))\\\\d{4}\",,,,\"221234567\",,,[8,9]],[,,\"9[0-8]\\\\d{7}\",,,,\"912345678\",,,[9]],[,,\"80[0-79]\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"20(?:2|[013-9]\\\\d{2})\\\\d{4}\",,,,\"203123456\",\n,,[7,9]],[,,,,,,,,,[-1]],[,,\"99\\\\d{7}\",,,,\"990123456\",,,[9]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"TW\",886,\"0(?:0[25679]|19)\",\"0\",\"#\",,\"0\",,,,[[,\"(20)(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[,\"([258]0)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[013-9]|50[0-46-9]|80[0-79]\"],\"0$1\"],[,\"([2-8])(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25][2-8]|[346]|[78][1-9]\"],\"0$1\"],[,\"(9\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(70)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"70\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"50[0-46-9]\\\\d{6}\",\n,,,\"500123456\",,,[9]],,,[,,,,,,,,,[-1]]],TZ:[,[,,\"\\\\d{9}\",,,,,,,[7,9]],[,,\"2[2-8]\\\\d{7}\",,,,\"222345678\"],[,,\"(?:6[2-9]|7[13-9])\\\\d{7}\",,,,\"621234567\",,,[9]],[,,\"80[08]\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90\\\\d{7}\",,,,\"900123456\",,,[9]],[,,\"8(?:40|6[01])\\\\d{6}\",,,,\"840123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"41\\\\d{7}\",,,,\"412345678\",,,[9]],\"TZ\",255,\"00[056]\",\"0\",,,\"0\",,,,[[,\"([24]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[,\"([67]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"([89]\\\\d{2})(\\\\d{2})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:8(?:[04]0|6[01])|90\\\\d)\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,\"[3-9]\\\\d{8}\",,,,,,,[9],[5,6,7]],[,,\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",,,,\"311234567\",,,,[5,6,7]],[,,\"(?:39|50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",,,,\"391234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"900[2-49]\\\\d{5}\",,,,\"900212345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"89[1-579]\\\\d{6}\",,,,\"891234567\"],\"UA\",380,\"00\",\"0\",,,\"0\",,\"0~0\",,[[,\"([3-9]\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[38]9|4(?:[45][0-5]|87)|5(?:0|[67][37])|6[36-8]|7|9[1-9]\",\"[38]9|4(?:[45][0-5]|87)|5(?:0|6(?:3[14-7]|7)|7[37])|6[36-8]|7|9[1-9]\"],\"0$1\"],[,\"([3-689]\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:3[1-8]|4[136-8])2|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|8[0-8]|90\",\"3(?:[1-46-8]2[013-9]|52)|4(?:[1378]2|62[013-9])|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|8[0-8]|90\"],\"0$1\"],[,\"([3-6]\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"3(?:[1-46-8]|5[013-9])|4(?:[137][013-9]|[45][6-9]|6|8[4-6])|5(?:[1245][013-9]|3|6[0135689]|7[4-6])|6(?:[12][13-8]|[49][013-9]|5[0135-9])\",\n\"3(?:[1-46-8](?:[013-9]|22)|5[013-9])|4(?:[137][013-9]|[45][6-9]|6(?:[013-9]|22)|8[4-6])|5(?:[1245][013-9]|3|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][13-8]|[49][013-9]|5[0135-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,\"\\\\d{9}\",,,,,,,[9],[5,6,7]],[,,\"20(?:[0147]\\\\d{3}|2(?:40|[5-9]\\\\d)\\\\d|3(?:0[0-4]|[2367]\\\\d)\\\\d|5[0-4]\\\\d{2}|6(?:00[0-2]|30[0-4]|[5-9]\\\\d{2})|8[0-2]\\\\d{2})\\\\d{3}|[34]\\\\d{8}\",,,,\"312345678\",,,,[5,6,7]],[,,\"7(?:[09][0-7]\\\\d|[1578]\\\\d{2}|2(?:[03]\\\\d|60)|30\\\\d|4[0-4]\\\\d)\\\\d{5}\",\n,,,\"712345678\"],[,,\"800[123]\\\\d{5}\",,,,\"800123456\"],[,,\"90[123]\\\\d{6}\",,,,\"901123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UG\",256,\"00[057]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"20[0-8]|4(?:6[45]|[7-9])|[7-9]\",\"20(?:[013-8]|2[5-9])|4(?:6[45]|[7-9])|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"3|4(?:[1-5]|6[0-36-9])\"],\"0$1\"],[,\"(2024)(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,\"[2-9]\\\\d{9}\",,,,,,,[10],\n[7]],[,,\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-258]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-258]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"US\",1,\"011\",\"1\",,,\"1\",,,1,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",,,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",,,,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\"]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,\"[2489]\\\\d{6,7}\",,,,,,,[7,8]],[,,\"2\\\\d{7}|4[2-7]\\\\d{6}\",\n,,,\"21231234\",,,[8],[7]],[,,\"9[1-9]\\\\d{6}\",,,,\"94231234\",,,[8]],[,,\"80[05]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90[0-8]\\\\d{4}\",,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UY\",598,\"0(?:1[3-9]\\\\d|0)\",\"0\",\" int. \",,\"0\",,\"00\",,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]0\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,\"[679]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d{2}|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\",\n,,,\"662345678\",,,,[7]],[,,\"6(?:1(?:2(?:98|2[01])|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:11\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4])|7\\\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\\\d|59\\\\d|7\\\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|5\\\\d|3[01]|7[0-4])|5[67]\\\\d|6(?:2[0-26]|8\\\\d)|7\\\\d{2}))\\\\d{4}|7(?:0\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078])|9[4-6]\\\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07])))\\\\d{4}|9[0-57-9]\\\\d{7}\",\n,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UZ\",998,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"([679]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[679]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,\"(?:0(?:878\\\\d{5}|6698\\\\d{5})|[1589]\\\\d{5,10}|3(?:[12457-9]\\\\d{8}|[36]\\\\d{7,9}))\",,,,,,,[6,8,9,10,11]],[,,\"06698\\\\d{5}\",,,,\"0669812345\",,,[10]],[,,\"3(?:[12457-9]\\\\d{8}|6\\\\d{7,8}|3\\\\d{7,9})\",,,,\"3123456789\",,,[9,10,11]],[,\n,\"80(?:0\\\\d{6}|3\\\\d{3})\",,,,\"800123456\",,,[6,9]],[,,\"0878\\\\d{5}|1(?:44|6[346])\\\\d{6}|89(?:2\\\\d{3}|4(?:[0-4]\\\\d{2}|[5-9]\\\\d{4})|5(?:[0-4]\\\\d{2}|[5-9]\\\\d{6})|9\\\\d{6})\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{6}|[17]\\\\d{3})\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"VA\",39,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,\"848\\\\d{6}\",,,,\"848123456\",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VC:[,[,,\"[5789]\\\\d{9}\",,,,,,,[10],[7]],[,,\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-24-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\",\n,,,\"7842661234\",,,,[7]],[,,\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4]))\\\\d{4}\",,,,\"7844301234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VC\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"784\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,\"[24589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"(?:2(?:12|3[457-9]|[58][1-9]|[467]\\\\d|9[1-6])|50[01])\\\\d{7}\",\n,,,\"2121234567\",,,,[7]],[,,\"4(?:1[24-8]|2[46])\\\\d{7}\",,,,\"4121234567\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"900\\\\d{7}\",,,,\"9001234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VE\",58,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",,\"0$1\",\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VG:[,[,,\"[2589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"284(?:(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}|496[0-5]\\\\d{3})\",,,,\"2842291234\",,,,[7]],[,,\"284(?:(?:3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|54[0-57])\\\\d{4}|496[6-9]\\\\d{3})\",\n,,,\"2843001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VG\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"284\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,\"[3589]\\\\d{9}\",,,,,,,[10],[7]],[,,\"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",\n,,,[7]],[,,\"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"5(?:(?:00|22|33|44|66|77|88)[2-9]|21[23])\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VI\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"340\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,\"1\\\\d{6,9}|2\\\\d{9}|6\\\\d{6,7}|7\\\\d{6}|8\\\\d{6,8}|9\\\\d{8}\",\n,,,,,,[7,8,9,10]],[,,\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-7]|9[0-4679])\\\\d{7}\",,,,\"2101234567\",,,[10]],[,,\"(?:9\\\\d|1(?:2\\\\d|6[2-9]|8[68]|99))\\\\d{7}|8(?:6[89]|8\\\\d|9[89])\\\\d{6}\",,,,\"912345678\",,,[9,10]],[,,\"1800\\\\d{4,6}\",,,,\"1800123456\",,,[8,9,10]],[,,\"1900\\\\d{4,6}\",,,,\"1900123456\",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VN\",84,\"00\",\"0\",,,\"0\",,,,[[,\"([17]99)(\\\\d{4})\",\"$1 $2\",[\"[17]99\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\n\"0$1\",,1],[,\"(80)(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(69\\\\d)(\\\\d{4,5})\",\"$1 $2\",[\"69\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2[0-35-79]\"],\"0$1\",,1],[,\"([89]\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8(?:8|9[89])|9\"],\"0$1\",,1],[,\"(1[2689]\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:[26]|8[68]|99)\"],\"0$1\",,1],[,\"(86[89])(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"86[89]\"],\"0$1\",,1],[,\"(1[89]00)(\\\\d{4,6})\",\"$1 $2\",[\"1[89]0\",\"1[89]00\"],\"$1\",,1]],,[,,,,,,,,,[-1]],,,[,,\"[17]99\\\\d{4}|69\\\\d{5,6}\",,,,\"1992000\",\n,,[7,8]],[,,\"[17]99\\\\d{4}|69\\\\d{5,6}|80\\\\d{5}\",,,,\"1992000\",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,\"[2-57-9]\\\\d{4,6}\",,,,,,,[5,7]],[,,\"(?:2[02-9]\\\\d|3(?:[5-7]\\\\d|8[0-8])|48[4-9]|88\\\\d)\\\\d{2}\",,,,\"22123\",,,[5]],[,,\"(?:5(?:7[2-5]|[0-689]\\\\d)|7[013-7]\\\\d)\\\\d{4}\",,,,\"5912345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VU\",678,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[579]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"3[03]\\\\d{3}|900\\\\d{4}\",,,,\"30123\"],,,[,,,,\n,,,,,[-1]]],WF:[,[,,\"[4-8]\\\\d{5}\",,,,,,,[6]],[,,\"(?:50|68|72)\\\\d{4}\",,,,\"501234\"],[,,\"(?:50|68|72|8[23])\\\\d{4}\",,,,\"501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WF\",681,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{4}\",,,,\"401234\"]],WS:[,[,,\"[2-578]\\\\d{4,9}|6[1-9]\\\\d{3}\",,,,,,,[5,6,7,10]],[,,\"(?:[2-5]\\\\d|6[1-9])\\\\d{3}\",,,,\"22123\",,,[5]],[,,\"(?:7[25-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",\n,,,\"7212345\",,,[7,10]],[,,\"800\\\\d{3}\",,,,\"800123\",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WS\",685,\"0\",,,,,,,,[[,\"(8\\\\d{2})(\\\\d{3,7})\",\"$1 $2\",[\"8\"]],[,\"(7\\\\d)(\\\\d{5})\",\"$1 $2\",[\"7\"]],[,\"(\\\\d{5})\",\"$1\",[\"[2-6]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],XK:[,[,,\"[23][89]\\\\d{6,7}|4[3-79]\\\\d{6}|[89]00\\\\d{5}\",,,,,,,[8,9]],[,,\"(?:2[89]0?|3(?:8|90?))\\\\d{6}\",,,,\"28012345\"],[,,\"4[3-79]\\\\d{6}\",,,,\"43201234\",,,[8]],[,,\"800\\\\d{5}\",,,,\"80001234\",,\n,[8]],[,,\"900\\\\d{5}\",,,,\"90001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"XK\",383,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23][89]|4[3-79]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]00\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",,\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,\"[1-7]\\\\d{6,8}\",,,,,,,[7,8,9],[6]],[,,\"(?:1(?:7\\\\d|[2-68])|2[2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\\\d{5}\",,,,\"1234567\",,,[7,8],[6]],\n[,,\"7[0137]\\\\d{7}\",,,,\"712345678\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YE\",967,\"00\",\"0\",,,\"0\",,,,[[,\"([1-7])(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[,\"(7\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7[0137]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,\"[268]\\\\d{8}\",,,,,,,[9]],[,,\"269(?:0[67]|5[01]|6\\\\d|[78]0)\\\\d{4}\",,,,\"269601234\"],[,,\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|[45]0|9[04-79])\\\\d{4}\",,\n,,\"639012345\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YT\",262,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"269|63\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,\"[1-79]\\\\d{8}|8\\\\d{4,8}\",,,,,,,[5,6,7,8,9]],[,,\"(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",,,,\"101234567\",,,[9]],[,,\"(?:6\\\\d|7[0-46-9])\\\\d{7}|8(?:[1-4]\\\\d{1,5}|5\\\\d{5})\\\\d{2}\",,,,\"711234567\"],[,,\"80\\\\d{7}\",,,,\"801234567\",,,[9]],[,,\"86[2-9]\\\\d{6}|9[0-2]\\\\d{7}\",,,,\"862345678\",\n,,[9]],[,,\"860\\\\d{6}\",,,,\"860123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"87\\\\d{7}\",,,,\"871234567\",,,[9]],\"ZA\",27,\"00\",\"0\",,,\"0\",,,,[[,\"(860)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-79]|8(?:[0-57]|6[1-9])\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"861\\\\d{6}\",,,,\"861123456\",,,[9]],,,[,,,,,,,,,[-1]]],ZM:[,[,,\"[289]\\\\d{8}\",,,,,,,[9],[6,7]],[,,\"21[1-8]\\\\d{6}\",\n,,,\"211234567\",,,,[6,7]],[,,\"9[4-9]\\\\d{7}\",,,,\"955123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ZM\",260,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",,\"$1\"],[,\"([1-8])(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"$1\"],[,\"([29]\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[29]\"],\"0$1\"],[,\"(800)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"800\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZW:[,[,,\"2(?:[0-57-9]\\\\d{3,8}|6(?:[14]\\\\d{7}|\\\\d{4}))|[13-69]\\\\d{4,9}|7\\\\d{8}|8[06]\\\\d{5,8}\",\n,,,,,,[5,6,7,8,9,10],[3,4]],[,,\"(?:2(?:0(?:4\\\\d|5\\\\d{2})|2[278]\\\\d|48\\\\d|7(?:[1-7]\\\\d|[089]\\\\d{2})|8(?:[2-57-9]|[146]\\\\d{2})|98)|3(?:08|17|3[78]|7(?:[19]|[56]\\\\d)|8[37]|98)|5[15][78]|6(?:28\\\\d{2}|37|6[78]|75\\\\d|98|8(?:7\\\\d|8)))\\\\d{3}|(?:2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329)\\\\d{7}|(?:1(?:3\\\\d{2}|[4-8]|9\\\\d)|2(?:0\\\\d{2}|12|292|[569]\\\\d)|3(?:[26]|[013459]\\\\d)|5(?:0|1[2-4]|26|[37]2|5\\\\d{2}|[689]\\\\d)|6(?:[39]|[01246]\\\\d|[78]\\\\d{2}))\\\\d{3}|(?:29\\\\d|39|54)\\\\d{6}|(?:(?:25|54)83\\\\d|2582\\\\d{2}|65[2-8])\\\\d{2}|(?:4\\\\d{6,7}|9[2-9]\\\\d{4,5})\",\n,,,\"1312345\",,,,[3,4]],[,,\"(?:7(?:1\\\\d|3[2-9]|7[1-9]|8[2-5])|8644)\\\\d{6}\",,,,\"712345678\",,,[9,10]],[,,\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"86(?:1[12]|30|55|77|8[368])\\\\d{6}\",,,,\"8686123456\",,,[10]],\"ZW\",263,\"00\",\"0\",,,\"0\",,,,[[,\"([49])(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"4|9[2-9]\"],\"0$1\"],[,\"(7\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(86\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"86[24]\"],\"0$1\"],[,\"([2356]\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",\n[\"2(?:0[45]|2[278]|[49]8|[78])|3(?:[09]8|17|3[78]|7[1569]|8[37])|5[15][78]|6(?:[29]8|37|[68][78]|75)\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329\"],\"0$1\"],[,\"([1-356]\\\\d)(\\\\d{3,5})\",\"$1 $2\",[\"1[3-9]|2[02569]|3[0-69]|5[05689]|6\"],\"0$1\"],[,\"([235]\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[23]9|54\"],\"0$1\"],[,\"([25]\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258[23]|5483\"],\"0$1\"],[,\"(8\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"86\"],\"0$1\"],[,\"(80\\\\d)(\\\\d{4})\",\"$1 $2\",[\"80\"],\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,\"\\\\d{8}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{8}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",800,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,\"\\\\d{8}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{8}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n\"001\",808,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,\"[35-7]\\\\d{8}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,\"(?:[356]\\\\d|7[6-8])\\\\d{7}\",,,,\"301234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",870,,,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,\"1\\\\d{11}\",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"10\\\\d{10}\",,,,\"101234567890\"],\"001\",878,,,,,,,,1,[[,\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,\"[67]\\\\d{8}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,\"[67]\\\\d{8}\",,,,\"612345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",881,,,,,,,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],882:[,[,,\"[13]\\\\d{6,11}\",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,\"3(?:2\\\\d{3}|37\\\\d{2}|4(?:2|7\\\\d{3}))\\\\d{4}\",,,,\"3421234\",,,[7,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15678]|9[0689])\\\\d{4}|6\\\\d{5,10})|3(?:45|9\\\\d{3})\\\\d{7}\",,,,\"390123456789\"],\"001\",882,,,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"34[57]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"348\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[,\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"16|39\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"348[57]\\\\d{7}\",,,,\"34851234567\",,,[11]]],883:[,[,,\"51\\\\d{7}(?:\\\\d{3})?\",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"51(?:00\\\\d{5}(?:\\\\d{3})?|[13]0\\\\d{8})\",\n,,,\"510012345\"],\"001\",883,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,\"\\\\d{11}\",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",888,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,\n,[-1]],[,,\"\\\\d{11}\",,,,\"12345678901\"],,,[,,,,,,,,,[-1]]],979:[,[,,\"\\\\d{9}\",,,,,,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"\\\\d{9}\",,,,\"123456789\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",979,,,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*\n Copyright (C) 2010 The Libphonenumber Authors.\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction M(){this.a={}}M.c=void 0;M.a=function(){return M.c?M.c:M.c=new M};\nvar xa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\"},ya={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",\n7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\",A:\"2\",B:\"2\",C:\"2\",D:\"3\",E:\"3\",F:\"3\",G:\"4\",H:\"4\",I:\"4\",J:\"5\",K:\"5\",L:\"5\",M:\"6\",N:\"6\",O:\"6\",P:\"7\",\nQ:\"7\",R:\"7\",S:\"7\",T:\"8\",U:\"8\",V:\"8\",W:\"9\",X:\"9\",Y:\"9\",Z:\"9\"},N=/^[+\\uff0b]+/,za=/([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9])/,Aa=/[+\\uff0b0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]/,Ba=/[\\\\\\/] *x/,Ca=/[^0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9A-Za-z#]+$/,Da=/(?:.*?[A-Za-z]){3}.*/,Ea=/(?:;ext=([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})|[ \\u00a0\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|[;,x\\uff58#\\uff03~\\uff5e]|int|anexo|\\uff49\\uff4e\\uff54)[:\\.\\uff0e]?[ \\u00a0\\t,-]*([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})#?|[- ]+([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,5})#)$/i,\nFa=/^[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{2}$|^[+\\uff0b]*(?:[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e*]*[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]){3,}[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e*A-Za-z0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]*(?:;ext=([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})|[ \\u00a0\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|[;,x\\uff58#\\uff03~\\uff5e]|int|anexo|\\uff49\\uff4e\\uff54)[:\\.\\uff0e]?[ \\u00a0\\t,-]*([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,7})#?|[- ]+([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,5})#)?$/i,\nGa=/(\\$\\d)/;function Ha(a){var b=a.search(Aa);0<=b?(a=a.substring(b),a=a.replace(Ca,\"\"),b=a.search(Ba),0<=b&&(a=a.substring(0,b))):a=\"\";return a}function Ia(a){return 2>a.length?!1:O(Fa,a)}function Ja(a){return O(Da,a)?P(a,ya):P(a,xa)}function Ka(a){var b=Ja(a.toString());a.c=\"\";a.a(b)}function La(a){return null!=a&&(1!=A(a,9)||-1!=w(a,9)[0])}function P(a,b){for(var c=new F,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.a(d);return c.toString()}\nfunction Q(a){return null!=a&&isNaN(a)&&a.toUpperCase()in wa}\nfunction Ma(a,b,c){if(0==t(b,2)&&null!=b.a[5]){var d=y(b,5);if(0<d.length)return d}d=y(b,1);var e=R(b);if(0==c)return Na(d,0,e,\"\");if(!(d in K))return e;a=S(a,d,T(d));b=null!=b.a[3]&&0!=t(b,3).length?3==c?\";ext=\"+t(b,3):null!=a.a[13]?t(a,13)+y(b,3):\" ext. \"+y(b,3):\"\";a:{a=0==w(a,20).length||2==c?w(a,19):w(a,20);for(var f,g=a.length,h=0;h<g;++h){f=a[h];var l=A(f,3);if(0==l||0==e.search(t(f,3,l-1)))if(l=new RegExp(t(f,1)),O(l,e)){a=f;break a}}a=null}null!=a&&(g=a,a=y(g,2),f=new RegExp(t(g,1)),y(g,5),\ng=y(g,4),e=2==c&&null!=g&&0<g.length?e.replace(f,a.replace(Ga,g)):e.replace(f,a),3==c&&(e=e.replace(/^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/,\"\"),e=e.replace(/[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/g,\"-\")));return Na(d,c,e,b)}function S(a,b,c){return\"001\"==c?U(a,\"\"+b):U(a,c)}\nfunction R(a){if(null==a.a[2])return\"\";var b=\"\"+t(a,2);return null!=a.a[4]&&t(a,4)&&0<y(a,8)?Array(y(a,8)+1).join(\"0\")+b:b}function Na(a,b,c,d){switch(b){case 0:return\"+\"+a+c+d;case 1:return\"+\"+a+\" \"+c+d;case 3:return\"tel:+\"+a+\"-\"+c+d;default:return c+d}}\nfunction V(a,b){switch(b){case 4:return t(a,5);case 3:return t(a,4);case 1:return t(a,3);case 0:case 2:return t(a,2);case 5:return t(a,6);case 6:return t(a,8);case 7:return t(a,7);case 8:return t(a,21);case 9:return t(a,25);case 10:return t(a,28);default:return t(a,1)}}function W(a,b){return X(a,t(b,1))?X(a,t(b,5))?4:X(a,t(b,4))?3:X(a,t(b,6))?5:X(a,t(b,8))?6:X(a,t(b,7))?7:X(a,t(b,21))?8:X(a,t(b,25))?9:X(a,t(b,28))?10:X(a,t(b,2))?t(b,18)||X(a,t(b,3))?2:0:!t(b,18)&&X(a,t(b,3))?1:-1:-1}\nfunction U(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=wa[b];if(null==c)return null;c=(new E).a(I.f(),c);a.a[b]=c}return c}function X(a,b){var c=a.length;return 0<A(b,9)&&-1==p(w(b,9),c)?!1:O(y(b,2),a)}\nfunction Oa(a,b){if(null==b)return null;var c=y(b,1);c=K[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=R(b);for(var d,e=c.length,f=0;f<e;f++){d=c[f];var g=U(a,d);if(null!=g.a[23]){if(0==b.search(t(g,23))){a=d;break a}}else if(-1!=W(b,g)){a=d;break a}}a=null}return a}function T(a){a=K[a];return null==a?\"ZZ\":a[0]}\nfunction Y(a,b,c,d){var e=V(c,d),f=0==A(e,9)?w(t(c,1),9):w(e,9);e=w(e,10);if(2==d)if(La(V(c,0)))a=V(c,1),La(a)&&(f=f.concat(0==A(a,9)?w(t(c,1),9):w(a,9)),q(f),0==e.length?e=w(a,10):(e=e.concat(w(a,10)),q(e)));else return Y(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<p(e,b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<p(f,b,1)?0:5}function Pa(a,b){var c=R(b);b=y(b,1);if(!(b in K))return 1;b=S(a,b,T(b));return Y(a,c,b,-1)}\nfunction Qa(a,b,c,d,e,f){if(0==b.length)return 0;b=new F(b);var g;null!=c&&(g=t(c,11));null==g&&(g=\"NonMatch\");var h=b.toString();if(0==h.length)g=20;else if(N.test(h))h=h.replace(N,\"\"),b.c=\"\",b.a(Ja(h)),g=1;else{h=new RegExp(g);Ka(b);g=b.toString();if(0==g.search(h)){h=g.match(h)[0].length;var l=g.substring(h).match(za);l&&null!=l[1]&&0<l[1].length&&\"0\"==P(l[1],xa)?g=!1:(b.c=\"\",b.a(g.substring(h)),g=!0)}else g=!1;g=g?5:20}e&&u(f,6,g);if(20!=g){if(2>=b.c.length)throw Error(\"Phone number too short after IDD\");\na:{a=b.toString();if(0!=a.length&&\"0\"!=a.charAt(0))for(e=a.length,b=1;3>=b&&b<=e;++b)if(c=parseInt(a.substring(0,b),10),c in K){d.a(a.substring(b));d=c;break a}d=0}if(0!=d)return u(f,1,d),d;throw Error(\"Invalid country calling code\");}if(null!=c&&(g=y(c,10),h=\"\"+g,l=b.toString(),0==l.lastIndexOf(h,0)&&(h=new F(l.substring(h.length)),l=t(c,1),l=new RegExp(y(l,2)),Ra(h,c,null),h=h.toString(),!O(l,b.toString())&&O(l,h)||3==Y(a,b.toString(),c,-1))))return d.a(h),e&&u(f,6,10),u(f,1,g),g;u(f,1,0);return 0}\nfunction Ra(a,b,c){var d=a.toString(),e=d.length,f=t(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp(\"^(?:\"+f+\")\");if(e=g.exec(d)){f=new RegExp(y(t(b,1),2));var h=O(f,d),l=e.length-1;b=t(b,16);if(null==b||0==b.length||null==e[l]||0==e[l].length){if(!h||O(f,d.substring(e[0].length)))null!=c&&0<l&&null!=e[l]&&c.a(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(g,b),!h||O(f,d))null!=c&&0<l&&c.a(e[1]),a.set(d)}}}\nfunction Z(a,b,c){if(!Q(c)&&0<b.length&&\"+\"!=b.charAt(0))throw Error(\"Invalid country calling code\");return Sa(a,b,c,!0)}\nfunction Sa(a,b,c,d){if(null==b)throw Error(\"The string supplied did not seem to be a phone number\");if(250<b.length)throw Error(\"The string supplied is too long to be a phone number\");var e=new F,f=b.indexOf(\";phone-context=\");if(0<=f){var g=f+15;if(\"+\"==b.charAt(g)){var h=b.indexOf(\";\",g);0<h?e.a(b.substring(g,h)):e.a(b.substring(g))}g=b.indexOf(\"tel:\");e.a(b.substring(0<=g?g+4:0,f))}else e.a(Ha(b));f=e.toString();g=f.indexOf(\";isub=\");0<g&&(e.c=\"\",e.a(f.substring(0,g)));if(!Ia(e.toString()))throw Error(\"The string supplied did not seem to be a phone number\");\nf=e.toString();if(!(Q(c)||null!=f&&0<f.length&&N.test(f)))throw Error(\"Invalid country calling code\");f=new J;d&&u(f,5,b);a:{b=e.toString();g=b.search(Ea);if(0<=g&&Ia(b.substring(0,g))){h=b.match(Ea);for(var l=h.length,z=1;z<l;++z)if(null!=h[z]&&0<h[z].length){e.c=\"\";e.a(b.substring(0,g));b=h[z];break a}}b=\"\"}0<b.length&&u(f,3,b);g=U(a,c);b=new F;h=0;l=e.toString();try{h=Qa(a,l,g,b,d,f)}catch(L){if(\"Invalid country calling code\"==L.message&&N.test(l)){if(l=l.replace(N,\"\"),h=Qa(a,l,g,b,d,f),0==h)throw L;\n}else throw L;}0!=h?(e=T(h),e!=c&&(g=S(a,h,e))):(Ka(e),b.a(e.toString()),null!=c?(h=y(g,10),u(f,1,h)):d&&(delete f.a[6],f.c&&delete f.c[6]));if(2>b.c.length)throw Error(\"The string supplied is too short to be a phone number\");null!=g&&(c=new F,e=new F(b.toString()),Ra(e,g,c),a=Y(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&u(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error(\"The string supplied is too short to be a phone number\");if(17<a)throw Error(\"The string supplied is too long to be a phone number\");\nif(1<d.length&&\"0\"==d.charAt(0)){u(f,4,!0);for(a=1;a<d.length-1&&\"0\"==d.charAt(a);)a++;1!=a&&u(f,8,a)}u(f,2,parseInt(d,10));return f}function O(a,b){return(a=\"string\"==typeof a?b.match(\"^(?:\"+a+\")$\"):b.match(a))&&a[0].length==b.length?!0:!1};m(\"intlTelInputUtils\",{});m(\"intlTelInputUtils.formatNumber\",function(a,b,c){try{var d=M.a(),e=Z(d,a,b),f=Pa(d,e);return 0==f||4==f?Ma(d,e,\"undefined\"==typeof c?0:c):a}catch(g){return a}});m(\"intlTelInputUtils.getExampleNumber\",function(a,b,c){try{var d=M.a();a:{if(Q(a)){var e=V(U(d,a),c);try{if(null!=e.a[6]){var f=t(e,6);var g=Sa(d,f,a,!1);break a}}catch(h){}}g=null}return Ma(d,g,b?2:1)}catch(h){return\"\"}});m(\"intlTelInputUtils.getExtension\",function(a,b){try{return t(Z(M.a(),a,b),3)}catch(c){return\"\"}});\nm(\"intlTelInputUtils.getNumberType\",function(a,b){try{var c=M.a();var d=Z(c,a,b),e=Oa(c,d),f=S(c,y(d,1),e);if(null==f)var g=-1;else{var h=R(d);g=W(h,f)}return g}catch(l){return-99}});\nm(\"intlTelInputUtils.getValidationError\",function(a,b){try{var c=M.a(),d=Z(c,a,b);return Pa(c,d)}catch(e){return\"Invalid country calling code\"==e.message?1:\"The string supplied did not seem to be a phone number\"==e.message?4:\"Phone number too short after IDD\"==e.message||\"The string supplied is too short to be a phone number\"==e?2:\"The string supplied is too long to be a phone number\"==e.message?3:-99}});\nm(\"intlTelInputUtils.isValidNumber\",function(a,b){try{var c=M.a(),d=Z(c,a,b);var e=Oa(c,d),f=y(d,1),g=S(c,f,e),h;if(!(h=null==g)){var l;if(l=\"001\"!=e){var z=U(c,e);if(null==z)throw Error(\"Invalid region code: \"+e);var L=y(z,10);l=f!=L}h=l}if(h)var va=!1;else{var Ta=R(d);va=-1!=W(Ta,g)}return va}catch(Ua){return!1}});m(\"intlTelInputUtils.numberFormat\",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3});\nm(\"intlTelInputUtils.numberType\",{FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1});m(\"intlTelInputUtils.validationError\",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,NOT_A_NUMBER:4});})();\n","export const UPSERT_PERSONAL_EVENT = `\n mutation UpsertPersonalEvent ($id: ID, $startsAt: String!, $endsAt: String!, $name: String, $allDay: Boolean, $timeZone: String) {\n upsertPersonalEvent (id: $id, startsAt: $startsAt, endsAt: $endsAt, name: $name, allDay: $allDay, timeZone: $timeZone) {\n result\n errors\n personalEvent {\n id name startsAt endsAt allDay\n }\n }\n }\n`\n\nexport const CHARGE_CARD_MUTATION = `\n mutation($appointmentId: ID!) {\n chargeCard(appointmentId: $appointmentId) {\n result\n errors\n appointment {\n id\n clientPaymentStatus\n }\n }\n }\n`\n\nexport const SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION = `\n mutation SquareAddCardToCustomerMutation($clientId: ID, $practiceId: ID!, $sourceId: String!, $userId: ID) {\n squareAddCardToCustomer(clientId: $clientId, practiceId: $practiceId, sourceId: $sourceId, userId: $userId) {\n result\n errors\n }\n }\n`\n\nexport const DEFAULT_PAYMENT_METHOD_QUERY = `\n query($clientId: ID, $userId: ID, $practiceId: ID!) {\n defaultPaymentMethodPractice(clientId: $clientId, userId: $userId, practiceId: $practiceId) {\n brand\n last4\n expMonth\n expYear\n }\n }\n`\n\nexport const UPDATE_PRACTICE_DETAILS_MUTATION = `\n mutation UpdatePracticeDetails(\n $locationId: String,\n $languageIds: [ID!], \n $ageWorkWithIds: [ID!], \n $workWithIds: [ID!], \n $website: String, \n $facebook: String, \n $instagram: String, \n $twitter: String, \n $linkedin: String, \n $tiktok: String,\n $youtube: String\n ) {\n updatePracticeDetails(\n locationId: $locationId,\n languageIds: $languageIds, \n ageWorkWithIds: $ageWorkWithIds, \n workWithIds: $workWithIds, \n website: $website, \n facebook: $facebook, \n instagram: $instagram, \n twitter: $twitter, \n linkedin: $linkedin, \n tiktok: $tiktok,\n youtube: $youtube\n ) {\n result\n practice {\n id\n location\n languages { id name }\n ageWorkWiths { id name }\n workWiths { id name }\n website\n facebook\n instagram\n twitter\n linkedin\n tiktok\n youtube\n }\n }\n }\n`\n"],"names":["SquarePaymentForm","cardRef","useRef","squarePayments","squareCard","setSquareCard","useContext","PaymentProviderContext","useEffect","async","card","attach","current","initializePayment","React","id","ref","PaymentProviderCardForm","practice","options","paymentProvider","PaymentElement","SETUP_INTENT_MUTATION","useStripeHook","data","setupIntent","useMutation","stripeData","elementsOptions","setupIntentSecret","clientSecret","mode","currency","PaymentProviderWrapper","appointment","user","client","children","StripeWrapper","SquareWrapper","promise","loadStripe","window","App","stripe_key","stripeAccount","stripeAccountId","practice_stripe_account","practiceId","appointmentId","userId","clientId","then","res","result","Honeybadger","error","console","Elements","stripe","PaymentProviderContextProvider","provider","createContext","squareAddCardToCustomer","SQUARE_ADD_CARD_TO_CUSTOMER_MUTATION","useStripe","elements","useElements","setSquarePayments","sp","payments","square_application_id","handleCardSavedOnProvider","useCallback","isSetupMode","setupIntentResult","message","confirmParams","redirect","return_url","location","origin","pathname","confirmSetup","token","tokenizeResult","tokenize","status","addCardResult","sourceId","errors","join","JSON","stringify","Provider","value","usePaymentProvider","honeybadger","configure","apiKey","environment","projectRoot","revision","heroku_slug_commit","enableUncaught","Photo","filestack","imgSrc","onClick","className","imgClassName","x_large","webp","type","srcSet","jpeg","large","square","medium","src","Card","styled","a","props","CancelContainer","div","BookingCard","booking","showConfirmCancel","setShowConfirmCancel","useState","fetching","useQuery","query","variables","requestPolicy","cancelAppointmentFetching","cancelAppointmentNoUser","LoadingSpinner","userAppointment","services","processingFees","feeCents","platformFeeCents","state","getStatus","timeZoneDisplay","Date","toLocaleTimeString","timeZoneName","split","CardTitle","dayjs","startsAt","format","href","instantActionToken","profilePhotos","name","map","service","key","addOn","endsAt","kind","timeZoneAbbr","amountCents","toLocaleString","style","appointmentTimeLength","address","cityState","zip","country","virtualLink","virtualInstructions","Modal","open","closeModal","size","header","DesktopH5","content","footer","HealMeSquareButton","label","loading","reload","DesktopTitle3","TransactionCard","transaction","setPractice","setService","serviceId","APPOINTMENT_FIELDS","QUERY","Container","Title","SubTitle","TabsContainer","Tab","active","BookingsContainer","UPCOMING","PAST","TRANSACTIONS","EXPIRED","Bookings","activeTab","setActiveTab","upcoming","setUpcoming","past","setPast","expired","setExpired","upcomingAppointments","pastAppointments","expiredAppointments","length","sendAmplitudeData","eventType","eventProperties","amplitude","getInstance","logEvent","InviteClientsMutation","InviteBox","ClientUpload","checkImport","inviteClients","showAlert","setShowAlert","alertContent","setAlertContent","showModal","setShowModal","launchImport","setLaunchImport","importSuccess","setImportSuccess","handleClientImport","clientsForUpload","rows","uploadedClient","email","firstName","lastName","phone","notes","clientType","invitedFrom","clients","inviteErrors","erroredClients","row_success","log","Button","CSVBoxButton","licenseKey","user_id","onImport","render","launch","Toast","visible","setVisible","VectorImg","Vector","TherapyCategoriesContainer","TherapyCategory","BrowseTherapiesContainer","TherapyCategories","categories","c","index","Therapy","encodeURIComponent","BrowseCategoriesCTA","classname","styling","useMenuOutsideAlerter","setShow","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","LocationSearchBox","locationSearchboxRef","e","preventDefault","LocationSearch","setSearchLocation","searchLocation","setLatlng","setIsVirtual","isVirtual","onLocationFocus","shouldRedirect","setValue","show","autoCompleteRef","inputRef","types","setValuesFromPlace","place","geometry","lat","lng","formatted_address","sessionStorage","setItem","Turbolinks","$","val","submit","clicked","keyCode","Geocode","fromAddress","response","results","catch","findMyLocation","geoLocation","navigator","geolocation","getCurrentPosition","position","coords","latitude","longitude","fromLatLng","formattedAddressArray","city","google","Promise","resolve","setTimeout","maps","places","Autocomplete","addListener","getPlace","addPlaceChangedListener","getItem","placeholder","onChange","onFocus","onKeyUp","ProRow","hit","photo","reviews_average","reviews_count","connectAutoComplete","SearchCategory","currentRefinement","hits","refine","setQuery","latlng","onSearchFocus","activeFilter","inputProps","search","visit","Autosuggest","suggestions","multiSection","onSuggestionsFetchRequested","onSuggestionsClearRequested","onSuggestionSelected","suggestion","pro","slug","practitionerWebsiteUrl","therapy","getSuggestionValue","renderSuggestion","Highlight","attribute","tagName","renderSectionTitle","section","getSectionSuggestions","focusInputOnSuggestionClick","SearchBar","envVars","searchClient","algoliasearch","algoliaAppId","algoliaApiKey","InstantSearch","indexName","Configure","hitsPerPage","Index","button","fullWidth","customStyling","secondary","tertiary","background","color","border","link","quaternary","padding","fontSize","fontWeight","lineHeight","warning","letterSpacing","borderRadius","text","marginTop","RoundedButton","disabled","undefined","width","CsvReader","handleFileUpload","reviewInput","upload","uploadFile","click","accept","uploadedFile","file","reader","FileReader","onload","readAsText","files","display","require","uploadClientListImage","UploadContainer","Divider","HR","InlineFlex","LinkComponent","InviteLater","ButtonWrapper","UploadWrapper","ChooseMethod","handleChoice","uploadClick","setUploadClick","Row","Confirmation","existingClients","marginBottom","row","first_name","last_name","CopyPaste","field","errorMessage","localField","setLocalField","handleChange","pointerEvents","opacity","Review","submitContacts","editContacts","ProgressBar","percentComplete","twMerge","logo","ReviewLayout","percentDone","showProgressBar","proPic","onContinue","continueDisabled","hideContinue","finalStep","skipStep","mobileOverflow","showBackButton","rest","Object","assign","history","back","BookNext","review","showToast","useToast","isAnon","setIsAnon","isAnonymous","toggleAnonReview","websiteUrl","practitioner","Typography","variant","ButtonLink","CheckBox","reviewId","toggleReviewAnon","checked","as","ReviewProvider","NiceModal","ToastProvider","GraphQLProvider","ClientInfo","setFirstName","setPhone","createClient","createdClientInfo","setCreatedClientInfo","localStorage","parse","isFormValid","trim","handleCreateClient","referralCode","reviewCreateClient","InputWithLabel","Star","filled","colorClass","StarIcon","RatingStarRow","total","stars","i","push","Confirm","showWarning","setShowWarning","confirmReview","filestackPhoto","UnderlinedLink","formatShortDate","createdAt","rating","handleConfirm","EndorsementButton","specialty","onCloseButtonClick","EndorsementPill","toString","Endorsements","endorsements","setEndorsements","addEndorsements","onSpecialtyClick","newEndorsements","specialtyId","includes","indexOf","splice","handleAddEndorsements","Array","from","reviewAddEndorsements","skills","ReviewIntro","RatingStar","setRating","hover","setHover","keywords","star","ratingValue","onMouseEnter","onMouseLeave","Rating","addRating","handleAddRating","reviewAddRating","urlParams","URLSearchParams","get","Number","TextReview","textReview","setTextReview","showVideo","setShowVideo","addTextReview","featureRequest","handleAddTextReview","reviewAddTextReview","TextArea","NewModal","showFooter","hideModal","PracticeContext","PracticeProvider","practiceServices","setPracticeServices","fetchPractice","urqlClient","toPromise","currentPractice","practiceEmail","practicePhone","formatPhone","usePractice","AddOrRetryModal","headerLabel","onSave","setLoading","defaultPaymentMethod","setDefaultPaymentMethod","paymentMethod","setPaymentMethod","DEFAULT_PAYMENT_METHOD_QUERY","pause","defaultPaymentMethodPractice","AnimatedModal","paymentProviderResult","saveDisabled","actionButtonCopy","RadioWithLabel","capitalize","brand","last4","expMonth","expYear","getDefaultPaymentMethodText","AddOrRetryButton","paymentModalOpen","setPaymentModalOpen","NotificationsFlyout","closeFlyout","notificationAppointments","reexecuteQuery","appointments","setAppointments","acceptAppointmentFetching","acceptAppointment","retryPaymentFetching","retryPayment","mutationFetching","Flyout","now","pending","failed","paymentError","overdue","hasTransaction","unprocessed","buttonText","badgeType","badgeText","url","Box","keepBorderInMobile","Badge","formattedStartsAt","Link","handleViewDetailsClick","handleRetryPayment","prev","filter","INBOX_QUERY","Inbox","showFlyout","setShowFlyout","proInbox","failedPayments","missingPayments","pendingAppointments","sort","b","badgeStyles","BellIcon","CounterBadge","ProInbox","FeatureFlagContext","FeatureFlagProvider","flags","navItems","solidIcon","CalendarIconSolid","outlineIcon","CalendarIconOutline","UserIconSolid","UserIconOutline","BanknotesIconSolid","BanknotesIconOutline","NewspaperIconSolid","NewspaperIconOutline","GlobeAltIconSolid","GlobeAltIconOutline","ChatBubbleLeftIconSolid","ChatBubbleLeftIconOutline","Cog8ToothIconSolid","Cog8ToothIconOutline","CurrencyDollarIconSolid","CurrencyDollarIconOutline","QuestionMarkCircleIconSolid","QuestionMarkCircleIconOutline","getSideNavigationItems","websitePlan","giftCardsEnabled","conferencingEnabled","navigationItems","item","child","HealMenuItem","MenuItem","UserDropdown","photoUrl","proName","proEmail","proUrl","Menu","MenuButton","Transition","Fragment","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","MenuItems","static","rel","MobileMenuHambuger","mobileMenuProps","Bars3Icon","MobileMenuFlyout","eventsEnabled","intakeFormsEnabled","customDomainEnabled","websiteBuilderEnabled","openItems","setOpenItems","itemName","ChevronUpIcon","ChevronDownIcon","PortalHeader","alt","CalendarFlyoutContext","CalendarFlyoutProvider","setEventType","useCalendarFlyout","APPOINTMENT_FIELDS_FOR_CALENDAR","APPOINTMENT_QUERY_FOR_CALENDAR","PRO_CALENDAR_QUERY","CREATE_APPOINTMENT_MUTATION","CREATE_APPOINTMENTS_MUTATION","UPDATE_APPOINTMENT_V2_MUTATION","ACCEPT_APPOINTMENT_MUTATION","DECLINE_APPOINTMENT_MUTATION","initialState","locationId","customerId","bookedFrom","bookedBy","recurringStartTimes","recurrencePattern","recurringAppointmentError","rescheduledStartsAt","rescheduledEndsAt","rescheduleRecurringSeries","appointmentErrors","initialAppointmentValues","reducer","action","payload","Error","ManualBookingContext","ManualBookingProvider","dispatch","useReducer","createRecurringAppointmentsFetching","createAppointments","updatedServices","appointmentServices","customPrice","customPrices","find","cp","priceChanged","saveCustomPrice","initialValues","setServices","setLocationId","setStartsAt","setEndsAt","setCustomerId","setClientId","setClient","setRecurringStartTimes","setRecurrencePattern","setRecurringAppointmentError","resetBookingState","setAppointment","setRescheduledStartsAt","setRescheduledEndsAt","setRescheduleRecurringSeries","setAppointmentErrors","createRecurringAppointments","onSuccess","newClient","duration","diff","updateEndsAtWithServicesDuration","servicesObj","totalTimeLength","timeLength","reduce","sum","add","toISOString","useManualBooking","REMOVE_CLIENT_FROM_BOOKABLE_EVENT_MUTATION","PROCESS_REGISTRATION_PAYMENT_MUTATION","defaultNewEvent","set","allDay","timeZone","bookableEventTypeId","BookableEventsContext","BookableEventsProvider","bookableEvents","bookableEventsProp","previousLocations","setBookableEvents","googlePlacesLoaded","setGooglePlacesLoaded","bookableEvent","setBookableEvent","deleteModalVisible","setDeleteModalVisible","rescheduleModalVisible","setRescheduleModalVisible","bookableEventTab","setBookableEventTab","upsertMutationFetching","upsertBookableEvent","photoMutationFetching","updatePhoto","deleteMutationFetching","deleteBookableEvent","removePhotoMutationFetching","removePhoto","getDefaultNewEvent","Intl","DateTimeFormat","resolvedOptions","importLibrary","initPlaces","updateBookableEvents","newEvent","prevEvents","newEvents","findIndex","s","resetBookableEventState","useBookableEvents","formatEventTitle","appt","daysjs","handleDayHeaderContent","args","dayString","date","toDateString","dayName","dayNumber","renderEventContent","eventInfo","extendedProps","timeText","title","description","ProCalendarContext","TIME_GRID_TYPE_MAP","timeGridDay","timeGridWeek","dayGridMonth","ProCalendarProvider","calendarData","setCalendarData","isLoading","setIsLoading","calendarEvents","setCalendarEvents","isFlyoutVisible","setIsFlyoutVisible","selectedDateTime","setSelectedDateTime","selectedPersonalEvent","setSelectedPersonalEvent","selectedExternalEvent","setSelectedExternalEvent","currentViewDate","setCurrentViewDate","showRescheduleConfirm","setShowRescheduleConfirm","draggedEvent","setDraggedEvent","navigate","useNavigate","setSelectedAppointment","upsertPersonalEvent","UPSERT_PERSONAL_EVENT","hash","param","substring","handleCreateAppointmentButtonClick","tokenAppointment","mergeUniqueById","existingItems","newItems","self","fetchCalendarData","to","prevData","practiceAppointments","practiceBookableEvents","personalEvents","fetchCalendarEvents","startDate","endDate","processedEvents","processCalendarEvents","events","currentTimeZone","startsWith","processPersonalEvent","processAllDayEvent","start","end","currentWeekStart","startOf","subtract","currentWeekEnd","endOf","currentUser","addTemporaryEvent","backgroundColor","borderColor","handlePersonalEventReschedule","personalEventId","handleAppointmentReschedule","findAppointment","findPersonalEvent","findBookableEvent","currentPath","replace","bookingAvailability","availableSlots","firstAvailableTimeSlot","getFirstAvailableTimeSlot","nextHour","handleEventClick","personalEvent","foundBookableEvent","handleDateClick","dateInfo","clickedDate","handleDragReschedule","eventDropInfo","handleCreatePersonalEvent","classNames","handleDeletePersonalEvent","handleAppointmentChange","newAppointment","handleRecurringAppointmentsChange","newAppointments","handleAppointmentCancellation","appointmentIds","handleRescheduleSuccess","oldAppointmentId","updatedAppointment","newCalendarEvent","hideRescheduleConfirm","revert","handleDatesSet","timeGridType","view","startStr","endStr","clickedTime","handleBookableEventChange","textColor","editable","handleDeleteBookableEvent","ConfirmRescheduleModal","showReschedule","onRescheduleSuccess","practitionerNote","setPractitionerNote","updateAppointmentV2","clientName","formatShortDateTime","initialEventType","instructions","amount","cents","capacity","BookableEventTypesContext","BookableEventTypesProvider","bookableEventTypes","bookableEventTypesProp","bookableEventType","setBookableEventType","setBookableEventTypes","fetchedEventTypesData","fetchingEventTypes","upsertBookableEventType","deleteBookableEventType","updateBookableEventTypes","newEventType","prevEventTypes","newEventTypes","resetEventType","editEventType","addEventType","saveEventType","removeBookableEventTypeFromList","useBookableEventTypes","BookableEventForm","onBookableEventChanged","onDeleteBookableEvent","editingExistingEvent","selectedEventType","et","saveEnabled","spinnerClassName","Label","htmlFor","Select","handleEventTypeChange","eventTypeId","toFixed","ArrowTopRightOnSquareIcon","tz","DatePicker","selected","TimePicker","valueFormat","showFifteenIncrements","hour","minute","toDate","supportedValuesOf","actionButtonType","DELETE_CLIENT_MUTATION","DeleteClientModal","deleteModalId","deleteClient","editClient","EDIT_CLIENT_MUTATION","EditClientModal","modalId","setError","clientInput","setClientInput","addressTwo","postalCode","fullHeightInMobile","Input","defaultValue","input","labelClassName","isClientValid","fields","CustomOption","setClientToEdit","restProps","contactInfo","preventBooking","__isNew__","components","Option","ClientSelector","defaultClient","onSelect","clientList","setClientList","setNewClient","selectedClient","setSelectedClient","listValue","setListValue","clientToEdit","isLoadingDetails","setIsLoadingDetails","clientPhone","replaceState","required","Creatable","formatCreateLabel","inputValue","DropdownIndicator","isDisabled","clientFromSelect","fullClient","clientDetailsData","enrichedClient","finally","menuPortalTarget","body","formatOptionLabel","option","context","dangerouslySetInnerHTML","__html","styles","selectStyling","onCreateOption","Banner","BOOKABLE_EVENT_REGISTRANTS_QUERY","BOOKABLE_EVENT_REGISTRATION_QUERY","BookableEventPaymentModal","registration","onPaymentSuccess","processingPayment","setProcessingPayment","setPaymentError","paymentMethodData","fetchingPaymentMethod","processPayment","hasSavedCard","handlePaymentMethodChange","cancelButtonCopy","cancelButtonType","registrationId","processRegistrationPayment","err","ClientDetailsFlyout","bookableEventId","onClientRemoved","removeError","setRemoveError","removeFetching","removeClientFromEvent","showRemoveConfirmation","setShowRemoveConfirmation","showPaymentModal","setShowPaymentModal","registrationData","registrationFetching","registrationError","bookableEventRegistration","formatCurrency","canProcessPayment","paymentStatus","getPaymentStatusDisplay","toLocaleDateString","discount","code","hasPaymentProvider","handleShowPaymentModal","CreditCardIcon","handleShowRemoveConfirmation","handleCancelRemove","removeClientFromBookableEvent","handlePaymentSuccess","BookableEventRegistrants","showAddClientModal","setShowAddClientModal","clientDetailsFlyoutVisible","setClientDetailsFlyoutVisible","atCapacity","useMemo","handleAddClient","IconButton","Icon","PencilIcon","handleEditClient","tooltip","AddClientToEvent","handleAddClientSuccess","onCancel","handleClientRemoved","addClientToEvent","zIndex","clientParams","addClientToBookableEvent","CalendarEvent","calendarEvent","calendarName","about","PAYMENT_STATUS_OPTIONS","FREE","PAID","PAST_DUE","FAILED","CARD_NEEDED","CARD_NEEDED_PAST_DUE","PENDING","CANCELLED","UNPAID","paymentProviderName","isPaidOnProvider","paymentIntentId","CREATE_ADJUSTMENT","AdjustmentModal","showAdjustmentModal","note","setNote","adjustmentDate","setAdjustmentDate","adjustmentAmount","setAdjustmentAmount","fullTotal","addAdjustment","overflowVisible","adjustedAt","createAdjustment","newAdjustment","adjustment","updatedAdjustments","adjustments","adj","CurrencyInput","formatPrice","handleAmountChange","AppointmentAdjustments","setShowAdjustmentModal","showRemoveAdjustmentModal","setShowRemoveAdjustmentModal","setAdjustment","isStripePayment","removeAdjustment","formatDate","XMarkIcon","adjustmentId","AppointmentActions","onDecline","removeAppointmentFromCalendar","onAccept","onAppointmentChanged","createManualAppointment","editManualAppointment","onRecurringAppointmentsChanged","setShowPackageConfirmModal","setShowPastAppointmentModal","setPendingAction","packageData","openPackages","p","package","formatClientPhonePlusOne","isCreatingNewPackage","executeSave","declineAppointment","handleSave","validServices","every","isBefore","getTimeFromDateAndTime","time","parseInt","EditAppointmentDateTime","startTime","endTime","isValid","startDateTime","endDateTime","newEndDateTime","startAt","InputWrapper","defaultMaskOptions","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalSymbol","decimalLimit","integerLimit","allowNegative","allowLeadingZeroes","currencyMask","createNumberMask","MaskedInput","BASE_INPUT_CLASSNAMES","mask","seriesEndOptions","getDateInNMonths","n","year","getFullYear","month","getMonth","day","getDate","oneMonthLater","ordinals","getDayOfWeekAndDayInMonth","dateObj","dayOfWeek","weekday","toUpperCase","dayInMonth","weekOfMonth","Math","ceil","RecurrenceSelect","dayOfWeekWithOrdinal","getDayOfWeekAndDayInMonthOrdinal","currentServiceOpenPackage","openPackage","isNewPackage","defaultFrequency","recurrenceFrequency","maxOccurrences","numberOfSessions","sessionsRemaining","min","numberOfOccurrenceOptions","fill","_","getNumberOfSessions","recurrenceCount","removedRecurringTimes","frequency","setFrequency","seriesEnd","setSeriesEnd","recurrenceUntil","numberOfOccurrences","setNumberOfOccurrences","endsOnDate","setEndsOnDate","recurringTimes","setRecurringTimes","customRecurrence","setCustomRecurrence","repeatEveryValue","repeatEveryUnit","repeatOn","SU","MO","TU","WE","TH","FR","SA","handleCustomRecurrenceChange","prevState","newNumberOfSessions","conflictsCount","recurringTime","conflicts","pattern","getPattern","customPattern","daysActive","entries","isChecked","fetchRecurringTimes","networkOnlyUrqlClient","shouldBook","updateState","lastRecurringTime","nonConflictingLength","newRecurringTimes","newRepeatOn","handleCustomDayChange","setHours","hasConflicts","InformationCircleIcon","HealMeTooltip","conflict","timeRange","nextTime","pop","finalTime","getServiceLabel","variation","EditAppointmentService","isServicesEditable","serviceOptions","flatMap","variations","serviceOptionsWithoutPackages","serviceOptionsToUse","regularServiceOptions","addOnServiceOptions","groupedOptions","formatGroupLabel","CustomOptionComponent","innerProps","totalPrice","addServiceDisabled","isBookingOpenPackage","pkg","ReactSelect","variationId","handleServiceSelect","fullService","selectedVariation","originalPrice","updatedServicesAfterPriceChange","handlePriceChange","newDisplayPrice","newAmountCents","unformatPrice","currentService","clientCustomPrice","TrashIcon","handleSaveCustomPriceChange","some","tipAmountCents","discountCodeRedemptions","recurringBookingsEnabled","LocationSelect","locations","virtualMeetingLinkWithFallback","singleLine","VideoCameraIcon","AppointmentDetails","resendProAppointmentConfirmation","resendProAppointmentConfirmationHandler","sendTo","AppointmentReview","CopyLinkButton","reviewLink","copyToClipboard","AppointmentStatus","markPaid","undoMarkPaid","selectedPaymentOption","setSelectedPaymentOption","otherPaymentOption","setOtherPaymentOption","appointmentCopy","setAppointmentCopy","retryingPayment","setRetryingPayment","hasPaymentMethod","canShowWarning","missingPaymentMethod","overduePayment","unprocessedPayment","failedPayment","isPackage","packageSessionNumber","markAsPaid","paidBy","ClientNotes","setText","refetchQuery","addNoteFetching","addNote","clientNote","EditableValue","replaceAll","titleClassName","truncateLength","onOpened","updateStateOnClientSelect","selectedService","serviceObj","buildServiceObj","ChevronRightIcon","clientNotesEnabled","lastBookedService","ConfirmPackageModal","showPackageConfirmModal","__typename","cardOnFile","ConfirmModals","showCancelModal","showPastAppointmentModal","onCancelSuccess","hideRescheduleModal","hideCancelModal","hidePackageConfirmModal","hidePastAppointmentModal","onPackageConfirm","onPastAppointmentConfirm","cancelRecurringSeries","setCancelRecurringSeries","serviceAmount","ErrorBanner","clientEmail","ManualPaymentInvoiceSection","showInvoiceModal","setShowInvoiceModal","setSendTo","sendInvoice","sendInvoiceHandler","sendClientInvoiceMutation","ClientEventForm","onAppointmentCancelled","setShowReschedule","setShowCancelModal","pendingAction","createFetching","createAppointment","updateV2Fetching","cancelFetching","cancelAppointment","acceptFetching","declineFetching","practiceData","includePrivate","includeAddOns","resetDefaultValues","handleErrors","successCallback","proCreateAppointment","showManualPaymentButton","handleCancelSuccess","cancelledAppointmentIds","handlePackageConfirm","handlePastAppointmentConfirm","DELETE_PERSONAL_EVENT","combineDateAndTime","tempDate","PersonalEventForm","onCreate","onDelete","setName","setStartDate","setEndDate","setStartTime","setEndTime","setAllDay","setErrors","deletePersonalEvent","newStartDate","newEndDate","getHours","slice","minDate","AppointmentFlyout","selectedCalendarEvent","onCreatePersonal","onDeletePersonal","showRadioButtons","sidebarHeader","handleCloseFlyout","bookableEventsEnabled","ToggleButtonGroup","CalendarComponent","isMobile","setIsMobile","innerWidth","loadingBarRef","handleResize","continuousStart","complete","LoadingBar","height","FullCalendar","plugins","timeGridPlugin","dayGridPlugin","interactionPlugin","initialView","headerToolbar","left","center","right","customButtons","datesSet","eventContent","eventClick","dateClick","eventDrop","eventResize","views","titleFormat","dayHeaderContent","slotDuration","slotLabelInterval","nowIndicator","contentHeight","expandRows","slotMinTime","scrollTime","AcceptTermsModal","showTermsModal","ProCalendar","featureFlags","DefaultProvider","SendIntakeFormButton","intakeLastSentAt","sendIntakeForm","sentForm","setSentForm","fromNow","IntakeFormSection","hasIntakeForm","intakeFormSubmitted","AddCreditCardModal","AppointmentSummaryRow","hideDivider","startsAtDate","shortSingleLine","PAST_APPOINTMENTS_QUERY","AppointmentHistory","limit","pastAppointment","isLastItem","UPCOMING_APPOINTMENTS_QUERY","UpcomingAppointments","upcomingAppointment","ClientFlyout","creditCardModalOpen","setCreditCardModalOpen","showData","initialClientInput","CreateClientModal","close","setErrorMessage","createClientResult","validEmail","invitedClient","ClientsTable","showClientDetail","setShowClientDetail","clientToDetail","setClientToDetail","setEditClient","columns","accessor","Header","Cell","cell","original","fieldSeparator","quoteStrings","decimalSeparator","showLabels","useTextFile","useBom","filename","headers","refreshScreen","exportToCSV","csvExporter","ExportToCsv","exportable","Email","Phone","lastAppointmentDate","generateCsv","buttonStyle","buttonSize","floatingInMobile","HealMeTable","searchType","rowClick","openToEdit","refreshClient","clientDeleted","clientAdded","appStore","googlePlaystore","iphone13","mobileAppStore","mobileConsumerIphone","consumerIphone","mobileIphone13","mobileGooglePlaystore","Wrapper","TextWrapper","Subtitle","SubHeader","Helper","HelperLink","IconWrapper","Logo","ImageWrapper","createUrqlClient","PaymentSettingsFlyout","hasOffline","communicationSettings","updatePaymentSettings","settings","setSettings","originalSettings","setOriginalSettings","handleUpdate","newValue","update","prevSettings","settingsChanged","handleSettingsUpdate","timeout","requireClientCcToBook","chargeClientCcAtBooking","paymentPastDueEmailEnabled","commIntervals","paymentPastDueEmailMinutes","paymentPastDueTextEnabled","paymentPastDueTextMinutes","dateRangeOptions","stateOptions","limitOptions","TableHeader","dateFilter","stateFilter","handleFilter","totalCount","showPagination","showSearch","PaymentsTable","appointmentFlyoutVisible","setAppointmentFlyoutVisible","showSettings","setShowSettings","filteredPayments","setFilteredPayments","setDateFilter","setStateFilter","setLimit","page","setPage","searchTerm","setSearchTerm","offset","seenPackages","Set","filteredAppointments","packageId","has","consolidatePackages","dateSelection","stateSelection","limitSelection","textColorClass","showAppointment","obj","selectedAppointment","fetchAppointment","genericCallback","isStripeApproved","totalCollected","totalOutstanding","Service","Location","Amount","Status","requireCcEnabled","hasPagination","pastAppointmentsCount","rowData","searchPlaceholder","offlinePaymentMethod","PaymentDirectory","ProfilePhoneNumber","practitionerId","phoneNumberHref","setPhoneNumberHref","formattedPhoneNumber","setFormattedPhoneNumber","setIsDisabled","viewPhone","phoneNumber","dataLayer","event_category","event_label","InputField","autoComplete","clsx","forwardRef","EnterPhoneWrapper","NavigationItem","activeHref","badgeCount","hasChildren","hasChildrenActive","isOpen","setIsOpen","isActive","icon","textDecoration","NavigationItemChild","isLast","SideNavigationComponent","completionCount","verificationCount","googleConnected","cronofyConnected","showNotice","setShowNotice","cronofyModalVisible","setCronofyModalVisible","profileBadgeCount","items","handleDismiss","hideCancelButton","BookableEventCard","BookableEventsFlyout","BookableEventsPage","defaultTimeZone","Breadcrumbs","links","activePage","ListBox","labelClassNames","buttonHint","Listbox","BASE_LABEL_CLASSNAMES","Options","DROPDOWN_CLASSNAMES","DROPDOWN_OPTION_CLASSNAMES","ClientPageView","path","clientProp","selectItems","TabNavLink","fullAddress","Boolean","prevClient","DETACH_PAYMENT_METHOD_PRACTICE_MUTATION","ClientPaymentMethod","setShowDeleteModal","PaymentMethods","showDeleteModal","detachPaymentMethodPractice","filteredClients","latestClients","forEach","values","getFilteredClients","EmptyStateBox","ManageCreditCard","detachingPaymentMethod","Billing","IntakeForm","rawJson","intakeForm","parsedJson","isArray","subKey","subValue","addNoteToClient","AppointmentNotes","openAppointmentToken","editing","setEditing","focus","appointmentNoteText","appointmentNote","noteType","sanitize","ClientChronology","setOpenAppointmentToken","Overview","IntakeFormPage","uniqueId","theme","alreadyCompleted","redirectUrl","countdown","setCountdown","saveIntakeFormResponse","timer","clearTimeout","survey","Model","applyTheme","surveyComplete","formData","onComplete","Survey","model","questionTypes","UPSERT_INTAKE_FORM_MUTATION","UPSERT_INTAKE_FORM_THEME_MUTATION","IntakeForms","formJson","showLogicTab","showJSONEditorTab","showThemeTab","creator","SurveyCreator","whiteList","onShowingProperty","constructor","canShow","property","isAutoSave","showState","toolbox","forceCompact","saveSurveyFunc","saveNo","callback","mutation","saveThemeFunc","SurveyCreatorComponent","InfoParagraph","SurveyCreatorCore","getLocale","ed","surveyTypeName","PaypalPaymentButton","tipOnly","fundingSource","onError","createOrder","capturePayment","createOrderCallback","createPaypalOrder","orderId","PayPalButtons","forceReRender","onApprove","orderID","capturePaypalPayment","layout","shape","PAYMENT_METHODS","PAYMENT_METHOD_DESCRIPTIONS","AddPaymentModal","onPaypalSuccess","tipOption","setTipOption","tipValue","setTipValue","useAppointment","browserInfo","setBrowserInfo","userAgent","browserData","isChrome","test","isSafari","isAndroid","isIOS","isCompatibleBrowser","useBrowserInfo","customTipInputRef","acceptsTips","showPaypal","hasPaypalPaymentsEnabled","showVenmo","hasVenmoPaymentsEnabled","paypal","isFundingEligible","isVenmoIncompatible","addTipToAppointment","chargeTipOnly","TIPPING_OPTIONS","scrollIntoView","behavior","block","showErrorAndClose","tipAmount","stringPriceToInteger","autoFocus","appointmentResponse","AddPaymentButton","modalHeaderLabel","modalActionButtonCopy","hasPaypalAccount","PayPalScriptProvider","paypal_client_id","merchantId","paypal_merchant_id","dataPartnerAttributionId","paypal_partner_attribution_id","amountCurrency","intent","enableFunding","CancelAppointmentButton","cancelButtonLoading","setCancelButtonLoading","confirmCancelModal","useModal","ConfirmCancelModal","hide","OfflinePaymentMethods","acceptsCash","acceptsOfflineCreditCard","acceptsPaypal","acceptsVenmo","acceptsZelle","PaymentStatusBox","clientPaymentStatus","defaultPaymentMethodData","statusMessage","Paid","Failed","Pending","PriceRow","PageContent","appointmentData","setContextAppointment","alertVisible","setAlertVisible","alertWarning","setAlertWarning","buttonLoading","setButtonLoading","ianaTimeZone","guess","appointmentIsPast","shouldPayNow","showAddCardButton","showAddTipButton","titleStatus","subTitle","formattedTip","formattedTotal","formattedPhone","isPhoneCall","virtualType","chargeCard","CHARGE_CARD_MUTATION","onCreditCardSave","tip","chargeAndAlert","defaultPhotoUrl","locationName","utc","timezone","eventRegistration","finalAmountCents","eventIsPast","isAfter","locationDisplay","eventAmount","discountAmount","finalAmount","ProfileStatusContext","ProfileStatusProvider","profileStatusData","setProfileStatusData","syncProfileStatus","useProfileStatus","ProfileEditProvider","Details","userState","setUserState","lastSavedUserValue","setLastSavedUserValue","openField","setOpenField","updatePersonalSettings","password","passwordConfirmation","fromEntries","v","fieldName","gender","customGender","dob","editButtonCopy","GiftCardForm","giftCard","setFormData","public","step","round","handleSubmit","validate","newErrors","isNaN","parseFloat","keys","GiftCardTemplates","giftCardTemplates","giftCardTemplatesProp","setGiftCardTemplates","setView","showNewForm","setShowNewForm","editingTemplate","setEditingTemplate","upsertGiftCardTemplate","savedTemplate","giftCardTemplate","templates","t","template","DisplayAvailableTimes","locationOrService","ORDERED_DAYS","availableTimesForDay","availableTimes","enabled","toLowerCase","AvailableTimes","updateAvailableTimes","newState","newTimes","PlacesAutocomplete","validationError","VALIDATION_ERROR_INPUT_CLASSNAMES","ValidationError","LocationPlacesSelect","setLocation","process","onPlaceSelected","newLocation","neighborhood","cityGeocoded","stateProvince","stateAbbreviation","countryCode","placeId","fullStreetAddress","address_components","long_name","short_name","place_id","stripUSAFromString","SELECT_OPTIONS","HomeLocationFields","validationErrors","travelDistance","defaultOption","OfficeLocationFields","secondaryAddress","hideAddress","TIMEZONE_OPTIONS","group","timezones","formatTimezoneOption","timeString","formattedLabel","currentTime","VirtualLocationFields","zoomActive","conferencingServices","timeUpdate","setTimeUpdate","interval","setInterval","clearInterval","timezoneOptions","provided","justifyContent","explanatorySubtext","LocationFlyout","setLocations","formState","setFormState","setValidationErrors","upsertLocationFetching","upsertLocation","disableLocationFetching","disableLocation","enableLocationFetching","enableLocation","deleteLocationFetching","deleteLocation","editingExistingLocation","lastActiveLocation","l","handleLocationTypeChange","updateLocationsState","locationsCopy","onDisable","onlyLocationForService","onEnable","formatAvailableTimes","disabledTooltipMessage","Locations","defaultAvailableTimes","newLocationDefaults","locationsState","setLocationsState","flyoutVisible","setFlyoutVisible","addNewLocation","ProfilePageEmptyStateBox","onButtonClick","DropdownButton","LocationInput","setInputValue","comboboxRef","placesService","placePredictions","getPlacePredictions","isPlacePredictionsLoading","usePlacesService","debounce","Combobox","getDetails","newMapCenter","CustomEvent","detail","dispatchEvent","ComboboxInput","evt","ComboboxButton","MapPinIcon","ComboboxOptions","ComboboxOption","RegExp","match","PhotoUpload","onUploadDone","uploadPhoto","handle","filesUploaded","updateBookableEventTypePhoto","FilePicker","transformations","onPhotoDelete","removeBookableEventTypePhoto","BookableEventTypeForm","newAmount","newKind","BookableEventTypeFlyout","refetchEventTypes","setFetching","editingExistingEventType","confirmLabel","confirmType","EventTypeRow","onEdit","BookableEventTypesTable","ServiceSelector","selectedServiceIds","isMulti","DiscountCodeFlyout","setDiscountCodes","editingCode","setEditingCode","defaultDiscountCode","upsertDiscountCode","percent","expiresAt","maxRedemptions","combinationLimit","hasExpiration","hasMaxRedemptions","applyToSpecificServices","serviceIds","newCode","discountCode","codes","max","floor","onKeyDown","Toggle","newIds","DiscountCodesTable","discountCodes","discountCodesProp","discountCodesFlyoutVisible","setDiscountCodesFlyoutVisible","deleteDiscountCode","DocumentDuplicateIcon","clipboard","writeText","redemptionCount","confirm","handleDelete","hasDuplicates","array","ServiceFlyout","allServices","addOns","setAddOns","activeLocations","showToggle","upsertService","removeMutationFetching","removeService","editingExistingService","lastActiveService","allVariations","hasMultipleLocationsInSameCity","uniqBy","updateServices","newService","newServices","updateServicePhoto","smallWebpUrl","stripHTMLTags","variationsArray","locationIds","allowedServiceIds","removeServicePhoto","QuillEditor","prevService","CloseButton","otherVariations","priceExists","durationExists","newVariations","newVariation","prevErrors","uuidv4","availableTimesEnabled","isEmpty","QuestionMarkCircleIcon","ServiceCard","servicesPagesEnabled","serviceUrl","tabToHashMap","Coupons","hashToTabMap","addons","coupons","Services","servicesProp","discountCodesEnabled","newServiceDefaults","newPackageDefaults","newAddOnDefaults","showToggleInFlyout","setShowToggleInFlyout","editingDiscountCode","setEditingDiscountCode","reorderServices","setEventTypeFlyoutVisible","updateView","newView","handleHashChange","tabName","addNewService","addNewAddOn","editService","addNewDiscountCode","addNewEventType","unsortableServices","sortableServices","dropDownItems","addNewPackage","ReactSortable","list","setList","newPositions","concat","servicesArray","EllipsisVerticalIcon","NAV_ITEMS","SELECT_ITEMS","ProCommunicationSettingsView","CommunicationSettings","updateCommunicationSettings","appointmentReminderEmailEnabled","appointmentEmailReminderMinutes","appointmentReminderTextEnabled","appointmentTextReminderMinutes","VariableDivider","VariableRow","exampleValue","handleCopy","CommunicationTemplates","emailTemplates","defaultEmailContent","originalEmailTemplates","defaultEmailTemplate","customEmailTemplate","customContent","defaultContent","allowedVariables","currentEmailTemplates","setCurrentEmailTemplates","handleEmailTemplateUpdate","emailName","prevEmailTemplates","emailTemplate","updatedEmailTemplates","emailTemplatesChanged","confirmationEmail","reminderEmail","handleCancel","ConferencingSettings","zoom","deactivateVideoConferencing","showDeactivateModal","setShowDeactivateModal","connected","erroredAt","ExclamationCircleIcon","accountName","accountEmail","DISCONNECT_PAYPAL_MUTATION","gql","UPDATE_PAYPAL_SETTINGS_MUTATION","CHECK_PAYPAL_SELLER_STATUS","PaypalSettingsComponent","paypalInfo","paypalConnected","setPaypalConnected","showDisconnectModal","setShowDisconnectModal","paypalActive","setPaypalActive","venmoActive","setVenmoActive","sellerStatus","setSellerStatus","disconnectPaypal","updatePaypalSettings","fetchingCheckStatus","checkStatus","handleUpdateSettings","newPaypalActive","newVenmoActive","checkSellerStatus","checkPaypalSellerStatus","isOnboardingComplete","paymentsReceivable","primaryEmailConfirmed","handleDisconnect","disconnectPaypalAccount","SquareSettings","squareInfo","displayName","squareConnected","StripeSettings","stripeInfo","connectionError","requirementsDue","requirementsPastDue","operational","bufferIntervals","leadTimes","startTimeIncrements","BookingSettings","bookingSettings","cancellationPolicyEnabled","updateBookingSettings","instantClientApproval","appointmentBufferTime","appointmentLeadTime","startTimeIncrement","maxLength","cancellationPolicy","calendarImages","apple","live_connect","CalIcon","iconClassName","CalendarIcon","ReadCalendarSettings","selectedProvider","newProvider","setNewProvider","updateCalendars","providerName","profileName","calendars","cal","prevProvider","calendar","updateCronofyCalendars","WriteCalendarSettings","connectedCalendars","writeCalendar","setWriteCalendar","writeProvider","setWriteProvider","calendarId","updateCronofyClient","writeCalendarId","CalendarContainer","copy","ConfigurationButton","fallbackCopy","CalendarSettings","authorizationUrl","writeCal","setConnectedCalendars","isFlyoutOpen","setIsFlyoutOpen","providerId","setProviderId","profileToDelete","setProfileToDelete","feedModalVisible","setFeedModalVisible","feedUrl","setFeedUrl","feedSaving","setFeedSaving","removeCronofyProfile","createCronofyFeed","feed","profileId","prevCalendars","newCalendars","MainSettings","calendarConnected","showSubscriptionLink","ArrowPathRoundedSquareIcon","ChatBubbleLeftEllipsisIcon","CalendarDaysIcon","NewspaperIcon","PaymentIntegrations","stripeConnected","stripeDisplayName","squareDisplayName","paypalEnabled","changePaymentProviderModalVisible","setChangePaymentProviderModalVisible","newPaymentProvider","setNewPaymentProvider","updatePaymentProvider","PaymentProviderCard","imageUrl","manageUrl","connectUrl","noticeModalVisible","setNoticeModalVisible","hasAnyConnected","isCurrentProvider","sortedProviders","handleUpdatePaymentProvider","currencyOptions","PaymentSettings","acceptsCreditCard","currencyEnabled","updateOfflineOptions","updateCurrency","updateTippingOption","editableCurrency","setEditableCurrency","editableAcceptsCash","setEditableAcceptsCash","editableAcceptsPaypal","setEditableAcceptsPaypal","editableAcceptsZelle","setEditableAcceptsZelle","editableAcceptsVenmo","setEditableAcceptsVenmo","editableAcceptsCreditCard","setEditableAcceptsCreditCard","editableAcceptsTips","setEditableAcceptsTips","paymentMethods","setState","CurrencyDollarIcon","updatePracticeCurrency","method","methodId","acc","updatePracticeOfflineOptions","SparklesIcon","updatePracticeAcceptsTips","PersonalInformationPractice","allLanguages","allWorkWiths","allAgeWorkWiths","userIsWebsitePlan","practiceDetails","setPracticeDetails","lastSavedDetailsValues","setLastSavedDetailsValues","updatePracticeDetails","UPDATE_PRACTICE_DETAILS_MUTATION","languageIds","languages","ageWorkWithIds","ageWorkWiths","workWithIds","workWiths","w","website","facebook","instagram","twitter","linkedin","tiktok","youtube","setVariables","socialsValue","hint","language","ageWorkWith","workWith","LinkIcon","UPDATE_INFO_MUTATION","PersonalInformationUser","CredentialsModal","setProCredentials","selectedCredentialType","setSelectedCredentialType","selectedCredential","setSelectedCredential","selectedIssuer","setSelectedIssuer","licenseNumber","setLicenseNumber","issuingState","setIssuingState","addCredential","handleCredentialChange","onMutationComplete","createProCredential","credentials","proCredential","hideSaveButton","credentialId","issuerId","stateIssued","AlgoliaSearchBox","filters","objectID","FilePickerDropArea","filestackDocument","filestackDocumentName","CredentialRow","deleteCredential","fallbackFilename","credential","DocumentTextIcon","Credentials","proCredentials","proCredentialsProp","credentialToDelete","setCredentialToDelete","removeCredential","reorderCredentials","approvedCredentials","pendingCredentials","deleteCredentialModalId","newCredentials","newOrder","credentialArray","stripePromise","Step","number","Tag","CheckIcon","ProfileChecklist","modalShown","setModalShown","profilePublished","notVerified","showCompletedModal","steps","completionSteps","verificationSteps","indexOfCurrentStep","completed","progressPercentage","startVerification","verificationSession","verifyIdentity","practitionerFirstName","profileUrl","ProfileEditView","profileVerified","Audience","details","allShortLinks","detailsValues","setDetailsValues","photoUrlValue","setPhotoUrlValue","infoFetching","updateInfo","photoFetching","updateUserPhoto","headline","shortLink","profileDetails","PlusIcon","ShortUrlInput","EndorsementsFlyout","specialtiesByLetter","setSkills","searchValue","setSearchValue","selectedSpecialties","setSelectedSpecialties","skill","updateSkills","useSearchBox","useHits","specialties","newSpecialties","SearchInput","containerClassName","newQuery","letter","skillsState","setSkillsState","deleteSkills","moveSkills","newSkills","skillArray","draggable","skillId","copySkills","removeSkill","Photos","galleryImages","photos","setPhotos","removeImageFetching","removeGalleryImage","addImagesFetching","addGalleryImage","reorderGalleryImages","handles","maxFiles","photosArray","galleryId","servicesState","setServicesState","freeServices","paidServices","ProImportReviews","importReview","reviewDefaults","newReview","setNewReview","proImportReview","today","maxDate","ProReviewRequestsTable","clientRequests","requests","setRequests","reviewToDismiss","setReviewToDismiss","dismissReviewRequest","resendProReviewRequest","requestColumns","reviewRequireConfirmation","dateA","reviewRequestedAt","request","dateFormat","REVIEW_REPLY_MUTATION","ReviewFlyout","showReplyEdit","setShowReplyEdit","reviewReply","setReviewReply","addEditReply","handleReviewReply","replied","addEditReviewReply","unverifiedName","endorsedSkills","clientEdited","ratingOptions","ratingFilter","ProReviewsTable","reviews","allReviews","flyoutKey","setFlyoutKey","showReviewDetail","setShowReviewDetail","selectedReview","setSelectedReview","filteredReviews","setFilteredReviews","setRatingFilter","ratingSelection","combinedArray","filterReviewsByDate","filterByRating","reviewColumns","clientOrUser","client_name","ReviewRequestForm","existingRequests","requestReviewLink","defaultRows","setClients","sendBulkReviewRequests","handleClientChange","updatedClients","addClient","formattedClients","Reviews","importReviewsEnabled","handleTabClick","tabId","ReferralProgram","practitionerReferral","referralCreditWithdrawals","isLifer","ClipboardIcon","referralUses","referral","useDate","withdrawal","withdrawalDate","WebsiteDash","GlobeAltIcon","GENERATE_IMAGE_ALT_TEXT_MUTATION","GENERATE_SITE_METADATA_MUTATION","UPSERT_WEBSITE_METADATA_MUTATION","SeoSettings","websiteMetadata","initialWebsiteMetadata","setWebsiteMetadata","lastSavedValues","setLastSavedValues","upsertMetadata","generating","generateMetadata","generatingAlt","generateAltText","upsertWebsiteMetadata","ogSiteName","primaryModality","handleGenerate","generateSiteMetadata","newMetadata","handleGenerateAltText","generateImageAltText","customDomainConfig","isDev","isStaging","hostname","applicationId","power","dnsRecords","domain","host","ttl","applicationUrl","powerRootPathAccess","subDomain","handleCustomDomainModalStepChange","upsertCustomDomain","CustomDomainSection","customDomain","domainStatus","setDomainStatus","jwtTokenFetching","domainProviderJwtToken","deleteFetching","deleteCustomDomain","statusFeching","handleAddOrEditDomain","jwtToken","config","entri","showEntri","warn","showCustomDomainModal","domainActive","domainStatsIcon","ArrowPathIcon","domainStatsText","cleanWebsite","isValidUrl","URL","handleRefreshDomain","handlePurchaseDomain","purchaseDomain","showPurchaseDomainModal","handleDeleteDomain","WebsiteDomain","shortLinkValue","setShortLinkValue","lastSavedShortLink","setLastSavedShortLink","customDomainValue","setCustomDomainValue","updateShortLink","WebsiteSettingsComponent","isImpersonating","Event","bubbles","cancelable","setLicenseKey","InviteClients","setActive","setStep","setExistingClients","setField","handleChoiceUpdate","newVal","choice","userInput","invitationType","rowArray","validateEmail","SwitchCase","ListPracticeCTA","amplitudeData","sendAnalytics","fbq","DownloadMobileApp","isPro","contextHeader","sendText","dimension","updateDimention","innerHeight","ProMainSettings","ProCalendarSettings","ProReviews","BrowseTherapiesCTA","MobileMenu","ClientDirectory","EnterPhone","nextStep","ManageAppointmentsConsumer","AppointmentProvider","ManageEventRegistration","ClientBookings","ProCommunicationSettings","ProCommunicationSettingsProvider","ProCommunicationTemplates","SideNavigation","ClientUploadButton","ProfileEditDetails","ProfileEditCredentials","ProfileEditEndorsements","AlgoliaSearchProvider","ProfileEditPhotos","ProfileEditServices","ProfileEditLocations","ProfileEditAudience","ProPaymentSettings","StripePaymentsSettings","SquarePaymentsSettings","PaypalSettings","ProBookingSettings","PersonalSettings","ReviewClientInfo","ReviewRating","ReviewEndorsements","ReviewTextReview","ReviewBookNext","ReviewConfirm","ManagePaymentMethods","HomePage","ProProfile","ProProfileV2","SearchPage","TopNavSearchBox","BookableEvents","IntakeFormsPage","ClientOverview","ClientIntakeForm","ClientBillingPage","WebsiteBuilderPage","WebsiteContentPage","WebsiteBuilderProvider","WebsitePreviewView","ContentTab","WebsiteSettings","PortalServicesPage","PortalServicesLocations","ProReviewsCompletedPage","ProReviewsImportPage","ProReviewsPendingPage","ProReviewsRequestPage","ProReviewsEndorsementsPage","PersonalInformationPage","ProfileEditCredentialsV2","PracticeInformationPage","PractitionerLandingPage","ReferralProgramPage","CombinedInformationPage","PortalGiftCardTemplatesPage","ConferencingSettingsPage","Component","WrappedComponent","ReactOnRails","HoneybadgerErrorBoundary","CTALink","BottomCTA","bgImageClasses","currentBgImageClass","random","HeroSection","ctaButtonIsSticky","setCtaButtonIsSticky","ctaButtonLeftOffset","setCtaButtonLeftOffset","ctaButton","getElementById","stickyPoint","offsetTop","offsetLeft","handleScroll","scrollY","PractitionerJoinCTA","ReviewCard","reviewText","firstInitial","lastInitial","createdAtAgoInWords","ReviewStars","smallPhotoUrl","ReviewsSection","reviewsState","setReviewsState","numReviewsShown","shownReviews","nextReviewIndex","nextSlotIndex","startAnimation","setStartAnimation","nextReview","newShownReviews","TherapyCategoriesSection","therapyCategories","showAll","setShowAll","limitedTherapyCategories","fullTherapyCategories","category","ArrowRightIcon","initVerifyHandler","collectCancelData","canceledBy","this","initQuestionHandler","on","init","amplitude_id","includeUtm","includeReferrer","includeGclid","includeFbclid","page_name","setUserId","setUserProperties","user_kind","attr","screen","Category","serviceName","initRescheduleHandler","question","tags","is","Insurance","Ages","Languages","addClass","each","wrapper","closest","prependTo","querySelectorAll","Inputmask","alias","slider","getRgbColorFromGradient","beginColor","endColor","ratio","getGradientColor","moveSliderBullet","sliderInputElement","inputElement","bullet","parent","lines","numbers","css","html","keyup","change","define","pluginName","defaults","allowDropdown","autoHideDialCode","autoPlaceholder","customPlaceholder","dropdownContainer","excludeCountries","formatOnDisplay","geoIpLookup","hiddenInput","initialCountry","nationalMode","onlyCountries","placeholderNumberType","preferredCountries","separateDialCode","utilsScript","UP","DOWN","ENTER","ESC","PLUS","A","Z","SPACE","TAB","regionlessNanpNumbers","Plugin","element","telInput","extend","ns","isGoodBrowser","setSelectionRange","hadInitialPlaceholder","fn","windowLoaded","prototype","_init","autoCountryDeferred","Deferred","utilsScriptDeferred","selectedCountryData","_processCountryData","_generateMarkup","_setInitialState","_initListeners","_initRequests","_processAllCountries","_processCountryCodes","_processPreferredCountries","_addCountryCode","iso2","dialCode","priority","countryCodes","lowerCaseOnlyCountries","countries","allCountries","_countryNameSort","lowerCaseExcludeCountries","localeCompare","areaCodes","j","countryData","_getCountryData","parentClass","wrap","class","flagsContainer","insertBefore","selectedFlag","appendTo","selectedFlagInner","selectedDialCode","countryList","_appendListItems","countryListItems","dropdown","append","insertAfter","tmp","_getDialCode","_isRegionlessNanp","_updateFlagFromNumber","_setFlag","defaultCountry","_updateValFromNumber","_initKeyListeners","_initFocusListeners","_initDropdownListeners","_initHiddenInputListener","that","form","getNumber","hasClass","prop","_showDropdown","which","stopPropagation","_closeDropdown","loadUtils","_loadAutoCountry","autoCountry","handleAutoCountry","startedLoadingAutoCountry","intlTelInput","_triggerCountryChange","_cap","substr","one","len","_removeEmptyDialCode","charAt","numeric","_getNumeric","off","_setDropdownPosition","activeListItem","_highlightListItem","_scrollTo","_bindDropdownListeners","trigger","dropdownHeight","removeClass","outerHeight","pos","inputTop","top","windowTop","scrollTop","dropdownFitsBelow","dropdownFitsAbove","toggleClass","extraTop","_selectListItem","isOpening","queryTimer","_handleUpDownKey","_handleEnterKey","String","fromCharCode","_searchForCountry","first","next","currentCountry","_startsWith","listItem","not","intlTelInputUtils","numberFormat","INTERNATIONAL","NATIONAL","formatNumber","_beforeSetNumber","alreadySelected","inArray","isNanpAreaCode","areaCode","ignoreOnlyCountriesOption","allowFail","prevCountry","_updatePlaceholder","shouldSetPlaceholder","numberType","getExampleNumber","flagChanged","_updateDialCode","detach","middle","container","containerHeight","containerTop","containerBottom","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","heightDifference","newDialCode","hasSelectedListItem","newNumber","inputVal","prevDialCode","numericChars","isNumeric","_getFullNumber","numericVal","normalizedVal","setCountry","handleUtils","destroy","before","remove","getExtension","getNumberType","getSelectedCountryData","getValidationError","isValidNumber","setNumber","setPlaceholderNumberType","returns","arguments","deferreds","instance","instanceDeferreds","when","apply","call","getCountryData","loadedUtilsScript","ajax","dataType","cache","version","factory","calendarIndex","LocalTime","innerStr","newStr","empty","originalString","animate","fadeIn","fadeOut","overflowY","maxHeight","pass","classList","baseIndex","getElementsByClassName","scroll","unbind","siblings","transition","formatOnInit","keydown","modal","current_url","prevObject","dataset","txtArea","createElement","appendChild","select","execCommand","removeChild","innerText","resultsElement","replaceWith","refireLoad","tabsetName","tabPanels","aa","k","m","d","execScript","shift","o","f","q","ba","da","h","ea","fa","ha","ia","ja","ka","la","g","ma","r","oa","ca","na","clone","x","u","y","B","C","pa","D","E","F","G","qa","H","ra","I","sa","J","ta","ua","ctor","K","wa","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","M","xa","ya","L","N","O","P","Q","R","S","T","U","V","W","X","Y","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","lastIndexOf","Ra","exec","Sa","Ha","z","va","Ua","E164","RFC3966","FIXED_LINE","MOBILE","FIXED_LINE_OR_MOBILE","TOLL_FREE","PREMIUM_RATE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL","UNKNOWN","IS_POSSIBLE","INVALID_COUNTRY_CODE","TOO_SHORT","TOO_LONG","NOT_A_NUMBER"],"sourceRoot":""}