{"version":3,"file":"js/application-abb0ee30137b69825fed.js","mappings":"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","sources":["webpack:///./app/javascript/components/ sync ^\\.\\/.*$","webpack:///./app/javascript/components/Document.tsx","webpack:///./app/javascript/services/apolloClient.ts","webpack:///./app/javascript/components/RenderChildWhenFFOn.tsx","webpack:///./app/javascript/components/avatars/Avatar.tsx","webpack:///./app/javascript/components/avatars/avatarSizes.ts","webpack:///./app/javascript/components/avatars/borderColors.ts","webpack:///./app/javascript/components/buttons/AddButton.tsx","webpack:///./app/javascript/components/buttons/AddPlusOneButton.tsx","webpack:///./app/javascript/components/buttons/Button.tsx","webpack:///./app/javascript/components/buttons/CardButton.tsx","webpack:///./app/javascript/components/buttons/Chip.tsx","webpack:///./app/javascript/components/buttons/CustomChip.tsx","webpack:///./app/javascript/components/buttons/FavoritesButton.tsx","webpack:///./app/javascript/components/buttons/FlatButton.tsx","webpack:///./app/javascript/components/buttons/FloatingButton.tsx","webpack:///./app/javascript/components/buttons/HoverBorderIconButton.tsx","webpack:///./app/javascript/components/buttons/IconButton.tsx","webpack:///./app/javascript/components/buttons/LoadMoreCommentsButton.tsx","webpack:///./app/javascript/components/buttons/SelectButton.tsx","webpack:///./app/javascript/components/buttons/TextButton.tsx","webpack:///./app/javascript/components/buttons/buttonColors.ts","webpack:///./app/javascript/components/buttons/chipColors.tsx","webpack:///./app/javascript/components/buttons/textButtonColors.ts","webpack:///./app/javascript/components/pages/account/AccountPage.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/AvatarSection.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/AvatarUploader.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/BasicInfoFields.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/NotificationsFields.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/ProfileFormSectionGrid.tsx","webpack:///./app/javascript/components/pages/account/AccountPage/ProfileForm/notificationsMap.ts","webpack:///./app/javascript/components/pages/activities/ActivityForm.tsx","webpack:///./app/javascript/components/pages/activities/ActivityForm/ActivityPreview.tsx","webpack:///./app/javascript/components/pages/activities/ActivityForm/ActivityPriceField.tsx","webpack:///./app/javascript/components/pages/activities/ActivityLinkOrAddressForm.tsx","webpack:///./app/javascript/components/pages/activities/ActivityLocationField.tsx","webpack:///./app/javascript/components/pages/activities/NewActivityForm.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/ActivityPage.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/DateOptionPage.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/DestinationPage.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/StayBookingDetails.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/StayPage.tsx","webpack:///./app/javascript/components/pages/comments/IndexPage/VotingSection.tsx","webpack:///./app/javascript/components/pages/dates/VotingDatesForm.tsx","webpack:///./app/javascript/components/pages/dates/VotingDatesForm/VotingCount.tsx","webpack:///./app/javascript/components/pages/dates/VotingDatesForm/VotingDatesButtons.tsx","webpack:///./app/javascript/components/pages/dates/VotingDatesForm/VotingProgressBar.tsx","webpack:///./app/javascript/components/pages/destinations/DestinationField.tsx","webpack:///./app/javascript/components/pages/destinations/DestinationForm.tsx","webpack:///./app/javascript/components/pages/destinations/DestinationPreview.tsx","webpack:///./app/javascript/components/pages/errors/ErrorsPage.tsx","webpack:///./app/javascript/components/pages/favorites/FavoritesPage.tsx","webpack:///./app/javascript/components/pages/favorites/ShareFavoriteActions.tsx","webpack:///./app/javascript/components/pages/favorites/ShareFavoriteDialog.tsx","webpack:///./app/javascript/components/pages/home/HomePage.tsx","webpack:///./app/javascript/components/pages/public_stays_search/AiFilterBackground.tsx","webpack:///./app/javascript/components/pages/public_stays_search/AiStaysSearchPage.tsx","webpack:///./app/javascript/components/pages/public_stays_search/FilterBackground.tsx","webpack:///./app/javascript/components/pages/public_stays_search/FilterSearchedBackground.tsx","webpack:///./app/javascript/components/pages/public_stays_search/PublicStaysSearchPage.tsx","webpack:///./app/javascript/components/pages/shared/ManageInvitesAndTravelersModalPage.tsx","webpack:///./app/javascript/components/pages/shared/ManageTravelers.tsx","webpack:///./app/javascript/components/pages/shared/travelers/AdditionalTravelerActions.tsx","webpack:///./app/javascript/components/pages/shared/travelers/CreateGuestForm.tsx","webpack:///./app/javascript/components/pages/shared/travelers/CreatePlusOneForm.tsx","webpack:///./app/javascript/components/pages/shared/travelers/EditDeleteButtonGroup.tsx","webpack:///./app/javascript/components/pages/shared/travelers/GuestsSection.tsx","webpack:///./app/javascript/components/pages/shared/travelers/TravelerActionsButtonGroup.tsx","webpack:///./app/javascript/graphql/queries/plusOnes.ts","webpack:///./app/javascript/components/pages/shared/travelers/TravelerInfo.tsx","webpack:///./app/javascript/components/pages/shared/travelers/TravelersSkeleton.tsx","webpack:///./app/javascript/components/pages/stays/AddStayPage/GoogleMapsForm.tsx","webpack:///./app/javascript/components/pages/stays/AddStayPage/SearchForm.tsx","webpack:///./app/javascript/components/pages/stays/AddStayPage/SmartSearchForm.tsx","webpack:///./app/javascript/components/pages/stays/AddStayPage/UrlForm.tsx","webpack:///./app/javascript/components/pages/stays/AddStayPage/withAddStayPageLayout.tsx","webpack:///./app/javascript/components/pages/stays/BatchStayForm.tsx","webpack:///./app/javascript/graphql/queries/stayBookings.ts","webpack:///./app/javascript/components/pages/stays/StayBookingActions.tsx","webpack:///./app/javascript/components/pages/stays/StayDetailsForm.tsx","webpack:///./app/javascript/components/pages/stays/StayForm.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/AddressField.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/AvailabilityAndPricingSection.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/DateOptionsAvailability.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/DateOptionsAvailability/DateOptionsAvailabilityFields.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/DetailsFields.tsx","webpack:///./app/javascript/components/pages/stays/StayForm/StayPreview.tsx","webpack:///./app/javascript/components/pages/stays_search/ExternalListingCTA.tsx","webpack:///./app/javascript/components/pages/stays_search/ExternalListingForm.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiFilters.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiPublicSearchEmptyState.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiPublicSearchEmptyState/ExamplePrompt.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiResults.tsx","webpack:///./app/javascript/services/stringService.ts","webpack:///./app/javascript/components/pages/stays_search/Listings/AiSearchCriteriaDialog.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiSearchPaginationText.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiSearchPrompt.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiSearchPromptDialog.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AiSearchPromptSection.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/AlternativesDialog.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ExternalListingCard.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ExternalListingCard/ExternalListingContent.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ExternalListingCard/FavoriteToggleButton.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ExternalListingCard/ImagesCarousel.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ExternalListingCard/ListingPricing.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/FilterButton.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/InventoryRadioGroup.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/AmenitiesFilters.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/BookingOptions.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/PriceFilter.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/PropertyTypes.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/RatingFilter.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/RoomFilters.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/Filters/SortAndFilter/SortAndFilterDrawer.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/FiltersButton.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/InventoryBanner.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ListingMarker.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ListingsBox.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ListingsEmptyState.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ListingsErrorState.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/ListingsMapView.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/LoadingState.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/RecentlySearched.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/SearchCheckBox.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/SearchCriteria.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/SearchCriteriaDrawer/DatesSection.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/SearchCriteriaDrawer/GuestsSection.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/SearchFilterChips.tsx","webpack:///./app/javascript/components/pages/stays_search/Listings/TopSuggestedDestinationsTileList.tsx","webpack:///./app/javascript/helpers/truncateString.ts","webpack:///./app/javascript/components/pages/stays_search/SearchFeedbackBox.tsx","webpack:///./app/javascript/components/pages/stays_search/SearchFeedbackDialog.tsx","webpack:///./app/javascript/components/pages/stays_search/StaysSearch.tsx","webpack:///./app/javascript/components/pages/stays_search/TripTypeDestinations.tsx","webpack:///./app/javascript/components/pages/stays_search/destinationsByTripType.ts","webpack:///./app/javascript/components/pages/travelers/NewTravelerPage.tsx","webpack:///./app/javascript/components/pages/trip_invites/IndexPage.tsx","webpack:///./app/javascript/components/pages/trip_invites/IndexPage/AcceptedInvite.tsx","webpack:///./app/javascript/components/pages/trip_invites/IndexPage/DeclinedInvite.tsx","webpack:///./app/javascript/components/pages/trip_invites/IndexPage/PendingInvite.tsx","webpack:///./app/javascript/components/pages/trips/InviteRequiredPage.tsx","webpack:///./app/javascript/components/pages/trips/ListTripsPage.tsx","webpack:///./app/javascript/components/pages/trips/ListTripsPage/TripActions.tsx","webpack:///./app/javascript/components/pages/trips/NewChosenDateOptionPage.tsx","webpack:///./app/javascript/components/pages/trips/NewChosenDestinationPage.tsx","webpack:///./app/javascript/components/pages/trips/NewChosenStayPage.tsx","webpack:///./app/javascript/components/pages/trips/NewCreationForm/FirstStepTripForm.tsx","webpack:///./app/javascript/components/pages/trips/NewCreationForm/NewCreationForm.tsx","webpack:///./app/javascript/constants/urls.ts","webpack:///./app/javascript/components/pages/trips/NewCreationForm/SecondStepTripForm.tsx","webpack:///./app/javascript/components/pages/trips/NewCreationForm/ThirdStepTripForm.tsx","webpack:///./app/javascript/constants/tripTypes.ts","webpack:///./app/javascript/components/pages/trips/NewCreationForm/TripTypesSelection.tsx","webpack:///./app/javascript/components/pages/trips/NewDateOptionPage.tsx","webpack:///./app/javascript/components/pages/trips/NewDestinationPage.tsx","webpack:///./app/javascript/components/pages/trips/RenewedTripFormEditPage.tsx","webpack:///./app/javascript/components/pages/trips/TravelersAvatars.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityGroupsTitles.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityImage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityName.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/SentimentIcon.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VoteResultsButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VotesTable.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/activitySentiments.ts","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/ActivityVotingSummaryDialog.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/Header.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivitiesPage/Activity/RemoveActivityFromGroupButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivityGroupEditForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivityGroupPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivityGroupPage/ActivityGroupActionsButtonGroup.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivityGroupPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ActivityGroupPage/SideBarContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/AddActivityToActivityGroupsPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/AddActivityToActivityGroupsPage/ActivityChoosingModalForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/BroadcastsPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/BroadcastsPage/BroadcastBody.tsx","webpack:///./app/javascript/components/pages/trips/microsite/BroadcastsPage/BroadcastView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/DestinationPage/Destination.tsx","webpack:///./app/javascript/components/pages/trips/microsite/EditItineraryDateForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/EditItineraryEventForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/EditItineraryStayEventForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/FinalizedTripObjectPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/FinalizedTripObjectPage/VotingResultsButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/BookedWrapper.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/MapView/MapCard.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/MapView/StayMarker.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/MapView/StayMiniView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/MapView/StayNanoView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/MapView/StaysMapView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/SelectedWrapper.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/BookButton.tsx","webpack:///./app/javascript/services/segmentEvents/useBookButtonEvents.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayAddress.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayDetails.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayImages.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayImages/StayImage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayName.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayPricing.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayProperties.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/StayRating.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/VotingSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/AvailabilityIcon.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/DateOptionPrice.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StayContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StayPermapageCard.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysSection/AddStayButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysSection/HousingFilteringAndSortingBar.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysSection/SearchStaysButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/StaysSection/StaysMapSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/shared/LiveStayIcon.tsx","webpack:///./app/javascript/components/pages/trips/microsite/HousingPage/shared/ProviderName.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/AddEventDropdown.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/AddEventFloatingButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEvent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEventDialog.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryDatesChipBar.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryDialogModal.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryEvent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryEventDialog.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryEventsList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryMainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEvent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEventDialog.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesChangeExplanation.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesPage/AddDescriptionLink.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesPage/ItineraryDate.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesPage/ItineraryDatesList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryDatesReduction.tsx","webpack:///./app/javascript/services/dates.ts","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryEditForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/ItineraryScheduleList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewBroadcastForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewItineraryActivityEventPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewItineraryActivityEventPage/ItineraryActivitiesChoosingForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewItineraryStayEventPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewItineraryStayEventPage/FirstStep.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewItineraryStayEventPage/LastStep.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewPollForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NewPollForm/PollPreview.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NoteForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NotesListPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NotesListPage/NoteRow.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NotesPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/NotesPage/ActionButtons.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/AttendeesAvatars.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/CardsOverview.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/FinalizedDatesAndDestination.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/OverviewSubheader.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/RespondToInviteButton/DeclineInviteMenuItem.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/RespondToInviteButtons.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/RespondToInviteDropdownButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/RespondToInviteOptions.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/SectionCtaButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/SectionDivider.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/SectionHeader.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/TravelerDetailsDialog.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/TripObjectList.tsx","webpack:///./app/javascript/graphql/queries/trips.ts","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/TripStatus.tsx","webpack:///./app/javascript/components/pages/trips/microsite/OverviewPage/VerticalStatusCard.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/AddPollButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/CloseButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/ClosedPollsSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/OpenedPollsSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollView/DeleteButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollView/PollAnswersForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollView/PollTypes.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollView/PollVotes.tsx","webpack:///./app/javascript/components/pages/trips/microsite/PollsPage/PollsList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/StayBookingsForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivitiesPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivitiesPage/ActivitiesFilteringAndSortingBar.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivitiesPage/ActivitiesList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivitiesPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivitiesPage/SideBarContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroup.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel/AddActivityButtonCard.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedActivityGroupsPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDatesPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDatesPage/ActionCallout.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDatesPage/DatesList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDatesPage/voteSentiments.ts","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDestinationsPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDestinationsPage/DestinationsList.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedDestinationsPage/MainContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/SuggestedHousingPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripActivitiesPage/ActivitiesSection/AddActivityButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/FilteringBar.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/ManageNotificationsCallout.tsx","webpack:///./app/javascript/services/segmentEvents/useCalloutEvents.ts","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/NewTripUpdatesDot.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/TripUpdateEntry.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/FinishedVotedTripEventLink.tsx","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TransitionedTripEventLink.tsx","webpack:///./app/javascript/services/tripUpdatePageActions.ts","webpack:///./app/javascript/components/pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TripUpdateEntryAction.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapSection.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesMap/ActivityMarker.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesMap/ActivityNanoView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesMap/FullscreenMapView.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ActivitiesSectionNavigation.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/AsyncSentimentButtons.tsx","webpack:///./app/javascript/services/segmentEvents/useRankingChangeEvents.ts","webpack:///./app/javascript/components/pages/trips/microsite/shared/BackToButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/BackToSuggestingButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/CategoryLabel.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ChosenTripObjectHeader.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/ChosenTripObjectHeader/NoteForm.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/CommentField.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/CommentsLink.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/CurrentSortingAndCount.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/FilteringAndSortingBar.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/FinalizedPageContentHeader.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/FloatingActionButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/MostRecentCommentBox.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/PhasingStepper.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/PollAnswerButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/PollAnswerResponses.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/RankingLabel.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/SectionHeader.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/SentimentButtons.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/SuggestingPhaseButtons.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/SuggestingPhaseButtons/SkipVotingButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/TripName.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/TripObjectDelete.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/VoteResultsButton.tsx","webpack:///./app/javascript/components/pages/trips/microsite/shared/VotingTopSideBarContent.tsx","webpack:///./app/javascript/components/pages/trips/microsite/withLayout.tsx","webpack:///./app/javascript/components/pages/trips/shared/DestroyConfirmationChosenTripObject.tsx","webpack:///./app/javascript/components/pages/trips/shared/TripObjectChoosingModalForm.tsx","webpack:///./app/javascript/components/pages/users/NewUserForm.tsx","webpack:///./app/javascript/components/shared/ActionsButtonGroup.tsx","webpack:///./app/javascript/components/shared/ActionsMenu.tsx","webpack:///./app/javascript/components/shared/ActivityAd.tsx","webpack:///./app/javascript/services/segmentEvents/useAdsEvents.tsx","webpack:///./app/javascript/components/shared/ActivityFilterContext.tsx","webpack:///./app/javascript/components/shared/AvatarGroup.tsx","webpack:///./app/javascript/components/shared/BaseActionsMenu.tsx","webpack:///./app/javascript/components/shared/BookingActionsMenuItems.tsx","webpack:///./app/javascript/components/shared/Breadcrumbs.tsx","webpack:///./app/javascript/components/shared/CardGroupCarousel.tsx","webpack:///./app/javascript/components/shared/CardGroupCarousel/CarouselStepButton.tsx","webpack:///./app/javascript/components/shared/CardGroupCarousel/Context.tsx","webpack:///./app/javascript/components/shared/CollapsibleBox.tsx","webpack:///./app/javascript/components/shared/Comments.tsx","webpack:///./app/javascript/components/shared/Comments/AvatarGridItem.tsx","webpack:///./app/javascript/components/shared/Comments/CommentBody.tsx","webpack:///./app/javascript/components/shared/Comments/CommentBox.tsx","webpack:///./app/javascript/components/shared/Comments/CommentEditForm.tsx","webpack:///./app/javascript/components/shared/Comments/CommentForm.tsx","webpack:///./app/javascript/components/shared/CommentsButton.tsx","webpack:///./app/javascript/components/shared/Confetti.tsx","webpack:///./app/javascript/components/shared/ConfirmationDialog.tsx","webpack:///./app/javascript/components/shared/ContainerLink.tsx","webpack:///./app/javascript/components/shared/CustomDateRangePicker.tsx","webpack:///./app/javascript/components/shared/DateOption.tsx","webpack:///./app/javascript/components/shared/DateOption/DateOptionActions.tsx","webpack:///./app/javascript/components/shared/DateOption/GroupFavoriteChip.tsx","webpack:///./app/javascript/components/shared/DateOption/VotesBreakdown.tsx","webpack:///./app/javascript/components/shared/DeleteConfirmationDialog.tsx","webpack:///./app/javascript/components/shared/DeleteResourceConfirmationDialog.tsx","webpack:///./app/javascript/components/shared/Dialog.tsx","webpack:///./app/javascript/components/shared/DismissibleAlert.tsx","webpack:///./app/javascript/components/shared/Divider.tsx","webpack:///./app/javascript/components/shared/Drawer.tsx","webpack:///./app/javascript/components/shared/DropdownButton.tsx","webpack:///./app/javascript/components/shared/DropdownButton/DropdownBase.tsx","webpack:///./app/javascript/components/shared/DropdownButton/MenuToggle.tsx","webpack:///./app/javascript/components/shared/EmailInviteForm.tsx","webpack:///./app/javascript/components/shared/EmailInviteModal.tsx","webpack:///./app/javascript/components/shared/EmptySectionContentWithCTA.tsx","webpack:///./app/javascript/components/shared/EmptyStateModalForm.tsx","webpack:///./app/javascript/components/shared/ErrorBoundary.tsx","webpack:///./app/javascript/components/shared/ErrorBoundary/ErrorBoundaryMessage.tsx","webpack:///./app/javascript/components/shared/Errors.tsx","webpack:///./app/javascript/components/shared/ExcludesPlusOnesMessage.tsx","webpack:///./app/javascript/components/shared/ExploreStaysButton.tsx","webpack:///./app/javascript/components/shared/ExternalPageLink.tsx","webpack:///./app/javascript/components/shared/FixedSaveBar.tsx","webpack:///./app/javascript/services/getPlaceFromGooglePlacesApiResponse.ts","webpack:///./app/javascript/components/shared/GooglePlacesAutocomplete.tsx","webpack:///./app/javascript/components/shared/HorizontalStepper.tsx","webpack:///./app/javascript/components/shared/ImageUploader.tsx","webpack:///./app/javascript/components/shared/ImageUploader/CameraDropdownButton.tsx","webpack:///./app/javascript/components/shared/ImageUploader/ImagePicker.tsx","webpack:///./app/javascript/components/shared/ImagesCarousel.tsx","webpack:///./app/javascript/components/shared/InputWithCharacterCounter.tsx","webpack:///./app/javascript/components/shared/InviteDialog.tsx","webpack:///./app/javascript/components/shared/InviteModal.tsx","webpack:///./app/javascript/components/shared/InviteModal/ManageInvitesLink.tsx","webpack:///./app/javascript/services/setUTMParams.ts","webpack:///./app/javascript/components/shared/InviteModal/ShareLinkSection.tsx","webpack:///./app/javascript/components/shared/InviteModal/ShareSheetButton.tsx","webpack:///./app/javascript/components/shared/Label.tsx","webpack:///./app/javascript/components/shared/LastUpdateFilterLink.tsx","webpack:///./app/javascript/components/shared/LeaveConfirmationDialog.tsx","webpack:///./app/javascript/components/shared/Link.tsx","webpack:///./app/javascript/components/shared/Linkify.tsx","webpack:///./app/javascript/components/shared/MapView/InfoWindow.tsx","webpack:///./app/javascript/components/shared/MapView/MapView.tsx","webpack:///./app/javascript/services/segmentEvents/useListViewEventRef.tsx","webpack:///./app/javascript/components/shared/MapView/MobileListButton.tsx","webpack:///./app/javascript/components/shared/MapView/MobileMapButton.tsx","webpack:///./app/javascript/components/shared/MissingVoteAlert.tsx","webpack:///./app/javascript/components/shared/Modal.tsx","webpack:///./app/javascript/components/shared/ModalForm.tsx","webpack:///./app/javascript/components/shared/NoSuggestionsYet.tsx","webpack:///./app/javascript/components/shared/ObjectAuthor.tsx","webpack:///./app/javascript/services/compareObjects.ts","webpack:///./app/javascript/components/shared/RailsForm.tsx","webpack:///./app/javascript/components/shared/Reactions/EmojiCounters.tsx","webpack:///./app/javascript/components/shared/Reactions/EmojiPicker.tsx","webpack:///./app/javascript/services/filterObject.ts","webpack:///./app/javascript/components/shared/Reactions/Reactions.tsx","webpack:///./app/javascript/services/segmentEvents/useReactionsEvents.ts","webpack:///./app/javascript/components/shared/ReadMore.tsx","webpack:///./app/javascript/components/shared/RichText.tsx","webpack:///./app/javascript/components/shared/RichTextEditor.tsx","webpack:///./app/javascript/components/shared/RsvpModal.tsx","webpack:///./app/javascript/components/shared/SeeMoreOrLess.tsx","webpack:///./app/javascript/components/shared/ShareButton.tsx","webpack:///./app/javascript/components/shared/SideBarPage.tsx","webpack:///./app/javascript/components/shared/SiteFooter.tsx","webpack:///./app/javascript/components/shared/SiteHeader.tsx","webpack:///./app/javascript/components/shared/SiteHeader/BroadcastButton.tsx","webpack:///./app/javascript/components/shared/SiteHeader/HeaderBar.tsx","webpack:///./app/javascript/components/shared/SiteHeader/HeaderBar/BroadcastButton.tsx","webpack:///./app/javascript/components/shared/SiteHeader/HeaderBar/ButtonBase.tsx","webpack:///./app/javascript/components/shared/SiteHeader/HeaderBar/IntercomButton.tsx","webpack:///./app/javascript/components/shared/SiteHeader/HeaderBar/TripUpdatesButton.tsx","webpack:///./app/javascript/components/shared/SiteHeader/LogInButtonForm.tsx","webpack:///./app/javascript/components/shared/SiteHeader/ManageTripButton.tsx","webpack:///./app/javascript/components/shared/SiteHeader/NavBarMenu.tsx","webpack:///./app/javascript/components/shared/SiteHeader/ShareTripButton.tsx","webpack:///./app/javascript/components/shared/SkeletonPage.tsx","webpack:///./app/javascript/components/shared/SkeletonPage/SkeletonCard.tsx","webpack:///./app/javascript/components/shared/SkeletonPage/SkeletonList.tsx","webpack:///./app/javascript/components/shared/SnackbarNotification.tsx","webpack:///./app/javascript/components/shared/SnackbarNotificationIcons.tsx","webpack:///./app/javascript/components/shared/StepperInput.tsx","webpack:///./app/javascript/components/shared/StyledCheckbox.tsx","webpack:///./app/javascript/components/shared/StyledSwitch.tsx","webpack:///./app/javascript/components/shared/TabNavigation.tsx","webpack:///./app/javascript/components/shared/TimeStamp.tsx","webpack:///./app/javascript/components/shared/ToDoAlert.tsx","webpack:///./app/javascript/components/shared/Tooltip.tsx","webpack:///./app/javascript/components/shared/TravelersVotingBox.tsx","webpack:///./app/javascript/components/shared/TravelersVotingBox/TablePaginationActions.tsx","webpack:///./app/javascript/components/shared/TravelersVotingBox/TravelerRow.tsx","webpack:///./app/javascript/components/shared/TripObject.tsx","webpack:///./app/javascript/components/shared/TripObjectLink.tsx","webpack:///./app/javascript/components/shared/TroupeLogoWithFavoritesHeader.tsx","webpack:///./app/javascript/components/shared/TruncatedTypography.tsx","webpack:///./app/javascript/components/shared/UserAvatar.tsx","webpack:///./app/javascript/components/shared/VotingProgressBanner.tsx","webpack:///./app/javascript/components/shared/VotingProgressDialog.tsx","webpack:///./app/javascript/components/shared/VotingResults/VotesTable.tsx","webpack:///./app/javascript/components/shared/VotingSummaryDialog.tsx","webpack:///./app/javascript/components/shared/rankLabels.ts","webpack:///./app/javascript/components/theme.ts","webpack:///./app/javascript/components/trip-page/NavigationBar.tsx","webpack:///./app/javascript/constants/amenitiesFilters.ts","webpack:///./app/javascript/constants/queryParams.ts","webpack:///./app/javascript/entrypoints/application.ts","webpack:///./app/javascript/graphql/queries/aiSearchFeedbacks.ts","webpack:///./app/javascript/graphql/queries/destinations.ts","webpack:///./app/javascript/graphql/fragments/destinations.ts","webpack:///./app/javascript/graphql/queries/favorites.ts","webpack:///./app/javascript/graphql/queries/guests.ts","webpack:///./app/javascript/graphql/queries/reactions.ts","webpack:///./app/javascript/graphql/queries/stays.ts","webpack:///./app/javascript/graphql/fragments/stays.ts","webpack:///./app/javascript/graphql/queries/travelers.ts","webpack:///./app/javascript/graphql/queries/users.ts","webpack:///./app/javascript/graphql/utilities.ts","webpack:///./app/javascript/helpers/statusToHuman.ts","webpack:///./app/javascript/routes.js","webpack:///./app/javascript/services/RankingSystem.tsx","webpack:///./app/javascript/services/segmentEvents/useSERPMapClickEventRef.tsx","webpack:///./app/javascript/services/RenderWithOrWithoutSidebar.tsx","webpack:///./app/javascript/services/TroupeApp.ts","webpack:///./app/javascript/services/analytics.ts","webpack:///./app/javascript/services/createFormDataForFiltering.ts","webpack:///./app/javascript/services/displayRankingLabel.ts","webpack:///./app/javascript/services/favoritesStorage.ts","webpack:///./app/javascript/services/getMostPopularDateOptions.ts","webpack:///./app/javascript/services/mapPosition.ts","webpack:///./app/javascript/services/mergeRefs.ts","webpack:///./app/javascript/services/performAsyncRequestWithCancelToken.ts","webpack:///./app/javascript/services/phasing.tsx","webpack:///./app/javascript/services/responsiveText.ts","webpack:///./app/javascript/services/segmentEvents/favoriteEvents.ts","webpack:///./app/javascript/services/segmentEvents/getStaysSearchFilteredEventProps.tsx","webpack:///./app/javascript/services/segmentEvents/guestEvents.ts","webpack:///./app/javascript/services/segmentEvents/tripEvents.ts","webpack:///./app/javascript/services/segmentEvents/useExpandMapEventRef.tsx","webpack:///./app/javascript/services/segmentEvents/useItineraryEvents.ts","webpack:///./app/javascript/services/segmentEvents/useMapClickEventRef.tsx","webpack:///./app/javascript/services/segmentEvents/useSERPEvents.ts","webpack:///./app/javascript/services/segmentEvents/useStayAffiliateClickEvent.tsx","webpack:///./app/javascript/services/segmentEvents/useStayCardEvents.tsx","webpack:///./app/javascript/services/segmentEvents/useTravelerPlusOnesDialogEvents.ts","webpack:///./app/javascript/services/serializeForm.ts","webpack:///./app/javascript/services/setScrollBarHorizontalPosition.ts","webpack:///./app/javascript/services/skipVoting.ts","webpack:///./app/javascript/services/useSegment.tsx","webpack:///./app/javascript/services/useStateWithPromise.tsx","webpack:///./app/javascript/services/useVotingProgressReducer.ts","webpack:///./app/javascript/services/windowLocation.ts","webpack:///./app/javascript/utils/strings.ts","webpack:///./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["var map = {\n\t\"./Document\": 70057,\n\t\"./Document.tsx\": 70057,\n\t\"./RenderChildWhenFFOn\": 43614,\n\t\"./RenderChildWhenFFOn.tsx\": 43614,\n\t\"./avatars/Avatar\": 49760,\n\t\"./avatars/Avatar.tsx\": 49760,\n\t\"./avatars/avatarSizes\": 79590,\n\t\"./avatars/avatarSizes.ts\": 79590,\n\t\"./avatars/borderColors\": 55865,\n\t\"./avatars/borderColors.ts\": 55865,\n\t\"./buttons/AddButton\": 82482,\n\t\"./buttons/AddButton.tsx\": 82482,\n\t\"./buttons/AddPlusOneButton\": 12883,\n\t\"./buttons/AddPlusOneButton.tsx\": 12883,\n\t\"./buttons/Button\": 47430,\n\t\"./buttons/Button.tsx\": 47430,\n\t\"./buttons/CardButton\": 35206,\n\t\"./buttons/CardButton.tsx\": 35206,\n\t\"./buttons/Chip\": 16819,\n\t\"./buttons/Chip.tsx\": 16819,\n\t\"./buttons/CustomChip\": 27571,\n\t\"./buttons/CustomChip.tsx\": 27571,\n\t\"./buttons/FavoritesButton\": 40781,\n\t\"./buttons/FavoritesButton.tsx\": 40781,\n\t\"./buttons/FlatButton\": 57554,\n\t\"./buttons/FlatButton.tsx\": 57554,\n\t\"./buttons/FloatingButton\": 5304,\n\t\"./buttons/FloatingButton.tsx\": 5304,\n\t\"./buttons/HoverBorderIconButton\": 66347,\n\t\"./buttons/HoverBorderIconButton.tsx\": 66347,\n\t\"./buttons/IconButton\": 49727,\n\t\"./buttons/IconButton.tsx\": 49727,\n\t\"./buttons/LoadMoreCommentsButton\": 5565,\n\t\"./buttons/LoadMoreCommentsButton.tsx\": 5565,\n\t\"./buttons/SelectButton\": 20895,\n\t\"./buttons/SelectButton.tsx\": 20895,\n\t\"./buttons/TextButton\": 67575,\n\t\"./buttons/TextButton.tsx\": 67575,\n\t\"./buttons/buttonColors\": 96965,\n\t\"./buttons/buttonColors.ts\": 96965,\n\t\"./buttons/chipColors\": 73832,\n\t\"./buttons/chipColors.tsx\": 73832,\n\t\"./buttons/textButtonColors\": 58966,\n\t\"./buttons/textButtonColors.ts\": 58966,\n\t\"./pages/account/AccountPage\": 28210,\n\t\"./pages/account/AccountPage.tsx\": 28210,\n\t\"./pages/account/AccountPage/ProfileForm\": 72829,\n\t\"./pages/account/AccountPage/ProfileForm.tsx\": 72829,\n\t\"./pages/account/AccountPage/ProfileForm/AvatarSection\": 86739,\n\t\"./pages/account/AccountPage/ProfileForm/AvatarSection.tsx\": 86739,\n\t\"./pages/account/AccountPage/ProfileForm/AvatarUploader\": 84369,\n\t\"./pages/account/AccountPage/ProfileForm/AvatarUploader.tsx\": 84369,\n\t\"./pages/account/AccountPage/ProfileForm/BasicInfoFields\": 85433,\n\t\"./pages/account/AccountPage/ProfileForm/BasicInfoFields.tsx\": 85433,\n\t\"./pages/account/AccountPage/ProfileForm/NotificationsFields\": 41547,\n\t\"./pages/account/AccountPage/ProfileForm/NotificationsFields.tsx\": 41547,\n\t\"./pages/account/AccountPage/ProfileForm/ProfileFormSectionGrid\": 22820,\n\t\"./pages/account/AccountPage/ProfileForm/ProfileFormSectionGrid.tsx\": 22820,\n\t\"./pages/account/AccountPage/ProfileForm/notificationsMap\": 27528,\n\t\"./pages/account/AccountPage/ProfileForm/notificationsMap.ts\": 27528,\n\t\"./pages/activities/ActivityForm\": 19260,\n\t\"./pages/activities/ActivityForm.tsx\": 19260,\n\t\"./pages/activities/ActivityForm/ActivityPreview\": 74605,\n\t\"./pages/activities/ActivityForm/ActivityPreview.tsx\": 74605,\n\t\"./pages/activities/ActivityForm/ActivityPriceField\": 43389,\n\t\"./pages/activities/ActivityForm/ActivityPriceField.tsx\": 43389,\n\t\"./pages/activities/ActivityLinkOrAddressForm\": 92454,\n\t\"./pages/activities/ActivityLinkOrAddressForm.tsx\": 92454,\n\t\"./pages/activities/ActivityLocationField\": 30768,\n\t\"./pages/activities/ActivityLocationField.tsx\": 30768,\n\t\"./pages/activities/NewActivityForm\": 55998,\n\t\"./pages/activities/NewActivityForm.tsx\": 55998,\n\t\"./pages/comments/IndexPage\": 10513,\n\t\"./pages/comments/IndexPage.tsx\": 10513,\n\t\"./pages/comments/IndexPage/ActivityPage\": 13893,\n\t\"./pages/comments/IndexPage/ActivityPage.tsx\": 13893,\n\t\"./pages/comments/IndexPage/DateOptionPage\": 58371,\n\t\"./pages/comments/IndexPage/DateOptionPage.tsx\": 58371,\n\t\"./pages/comments/IndexPage/DestinationPage\": 64829,\n\t\"./pages/comments/IndexPage/DestinationPage.tsx\": 64829,\n\t\"./pages/comments/IndexPage/StayBookingDetails\": 88909,\n\t\"./pages/comments/IndexPage/StayBookingDetails.tsx\": 88909,\n\t\"./pages/comments/IndexPage/StayPage\": 6420,\n\t\"./pages/comments/IndexPage/StayPage.tsx\": 6420,\n\t\"./pages/comments/IndexPage/VotingSection\": 58111,\n\t\"./pages/comments/IndexPage/VotingSection.tsx\": 58111,\n\t\"./pages/dates/VotingDatesForm\": 74961,\n\t\"./pages/dates/VotingDatesForm.tsx\": 74961,\n\t\"./pages/dates/VotingDatesForm/VotingCount\": 2733,\n\t\"./pages/dates/VotingDatesForm/VotingCount.tsx\": 2733,\n\t\"./pages/dates/VotingDatesForm/VotingDatesButtons\": 26089,\n\t\"./pages/dates/VotingDatesForm/VotingDatesButtons.tsx\": 26089,\n\t\"./pages/dates/VotingDatesForm/VotingProgressBar\": 56763,\n\t\"./pages/dates/VotingDatesForm/VotingProgressBar.tsx\": 56763,\n\t\"./pages/destinations/DestinationField\": 71884,\n\t\"./pages/destinations/DestinationField.tsx\": 71884,\n\t\"./pages/destinations/DestinationForm\": 38809,\n\t\"./pages/destinations/DestinationForm.tsx\": 38809,\n\t\"./pages/destinations/DestinationPreview\": 35489,\n\t\"./pages/destinations/DestinationPreview.tsx\": 35489,\n\t\"./pages/errors/ErrorsPage\": 9109,\n\t\"./pages/errors/ErrorsPage.tsx\": 9109,\n\t\"./pages/favorites/FavoritesPage\": 35970,\n\t\"./pages/favorites/FavoritesPage.tsx\": 35970,\n\t\"./pages/favorites/ShareFavoriteActions\": 79554,\n\t\"./pages/favorites/ShareFavoriteActions.tsx\": 79554,\n\t\"./pages/favorites/ShareFavoriteDialog\": 31101,\n\t\"./pages/favorites/ShareFavoriteDialog.tsx\": 31101,\n\t\"./pages/home/HomePage\": 92810,\n\t\"./pages/home/HomePage.tsx\": 92810,\n\t\"./pages/public_stays_search/AiFilterBackground\": 53421,\n\t\"./pages/public_stays_search/AiFilterBackground.tsx\": 53421,\n\t\"./pages/public_stays_search/AiStaysSearchPage\": 89965,\n\t\"./pages/public_stays_search/AiStaysSearchPage.tsx\": 89965,\n\t\"./pages/public_stays_search/FilterBackground\": 5599,\n\t\"./pages/public_stays_search/FilterBackground.tsx\": 5599,\n\t\"./pages/public_stays_search/FilterSearchedBackground\": 39705,\n\t\"./pages/public_stays_search/FilterSearchedBackground.tsx\": 39705,\n\t\"./pages/public_stays_search/PublicStaysSearchPage\": 72808,\n\t\"./pages/public_stays_search/PublicStaysSearchPage.tsx\": 72808,\n\t\"./pages/shared/ManageInvitesAndTravelersModalPage\": 82357,\n\t\"./pages/shared/ManageInvitesAndTravelersModalPage.tsx\": 82357,\n\t\"./pages/shared/ManageTravelers\": 62837,\n\t\"./pages/shared/ManageTravelers.tsx\": 62837,\n\t\"./pages/shared/TravelersByStatusType\": 38972,\n\t\"./pages/shared/TravelersByStatusType.ts\": 38972,\n\t\"./pages/shared/travelers/AdditionalTravelerActions\": 21000,\n\t\"./pages/shared/travelers/AdditionalTravelerActions.tsx\": 21000,\n\t\"./pages/shared/travelers/CreateGuestForm\": 76999,\n\t\"./pages/shared/travelers/CreateGuestForm.tsx\": 76999,\n\t\"./pages/shared/travelers/CreatePlusOneForm\": 46834,\n\t\"./pages/shared/travelers/CreatePlusOneForm.tsx\": 46834,\n\t\"./pages/shared/travelers/EditDeleteButtonGroup\": 26409,\n\t\"./pages/shared/travelers/EditDeleteButtonGroup.tsx\": 26409,\n\t\"./pages/shared/travelers/GuestsSection\": 79462,\n\t\"./pages/shared/travelers/GuestsSection.tsx\": 79462,\n\t\"./pages/shared/travelers/TravelerActionsButtonGroup\": 59969,\n\t\"./pages/shared/travelers/TravelerActionsButtonGroup.tsx\": 59969,\n\t\"./pages/shared/travelers/TravelerInfo\": 3181,\n\t\"./pages/shared/travelers/TravelerInfo.tsx\": 3181,\n\t\"./pages/shared/travelers/TravelersSkeleton\": 89754,\n\t\"./pages/shared/travelers/TravelersSkeleton.tsx\": 89754,\n\t\"./pages/stays/AddStayPage/GoogleMapsForm\": 47092,\n\t\"./pages/stays/AddStayPage/GoogleMapsForm.tsx\": 47092,\n\t\"./pages/stays/AddStayPage/SearchForm\": 93262,\n\t\"./pages/stays/AddStayPage/SearchForm.tsx\": 93262,\n\t\"./pages/stays/AddStayPage/SmartSearchForm\": 38691,\n\t\"./pages/stays/AddStayPage/SmartSearchForm.tsx\": 38691,\n\t\"./pages/stays/AddStayPage/UrlForm\": 85042,\n\t\"./pages/stays/AddStayPage/UrlForm.tsx\": 85042,\n\t\"./pages/stays/AddStayPage/withAddStayPageLayout\": 6706,\n\t\"./pages/stays/AddStayPage/withAddStayPageLayout.tsx\": 6706,\n\t\"./pages/stays/BatchStayForm\": 96786,\n\t\"./pages/stays/BatchStayForm.tsx\": 96786,\n\t\"./pages/stays/StayBookingActions\": 7353,\n\t\"./pages/stays/StayBookingActions.tsx\": 7353,\n\t\"./pages/stays/StayDetailsForm\": 37872,\n\t\"./pages/stays/StayDetailsForm.tsx\": 37872,\n\t\"./pages/stays/StayForm\": 66412,\n\t\"./pages/stays/StayForm.tsx\": 66412,\n\t\"./pages/stays/StayForm/AddressField\": 21219,\n\t\"./pages/stays/StayForm/AddressField.tsx\": 21219,\n\t\"./pages/stays/StayForm/AvailabilityAndPricingSection\": 64333,\n\t\"./pages/stays/StayForm/AvailabilityAndPricingSection.tsx\": 64333,\n\t\"./pages/stays/StayForm/DateOptionsAvailability\": 62745,\n\t\"./pages/stays/StayForm/DateOptionsAvailability.tsx\": 62745,\n\t\"./pages/stays/StayForm/DateOptionsAvailability/DateOptionsAvailabilityFields\": 93472,\n\t\"./pages/stays/StayForm/DateOptionsAvailability/DateOptionsAvailabilityFields.tsx\": 93472,\n\t\"./pages/stays/StayForm/DetailsFields\": 50626,\n\t\"./pages/stays/StayForm/DetailsFields.tsx\": 50626,\n\t\"./pages/stays/StayForm/StayFormProps\": 20589,\n\t\"./pages/stays/StayForm/StayFormProps.ts\": 20589,\n\t\"./pages/stays/StayForm/StayPreview\": 69729,\n\t\"./pages/stays/StayForm/StayPreview.tsx\": 69729,\n\t\"./pages/stays_search/ExternalListingCTA\": 61446,\n\t\"./pages/stays_search/ExternalListingCTA.tsx\": 61446,\n\t\"./pages/stays_search/ExternalListingForm\": 32471,\n\t\"./pages/stays_search/ExternalListingForm.tsx\": 32471,\n\t\"./pages/stays_search/Listings/AiFilters\": 55988,\n\t\"./pages/stays_search/Listings/AiFilters.tsx\": 55988,\n\t\"./pages/stays_search/Listings/AiPublicSearchEmptyState\": 54073,\n\t\"./pages/stays_search/Listings/AiPublicSearchEmptyState.tsx\": 54073,\n\t\"./pages/stays_search/Listings/AiPublicSearchEmptyState/ExamplePrompt\": 64079,\n\t\"./pages/stays_search/Listings/AiPublicSearchEmptyState/ExamplePrompt.tsx\": 64079,\n\t\"./pages/stays_search/Listings/AiResults\": 68248,\n\t\"./pages/stays_search/Listings/AiResults.tsx\": 68248,\n\t\"./pages/stays_search/Listings/AiSearchCriteriaDialog\": 56155,\n\t\"./pages/stays_search/Listings/AiSearchCriteriaDialog.tsx\": 56155,\n\t\"./pages/stays_search/Listings/AiSearchPaginationText\": 76800,\n\t\"./pages/stays_search/Listings/AiSearchPaginationText.tsx\": 76800,\n\t\"./pages/stays_search/Listings/AiSearchPrompt\": 94966,\n\t\"./pages/stays_search/Listings/AiSearchPrompt.tsx\": 94966,\n\t\"./pages/stays_search/Listings/AiSearchPromptDialog\": 92015,\n\t\"./pages/stays_search/Listings/AiSearchPromptDialog.tsx\": 92015,\n\t\"./pages/stays_search/Listings/AiSearchPromptSection\": 97503,\n\t\"./pages/stays_search/Listings/AiSearchPromptSection.tsx\": 97503,\n\t\"./pages/stays_search/Listings/AlternativesDialog\": 74203,\n\t\"./pages/stays_search/Listings/AlternativesDialog.tsx\": 74203,\n\t\"./pages/stays_search/Listings/ExternalListingCard\": 14224,\n\t\"./pages/stays_search/Listings/ExternalListingCard.tsx\": 14224,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ExternalListingContent\": 12225,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ExternalListingContent.tsx\": 12225,\n\t\"./pages/stays_search/Listings/ExternalListingCard/FavoriteToggleButton\": 52550,\n\t\"./pages/stays_search/Listings/ExternalListingCard/FavoriteToggleButton.tsx\": 52550,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ImagesCarousel\": 32547,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ImagesCarousel.tsx\": 32547,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ListingPricing\": 56847,\n\t\"./pages/stays_search/Listings/ExternalListingCard/ListingPricing.tsx\": 56847,\n\t\"./pages/stays_search/Listings/Filters\": 38408,\n\t\"./pages/stays_search/Listings/Filters.tsx\": 38408,\n\t\"./pages/stays_search/Listings/Filters/FilterButton\": 28936,\n\t\"./pages/stays_search/Listings/Filters/FilterButton.tsx\": 28936,\n\t\"./pages/stays_search/Listings/Filters/InventoryRadioGroup\": 38847,\n\t\"./pages/stays_search/Listings/Filters/InventoryRadioGroup.tsx\": 38847,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/AmenitiesFilters\": 11579,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/AmenitiesFilters.tsx\": 11579,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/BookingOptions\": 44587,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/BookingOptions.tsx\": 44587,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/PriceFilter\": 89751,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/PriceFilter.tsx\": 89751,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/PropertyTypes\": 90945,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/PropertyTypes.tsx\": 90945,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/RatingFilter\": 10222,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/RatingFilter.tsx\": 10222,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/RoomFilters\": 44995,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/RoomFilters.tsx\": 44995,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/SortAndFilterDrawer\": 13031,\n\t\"./pages/stays_search/Listings/Filters/SortAndFilter/SortAndFilterDrawer.tsx\": 13031,\n\t\"./pages/stays_search/Listings/FiltersButton\": 16879,\n\t\"./pages/stays_search/Listings/FiltersButton.tsx\": 16879,\n\t\"./pages/stays_search/Listings/InventoryBanner\": 9352,\n\t\"./pages/stays_search/Listings/InventoryBanner.tsx\": 9352,\n\t\"./pages/stays_search/Listings/ListingMarker\": 3063,\n\t\"./pages/stays_search/Listings/ListingMarker.tsx\": 3063,\n\t\"./pages/stays_search/Listings/ListingsBox\": 43852,\n\t\"./pages/stays_search/Listings/ListingsBox.tsx\": 43852,\n\t\"./pages/stays_search/Listings/ListingsEmptyState\": 48764,\n\t\"./pages/stays_search/Listings/ListingsEmptyState.tsx\": 48764,\n\t\"./pages/stays_search/Listings/ListingsErrorState\": 41057,\n\t\"./pages/stays_search/Listings/ListingsErrorState.tsx\": 41057,\n\t\"./pages/stays_search/Listings/ListingsMapView\": 38291,\n\t\"./pages/stays_search/Listings/ListingsMapView.tsx\": 38291,\n\t\"./pages/stays_search/Listings/LoadingState\": 48858,\n\t\"./pages/stays_search/Listings/LoadingState.tsx\": 48858,\n\t\"./pages/stays_search/Listings/RecentlySearched\": 60844,\n\t\"./pages/stays_search/Listings/RecentlySearched.tsx\": 60844,\n\t\"./pages/stays_search/Listings/SearchCheckBox\": 44065,\n\t\"./pages/stays_search/Listings/SearchCheckBox.tsx\": 44065,\n\t\"./pages/stays_search/Listings/SearchCriteria\": 82254,\n\t\"./pages/stays_search/Listings/SearchCriteria.tsx\": 82254,\n\t\"./pages/stays_search/Listings/SearchCriteriaDrawer/DatesSection\": 82905,\n\t\"./pages/stays_search/Listings/SearchCriteriaDrawer/DatesSection.tsx\": 82905,\n\t\"./pages/stays_search/Listings/SearchCriteriaDrawer/GuestsSection\": 86754,\n\t\"./pages/stays_search/Listings/SearchCriteriaDrawer/GuestsSection.tsx\": 86754,\n\t\"./pages/stays_search/Listings/SearchFilterChips\": 87642,\n\t\"./pages/stays_search/Listings/SearchFilterChips.tsx\": 87642,\n\t\"./pages/stays_search/Listings/TopSuggestedDestinationsTileList\": 47584,\n\t\"./pages/stays_search/Listings/TopSuggestedDestinationsTileList.tsx\": 47584,\n\t\"./pages/stays_search/SearchFeedbackBox\": 43762,\n\t\"./pages/stays_search/SearchFeedbackBox.tsx\": 43762,\n\t\"./pages/stays_search/SearchFeedbackDialog\": 79556,\n\t\"./pages/stays_search/SearchFeedbackDialog.tsx\": 79556,\n\t\"./pages/stays_search/StaysSearch\": 83364,\n\t\"./pages/stays_search/StaysSearch.tsx\": 83364,\n\t\"./pages/stays_search/TripTypeDestinations\": 19292,\n\t\"./pages/stays_search/TripTypeDestinations.tsx\": 19292,\n\t\"./pages/stays_search/destinationsByTripType\": 57785,\n\t\"./pages/stays_search/destinationsByTripType.ts\": 57785,\n\t\"./pages/travelers/NewTravelerPage\": 68397,\n\t\"./pages/travelers/NewTravelerPage.tsx\": 68397,\n\t\"./pages/trip_invites/IndexPage\": 6056,\n\t\"./pages/trip_invites/IndexPage.tsx\": 6056,\n\t\"./pages/trip_invites/IndexPage/AcceptedInvite\": 32249,\n\t\"./pages/trip_invites/IndexPage/AcceptedInvite.tsx\": 32249,\n\t\"./pages/trip_invites/IndexPage/DeclinedInvite\": 42087,\n\t\"./pages/trip_invites/IndexPage/DeclinedInvite.tsx\": 42087,\n\t\"./pages/trip_invites/IndexPage/PendingInvite\": 14613,\n\t\"./pages/trip_invites/IndexPage/PendingInvite.tsx\": 14613,\n\t\"./pages/trips/InviteRequiredPage\": 38778,\n\t\"./pages/trips/InviteRequiredPage.tsx\": 38778,\n\t\"./pages/trips/ListTripsPage\": 78792,\n\t\"./pages/trips/ListTripsPage.tsx\": 78792,\n\t\"./pages/trips/ListTripsPage/TripActions\": 28464,\n\t\"./pages/trips/ListTripsPage/TripActions.tsx\": 28464,\n\t\"./pages/trips/NewChosenDateOptionPage\": 61773,\n\t\"./pages/trips/NewChosenDateOptionPage.tsx\": 61773,\n\t\"./pages/trips/NewChosenDestinationPage\": 58839,\n\t\"./pages/trips/NewChosenDestinationPage.tsx\": 58839,\n\t\"./pages/trips/NewChosenStayPage\": 68398,\n\t\"./pages/trips/NewChosenStayPage.tsx\": 68398,\n\t\"./pages/trips/NewCreationForm/FirstStepTripForm\": 71219,\n\t\"./pages/trips/NewCreationForm/FirstStepTripForm.tsx\": 71219,\n\t\"./pages/trips/NewCreationForm/NewCreationForm\": 47987,\n\t\"./pages/trips/NewCreationForm/NewCreationForm.tsx\": 47987,\n\t\"./pages/trips/NewCreationForm/SecondStepTripForm\": 51316,\n\t\"./pages/trips/NewCreationForm/SecondStepTripForm.tsx\": 51316,\n\t\"./pages/trips/NewCreationForm/ThirdStepTripForm\": 84720,\n\t\"./pages/trips/NewCreationForm/ThirdStepTripForm.tsx\": 84720,\n\t\"./pages/trips/NewCreationForm/TripTypesSelection\": 45863,\n\t\"./pages/trips/NewCreationForm/TripTypesSelection.tsx\": 45863,\n\t\"./pages/trips/NewDateOptionPage\": 3075,\n\t\"./pages/trips/NewDateOptionPage.tsx\": 3075,\n\t\"./pages/trips/NewDestinationPage\": 97865,\n\t\"./pages/trips/NewDestinationPage.tsx\": 97865,\n\t\"./pages/trips/RenewedTripFormEditPage\": 36958,\n\t\"./pages/trips/RenewedTripFormEditPage.tsx\": 36958,\n\t\"./pages/trips/TravelersAvatars\": 30740,\n\t\"./pages/trips/TravelersAvatars.tsx\": 30740,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity\": 59560,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity.tsx\": 59560,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityGroupsTitles\": 39429,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityGroupsTitles.tsx\": 39429,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityImage\": 41831,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityImage.tsx\": 41831,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityName\": 26908,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityName.tsx\": 26908,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/SentimentIcon\": 39108,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/SentimentIcon.tsx\": 39108,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VoteResultsButton\": 35487,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VoteResultsButton.tsx\": 35487,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VotesTable\": 54139,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/VotesTable.tsx\": 54139,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/activitySentiments\": 22553,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVote/activitySentiments.ts\": 22553,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVotingSummaryDialog\": 57914,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/ActivityVotingSummaryDialog.tsx\": 57914,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/Header\": 5269,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/Header.tsx\": 5269,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/RemoveActivityFromGroupButton\": 43366,\n\t\"./pages/trips/microsite/ActivitiesPage/Activity/RemoveActivityFromGroupButton.tsx\": 43366,\n\t\"./pages/trips/microsite/ActivityGroupEditForm\": 8669,\n\t\"./pages/trips/microsite/ActivityGroupEditForm.tsx\": 8669,\n\t\"./pages/trips/microsite/ActivityGroupPage\": 77265,\n\t\"./pages/trips/microsite/ActivityGroupPage.tsx\": 77265,\n\t\"./pages/trips/microsite/ActivityGroupPage/ActivityGroupActionsButtonGroup\": 76878,\n\t\"./pages/trips/microsite/ActivityGroupPage/ActivityGroupActionsButtonGroup.tsx\": 76878,\n\t\"./pages/trips/microsite/ActivityGroupPage/MainContent\": 13048,\n\t\"./pages/trips/microsite/ActivityGroupPage/MainContent.tsx\": 13048,\n\t\"./pages/trips/microsite/ActivityGroupPage/SideBarContent\": 23529,\n\t\"./pages/trips/microsite/ActivityGroupPage/SideBarContent.tsx\": 23529,\n\t\"./pages/trips/microsite/AddActivityToActivityGroupsPage\": 31641,\n\t\"./pages/trips/microsite/AddActivityToActivityGroupsPage.tsx\": 31641,\n\t\"./pages/trips/microsite/AddActivityToActivityGroupsPage/ActivityChoosingModalForm\": 22989,\n\t\"./pages/trips/microsite/AddActivityToActivityGroupsPage/ActivityChoosingModalForm.tsx\": 22989,\n\t\"./pages/trips/microsite/BroadcastsPage\": 16084,\n\t\"./pages/trips/microsite/BroadcastsPage.tsx\": 16084,\n\t\"./pages/trips/microsite/BroadcastsPage/BroadcastBody\": 92329,\n\t\"./pages/trips/microsite/BroadcastsPage/BroadcastBody.tsx\": 92329,\n\t\"./pages/trips/microsite/BroadcastsPage/BroadcastView\": 47490,\n\t\"./pages/trips/microsite/BroadcastsPage/BroadcastView.tsx\": 47490,\n\t\"./pages/trips/microsite/DestinationPage/Destination\": 79038,\n\t\"./pages/trips/microsite/DestinationPage/Destination.tsx\": 79038,\n\t\"./pages/trips/microsite/EditItineraryDateForm\": 79646,\n\t\"./pages/trips/microsite/EditItineraryDateForm.tsx\": 79646,\n\t\"./pages/trips/microsite/EditItineraryEventForm\": 72866,\n\t\"./pages/trips/microsite/EditItineraryEventForm.tsx\": 72866,\n\t\"./pages/trips/microsite/EditItineraryStayEventForm\": 14025,\n\t\"./pages/trips/microsite/EditItineraryStayEventForm.tsx\": 14025,\n\t\"./pages/trips/microsite/FinalizedTripObjectPage\": 40890,\n\t\"./pages/trips/microsite/FinalizedTripObjectPage.tsx\": 40890,\n\t\"./pages/trips/microsite/FinalizedTripObjectPage/VotingResultsButton\": 57643,\n\t\"./pages/trips/microsite/FinalizedTripObjectPage/VotingResultsButton.tsx\": 57643,\n\t\"./pages/trips/microsite/HousingPage/BookedWrapper\": 14678,\n\t\"./pages/trips/microsite/HousingPage/BookedWrapper.tsx\": 14678,\n\t\"./pages/trips/microsite/HousingPage/MapView/MapCard\": 15054,\n\t\"./pages/trips/microsite/HousingPage/MapView/MapCard.tsx\": 15054,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayMarker\": 48687,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayMarker.tsx\": 48687,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayMiniView\": 50129,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayMiniView.tsx\": 50129,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayNanoView\": 56062,\n\t\"./pages/trips/microsite/HousingPage/MapView/StayNanoView.tsx\": 56062,\n\t\"./pages/trips/microsite/HousingPage/MapView/StaysMapView\": 29752,\n\t\"./pages/trips/microsite/HousingPage/MapView/StaysMapView.tsx\": 29752,\n\t\"./pages/trips/microsite/HousingPage/SelectedWrapper\": 98071,\n\t\"./pages/trips/microsite/HousingPage/SelectedWrapper.tsx\": 98071,\n\t\"./pages/trips/microsite/HousingPage/Stay\": 7057,\n\t\"./pages/trips/microsite/HousingPage/Stay.tsx\": 7057,\n\t\"./pages/trips/microsite/HousingPage/Stay/BookButton\": 54127,\n\t\"./pages/trips/microsite/HousingPage/Stay/BookButton.tsx\": 54127,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayAddress\": 38041,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayAddress.tsx\": 38041,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayDetails\": 71702,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayDetails.tsx\": 71702,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayImages\": 58970,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayImages.tsx\": 58970,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayImages/StayImage\": 22078,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayImages/StayImage.tsx\": 22078,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayName\": 70294,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayName.tsx\": 70294,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayPricing\": 46975,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayPricing.tsx\": 46975,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayProperties\": 72813,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayProperties.tsx\": 72813,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayRating\": 56158,\n\t\"./pages/trips/microsite/HousingPage/Stay/StayRating.tsx\": 56158,\n\t\"./pages/trips/microsite/HousingPage/Stay/VotingSection\": 43736,\n\t\"./pages/trips/microsite/HousingPage/Stay/VotingSection.tsx\": 43736,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing\": 42099,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing.tsx\": 42099,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/AvailabilityIcon\": 48907,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/AvailabilityIcon.tsx\": 48907,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/DateOptionPrice\": 62473,\n\t\"./pages/trips/microsite/HousingPage/Stay/shared/DateOptionsPricing/DateOptionPrice.tsx\": 62473,\n\t\"./pages/trips/microsite/HousingPage/StayContent\": 99997,\n\t\"./pages/trips/microsite/HousingPage/StayContent.tsx\": 99997,\n\t\"./pages/trips/microsite/HousingPage/StayPermapageCard\": 21023,\n\t\"./pages/trips/microsite/HousingPage/StayPermapageCard.tsx\": 21023,\n\t\"./pages/trips/microsite/HousingPage/StaysList\": 79768,\n\t\"./pages/trips/microsite/HousingPage/StaysList.tsx\": 79768,\n\t\"./pages/trips/microsite/HousingPage/StaysSection\": 38403,\n\t\"./pages/trips/microsite/HousingPage/StaysSection.tsx\": 38403,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/AddStayButton\": 54376,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/AddStayButton.tsx\": 54376,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/HousingFilteringAndSortingBar\": 49599,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/HousingFilteringAndSortingBar.tsx\": 49599,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/SearchStaysButton\": 38891,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/SearchStaysButton.tsx\": 38891,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/StaysMapSection\": 98362,\n\t\"./pages/trips/microsite/HousingPage/StaysSection/StaysMapSection.tsx\": 98362,\n\t\"./pages/trips/microsite/HousingPage/shared/LiveStayIcon\": 41612,\n\t\"./pages/trips/microsite/HousingPage/shared/LiveStayIcon.tsx\": 41612,\n\t\"./pages/trips/microsite/HousingPage/shared/ProviderName\": 94925,\n\t\"./pages/trips/microsite/HousingPage/shared/ProviderName.tsx\": 94925,\n\t\"./pages/trips/microsite/ItineraryDatePermapage\": 44452,\n\t\"./pages/trips/microsite/ItineraryDatePermapage.tsx\": 44452,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/AddEventDropdown\": 40111,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/AddEventDropdown.tsx\": 40111,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/AddEventFloatingButton\": 1923,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/AddEventFloatingButton.tsx\": 1923,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEvent\": 28701,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEvent.tsx\": 28701,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEventDialog\": 65425,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryActivityEventDialog.tsx\": 65425,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryDatesChipBar\": 57410,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryDatesChipBar.tsx\": 57410,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryDialogModal\": 41299,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryDialogModal.tsx\": 41299,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEvent\": 69206,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEvent.tsx\": 69206,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEventDialog\": 33347,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEventDialog.tsx\": 33347,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEventsList\": 49988,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryEventsList.tsx\": 49988,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryMainContent\": 97872,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryMainContent.tsx\": 97872,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEvent\": 38562,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEvent.tsx\": 38562,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEventDialog\": 79578,\n\t\"./pages/trips/microsite/ItineraryDatePermapage/ItineraryStayEventDialog.tsx\": 79578,\n\t\"./pages/trips/microsite/ItineraryDatesChangeExplanation\": 95728,\n\t\"./pages/trips/microsite/ItineraryDatesChangeExplanation.tsx\": 95728,\n\t\"./pages/trips/microsite/ItineraryDatesPage\": 13565,\n\t\"./pages/trips/microsite/ItineraryDatesPage.tsx\": 13565,\n\t\"./pages/trips/microsite/ItineraryDatesPage/AddDescriptionLink\": 79175,\n\t\"./pages/trips/microsite/ItineraryDatesPage/AddDescriptionLink.tsx\": 79175,\n\t\"./pages/trips/microsite/ItineraryDatesPage/ItineraryDate\": 68480,\n\t\"./pages/trips/microsite/ItineraryDatesPage/ItineraryDate.tsx\": 68480,\n\t\"./pages/trips/microsite/ItineraryDatesPage/ItineraryDatesList\": 64810,\n\t\"./pages/trips/microsite/ItineraryDatesPage/ItineraryDatesList.tsx\": 64810,\n\t\"./pages/trips/microsite/ItineraryDatesPage/MainContent\": 42998,\n\t\"./pages/trips/microsite/ItineraryDatesPage/MainContent.tsx\": 42998,\n\t\"./pages/trips/microsite/ItineraryDatesReduction\": 51680,\n\t\"./pages/trips/microsite/ItineraryDatesReduction.tsx\": 51680,\n\t\"./pages/trips/microsite/ItineraryEditForm\": 53114,\n\t\"./pages/trips/microsite/ItineraryEditForm.tsx\": 53114,\n\t\"./pages/trips/microsite/ItineraryForm\": 91350,\n\t\"./pages/trips/microsite/ItineraryForm.tsx\": 91350,\n\t\"./pages/trips/microsite/ItineraryPage\": 34180,\n\t\"./pages/trips/microsite/ItineraryPage.tsx\": 34180,\n\t\"./pages/trips/microsite/ItineraryPage/MainContent\": 53063,\n\t\"./pages/trips/microsite/ItineraryPage/MainContent.tsx\": 53063,\n\t\"./pages/trips/microsite/ItineraryScheduleList\": 81564,\n\t\"./pages/trips/microsite/ItineraryScheduleList.tsx\": 81564,\n\t\"./pages/trips/microsite/NewBroadcastForm\": 84047,\n\t\"./pages/trips/microsite/NewBroadcastForm.tsx\": 84047,\n\t\"./pages/trips/microsite/NewItineraryActivityEventPage\": 33528,\n\t\"./pages/trips/microsite/NewItineraryActivityEventPage.tsx\": 33528,\n\t\"./pages/trips/microsite/NewItineraryActivityEventPage/ItineraryActivitiesChoosingForm\": 32679,\n\t\"./pages/trips/microsite/NewItineraryActivityEventPage/ItineraryActivitiesChoosingForm.tsx\": 32679,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage\": 93643,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage.tsx\": 93643,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage/FirstStep\": 87455,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage/FirstStep.tsx\": 87455,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage/LastStep\": 3465,\n\t\"./pages/trips/microsite/NewItineraryStayEventPage/LastStep.tsx\": 3465,\n\t\"./pages/trips/microsite/NewPollForm\": 16251,\n\t\"./pages/trips/microsite/NewPollForm.tsx\": 16251,\n\t\"./pages/trips/microsite/NewPollForm/PollPreview\": 99604,\n\t\"./pages/trips/microsite/NewPollForm/PollPreview.tsx\": 99604,\n\t\"./pages/trips/microsite/NoteForm\": 16797,\n\t\"./pages/trips/microsite/NoteForm.tsx\": 16797,\n\t\"./pages/trips/microsite/NotesListPage\": 61065,\n\t\"./pages/trips/microsite/NotesListPage.tsx\": 61065,\n\t\"./pages/trips/microsite/NotesListPage/NoteRow\": 95916,\n\t\"./pages/trips/microsite/NotesListPage/NoteRow.tsx\": 95916,\n\t\"./pages/trips/microsite/NotesPage\": 55809,\n\t\"./pages/trips/microsite/NotesPage.tsx\": 55809,\n\t\"./pages/trips/microsite/NotesPage/ActionButtons\": 53826,\n\t\"./pages/trips/microsite/NotesPage/ActionButtons.tsx\": 53826,\n\t\"./pages/trips/microsite/OverviewPage\": 8034,\n\t\"./pages/trips/microsite/OverviewPage.tsx\": 8034,\n\t\"./pages/trips/microsite/OverviewPage/AttendeesAvatars\": 36258,\n\t\"./pages/trips/microsite/OverviewPage/AttendeesAvatars.tsx\": 36258,\n\t\"./pages/trips/microsite/OverviewPage/CardsOverview\": 61229,\n\t\"./pages/trips/microsite/OverviewPage/CardsOverview.tsx\": 61229,\n\t\"./pages/trips/microsite/OverviewPage/FinalizedDatesAndDestination\": 56679,\n\t\"./pages/trips/microsite/OverviewPage/FinalizedDatesAndDestination.tsx\": 56679,\n\t\"./pages/trips/microsite/OverviewPage/OverviewSubheader\": 78214,\n\t\"./pages/trips/microsite/OverviewPage/OverviewSubheader.tsx\": 78214,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteButton/DeclineInviteMenuItem\": 57974,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteButton/DeclineInviteMenuItem.tsx\": 57974,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteButtons\": 43837,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteButtons.tsx\": 43837,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteDropdownButton\": 75990,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteDropdownButton.tsx\": 75990,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteOptions\": 8883,\n\t\"./pages/trips/microsite/OverviewPage/RespondToInviteOptions.tsx\": 8883,\n\t\"./pages/trips/microsite/OverviewPage/SectionCtaButton\": 36300,\n\t\"./pages/trips/microsite/OverviewPage/SectionCtaButton.tsx\": 36300,\n\t\"./pages/trips/microsite/OverviewPage/SectionDivider\": 96643,\n\t\"./pages/trips/microsite/OverviewPage/SectionDivider.tsx\": 96643,\n\t\"./pages/trips/microsite/OverviewPage/SectionHeader\": 73213,\n\t\"./pages/trips/microsite/OverviewPage/SectionHeader.tsx\": 73213,\n\t\"./pages/trips/microsite/OverviewPage/TravelerDetailsDialog\": 16381,\n\t\"./pages/trips/microsite/OverviewPage/TravelerDetailsDialog.tsx\": 16381,\n\t\"./pages/trips/microsite/OverviewPage/TripObjectList\": 6584,\n\t\"./pages/trips/microsite/OverviewPage/TripObjectList.tsx\": 6584,\n\t\"./pages/trips/microsite/OverviewPage/TripStatus\": 49986,\n\t\"./pages/trips/microsite/OverviewPage/TripStatus.tsx\": 49986,\n\t\"./pages/trips/microsite/OverviewPage/VerticalStatusCard\": 81470,\n\t\"./pages/trips/microsite/OverviewPage/VerticalStatusCard.tsx\": 81470,\n\t\"./pages/trips/microsite/PollsPage\": 29011,\n\t\"./pages/trips/microsite/PollsPage.tsx\": 29011,\n\t\"./pages/trips/microsite/PollsPage/AddPollButton\": 18615,\n\t\"./pages/trips/microsite/PollsPage/AddPollButton.tsx\": 18615,\n\t\"./pages/trips/microsite/PollsPage/CloseButton\": 53714,\n\t\"./pages/trips/microsite/PollsPage/CloseButton.tsx\": 53714,\n\t\"./pages/trips/microsite/PollsPage/ClosedPollsSection\": 16533,\n\t\"./pages/trips/microsite/PollsPage/ClosedPollsSection.tsx\": 16533,\n\t\"./pages/trips/microsite/PollsPage/OpenedPollsSection\": 41675,\n\t\"./pages/trips/microsite/PollsPage/OpenedPollsSection.tsx\": 41675,\n\t\"./pages/trips/microsite/PollsPage/PollView\": 39935,\n\t\"./pages/trips/microsite/PollsPage/PollView.tsx\": 39935,\n\t\"./pages/trips/microsite/PollsPage/PollView/DeleteButton\": 44921,\n\t\"./pages/trips/microsite/PollsPage/PollView/DeleteButton.tsx\": 44921,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollAnswersForm\": 67731,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollAnswersForm.tsx\": 67731,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollTypes\": 85431,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollTypes.tsx\": 85431,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollVotes\": 16664,\n\t\"./pages/trips/microsite/PollsPage/PollView/PollVotes.tsx\": 16664,\n\t\"./pages/trips/microsite/PollsPage/PollsList\": 18343,\n\t\"./pages/trips/microsite/PollsPage/PollsList.tsx\": 18343,\n\t\"./pages/trips/microsite/StayBookingsForm\": 36702,\n\t\"./pages/trips/microsite/StayBookingsForm.tsx\": 36702,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage\": 83941,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage.tsx\": 83941,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/ActivitiesFilteringAndSortingBar\": 74577,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/ActivitiesFilteringAndSortingBar.tsx\": 74577,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/ActivitiesList\": 23090,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/ActivitiesList.tsx\": 23090,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/MainContent\": 20373,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/MainContent.tsx\": 20373,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/SideBarContent\": 3870,\n\t\"./pages/trips/microsite/SuggestedActivitiesPage/SideBarContent.tsx\": 3870,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage\": 32436,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage.tsx\": 32436,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroup\": 58305,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroup.tsx\": 58305,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel\": 28606,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel.tsx\": 28606,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel/AddActivityButtonCard\": 28246,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupCarousel/AddActivityButtonCard.tsx\": 28246,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupList\": 84482,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/ActivityGroupList.tsx\": 84482,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/MainContent\": 28788,\n\t\"./pages/trips/microsite/SuggestedActivityGroupsPage/MainContent.tsx\": 28788,\n\t\"./pages/trips/microsite/SuggestedDatesPage\": 5795,\n\t\"./pages/trips/microsite/SuggestedDatesPage.tsx\": 5795,\n\t\"./pages/trips/microsite/SuggestedDatesPage/ActionCallout\": 62763,\n\t\"./pages/trips/microsite/SuggestedDatesPage/ActionCallout.tsx\": 62763,\n\t\"./pages/trips/microsite/SuggestedDatesPage/DatesList\": 54253,\n\t\"./pages/trips/microsite/SuggestedDatesPage/DatesList.tsx\": 54253,\n\t\"./pages/trips/microsite/SuggestedDatesPage/voteSentiments\": 51670,\n\t\"./pages/trips/microsite/SuggestedDatesPage/voteSentiments.ts\": 51670,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage\": 73979,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage.tsx\": 73979,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage/DestinationsList\": 59320,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage/DestinationsList.tsx\": 59320,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage/MainContent\": 22819,\n\t\"./pages/trips/microsite/SuggestedDestinationsPage/MainContent.tsx\": 22819,\n\t\"./pages/trips/microsite/SuggestedHousingPage\": 34934,\n\t\"./pages/trips/microsite/SuggestedHousingPage.tsx\": 34934,\n\t\"./pages/trips/microsite/TripActivitiesPage/ActivitiesSection/AddActivityButton\": 41070,\n\t\"./pages/trips/microsite/TripActivitiesPage/ActivitiesSection/AddActivityButton.tsx\": 41070,\n\t\"./pages/trips/microsite/TripUpdatesPage\": 85472,\n\t\"./pages/trips/microsite/TripUpdatesPage.tsx\": 85472,\n\t\"./pages/trips/microsite/TripUpdatesPage/FilteringBar\": 39300,\n\t\"./pages/trips/microsite/TripUpdatesPage/FilteringBar.tsx\": 39300,\n\t\"./pages/trips/microsite/TripUpdatesPage/ManageNotificationsCallout\": 511,\n\t\"./pages/trips/microsite/TripUpdatesPage/ManageNotificationsCallout.tsx\": 511,\n\t\"./pages/trips/microsite/TripUpdatesPage/NewTripUpdatesDot\": 28856,\n\t\"./pages/trips/microsite/TripUpdatesPage/NewTripUpdatesDot.tsx\": 28856,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry\": 19414,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry.tsx\": 19414,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/FinishedVotedTripEventLink\": 71638,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/FinishedVotedTripEventLink.tsx\": 71638,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TransitionedTripEventLink\": 22391,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TransitionedTripEventLink.tsx\": 22391,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TripUpdateEntryAction\": 63933,\n\t\"./pages/trips/microsite/TripUpdatesPage/TripUpdateEntry/TripUpdateEntryAction.tsx\": 63933,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapSection\": 66806,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapSection.tsx\": 66806,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapView\": 11187,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivitiesMapView.tsx\": 11187,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivityMarker\": 44713,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivityMarker.tsx\": 44713,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivityNanoView\": 94134,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/ActivityNanoView.tsx\": 94134,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/FullscreenMapView\": 35422,\n\t\"./pages/trips/microsite/shared/ActivitiesMap/FullscreenMapView.tsx\": 35422,\n\t\"./pages/trips/microsite/shared/ActivitiesSectionNavigation\": 4118,\n\t\"./pages/trips/microsite/shared/ActivitiesSectionNavigation.tsx\": 4118,\n\t\"./pages/trips/microsite/shared/AsyncSentimentButtons\": 41025,\n\t\"./pages/trips/microsite/shared/AsyncSentimentButtons.tsx\": 41025,\n\t\"./pages/trips/microsite/shared/BackToButton\": 33395,\n\t\"./pages/trips/microsite/shared/BackToButton.tsx\": 33395,\n\t\"./pages/trips/microsite/shared/BackToSuggestingButton\": 90962,\n\t\"./pages/trips/microsite/shared/BackToSuggestingButton.tsx\": 90962,\n\t\"./pages/trips/microsite/shared/CategoryLabel\": 97221,\n\t\"./pages/trips/microsite/shared/CategoryLabel.tsx\": 97221,\n\t\"./pages/trips/microsite/shared/ChosenTripObjectHeader\": 8933,\n\t\"./pages/trips/microsite/shared/ChosenTripObjectHeader.tsx\": 8933,\n\t\"./pages/trips/microsite/shared/ChosenTripObjectHeader/NoteForm\": 73551,\n\t\"./pages/trips/microsite/shared/ChosenTripObjectHeader/NoteForm.tsx\": 73551,\n\t\"./pages/trips/microsite/shared/CommentField\": 15514,\n\t\"./pages/trips/microsite/shared/CommentField.tsx\": 15514,\n\t\"./pages/trips/microsite/shared/CommentsLink\": 64022,\n\t\"./pages/trips/microsite/shared/CommentsLink.tsx\": 64022,\n\t\"./pages/trips/microsite/shared/CurrentSortingAndCount\": 19548,\n\t\"./pages/trips/microsite/shared/CurrentSortingAndCount.tsx\": 19548,\n\t\"./pages/trips/microsite/shared/FilteringAndSortingBar\": 77783,\n\t\"./pages/trips/microsite/shared/FilteringAndSortingBar.tsx\": 77783,\n\t\"./pages/trips/microsite/shared/FinalizedPageContentHeader\": 26849,\n\t\"./pages/trips/microsite/shared/FinalizedPageContentHeader.tsx\": 26849,\n\t\"./pages/trips/microsite/shared/FloatingActionButton\": 97731,\n\t\"./pages/trips/microsite/shared/FloatingActionButton.tsx\": 97731,\n\t\"./pages/trips/microsite/shared/MostRecentCommentBox\": 96213,\n\t\"./pages/trips/microsite/shared/MostRecentCommentBox.tsx\": 96213,\n\t\"./pages/trips/microsite/shared/PhasingStepper\": 26618,\n\t\"./pages/trips/microsite/shared/PhasingStepper.tsx\": 26618,\n\t\"./pages/trips/microsite/shared/PollAnswerButton\": 75025,\n\t\"./pages/trips/microsite/shared/PollAnswerButton.tsx\": 75025,\n\t\"./pages/trips/microsite/shared/PollAnswerResponses\": 348,\n\t\"./pages/trips/microsite/shared/PollAnswerResponses.tsx\": 348,\n\t\"./pages/trips/microsite/shared/RankingLabel\": 83457,\n\t\"./pages/trips/microsite/shared/RankingLabel.tsx\": 83457,\n\t\"./pages/trips/microsite/shared/SectionHeader\": 38588,\n\t\"./pages/trips/microsite/shared/SectionHeader.tsx\": 38588,\n\t\"./pages/trips/microsite/shared/SentimentButtons\": 63137,\n\t\"./pages/trips/microsite/shared/SentimentButtons.tsx\": 63137,\n\t\"./pages/trips/microsite/shared/SuggestingPhaseButtons\": 49214,\n\t\"./pages/trips/microsite/shared/SuggestingPhaseButtons.tsx\": 49214,\n\t\"./pages/trips/microsite/shared/SuggestingPhaseButtons/SkipVotingButton\": 18076,\n\t\"./pages/trips/microsite/shared/SuggestingPhaseButtons/SkipVotingButton.tsx\": 18076,\n\t\"./pages/trips/microsite/shared/TripName\": 12727,\n\t\"./pages/trips/microsite/shared/TripName.tsx\": 12727,\n\t\"./pages/trips/microsite/shared/TripObjectDelete\": 77818,\n\t\"./pages/trips/microsite/shared/TripObjectDelete.tsx\": 77818,\n\t\"./pages/trips/microsite/shared/VoteResultsButton\": 54860,\n\t\"./pages/trips/microsite/shared/VoteResultsButton.tsx\": 54860,\n\t\"./pages/trips/microsite/shared/VotingTopSideBarContent\": 91643,\n\t\"./pages/trips/microsite/shared/VotingTopSideBarContent.tsx\": 91643,\n\t\"./pages/trips/microsite/withLayout\": 7611,\n\t\"./pages/trips/microsite/withLayout.tsx\": 7611,\n\t\"./pages/trips/shared/DestroyConfirmationChosenTripObject\": 76267,\n\t\"./pages/trips/shared/DestroyConfirmationChosenTripObject.tsx\": 76267,\n\t\"./pages/trips/shared/TripObjectChoosingModalForm\": 49275,\n\t\"./pages/trips/shared/TripObjectChoosingModalForm.tsx\": 49275,\n\t\"./pages/users/NewUserForm\": 77689,\n\t\"./pages/users/NewUserForm.tsx\": 77689,\n\t\"./shared/ActionsButtonGroup\": 98297,\n\t\"./shared/ActionsButtonGroup.tsx\": 98297,\n\t\"./shared/ActionsMenu\": 79453,\n\t\"./shared/ActionsMenu.tsx\": 79453,\n\t\"./shared/ActivityAd\": 87081,\n\t\"./shared/ActivityAd.tsx\": 87081,\n\t\"./shared/ActivityFilterContext\": 1726,\n\t\"./shared/ActivityFilterContext.tsx\": 1726,\n\t\"./shared/AvatarGroup\": 40988,\n\t\"./shared/AvatarGroup.tsx\": 40988,\n\t\"./shared/BaseActionsMenu\": 81895,\n\t\"./shared/BaseActionsMenu.tsx\": 81895,\n\t\"./shared/BookingActionsMenuItems\": 31452,\n\t\"./shared/BookingActionsMenuItems.tsx\": 31452,\n\t\"./shared/Breadcrumbs\": 14536,\n\t\"./shared/Breadcrumbs.tsx\": 14536,\n\t\"./shared/CardGroupCarousel\": 54854,\n\t\"./shared/CardGroupCarousel.tsx\": 54854,\n\t\"./shared/CardGroupCarousel/CarouselStepButton\": 27746,\n\t\"./shared/CardGroupCarousel/CarouselStepButton.tsx\": 27746,\n\t\"./shared/CardGroupCarousel/Context\": 70555,\n\t\"./shared/CardGroupCarousel/Context.tsx\": 70555,\n\t\"./shared/CollapsibleBox\": 38911,\n\t\"./shared/CollapsibleBox.tsx\": 38911,\n\t\"./shared/Comments\": 58503,\n\t\"./shared/Comments.tsx\": 58503,\n\t\"./shared/Comments/AvatarGridItem\": 56257,\n\t\"./shared/Comments/AvatarGridItem.tsx\": 56257,\n\t\"./shared/Comments/CommentBody\": 12869,\n\t\"./shared/Comments/CommentBody.tsx\": 12869,\n\t\"./shared/Comments/CommentBox\": 30090,\n\t\"./shared/Comments/CommentBox.tsx\": 30090,\n\t\"./shared/Comments/CommentEditForm\": 15569,\n\t\"./shared/Comments/CommentEditForm.tsx\": 15569,\n\t\"./shared/Comments/CommentForm\": 25603,\n\t\"./shared/Comments/CommentForm.tsx\": 25603,\n\t\"./shared/CommentsButton\": 81793,\n\t\"./shared/CommentsButton.tsx\": 81793,\n\t\"./shared/Confetti\": 62174,\n\t\"./shared/Confetti.tsx\": 62174,\n\t\"./shared/ConfirmationDialog\": 94920,\n\t\"./shared/ConfirmationDialog.tsx\": 94920,\n\t\"./shared/ContainerLink\": 29856,\n\t\"./shared/ContainerLink.tsx\": 29856,\n\t\"./shared/CustomDateRangePicker\": 38518,\n\t\"./shared/CustomDateRangePicker.tsx\": 38518,\n\t\"./shared/DateOption\": 61134,\n\t\"./shared/DateOption.tsx\": 61134,\n\t\"./shared/DateOption/DateOptionActions\": 41725,\n\t\"./shared/DateOption/DateOptionActions.tsx\": 41725,\n\t\"./shared/DateOption/DateOptionTypes\": 80696,\n\t\"./shared/DateOption/DateOptionTypes.tsx\": 80696,\n\t\"./shared/DateOption/GroupFavoriteChip\": 83093,\n\t\"./shared/DateOption/GroupFavoriteChip.tsx\": 83093,\n\t\"./shared/DateOption/VotesBreakdown\": 28746,\n\t\"./shared/DateOption/VotesBreakdown.tsx\": 28746,\n\t\"./shared/DeleteConfirmationDialog\": 97052,\n\t\"./shared/DeleteConfirmationDialog.tsx\": 97052,\n\t\"./shared/DeleteResourceConfirmationDialog\": 18322,\n\t\"./shared/DeleteResourceConfirmationDialog.tsx\": 18322,\n\t\"./shared/Dialog\": 66911,\n\t\"./shared/Dialog.tsx\": 66911,\n\t\"./shared/DismissibleAlert\": 87932,\n\t\"./shared/DismissibleAlert.tsx\": 87932,\n\t\"./shared/Divider\": 32751,\n\t\"./shared/Divider.tsx\": 32751,\n\t\"./shared/Drawer\": 21937,\n\t\"./shared/Drawer.tsx\": 21937,\n\t\"./shared/DropdownButton\": 31688,\n\t\"./shared/DropdownButton.tsx\": 31688,\n\t\"./shared/DropdownButton/DropdownBase\": 23644,\n\t\"./shared/DropdownButton/DropdownBase.tsx\": 23644,\n\t\"./shared/DropdownButton/MenuToggle\": 69456,\n\t\"./shared/DropdownButton/MenuToggle.tsx\": 69456,\n\t\"./shared/EmailInviteForm\": 85311,\n\t\"./shared/EmailInviteForm.tsx\": 85311,\n\t\"./shared/EmailInviteModal\": 4059,\n\t\"./shared/EmailInviteModal.tsx\": 4059,\n\t\"./shared/EmptySectionContentWithCTA\": 56009,\n\t\"./shared/EmptySectionContentWithCTA.tsx\": 56009,\n\t\"./shared/EmptyStateModalForm\": 87944,\n\t\"./shared/EmptyStateModalForm.tsx\": 87944,\n\t\"./shared/ErrorBoundary\": 6034,\n\t\"./shared/ErrorBoundary.tsx\": 6034,\n\t\"./shared/ErrorBoundary/ErrorBoundaryMessage\": 58721,\n\t\"./shared/ErrorBoundary/ErrorBoundaryMessage.tsx\": 58721,\n\t\"./shared/Errors\": 88983,\n\t\"./shared/Errors.tsx\": 88983,\n\t\"./shared/ExcludesPlusOnesMessage\": 20846,\n\t\"./shared/ExcludesPlusOnesMessage.tsx\": 20846,\n\t\"./shared/ExploreStaysButton\": 72099,\n\t\"./shared/ExploreStaysButton.tsx\": 72099,\n\t\"./shared/ExternalPageLink\": 93541,\n\t\"./shared/ExternalPageLink.tsx\": 93541,\n\t\"./shared/FixedSaveBar\": 58680,\n\t\"./shared/FixedSaveBar.tsx\": 58680,\n\t\"./shared/GooglePlacesAutocomplete\": 99364,\n\t\"./shared/GooglePlacesAutocomplete.tsx\": 99364,\n\t\"./shared/HorizontalStepper\": 72975,\n\t\"./shared/HorizontalStepper.tsx\": 72975,\n\t\"./shared/ImageUploader\": 31900,\n\t\"./shared/ImageUploader.tsx\": 31900,\n\t\"./shared/ImageUploader/CameraDropdownButton\": 71668,\n\t\"./shared/ImageUploader/CameraDropdownButton.tsx\": 71668,\n\t\"./shared/ImageUploader/ImagePicker\": 38432,\n\t\"./shared/ImageUploader/ImagePicker.tsx\": 38432,\n\t\"./shared/ImagesCarousel\": 47205,\n\t\"./shared/ImagesCarousel.tsx\": 47205,\n\t\"./shared/InputWithCharacterCounter\": 42066,\n\t\"./shared/InputWithCharacterCounter.tsx\": 42066,\n\t\"./shared/InviteDialog\": 1014,\n\t\"./shared/InviteDialog.tsx\": 1014,\n\t\"./shared/InviteModal\": 6081,\n\t\"./shared/InviteModal.tsx\": 6081,\n\t\"./shared/InviteModal/ManageInvitesLink\": 59242,\n\t\"./shared/InviteModal/ManageInvitesLink.tsx\": 59242,\n\t\"./shared/InviteModal/ShareLinkSection\": 36273,\n\t\"./shared/InviteModal/ShareLinkSection.tsx\": 36273,\n\t\"./shared/InviteModal/ShareSheetButton\": 32301,\n\t\"./shared/InviteModal/ShareSheetButton.tsx\": 32301,\n\t\"./shared/Label\": 96813,\n\t\"./shared/Label.tsx\": 96813,\n\t\"./shared/LastUpdateFilterLink\": 4889,\n\t\"./shared/LastUpdateFilterLink.tsx\": 4889,\n\t\"./shared/LeaveConfirmationDialog\": 59112,\n\t\"./shared/LeaveConfirmationDialog.tsx\": 59112,\n\t\"./shared/Link\": 21840,\n\t\"./shared/Link.tsx\": 21840,\n\t\"./shared/Linkify\": 96887,\n\t\"./shared/Linkify.tsx\": 96887,\n\t\"./shared/MapView/InfoWindow\": 70689,\n\t\"./shared/MapView/InfoWindow.tsx\": 70689,\n\t\"./shared/MapView/MapView\": 25795,\n\t\"./shared/MapView/MapView.tsx\": 25795,\n\t\"./shared/MapView/MobileListButton\": 48852,\n\t\"./shared/MapView/MobileListButton.tsx\": 48852,\n\t\"./shared/MapView/MobileMapButton\": 17206,\n\t\"./shared/MapView/MobileMapButton.tsx\": 17206,\n\t\"./shared/MissingVoteAlert\": 51285,\n\t\"./shared/MissingVoteAlert.tsx\": 51285,\n\t\"./shared/Modal\": 56496,\n\t\"./shared/Modal.tsx\": 56496,\n\t\"./shared/ModalForm\": 25716,\n\t\"./shared/ModalForm.tsx\": 25716,\n\t\"./shared/NoSuggestionsYet\": 95495,\n\t\"./shared/NoSuggestionsYet.tsx\": 95495,\n\t\"./shared/ObjectAuthor\": 87886,\n\t\"./shared/ObjectAuthor.tsx\": 87886,\n\t\"./shared/RailsForm\": 72393,\n\t\"./shared/RailsForm.tsx\": 72393,\n\t\"./shared/Reactions/EmojiCounters\": 8996,\n\t\"./shared/Reactions/EmojiCounters.tsx\": 8996,\n\t\"./shared/Reactions/EmojiPicker\": 72805,\n\t\"./shared/Reactions/EmojiPicker.tsx\": 72805,\n\t\"./shared/Reactions/Reactions\": 65917,\n\t\"./shared/Reactions/Reactions.tsx\": 65917,\n\t\"./shared/ReadMore\": 76728,\n\t\"./shared/ReadMore.tsx\": 76728,\n\t\"./shared/RichText\": 17029,\n\t\"./shared/RichText.tsx\": 17029,\n\t\"./shared/RichTextEditor\": 533,\n\t\"./shared/RichTextEditor.tsx\": 533,\n\t\"./shared/RsvpModal\": 45850,\n\t\"./shared/RsvpModal.tsx\": 45850,\n\t\"./shared/SeeMoreOrLess\": 70048,\n\t\"./shared/SeeMoreOrLess.tsx\": 70048,\n\t\"./shared/SegmentType\": 64742,\n\t\"./shared/SegmentType.ts\": 64742,\n\t\"./shared/ShareButton\": 75147,\n\t\"./shared/ShareButton.tsx\": 75147,\n\t\"./shared/SideBarPage\": 86031,\n\t\"./shared/SideBarPage.tsx\": 86031,\n\t\"./shared/SiteFooter\": 77459,\n\t\"./shared/SiteFooter.tsx\": 77459,\n\t\"./shared/SiteHeader\": 91385,\n\t\"./shared/SiteHeader.tsx\": 91385,\n\t\"./shared/SiteHeader/BroadcastButton\": 37370,\n\t\"./shared/SiteHeader/BroadcastButton.tsx\": 37370,\n\t\"./shared/SiteHeader/HeaderBar\": 99204,\n\t\"./shared/SiteHeader/HeaderBar.tsx\": 99204,\n\t\"./shared/SiteHeader/HeaderBar/BroadcastButton\": 308,\n\t\"./shared/SiteHeader/HeaderBar/BroadcastButton.tsx\": 308,\n\t\"./shared/SiteHeader/HeaderBar/ButtonBase\": 14448,\n\t\"./shared/SiteHeader/HeaderBar/ButtonBase.tsx\": 14448,\n\t\"./shared/SiteHeader/HeaderBar/IntercomButton\": 23745,\n\t\"./shared/SiteHeader/HeaderBar/IntercomButton.tsx\": 23745,\n\t\"./shared/SiteHeader/HeaderBar/TripUpdatesButton\": 93113,\n\t\"./shared/SiteHeader/HeaderBar/TripUpdatesButton.tsx\": 93113,\n\t\"./shared/SiteHeader/LogInButtonForm\": 79493,\n\t\"./shared/SiteHeader/LogInButtonForm.tsx\": 79493,\n\t\"./shared/SiteHeader/ManageTripButton\": 82764,\n\t\"./shared/SiteHeader/ManageTripButton.tsx\": 82764,\n\t\"./shared/SiteHeader/NavBarMenu\": 8746,\n\t\"./shared/SiteHeader/NavBarMenu.tsx\": 8746,\n\t\"./shared/SiteHeader/ShareTripButton\": 39129,\n\t\"./shared/SiteHeader/ShareTripButton.tsx\": 39129,\n\t\"./shared/SkeletonPage\": 63732,\n\t\"./shared/SkeletonPage.tsx\": 63732,\n\t\"./shared/SkeletonPage/SkeletonCard\": 62891,\n\t\"./shared/SkeletonPage/SkeletonCard.tsx\": 62891,\n\t\"./shared/SkeletonPage/SkeletonList\": 75474,\n\t\"./shared/SkeletonPage/SkeletonList.tsx\": 75474,\n\t\"./shared/SnackbarNotification\": 3015,\n\t\"./shared/SnackbarNotification.tsx\": 3015,\n\t\"./shared/SnackbarNotificationIcons\": 88697,\n\t\"./shared/SnackbarNotificationIcons.tsx\": 88697,\n\t\"./shared/StepperInput\": 43275,\n\t\"./shared/StepperInput.tsx\": 43275,\n\t\"./shared/StyledCheckbox\": 40394,\n\t\"./shared/StyledCheckbox.tsx\": 40394,\n\t\"./shared/StyledSwitch\": 35601,\n\t\"./shared/StyledSwitch.tsx\": 35601,\n\t\"./shared/TabNavigation\": 57385,\n\t\"./shared/TabNavigation.tsx\": 57385,\n\t\"./shared/TimeStamp\": 31885,\n\t\"./shared/TimeStamp.tsx\": 31885,\n\t\"./shared/ToDoAlert\": 48623,\n\t\"./shared/ToDoAlert.tsx\": 48623,\n\t\"./shared/Tooltip\": 97297,\n\t\"./shared/Tooltip.tsx\": 97297,\n\t\"./shared/TravelersVotingBox\": 21509,\n\t\"./shared/TravelersVotingBox.tsx\": 21509,\n\t\"./shared/TravelersVotingBox/TablePaginationActions\": 20667,\n\t\"./shared/TravelersVotingBox/TablePaginationActions.tsx\": 20667,\n\t\"./shared/TravelersVotingBox/TravelerRow\": 4093,\n\t\"./shared/TravelersVotingBox/TravelerRow.tsx\": 4093,\n\t\"./shared/TripObject\": 835,\n\t\"./shared/TripObject.tsx\": 835,\n\t\"./shared/TripObjectLink\": 64895,\n\t\"./shared/TripObjectLink.tsx\": 64895,\n\t\"./shared/TripObjectTypes\": 45321,\n\t\"./shared/TripObjectTypes.tsx\": 45321,\n\t\"./shared/TripTypes\": 95482,\n\t\"./shared/TripTypes.tsx\": 95482,\n\t\"./shared/TroupeLogoWithFavoritesHeader\": 39244,\n\t\"./shared/TroupeLogoWithFavoritesHeader.tsx\": 39244,\n\t\"./shared/TruncatedTypography\": 30931,\n\t\"./shared/TruncatedTypography.tsx\": 30931,\n\t\"./shared/UserAvatar\": 17926,\n\t\"./shared/UserAvatar.tsx\": 17926,\n\t\"./shared/VotingProgressBanner\": 79379,\n\t\"./shared/VotingProgressBanner.tsx\": 79379,\n\t\"./shared/VotingProgressDialog\": 57988,\n\t\"./shared/VotingProgressDialog.tsx\": 57988,\n\t\"./shared/VotingResults/VotesTable\": 60324,\n\t\"./shared/VotingResults/VotesTable.tsx\": 60324,\n\t\"./shared/VotingSummaryDialog\": 71953,\n\t\"./shared/VotingSummaryDialog.tsx\": 71953,\n\t\"./shared/rankLabels\": 33257,\n\t\"./shared/rankLabels.ts\": 33257,\n\t\"./theme\": 38177,\n\t\"./theme.ts\": 38177,\n\t\"./trip-page/NavigationBar\": 30047,\n\t\"./trip-page/NavigationBar.tsx\": 30047,\n\t\"./types/createPalette.d\": 91108,\n\t\"./types/createPalette.d.ts\": 91108\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 982;","import React, { useContext, useEffect, useState } from 'react';\nimport {\n createApolloClient,\n ApolloProvider,\n} from '../services/apolloClient';\nimport { AlertColor } from '@mui/material';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';\nimport RailsForm from \"./shared/RailsForm\";\nimport SnackbarNotification from './shared/SnackbarNotification';\nimport * as routes from \"../routes\";\nimport TroupeApp from \"../services/TroupeApp\";\nimport theme from \"./theme\";\nimport Confetti from \"./shared/Confetti\";\nimport { gql } from \"@apollo/client\";\nexport { theme };\nimport { ENABLED_ALL_PUSH } from \"../constants/queryParams\";\nimport * as Sentry from '@sentry/browser';\n\nexport const GlobalContext = React.createContext({});\n\nexport const MaxPrice = 1000000000000\n\nexport type GlobalContextType = {\n isMobileApp?: boolean,\n isTestEnv?: boolean,\n setSnackbar?: (message: string, duration?: number, severity?: AlertColor) => void,\n activateConfetti?: () => void,\n shareStay?: boolean,\n troupieAlternatives?: boolean,\n rationaleTroupieApi?: boolean,\n};\n\nexport enum TripObjectState {\n Suggesting = 'suggesting',\n Voting = 'voting',\n Finalized = 'finalized',\n}\n\nexport type TripSiteContextType = {\n currentUserId?: string,\n datesState?: TripObjectState,\n destinationsState?: TripObjectState,\n staysState?: TripObjectState,\n tripId?: string,\n tripGid?: string,\n currentUserGid?: string,\n travelerId?: string,\n};\n\nexport const TripSiteContext = React.createContext({});\n\ntype FormsContextType = {\n csrfToken: string,\n triggerLogIn: (() => void) | null,\n};\n\ntype SegmentContextType = {\n isPlanner?: boolean | null,\n currentUserId?: string,\n tripId?: string,\n}\n\nexport const FormsContext = React.createContext({\n csrfToken: '',\n triggerLogIn: null,\n});\n\nexport const SegmentContext = React.createContext({\n isPlanner: null,\n currentUserId: undefined,\n tripId: undefined,\n});\n\ntype RoutesContextType = {\n authPath?: string,\n};\n\nexport const RoutesContext = React.createContext({});\n\nexport const ImageUploaderContext = React.createContext({\n fileStackAPIKey: '',\n});\n\nconst TriggerableLogInForm = React.forwardRef((_props, ref) => {\n const { authPath } = useContext(RoutesContext)\n\n return (\n \n )\n});\n\nconst csrfToken = document\n .querySelector('meta[name=csrf-token]')\n ?.getAttribute('content');\n\nconst graphqlPath = routes.graphqlPath();\nconst client = createApolloClient({\n graphqlPath,\n csrfToken,\n});\n\nexport const hocRailsAction = (Page) => (props) => {\n const {\n csrfToken,\n globalContextProps,\n imageUploaderProps,\n routesFromRails,\n snackbarNotification,\n datesState,\n destinationsState,\n staysState,\n isPlanner,\n currentUserId,\n tripId,\n tripGid,\n currentUserGid,\n travelerId,\n ...restOfProps\n } = props;\n\n useEffect(() => {\n TroupeApp.User?.identify(currentUserId, props.currentUserIdOneSignalAuthHash);\n currentUserId && Sentry.setUser({ id: currentUserId });\n }, [])\n\n const ENABLE_ALL_PUSH = gql`\n mutation UserAllPushNotificationEnable {\n userAllPushNotificationEnable(input:{}) {\n errors\n }\n }\n `\n\n const enableAllPushNotifications = async () => await client.mutate({ mutation: ENABLE_ALL_PUSH })\n\n const handleMessageEvent = async (event: MessageEvent) => {\n try {\n const jsonData = (typeof event.data === \"string\") && JSON.parse(event.data)\n if (jsonData[\"targetOrigin\"] === \"troupeApp\") {\n if (jsonData.status === \"authorized\") {\n const { data: { userAllPushNotificationEnable }} = await enableAllPushNotifications()\n if (userAllPushNotificationEnable.errors.length === 0) {\n const urlSearchParams = new URLSearchParams(window.location.search)\n urlSearchParams.set(ENABLED_ALL_PUSH, 'true')\n window.location.search = urlSearchParams.toString()\n } else {\n setSnackbar({ message: 'Something went wrong, please try again.', duration: 5000, severity: 'error' })\n }\n } else {\n window.location.reload()\n }\n }\n } catch {\n //no-op\n }\n }\n\n useEffect(() => {\n window.addEventListener('message', handleMessageEvent);\n return () => window.removeEventListener('message', handleMessageEvent);\n }, []);\n\n const triggerableLogInFormRef = React.useRef();\n const formsContextValue = {\n csrfToken,\n triggerLogIn: () => triggerableLogInFormRef.current?.submit(),\n };\n\n type SnackbarMessage = {\n message: string,\n duration?: number,\n severity?: AlertColor,\n }\n\n const snackbarInitialState = {\n message: snackbarNotification?.message || '',\n duration: snackbarNotification?.duration,\n severity: snackbarNotification?.severity,\n };\n const [snackbar, setSnackbar] = useState(snackbarInitialState);\n\n const [confettiActive, setConfettiActive] = useState(false);\n\n function activateConfetti() {\n setConfettiActive(true)\n setTimeout(() => {\n setConfettiActive(false)\n }, 2000)\n }\n\n const globalContextValue = Object.assign(\n {},\n globalContextProps,\n {\n setSnackbar: (message: string, duration?: number, severity?: AlertColor) => setSnackbar({ message, duration, severity }),\n activateConfetti: activateConfetti,\n },\n );\n\n const tripSiteContextValue = {\n currentUserId,\n datesState,\n destinationsState,\n staysState,\n tripId,\n tripGid,\n currentUserGid,\n travelerId,\n }\n\n const segmentContextValue = {\n currentUserId,\n isPlanner,\n tripId,\n }\n\n const pageProps = Object.assign(restOfProps, { currentUserId, isPlanner, tripId })\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {!!snackbar.message && (\n setSnackbar({ message: '', duration: undefined, severity: undefined })}\n open={!!snackbar.message}\n severity={snackbar.severity}\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n ApolloClient,\n ApolloProvider,\n InMemoryCache,\n} from '@apollo/client';\nimport { BatchHttpLink } from \"@apollo/client/link/batch-http\";\n\nconst createApolloClient = ({ graphqlPath, csrfToken }: {\n graphqlPath: string,\n csrfToken?: string,\n}) => {\n const link = new BatchHttpLink({\n uri: graphqlPath,\n headers: {\n 'X-CSRF-Token': csrfToken,\n },\n batchInterval: 20,\n batchMax: 5,\n })\n\n const cache = new InMemoryCache({\n typePolicies: {\n DateOptionWithAvailability: {\n keyFields: ['id', 'availabilityDateId', 'available', 'estimatedPrice', 'price'],\n },\n ExternalListing: {\n keyFields: [\n 'id',\n 'pricing', ['price', 'type'],\n ],\n },\n Reaction: {\n keyFields: [\n 'emoji',\n 'reactable', ['id'],\n ],\n },\n },\n })\n\n const client = new ApolloClient({\n cache,\n link,\n name: 'troupe-web',\n connectToDevTools: false,\n });\n\n return client;\n}\n\nexport { createApolloClient, ApolloProvider }\n","import React, { PropsWithChildren } from \"react\";\n\ntype RenderChildWhenFFOnProps = PropsWithChildren<{\n featureFlag: string,\n context: React.Context,\n}>;\n\nconst RenderChildWhenFFOn : React.FC = ({ featureFlag, context, children }) => {\n const contextInstance = React.useContext(context)\n return contextInstance[featureFlag] ? <>{children} : null;\n}\n\nexport default RenderChildWhenFFOn;\n","import React from \"react\";\nimport {makeStyles, DefaultTheme, useTheme} from \"@mui/styles\";\nimport {Avatar as MuiAvatar, useMediaQuery} from \"@mui/material\";\nimport PersonIcon from '@mui/icons-material/Person';\nimport clsx from \"clsx\";\nimport avatarSizes from \"./avatarSizes\";\nimport borderColors from \"./borderColors\";\n\nexport type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type BorderVariant = 'primary' | 'success' | 'warning' | 'danger';\n\ntype AvatarProps = {\n borderVariant?: BorderVariant,\n children?: React.ReactNode,\n className?: string,\n disabled?: boolean,\n plusOnes?: number,\n size?: Size,\n src?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n backgroundColor: theme.palette.general.background.disabled,\n border: '1px solid #FFF',\n color: \"white\",\n height: ({ size }) => avatarSizes[size].height,\n width: ({ size }) => avatarSizes[size].width,\n },\n disabled: {\n background: '#FFFFFF',\n '& img': {\n opacity: 0.6,\n },\n },\n plusOnes: {\n backgroundColor: 'white',\n border: '1px solid #BEC9D4',\n borderRadius: '16px',\n height: ({ size }) => (avatarSizes[size].width >= 40 ? '24px' : '14px'),\n width: ({ size }) => `${avatarSizes[size].width - 8}px`,\n color: '#505050',\n fontSize: ({ size }) => (avatarSizes[size].width >= 40 ? '12px' : '10px'),\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n top: ({ size }) => `${avatarSizes[size].height - 10}px`,\n right: '8px',\n },\n mobilePlusOnes: {\n left: '6px',\n },\n wrapper: {\n alignItems: 'center',\n background: ({ borderVariant }) => borderColors[borderVariant],\n borderRadius: '50%',\n display: 'flex',\n height: ({ size }) => avatarSizes[size].borderHeight,\n justifyContent: 'center',\n verticalAlign: 'middle',\n width: ({ size }) => avatarSizes[size].borderWidth,\n position: 'relative',\n },\n}));\n\nexport const statusToVariant = {\n going: 'success',\n cannot_go: 'danger',\n interested: 'warning',\n};\n\nconst Avatar : React.FC = ({\n borderVariant,\n children,\n className,\n disabled = false,\n plusOnes = 0,\n size = 'md',\n src,\n ...props\n}) => {\n const classes = useStyles({ borderVariant, size });\n const fallbackIcon = ;\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const renderPlusOnes = () => (\n (plusOnes > 0) &&\n \n +{plusOnes}\n \n );\n\n const avatar =\n \n {!src && (children || fallbackIcon)}\n ;\n\n return (\n
\n {avatar}\n {renderPlusOnes()}\n
\n );\n};\n\nexport default Avatar;\n","type AvatarSize = {\n borderHeight: number,\n borderWidth: number,\n height: number,\n width: number,\n};\n\ntype AvatarSizes = {\n xs: AvatarSize,\n sm: AvatarSize,\n md: AvatarSize,\n lg: AvatarSize,\n xl: AvatarSize,\n};\n\nconst avatarSizes: AvatarSizes = {\n xs: {\n borderHeight: 32,\n borderWidth: 32,\n height: 28,\n width: 28,\n },\n sm: {\n borderHeight: 36,\n borderWidth: 36,\n width: 32,\n height: 32,\n },\n md: {\n borderHeight: 48,\n borderWidth: 48,\n width: 40,\n height: 40,\n },\n lg: {\n borderHeight: 56,\n borderWidth: 56,\n width: 48,\n height: 48,\n },\n xl: {\n borderHeight: 76,\n borderWidth: 76,\n width: 68,\n height: 68,\n },\n};\n\nexport default avatarSizes;\n","import { theme } from \"../Document\"\n\ntype BorderColors = {\n danger: string,\n primary: string,\n success: string,\n warning: string,\n};\n\nconst borderColors: BorderColors = {\n danger: 'linear-gradient(to top, #e55f5c 0%, #d85160 100%)',\n primary: theme.palette.general.primary,\n success: 'linear-gradient(to top, #9fe55c 0%, #27bb56 100%)',\n warning: 'linear-gradient(to top, #ffb925 0%, #ddd212 100%)',\n};\n\nexport default borderColors;\n","import React from \"react\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport IconButton from \"./IconButton\";\n\nconst AddButton = (buttonProps) => {\n return (\n \n \n \n );\n};\n\nexport default AddButton;\n","import React from \"react\";\nimport { Typography, Button } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport PersonAddAlt1Icon from '@mui/icons-material/PersonAddAlt1';\nimport { tripTravelersPath } from '../../routes';\nimport useSegment from \"../../services/useSegment\";\n\ntype AddPlusOneButtonProps = {\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n addPlusOne: {\n color: \"#4A6176\",\n width: \"100%\",\n marginTop: theme.spacing(2),\n },\n addPlusOneText: {\n fontWeight: 600,\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst AddPlusOneButton = ( {tripId = ''} : AddPlusOneButtonProps ) => {\n const classes = useStyles();\n const { trackSegment } = useSegment();\n\n const onPlusOneClick = () => {\n trackSegment('Add Plus 1 Initiated',\n {\n tripId: tripId,\n page: 'Invite Modal',\n },\n );\n }\n ;\n\n return(\n \n \n \n Add Plus-one\n \n \n )\n}\n\nexport default AddPlusOneButton;\n","import React, { useContext } from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport clsx from \"clsx\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport buttonColors from \"./buttonColors\";\nimport { FormContext } from \"../shared/RailsForm\";\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger';\nexport type ButtonType = 'button' | 'submit' | 'reset';\ntype LinkTarget = '_blank' | '_self' | '_parent' | '_top' | null;\n\nexport type ButtonProps = {\n children?: React.ReactNode,\n className?: string,\n detachedFromForm?: boolean,\n disabled?: boolean,\n disableRipple?: boolean,\n fullWidth?: boolean,\n href?: string,\n onClick?: ((event: any) => void) | null,\n tabIndex?: number,\n target?: LinkTarget,\n type?: ButtonType,\n variant?: ButtonVariant,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n height: theme.spacing(6),\n border: '1px solid',\n borderRadius: theme.spacing(0.75),\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n paddingTop: theme.spacing(1.5),\n paddingBottom: theme.spacing(1.5),\n borderColor: ({ variant }) => buttonColors[variant].default.border,\n color: ({ variant }) => buttonColors[variant].default.color,\n background: ({ variant }) => buttonColors[variant].default.fill,\n '&:hover': {\n borderColor: ({ variant }) => buttonColors[variant].hover.border,\n color: ({ variant }) => buttonColors[variant].hover.color,\n background: ({ variant }) => buttonColors[variant].hover.fill,\n },\n '&:focus': {\n borderColor: ({ variant }) => buttonColors[variant].focused.border,\n color: ({ variant }) => buttonColors[variant].focused.color,\n background: ({ variant }) => buttonColors[variant].focused.fill,\n boxShadow: '0 0 0 1px #80b4fb',\n },\n '&:active': {\n borderColor: ({ variant }) => buttonColors[variant].pressed.border,\n color: ({ variant }) => buttonColors[variant].pressed.color,\n background: ({ variant }) => buttonColors[variant].pressed.fill,\n boxShadow: 'none',\n },\n },\n disabled: {\n borderColor: ({ variant }) => `${buttonColors[variant].disabled.border} !important`,\n color: ({ variant }) => `${buttonColors[variant].disabled.color} !important`,\n background: ({ variant }) => `${buttonColors[variant].disabled.fill} !important`,\n boxShadow: 'none !important',\n },\n fullWidth: {\n width: '100%',\n },\n}));\n\nconst SUBMIT_WITH_ONCLICK_MESSAGE =\n 'Detected `button type=\"submit\"` with onClick handler. ' +\n 'Prefer
onSubmit handler to avoid race conditions!';\n\nconst Button = React.forwardRef(({\n children,\n className,\n detachedFromForm,\n disabled,\n fullWidth,\n variant,\n ...props\n}: ButtonProps, ref: React.Ref) => {\n // React warning fix: throw away properties that ButtonGroup injects but are not implement by `Button`\n // see: https://github.com/mui/material-ui/issues/17226#issuecomment-672980848\n // @ts-expect-error\n // eslint-disable-next-line no-unused-vars\n const { disableFocusRipple, disableElevation, ...buttonProps } = props;\n const classes = useStyles({ variant });\n const formContext = useContext(FormContext);\n const disabledForm = formContext.disabled && !buttonProps.href && !detachedFromForm;\n\n if (props.type === 'submit' && props.onClick && typeof props.onClick === 'function') {\n const message = SUBMIT_WITH_ONCLICK_MESSAGE + ` (button copy: \"${children}\", page: \"${window.location.pathname}\")`;\n throw new Error(message);\n }\n\n return (\n \n {children}\n \n );\n});\n\nButton.defaultProps = {\n detachedFromForm: false,\n variant: 'primary',\n};\n\nexport default Button;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport Box from \"@mui/material/Box\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype CardButtonProps = {\n children: object,\n className?: string,\n disabled?: boolean,\n testId?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n border: \"2px solid #e6e7e8\",\n borderRadius: 5,\n \"&:focus\": {\n outline: \"none\",\n },\n },\n enabled: {\n border: \"none\",\n boxShadow: \"0px 0px 8px rgba(0, 0, 0, 0.15)\",\n \"&:hover\": {\n boxShadow: \"0px 6px 20px 0px rgba(0, 0, 0, 0.10)\",\n },\n \"&:focus\": {\n boxShadow: \"2px 2px 9px 6px rgba(1, 1, 1, 0.1)\",\n border: \"2px solid #80b4fb\",\n },\n \"&:active\": {\n boxShadow: \"2px 2px 5px 0 rgba(1, 1, 1, 0.2)\",\n backgroundColor: \"#f7f7f8\",\n },\n },\n}));\n\nconst CardButton = ({\n children,\n className,\n disabled = false,\n testId,\n}: CardButtonProps) => {\n const classes = useStyles();\n const tabIndexProp = disabled ? {} : {tabIndex: 0};\n\n return (\n \n {children}\n \n );\n}\n\nexport default CardButton;\n","import React, { useCallback, useContext } from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport chipColors from \"./chipColors\";\nimport { FormContext } from \"../shared/RailsForm\";\nimport { trackLink as trackAnalyticsEvent } from \"../../services/analytics\";\n\ntype ChipVariant = 'primary' | 'success' | 'successLighter' | 'danger' ;\ntype Styles = (variant: ChipVariant) => (() => any);\n\nexport type ChipProps = {\n children: React.ReactNode,\n active?: boolean,\n className?: string,\n disabled?: boolean,\n onClick?: () => void,\n onMouseDown?: (event) => void,\n type?: 'button' | 'submit' | 'reset',\n variant?: ChipVariant,\n segmentProps?: SegmentProps,\n};\n\ntype SegmentProps = {\n title: string,\n tripObjectId: string,\n}\n\nconst useStyles: Styles = (\n variant: ChipVariant,\n) => makeStyles((theme): {} => ({\n root: {\n height: theme.spacing(6),\n border: '1px solid',\n borderRadius: theme.spacing(3),\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingTop: theme.spacing(1.5),\n paddingBottom: theme.spacing(1.5),\n '&:focus': {\n boxShadow: '0 0 0 1px #80b4fb',\n },\n },\n nonActive: {\n borderColor: chipColors[variant].default.border,\n color: chipColors[variant].default.color,\n background: chipColors[variant].default.fill,\n '&:hover': {\n borderColor: chipColors[variant].hover.border,\n color: chipColors[variant].hover.color,\n background: chipColors[variant].hover.fill,\n },\n },\n active: {\n borderColor: chipColors[variant].active.border,\n color: chipColors[variant].active.color,\n background: chipColors[variant].active.fill,\n boxShadow: 'none',\n '&:hover': {\n borderColor: chipColors[variant].activeHover.border,\n color: chipColors[variant].activeHover.color,\n background: chipColors[variant].activeHover.fill,\n },\n },\n disabled: {\n borderColor: [[chipColors[variant].disabled.border], '!important'],\n color: [[chipColors[variant].disabled.color], '!important'],\n background: [[chipColors[variant].disabled.fill], '!important'],\n boxShadow: [['none'], '!important'],\n },\n}));\n\nconst Chip = ({\n active,\n children,\n className,\n disabled,\n variant,\n segmentProps,\n ...buttonProps\n}: ChipProps) => {\n const classes = useStyles(variant)();\n const formContext = useContext(FormContext);\n\n const isDisabled = () => (\n disabled || (buttonProps.type === 'submit' && formContext.disabled)\n );\n\n const refs = useCallback((element) => {\n if (element !== null && segmentProps !== undefined) {\n trackAnalyticsEvent(\n element,\n segmentProps.title,\n {tripObjectId: segmentProps.tripObjectId}\n );\n }\n }, []);\n\n return (\n refs(element)}\n >\n {children}\n \n );\n};\n\nChip.defaultProps = {\n variant: 'primary',\n};\n\nexport default Chip;\n","import React, { useCallback } from \"react\";\nimport ButtonBase, { ButtonBaseProps } from \"@mui/material/ButtonBase\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport { trackLink as trackAnalyticsEvent } from '../../services/analytics';\n\nexport type CustomChipProps = ButtonBaseProps & {\n active?: boolean,\n href?: string,\n eventName?: string,\n eventProperties?: object,\n trackEventDisabled?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n active: {\n backgroundColor: '#EEEFFF !important',\n border: '2px solid',\n borderColor: theme.palette.primary.main,\n },\n root: {\n backgroundColor: 'rgba(242, 242, 242, 0.75)',\n borderRadius: theme.spacing(4),\n color: '#243060',\n fontFamily: theme.typography.fontFamily,\n fontSize: 15,\n fontWeight: 500,\n height: theme.spacing(5),\n paddingBottom: theme.spacing(1.25),\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n paddingTop: theme.spacing(1.25),\n whiteSpace: 'nowrap',\n '&:hover': {\n backgroundColor: '#EEEFFF',\n },\n },\n}));\n\nconst CustomChip = ({\n active = false,\n eventName,\n eventProperties,\n trackEventDisabled = false,\n ...buttonProps\n}: CustomChipProps) => {\n const classes = useStyles();\n\n const refs = useCallback((element) => {\n if(trackEventDisabled) return null;\n\n if(element !== null) {\n trackAnalyticsEvent(\n element,\n eventName,\n eventProperties,\n );\n }\n }, []);\n\n return (\n refs(element)}\n />\n );\n};\n\nexport default CustomChip;\n","import React from \"react\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport { useMediaQuery } from '@mui/material';\nimport { ButtonBase } from \"@mui/material\";\nimport FavoriteIcon from '@mui/icons-material/Favorite';\nimport { DefaultTheme } from \"@mui/styles\";\nimport { favoritesPath } from \"../../routes\";\nimport favoritesStorage from \"../../services/favoritesStorage\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_FAVORITES_LISTINGS } from \"../../graphql/queries/favorites\";\nimport { useClickedFavoritesEvent } from \"../../services/segmentEvents/favoriteEvents\";\nimport buttonColors from \"./buttonColors\";\n\ntype Color = 'white' | 'blue';\ntype FavoritesButtonProps = {\n color?: Color,\n viewingShared?: boolean,\n};\n\nconst colors = {\n white: {\n color: '#FFF',\n borderColor: '#FFF',\n },\n blue: {\n color: '#3B41B0',\n borderColor: '#3B41B0',\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n favoritesButton: {\n color: ({ color }) => colors[color].color,\n fontWeight: 600,\n lineHeight: '24px',\n fontSize: '16px',\n border: ({color, isMobile}) => !isMobile && `1.5px solid ${colors[color].borderColor}`,\n borderRadius: ({isMobile}) => !isMobile && '20px',\n padding: ({isMobile}) => !isMobile && '8px 16px',\n },\n favoritesText: {\n minWidth: ({isMobile}) => !isMobile && '110px',\n textAlign: 'center',\n marginLeft: ({isMobile}) => isMobile && '4px',\n },\n}));\n\nconst FavoritesButton : React.FC = ({\n color = 'white',\n viewingShared = false,\n}) => {\n const { getFavoriteId } = favoritesStorage();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const classes = useStyles({color, isMobile});\n const favoriteListings = useQuery(GET_FAVORITES_LISTINGS, {\n variables: { favoriteId: getFavoriteId() },\n skip: !(getFavoriteId() && !viewingShared),\n });\n\n const favoritesCount = favoriteListings.data?.node?.listings.length || '';\n const trackClickedFavoriteEvent = useClickedFavoritesEvent();\n\n return(\n \n Favorites {favoritesCount && `(${favoritesCount})`}\n \n );\n};\n\nexport default FavoritesButton;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport type FlatButtonProps = {\n children: React.ReactNode,\n className?: string,\n disabled?: boolean,\n onClick?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(1),\n border: '1px solid #979797',\n backgroundColor: 'white',\n color: '#000000',\n width: theme.spacing(5),\n height: theme.spacing(5),\n borderRadius: theme.spacing(8),\n '&:hover': {\n border: `1px solid ${theme.palette.primary.main}`,\n backgroundColor: 'rgba(84, 93, 252, 0.04)',\n },\n },\n disabled: {\n borderColor: '#d4d5d6',\n color: '#d4d5d6 !important',\n },\n}));\n\nconst FlatButton = ({\n children,\n className,\n disabled,\n ...buttonProps\n}: FlatButtonProps) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\nexport default FlatButton;\n","import React from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype ButtonPlacement = 'bottom' | 'top-left';\ntype Styles = (placement: ButtonPlacement) => (() => any);\n\nexport type FloatingButtonProps = {\n children: React.ReactNode,\n className?: string,\n onClick?: () => void,\n placement?: ButtonPlacement,\n};\n\nconst buttonPlacements = {\n bottom: {\n bottom: '2%',\n left: '50%',\n position: 'fixed',\n top: 'auto',\n transform: 'translate(-50%, -50%)',\n },\n 'top-left': {\n bottom: 'auto',\n left: '5%',\n position: 'absolute',\n top: '5%',\n transform: 'none',\n },\n}\n\nconst useStyles: Styles = (\n placement: ButtonPlacement,\n) => makeStyles((theme): {} => ({\n root: {\n backgroundColor: 'white',\n borderRadius: theme.spacing(0.75),\n bottom: buttonPlacements[placement].bottom,\n boxShadow: '0 2px 4px 0 rgba(60, 64, 67, 0.3)',\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n height: theme.spacing(6),\n left: buttonPlacements[placement].left,\n paddingBottom: theme.spacing(1.5),\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n paddingTop: theme.spacing(1.5),\n position: buttonPlacements[placement].position,\n top: buttonPlacements[placement].top,\n transform: buttonPlacements[placement].transform,\n zIndex: 5,\n },\n}));\n\nconst FloatingButton = React.forwardRef(({\n children,\n className,\n placement = 'bottom',\n ...buttonProps\n}: FloatingButtonProps, ref: React.Ref) => {\n const classes = useStyles(placement)();\n\n return (\n \n {children}\n \n );\n});\n\nFloatingButton.displayName = 'FloatingButton';\n\nexport default FloatingButton;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport ButtonBase, { ButtonBaseProps } from \"@mui/material/ButtonBase\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport type HoverBorderIconButtonProps = ButtonBaseProps & {\n children: React.ReactNode,\n className?: string,\n onClick?: (event: any) => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n width: 32,\n height: 32,\n backgroundColor: \"#FFFFFF\",\n border: `1px solid ${theme.palette.general.background.disabled}`,\n borderRadius: '50%',\n \"&:hover\": {\n backgroundColor: '#F6F6F6',\n border: `1px solid ${theme.palette.primary.main}`,\n },\n },\n}));\n\nconst HoverBorderIconButton = ({\n children,\n className,\n ...buttonProps\n}: HoverBorderIconButtonProps) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\nexport default HoverBorderIconButton;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport ButtonBase, { ButtonBaseProps } from \"@mui/material/ButtonBase\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport type IconButtonProps = ButtonBaseProps & {\n children: React.ReactNode,\n className?: string,\n disabled?: boolean,\n href?: string,\n onClick?: (event: any) => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n padding: theme.spacing(1),\n boxShadow: '0 2px 4px 0 rgba(60, 64, 67, 0.3)',\n backgroundColor: 'white',\n color: '#505050',\n background: 'white',\n borderColor: 'white',\n width: theme.spacing(5),\n borderRadius: theme.spacing(8),\n '&:hover': {\n color: '#353535',\n boxShadow: '0 2px 4px 0 rgba(60, 64, 67, 0.3)',\n },\n '&:focus': {\n color: '#69737a',\n boxShadow: '0 0 0 1px #80b4fb',\n },\n '&:active': {\n color: '#272727',\n },\n },\n disabled: {\n color: [['#d4d5d6'], '!important'],\n },\n}));\n\nconst IconButton = React.forwardRef(({\n children,\n className,\n disabled,\n ...buttonProps\n}: IconButtonProps, ref: React.Ref) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n});\n\nexport default IconButton;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\nimport {Grid, Typography} from \"@mui/material\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\n\ntype LoadMoreCommentsButtonProps = {\n commentsPath: string,\n tripId: string,\n};\n\nconst useLoadMoreCommentsButtonStyles = makeStyles((theme) => ({\n root: {\n color: '#69737a',\n fontSize: 16,\n fontWeight: 500,\n justifyContent: 'left',\n lineHeight: 1.29,\n whiteSpace: 'nowrap',\n padding: '0 8px 0 8px',\n '&:hover': {\n color: '#69737a',\n },\n },\n loadCommentsButton: {\n [theme.breakpoints.up(\"md\")]: {\n padding: '14px',\n },\n height: '40px',\n '&:hover': {\n backgroundColor: '#F6F6F6',\n },\n borderRadius: '6px',\n },\n}));\n\nconst LoadMoreCommentsButton = ({\n commentsPath,\n tripId,\n}: LoadMoreCommentsButtonProps) => {\n const classes = useLoadMoreCommentsButtonStyles();\n const trackClickedComments = () => {\n trackAnalyticsEvent('Load More Comments Clicked', {\n property: {\n tripObjectId: tripId,\n },\n });\n };\n\n return (\n \n trackClickedComments()}\n >\n \n Load more comments\n \n \n \n );\n}\n\nexport default LoadMoreCommentsButton;\n","import React, { useEffect, useState } from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\n\ntype SelectButtonProps = {\n isSelected?: boolean,\n onClick?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: 2,\n height: theme.spacing(6),\n border: '1px solid',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.spacing(2),\n fontWeight: 600,\n paddingLeft: theme.spacing(2.5),\n paddingRight: theme.spacing(2.5),\n paddingTop: theme.spacing(1.5),\n paddingBottom: theme.spacing(1.5),\n width: '100%',\n marginTop: theme.spacing(2),\n borderRadius: '4px',\n background: ({ selected }) => selected ? '#334351' : 'white',\n borderColor: ({ selected }) => selected ? '#353535' : '#D6DEE4',\n color: ({ selected }) => selected ? 'white' : '#333333',\n },\n}));\n\nconst SelectButton = ({\n isSelected = false,\n onClick = () => {},\n ...buttonProps\n}: SelectButtonProps) => {\n const [selected, setSelected] = useState(isSelected);\n const classes = useStyles({ selected });\n\n const onButtonClick = () => {\n setSelected(!selected);\n onClick();\n };\n\n useEffect(() => {\n setSelected(isSelected);\n }, [isSelected]);\n\n return (\n onButtonClick()}\n className={classes.root}\n >\n {selected ? 'Unselect' : 'Select'}\n \n );\n};\n\nexport default SelectButton;\n","import React, { useContext } from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport clsx from \"clsx\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport buttonColors from \"./textButtonColors\";\nimport { FormContext } from \"../shared/RailsForm\";\n\ntype ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n\nexport type TextButtonProps = {\n children: React.ReactNode,\n className?: string,\n detachedFromForm?: boolean,\n disabled?: boolean,\n href?: string,\n onClick?: () => void,\n type?: 'button' | 'submit' | 'reset',\n variant?: ButtonVariant,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: ({ variant }) => buttonColors[variant].default.fontWeight,\n color: ({ variant }) => buttonColors[variant].default.color,\n '&:hover': {\n color: ({ variant }) => buttonColors[variant].hover.color,\n },\n '&:focus': {\n borderColor: ({ variant }) => buttonColors[variant].focused.border,\n color: ({ variant }) => buttonColors[variant].focused.color,\n border: '1px solid',\n borderRadius: theme.spacing(0.75),\n boxShadow: '0 0 0 1px #80b4fb',\n },\n '&:active': {\n color: ({ variant }) => buttonColors[variant].pressed.color,\n border: 'none',\n boxShadow: 'none',\n },\n },\n disabled: {\n color: ({ variant }) => `${buttonColors[variant].disabled.color} !important`,\n boxShadow: 'none !important',\n },\n}));\n\nconst TextButton = ({\n children,\n className,\n detachedFromForm,\n disabled,\n variant = 'primary',\n ...buttonProps\n}: TextButtonProps) => {\n const classes = useStyles({ variant });\n const formContext = useContext(FormContext);\n const disabledForm = formContext.disabled && !buttonProps.href && !detachedFromForm;\n\n return (\n \n {children}\n \n );\n};\n\nexport default TextButton;\n","type ButtonColorVariant = {\n fill: string,\n border: string,\n color: string,\n};\n\ntype ButtonColor = {\n default: ButtonColorVariant,\n hover: ButtonColorVariant,\n pressed: ButtonColorVariant,\n focused: ButtonColorVariant,\n disabled: ButtonColorVariant,\n};\n\ntype ButtonColors = {\n primary: ButtonColor,\n secondary: ButtonColor,\n tertiary: ButtonColor,\n danger: ButtonColor,\n};\n\nconst buttonColors: ButtonColors = {\n primary: {\n default: {\n fill: \"#545DFC\",\n border: \"#545DFC\",\n color: \"white\",\n },\n hover: {\n fill: \"#3B41B0\",\n border: \"#395db2\",\n color: \"white\",\n },\n pressed: {\n fill: \"#3B41B0\",\n border: \"#3B41B0\",\n color: \"white\",\n },\n focused: {\n fill: \"#545DFC\",\n border: \"#545DFC\",\n color: \"white\",\n },\n disabled: {\n fill: \"#b4b9bc\",\n border: \"#b4b9bc\",\n color: \"white\",\n },\n },\n secondary: {\n default: {\n fill: \"white\",\n border: \"#545DFC\",\n color: \"#545DFC\",\n },\n hover: {\n fill: \"white\",\n border: \"#3B41B0\",\n color: \"#3B41B0\",\n },\n pressed: {\n fill: \"white\",\n border: \"#244599\",\n color: \"#244599\",\n },\n focused: {\n fill: \"white\",\n border: \"#395db2\",\n color: \"#395db2\",\n },\n disabled: {\n fill: \"white\",\n border: \"#98aee5\",\n color: \"#98aee5\",\n },\n },\n tertiary: {\n default: {\n fill: \"white\",\n border: \"#212121\",\n color: \"#212121\",\n },\n hover: {\n fill: \"white\",\n border: \"#353535\",\n color: \"#353535\",\n },\n pressed: {\n fill: \"white\",\n border: \"#272727\",\n color: \"#272727\",\n },\n focused: {\n fill: \"white\",\n border: \"#353535\",\n color: \"#353535\",\n },\n disabled: {\n fill: \"white\",\n border: \"#b4b9bc\",\n color: \"#b4b9bc\",\n },\n },\n danger: {\n default: {\n fill: \"#bd2031\",\n border: \"#bd2031\",\n color: \"white\",\n },\n hover: {\n fill: \"#b64a57\",\n border: \"#b64a57\",\n color: \"white\",\n },\n pressed: {\n fill: \"#8f1724\",\n border: \"#8f1724\",\n color: \"white\",\n },\n focused: {\n fill: \"#b64a57\",\n border: \"#b64a57\",\n color: \"white\",\n },\n disabled: {\n fill: \"#b4b9bc\",\n border: \"#b4b9bc\",\n color: \"white\",\n },\n },\n};\n\nexport default buttonColors;\n","import { theme } from \"../Document\"\n\ntype ChipColorVariant = {\n fill: string,\n border: string,\n color: string,\n};\n\ntype ChipColor = {\n default: ChipColorVariant,\n hover: ChipColorVariant,\n active: ChipColorVariant,\n activeHover: ChipColorVariant,\n disabled: ChipColorVariant,\n};\n\ntype ChipColors = {\n primary: ChipColor,\n success: ChipColor,\n successLighter: ChipColor,\n danger: ChipColor,\n};\n\nconst chipColors: ChipColors = {\n primary: {\n default: {\n fill: \"white\",\n border: \"#555e64\",\n color: \"#505050\",\n },\n hover: {\n fill: \"rgba(85, 94, 100, 0.1)\",\n border: \"#555e64\",\n color: \"#353535\",\n },\n active: {\n fill: \"#3B41B0\",\n border: \"#244599\",\n color: 'white',\n },\n activeHover: {\n fill: \"#262A71\",\n border: \"#262A71\",\n color: \"#FFFFFF\",\n },\n disabled: {\n fill: \"white\",\n border: \"#c0c0c0\",\n color: \"#c0c0c0\",\n },\n },\n success: {\n default: {\n fill: \"white\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n hover: {\n fill: \"rgba(85, 94, 100, 0.1)\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n active: {\n fill: \"rgba(30, 190, 149, 0.15)\",\n border: \"#59c9a5\",\n color: \"#272727\",\n },\n activeHover: {\n fill: \"#55b597\",\n border: \"#55b597\",\n color: \"#272727\",\n },\n disabled: {\n fill: \"white\",\n border: \"#c0c0c0\",\n color: \"#c0c0c0\",\n },\n },\n successLighter: {\n default: {\n fill: \"white\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n hover: {\n fill: \"rgba(85, 94, 100, 0.1)\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n active: {\n fill: \"rgba(30, 190, 149, 0.15)\",\n border: \"#59c9a5\",\n color: theme.palette.text.primary,\n },\n activeHover: {\n fill: \"#55b597\",\n border: \"#55b597\",\n color: \"#272727\",\n },\n disabled: {\n fill: \"white\",\n border: \"#c0c0c0\",\n color: \"#c0c0c0\",\n },\n },\n danger: {\n default: {\n fill: \"white\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n hover: {\n fill: \"rgba(85, 94, 100, 0.1)\",\n border: \"#555e64\",\n color: \"#272727\",\n },\n active: {\n fill: \"#FB5D5D26\",\n border: \"#bd2031\",\n color: \"#272727\",\n },\n activeHover: {\n fill: \"#b22536\",\n border: \"#b22536\",\n color: \"#272727\",\n },\n disabled: {\n fill: \"white\",\n border: \"#c0c0c0\",\n color: \"#c0c0c0\",\n },\n },\n};\n\nexport default chipColors;\n","type ButtonColorVariant = {\n color: string,\n border?: string,\n fontWeight?: number,\n};\n\ntype ButtonColor = {\n default: ButtonColorVariant,\n hover: ButtonColorVariant,\n pressed: ButtonColorVariant,\n focused: ButtonColorVariant,\n disabled: ButtonColorVariant,\n};\n\ntype ButtonColors = {\n primary: ButtonColor,\n secondary: ButtonColor,\n tertiary: ButtonColor,\n link: ButtonColor,\n};\n\nconst textButtonColors: ButtonColors = {\n primary: {\n default: {\n color: \"#545DFC\",\n fontWeight: 600,\n },\n hover: {\n color: \"#3B41B0\",\n },\n pressed: {\n color: \"#244599\",\n },\n focused: {\n color: \"#395db2\",\n border: \"#80b4fb\",\n },\n disabled: {\n color: \"#b4b9bc\",\n },\n },\n secondary: {\n default: {\n color: \"#505050\",\n fontWeight: 600,\n },\n hover: {\n color: \"#353535\",\n },\n pressed: {\n color: \"#272727\",\n },\n focused: {\n color: \"#353535\",\n border: \"#80b4fb\",\n },\n disabled: {\n color: \"#b4b9bc\",\n },\n },\n tertiary: {\n default: {\n color: \"#555E64\",\n fontWeight: 200,\n },\n hover: {\n color: \"#353535\",\n },\n pressed: {\n color: \"#272727\",\n },\n focused: {\n color: \"#353535\",\n border: \"#80b4fb\",\n },\n disabled: {\n color: \"#b4b9bc\",\n },\n },\n link: {\n default: {\n color: \"#5C7993\",\n fontWeight: 600,\n },\n hover: {\n color: \"#353535\",\n },\n pressed: {\n color: \"#272727\",\n },\n focused: {\n color: \"#353535\",\n },\n disabled: {\n color: \"#b4b9bc\",\n },\n },\n};\n\nexport default textButtonColors;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { hocRailsAction } from \"../../Document\";\nimport ProfileFormPage from \"./AccountPage/ProfileForm\";\nimport { UserType } from \"./AccountPage/ProfileForm/BasicInfoFields\";\nimport SiteHeader from \"../../shared/SiteHeader\";\nimport * as routes from '../../../routes';\nimport BackToButton from '../trips/microsite/shared/BackToButton';\n\nconst {\n accountPath,\n tripsPath,\n} = routes;\n\ntype AccountPageProps = {\n errors?: string[],\n fieldFocus: string,\n isPushNotificationsEnabled: boolean,\n isTemporaryUser: boolean,\n isUserLoggedIn: boolean,\n successNotification?: string,\n updateToken?: string,\n user: UserType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerTitle: {\n fontSize: 24,\n fontWeight: 600,\n color: \"#061722\",\n paddingTop: theme.spacing(2),\n },\n eventAvatar: {\n width: 68,\n height: 68,\n },\n}));\n\nconst AccountPage = ({\n errors,\n fieldFocus,\n isPushNotificationsEnabled,\n isTemporaryUser,\n isUserLoggedIn,\n successNotification,\n updateToken,\n user,\n}: AccountPageProps) => {\n const classes = useStyles();\n const { avatarUrl, fullName } = user;\n\n return (\n
\n \n \n \n \n \n \n Account\n \n \n \n
\n );\n};\n\nexport default hocRailsAction(AccountPage);\n","import React, { useState } from \"react\";\nimport {\n Box,\n Divider,\n Grid,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport ProfileFormSectionGrid from \"./ProfileForm/ProfileFormSectionGrid\";\nimport BasicInfoFields from \"./ProfileForm/BasicInfoFields\";\nimport NotificationsFields from \"./ProfileForm/NotificationsFields\";\nimport AvatarSection from \"./ProfileForm/AvatarSection\";\nimport { UserType } from \"./ProfileForm/BasicInfoFields\";\nimport Button from \"../../../buttons/Button\";\nimport DismissibleAlert from \"../../../shared/DismissibleAlert\";\nimport Errors from \"../../../shared/Errors\";\nimport FixedSaveBar from \"../../../shared/FixedSaveBar\";\nimport RailsForm from \"../../../shared/RailsForm\";\nimport DeleteConfirmationDialog from \"../../../shared/DeleteConfirmationDialog\";\nimport { accountPath } from \"../../../../routes\";\n\ntype ProfileFormPageProps = {\n isPushNotificationsEnabled?: boolean,\n isTemporaryUser?: boolean,\n updatePath: string,\n user: UserType,\n errors?: string[],\n fieldFocus?: string,\n successNotification?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n formDivider: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n },\n formContent: {\n padding: theme.spacing(2),\n },\n}));\n\nconst ProfileForm = ({\n errors,\n fieldFocus,\n isPushNotificationsEnabled = false,\n isTemporaryUser = false,\n successNotification,\n updatePath,\n user,\n}: ProfileFormPageProps) => {\n const classes = useStyles();\n const [disabledSmsSettings, setSmsSettingsState] = useState(!user.phoneNumber);\n const [deleteAccountDialogOpen, setDeleteAccountDialogOpen] = useState(false);\n\n return (\n <>\n \n \n \n \n \n \n {successNotification && (\n \n \n <> {successNotification} \n \n \n )}\n {errors && (\n \n \n \n )}\n \n \n \n {!isTemporaryUser && (\n \n \n \n )}\n \n \n \n {!isTemporaryUser && (\n \n \n setDeleteAccountDialogOpen(true)}\n variant=\"tertiary\"\n >\n Delete my account\n \n \n \n )}\n \n \n \n \n setDeleteAccountDialogOpen(false)}\n path={accountPath()}\n title=\"Delete account?\"\n />\n \n );\n};\n\nexport default ProfileForm;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport AvatarUploader from \"./AvatarUploader\";\nimport { UserType } from \"../../AccountPage/ProfileForm/BasicInfoFields\";\n\ntype AvatarSectionProps = {\n user: UserType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n name: {\n fontSize: 20,\n fontWeight: 600,\n color: \"#061722\",\n paddingTop: theme.spacing(2),\n },\n}));\n\nconst AvatarSection = ({\n user,\n}: AvatarSectionProps) => {\n const classes = useStyles();\n const { avatarUrl, defaultAvatarUrl, fullName } = user;\n\n return (\n \n \n \n \n \n \n {fullName}\n \n \n \n );\n};\n\nexport default AvatarSection;\n","import React, { useContext, useEffect, useReducer } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport CameraDropdownButton from \"../../../../shared/ImageUploader/CameraDropdownButton\";\nimport Avatar from \"../../../../avatars/Avatar\";\nimport ImagePicker from \"../../../../shared/ImageUploader/ImagePicker\";\n\ntype AvatarUploaderProps = {\n currentAvatarUrl: string,\n defaultAvatarUrl: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n },\n icon: {\n bottom: 0,\n position: 'absolute',\n right: 0,\n zIndex: 1,\n '& > button': {\n width: 32,\n height: 32,\n },\n },\n}));\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case 'changeAvatar':\n return { ...state, avatarUrl: action.avatarUrl, pickerOpened: false };\n case 'togglePicker':\n return { ...state, pickerOpened: action.pickerOpened };\n default:\n throw new Error();\n };\n};\n\nconst AvatarUploader = ({\n currentAvatarUrl,\n defaultAvatarUrl,\n}: AvatarUploaderProps) => {\n const classes = useStyles();\n const initialState = { avatarUrl: currentAvatarUrl, pickerOpened: false }\n const [{ avatarUrl, pickerOpened }, dispatch] = useReducer(reducer, initialState);\n const { submit } = useContext(FormContext);\n\n const onImageChange = (url) => {\n if (avatarUrl !== url) dispatch({type: 'changeAvatar', avatarUrl: url});\n };\n\n useEffect(() => {\n if (avatarUrl !== currentAvatarUrl) submit();\n }, [avatarUrl]);\n\n return <>\n \n \n dispatch({type: 'changeAvatar', avatarUrl: defaultAvatarUrl})}\n onChoosePhoto={() => dispatch({ type: 'togglePicker', pickerOpened: true })}\n canRestoreDefault={currentAvatarUrl !== defaultAvatarUrl}\n />\n \n dispatch({ type: 'togglePicker', pickerOpened: false })}\n onSuccess={(url) => onImageChange(url)}\n opened={pickerOpened}\n />\n \n ;\n};\n\nexport default AvatarUploader;\n","import React from \"react\";\nimport InputMask from \"react-input-mask\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype BasicInfoFieldsProps = {\n user: UserType,\n fieldFocus?: string,\n setSmsSettingsState: (disabled: boolean) => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n email: {\n fontWeight: 600,\n },\n phoneNumberInstructions: {\n borderSpacing: theme.spacing(2),\n color: theme.palette.general.gray,\n fontSize: 14,\n marginTop: theme.spacing(1),\n },\n}));\n\nconst BasicInfoFields = ({\n fieldFocus,\n user,\n setSmsSettingsState,\n}: BasicInfoFieldsProps) => {\n const classes = useStyles();\n const providerText = user.provider === 'Email' ? \"You're logged in with\" : `You're logged in with your ${user.provider} account`;\n const isPhoneNumberLengthValid = (value) => {\n return value.match(/\\d+/g)?.join(\"\").length === 10;\n };\n\n const setSmsSettingsOnChange = (event) => {\n //Enable SMS Notification check-boxes\n setSmsSettingsState(!isPhoneNumberLengthValid(event.target.value));\n };\n\n return (\n <>\n \n \n {providerText}\n {user.email}.\n \n \n \n \n \n \n \n \n \n \n \n \n \n {() =>\n \n }\n \n \n This lets us notify you about updates to your trips and account via SMS.\n \n \n \n );\n};\n\nexport type UserType = {\n avatarUrl: string,\n defaultAvatarUrl: string,\n email: string,\n firstName: string,\n fullName: string,\n provider: string,\n tripNotificationsEnabled: boolean,\n lastName?: string,\n phoneNumber?: string,\n notificationsSettingId: number,\n notificationsSetting: {\n emailComments: boolean,\n emailTravelerReaction: boolean,\n emailFinalChoices: boolean,\n emailNewTraveler: boolean,\n emailSuggestions: boolean,\n emailVotes: boolean,\n smsComments: boolean,\n smsTravelerReaction: boolean,\n smsFinalChoices: boolean,\n smsNewTraveler: boolean,\n smsSuggestions: boolean,\n smsVotes: boolean,\n },\n};\n\nexport default BasicInfoFields;\n","import React, { useContext } from \"react\";\nimport {\n Grid,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n Stack,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { notificationsMap } from \"./notificationsMap\";\nimport { UserType } from \"./BasicInfoFields\";\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport StyledCheckbox from \"../../../../shared/StyledCheckbox\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport useStateWithPromise from \"../../../../../services/useStateWithPromise\";\nimport Button from \"../../../../buttons/Button\"\nimport TroupeApp from '../../../../../services/TroupeApp';\nimport StyledSwitch from \"../../../../shared/StyledSwitch\";\n\ntype NotificationsFieldsProps = {\n isPushNotificationsEnabled: boolean,\n isTemporaryUser: boolean,\n user: UserType,\n disabledSmsSettings: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n checkbox: {\n padding: 0,\n },\n notificationsSwitchContainer: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n notificationsSwitchLabel: {\n color: \"#061722\",\n fontSize: theme.spacing(2),\n fontWeight: 600,\n },\n tableBody: {\n \"& td\": {\n fontSize: theme.spacing(2),\n padding: theme.spacing(1),\n },\n \"& td:first-child\": {\n paddingLeft: 0,\n },\n },\n tableHead: {\n \"& th\": {\n fontSize: theme.spacing(2),\n padding: theme.spacing(1),\n borderTop: \"1px solid rgba(224, 224, 224, 1)\",\n },\n \"& th:first-child\": {\n fontWeight: 600,\n paddingLeft: 0,\n },\n },\n pushNotificationsCallout: {\n background: '#F4F5FF',\n border: '1px solid #D4D4D4',\n borderRadius: '8px',\n padding: theme.spacing(2),\n },\n enablePushNotificationsButton: {\n width: 'fit-content',\n height: 40,\n },\n}));\n\nconst NotificationsFields = ({\n isPushNotificationsEnabled,\n isTemporaryUser = false,\n user,\n disabledSmsSettings,\n}: NotificationsFieldsProps) => {\n const classes = useStyles();\n const { tripNotificationsEnabled, notificationsSettingId } = user;\n const notification = TroupeApp.Notification\n const shouldShowPushNotifications = isPushNotificationsEnabled && !isTemporaryUser\n const [\n tripNotifications,\n setTripNotifications,\n ] = useStateWithPromise(tripNotificationsEnabled);\n\n const [\n notificationsSetting,\n setNotificationsSetting,\n ] = useStateWithPromise(user.notificationsSetting);\n\n const CheckboxCell = ({ propName, inputName, disabled = false, tooltip = null }) => {\n const checkbox = \n {inputName && (\n \n )}\n (\n setNotificationsSetting({...notificationsSetting, [propName]: event.target.checked })\n .then(() => onFormChange())\n )}\n />\n ;\n\n return tooltip ? {checkbox} : checkbox;\n };\n\n const renderEnableTripNotificationsButton = () => (\n \n \n \n Enable trip notifications\n \n \n \n \n setTripNotifications(event.target.checked).then(() => onFormChange())}\n />\n \n \n );\n\n const renderEnablePushNotificationsInstructions = () => (\n \n \n To receive push notifications from Troupe, you will need to enable them in your iOS Settings.\n Tap “Troupe” and toggle “Allow Notifications” on.\n \n \n );\n\n const renderEnablePushNotificationsCallout = () => (\n \n \n \n Enable push notifications\n \n \n Enable push for real-time updates on your trip. Don’t worry, we’ll group similar notifications for less spam.\n \n {\n notification?.requestPermission()\n }}\n disableRipple\n >\n Enable\n \n \n \n );\n\n const { onFormChange } = useContext(FormContext);\n\n return (\n <>\n {renderEnableTripNotificationsButton()}\n {shouldShowPushNotifications && (\n <>\n {notification?.permission === 'denied' && renderEnablePushNotificationsInstructions()}\n {notification?.permission === 'notDetermined' && renderEnablePushNotificationsCallout()}\n \n )}\n {tripNotifications && (\n \n \n \n \n \n \n Notify me ...\n Email\n SMS\n {shouldShowPushNotifications && notification?.permission === 'authorized' && (\n Push\n )}\n \n \n \n {notificationsMap.map(({label, emailProp, smsProp, emailName, smsName, pushProp, pushName}, index) => (\n \n \n {label}\n \n \n \n \n \n \n \n {shouldShowPushNotifications && notification?.permission === 'authorized' && (\n \n {pushProp && (\n \n )}\n \n )}\n \n ))}\n \n
\n
\n
\n )}\n \n );\n};\n\nexport default NotificationsFields;\n","import React from 'react';\nimport { Grid, GridProps, Typography } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype ProfileFormSectionProps = {\n title: string,\n subtitle?: string,\n children: React.ReactNode,\n} & GridProps;\n\nconst useStyles = makeStyles((theme) => ({\n subtitle: {\n fontSize: theme.spacing(2),\n color: \"#061722\",\n },\n}));\n\nconst ProfileFormSectionGrid = ({\n title,\n subtitle,\n children,\n spacing = 1,\n ...gridProps\n}: ProfileFormSectionProps) => {\n const classes = useStyles();\n return (\n \n \n \n {title}\n \n {subtitle && (\n \n \n {subtitle}\n \n \n )}\n {children}\n \n \n );\n};\n\nexport default ProfileFormSectionGrid;\n","type notificationsMapType = {\n label: string,\n emailProp: string,\n smsProp: string,\n pushProp: string,\n emailName: string,\n smsName: string,\n pushName: string,\n};\n\nexport const notificationsMap: notificationsMapType[] = [\n {\n label: \"When travelers vote\",\n emailProp: \"emailVotes\",\n smsProp: \"smsVotes\",\n pushProp: \"pushVotes\",\n emailName: \"email_votes\",\n smsName: \"sms_votes\",\n pushName: \"push_votes\",\n },\n {\n label: \"When new suggestions are made\",\n emailProp: \"emailSuggestions\",\n smsProp: \"smsSuggestions\",\n pushProp: \"pushSuggestions\",\n emailName: \"email_suggestions\",\n smsName: \"sms_suggestions\",\n pushName: \"push_suggestions\",\n },\n {\n label: \"When travelers comment\",\n emailProp: \"emailComments\",\n smsProp: \"smsComments\",\n pushProp: \"pushComments\",\n emailName: \"email_comments\",\n smsName: \"sms_comments\",\n pushName: \"push_comments\",\n },\n {\n label: \"When travelers add reactions\",\n emailProp: \"emailTravelerReaction\",\n smsProp: \"smsTravelerReaction\",\n pushProp: \"pushTravelerReaction\",\n emailName: \"email_traveler_reaction\",\n smsName: \"sms_traveler_reaction\",\n pushName: \"push_traveler_reaction\",\n },\n {\n label: \"When decisions are finalized\",\n emailProp: \"emailFinalChoices\",\n smsProp: \"smsFinalChoices\",\n pushProp: \"pushFinalChoices\",\n emailName: \"email_final_choices\",\n smsName: \"sms_final_choices\",\n pushName: \"push_final_choices\",\n },\n {\n label: \"When travelers join my trip\",\n emailProp: \"emailNewTraveler\",\n smsProp: \"smsNewTraveler\",\n pushProp: \"pushNewTraveler\",\n emailName: \"email_new_traveler\",\n smsName: \"sms_new_traveler\",\n pushName: \"push_new_traveler\",\n },\n {\n label: \"When planners request suggestions\",\n emailProp: \"emailSuggestingOpened\",\n smsProp: \"smsSuggestingOpened\",\n pushProp: \"pushSuggestingOpened\",\n emailName: \"email_suggesting_opened\",\n smsName: \"sms_suggesting_opened\",\n pushName: \"push_suggesting_opened\",\n },\n {\n label: \"When planners open voting\",\n emailProp: \"emailVotingOpened\",\n smsProp: \"smsVotingOpened\",\n pushProp: \"pushVotingOpened\",\n emailName: \"email_voting_opened\",\n smsName: \"sms_voting_opened\",\n pushName: \"push_voting_opened\",\n },\n {\n label: \"When broadcasts are sent\",\n emailProp: \"emailBroadcastSent\",\n pushProp: \"pushBroadcastSent\",\n smsProp: \"smsBroadcastSent\",\n emailName: \"email_broadcast_sent\",\n pushName: \"push_broadcast_sent\",\n smsName: \"sms_broadcast_sent\",\n },\n {\n label: \"When travelers open or close a poll\",\n emailProp: \"emailPollOpenedClosed\",\n pushProp: \"pushPollOpenedClosed\",\n smsProp: \"smsPollOpenedClosed\",\n emailName: \"email_poll_opened_closed\",\n pushName: \"push_poll_opened_closed\",\n smsName: \"sms_poll_opened_closed\",\n },\n ];\n\nexport default notificationsMap;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n MenuItem,\n OutlinedInput,\n Select,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport {\n ActivityCategoryType,\n ActivityType,\n} from \"../../shared/TripObjectTypes\";\nimport { Theme } from '@mui/material/styles';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport InputWithCharacterCounter from '../../shared/InputWithCharacterCounter';\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\nimport { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport ImageUploader from '../../shared/ImageUploader';\nimport ActivityLocationField from \"./ActivityLocationField\";\nimport * as routes from '../../../routes';\nimport ActivityPriceField from \"./ActivityForm/ActivityPriceField\";\nimport {\n ObjectFit,\n ObjectFitProps,\n} from \"./NewActivityForm\";\nimport CommentField from '../trips/microsite/shared/CommentField'\nimport CategoryLabel from \"../trips/microsite/shared/CategoryLabel\";\n\nexport const categoryList: Array = [\n 'Arts',\n 'Classes',\n 'Cruises',\n 'Entertainment',\n 'Food',\n 'Landmarks',\n 'Nightlife',\n 'Outdoors',\n 'Recreation',\n 'Shopping',\n 'Tours',\n 'Wellness',\n]\n\nconst {\n tripUpdateActivityPath,\n tripActivitiesPath,\n} = routes;\n\ntype ActivityFormProps = {\n activity: ActivityType,\n errors?: string[],\n tripId: string,\n shouldFocusPrice: boolean,\n showCommentField?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n activityImage: {\n marginLeft: theme.spacing(1),\n marginTop: theme.spacing(2),\n '& img':{\n objectFit: ({objectFit}) => objectFit,\n },\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n fontSize: 18,\n fontWeight: 600,\n },\n categorySelect: {\n height: '56px',\n },\n}));\n\nconst ActivityForm = ({\n activity,\n errors,\n tripId,\n shouldFocusPrice = false,\n showCommentField = false,\n}: ActivityFormProps) => {\n const [imageUrl, setImageUrl] = useState(activity.image);\n const [objectFit, setObjectFit] = useState('fill');\n\n const classes = useStyles({objectFit});\n const [location, setLocation] = useStateWithPromise({});\n const fallbackSource = \"/assets/activity_fallback.svg\";\n const [selectedCategory, setSelectedCategory] = useState(activity.category || '')\n const CHARACTER_LIMIT = 100;\n\n const handleLocationChange = (place: Place) => {\n if (place) {\n setLocation({\n location_name: place.name,\n google_place_id: place.id,\n google_place_url: place.url,\n image: place.image,\n latitude: place.latitude,\n longitude: place.longitude,\n });\n };\n };\n\n const handleCategoryClick = ( event ) => {\n if(event.target.textContent === selectedCategory) {\n setSelectedCategory(\"\")\n }\n }\n\n const handleCategoryChange = ( event ) => {\n const category = event.target.value\n if (category) {\n setSelectedCategory(category)\n }\n }\n\n const handleImageUpload = (url) => {\n setImageUrl(url)\n setObjectFit(url === fallbackSource ? 'fill' : 'cover')\n }\n\n return (\n \n \n \n \n \n \n \n \n \n setObjectFit('fill')}\n originalImages={[activity.originalImage]}\n />\n \n \n \n Link\n \n \n \n \n \n Google Maps location\n \n \n \n \n \n Category\n \n }\n inputProps={{ 'aria-label': 'Without label' }}\n renderValue={(selected) => {\n if (!selected || selectedCategory === '') {\n return Select an activity category;\n } else {\n return \n }\n }}\n >\n {categoryList.map((category) => {\n return (\n \n {category}\n \n )\n })}\n \n \n \n { showCommentField &&\n \n }\n \n \n );\n};\n\nexport default hocRailsAction(ActivityForm);\n","import React, { useCallback, useEffect, useReducer, useRef } from \"react\";\nimport axios from \"axios\";\nimport debounce from 'lodash/debounce';\nimport { Box, Grid } from \"@mui/material\";\nimport { makeStyles, withStyles } from \"@mui/styles\";\nimport BaseSkeleton from \"@mui/material/Skeleton\";\nimport Activity from \"../../trips/microsite/ActivitiesPage/Activity\";\nimport { ActivityCategoryType } from \"../../../shared/TripObjectTypes\";\n\ntype AddressParams = {\n address: string,\n google_place_id: string,\n google_place_url: string,\n google_place_image: string,\n};\n\ntype ActivityPreviewProps = {\n onError?: () => void,\n onFetch?: () => void,\n onLoading?: () => void,\n onRemove?: () => void,\n tripId: string,\n link?: string,\n address?: AddressParams,\n category?: ActivityCategoryType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n skeletonCard: {\n border: \"2px solid #e6e7e8\",\n borderRadius: 5,\n \"&:focus\": {\n outline: \"none\",\n },\n padding: theme.spacing(2),\n },\n}));\n\nconst activityReducer = (state, action) => {\n switch(action.type) {\n case 'loadActivity':\n return { activity: null, loading: true, fetched: false };\n case 'showActivity':\n return { activity: action.data, loading: false, fetched: true };\n case 'removeActivity':\n return { activity: null, loading: false, fetched: false }\n default:\n throw new Error();\n }\n};\n\nconst Skeleton = withStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n}))(BaseSkeleton);\n\nconst ActivityPreview = ({\n onError,\n onFetch,\n onLoading,\n onRemove,\n tripId,\n link,\n address,\n category,\n}: ActivityPreviewProps) => {\n const classes = useStyles();\n\n const initialState = {\n activity: null,\n fetched: false,\n loading: false,\n };\n\n const [{ activity, fetched, loading }, dispatch] = useReducer(\n activityReducer,\n initialState,\n );\n\n const isParamsPresent = link ||\n (address && Object.entries(address).length !== 0);\n\n const fetchActivity = (parameters) => {\n dispatch({ type: 'loadActivity' });\n\n axios.get(\n '/api/activities/fetch_activity',\n { params: { trip_id: tripId, location: `POINT(${parameters.longitude} ${parameters.latitude})`, ...parameters } },\n ).then((response) => {\n dispatch({ type: 'showActivity', data: response.data });\n }).catch(() => {\n dispatch({ type: 'showActivity', data: null });\n });\n };\n\n const debouncedFetchActivity = useCallback(\n debounce((parameters) => fetchActivity(parameters), 500),\n [],\n );\n\n const completeUrl = (newUrl) => {\n if (!newUrl || newUrl === \"\" || newUrl.startsWith(\"http\")) {\n return newUrl;\n } else {\n return `https://${newUrl}`;\n }\n };\n\n const missingActivity = !activity;\n const activityIsLoaded = !missingActivity && fetched;\n const activityCannotBeFetched = fetched && missingActivity;\n\n useEffect(() => {\n if (link) {\n debouncedFetchActivity({ link: completeUrl(link), category: category });\n }\n }, [link, category]);\n\n\n useEffect(() => {\n if (address && Object.entries(address).length !== 0) {\n debouncedFetchActivity({ ...address, category: category });\n }\n }, [address?.google_place_id, category]);\n\n useEffect(() => {\n if (!isParamsPresent) {\n dispatch({ type: 'removeActivity' });\n }\n }, [link, address]);\n\n useEffect(() => {\n if (loading) {\n onLoading && onLoading();\n } else if (activityIsLoaded) {\n onFetch && onFetch();\n } else if (activityCannotBeFetched) {\n onError && onError();\n } else {\n onRemove && onRemove();\n }\n }, [loading, activity]);\n\n return (\n <>\n {loading && (\n \n \n \n {[...Array(4)].map((element, index) => (\n \n ))}\n \n \n )}\n {activityIsLoaded && (\n \n \n \n )}\n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default ActivityPreview;\n","import { Grid, TextField, Typography } from \"@mui/material\";\nimport React, {useEffect, useState} from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { MaxPrice } from \"../../../Document\";\n\ntype ActivityPriceFieldProps = {\n price?: string,\n shouldFocusPrice?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst ActivityPriceField = ({\n price,\n shouldFocusPrice,\n }: ActivityPriceFieldProps) => {\n const classes = useStyles();\n const priceText = parseFloat(price).toFixed(2)\n const [activityPrice, setActivityPrice] = useState(priceText);\n\n const checkMaxPrice = (activityPrice) => {\n if (activityPrice < MaxPrice) {\n setActivityPrice(activityPrice)\n }\n }\n\n const scrollToPrice = () => {\n document.getElementById('activity_price')\n .scrollIntoView({ behavior: 'smooth', block: 'start' })\n };\n\n useEffect(() => {\n if (shouldFocusPrice) {\n scrollToPrice();\n };\n }, []);\n\n return(\n \n \n Cost\n \n checkMaxPrice(event.target.value)}\n fullWidth\n inputProps={{\n min: 0,\n step: 0.01,\n max: MaxPrice,\n inputMode: \"decimal\",\n }}\n />\n \n )\n};\n\nexport default ActivityPriceField;\n","import React, { useReducer, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport {\n FormControlLabel,\n Grid,\n IconButton,\n MenuItem,\n OutlinedInput,\n Radio,\n RadioGroup,\n Select,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport { hocRailsAction } from \"../../Document\";\nimport Button from \"../../buttons/Button\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\nimport { track as trackAnalyticsEvent } from '../../../services/analytics';\nimport * as routes from '../../../routes';\nimport ActivityLocationField from \"./ActivityLocationField\";\nimport ActivityPreview from \"./ActivityForm/ActivityPreview\";\nimport CategoryLabel from \"../trips/microsite/shared/CategoryLabel\";\nimport { categoryList } from \"./ActivityForm\";\nimport { ActivityCategoryType } from \"../../shared/TripObjectTypes\";\n\nconst {\n tripActivitiesPath,\n} = routes;\n\ntype RadioButtonProps = {\n label: string,\n value: string,\n};\n\ntype ActivityLinkOrAddressForm = {\n addActivityByOption: string,\n errors: string[],\n tripId: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n addressTypeWrapper: {\n paddingTop: 0,\n },\n title: {\n fontWeight: 600,\n paddingBottom: theme.spacing(1),\n },\n centeredSection: {\n textAlign: 'center',\n },\n noActivityImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n paddingTop: theme.spacing(2),\n },\n emptyStateImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n padding: theme.spacing(4),\n paddingTop: theme.spacing(2),\n },\n multipleLinksButton: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n categorySelect: {\n height: '56px',\n },\n}));\n\nconst RadioButton = ({ label, value }: RadioButtonProps) => (\n }\n label={label}\n />\n);\n\nconst ActivityLinkOrAddressForm = ({\n addActivityByOption,\n errors,\n tripId,\n}: ActivityLinkOrAddressForm) => {\n const [value, setValue] = useStateWithPromise({});\n const [byAddressState, setByAddressState] = useStateWithPromise(addActivityByOption === 'address');\n const [addDetails, setAddDetails] = useStateWithPromise(false);\n const [selectedCategory, setSelectedCategory] = useState(value.category || '')\n const inputRef = useRef(null);\n const classes = useStyles();\n\n const initialState = {\n showFetchErrorMessage: false,\n showActions: false,\n showEmptyState: true,\n };\n\n const reducer = (state, action) => {\n switch(action.type) {\n case 'showFetchErrorMessage':\n return { showFetchErrorMessage: true, showActions: false, showEmptyState: false }\n case 'showActions':\n return { showFetchErrorMessage: false, showActions: true, showEmptyState: false }\n case 'hideAll':\n return { showFetchErrorMessage: false, showActions: false, showEmptyState: false }\n case 'resetForm':\n setValue({}).then(() => inputRef.current.focus());\n return initialState;\n default:\n throw new Error();\n }\n };\n\n const [{ showFetchErrorMessage, showActions, showEmptyState }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n let activityPreviewParams;\n\n if (value.link) {\n activityPreviewParams = { link: value.link, category: selectedCategory };\n } else if (value.location_name) {\n activityPreviewParams = {\n address: pick(value, ['location_name', 'google_place_id', 'google_place_image', 'google_place_url', 'longitude', 'latitude']),\n category: selectedCategory,\n };\n } else {\n activityPreviewParams = {};\n }\n\n const handleAddressChange = (address: Place) => {\n if (address) {\n setValue({\n location_name: address.name,\n google_place_id: address.id,\n google_place_url: address.url,\n google_place_image: address.image,\n latitude: address.latitude,\n longitude: address.longitude,\n });\n } else {\n dispatch({ type: 'resetForm' });\n }\n };\n\n const handleCategoryChange = ( event ) => {\n const category = event.target.value\n if (category) {\n setSelectedCategory(category)\n }\n }\n\n const handleCategoryClick = ( event ) => {\n if(event.target.textContent === selectedCategory) {\n setSelectedCategory(\"\")\n }\n }\n\n const handleLinkChange = ( event ) => {\n if (event.target.value.trim()) {\n setValue({ link: event.target.value.trim(), category: selectedCategory })\n }\n }\n\n const trackAddMethodSwitched = (method) => {\n const newMethod = method === 'address' ? 'Add by Address' : 'Add by URL';\n\n trackAnalyticsEvent('Add Activities Method Switched', {\n category: 'Activities',\n newMethod: newMethod,\n tripId: tripId,\n });\n };\n\n const selectUrlOrAddress = (event) => {\n setByAddressState(event.target.value === 'address').then(() => {\n dispatch({ type: 'resetForm' });\n });\n trackAddMethodSwitched(event.target.value);\n };\n\n const saveButtonLabel = \"Save & add details\";\n\n return (\n \n \n {({ onFormChange, submit }) => (\n \n {!showActions && errors.length > 0 && (\n \n )}\n \n Add activity by...\n \n \n \n \n \n \n {byAddressState ? (\n handleAddressChange(address)}\n ref={inputRef}\n required\n />\n ) : (\n setValue({ link: \"\" }).then(() => onFormChange())}>\n \n \n ),\n }}\n label=\"Link to activity\"\n name=\"activity[link]\"\n onChange={handleLinkChange}\n placeholder=\"Paste your link here\"\n required\n variant=\"outlined\"\n />\n )}\n  \n \n Set activity category\n \n }\n inputProps={{ 'aria-label': 'Select a category' }}\n renderValue={(selected) => {\n if (!selected || selectedCategory === '') {\n return Select an activity category;\n } else {\n return \n }\n }}\n >\n {categoryList.map((category) => {\n return (\n \n {category}\n \n )\n })}\n \n \n dispatch({ type: 'showFetchErrorMessage' })}\n onFetch={() => dispatch({ type: 'showActions' })}\n onLoading={() => dispatch({ type: 'hideAll' })}\n onRemove={() => dispatch({ type: 'resetForm' })}\n resourcePath={tripActivitiesPath(tripId)}\n tripId={tripId}\n { ...activityPreviewParams }\n />\n {showEmptyState && (\n <>\n \n \n \n \n )}\n {showFetchErrorMessage && (\n \n \n \n We can't preview that URL but you can still save if you like.\n \n \n )}\n {showActions && (\n \n setAddDetails(true).then(() => submit())}\n type=\"button\"\n >\n {saveButtonLabel}\n \n \n )}\n {addDetails && (\n \n )}\n \n )}\n \n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(ActivityLinkOrAddressForm);\n","import React, {useContext, useEffect} from \"react\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport GooglePlacesAutocomplete, { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\n\ntype ActivityOption = 'address' | 'null';\n\ntype ActivityLocationFieldProps = {\n addActivityByOption?: ActivityOption,\n currentGooglePlaceId?: string,\n currentGooglePlaceUrl?: string,\n currentImage?: string,\n currentLocationName?: string,\n currentLongitude?: number,\n currentLatitude?: number,\n onChange?: (place: Place) => void,\n required?: boolean,\n};\n\nconst ActivityLocationField = React.forwardRef(({\n addActivityByOption,\n currentGooglePlaceId,\n currentGooglePlaceUrl,\n currentImage,\n currentLocationName,\n currentLongitude,\n currentLatitude,\n onChange,\n required,\n}: ActivityLocationFieldProps, externalInputRef) => {\n const { onFormChange } = useContext(FormContext);\n const [activityLocation, setActivityLocation] = useStateWithPromise({\n id: currentGooglePlaceId,\n image: currentImage,\n latitude: currentLatitude,\n longitude: currentLongitude,\n locationName: currentLocationName,\n url: currentGooglePlaceUrl,\n });\n\n const activityLocationName = activityLocation ? activityLocation.name : '';\n const googlePlaceId = activityLocation ? activityLocation.id : '';\n const googlePlaceUrl = activityLocation ? activityLocation.url : '';\n const googlePlaceLocation = (activityLocation && activityLocation.longitude && activityLocation.latitude) ? `POINT(${activityLocation.longitude} ${activityLocation.latitude})` : '';\n const googlePlaceImage = activityLocation ? activityLocation.image : '';\n\n const handleActivityChange = (value: Place) => {\n setActivityLocation(value).then(() => {\n onFormChange();\n if (onChange) onChange(value);\n });\n };\n\n const scrollToLocation = () => {\n document.getElementById('activity_location')\n .scrollIntoView({ behavior: 'smooth', block: 'start' })\n };\n\n useEffect(() => {\n if (addActivityByOption) {\n scrollToLocation();\n };\n }, []);\n\n return (\n <>\n \n \n \n \n \n handleActivityChange(value)}\n ref={externalInputRef}\n required={required}\n placeholder={\"Search by name or address\"}\n />\n \n );\n});\n\nexport default ActivityLocationField;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n OutlinedInput,\n Select,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { Theme } from '@mui/material/styles';\nimport { makeStyles } from \"@mui/styles\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport InputWithCharacterCounter from \"../../shared/InputWithCharacterCounter\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\nimport ActivityLocationField from \"./ActivityLocationField\";\nimport ActivityPriceField from \"./ActivityForm/ActivityPriceField\";\nimport ImageUploader from '../../shared/ImageUploader';\nimport CommentField from '../trips/microsite/shared/CommentField'\nimport * as routes from '../../../routes';\nimport CategoryLabel from \"../trips/microsite/shared/CategoryLabel\";\nimport { categoryList } from \"./ActivityForm\";\nimport {ActivityCategoryType} from \"../../shared/TripObjectTypes\";\n\nconst {\n tripActivitiesPath,\n} = routes;\n\ntype ActivityOption = 'address' | 'null'\n\ntype NewActivityFormProps = {\n errors: string[],\n tripId: string,\n addActivityByOption?: ActivityOption,\n};\n\nexport type ObjectFit = 'fill' | 'cover';\nexport type ObjectFitProps = {\n objectFit: ObjectFit,\n}\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n categorySelect: {\n height: '56px',\n },\n imageUploaderWrapper: {\n '& img':{\n objectFit: ({objectFit}) => objectFit,\n },\n },\n}));\n\nconst NewActivityForm = ({\n errors,\n tripId,\n addActivityByOption,\n}: NewActivityFormProps) => {\n const [imageUrl, setImageUrl] = useState('');\n const [objectFit, setObjectFit] = useState('fill');\n const classes = useStyles({objectFit});\n const methodValue = addActivityByOption === \"address\" ? \"Google Places\" : \"Custom\"\n const [selectedCategory, setSelectedCategory] = useState('')\n\n const [location, setLocation] = useStateWithPromise({});\n const fallbackSource = \"/assets/activity_fallback.svg\";\n const CHARACTER_LIMIT = 100;\n\n const handleLocationChange = (place: Place) => {\n if (place) {\n setLocation({\n location_name: place.name,\n google_place_id: place.id,\n google_place_url: place.url,\n image: place.image,\n latitude: place.latitude,\n longitude: place.longitude,\n });\n }\n };\n\n const handleImageUpload = (url) => {\n setImageUrl(url)\n setObjectFit(url === fallbackSource ? 'fill' : 'cover')\n }\n\n const handleCategoryClick = ( event ) => {\n if(event.target.textContent === selectedCategory) {\n setSelectedCategory(\"\")\n }\n }\n\n const handleCategoryChange = ( event ) => {\n const category = event.target.value\n if (category) {\n setSelectedCategory(category)\n }\n }\n\n return (\n \n \n {({ onFormChange, submit }) => (\n \n { errors.length > 0 && (\n \n )}\n \n \n Name this activity\n \n \n \n \n setObjectFit('fill')}\n />\n \n \n \n Link\n \n \n \n \n \n Google Maps location\n \n \n \n \n \n Category\n \n }\n className={classes.categorySelect}\n inputProps={{ 'aria-label': 'Select a category' }}\n renderValue={(selected) => {\n if (!selected || selectedCategory === '') {\n return Select an activity category;\n } else {\n return \n }\n }}\n >\n {categoryList.map((category) => {\n return (\n \n {category}\n \n )\n })}\n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default hocRailsAction(NewActivityForm);\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Divider,\n} from \"@mui/material\";\nimport Comments from \"../../shared/Comments\";\nimport { SyncComment } from \"../../shared/TripObjectTypes\";\nimport {\n DateOptionType,\n DestinationType,\n StayType,\n ActivityType,\n ActivityGroupType,\n} from \"../../shared/TripObjectTypes\";\nimport withLayout from \"../trips/microsite/withLayout\";\nimport * as routes from '../../../routes';\nimport DateOptionPage from \"./IndexPage/DateOptionPage\";\nimport DestinationPage, { DestinationGid } from \"./IndexPage/DestinationPage\";\nimport StayPage, { StayGid } from \"./IndexPage/StayPage\";\nimport ActivityPage from \"./IndexPage/ActivityPage\";\nimport PollView from '../trips/microsite/PollsPage/PollView';\nimport { Poll } from '../trips/microsite/PollsPage/PollView/PollTypes';\nimport { TravelerProps } from \"../../shared/TravelersVotingBox\";\nimport BroadcastView, { Broadcast } from \"../trips/microsite/BroadcastsPage/BroadcastView\";\nimport Breadcrumbs from \"../../shared/Breadcrumbs\";\nimport BackToButton from \"../trips/microsite/shared/BackToButton\";\n\nconst {\n tripBroadcastsPath,\n tripDatesPath,\n tripStaysPath,\n tripDestinationsPath,\n tripPollsPath,\n tripActivitiesPath,\n tripActivityGroupPath,\n tripItineraryDatePath,\n tripItineraryDatesPath,\n} = routes;\n\nexport type Commentable =\n| Broadcast\n| Poll\n| DestinationType\n| DateOptionType\n| StayType\n| ActivityType;\n\ntype IndexPageProps = {\n commentable: Commentable,\n comments: Array,\n commentCreationError: string,\n isUserPlanner: boolean,\n isUserLoggedIn: boolean,\n tripId: string,\n travelers: TravelerProps[],\n userHasCompletedVoting: boolean,\n activityGroup?: ActivityGroupType,\n itineraryDateId?: string,\n suggestionsCount: number,\n source?: \"staysVertical\" | \"stayPermapage\" | \"itineraryPermapage\" | \"scheduleList\",\n};\n\nconst useStyles = makeStyles((theme) => ({\n groupBackLink: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n },\n divider: {\n marginTop: theme.spacing(2),\n },\n subHeader: {\n fontSize: '1em',\n },\n}))\n\nconst IndexPage = ({\n commentable,\n comments,\n commentCreationError,\n isUserPlanner,\n isUserLoggedIn,\n tripId,\n activityGroup,\n itineraryDateId,\n suggestionsCount,\n source,\n}: IndexPageProps) => {\n type commentableAttributeReturnType = {\n backLinkText: string,\n tripPath: any,\n commentHeaderText: string,\n };\n\n type commentableReturnType = {\n Stay: commentableAttributeReturnType,\n DateOption: commentableAttributeReturnType,\n Destination: commentableAttributeReturnType,\n Poll: commentableAttributeReturnType,\n Broadcast: commentableAttributeReturnType,\n Activity: commentableAttributeReturnType,\n }\n\n const classes = useStyles();\n\n const commentableType : commentableReturnType = {\n Stay: {\n backLinkText: itineraryDateId ? \"Back to itinerary\" : \"Back to all stays\",\n tripPath: itineraryDateId ? tripItineraryDatePath : tripStaysPath,\n commentHeaderText: \"Here’s what people have to say about the listing.\",\n },\n DateOption: {\n backLinkText: \"Back to all dates\",\n tripPath: tripDatesPath,\n commentHeaderText: \"Here’s what people have to say about the date option above.\",\n },\n Destination: {\n backLinkText: \"Back to all destinations\",\n tripPath: tripDestinationsPath,\n commentHeaderText: \"Here’s what people are saying about this destination.\",\n },\n Poll: {\n backLinkText: \"Back to polls\",\n tripPath: tripPollsPath,\n commentHeaderText: \"Here’s what people are saying about this poll.\",\n },\n Broadcast: {\n backLinkText: \"Back to broadcasts\",\n tripPath: tripBroadcastsPath,\n commentHeaderText: \"Here’s what people are saying about this broadcast.\",\n },\n Activity: {\n backLinkText: itineraryDateId ? \"Back to itinerary\" : \"Back to all activities\",\n tripPath: itineraryDateId ? tripItineraryDatePath : tripActivitiesPath,\n commentHeaderText: \"Here’s what people are saying about this activity.\",\n },\n }\n\n const { backLinkText, tripPath, commentHeaderText } = commentableType[commentable.type];\n\n let breadcrumbs;\n if (activityGroup) {\n const activityGroupTitle = () => {\n const title = activityGroup.title\n return title.length > 25 ? activityGroup.title.substring(0, 25) + '…' : activityGroup.title\n }\n breadcrumbs = [\n {\n label: 'All activities',\n href: tripActivitiesPath(tripId),\n },\n {\n label: activityGroupTitle(),\n href: tripActivityGroupPath(tripId, activityGroup.id),\n },\n ];\n }\n\n return <>\n {activityGroup &&\n \n \n \n }\n {!activityGroup && !itineraryDateId &&\n \n \n \n }\n {itineraryDateId &&\n \n \n \n }\n {commentable.type === 'Stay' && (\n \n )}\n {commentable.type === 'DateOption' && (\n \n )}\n {commentable.type === 'Destination' && (\n \n )}\n {commentable.type === 'Poll' && (\n \n )}\n {commentable.type === 'Broadcast' && (\n \n )}\n {commentable.type === 'Activity' && (\n \n )}\n \n \n ;\n}\n\n// noinspection JSUnusedGlobalSymbols\nexport default withLayout(IndexPage);\n","import React from \"react\";\nimport Activity from \"../../trips/microsite/ActivitiesPage/Activity\";\nimport {\n ActivityType,\n} from \"../../../shared/TripObjectTypes\";\n\ntype ActivityPageProps = {\n activity: ActivityType,\n isPlanner: boolean,\n};\n\nconst ActivityPage = ({\n activity,\n isPlanner,\n}: ActivityPageProps) => {\n\n return (\n \n );\n};\n\nexport default ActivityPage;\n","import React from \"react\";\nimport { DateOptionType } from \"../../../shared/TripObjectTypes\";\nimport DateOption from \"../../../shared/DateOption\";\nimport getMostPopularDateOptions from \"../../../../services/getMostPopularDateOptions\";\n\ntype DateOptionPageProps = {\n dateOption: DateOptionType,\n};\n\nconst DateOptionPage = ({ dateOption }: DateOptionPageProps) => {\n const mostPopularOptionsIds = getMostPopularDateOptions(Array(dateOption)).map(option => option.id)\n\n return (\n <>\n \n \n );\n};\n\nexport default DateOptionPage;\n","import React, {useContext} from \"react\";\nimport Destination from \"../../trips/microsite/DestinationPage/Destination\";\nimport { DestinationType } from \"../../../shared/TripObjectTypes\";\nimport { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport { useQuery } from \"@apollo/client\";\nimport SnackbarNotification, {SnackbarNotificationProp} from \"../../../shared/SnackbarNotification\";\nimport {TripSiteContext} from \"../../../Document\";\nimport SkeletonList from \"../../../shared/SkeletonPage/SkeletonList\";\nimport * as Sentry from \"@sentry/browser\";\nimport VotingProgressDialog from \"../../../shared/VotingProgressDialog\";\nimport { DESTINATIONS_LIST_QUERY } from \"../../../../graphql/queries/destinations\";\nimport { RANKING_SIZE } from \"../../../../services/RankingSystem\";\n\nexport interface DestinationGid {\n gid: string,\n}\n\ntype DestinationPageProps = {\n destination: DestinationGid,\n isPlanner: boolean,\n suggestionsCount,\n};\n\nconst Snackbar = (props: Partial) => (\n \n);\n\nconst DestinationPage = ({\n isPlanner,\n destination: { gid },\n suggestionsCount,\n}: DestinationPageProps) => {\n const { tripGid } = useContext(TripSiteContext)\n const { data, loading, error } = useQuery(\n DESTINATIONS_LIST_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n );\n const [displayDialog, setDisplayDialog] = React.useState(false);\n\n if (loading) return \n\n if (error) {\n Sentry.captureException(error)\n return <>\n \n \n \n }\n\n const destinations: DestinationType[] = data.destinations;\n const votedCount = destinations.reduce((count, destination) => (destination.currentUserRanking !== null ? count + 1 : count), 0);\n const voteCompleted = votedCount === destinations.length || votedCount === RANKING_SIZE;\n const destination = destinations.find(destination => destination.id === gid);\n\n const travelers: TravelerProps[] = data.travelers.map(traveler => ({\n ...traveler,\n missingVotesCount: traveler.destinationMissingVotesCount,\n name: traveler.displayName,\n }))\n\n return (\n <>\n setDisplayDialog(true)}\n suggestionsCount={suggestionsCount}\n showVotingProgressBanner\n />\n setDisplayDialog(false)}\n totalVotes={destinations.length}\n votedCount={votedCount}\n vertical=\"Destinations\"\n voteCompleted={voteCompleted}\n />\n \n );\n};\n\nexport default DestinationPage;\n","import React from \"react\";\nimport { Grid, Typography, Divider, Box } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport RichText from \"../../../shared/RichText\";\nimport moment from \"moment/moment\";\nimport { StayBookingType } from \"../../../shared/TripObjectTypes\";\nimport Avatar from \"../../../avatars/Avatar\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport StayBookingActions from \"../../stays/StayBookingActions\";\nimport { NumericFormat } from 'react-number-format';\n\nexport type StayBookingDetailsProps = {\n booking: StayBookingType,\n stayId?: string,\n tripId?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginLeft: `-${theme.spacing(1)} !important`,\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n [theme.breakpoints.down(\"md\")]: {\n fontSize: 20,\n },\n },\n note: {\n fontSize: 16,\n paddingBottom: theme.spacing(2),\n },\n confirmationCode: {\n color: '#272727',\n fontWeight: 600,\n fontSize: '14px',\n textTransform: 'uppercase',\n },\n confirmationCodeText: {\n fontFamily: 'Poppins',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '16px',\n lineHeight: '24px',\n },\n blueTitle: {\n fontFamily: 'Poppins',\n color:' #545DFC',\n fontWeight: 600,\n fontSize: '14px',\n textTransform: 'uppercase',\n },\n headerText: {\n fontWeight: 400,\n fontSize: '20px',\n fontFamily: 'Poppins',\n color: '#272727',\n },\n subText: {\n fontWeight: 400,\n fontSize: '14px',\n color: theme.palette.general.gray,\n },\n bookText: {\n fontWeight: 400,\n fontSize: '16px',\n margin: \"auto 0\",\n },\n greenCheck: {\n top: '4px',\n position: 'relative',\n marginRight: '8px',\n color: '#1EBE95',\n },\n}));\n\nconst StayBookingDetails = ({\n booking,\n stayId,\n tripId,\n}: StayBookingDetailsProps) => {\n const classes = useStyles();\n const formatDate = (date) => moment(date, \"YYYY-MM-DD\").format(\"ddd, MMM Do\");\n const formatTime = (time) => moment(time, \"YYYY-MM-DD HH:mm:ss\").format(\"h:mm A\");\n const showRefundable = [\"refundable\", \"non_refundable\"].includes(booking.refundability);\n const showCostandRefundable = booking.totalCost || showRefundable\n const refundability = {\n 'non_refundable': 'Non-refundable',\n 'refundable': `Refundable until ${moment((booking?.refundableUntil), \"YYYY-MM-DD\").format(\"MMM Do\")}`,\n }\n\n return(\n \n \n \n {'Booking details'}\n \n \n \n \n \n \n \n Confirmation Code\n \n \n {booking.confirmationCode}\n \n \n \n \n \n Check-in\n \n \n {formatDate(booking.checkInDate)}\n \n {booking.checkInTime && (\n \n From {formatTime(booking.checkInTime)}\n \n )}\n \n \n \n \n Check-out\n \n \n {formatDate(booking.checkOutDate)}\n \n {booking.checkOutTime && (\n \n Until {formatTime(booking.checkOutTime)}\n \n )}\n \n \n {showCostandRefundable && (\n \n {booking.totalCost && (\n \n \n Total\n \n \n \n )}\n {showRefundable && (\n \n {refundability[booking.refundability]}\n \n )}\n \n )}\n {booking.notes && (\n \n \n \n )}\n \n \n \n \n \n Booked by {booking.author.displayName}\n \n \n \n )\n}\n\nexport default StayBookingDetails;\n","import React, { useContext } from \"react\";\nimport Stack from \"@mui/material/Stack\";\nimport { useQuery } from \"@apollo/client\";\nimport { StayType } from \"../../../shared/TripObjectTypes\";\nimport Divider from \"../../../shared/Divider\";\nimport StayPermapageCard from \"../../trips/microsite/HousingPage/StayPermapageCard\";\nimport SkeletonList from '../../../shared/SkeletonPage/SkeletonList';\nimport { TripSiteContext } from '../../../Document'\nimport SnackbarNotification, { SnackbarNotificationProp } from '../../../shared/SnackbarNotification';\nimport * as Sentry from \"@sentry/browser\";\nimport { STAY_QUERY } from \"../../../../graphql/queries/stays\";\nimport StayBookingDetails from \"./StayBookingDetails\";\n\nexport interface StayGid {\n gid: string,\n}\n\ntype StayPageProps = {\n isPlanner: boolean,\n stay: StayGid,\n suggestionsCount,\n source?: \"staysVertical\" | \"stayPermapage\" | \"itineraryPermapage\" | \"scheduleList\",\n};\n\nconst Snackbar = (props: Partial) => (\n \n);\n\nconst StayPage = ({\n stay: { gid },\n}: StayPageProps) => {\n const { tripId } = useContext(TripSiteContext);\n\n const { data, loading, error } = useQuery(\n STAY_QUERY, {\n variables: {\n stayId: gid,\n },\n },\n );\n\n if (loading) return \n\n if (error) {\n Sentry.captureException(error)\n return <>\n \n \n \n }\n\n const stay: StayType = data.node;\n\n return (\n \n \n {stay.stayBookings?.length > 0 &&\n <>\n \n \n \n }\n \n );\n};\n\nexport default StayPage;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype VotingSectionProps = {\n header: string,\n subHeader: string,\n sentimentButtons: any,\n};\n\nconst useStyles = makeStyles((theme) => ({\n divider: {\n marginTop: theme.spacing(2),\n },\n subHeader: {\n fontSize: '1em',\n },\n}));\n\nconst VotingSection = ({\n header,\n subHeader,\n sentimentButtons,\n}: VotingSectionProps) => {\n const classes = useStyles();\n\n return (\n \n \n \n {header}\n \n \n {subHeader}\n \n \n \n {sentimentButtons}\n \n \n );\n};\n\nexport default VotingSection;\n","import React, { useEffect, useReducer} from \"react\";\nimport ModalForm from '../../shared/ModalForm'\nimport { hocRailsAction } from \"../../Document\";\nimport {\n Divider,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport * as routes from \"../../../routes\";\nimport ArrowForwardIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport pluralize from 'pluralize';\nimport { makeStyles } from \"@mui/styles\";\nimport VotingDatesButtons, { Sentiments } from \"./VotingDatesForm/VotingDatesButtons\";\nimport VotingCount from \"./VotingDatesForm/VotingCount\";\nimport VotingProgressBar from \"./VotingDatesForm/VotingProgressBar\";\nimport { track as trackAnalyticsEvent } from \"../../../services/analytics\";\nimport InputWithCharacterCounter from \"../../shared/InputWithCharacterCounter\";\n\nconst {\n tripDatesPath,\n tripVotingPath,\n} = routes;\n\ntype DateOptions = Array<{\n currentUserVote: Sentiments,\n endDate: string,\n endDateWeekday: string,\n id: string,\n startDate: string,\n startDateWeekday: string,\n }>;\n\ntype VotingDatesForm = {\n trip: {\n id: string,\n name: string,\n },\n dateOptions: DateOptions,\n};\n\ntype Comments = {\n body: string,\n opened: boolean,\n commentDisabled: boolean,\n};\n\ntype VotesCount = {\n yes: number,\n maybe: number,\n no: number,\n missing: number,\n};\n\ntype VotesState = {\n votesCount: VotesCount,\n previousVotes: VotesCount,\n datesComments: Comments[],\n};\n\ntype ReducerAction = {\n type: 'initialState' | 'voteChanged' | 'toggleCommentsFieldVisibility' | 'commentsFieldChanged' | 'updateSentimentCount',\n body?: string,\n commentDisabled?: boolean,\n dateOptions?: DateOptions,\n index?: number,\n newSentiment?: Sentiments,\n oldSentiment?: Sentiments,\n};\n\nconst reducer = (state: VotesState, action: ReducerAction) => {\n const datesArray = Array.from(state.datesComments);\n switch (action.type) {\n case \"initialState\":\n const votes = { yes: 0, maybe: 0, no: 0, missing: 0 };\n action.dateOptions.map((dateOption) => {\n votes[dateOption.currentUserVote] = votes[dateOption.currentUserVote] + 1;\n });\n return { ...state, votesCount: votes, previousVotes: votes };\n case \"voteChanged\":\n datesArray[action.index] = {\n ...datesArray[action.index],\n commentDisabled: action.commentDisabled,\n opened: action.commentDisabled ? !action.commentDisabled : datesArray[action.index].opened,\n };\n return { ...state, datesComments: datesArray };\n case \"toggleCommentsFieldVisibility\":\n datesArray[action.index].opened = !datesArray[action.index].opened;\n return { ...state, datesComments: datesArray };\n case \"commentsFieldChanged\":\n datesArray[action.index] = {\n ...datesArray[action.index],\n body: action.body,\n commentDisabled: action.body != '',\n };\n return { ...state, datesComments: datesArray };\n case \"updateSentimentCount\":\n const newVotes = {\n ...state.votesCount,\n [action.oldSentiment]: state.votesCount[action.oldSentiment] - 1,\n [action.newSentiment]: state.votesCount[action.newSentiment] + 1,\n };\n return { ...state, votesCount: newVotes};\n };\n};\n\nconst useStyles = makeStyles(theme => ({\n arrow: {\n verticalAlign: 'bottom',\n },\n commentField: {\n marginTop: theme.spacing(2),\n '& input': {\n height: '14px',\n },\n },\n date: {\n fontSize: 18,\n },\n dateOptionGrid: {\n maxWidth: 175,\n },\n dateOptionSegment: {\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n divider: {\n borderColor: \"#c1c1c1\",\n width: \"inherit\",\n paddingTop: theme.spacing(3),\n },\n votingCount: {\n paddingTop: theme.spacing(2),\n },\n votingGridContainer: {\n paddingTop: theme.spacing(3),\n },\n weekday: {\n fontSize: 15,\n fontWeight: 600,\n },\n}));\n\nconst VotingDatesForm = ({\n trip,\n dateOptions,\n}: VotingDatesForm) => {\n const classes = useStyles();\n const datesCommentsInitialState = () => {\n let initialArray = Array(dateOptions.length);\n initialArray.fill({ opened: false, body: '', commentDisabled: null });\n return initialArray;\n };\n const initialVotesState = { yes: 0, maybe: 0, no: 0, missing: dateOptions.length };\n const initialState: VotesState = {\n datesComments: datesCommentsInitialState(),\n votesCount: initialVotesState,\n previousVotes: initialVotesState,\n };\n const [{ datesComments, previousVotes, votesCount }, dispatch] = useReducer(reducer, initialState);\n const sameAsPreviousVotes = (JSON.stringify(previousVotes) === JSON.stringify(votesCount));\n\n useEffect(() => {\n dispatch({ type: 'initialState', dateOptions: dateOptions })\n }, [dateOptions]);\n\n const currentVotes = () => {\n return votesCount.yes + votesCount.maybe + votesCount.no;\n };\n\n const allDatesVoted = () => {\n return votesCount.missing === 0;\n };\n\n const disableSubmitButton = () => {\n if (sameAsPreviousVotes && !datesComments.some((element) => element.body !== '')) {\n return true;\n };\n\n return !allDatesVoted();\n };\n\n const onFormSubmit = (event) => {\n const previouslyVoted = previousVotes.missing !== dateOptions.length;\n\n if (!sameAsPreviousVotes && previouslyVoted) {\n trackAnalyticsEvent('Date Vote Changed', {\n category: 'Dates',\n previousVotes: previousVotes,\n newVotes: votesCount,\n tripId: trip.id,\n });\n };\n };\n\n return (\n onFormSubmit(event)}\n title={`Vote on ${dateOptions.length} ${pluralize('date', dateOptions.length)} for \"${trip.name}\"`}\n disabledSubmit={disableSubmitButton()}\n saveBarTopContent={\n \n }\n >\n \n \n \n For each date, select ‘Yes’, ‘Maybe’ or ‘No’ depending on your availability.\n \n \n \n \n \n \n {dateOptions.map((dateOption, index) => (\n <>\n \n \n \n {dateOption.startDateWeekday}\n {dateOption.startDate}\n \n \n \n \n \n {dateOption.endDateWeekday}\n {dateOption.endDate}\n \n \n \n dispatch({ type: 'toggleCommentsFieldVisibility', index: index })}\n onVoteChange={(commentDisabled) => dispatch({ type: 'voteChanged', index: index, commentDisabled: commentDisabled })}\n updateSentimentCount={(oldSentiment, newSentiment) =>\n dispatch({type: 'updateSentimentCount', oldSentiment: oldSentiment, newSentiment: newSentiment})}\n />\n \n {datesComments[index].opened &&\n dispatch(\n {\n type: 'commentsFieldChanged',\n body: event.target.value,\n index: index,\n }\n )}\n placeholder=\"Add a comment\"\n withBorder\n />\n }\n \n \n \n ))}\n \n \n \n );\n};\n\nexport default hocRailsAction(VotingDatesForm);\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n} from '@mui/material';\n\ntype VotesCount = {\n yes: number,\n maybe: number,\n no: number,\n};\n\nexport type VotingCountProps = {\n votesCount: VotesCount,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n border: '1px solid #C1C1C1',\n borderRadius: '5px',\n padding: theme.spacing(2),\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '22px',\n },\n yourVotes: {\n fontSize: 18,\n paddingRight: theme.spacing(1),\n },\n count: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n '& img': {\n paddingRight: 12,\n verticalAlign: 'top',\n },\n },\n}));\n\nconst VotesCount = ({ sentiment, count, icon }) => {\n const classes = useStyles();\n\n return (\n \n \n {count}\n \n );\n};\n\nconst VotingCount = ({\n votesCount,\n}: VotingCountProps) => {\n const classes = useStyles();\n\n return (\n \n \n Your votes\n \n \n \n \n \n \n \n );\n};\n\nexport default VotingCount;\n","import React, { useState, useEffect } from \"react\";\nimport { ButtonBase, Grid } from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport IconButton from \"../../../buttons/IconButton\";\nimport { ChatBubbleOutline } from \"@mui/icons-material\";\n\nexport type Sentiments = 'yes' | 'no' | 'maybe' | 'missing';\n\ntype VotingDatesButtons = {\n currentUserVote: Sentiments,\n dateOptionId: string,\n isCommentDisabled: boolean,\n onCommentButtonClick: () => void,\n onVoteChange: (votePresent?: boolean) => void,\n updateSentimentCount: (oldSentiment: Sentiments, newSentiment: Sentiments) => void,\n};\n\nconst useStyles = makeStyles(theme => ({\n commentsButton: {\n border: `1px solid ${theme.palette.general.gray}`,\n borderRadius: 30,\n height: 28.7,\n width: 28.8,\n boxShadow: 'none',\n '&:hover':{\n boxShadow: 'none',\n },\n marginTop: 0.5,\n },\n commentsIcon: {\n height: 17.5,\n width: 17.5,\n color: theme.palette.general.gray,\n },\n disabled: {\n opacity: 0.35,\n },\n illustrationsContainer: {\n minWidth: 150,\n paddingTop: 5,\n },\n img: {\n width: 28,\n verticalAlign: 'super',\n },\n}));\n\nconst VotingDatesButtons = ({\n currentUserVote,\n dateOptionId,\n isCommentDisabled,\n onCommentButtonClick,\n onVoteChange,\n updateSentimentCount,\n}: VotingDatesButtons) => {\n const classes = useStyles();\n const [voteValue, setVoteValue] = useState(currentUserVote || 'missing');\n\n const sentimentButton = (sentiment) => {\n const capitalizedSentiment = sentiment.charAt(0).toUpperCase() + sentiment.slice(1);\n\n return (\n \n setSentiment(sentiment)}\n >\n \n \n \n );\n };\n\n const setSentiment = (value) => {\n if (voteValue === value) {\n updateSentimentCount(voteValue, 'missing');\n setVoteValue('missing');\n } else {\n updateSentimentCount(voteValue, value);\n setVoteValue(value);\n }\n };\n\n const commentsDisabled = (!!!voteValue && isCommentDisabled) || (isCommentDisabled);\n\n useEffect(() => {\n onVoteChange(voteValue === 'missing')\n }, [voteValue]);\n\n return (\n \n \n {sentimentButton('yes')}\n {sentimentButton('maybe')}\n {sentimentButton('no')}\n onCommentButtonClick()}\n disabled={commentsDisabled}\n >\n \n \n \n );\n};\n\nexport default VotingDatesButtons;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n Grid,\n LinearProgress,\n Typography,\n} from '@mui/material';\n\nexport type VotingProgressBarProps = {\n currentVotes: number,\n deadline?: string,\n totalVotes: number,\n};\n\ntype StyleProps = {\n value: number,\n};\n\nconst useStyles = makeStyles((theme) => ({\n bar: {\n borderRadius: 14,\n background: ({ value }) => `linear-gradient(270deg, #545DFC 0%, #509CFF ${value}%)`,\n },\n colorPrimary: {\n backgroundColor: '#DCDCDC',\n },\n deadline: {\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 400,\n lineHeight: '24px',\n '& span': {\n fontWeight: 600,\n },\n },\n root: {\n borderRadius: 14,\n height: 8,\n },\n voted: {\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n },\n}));\n\nconst VotingProgressBar = ({\n currentVotes,\n deadline,\n totalVotes,\n}: VotingProgressBarProps) => {\n const value = currentVotes * 100 / totalVotes;\n const classes = useStyles({ value: value });\n\n return (\n \n \n \n Voted for {currentVotes} of {totalVotes}\n \n {deadline && (\n \n \n Voting closes {deadline}\n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default VotingProgressBar;\n","import React, { useContext } from \"react\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport GooglePlacesAutocomplete, { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\n\ntype DestinationFieldProps = {\n currentDestination?: string,\n currentGooglePlaceId?: string,\n currentGooglePlaceUrl?: string,\n currentImage?: string,\n currentLongitude?: number,\n currentLatitude?: number,\n onChange?: (place: Place) => void,\n required?: boolean,\n};\n\nconst DestinationField = React.forwardRef(({\n currentDestination,\n currentGooglePlaceId,\n currentGooglePlaceUrl,\n currentImage,\n currentLongitude,\n currentLatitude,\n onChange,\n required,\n}: DestinationFieldProps, externalInputRef) => {\n const { onFormChange } = useContext(FormContext);\n const [destination, setDestination] = useStateWithPromise({\n id: currentGooglePlaceId,\n image: currentImage,\n latitude: currentLatitude,\n longitude: currentLongitude,\n name: currentDestination,\n url: currentGooglePlaceUrl,\n });\n\n const destinationName = destination ? destination.name : '';\n const googlePlaceId = destination ? destination.id : '';\n const googlePlaceUrl = destination ? destination.url : '';\n const googlePlaceLocation = (destination && destination.longitude && destination.latitude) ? `POINT(${destination.longitude} ${destination.latitude})` : '';\n const googlePlaceImage = destination ? destination.image : '';\n\n const handleDestinationChange = (value: Place) => {\n setDestination(value).then(() => {\n onFormChange();\n if (onChange) onChange(value);\n });\n };\n\n return (\n <>\n \n \n \n \n \n handleDestinationChange(value)}\n ref={externalInputRef}\n required={required}\n />\n \n );\n});\n\nexport default DestinationField;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { DestinationType } from \"../../shared/TripObjectTypes\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport ImageUploader from '../../shared/ImageUploader';\nimport * as routes from '../../../routes';\n\nconst {\n tripDestinationPath,\n tripDestinationsPath,\n} = routes;\n\ntype DestinationFormProps = {\n destination: DestinationType,\n errors?: string[],\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n destinationImage: {\n marginLeft: theme.spacing(1),\n marginTop: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n fontSize: 18,\n fontWeight: 600,\n },\n}));\n\nconst DestinationForm = ({\n destination,\n errors,\n tripId,\n}: DestinationFormProps) => {\n const classes = useStyles();\n const [imageUrl, setImageUrl] = useState(destination.image);\n const fallbackSource = \"/assets/destination_fallback.svg\";\n\n return (\n \n \n \n \n \n \n \n Where to:\n \n \n \n \n \n \n setImageUrl(url)}\n originalImages={[destination.originalImage]}\n />\n \n {!destination && (\n \n \n \n )}\n \n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(DestinationForm);\n","import React, { useCallback, useEffect, useReducer } from \"react\";\nimport axios from \"axios\";\nimport debounce from 'lodash/debounce';\nimport { Box, Grid } from \"@mui/material\";\nimport { makeStyles, withStyles } from \"@mui/styles\";\nimport BaseSkeleton from \"@mui/material/Skeleton\";\nimport ImageUploader from '../../shared/ImageUploader';\n\ntype LocationParams = {\n location: string,\n google_place_id: string,\n google_place_url: string,\n google_place_image: string,\n};\n\ntype DestinationPreviewProps = {\n onError?: () => void,\n onFetch?: () => void,\n onLoading?: () => void,\n onRemove?: () => void,\n resourcePath: string,\n tripId: string,\n location?: LocationParams,\n};\n\nconst useStyles = makeStyles((theme) => ({\n skeletonCard: {\n border: \"2px solid #e6e7e8\",\n borderRadius: 5,\n \"&:focus\": {\n outline: \"none\",\n },\n padding: theme.spacing(2),\n },\n destinationPreview: {\n paddingLeft: theme.spacing(1),\n },\n}));\n\nconst reducer = (state, action) => {\n switch(action.type) {\n case 'loadDestination':\n return { destination: null, loading: true, fetched: false };\n case 'showDestination':\n return { destination: action.data, loading: false, fetched: true };\n case 'removeDestination':\n return { destination: null, loading: false, fetched: false }\n case 'changeImage':\n return Object.assign({}, state, { imageUrl: action.url });\n default:\n throw new Error();\n }\n};\n\nconst Skeleton = withStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n}))(BaseSkeleton);\n\nconst DestinationPreview = ({\n onError,\n onFetch,\n onLoading,\n onRemove,\n resourcePath,\n tripId,\n location,\n}: DestinationPreviewProps) => {\n const classes = useStyles();\n\n const initialState = {\n destination: null,\n fetched: false,\n loading: false,\n };\n\n const [{ destination, fetched, loading }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n const isParamsPresent = (location && Object.entries(location).length !== 0);\n\n const fetchDestination = (parameters) => {\n dispatch({ type: 'loadDestination' });\n\n axios.get(\n '/api/destinations/fetch_destination',\n { params: { trip_id: tripId, ...parameters } },\n ).then((response) => {\n dispatch({ type: 'showDestination', data: response.data });\n }).catch(() => {\n dispatch({ type: 'showDestination', data: null });\n });\n };\n\n const debouncedFetchDestination = useCallback(\n debounce((parameters) => fetchDestination(parameters), 500),\n [],\n );\n\n const missingDestination = !destination;\n const destinationIsLoaded = !missingDestination && fetched;\n const destinationCannotBeFetched = fetched && missingDestination;\n const fallbackSource = \"/assets/destination_fallback.svg\";\n\n useEffect(() => {\n if (location && Object.entries(location).length !== 0) {\n debouncedFetchDestination({ ...location });\n }\n }, [location?.google_place_id]);\n\n useEffect(() => {\n if (!isParamsPresent) {\n dispatch({ type: 'removeDestination' });\n }\n }, [location]);\n\n useEffect(() => {\n if (loading) {\n onLoading && onLoading();\n } else if (destinationIsLoaded) {\n onFetch && onFetch();\n } else if (destinationCannotBeFetched) {\n onError && onError();\n } else {\n onRemove && onRemove();\n }\n }, [loading, destination]);\n\n return (\n <>\n {loading && (\n \n \n \n {[...Array(4)].map((element, index) => (\n \n ))}\n \n \n )}\n {destinationIsLoaded && (\n \n dispatch({ type: 'changeImage', url })}\n originalImages={[destination.originalImage]}\n />\n \n )}\n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default DestinationPreview;\n","import React from 'react';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { Link } from '@mui/material';\nimport { makeStyles } from \"@mui/styles\";\nimport SiteHeader from \"../../shared/SiteHeader\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport { hocRailsAction } from \"../../Document\";\nimport * as routes from '../../../routes';\n\nconst { tripsPath } = routes;\n\ntype ErrorMessage = {\n title: string,\n subtitle: string,\n body: React.FC,\n status: string,\n};\n\ntype ErrorMessagesDictionary = {\n invalidAuthenticityToken: ErrorMessage,\n 404: ErrorMessage,\n default: ErrorMessage,\n};\n\nconst MyTripsLink: React.FC = ({ children }) => (\n {children}\n);\n\nconst errorMessages: ErrorMessagesDictionary = {\n invalidAuthenticityToken: {\n title: 'Oops! 🐥',\n subtitle: 'Something went wrong while trying to process your request',\n body: function InvalidAuthenticityTokenErrorBody() {\n return <>\n Try going back to the previous page, hitting refresh, and{' '}\n trying again. If you're still having trouble, try starting{' '}\n fresh from the My Trips page.\n ;\n },\n status: 'Invalid authenticity token',\n },\n 404: {\n title: 'Oops! 🐥',\n subtitle: 'The page you’re looking for has moved or disappeared into the abyss.',\n body: function NotFoundErrorBody() {\n return <>\n Check to make sure you typed the URL correctly,{' '}\n go back to your previous page, or start planning{' '}\n your next adventure by heading to{' '}\n My Trips.\n ;\n },\n status: '404 page not found',\n },\n default: {\n title: 'Blame our robots 🤖',\n subtitle: 'This page doesn’t look to be working at the moment. Sorry about that.',\n body: function DefaultErrorBody() {\n return <>\n Try again in a little while, {' '}\n go back to My Trips{' '}\n or kill some time by guessing which 10 countries have only four letters in their name.\n ;\n },\n status: '500 internal server error',\n },\n};\n\ntype ErrorsPageProps = {\n errorKey: string,\n currentUserAvatarUrl?: string,\n isUserLoggedIn?: boolean,\n};\n\nconst useStyles = makeStyles(theme => ({\n messageContainerBox: {\n flex: 1,\n marginLeft: 'auto',\n marginRight: 'auto',\n margin: theme.spacing(14),\n maxWidth: '677px',\n minHeight: '50%',\n padding: theme.spacing(2),\n '& h1': {\n color: theme.palette.text.primary,\n fontSize: theme.spacing(4),\n fontWeight: 600,\n },\n '& h1, & p': {\n marginBottom: theme.spacing(2),\n },\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n },\n}));\n\nconst ErrorsPage = ({ errorKey, ...props }: ErrorsPageProps) => {\n const classes = useStyles();\n const errorMessage: ErrorMessage = errorMessages[errorKey] || errorMessages.default;\n const {\n currentUserAvatarUrl,\n isUserLoggedIn,\n } = props;\n\n return (\n
\n \n \n \n \n {errorMessage.title}\n \n \n \n {errorMessage.subtitle}\n \n \n \n \n \n Keep running into the same problem? Email\n help@troupe.com \n and we’ll lend a hand.\n \n \n \n {`Message: ${errorMessage.status}`}\n \n \n \n \n
\n );\n};\n\nexport default hocRailsAction(ErrorsPage);\n","import React from 'react';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Container,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport { hocRailsAction } from \"../../Document\";\nimport { searchPath } from \"../../../routes\";\nimport BackToButton from '../trips/microsite/shared/BackToButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport Button from \"../../buttons/Button\";\nimport TroupeLogoWithFavoritesHeader from '../../shared/TroupeLogoWithFavoritesHeader';\nimport NoSuggestionsYet from \"../../shared/NoSuggestionsYet\";\nimport ShareFavoriteDialog from \"./ShareFavoriteDialog\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_FAVORITES_LISTINGS } from '../../../graphql/queries/favorites';\nimport favoritesStorage from \"../../../services/favoritesStorage\";\nimport ExternalListingCard from '../stays_search/Listings/ExternalListingCard';\nimport dayjs from 'dayjs';\n\nimport SkeletonList from \"../../shared/SkeletonPage/SkeletonList\";\nimport * as Sentry from \"@sentry/browser\";\nimport SnackbarNotification from \"../../shared/SnackbarNotification\";\nimport { DefaultTheme } from '@mui/styles';\nimport {\n useShareFavoritesInitiatedEvent,\n} from \"../../../services/segmentEvents/favoriteEvents\";\n\ntype FavoritesPageProps = {\n favoriteId: string,\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n },\n pageContainer: {\n flex: 1,\n marginTop: ({viewingShared}) => theme.spacing(viewingShared ? 2 : 6),\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n },\n },\n favoritesTitle: {\n '& svg': {\n verticalAlign: 'middle',\n },\n },\n imageContainer: {\n flexDirection: \"column\",\n alignItems: \"center\",\n margin: theme.spacing(1, 0),\n width: 'min(90%, 450px)',\n },\n imageText: {\n fontWeight: 600,\n textAlign: \"center\",\n },\n viewButton: {\n height: '34px',\n },\n viewingSharedFavorites: {\n borderRadius: '8px',\n border: '1px solid #DDD',\n background: '#FDF6EE',\n justifyContent: 'center',\n padding: theme.spacing(1, 2),\n marginBottom: theme.spacing(2),\n },\n viewingSharedFavoritesText: {\n textAlign: 'center',\n },\n}));\n\nconst FavoritesPage : React.FC = ({ favoriteId }) => {\n const classes = useStyles({viewingShared: !!favoriteId});\n const [dialogOpened, setDialogOpened] = React.useState(false);\n const { getFavoriteId } = favoritesStorage();\n const onShareClicked = () => {\n setDialogOpened(true);\n trackShareFavoritesInitiatedEvent();\n }\n\n const {data, loading, error} = useQuery(GET_FAVORITES_LISTINGS, {\n variables: { favoriteId: (favoriteId ? favoriteId : getFavoriteId()) },\n skip: !(favoriteId ? favoriteId : getFavoriteId()),\n });\n\n const favoritesData = data?.node || {};\n const favoritesListings = data?.node?.listings || [];\n const listingCount = favoritesListings.length\n const trackShareFavoritesInitiatedEvent = useShareFavoritesInitiatedEvent(listingCount);\n\n if (error) {\n Sentry.captureException(error)\n return <>\n \n \n \n }\n\n const renderFavoriteDates = (listing) => (\n listing.arrival && listing.departure &&\n \n {dayjs(listing.arrival, 'YYYY-MM-DD').format('MMM D')} - {dayjs(listing.departure, 'YYYY-MM-DD').format('MMM D')}\n \n )\n\n const renderFavoritesListings = (listings) => (\n \n {listings.map((listing) => {\n return(\n \n window.open(listing.externalListing.publicUrl, '_blank')}\n className={classes.viewButton}\n >\n View\n \n }\n footer={renderFavoriteDates(listing)}\n displayToggleFavoriteButton={!favoriteId}\n />\n \n )\n })}\n \n );\n\n const renderViewingSharedFavorites = () => (\n \n \n 👀 You’re viewing a list someone shared with you. Save this link to access this list again.\n \n \n )\n\n return(\n
\n \n \n { !favoriteId && (\n \n )}\n \n { loading ? (\n \n \n \n ) : (\n <>\n \n { favoriteId && renderViewingSharedFavorites()}\n \n Favorites\n \n \n \n Share\n \n \n setDialogOpened(false)}\n open={dialogOpened}\n shareUrl={favoritesData.link}\n />\n \n \n {\n favoritesListings.length > 0 ? (\n renderFavoritesListings(favoritesListings)\n ) : (\n \n \n \n There’s nothing here! Add and share your favorite stays without creating an account.\n \n \n )\n }\n \n )\n }\n \n \n \n
\n)};\n\nexport default hocRailsAction(FavoritesPage);\n","import React from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Box, Grid, TextField } from \"@mui/material\";\nimport FileCopyOutlinedIcon from '@mui/icons-material/FileCopyOutlined';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { GlobalContext } from \"../../Document\";\nimport Button from '../../buttons/Button';\nimport copyToClipboard from \"copy-to-clipboard\";\nimport {\n useFavoriteShareLinkCopiedEvent,\n useFavoriteShareSheetEvent,\n} from \"../../../services/segmentEvents/favoriteEvents\";\n\ntype ShareFavoriteActionsProps = {\n listingCount?: number,\n shareUrl?: string,\n};\n\nconst useStyles: () => any = makeStyles(() => ({\n copyField: {\n width: '100%',\n },\n buttonsContainer: {\n '& > div': {\n flexGrow: 1,\n },\n '& button': {\n height: '56px',\n width: '100%',\n },\n },\n}));\n\nconst ShareFavoriteActions : React.FC = ({\n listingCount,\n shareUrl,\n}) => {\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const [copied, setCopied] = React.useState(false);\n const { setSnackbar } = React.useContext(GlobalContext);\n const showSendButton = navigator['share'];\n const trackShareLinkCopiedEvent = useFavoriteShareLinkCopiedEvent(listingCount)\n const trackShareSheetEvent = useFavoriteShareSheetEvent(listingCount)\n\n const copyLink = () => {\n copyToClipboard(shareUrl);\n setCopied(true);\n setSnackbar && setSnackbar('Link copied to clipboard.', 3000, 'info');\n trackShareLinkCopiedEvent()\n };\n\n const sendLink = () => {\n const text = `${shareUrl}\\n I'm using Troupe to find stays for our upcoming trip! Check out my favorites.`;\n navigator.share({ text });\n trackShareSheetEvent();\n };\n\n const renderButtons = () => (\n \n {showSendButton && (\n \n \n \n )}\n \n {copied ? (\n \n ) : (\n \n )}\n \n \n );\n\n return (\n \n \n \n \n \n {renderButtons()}\n \n \n );\n};\n\nexport default ShareFavoriteActions;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Grid, Typography } from \"@mui/material\";\nimport Dialog from \"../../shared/Dialog\";\nimport ShareFavoriteActions from \"./ShareFavoriteActions\";\n\ntype ShareFavoriteDialogProps = {\n listingCount?: number,\n onClose: () => void,\n open: boolean,\n shareUrl?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n title: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: '30px',\n maxWidth: '200px',\n textAlign: 'center',\n },\n image: {\n height: '114px',\n },\n shareFavoriteDialog: {\n [theme.breakpoints.up('sm')]: {\n minWidth: '450px',\n },\n gap: theme.spacing(3),\n },\n}));\n\nconst ShareFavoriteDialog : React.FC = ({\n listingCount,\n onClose,\n open,\n shareUrl,\n}) => {\n const classes = useStyles();\n\n const renderContent = () => (\n \n \n \n Invite Friends to View Your Favorites\n \n \n \n \n \n \n \n );\n\n return (\n \n );\n};\n\nexport default ShareFavoriteDialog;\n","import React, { useContext } from 'react';\nimport {\n Grid,\n Link,\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport {\n FormsContext,\n hocRailsAction,\n RoutesContext,\n} from '../../Document';\nimport SiteHeader from \"../../shared/SiteHeader\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport RailsForm from \"../../shared/RailsForm\";\nimport Button from \"../../buttons/Button\";\n\nexport const useStyles = makeStyles(theme => ({\n messageBox: {\n flex: 1,\n marginLeft: 'auto',\n marginRight: 'auto',\n maxWidth: '580px',\n minHeight: '50%',\n padding: theme.spacing(2),\n '& h1': {\n color: theme.palette.text.primary,\n fontSize: theme.spacing(4),\n fontWeight: 600,\n },\n '& h1, & p': {\n marginBottom: theme.spacing(2),\n },\n },\n innerBox: {\n padding: theme.spacing(4),\n backgroundColor: '#FFFFFF',\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.25)',\n borderRadius: '5px',\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n background: 'linear-gradient(161.28deg, #C3C6FE 1.03%, #FFF6E6 96.33%)',\n },\n}));\n\ntype HomePageProps = {\n alreadyHaveAccountWithDifferentProviderError: boolean,\n authFailureMessage: string,\n isUserLoggingOut: boolean,\n isUserRequestingAccountDeletion: boolean,\n isUserAccountDeleted: boolean,\n provider: Provider,\n};\n\ntype PageContent = {\n title: string,\n body: React.FC,\n heroImage?: React.ReactNode,\n};\n\ntype PageNameToContent = {\n alreadyHaveAccountWithDifferentProvider: PageContent,\n authFailure: PageContent,\n justLoggedOut: PageContent,\n justRequestedAccountDeletion: PageContent,\n justDeletedAccount: PageContent,\n default: PageContent,\n};\n\nenum Provider {\n Apple = 'apple',\n Email = 'email',\n Facebook = 'facebook',\n Google = 'google',\n};\n\ntype AlreadyHaveAccountWithDifferentProviderProps = {\n provider: Provider,\n};\n\ntype AuthFailureProps = {\n message: string,\n};\n\nconst accountWithDifferentProviderBody = (provider) => {\n const { triggerLogIn } = useContext(FormsContext);\n const capitalizedProvider = provider.charAt(0).toUpperCase() + provider.slice(1);\n const assistanceText = <> If you continue to run into issues, reach out to help@troupe.com for more assistance.;\n\n switch(provider) {\n case Provider.Email:\n return <>\n \n Looks like you created your account using our email and password option.\n \n \n You’ll need to sign in using the email and password fields at the bottom of\n the login page.\n {assistanceText}\n \n \n default:\n return <>\n \n Looks like you created your account using {capitalizedProvider}'s social sign on option.\n \n \n Try logging in via the “Continue with {capitalizedProvider}” button at the top of\n the login page.\n {assistanceText}\n \n \n };\n};\n\nconst steps = [\n {\n imageSrc: \"/assets/party-popper.png\",\n copy: <>RSVP to your trip,\n },\n {\n imageSrc: \"/assets/question-mark.png\",\n copy: <>Poll your group,\n },\n {\n imageSrc: \"/assets/thumbs-up.png\",\n copy: <>Vote on your favorites,\n },\n {\n imageSrc: \"/assets/airplane.png\",\n copy: <>Build your itinerary,\n },\n];\n\nconst stepRow = (imageSrc: string, copy: React.ReactNode, index: number) => (\n \n \n \n \n \n {copy}\n \n \n);\n\nconst pageNameToContent: PageNameToContent = {\n alreadyHaveAccountWithDifferentProvider: {\n title: 'Howdy, traveler 👋',\n body: ({ provider }) => accountWithDifferentProviderBody(provider),\n },\n justLoggedOut: {\n title: 'Au revoir! 🚀',\n body: () => (\n <>\n \n You’ve been successfully logged out of your account. Log back in when you’re ready to continue planning your next adventure.\n \n \n ),\n },\n justRequestedAccountDeletion: {\n title: 'We’re sorry to see you go',\n body: () => (\n <>\n \n Your request has been sent to our engineering team.\n \n \n If you did so in error or have any additional questions, please reach out to help@troupe.com.\n \n \n ),\n },\n justDeletedAccount: {\n title: 'We’re sorry to see you go',\n body: () => (\n <>\n \n Your Troupe account has been successfully deleted, along with any personal data associated with your account.\n \n \n If you did so in error or have any additional questions, please reach out to help@troupe.com.\n \n \n ),\n },\n authFailure: {\n title: 'Uh oh! 💥',\n body: ({message}) => (\n <>\n \n Something went wrong with your login attempt. Please try again.\n \n \n { `Message: ${message}` }\n \n \n ),\n },\n default: {\n title: 'Welcome to Troupe',\n heroImage: logo_icon,\n body: () => (\n <>\n \n Log in or create an account to get started.\n \n \n \n \n {steps.map((step, index) => stepRow(step.imageSrc, step.copy, index))}\n \n \n \n \n \n ),\n },\n}\n\nconst LogInButtonForm = () => {\n const { authPath } = useContext(RoutesContext);\n return \n \n Get started\n \n ;\n};\n\nconst propToPageNameMappings = {\n alreadyHaveAccountWithDifferentProviderError: 'alreadyHaveAccountWithDifferentProvider',\n isUserLoggingOut: 'justLoggedOut',\n isUserRequestingAccountDeletion: 'justRequestedAccountDeletion',\n isUserAccountDeleted: 'justDeletedAccount',\n authFailureMessage: 'authFailure',\n}\n\nconst getPageName = (props: HomePageProps): keyof PageNameToContent => {\n for (const propName in propToPageNameMappings) {\n if (props[propName]) return propToPageNameMappings[propName];\n }\n\n return 'default';\n}\n\nconst HomePage = (props: HomePageProps) => {\n const {\n authFailureMessage,\n provider,\n } = props;\n const classes = useStyles();\n\n const pageContent = pageNameToContent[getPageName(props)]\n const pageContentProps = { message: authFailureMessage, provider }\n\n return (\n
\n \n \n \n {\n pageContent.heroImage &&\n \n {pageContent.heroImage}\n \n }\n \n \n {pageContent.title}\n \n \n \n \n \n \n
\n );\n};\n\nexport default hocRailsAction(HomePage);\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Grid } from \"@mui/material\";\nimport { searchPath } from \"../../../routes\";\n\ntype FilterBackgroundProps = {\n children: React.ReactNode,\n logoPath: string,\n hasPrompt: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n fontWeight: '600',\n fontSize: '20px',\n marginBottom: theme.spacing(2),\n },\n aiFiltersBackgroundContainer: {\n overflow: 'hidden',\n flexWrap: 'nowrap',\n },\n backgroundImage: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: -1,\n width: '100%',\n objectFit: 'cover',\n height: '100vh',\n background: 'linear-gradient(163deg, #E5E7FF, #FFF6E6 100vh)',\n },\n logo: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n height: '40px',\n cursor: 'pointer',\n },\n logoFavorites: {\n justifyContent: 'space-between',\n alignItems: 'center',\n width: 'auto',\n },\n}));\n\nconst AiFilterBackground : React.FC = ({\n children,\n logoPath = searchPath(),\n hasPrompt,\n}) => {\n const classes = useStyles();\n\n return(\n \n \n \n window.location.href = logoPath}\n />\n \n \n {children}\n \n \n )\n}\n\nexport default AiFilterBackground;\n","import React, { useEffect } from \"react\";\nimport StaysSearch, { CustomFiltersAppliedType, DateOptionProps } from \"../stays_search/StaysSearch\";\nimport { hocRailsAction } from \"../../Document\";\nimport { apiSearchAiListingsPath, aiSearchPath } from \"../../../routes\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Container } from \"@mui/material\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport ExternalListingCTA from \"../stays_search/ExternalListingCTA\";\nimport AiFilterBackground from \"./AiFilterBackground\";\nimport { CurrentAppliedFilters } from \"../stays_search/Listings/Filters\";\nimport * as Sentry from \"@sentry/browser\";\n\ntype AiStaysSearchPageProps = {\n currentAppliedFilters: CurrentAppliedFilters,\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n position: 'relative',\n },\n pageContainer: {\n flex: 1,\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n },\n },\n}));\n\nconst AiStaysSearchPage = ({\n currentAppliedFilters,\n customFiltersApplied,\n dateOptions,\n}: AiStaysSearchPageProps) => {\n const classes = useStyles();\n\n useEffect(() => {\n const urlSearchParams = new URLSearchParams(window.location.search)\n const encryptedUserEmail = urlSearchParams.get('ehash')\n\n if (encryptedUserEmail) {\n try {\n const userEmail = window.atob(encryptedUserEmail)\n analytics.identify({ waitlistEmail: userEmail })\n } catch (e) {\n Sentry.captureException(e)\n }\n }\n });\n\n useEffect(() => {\n const handlePopstate = () => window.location.reload();\n\n window.addEventListener('popstate', handlePopstate);\n\n return () => {\n window.removeEventListener('popstate', handlePopstate);\n };\n }, []);\n\n const basePath = aiSearchPath();\n const apiSearchPath = apiSearchAiListingsPath();\n\n return (\n
\n \n (\n \n )}\n SearchBackground={AiFilterBackground}\n aiSearch={true}\n aiSearchType=\"aiPublicSearch\"\n />\n \n \n
\n );\n};\n\nexport default hocRailsAction(AiStaysSearchPage);\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Typography } from \"@mui/material\";\nimport { searchPath } from \"../../../routes\";\nimport FavoritesButton from \"../../buttons/FavoritesButton\";\n\ntype FilterBackgroundProps = {\n children: React.ReactNode,\n logoPath: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n FilterBackground: {\n display: 'flex',\n flexDirection: 'column',\n },\n background: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(6),\n width: '100%',\n backgroundColor: theme.palette.common.white,\n height: '100%',\n borderRadius: theme.spacing(1),\n [theme.breakpoints.down('sm')]: {\n padding: `${theme.spacing(2)} ${theme.spacing(1)} ${theme.spacing(2)} ${theme.spacing(1)}`,\n },\n padding: `${theme.spacing(2)} ${theme.spacing(5)} ${theme.spacing(2)} ${theme.spacing(5)}`,\n maxWidth: '800px',\n alignSelf: 'center',\n },\n header: {\n fontWeight: '600',\n fontSize: '20px',\n marginBottom: theme.spacing(2),\n },\n backgroundImage: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: -1,\n width: '100%',\n objectFit: 'cover',\n height: '360px',\n [theme.breakpoints.down('xs')]: {\n height: '300px',\n },\n backgroundSize: 'contain',\n },\n logo: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n height: theme.spacing(3.5),\n cursor: 'pointer',\n },\n logoFavorites: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n}));\n\nconst FilterBackground : React.FC = ({\n children,\n logoPath = searchPath(),\n}) => {\n const classes = useStyles();\n\n return(\n
\n \"\"\n
\n
\n window.location.href = logoPath}\n />\n \n
\n
\n \n Find the perfect stay\n \n {children}\n
\n
\n )\n}\n\nexport default FilterBackground;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { searchPath } from \"../../../routes\";\nimport FavoritesButton from \"../../buttons/FavoritesButton\";\nimport { useMediaQuery } from \"@mui/material\";\nimport { DefaultTheme } from \"@mui/styles\";\nimport TroupeLogoWithFavoritesHeader from \"../../shared/TroupeLogoWithFavoritesHeader\";\n\ntype FilterSearchedBackgroundProps = {\n children: React.ReactNode,\n logoPath: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n FilterSearchedBackground: {\n display: 'flex',\n gap: '0 8%',\n flexWrap: 'wrap',\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n justifyContent: 'center',\n zIndex: '3',\n padding: theme.spacing(2),\n },\n backgroundColor: {\n backgroundColor: '#262A71',\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: -1,\n width: '100%',\n height: '116px',\n [theme.breakpoints.down(1078)]: {\n height: '195px',\n },\n [theme.breakpoints.down(701)]: {\n height: '200px',\n },\n [theme.breakpoints.down(451)]: {\n height: '226px',\n },\n },\n background: {\n marginTop: '11px',\n flex: '1 1 300px',\n maxWidth: '1000px',\n [theme.breakpoints.up(954)]: {\n paddingRight: 0,\n },\n },\n logoContainer: {\n display: 'flex',\n },\n logo: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n height: theme.spacing(3.5),\n marginLeft: '3%',\n cursor: 'pointer',\n [theme.breakpoints.down(701)]: {\n marginTop: 0,\n marginBottom: 0,\n height: theme.spacing(2),\n },\n },\n favoritesButton: {\n marginTop: theme.spacing(1),\n [theme.breakpoints.down(700)]: {\n marginTop: 0,\n },\n },\n mobileHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n },\n}));\n\nconst FilterSearchedBackground : React.FC = ({\n children,\n logoPath = searchPath(),\n}) => {\n const classes = useStyles();\n const isMobile = useMediaQuery((theme: any) => theme.breakpoints.down(700));\n const renderWebView = () => (\n <>\n
\n window.location.href = logoPath}\n />\n
\n
\n {children}\n
\n
\n \n
\n \n );\n\n const renderMobileView = () => (\n <>\n \n
\n {children}\n
\n \n );\n\n return(\n
\n
\n {isMobile ? renderMobileView() : renderWebView()}\n
\n )\n}\n\nexport default FilterSearchedBackground;\n","import React from \"react\";\nimport StaysSearch, { CustomFiltersAppliedType, DateOptionProps } from \"../stays_search/StaysSearch\";\nimport { hocRailsAction } from \"../../Document\";\nimport { DestinationType } from \"../../shared/TripObjectTypes\";\nimport { apiSearchListingsPath, searchPath } from \"../../../routes\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Container } from \"@mui/material\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport ExternalListingCTA from \"../stays_search/ExternalListingCTA\";\nimport FilterSearchedBackground from \"./FilterSearchedBackground\";\nimport FilterBackground from \"./FilterBackground\";\n\ntype PublicStaysSearchPageProps = {\n currentAppliedFilters: {\n locationName?: string,\n },\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n topSuggestedDestinations: DestinationType[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n },\n pageContainer: {\n flex: 1,\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n },\n },\n}));\n\nconst PublicStaysSearchPage = ({\n currentAppliedFilters,\n customFiltersApplied,\n dateOptions,\n topSuggestedDestinations,\n}: PublicStaysSearchPageProps) => {\n const [hasSearched, setHasSearched] = React.useState(false);\n React.useEffect(() => {\n const handlePopstate = () => {\n // Detect back button click\n window.location.reload();\n };\n\n window.addEventListener('popstate', handlePopstate);\n\n return () => {\n window.removeEventListener('popstate', handlePopstate);\n };\n }, []);\n const classes = useStyles();\n\n const basePath = searchPath();\n const apiSearchPath = apiSearchListingsPath();\n\n return (\n
\n \n (\n \n )}\n SearchBackground={hasSearched ? FilterSearchedBackground : FilterBackground}\n showShortBackground={setHasSearched}\n hasSearched={hasSearched}\n />\n \n \n
\n );\n};\n\nexport default hocRailsAction(PublicStaysSearchPage);\n","import React, { useContext, useState } from \"react\";\nimport { Box, Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from '@mui/styles';\nimport {hocRailsAction, TripSiteContext} from \"../../Document\";\nimport Modal from \"../../shared/Modal\";\nimport TabNavigation, { TabPanel } from \"../../shared/TabNavigation\";\nimport PendingInvite, {\n PendingInviteData,\n} from \"../trip_invites/IndexPage/PendingInvite\";\nimport AcceptedInvite, {\n AcceptedInviteData,\n} from \"../trip_invites/IndexPage/AcceptedInvite\";\nimport DeclinedInvite, {\n DeclinedInviteData,\n} from \"../trip_invites/IndexPage/DeclinedInvite\";\nimport IndexPage from \"../trip_invites/IndexPage\";\nimport ManageTravelers from \"./ManageTravelers\";\nimport {\n TravelersType,\n} from \"./TravelersByStatusType\";\nimport * as routes from '../../../routes';\nimport ShareLinkSection from \"../../shared/InviteModal/ShareLinkSection\";\nimport { useQuery } from \"@apollo/client\";\nimport { TRAVELERS_QUERY } from \"../../../graphql/queries/travelers\";\nimport { GUESTS_QUERY } from \"../../../graphql/queries/guests\";\n\nconst { tripPath } = routes;\n\ntype ManageInvitesAndTravelersModalPageProps = {\n activeTab: number,\n currentUserId: string,\n isCurrentUserPlanner: boolean,\n travelers: TravelersType[],\n acceptedInvites: AcceptedInviteData[],\n declinedInvites: DeclinedInviteData[],\n pendingInvites: PendingInviteData[],\n tripId: string,\n tripGid: string,\n tripName: string,\n};\n\nconst useStyles = makeStyles(theme => ({\n container: {\n maxWidth: '720px',\n flex: 1,\n width: '100%',\n },\n root: {\n alignItems: 'center',\n flexDirection: 'column',\n display: 'flex',\n minHeight: '100%',\n },\n inviteSubText: {\n paddingBottom: theme.spacing(1),\n },\n inviteStatusSection: {\n paddingTop: theme.spacing(3),\n },\n invitesWrapper: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n outerContainer: {\n flexWrap: 'nowrap',\n },\n}));\n\nconst ManageInvitesAndTravelersModalPage = ({\n acceptedInvites,\n activeTab,\n currentUserId,\n declinedInvites,\n isCurrentUserPlanner = false,\n pendingInvites,\n travelers,\n tripId,\n tripName,\n}: ManageInvitesAndTravelersModalPageProps) => {\n const classes = useStyles();\n const [value, setValue] = useState(activeTab);\n const [travelersList, setTravelersList] = useState(travelers);\n const { tripGid } = useContext(TripSiteContext);\n const { data: travelers_data } = useQuery(\n TRAVELERS_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n )\n\n const { data: guests_data } = useQuery(\n GUESTS_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n )\n\n const totalPlusOnesCount = travelers_data?.travelers?.reduce((total: number, traveler: TravelersType) => total + (traveler.plusOneCount || 0), 0);\n const totalGuestsCount = guests_data?.guests.length || 0;\n\n const handleChange = (event: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n };\n\n const tabLabels =[\n `Invites (${pendingInvites.length})`,\n `Travelers (${travelers_data?.travelers?.length ? travelers_data.travelers.length + totalPlusOnesCount + totalGuestsCount : 0})`,\n ];\n\n return(\n \n \n \n Track trip invites and manage who is coming on your trip.\n \n }\n title={\n \n Manage travelers\n \n }\n withDivider={false}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default hocRailsAction(ManageInvitesAndTravelersModalPage);\n","import React, { useContext } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from '@mui/styles';\nimport NoSuggestionsYet from \"../../shared/NoSuggestionsYet\";\nimport TravelerInfo from \"./travelers/TravelerInfo\";\nimport {\n TravelersType,\n} from \"./TravelersByStatusType\";\nimport { useQuery } from \"@apollo/client\";\nimport { TripSiteContext } from \"../../Document\";\nimport TravelersSkeleton from \"./travelers/TravelersSkeleton\";\nimport { GlobalContext } from \"../../Document\";\nimport RenderChildWhenFFOn from \"../../RenderChildWhenFFOn\";\nimport GuestsSection from \"./travelers/GuestsSection\";\nimport { TRAVELERS_QUERY } from \"../../../graphql/queries/travelers\";\n\ntype ManageTravelersProps = {\n isCurrentUserPlanner: boolean,\n tripId: string,\n onRemoveTraveler: (travelers: TravelersType[]) => void,\n};\n\nconst useStyles = makeStyles(theme => ({\n interestedSection: {\n paddingTop: '40px !important',\n },\n subtitle: {\n paddingTop: theme.spacing(1),\n },\n travelerSubText: {\n paddingBottom: theme.spacing(1),\n },\n travelerStatusSection: {\n paddingTop: theme.spacing(3),\n },\n travelersWrapper: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n outerContainer: {\n flexWrap: 'nowrap',\n },\n}));\n\nconst ManageTravelers = ({\n isCurrentUserPlanner,\n tripId,\n onRemoveTraveler,\n}: ManageTravelersProps) => {\n const classes = useStyles();\n const { tripGid } = useContext(TripSiteContext)\n const { data } = useQuery(\n TRAVELERS_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n )\n\n const travelersGoingList : TravelersType[] = data?.travelers.filter((traveler: TravelersType) => traveler.status === 'going')\n const travelersInterestedList : TravelersType[] = data?.travelers.filter((traveler: TravelersType) => traveler.status === 'interested')\n const travelersNotGoingList : TravelersType[] = data?.travelers.filter((traveler: TravelersType) => traveler.status === 'cannot_go')\n const totalGoingPlusOnes = travelersGoingList?.reduce((total: number, traveler: TravelersType) => total + (traveler.plusOneCount || 0), 0);\n const totalInterestedPlusOnes = travelersInterestedList?.reduce((total: number, traveler: TravelersType) => total + (traveler.plusOneCount || 0), 0);\n const totalNotGoingPlusOnes = travelersNotGoingList?.reduce((total: number, traveler: TravelersType) => total + (traveler.plusOneCount || 0), 0);\n\n return <>\n \n \n \n Going ({travelersGoingList?.length ? travelersGoingList.length + totalGoingPlusOnes : 0})\n \n \n {travelersGoingList ? travelersGoingList.map((traveler: TravelersType, index: number) => (\n \n \n \n )) : }\n \n \n \n \n \n Interested ({travelersInterestedList?.length ? travelersInterestedList.length + totalInterestedPlusOnes : 0})\n \n {travelersInterestedList?.length === 0 ? (\n \n ) : (\n \n {travelersInterestedList?.map((traveler: TravelersType, index: number) => (\n \n \n \n ))}\n \n )}\n \n \n \n Not going ({travelersNotGoingList?.length ? travelersNotGoingList.length + totalNotGoingPlusOnes : 0 })\n \n {travelersNotGoingList?.length === 0 ? (\n \n ) : (\n \n {travelersNotGoingList?.map((traveler: TravelersType, index: number) => (\n \n \n \n ))}\n \n )}\n \n \n \n}\n\nexport default ManageTravelers;\n","import React from \"react\";\nimport { Typography, Grid, Stack } from \"@mui/material\";\nimport EditDeleteButtonGroup from \"./EditDeleteButtonGroup\";\nimport { useMutation } from \"@apollo/client\";\nimport { getOperationName } from \"../../../../graphql/utilities\";\nimport Errors from \"../../../shared/Errors\";\nimport useSegment from '../../../../services/useSegment';\nimport { DocumentNode } from \"graphql\";\nimport pluralize from \"pluralize\";\nimport { GuestType } from \"../../../../types/GuestType\";\nimport { PlusOneType } from \"../../../../types/PlusOneTypes\";\n\ntype AdditionalGuestActionsProps = {\n additionalTraveler: GuestType | PlusOneType,\n resourceName: string,\n displayName: string,\n mutation: DocumentNode,\n refetchOperation: DocumentNode\n};\n\nconst AdditionalTravelerActions : React.FC = ({ additionalTraveler, resourceName, displayName, mutation, refetchOperation}) => {\n const [dialogOpen, setDialogOpen] = React.useState(false);\n const [snackbarMessage, setSnackbarMessage] = React.useState('');\n const [errors, setErrors] = React.useState([]);\n const { trackSegment } = useSegment();\n const [ deleteAdditionalTravelerMutation ] = useMutation(mutation, {refetchQueries: [getOperationName(refetchOperation)]});\n\n const onDeleteClick = () => {\n deleteAdditionalTravelerMutation({\n variables: {\n additionalTravelerId: additionalTraveler.id,\n },\n onCompleted: (response) => {\n const result = Object.entries(response).map(entry => entry[1])[0] as any\n\n if (result.errors?.length > 0) {\n setErrors(errors);\n } else {\n setSnackbarMessage && setSnackbarMessage(`Your ${resourceName} has been deleted.`);\n trackSegment(`${displayName} Deleted`, { additionalTravelerId: additionalTraveler.uuid });\n }\n },\n onError: (error) => {\n setErrors([error.message]);\n },\n });\n setDialogOpen( false );\n };\n\n const openDialog = () => {\n trackSegment(`Delete ${displayName} Initiated`, { additionalTravelerId: additionalTraveler.uuid });\n setDialogOpen(true);\n };\n\n const deleteMessageBody = (\n \n \n Heads up!\n Once {pluralize(resourceName, 2)} are deleted, they will be removed from the trip’s headcount.\n \n )\n\n return (\n \n \n {errors && (\n \n \n \n )}\n \n );\n};\n\nexport default AdditionalTravelerActions;\n","import React, { useContext, useRef, useState } from 'react';\nimport { makeStyles, useTheme } from '@mui/styles';\nimport { Grid, TextField, Button, Stack, useMediaQuery } from '@mui/material';\nimport { GlobalContext, SegmentContext, TripSiteContext } from '../../../Document';\nimport { Done, Close } from '@mui/icons-material';\nimport { gql, useMutation } from \"@apollo/client\";\nimport { getOperationName } from \"../../../../graphql/utilities\";\nimport useSegment from \"../../../../services/useSegment\";\nimport Errors from \"../../../shared/Errors\";\nimport clsx from \"clsx\";\nimport { GUESTS_QUERY } from \"../../../../graphql/queries/guests\";\nimport { useGuestDismissed } from \"../../../../services/segmentEvents/guestEvents\";\n\ntype CreateGuestFormProps = {\n autoFocus?: boolean,\n onGuestFormClose?: () => void,\n}\n\nexport const GUEST_CREATE = gql`\n mutation TripGuestCreate($tripId: ID!, $firstName: String!, $lastName: String) {\n tripGuestCreate(input: {\n tripId: $tripId,\n firstName: $firstName,\n lastName: $lastName,\n }) {\n tripGuest {\n firstName\n lastName\n id\n }\n errors\n }\n }\n`\n\nconst useStyles = makeStyles(() => ({\n input: {\n minWidth: '115px',\n height: '24px',\n padding: '8px 12px',\n },\n mobileInput: {\n minWidth: '50px',\n },\n doneButton: {\n minWidth: '42px',\n width: '42px',\n },\n cancelButton: {\n minWidth: '42px',\n width: '42px',\n color: '#4A6176',\n },\n}));\n\nconst CreateGuestForm : React.FC = ({\n autoFocus = true,\n onGuestFormClose,\n}) => {\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const { tripId } = React.useContext(SegmentContext);\n const { tripGid } = React.useContext(TripSiteContext);\n const [errors, setErrors] = useState([]);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const textRef = useRef();\n\n const [firstName, setFirstName] = React.useState('');\n const [lastName, setLastName] = React.useState('');\n const { trackSegment } = useSegment();\n const GuestDismissedEvent = useGuestDismissed();\n\n const onCancelClick = () => {\n onGuestFormClose && onGuestFormClose()\n GuestDismissedEvent();\n };\n\n const [\n createGuestMutation,\n { loading },\n ] = useMutation(GUEST_CREATE, {refetchQueries: [getOperationName(GUESTS_QUERY)]});\n\n const onFormSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n createGuestMutation({\n variables: {\n tripId: tripGid,\n firstName: firstName,\n lastName: lastName,\n },\n onCompleted: ({tripGuestCreate: {\n tripGuest,\n errors,\n }}) => {\n if(tripGuest && errors.length === 0) {\n setSnackbar && setSnackbar('Your guest has been added.')\n setFirstName('')\n setLastName('')\n trackSegment('Guest Traveler Added',\n {\n tripId: tripId,\n firstName: firstName,\n },\n );\n textRef.current.focus();\n } else {\n setErrors(errors);\n }\n },\n });\n };\n\n return (\n \n \n \n \n setFirstName(e.target.value)}\n inputProps={{className: clsx(classes.input, {\n [classes.mobileInput]: isMobile,\n })}}\n required\n />\n setLastName(e.target.value)}\n inputProps={{className: classes.input}}\n />\n \n \n \n {\n setFirstName('');\n setLastName('');\n onCancelClick();\n }}\n >\n \n \n \n \n {errors && (\n \n \n \n )}\n \n \n );\n};\n\nexport default CreateGuestForm;\n","import React, { useContext, useRef, useState } from 'react';\nimport { makeStyles, useTheme } from '@mui/styles';\nimport { Grid, TextField, Button, Stack, useMediaQuery } from '@mui/material';\nimport { GlobalContext, SegmentContext, TripSiteContext } from '../../../Document';\nimport { TravelersType } from '../TravelersByStatusType';\nimport { Done, Close } from '@mui/icons-material';\nimport { gql, useMutation } from \"@apollo/client\";\nimport { getOperationName } from \"../../../../graphql/utilities\";\nimport { TRAVELERS_QUERY } from \"../../../../graphql/queries/travelers\";\nimport useSegment from \"../../../../services/useSegment\";\nimport Errors from \"../../../shared/Errors\";\nimport clsx from \"clsx\";\n\ntype CreatePlusOneFormProps = {\n traveler: TravelersType,\n autoFocus?: boolean,\n onPlusOneFormClose?: () => void,\n}\n\nexport const PLUS_ONE_CREATE = gql`\n mutation TravelerPlusOneCreate($tripId: ID!, $firstName: String!, $lastName: String, $travelerId: ID!) {\n travelerPlusOneCreate(input: {\n tripId: $tripId,\n firstName: $firstName,\n lastName: $lastName,\n travelerId: $travelerId\n }) {\n travelerPlusOne {\n firstName\n lastName\n id\n }\n errors\n }\n }\n`\n\nconst useStyles = makeStyles(() => ({\n input: {\n minWidth: '115px',\n height: '24px',\n padding: '8px 12px',\n },\n mobileInput: {\n minWidth: '50px',\n },\n doneButton: {\n minWidth: '42px',\n width: '42px',\n },\n cancelButton: {\n minWidth: '42px',\n width: '42px',\n color: '#4A6176',\n },\n}));\n\nconst CreatePlusOneForm : React.FC = ({\n traveler,\n autoFocus = true,\n onPlusOneFormClose,\n}) => {\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const { tripId } = React.useContext(SegmentContext);\n const { tripGid } = React.useContext(TripSiteContext);\n const [errors, setErrors] = useState([]);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const textRef = useRef();\n\n const [firstName, setFirstName] = React.useState('');\n const [lastName, setLastName] = React.useState('');\n const { trackSegment } = useSegment();\n\n const onCancelClick = () => {\n onPlusOneFormClose && onPlusOneFormClose()\n trackSegment('Add Plus 1 Dismissed',\n {\n tripId: tripId,\n page: 'Manage Travelers',\n },\n );\n };\n\n const onPlusOneSave = (firstName: string) => {\n trackSegment('Plus 1 Added',\n {\n tripId: tripId,\n page: 'Manage Travelers',\n parentStatus: traveler.status,\n firstName: firstName,\n },\n );\n };\n\n const [\n createPlusOneMutation,\n { loading },\n ] = useMutation(PLUS_ONE_CREATE, {refetchQueries: [getOperationName(TRAVELERS_QUERY)]});\n\n const onFormSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n createPlusOneMutation({\n variables: {\n tripId: tripGid,\n firstName: firstName,\n lastName: lastName,\n travelerId: traveler.id,\n },\n onCompleted: ({travelerPlusOneCreate: {\n travelerPlusOne,\n errors,\n }}) => {\n if(travelerPlusOne && errors.length === 0) {\n setSnackbar && setSnackbar('Your plus-one has been added.')\n setFirstName('')\n setLastName('')\n onPlusOneSave(firstName)\n textRef.current.focus();\n } else {\n setErrors(errors);\n }\n },\n });\n };\n\n return (\n \n \n
\n \n setFirstName(e.target.value)}\n inputProps={{className: clsx(classes.input, {\n [classes.mobileInput]: isMobile,\n })}}\n required\n />\n setLastName(e.target.value)}\n inputProps={{className: classes.input}}\n />\n \n \n \n {\n setFirstName('');\n setLastName('');\n onCancelClick();\n }}\n >\n \n \n \n
\n {errors && (\n \n \n \n )}\n
\n
\n );\n};\n\nexport default CreatePlusOneForm;\n","import React from \"react\";\nimport { Box, Button, ButtonGroup, Tooltip } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Edit as EditIcon, Delete as DeleteIcon } from \"@mui/icons-material\";\nimport DeleteResourceConfirmationDialog from \"../../../../components/shared/DeleteResourceConfirmationDialog\";\nimport clsx from \"clsx\";\nimport buttonColors from \"../../../buttons/buttonColors\";\n\ntype EditDeleteButtonGroupProps = {\n disableDeleteButton: boolean,\n handleOpenDialog: () => void,\n dialogOpen: boolean,\n setDialogOpen: (dialogOpen: boolean) => void,\n snackbarMessage: string,\n onConfirmClick: () => void,\n tooltipText: string,\n deleteMessageBody: React.ReactNode,\n resourceName: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: 3,\n alignSelf: 'end',\n },\n button: {\n height: 30,\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n '&:hover': {\n borderColor: '#545DFC',\n borderRightColor: ['#545DFC', '!important'],\n background: theme.palette.general.hover,\n zIndex: 4,\n },\n },\n buttonGroup: {\n backgroundColor: buttonColors.primary.default.color,\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n buttonDisabled: {\n color: `${theme.palette.general.background.disabled} !important`,\n '&:focus': {\n boxShadow: 'none !important',\n outline: '0 !important',\n },\n },\n}));\n\nconst EditDeleteButtonGroup : React.FC = ( {\n disableDeleteButton,\n handleOpenDialog,\n dialogOpen,\n setDialogOpen,\n snackbarMessage,\n onConfirmClick,\n tooltipText,\n deleteMessageBody,\n resourceName,\n} ) => {\n const classes = useStyles();\n return (\n \n \n \n \n \n \n handleOpenDialog() : null}\n className={clsx(classes.button, {\n [classes.buttonDisabled]: disableDeleteButton,\n })}\n >\n \n \n \n \n setDialogOpen(false)}\n onConfirm={onConfirmClick}\n path=''\n message={deleteMessageBody}\n snackbarMessage={snackbarMessage}\n />\n \n );\n}\n\nexport default EditDeleteButtonGroup;\n","import React, { useContext, useState } from 'react';\nimport { Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from '@mui/styles';\nimport Tooltip from \"../../../shared/Tooltip\";\nimport HelpIcon from \"@mui/icons-material/Help\";\nimport { GuestType } from \"../../../../types/GuestType\";\nimport Avatar from \"../../../avatars/Avatar\";\nimport Button from \"../../../buttons/Button\";\nimport Link from \"../../../shared/Link\";\nimport CreateGuestForm from \"./CreateGuestForm\";\nimport { useQuery } from \"@apollo/client\";\nimport { TripSiteContext } from \"../../../Document\";\nimport TravelersSkeleton from \"./TravelersSkeleton\";\nimport { useAddGuestInitiated, useGuestTravelerToolTipClick } from \"../../../../services/segmentEvents/guestEvents\";\nimport AdditionalTravelerActions from \"./AdditionalTravelerActions\";\nimport { GUESTS_QUERY } from \"../../../../graphql/queries/guests\";\nimport { TRIP_GUEST_DELETE } from \"../../../../graphql/queries/guests\";\n\ntype GuestsSectionProps = {\n isCurrentUserPlanner: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n actions: {\n marginLeft: 'auto',\n },\n travelerStatusSection: {\n paddingTop: theme.spacing(3),\n },\n guestTravelersSection: {\n backgroundColor: \"#ffcc00\",\n },\n error: {\n color: '#e44444',\n fontSize: 14,\n marginTop: theme.spacing(1),\n },\n helpIcon: {\n color: '#9DAFBE',\n verticalAlign: 'bottom',\n },\n addGuestButton: {\n height: theme.spacing(5),\n },\n addGuestLink: {\n fontWeight: 600,\n },\n}));\n\nconst GuestsSection = ({\n isCurrentUserPlanner,\n}: GuestsSectionProps) => {\n const classes = useStyles();\n const { tripGid } = useContext(TripSiteContext)\n const addGuestInitiatedEvent = useAddGuestInitiated()\n const guestTravelerTooltipEvent = useGuestTravelerToolTipClick()\n\n const onAddGuestClick = () => {\n setDisplayGuestLink(true)\n addGuestInitiatedEvent()\n }\n\n const { data: guests_data } = useQuery(\n GUESTS_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n )\n\n const totalGuests = guests_data?.guests.length;\n const showLink = totalGuests > 0;\n const [displayGuestLink, setDisplayGuestLink] = useState(false);\n\n return (\n \n \n \n Guests ({totalGuests})\n \n \n \n guestTravelerTooltipEvent()}\n >\n \n \n \n \n \n \n Guests are travelers going on the trip who won’t be using Troupe.\n \n \n \n {guests_data ? guests_data.guests.map((guest: GuestType, index: number) => {\n return (\n \n \n \n \"\"\n \n \n \n \n {guest.displayName}\n \n \n {isCurrentUserPlanner &&\n \n \n \n }\n \n )}) : }\n {!displayGuestLink && (showLink ?\n (isCurrentUserPlanner &&\n \n \n ) :\n \n \n \n + Add Guest\n \n \n \n )}\n {displayGuestLink && (\n \n setDisplayGuestLink(false)} />\n \n )}\n \n\n )\n};\n\nexport default GuestsSection;\n","import React, { useState, useContext } from \"react\";\nimport { FormsContext } from '../../../Document';\nimport { Typography } from \"@mui/material\";\nimport performAsyncRequestWithCancelToken from \"../../../../services/performAsyncRequestWithCancelToken\";\nimport {\n TravelersType,\n} from \"../TravelersByStatusType\";\nimport useSegment from \"../../../../services/useSegment\";\nimport { apiTripTravelerPath } from '../../../../routes';\nimport EditDeleteButtonGroup from \"./EditDeleteButtonGroup\";\n\ntype TravelerActionsButtonGroupProps = {\n disableDeleteButton?: boolean,\n travelerId: string,\n tripId: string,\n plusOneCount: number,\n onRemoveTraveler: (travelers: TravelersType[]) => void,\n onRemoveTravelerError: (message: string) => void,\n};\n\nconst TravelerActionsButtonGroup = ({\n travelerId,\n tripId,\n disableDeleteButton = false,\n plusOneCount,\n onRemoveTraveler,\n onRemoveTravelerError,\n}: TravelerActionsButtonGroupProps) => {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n const { csrfToken } = useContext(FormsContext);\n const { trackSegment } = useSegment();\n\n const removeTraveler = () => {\n\n performAsyncRequestWithCancelToken({\n method: 'DELETE',\n url: apiTripTravelerPath(tripId, travelerId),\n data: {\n authenticity_token: csrfToken,\n },\n onSuccess: (response) => {\n setDialogOpen(false);\n setSnackbarMessage(response.data.message);\n onRemoveTraveler(response.data.travelersList)\n setSnackbarMessage('');\n\n trackSegment('Traveler Removed', {\n removedTravelerId: travelerId,\n removedUserId: response.data.userId,\n plusOneRemove: plusOneCount > 0,\n plusOneCount: plusOneCount,\n });\n location.replace(location.pathname.replace(/invites/, 'travelers'));\n },\n onError: (error) => {\n setDialogOpen(false);\n onRemoveTravelerError(error.response?.data.errors);\n },\n });\n };\n\n const handleOpenDialog = () => {\n setDialogOpen(true);\n trackSegment('Traveler Removal Initiated', {});\n };\n\n const deleteMessageBody = (\n \n \n Heads up!\n Deleting this traveler will remove their access to the trip and also delete their plus-ones.\n \n )\n\n return (\n \n );\n};\n\nexport default TravelerActionsButtonGroup;\n","import { gql } from '@apollo/client'\n\nexport const PLUS_ONE_DELETE = gql`\n mutation TravelerPlusOneDelete($additionalTravelerId: ID!) {\n travelerPlusOneDelete(input: {\n plusOneId: $additionalTravelerId,\n }) {\n errors\n }\n }\n`\n","import React, { useState, useContext, useEffect } from \"react\";\nimport {\n Grid,\n Typography,\n IconButton,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport Avatar from \"../../../avatars/Avatar\";\nimport TravelerActionsButtonGroup from \"./TravelerActionsButtonGroup\";\nimport {\n TravelersType,\n} from \"../TravelersByStatusType\";\nimport CreatePlusOneForm from \"./CreatePlusOneForm\";\nimport AdditionalTravelerActions from \"./AdditionalTravelerActions\";\nimport { TripSiteContext } from '../../../Document';\nimport Link from \"../../../shared/Link\";\nimport Tooltip from \"../../../shared/Tooltip\";\nimport HelpIcon from '@mui/icons-material/Help';\nimport { CREATE_PLUS_ONE } from '../../../../constants/queryParams';\nimport useSegment from \"../../../../services/useSegment\";\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport { PLUS_ONE_DELETE } from \"../../../../graphql/queries/plusOnes\";\nimport { TRAVELERS_QUERY } from \"../../../../graphql/queries/travelers\";\nimport { PlusOneType } from \"../../../../types/PlusOneTypes\";\n\nconst useStyles = makeStyles((theme) => ({\n actions: {\n marginLeft: 'auto',\n },\n helpIcon: {\n color: '#9DAFBE',\n },\n info: {\n paddingTop: `8px !important`,\n },\n joinedTrip: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n lineHeight: '12px',\n marginTop: theme.spacing(0.5),\n },\n error: {\n color: '#e44444',\n fontSize: 14,\n marginTop: theme.spacing(1),\n },\n link: {\n color: theme.palette.primary.main,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n },\n plusOnes: {\n '&:first-child': {\n marginTop: theme.spacing(1),\n },\n },\n treeViewButton: {\n [theme.breakpoints.down(\"sm\")]: {\n paddingRight: 0,\n },\n },\n avatarContainer: {\n [theme.breakpoints.down(\"sm\")]: {\n paddingLeft: '0px !important',\n },\n },\n}));\n\ntype TravelerInfoProps = {\n isCurrentUserPlanner: boolean,\n traveler: TravelersType,\n tripId: string,\n onRemoveTraveler: (travelers: TravelersType[]) => void,\n hidePlusOneAddButton?: boolean,\n};\n\nconst TravelerInfo = ({\n isCurrentUserPlanner = false,\n traveler,\n tripId,\n onRemoveTraveler,\n hidePlusOneAddButton = false,\n}: TravelerInfoProps) => {\n const classes = useStyles();\n const { trackSegment } = useSegment();\n const { currentUserId } = useContext(TripSiteContext);\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const displayWhenQueryParam = (new URLSearchParams(window.location.search).get(CREATE_PLUS_ONE) === 'true')\n const currentTravelerOrPlanner = currentUserId === traveler?.user?.uuid || isCurrentUserPlanner;\n const displayFormInitialValue = displayWhenQueryParam && currentTravelerOrPlanner;\n const [removeTravelerError, setRemoveTravelerError] = useState('');\n const [plusOneFormAutoFocus, setPlusOneFormAutoFocus] = useState(true);\n\n const [displayPlusOnes, setDisplayPlusOnes] = useState(displayFormInitialValue);\n const [plusOneCount, setPlusOneCount] = useState(traveler.plusOnes?.length || 0);\n const [addPlusOneEnabled, setAddPlusOneEnabled] = useState(plusOneCount === 0);\n const [displayPlusOnesLink, setDisplayPlusOnesLink] = useState(addPlusOneEnabled && currentTravelerOrPlanner);\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n if(isMounted) {\n setPlusOneCount(traveler.plusOnes?.length || 0);\n setAddPlusOneEnabled(traveler.plusOnes?.length === 0);\n setDisplayPlusOnesLink((traveler.plusOnes?.length === 0) && currentTravelerOrPlanner)\n setDisplayPlusOnes(traveler.plusOnes?.length > 0);\n } else {\n setIsMounted(true);\n }\n }, [traveler]);\n\n const renderPlusOneActions : React.FC = (plusOne) => {\n return (\n currentTravelerOrPlanner ?\n \n \n \n :\n null\n );\n }\n\n const treeViewToggle = () => {\n setDisplayPlusOnes(!displayPlusOnes);\n setPlusOneFormAutoFocus(false);\n\n trackSegment('Traveler Details Toggled', {\n isMobileApp,\n travelerId: traveler.id,\n state: displayPlusOnes ? 'collapsed' : 'expanded',\n });\n };\n\n const onPlusOnesButtonClick = () => {\n setDisplayPlusOnes(true);\n setPlusOneFormAutoFocus(true);\n };\n\n const plusOnes = traveler.plusOnes?.map((plusOne: PlusOneType, index: number) => {\n return (\n \n \n \n \n \n \n \n \n {plusOne.displayName}\n \n \n {renderPlusOneActions( plusOne )}\n \n )\n });\n\n return (\n <>\n \n {plusOneCount > 0 &&\n \n \n {displayPlusOnes ? : }\n \n \n }\n \n \n \n \n \n {traveler.displayName}\n \n \n Joined trip {traveler.joinedAt}\n \n {removeTravelerError !== '' && (\n \n {removeTravelerError}\n \n )}\n \n {isCurrentUserPlanner && !traveler.isPlanner &&\n \n \n \n }\n \n \n \n {displayPlusOnes && plusOnes}\n \n \n {displayPlusOnes && currentTravelerOrPlanner && !hidePlusOneAddButton &&\n setDisplayPlusOnes(false)}/>\n }\n {!displayPlusOnes && displayPlusOnesLink && !hidePlusOneAddButton &&\n \n \n \n \n \n \n \n \n \n \n }\n \n );\n};\n\nexport default TravelerInfo;","import React from \"react\";\nimport {\n Avatar,\n Box,\n Skeleton,\n Typography,\n} from \"@mui/material\";\n\nconst TravelersSkeleton = ({}) => {\n return <>\n {Array.from({ length: 3 }, (_, index) => (\n \n \n \n \n \n \n \n \n .\n \n \n \n ))}\n ;\n};\n\nexport default TravelersSkeleton;\n","import React, { useContext, useReducer, useRef } from \"react\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport withAddStayPageLayout from \"./withAddStayPageLayout\";\nimport Button from \"../../../buttons/Button\";\nimport { TripSiteContext } from '../../../Document';\nimport StayPreview from \"../StayForm/StayPreview\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\nimport RailsForm from \"../../../shared/RailsForm\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport {\n tripStaysPath,\n} from '../../../../routes';\nimport AddressField from \"../StayForm/AddressField\";\nimport {Place} from \"../../../shared/GooglePlacesAutocomplete\";\nimport pick from \"lodash/pick\";\n\nconst useStyles = makeStyles((theme) => ({\n addDetailsButton: {\n marginTop: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n centeredSection: {\n textAlign: 'center',\n },\n multipleLinksButton: {\n display: 'block',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n textAlign: 'center',\n color: theme.palette.primary.main,\n fontSize: 14,\n fontWeight: 600,\n },\n}));\n\nexport const GoogleMapsForm = () => {\n const [value, setValue] = useStateWithPromise({});\n const [addDetails, setAddDetails] = useStateWithPromise(false);\n const { tripId } = useContext(TripSiteContext);\n const inputRef = useRef(null);\n const classes = useStyles();\n\n const initialState = {\n hasAutomaticAvailability: false,\n showFetchErrorMessage: false,\n showActions: false,\n };\n\n const reducer = (state, action) => {\n switch(action.type) {\n case 'showFetchErrorMessage':\n return { showFetchErrorMessage: true, showActions: false }\n case 'showActions':\n return { showFetchErrorMessage: false, showActions: true, hasAutomaticAvailability: action.hasAutomaticAvailability }\n case 'hideAll':\n return { showFetchErrorMessage: false, showActions: false }\n case 'resetForm':\n setValue({}).then(() => inputRef.current.focus());\n return initialState;\n default:\n throw new Error();\n }\n };\n\n const [{ hasAutomaticAvailability, showActions }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n let stayPreviewParams;\n\n if (value.address) {\n stayPreviewParams = { address: pick(value, ['address', 'google_place_id', 'google_place_image', 'google_place_url', 'longitude', 'latitude']) };\n } else {\n stayPreviewParams = {};\n }\n\n const handleAddressChange = (address: Place) => {\n if (address) {\n setValue({\n address: address.name,\n google_place_id: address.id,\n google_place_url: address.url,\n google_place_image: address.image,\n latitude: address.latitude,\n longitude: address.longitude,\n });\n } else {\n dispatch({ type: 'resetForm' });\n }\n };\n\n const saveButtonLabel = hasAutomaticAvailability ? \"Save & add details\" : \"Save & add pricing\";\n\n return (\n \n \n {addDetails && (\n \n )}\n \n {({ submit }) => (\n \n \n \n \n dispatch({ type: 'showFetchErrorMessage' })}\n onFetch={(hasAutomaticAvailability) => dispatch({ type: 'showActions', hasAutomaticAvailability: hasAutomaticAvailability })}\n onLoading={() => dispatch({ type: 'hideAll' })}\n onRemove={() => dispatch({ type: 'resetForm' })}\n resourcePath={tripStaysPath(tripId)}\n tripId={tripId}\n { ...stayPreviewParams }\n />\n \n {showActions && (\n <>\n setAddDetails(true).then(() => submit())}\n type=\"button\"\n className={classes.addDetailsButton}\n >\n {saveButtonLabel}\n \n \n \n Save now\n \n \n \n )}\n \n \n )}\n \n \n \n );\n};\nexport default withAddStayPageLayout(GoogleMapsForm);\n","import React from \"react\";\nimport StaysSearch, { CustomFiltersAppliedType, DateOptionProps } from \"../../stays_search/StaysSearch\";\nimport withAddStayPageLayout from \"./withAddStayPageLayout\";\nimport { DestinationType } from \"../../../shared/TripObjectTypes\";\nimport { addBySearchTripStaysPath, apiTripSearchListingsPath, tripStaysPath } from \"../../../../routes\";\nimport { SegmentContext } from \"../../../Document\";\nimport ExternalListingForm from \"../../stays_search/ExternalListingForm\";\n\ntype SearchFormProps = {\n currentAppliedFilters: {\n locationName?: string,\n },\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n topSuggestedDestinations: DestinationType[],\n};\n\nconst SearchForm = ({\n currentAppliedFilters,\n customFiltersApplied,\n dateOptions,\n topSuggestedDestinations,\n}: SearchFormProps) => {\n const { tripId } = React.useContext(SegmentContext);\n\n const basePath = addBySearchTripStaysPath(tripId);\n const apiSearchPath = apiTripSearchListingsPath(tripId);\n\n return (\n {\n const resourcePath = tripStaysPath(tripId);\n\n return \n }}\n SearchBackground={({children}) =>
{children}
}\n />\n );\n};\n\nexport default withAddStayPageLayout(SearchForm);\n","import React from \"react\";\nimport {\n Box,\n} from \"@mui/material\";\nimport { makeStyles } from '@mui/styles';\nimport withAddStayPageLayout from \"./withAddStayPageLayout\";\nimport StaysSearch, { CustomFiltersAppliedType, DateOptionProps } from \"../../stays_search/StaysSearch\";\nimport ExternalListingForm from \"../../stays_search/ExternalListingForm\";\nimport { apiSearchAiListingsPath, addBySmartSearchTripStaysPath, tripStaysPath } from \"../../../../routes\";\nimport { CurrentAppliedFilters } from \"../../stays_search/Listings/Filters\";\nimport { TripSiteContext } from \"../../../Document\";\n\ntype SmartSearchFormProps = {\n currentAppliedFilters: CurrentAppliedFilters,\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 'auto',\n marginTop: theme.spacing(3),\n },\n}));\n\nexport const SmartSearchForm : React.FC = ({\n currentAppliedFilters,\n customFiltersApplied,\n dateOptions,\n}) => {\n const { tripId } = React.useContext(TripSiteContext);\n const classes = useStyles();\n const basePath = addBySmartSearchTripStaysPath(tripId);\n const apiSearchPath = apiSearchAiListingsPath();\n const [hasSearched, setHasSearched] = React.useState(false);\n\n React.useEffect(() => {\n const handlePopstate = () => window.location.reload();\n\n window.addEventListener('popstate', handlePopstate);\n\n return () => {\n window.removeEventListener('popstate', handlePopstate);\n };\n }, []);\n\n return (\n \n {\n const resourcePath = tripStaysPath(tripId);\n\n return \n }}\n SearchBackground={({children}) => <>{children}}\n aiSearch\n aiSearchType='aiTripSearch'\n showShortBackground={setHasSearched}\n hasSearched={hasSearched}\n />\n \n );\n};\n\nexport default withAddStayPageLayout(SmartSearchForm);\n","import React, { useContext, useRef, useReducer } from \"react\";\nimport {\n ButtonBase,\n Grid,\n IconButton,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport withAddStayPageLayout from \"./withAddStayPageLayout\";\nimport Button from \"../../../buttons/Button\";\nimport { TripSiteContext } from '../../../Document';\nimport StayPreview from \"../StayForm/StayPreview\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\nimport RailsForm from \"../../../shared/RailsForm\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport {\n newTripBatchStaysPath,\n tripStaysPath,\n} from '../../../../routes';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n centeredSection: {\n textAlign: 'center',\n },\n multipleLinksButton: {\n display: 'block',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n textAlign: 'center',\n color: theme.palette.primary.main,\n fontSize: 14,\n fontWeight: 600,\n },\n noStayImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n paddingTop: theme.spacing(2),\n },\n}));\n\nexport const UrlForm = () => {\n const [value, setValue] = useStateWithPromise({});\n const [addDetails, setAddDetails] = useStateWithPromise(false);\n const { tripId } = useContext(TripSiteContext);\n const inputRef = useRef(null);\n const classes = useStyles();\n\n const initialState = {\n hasAutomaticAvailability: false,\n showFetchErrorMessage: false,\n showActions: false,\n };\n\n const reducer = (state, action) => {\n switch(action.type) {\n case 'showFetchErrorMessage':\n return { showFetchErrorMessage: true, showActions: false }\n case 'showActions':\n return { showFetchErrorMessage: false, showActions: true, hasAutomaticAvailability: action.hasAutomaticAvailability }\n case 'hideAll':\n return { showFetchErrorMessage: false, showActions: false }\n case 'resetForm':\n setValue({}).then(() => inputRef.current.focus());\n return initialState;\n default:\n throw new Error();\n }\n };\n\n const [{ hasAutomaticAvailability, showFetchErrorMessage, showActions }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n let stayPreviewParams;\n\n if (value.url) {\n stayPreviewParams = { url: value.url };\n } else {\n stayPreviewParams = {};\n }\n\n const saveButtonLabel = hasAutomaticAvailability ? \"Save & add details\" : \"Save & add pricing\";\n\n return (\n \n \n {addDetails && (\n \n )}\n \n {({ onFormChange, submit }) => (\n \n \n setValue({ url: \"\" }).then(() => onFormChange())}>\n \n \n ),\n }}\n label=\"Link to listing\"\n name=\"stay[url]\"\n onChange={(event) => setValue({ url: event.target.value.trim() })}\n placeholder=\"Paste your link here\"\n required\n variant=\"outlined\"\n sx={{marginBottom: '8px'}}\n />\n \n dispatch({ type: 'showFetchErrorMessage' })}\n onFetch={(hasAutomaticAvailability) => dispatch({ type: 'showActions', hasAutomaticAvailability: hasAutomaticAvailability })}\n onLoading={() => dispatch({ type: 'hideAll' })}\n onRemove={() => dispatch({ type: 'resetForm' })}\n resourcePath={tripStaysPath(tripId)}\n tripId={tripId}\n { ...stayPreviewParams }\n />\n \n \n Add multiple links\n \n {showFetchErrorMessage && (\n \n \n \n We can't preview that URL.\n \n \n )}\n \n {showActions && (\n <>\n \n setAddDetails(true).then(() => submit())}\n type=\"button\"\n >\n {saveButtonLabel}\n \n \n \n \n Save now\n \n \n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default withAddStayPageLayout(UrlForm);\n","import React, { useContext } from \"react\";\nimport flowRight from \"lodash/flowRight\";\nimport {\n Box,\n ButtonBase,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport { TripSiteContext } from '../../../Document';\nimport {\n addBySearchTripStaysPath,\n addBySmartSearchTripStaysPath,\n addByURLTripStaysPath,\n addByGoogleMapsTripStaysPath,\n tripStaysPath,\n} from '../../../../routes';\nimport withLayout from \"../../trips/microsite/withLayout\";\n\nconst useStyles = makeStyles((theme) => ({\n backButton: {\n color: theme.palette.primary.main,\n fontSize: 14,\n fontWeight: 600,\n },\n root: {\n borderBottom: '1px solid #b2b2b2',\n width: '100%',\n },\n tabsContainer: {\n overflowX: 'scroll',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n header: {\n fontWeight: 600,\n fontSize: 24,\n lineHeight: '36px',\n },\n label: {\n fontSize: theme.spacing(2),\n color: \"#243060\",\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n },\n nonSelectedHover: {\n color: theme.palette.text.secondary,\n opacity: 1.0,\n '&:hover': {\n color: '#7D94A9',\n },\n },\n selectedHover: {\n '&:hover': {\n color: theme.palette.link.hover,\n },\n },\n badge: {\n backgroundColor: '#D3302F',\n borderRadius: 4,\n color: '#FFFFFF',\n fontSize: 12,\n fontWeight: 600,\n padding: '2px 4px',\n },\n}));\n\ntype TabProps = {\n label: string | React.ReactNode,\n path: string,\n testId: string,\n};\n\nexport const withAddStayPageLayout = (Page) => (function withAddStayPageLayout(props) {\n const classes = useStyles();\n const { tripId } = useContext(TripSiteContext);\n\n const tabs : TabProps[] = [\n { label: 'By search', path: addBySearchTripStaysPath(tripId), testId: 'By-search-tab' },\n { label: 'By URL', path: addByURLTripStaysPath(tripId), testId: 'By-URL-tab' },\n { label: 'By Google Maps', path: addByGoogleMapsTripStaysPath(tripId), testId: 'By-Google-Maps-tab' },\n ];\n\n const smartSearchTab = {\n label:
By Smart Search New!
,\n path: addBySmartSearchTripStaysPath(tripId),\n testId: 'By-Smart-Search-tab',\n };\n\n tabs.unshift(smartSearchTab);\n\n const isActiveTab = (tab) => tab.path === window.location.pathname;\n\n const activeValue = tabs.findIndex((tab) => isActiveTab(tab));\n\n return (\n \n \n Back to stays\n \n\n Add stays\n\n \n {tabs.map((tab, index) => (\n \n ))}\n \n\n \n \n \n \n );\n});\n\nconst fullWidthLayout = (Page, props) => {\n return withLayout(Page, { maxWidth: false, ...props })\n};\n\nexport default flowRight(fullWidthLayout, withAddStayPageLayout);\n","import React, { useReducer } from \"react\";\nimport {\n Grid,\n IconButton,\n TextField,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport RemoveCircleIcon from '@mui/icons-material/RemoveCircle';\nimport StayPreview from \"./StayForm/StayPreview\";\nimport { GlobalContext, hocRailsAction } from \"../../Document\";\nimport TextButton from \"../../buttons/TextButton\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport * as routes from '../../../routes';\n\nconst {\n tripBatchStaysPath,\n tripStaysPath,\n addByURLTripStaysPath,\n} = routes;\n\ntype BatchStayFormProps = {\n tripId: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n addButtonContainer: {\n marginTop: theme.spacing(4),\n textAlign: 'center',\n },\n removeUrlButton: {\n color: '#c06f78',\n },\n}));\n\nconst defaultUrlsSize = 3;\nconst maxAllowedUrls = 5;\n\nconst reducer = (state, action) => {\n const urls = Array.from(state.urls);\n\n switch (action.type) {\n case 'addUrl':\n if (urls.length === maxAllowedUrls) { return state }\n\n return { urls: urls.concat(\"\") };\n case 'removeUrl':\n if (urls.length === 1) { return state }\n\n urls.splice(action.index, 1);\n\n return { urls: urls };\n case 'setUrl':\n urls[action.index] = action.value;\n\n return { urls: urls };\n default:\n throw new Error();\n }\n};\n\nconst BatchStayForm = ({\n tripId,\n}: BatchStayFormProps) => {\n const classes = useStyles();\n\n const initialState = {\n urls: Array(defaultUrlsSize).fill(''),\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n \n \n {state.urls.map((url, index) => (\n \n \n \n dispatch({ type: 'setUrl', index: index, value: event.target.value })\n }\n InputProps={{\n endAdornment: (\n dispatch({ type: 'removeUrl', index: index })}\n >\n \n \n ),\n }}\n />\n \n \n \n ))}\n {state.urls.length < maxAllowedUrls && (\n \n dispatch({ type: 'addUrl' })}>\n + Add another link\n \n \n )}\n \n \n );\n};\n\nexport default hocRailsAction(BatchStayForm);\n","import { gql } from '@apollo/client'\n\nexport const STAY_BOOKING_DELETE = gql`\n mutation StayBookingDelete($stayBookingId: ID!) {\n stayBookingDelete(input: {\n stayBookingId: $stayBookingId,\n }) {\n errors\n }\n }\n`\n","import React, { useState } from \"react\";\nimport { Link, Stack, Typography, useMediaQuery } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { useMutation } from \"@apollo/client\";\nimport DeleteResourceConfirmationDialog from \"../../shared/DeleteResourceConfirmationDialog\";\nimport { StayBookingType } from \"../../shared/TripObjectTypes\";\nimport { STAY_BOOKING_DELETE } from \"../../../graphql/queries/stayBookings\";\nimport { STAYS_LIST_QUERY } from \"../../../graphql/queries/stays\";\nimport useSegment from \"../../../services/useSegment\";\nimport Errors from \"../../shared/Errors\";\nimport * as routes from \"../../../routes\";\n\ntype StayBookingActionsProps = {\n stayBooking: StayBookingType,\n stayId?: string,\n tripId?: string,\n};\n\nconst StayBookingActions : React.FC = ({ stayBooking, tripId, stayId }) => {\n const { trackSegment } = useSegment();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const [dialogOpen, setDialogOpen] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = React.useState('');\n const [errors, setErrors] = useState([]);\n const [deleteBookingMutation] = useMutation(STAY_BOOKING_DELETE, { refetchQueries: [STAYS_LIST_QUERY] });\n\n const {\n editTripStayBookingPath,\n } = routes;\n\n const handleRemoveBooking = () => {\n trackSegment('Remove Stay Booking Initiated', {\n isMobileApp: isMobile,\n objectId: stayId,\n bookingId: stayBooking.uuid,\n });\n setDialogOpen(true);\n };\n\n const trackBookingRemoveEvent = () => {\n trackSegment('Stay Booking Removed', {\n isMobileApp: isMobile,\n objectId: stayId,\n bookingId: stayBooking.uuid,\n });\n };\n\n const onConfirm = () => {\n deleteBookingMutation({\n variables: {\n stayBookingId: stayBooking.id,\n },\n onCompleted: (result) => {\n if (result.errors?.length > 0) {\n setErrors(errors);\n } else {\n setSnackbarMessage && setSnackbarMessage(\"Success! Booking details removed.\");\n trackBookingRemoveEvent();\n }\n },\n onError: (error) => {\n setErrors([error.message]);\n },\n });\n setDialogOpen( false );\n };\n\n const handleChangeBooking = () => {\n trackSegment('Stay Booking Edit Initiated', {\n isMobileApp: isMobile,\n objectId: stayId,\n bookingId: stayBooking.uuid,\n });\n\n window.location.href = editTripStayBookingPath(tripId, stayId, stayBooking.uuid);\n };\n\n const deleteMessageBody = (\n \n \n Heads up!\n Once booking details are removed, this stay will no longer be marked as "booked."\n \n );\n\n return (\n <>\n \n \n {stayId && tripId && (\n \n Change\n \n )}\n \n Remove\n \n \n {errors && ()}\n \n setDialogOpen(false)}\n onConfirm={onConfirm}\n path=''\n message={deleteMessageBody}\n snackbarMessage={snackbarMessage}\n />\n \n );\n};\n\nexport default StayBookingActions;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Divider,\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { hocRailsAction } from \"../../Document\";\nimport AvailabilityAndPricingSection from \"./StayForm/AvailabilityAndPricingSection\";\nimport DetailsFields from \"./StayForm/DetailsFields\";\nimport AddressField from \"./StayForm/AddressField\";\nimport Button from \"../../buttons/Button\";\nimport CommentField from \"../trips/microsite/shared/CommentField\"\nimport ImageUploader from \"../../shared/ImageUploader\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\nimport * as routes from '../../../routes';\n\nconst {\n tripStayPath,\n tripStaysPath,\n} = routes;\n\ntype StayDetailsFormProps = {\n stay: any,\n stayId: string,\n onlyComments: boolean,\n tripId: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n hidden: {\n display: 'none',\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n },\n addressLabel: {\n marginBottom: theme.spacing(1),\n },\n backButton: {\n marginRight: theme.spacing(2),\n },\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst StayDetailsForm = ({\n stay,\n stayId,\n onlyComments,\n tripId,\n}: StayDetailsFormProps) => {\n const [value, setValue] = useStateWithPromise({});\n const classes = useStyles();\n const maxSteps = onlyComments ? 1 : 2;\n const [step, setStep] = useState(1);\n const [imageUrl, setImageUrl] = useState(stay.imageUrl);\n\n const onFormSubmit = (event) => {\n if (step !== maxSteps) {\n setStep(step + 1);\n event.preventDefault();\n }\n };\n\n const handleAddressChange = (address: Place) => {\n if (address) {\n setValue({\n address: address.name,\n google_place_id: address.id,\n google_place_url: address.url,\n google_place_image: address.image,\n latitude: address.latitude,\n longitude: address.longitude,\n });\n }\n };\n\n const subtitle = onlyComments ? undefined : `Step ${step} of ${maxSteps}`;\n\n const hideDetailsStep = onlyComments || (step === maxSteps);\n const canGoBack = step === maxSteps && !onlyComments;\n\n return (\n onFormSubmit(event)}\n saveButtonLabel={step === maxSteps ? \"Finish\" : \"Next\"}\n saveButtonType={step === maxSteps ? 'submit' : 'button'}\n subtitle={subtitle}\n title=\"Add a stay\"\n withChangeDetection={false}\n extraSaveBarButton={canGoBack ? (\n setStep(step - 1)}\n variant=\"secondary\"\n >\n Back\n \n ) : null}\n >\n {!onlyComments && (\n \n \n \n Name this place\n \n \n \n \n \n \n setImageUrl(url)}\n originalImages={stay.originalImages}\n />\n \n \n \n Add to map view\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(StayDetailsForm);\n","import React, { useReducer } from \"react\";\nimport {\n Divider,\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport AvailabilityAndPricingSection from \"./StayForm/AvailabilityAndPricingSection\";\nimport StayFormProps from \"./StayForm/StayFormProps\";\nimport AddressField from \"./StayForm/AddressField\";\nimport DetailsFields from \"./StayForm/DetailsFields\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport ImageUploader from '../../shared/ImageUploader';\nimport * as routes from '../../../routes';\n\nconst {\n tripStayPath,\n tripStaysPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n fontSize: 18,\n fontWeight: 600,\n },\n}));\n\nconst StayForm = ({\n stay,\n addressOnly,\n errors,\n stayId,\n shouldFocusPrice,\n tripId,\n}: StayFormProps) => {\n const classes = useStyles();\n const collectUrl = !addressOnly;\n\n const initialState = {\n images: stay.images,\n name: stay.name,\n originalImages: stay.originalImages,\n originalName: stay.originalName,\n };\n\n const stayReducer = (state, action) => {\n switch (action.type) {\n case 'changeName':\n return Object.assign({}, state, { name: action.name });\n case 'changeImage':\n return Object.assign({}, state, { imageUrl: action.url });\n default:\n throw new Error();\n }\n };\n\n const [state, dispatch] = useReducer(stayReducer, initialState);\n const shouldDisplayNameInput = state.originalName || addressOnly || stay.name;\n\n return (\n \n \n \n \n \n \n \n \n Details\n \n \n {collectUrl && (\n \n \n \n )}\n dispatch({ type: 'changeImage', url })}\n originalImages={state.originalImages}\n />\n {shouldDisplayNameInput && (\n \n \n dispatch({ type: 'changeName', name: event.target.value })}\n />\n \n )}\n \n \n Add to map view\n \n \n \n {!stay && (\n \n \n \n )}\n {!state.provider && (\n \n \n \n )}\n \n \n \n \n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(StayForm);\n","import React, { useContext } from \"react\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport GooglePlacesAutocomplete, { Place } from \"../../../shared/GooglePlacesAutocomplete\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\n\ntype AddressFieldProps = {\n required?: boolean,\n currentAddress?: string,\n currentGooglePlaceId?: string,\n currentGooglePlaceUrl?: string,\n currentImage?: string,\n currentLongitude?: number,\n currentLatitude?: number,\n onChange?: (address: Place) => void,\n};\n\nconst AddressField = React.forwardRef(({\n currentAddress,\n currentGooglePlaceId,\n currentGooglePlaceUrl,\n currentImage,\n currentLongitude,\n currentLatitude,\n onChange,\n required,\n}: AddressFieldProps, externalInputRef) => {\n const { onFormChange } = useContext(FormContext);\n const [address, setAddress] = useStateWithPromise({\n id: currentGooglePlaceId,\n image: currentImage,\n latitude: currentLatitude,\n longitude: currentLongitude,\n name: currentAddress,\n url: currentGooglePlaceUrl,\n });\n\n const addressValue = address ? address.name : '';\n const googlePlaceId = address ? address.id : '';\n const googlePlaceUrl = address ? address.url : '';\n const googlePlaceLocation = (address && address.longitude && address.latitude) ? `POINT(${address.longitude} ${address.latitude})` : '';\n const googlePlaceImage = address ? address.image : '';\n\n const handleAddressChange = (value: Place) => {\n setAddress(value).then(() => {\n onFormChange();\n if (onChange) onChange(value);\n });\n };\n\n return (\n <>\n \n \n \n \n \n handleAddressChange(value)}\n fullWidth\n placeholder=\"Search by name or address\"\n ref={externalInputRef}\n required={required}\n />\n \n );\n});\n\nexport default AddressField;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport DateOptionsAvailability from \"./DateOptionsAvailability\";\nimport NoSuggestionsYet from \"../../../shared/NoSuggestionsYet\";\nimport { DateOptionWithAvailabilityType } from '../../../shared/TripObjectTypes';\n\ntype AvailabilityAndPricingSectionProps = {\n stay: {\n dateOptions: DateOptionWithAvailabilityType[],\n hasAutomaticAvailability: boolean,\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n noSuggestedDateOptions: {\n padding: 0,\n },\n subtitle: {\n fontSize: 18,\n fontWeight: 600,\n },\n}));\n\nconst AvailabilityAndPricingSection = ({\n stay,\n}: AvailabilityAndPricingSectionProps) => {\n const classes = useStyles();\n const dateOptions = stay.dateOptions;\n const chosenDateOption = dateOptions.find(date => date.isChosenDate);\n const dateOptionsList = chosenDateOption ? [chosenDateOption] : dateOptions;\n const mustDisplayAvailabilityTitle = !stay.hasAutomaticAvailability;\n\n return (\n \n \n \n Availability & pricing\n \n {mustDisplayAvailabilityTitle && !chosenDateOption && (\n Which of the suggested date options is the property available for?\n )}\n {mustDisplayAvailabilityTitle && chosenDateOption && (\n Is this listing available for your group’s finalized dates?\n )}\n \n \n \n \n {dateOptions.length === 0 && (\n \n \n \n \n \n )}\n \n );\n};\n\nexport default AvailabilityAndPricingSection;\n","import React from \"react\";\nimport { Typography } from \"@mui/material\";\nimport DateOptionsAvailabilityFields from \"./DateOptionsAvailability/DateOptionsAvailabilityFields\";\nimport { DateOptionWithAvailabilityType } from \"../../../shared/TripObjectTypes\";\n\ntype DateOptionsAvailabilityProps = {\n dateOptions: DateOptionWithAvailabilityType[],\n hasChosenDate: boolean,\n manual: boolean,\n};\n\nconst DateOptionsAvailability = ({\n dateOptions,\n hasChosenDate,\n manual,\n}: DateOptionsAvailabilityProps) => {\n return (\n <>\n {manual && (\n \n )}\n {!manual && (\n \n Troupe automatically updates this listing’s pricing and availability for you.\n \n )}\n \n );\n};\n\nexport default DateOptionsAvailability;\n","import React, { useContext, useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Checkbox,\n Grid,\n FormControlLabel,\n TextField,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport useStateWithPromise from \"../../../../../services/useStateWithPromise\"\nimport Chip from \"../../../../buttons/Chip\";\nimport DateOption from \"../../../../shared/DateOption\";\nimport getMostPopularDateOptions from \"../../../../../services/getMostPopularDateOptions\";\nimport { DateOptionWithAvailabilityType } from \"../../../../shared/TripObjectTypes\";\nimport * as routes from \"../../../../../routes\"\nimport { MaxPrice } from \"../../../../Document\";\n\ntype DateOptionsAvailabilityFieldsProps = {\n dateOptions: DateOptionWithAvailabilityType[],\n hasChosenDate: boolean,\n withTotalPriceField: boolean,\n};\n\nconst {\n tripDatesPath,\n} = routes\n\nconst useStyles = makeStyles((theme) => ({\n dateOption: {\n marginBottom: theme.spacing(2),\n paddingLeft: '10px',\n paddingRight: '10px',\n },\n dateOptionName: {\n fontWeight: 600,\n },\n availableButtonText: {\n fontSize: 14,\n paddingLeft: theme.spacing(0.5),\n fontWeight: 500,\n },\n chipsContainer: {\n display: 'flex',\n justifyContent: 'space-evenly',\n marginTop: theme.spacing(2),\n },\n unavailableChip: {\n maxWidth: '135px',\n },\n dateOptionsContainer: {\n [theme.breakpoints.up(theme.breakpoints.values.sm - 200)]: {\n maxWidth: '420px',\n flexGrow: 1,\n margin: 'auto',\n },\n },\n dateOptionIcon: {\n verticalAlign: 'bottom',\n marginRight: theme.spacing(1),\n },\n availableIcon: {\n color: '#1EBE95',\n },\n unavailableIcon: {\n color: '#FB5D5D',\n },\n totalPrice: {\n marginTop: theme.spacing(1),\n },\n}));\n\nconst DateOptionsAvailabilityFields = ({\n dateOptions,\n hasChosenDate,\n withTotalPriceField,\n}: DateOptionsAvailabilityFieldsProps) => {\n const classes = useStyles();\n const formContext = useContext(FormContext);\n const [\n dateOptionsStates,\n setDateOptionsStates,\n ] = useStateWithPromise(Array(...dateOptions.map(dateOption => dateOption.available)));\n const [allDatesAvailable, setAllDatesAvailable] = useState(dateOptionsStates.every(element => !!element));\n\n const updateDateOptionState = (index, available) => {\n let newDateOptionsStates = [...dateOptionsStates];\n\n let newState = newDateOptionsStates[index] === available ? null : available;\n\n newDateOptionsStates[index] = newState;\n\n setAllDatesAvailable(newDateOptionsStates.every(element => !!element))\n setDateOptionsStates(newDateOptionsStates).then(() => formContext.onFormChange());\n };\n\n const setOptionsAvailable = (available) => {\n let newDateOptionsStates = [...dateOptionsStates];\n let newState = available ? available : null;\n\n setAllDatesAvailable(!allDatesAvailable);\n\n newDateOptionsStates.map((element, index) => {\n newDateOptionsStates[index] = newState;\n });\n\n setDateOptionsStates(newDateOptionsStates).then(() => {\n formContext.onFormChange()\n });\n };\n\n const isAvailable = (index) => dateOptionsStates[index] === true;\n const isUnavailable = (index) => dateOptionsStates[index] === false;\n const mostPopularOptionsIds = getMostPopularDateOptions(dateOptions).map(option => option.id);\n\n return (\n <>\n {\n {dateOptions.length > 0 && !hasChosenDate && (\n \n setOptionsAvailable(event.currentTarget.checked) }\n id=\"availableAllDates\"\n />\n }\n label=\"Available for all dates\"\n />\n \n )}\n {dateOptions.map((dateOption, index) => (\n \n <>\n \n \n \n {dateOption.availabilityDateId && (\n <>\n \n \n )}\n \n \n \n {withTotalPriceField &&\n \n }\n \n updateDateOptionState(index, true)}\n variant=\"successLighter\"\n >\n \n \n Available\n \n \n updateDateOptionState(index, false)}\n className={classes.unavailableChip}\n variant=\"danger\"\n >\n \n \n Unavailable\n \n \n \n \n \n \n ))}}\n \n );\n};\n\nexport default DateOptionsAvailabilityFields;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport StepperInput from \"../../../shared/StepperInput\";\nimport { MaxPrice } from \"../../../Document\";\n\ntype DetailsFieldsProps = {\n shouldFocusPrice?: boolean,\n stay: {\n bedroomsCount: number,\n hasAutomaticAvailability: boolean,\n maxGuests: number,\n pricePerNight: string,\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n}));\n\n\nconst DetailsFields = ({ shouldFocusPrice, stay }: DetailsFieldsProps) => {\n const { onFormChange } = useContext(FormContext);\n const classes = useStyles();\n const [price, setPrice] = useState(stay.pricePerNight);\n\n const checkMaxPrice = (price) => {\n if(price < MaxPrice) {setPrice(price)}\n }\n\n const scrollToPrice = () => {\n document.getElementById('price-label')\n .scrollIntoView({ behavior: 'smooth', block: 'start' })\n };\n\n useEffect(() => {\n if (shouldFocusPrice) {\n scrollToPrice();\n };\n }, []);\n\n const [\n maxGuests,\n setMaxGuests,\n ] = useState(stay.maxGuests || 1);\n\n const [\n bedroomsCount,\n setBedroomsCount,\n ] = useState(stay.bedroomsCount || 0);\n\n return (\n \n {!stay.hasAutomaticAvailability && (\n \n \n Cost\n \n checkMaxPrice(event.target.value)}\n inputProps={{\n min: 0,\n max: MaxPrice,\n step: 0.01,\n inputMode: \"decimal\",\n }}\n />\n \n )}\n \n \n Bedrooms\n \n \n \n \n Max. guests\n \n \n \n );\n};\n\nexport default DetailsFields;\n","import React, { useCallback, useEffect, useReducer } from \"react\";\nimport axios from \"axios\";\nimport debounce from 'lodash/debounce';\nimport { Box, Grid } from \"@mui/material\";\nimport { makeStyles, withStyles } from \"@mui/styles\";\nimport BaseSkeleton from \"@mui/material/Skeleton\";\nimport Stay from \"../../trips/microsite/HousingPage/Stay\";\n\ntype AddressParams = {\n address: string,\n google_place_id: string,\n google_place_url: string,\n google_place_image: string,\n};\n\ntype StayPreviewProps = {\n onError?: () => void,\n onFetch?: (hasAutomaticAvailability) => void,\n onLoading?: () => void,\n onRemove?: () => void,\n resourcePath?: string,\n tripId?: string,\n url?: string,\n address?: AddressParams,\n};\n\nconst useStyles = makeStyles((theme) => ({\n skeletonCard: {\n border: \"2px solid #e6e7e8\",\n borderRadius: 5,\n \"&:focus\": {\n outline: \"none\",\n },\n padding: theme.spacing(2),\n },\n}));\n\nconst stayReducer = (state, action) => {\n switch(action.type) {\n case 'loadStay':\n return { stay: null, loading: true, fetched: false };\n case 'showStay':\n return { stay: action.data, loading: false, fetched: true };\n case 'removeStay':\n return { stay: null, loading: false, fetched: false }\n default:\n throw new Error();\n }\n};\n\nconst Skeleton = withStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n}))(BaseSkeleton);\n\nconst StayPreview = ({\n onError,\n onFetch,\n onLoading,\n onRemove,\n resourcePath,\n tripId,\n url,\n address,\n}: StayPreviewProps) => {\n const classes = useStyles();\n\n const initialState = {\n stay: null,\n fetched: false,\n loading: false,\n };\n\n const [{ stay, fetched, loading }, dispatch] = useReducer(\n stayReducer,\n initialState,\n );\n\n const isParamsPresent = url ||\n (address && Object.entries(address).length !== 0);\n\n const fetchStay = (parameters) => {\n dispatch({ type: 'loadStay' });\n\n axios.get(\n '/api/stays/fetch_stay',\n { params: { trip_id: tripId, location: `POINT(${parameters.longitude} ${parameters.latitude})`, ...parameters } },\n ).then((response) => {\n dispatch({ type: 'showStay', data: response.data });\n }).catch(() => {\n dispatch({ type: 'showStay', data: null });\n });\n };\n\n const debouncedFetchStay = useCallback(\n debounce((parameters) => fetchStay(parameters), 500),\n [],\n );\n\n const completeUrl = (newUrl) => {\n if (!newUrl || newUrl === \"\" || newUrl.startsWith(\"http\")) {\n return newUrl;\n } else {\n return `https://${newUrl}`;\n }\n };\n\n const missingStay = !stay;\n const stayIsLoaded = !missingStay && fetched;\n const stayCannotBeFetched = fetched && missingStay;\n\n useEffect(() => {\n if (url) {\n debouncedFetchStay({ url: completeUrl(url) });\n }\n }, [url]);\n\n useEffect(() => {\n if (address && Object.entries(address).length !== 0) {\n debouncedFetchStay({ ...address });\n }\n }, [address?.google_place_id]);\n\n useEffect(() => {\n if (!isParamsPresent) {\n dispatch({ type: 'removeStay' });\n }\n }, [url, address]);\n\n useEffect(() => {\n if (loading) {\n onLoading && onLoading();\n } else if (stayIsLoaded) {\n onFetch && onFetch(stay.hasAutomaticAvailability);\n } else if (stayCannotBeFetched) {\n onError && onError();\n } else {\n onRemove && onRemove();\n }\n }, [loading, stay]);\n\n return (\n <>\n {loading && (\n \n \n \n {[...Array(4)].map((element, index) => (\n \n ))}\n \n \n )}\n {stayIsLoaded && (\n \n \n \n )}\n \n );\n};\n\nexport default StayPreview;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../buttons/Button\";\nimport useSegment from \"../../../services/useSegment\";\n\ntype ExternalListingCTAProps = {\n publicUrl: string,\n provider: string,\n location: 'Public Search' | 'Ai Search'\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n float: 'right',\n whiteSpace: 'nowrap',\n width: '100%',\n height: '40px !important',\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n },\n}));\n\nexport const ExternalListingCTA = ({\n publicUrl,\n provider,\n location,\n}: ExternalListingCTAProps) => {\n const classes = useStyles();\n const { trackLinkSegment } = useSegment();\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Stay Listing CTA Clicked',\n {\n location,\n ctaName: 'view',\n source: provider,\n },\n );\n }\n }, []);\n\n return (\n window.open(publicUrl, '_blank')}\n variant='primary'\n ref={buttonRef}\n >\n View\n \n );\n};\n\nexport default ExternalListingCTA;\n","import React, { useContext, useState } from \"react\";\nimport axios from \"axios\";\nimport clsx from \"clsx\";\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { makeStyles } from \"@mui/styles\";\nimport CheckIcon from '@mui/icons-material/Check';\nimport Button from \"../../buttons/Button\";\nimport { ListingsContext } from \"./StaysSearch\";\nimport { FormsContext } from \"../../Document\";\nimport { tripStayURL } from '../../../routes';\nimport useSegment from '../../../services/useSegment';\nimport {isCurrentlyInPublicSearch, isCurrentlySmartSearch} from \"../../../services/windowLocation\";\n\ntype ExternalListingFormProps = {\n staysPath: string,\n canAddToTrip: boolean,\n fullWidth: boolean,\n id: string,\n url: string,\n source: 'SERP search' | 'Smart Search'\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n float: 'right',\n whiteSpace: 'nowrap',\n width: '100%',\n height: '40px !important',\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n zIndex: 2,\n },\n fullWidth: {\n width: '100%',\n },\n added: {\n cursor: 'initial',\n background: '#1EBE95 !important',\n borderColor: '#1EBE95 !important',\n color: 'white !important',\n boxShadow: 'none !important',\n },\n icon: {\n verticalAlign: 'middle',\n marginRight: theme.spacing(1),\n fontSize: 18,\n },\n addedText: {\n verticalAlign: 'middle',\n },\n spinner: {\n height: '30px !important',\n width: '30px !important',\n color: 'white',\n },\n}));\n\nexport const ExternalListingForm = ({\n staysPath,\n canAddToTrip,\n fullWidth,\n id,\n url,\n source,\n}: ExternalListingFormProps) => {\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const { onExternalListingAdd } = useContext(ListingsContext);\n const { csrfToken, triggerLogIn } = useContext(FormsContext);\n const { trackSegment } = useSegment();\n\n const axiosCreateStayRequest = () => (\n axios.request({\n method: 'post',\n url: staysPath,\n data: {\n url,\n after_create_redirect_path: window.location.href,\n authenticity_token: csrfToken,\n },\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n })\n );\n\n const createStay = () => {\n if (canAddToTrip) {\n setLoading(true);\n axiosCreateStayRequest()\n .then((response) => {\n trackStayAddedEvent(response.data);\n onExternalListingAdd(id);\n })\n .catch((error) => {\n if (error.response.status === 401) {\n triggerLogIn()\n } else {\n throw error;\n }\n })\n .finally(() => setLoading(false));\n }\n };\n\n const trackStayAddedEvent = (stay) => {\n trackSegment('Stay Added', {\n category: 'Stays',\n method: `\"Add to trip\" submitted successfully in ${source} in Stays`,\n name: stay.name,\n stayId: stay.uuid,\n url: tripStayURL(stay.tripId, stay.uuid),\n source: stay.provider,\n page: isCurrentlySmartSearch() ? 'Smart Search' :'SERP',\n });\n };\n\n return (\n <>\n \n { loading ?\n \n : canAddToTrip ?\n \"+ Add\"\n : (\n <>\n \n Added\n \n )\n }\n \n \n );\n};\n\nexport default ExternalListingForm;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { makeStyles } from '@mui/styles';\nimport FiltersButton from \"./FiltersButton\";\nimport SearchFilterChips from \"./SearchFilterChips\";\nimport AiSearchPaginationText from \"./AiSearchPaginationText\";\nimport { Pagination as PaginationType } from \"./ListingsBox\"\nimport {aiSearchType, CurrentAppliedFilters} from \"./Filters\";\n\ntype AiFiltersProps = {\n currentAppliedFilters: CurrentAppliedFilters,\n onHandleAiSearchFilterChange: (value: object) => void,\n onFilter: (value: object) => void,\n triggerFilterDialog: (value: boolean) => void,\n aiSearchType?: aiSearchType,\n pagination: PaginationType,\n};\n\nconst useStyles = makeStyles(() => ({\n searchFilterChips: {\n overflowX: 'auto',\n },\n filtersContainer: {\n flexWrap: 'nowrap',\n },\n}));\n\nconst AiFilters : React.FC = ({\n currentAppliedFilters,\n onHandleAiSearchFilterChange,\n onFilter,\n triggerFilterDialog,\n aiSearchType,\n pagination,\n}) => {\n const classes = useStyles();\n const {\n minGuests,\n locationName,\n arrival,\n departure,\n } = currentAppliedFilters;\n return(\n <>\n \n \n \n \n \n \n \n \n \n \n )\n};\n\nexport default AiFilters;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ExamplePrompt from \"./AiPublicSearchEmptyState/ExamplePrompt\";\n\nconst useStyles = makeStyles((theme) => ({\n examplePrompts: {\n color: '#4A6176',\n fontSize: 18,\n fontWeight: 600,\n marginBottom: theme.spacing(3),\n },\n root: {\n paddingTop: '90px',\n },\n header: {\n alignItems: 'flex-start',\n display: 'flex',\n marginBottom: '50px',\n },\n headerText: {\n color: '#4A6176',\n fontSize: 22,\n fontWeight: 600,\n marginLeft: theme.spacing(2),\n maxWidth: '660px',\n [theme.breakpoints.down(600)]: {\n fontSize: 18,\n },\n },\n listTitle: {\n color: \"#7D94A9\",\n fontSize: 18,\n fontWeight: 600,\n marginTop: '70px',\n marginBottom: theme.spacing(2),\n },\n listItem: {\n color: \"#7D94A9\",\n fontSize: 14,\n display: 'flex',\n alignItems: 'flex-start',\n padding: theme.spacing(2, 1),\n '& > img': {\n paddingTop: '4px',\n },\n },\n}));\n\nconst prompts = [\n {\n prompt: \"Somewhere tropical and fun for spring break with the girls—we need a grill and pool!\",\n image: \"/assets/example-prompts/avatar-1.svg\",\n backgroundColor: \"#F4F5FF\",\n borderColor: \"#C3C6FE\",\n },\n {\n prompt: \"Seeking the coolest place for the Art Basel squad, not too far from the convention center but away from chaos.\",\n image: \"/assets/example-prompts/avatar-2.svg\",\n backgroundColor: \"#FFF6E6\",\n borderColor: \"#FEE0A6\",\n },\n {\n prompt: \"Celebrating Mardi Gras and need a place for 10 people in New Orleans with a pool!\",\n image: \"/assets/example-prompts/avatar-3.svg\",\n backgroundColor: \"#E9F9F4\",\n borderColor: \"#A5E5D5\",\n },\n {\n prompt: \"Looking for a nice property in Viejo, San Juan for our family reunion. Must have air conditioning!\",\n image: \"/assets/example-prompts/avatar-4.svg\",\n backgroundColor: \"#ECF4FF\",\n borderColor: \"#C0DAFF\",\n },\n {\n prompt: \"A fancy place with parking for when we visit Nashville for the first time during CMA Fest.\",\n image: \"/assets/example-prompts/avatar-5.svg\",\n backgroundColor: \"#FFF6E6\",\n borderColor: \"#FEE0A6\",\n },\n {\n prompt: \"Brother's wedding! 7-guy Vegas bachelor party. Need a place with pool, grill, near strip.\",\n image: \"/assets/example-prompts/avatar-6.svg\",\n backgroundColor: \"#F4F5FF\",\n borderColor: \"#C3C6FE\",\n },\n];\n\nconst thingsToKnow = [\n \"Troupie currently provides recommended filters and location suggestions, explaining the reasons behind its choices.\",\n \"Troupie understands many languages but might not perfectly interpret/translate.\",\n \"For accurate pricing, Troupie requires your travel dates.\",\n \"Troupie aims to help but may occasionally provide inaccurate information. Double-check with other sources before important planning decisions!\",\n];\n\nconst AiPublicSearchEmptyState = () => {\n const classes = useStyles();\n\n const ListItem = ({ text }) => (\n \n \n \n {text}\n \n \n );\n\n return (\n \n \n \n \n Tell Troupie what you’re looking for and let our powerful AI search engine do the rest!\n \n \n\n Example prompts\n\n \n {prompts.map((prompt, index) => (\n \n \n \n ))}\n \n\n Things to know\n\n \n {thingsToKnow.map((item, index) => (\n \n ))}\n \n \n );\n};\n\nexport default AiPublicSearchEmptyState;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Avatar,\n Box,\n ButtonBase,\n} from \"@mui/material\";\nimport { ListingsContext } from \"../../StaysSearch\";\n\ntype ExamplePromptProps = {\n backgroundColor: string,\n borderColor: string,\n prompt: string;\n image: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n borderRadius: '0px 30px 30px 30px',\n borderStyle: 'solid',\n borderWidth: '1px',\n color: '#4A6176',\n fontSize: 16,\n fontWeight: 400,\n height: '100%',\n lineHeight: '22px',\n padding: theme.spacing(2,3),\n textAlign: 'left',\n },\n root: {\n alignItems: 'flex-start',\n display: 'flex',\n height: '100%',\n },\n arrow: {\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst ExamplePrompt = ({\n backgroundColor,\n borderColor,\n prompt,\n image,\n}: ExamplePromptProps) => {\n const classes = useStyles();\n const { onPromptExampleClick } = React.useContext(ListingsContext);\n\n return (\n \n \n onPromptExampleClick(prompt)}\n sx={{ backgroundColor, borderColor }}\n >\n “{prompt}”\n \n \n \n );\n};\n\nexport default ExamplePrompt;\n","import React from \"react\";\nimport {\n Grid,\n Skeleton,\n Typography,\n useMediaQuery,\n Box,\n Link,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport TooltipBase from \"@mui/material/Tooltip\"\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport {aiSearchType, CurrentAppliedFilters} from \"./Filters\";\nimport { Pagination as PaginationType } from \"./ListingsBox\"\nimport { convertSnakeCaseToNormalEnglish, omitFalsyAndUnchecked } from \"../../../../services/stringService\";\nimport SeeMoreOrLess from \"../../../shared/SeeMoreOrLess\";\nimport SearchFeedbackBox from \"../SearchFeedbackBox\";\nimport axios from \"axios\";\nimport { GlobalContext } from \"../../../Document\";\nimport AlternativesDialog from \"./AlternativesDialog\";\nimport { useTrackSERPEvent } from \"../../../../services/segmentEvents/useSERPEvents\";\nimport AiFilters from \"./AiFilters\";\n\nexport type AiResultsProps = {\n pagination: PaginationType,\n currentAppliedFilters: CurrentAppliedFilters,\n triggerFilterDialog: (value: boolean) => void,\n modelRequestId?: string,\n aiSearchType?: aiSearchType,\n onFilter: (value: object) => void,\n prompt?: string,\n hideRationaleAndAlternatives?: boolean,\n}\n\nexport type Alternative = {\n name: string,\n rationale: string,\n};\n\nconst useStyles = makeStyles(() => ({\n alternativesLink: {\n color: '#000',\n fontSize: 16,\n fontWeight: 500,\n cursor: 'pointer',\n textDecoration: 'none',\n },\n arrow: {\n marginLeft: '4px',\n verticalAlign: 'middle',\n },\n}));\n\nconst AiResults: React.FC = ({\n pagination,\n currentAppliedFilters,\n triggerFilterDialog,\n modelRequestId,\n aiSearchType,\n onFilter,\n prompt,\n hideRationaleAndAlternatives,\n}) => {\n const classes = useStyles();\n const { locationName, arrival, departure, amenities, latitude, longitude } = currentAppliedFilters;\n const { troupieAlternatives } = React.useContext(GlobalContext);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const { trackSERPLinkEvent } = useTrackSERPEvent();\n const { rationaleTroupieApi } = React.useContext(GlobalContext);\n\n const tooltip = convertSnakeCaseToNormalEnglish(Object.entries(omitFalsyAndUnchecked(currentAppliedFilters)))\n .map(([filter, value]) => {filter}: {value})\n\n const [rationale, setRationale] = React.useState('');\n const [alternativesOpen, setAlternativesOpen] = React.useState(false);\n\n const [alternatives, setAlternatives] = React.useState([]);\n\n const requestFilters = {\n amenities, arrival, departure, latitude, location_name: locationName, longitude,\n }\n\n const requestRationale = (modelRequestId = undefined) => {\n axios.get(\n '/api/search/ai_rationale',\n { params: { filters: {...requestFilters}, query: prompt, search_id: modelRequestId } },\n ).then((response) => {\n setRationale(response.data.rationale);\n }).catch(() => {\n console.log(\"something wrong happened\")\n });\n }\n\n React.useEffect(() => {\n if (prompt && locationName && !rationaleTroupieApi) {\n requestRationale();\n }\n }, [currentAppliedFilters, prompt]);\n\n React.useEffect(() => {\n if (prompt && locationName && rationaleTroupieApi && modelRequestId) {\n requestRationale(modelRequestId);\n }\n }, [currentAppliedFilters, prompt, modelRequestId]);\n\n React.useEffect(() => {\n if (prompt && locationName) {\n axios.get(\n '/api/search/ai_alternatives',\n { params: {model_outputs: {...requestFilters}, prompt} },\n ).then((response) => {\n setAlternatives(response.data.alternatives);\n }).catch(() => {\n console.log(\"something wrong happened fetching alternatives\")\n });\n }\n }, [prompt, currentAppliedFilters]);\n\n const viewAlternativesRef = React.useCallback((element) => {\n if (element !== null) {\n trackSERPLinkEvent(\n element,\n 'View Alternatives Initiated',\n {\n originalDestination: locationName,\n resultCount: pagination.count,\n },\n )\n }\n }, []);\n\n return <>\n \n \n Results\n {\n !hideRationaleAndAlternatives && (\n \n
\n \n )\n }\n
\n\n {rationale ? (\n \n \n \n ) : ( !hideRationaleAndAlternatives && (\n \n \n \n \n \n ) ) }\n\n {troupieAlternatives && !hideRationaleAndAlternatives && (\n \n setAlternativesOpen(true)}\n data-test-id=\"alternativesLink\"\n ref={(element) => viewAlternativesRef(element)}\n >\n View alternatives\n \n \n setAlternativesOpen(false)}/>\n \n )}\n\n {isMobile && modelRequestId && (\n \n \n \n )}\n
\n\n onFilter({...currentAppliedFilters, ...newValue})}\n onFilter={onFilter}\n triggerFilterDialog={triggerFilterDialog}\n aiSearchType={aiSearchType}\n pagination={pagination}\n />\n \n}\n\nexport default AiResults;\n","\nexport const convertSnakeCaseToNormalEnglish = objEntries => objEntries.map(([key, value]) => {\n key = key.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n\n if (key === 'Amenities') {\n value = value.split(',').map(item => item.toLowerCase().split('_').join(' ')).join(', ');\n }\n return [key, value];\n});\n\nexport const camelToSnake = str => {\n return str.replace(/([A-Z])/g, \"_$1\").toLowerCase();\n};\n\nexport const omitFalsyAndUnchecked = obj => {\n return Object.entries(obj)\n .filter(([key, value]) => {\n if (key === 'amenities' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n return value !== null && value !== false;\n })\n .reduce((acc, [key, value]) => {\n // Convert the key to snake_case\n const snakeKey = camelToSnake(key);\n\n // Convert the 'amenities' array to a string joined on ', '\n if (key === 'amenities' && Array.isArray(value)) {\n value = value.join(', ');\n }\n // For the 'propertyTypes' key, transform it to a string of labels where 'checked' is true\n else if (key === 'propertyTypes' && Array.isArray(value)) {\n value = value.filter(item => item.checked).map(item => item.label).join(', ');\n }\n // Omit the keys 'searchMethod', 'prompt', and 'inventory'\n if (!['searchMethod', 'prompt', 'inventory'].includes(key)) {\n acc[snakeKey] = value;\n }\n return acc;\n }, {});\n};\n","import React, {useEffect, useReducer} from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { DialogBottomOnMobile } from \"../../../shared/Dialog\";\nimport StepperInput from \"../../../shared/StepperInput\";\nimport {\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport { default as DateRangePicker }from \"../../../shared/CustomDateRangePicker\";\nimport GooglePlacesAutocomplete from \"../../../shared/GooglePlacesAutocomplete\";\nimport Button from \"../../../buttons/Button\";\nimport clsx from \"clsx\";\nimport {aiSearchType} from \"./Filters\";\nimport {useTrackSERPEvent} from \"../../../../services/segmentEvents/useSERPEvents\";\n\nexport type AiSearchCriteriaDialogProps= {\n defaultArrival: string | null,\n defaultDeparture: string | null,\n isDialogOpen: boolean,\n defaultLocationName: string,\n defaultLatitude: string,\n defaultLongitude: string,\n defaultMinGuests: number,\n onChange?: (value: any) => void,\n onClose: () => void,\n aiSearchType: aiSearchType,\n}\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case 'initialState':\n return Object.assign({}, action.initialState)\n case 'updateGoogleLocation':\n return Object.assign({}, state, {\n locationName: action.name,\n longitude: action.longitude,\n latitude: action.latitude,\n locationFilled: true,\n })\n case 'setMinGuests':\n return Object.assign({}, state, { minGuests: action.value })\n case 'setSelectedDates':\n return Object.assign({}, state, { arrival: action.startDate, departure: action.endDate, enableClearDates: true })\n case 'clearDates':\n return Object.assign({}, state, { arrival: null, departure: null })\n case 'resetFilter':\n return Object.assign({}, state, action.value )\n case 'onGooglePlaceCloseIconClicked':\n return Object.assign({}, state, { locationFilled: false })\n default:\n throw new Error();\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n },\n clearDatesButton: {\n textTransform: \"uppercase\",\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n disabled: {\n color: '#bdbdbd',\n },\n}))\n\nconst AiSearchCriteriaDialog: React.FC = ({\n defaultArrival,\n defaultLocationName,\n defaultDeparture,\n isDialogOpen,\n defaultLatitude,\n defaultLongitude,\n defaultMinGuests,\n onChange,\n onClose,\n aiSearchType,\n}) => {\n const classes = useStyles();\n const { trackSERPEvent } = useTrackSERPEvent();\n\n const initialState = {\n arrival: defaultArrival,\n departure: defaultDeparture,\n minGuests: defaultMinGuests,\n latitude: defaultLatitude,\n longitude: defaultLongitude,\n locationName: defaultLocationName,\n enableClearDates: defaultArrival && defaultDeparture,\n locationFilled: true,\n };\n\n useEffect(() => {\n dispatch({ type: 'initialState', initialState })\n }, [defaultLocationName]);\n\n const [{\n arrival, departure, minGuests, latitude, longitude, locationName, enableClearDates, locationFilled\n }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n const handleGPChange = (value) => {\n if(value?.name !== locationName && value) {\n const { name, longitude, latitude } = value\n dispatch({type: 'updateGoogleLocation', name, longitude, latitude })\n }\n };\n\n const handleGuestChange = (value) => {\n dispatch({type: 'setMinGuests', value: value})\n };\n\n const handleDatesChange = (dateRange) => {\n const startDate = dateRange[0];\n const endDate = dateRange[1];\n\n if (startDate && endDate && endDate.isAfter(startDate, 'day')) {\n dispatch({\n type: 'setSelectedDates',\n startDate: startDate.format('YYYY-MM-DD'),\n endDate: endDate.format('YYYY-MM-DD'),\n })\n }\n }\n const enableSubmit: () => boolean = () => {\n return ((arrival !== defaultArrival || minGuests !== defaultMinGuests ||\n departure !== defaultDeparture) && locationFilled) || (locationFilled && (locationName !== defaultLocationName))\n };\n\n const onSubmit = () => {\n if(enableSubmit() && locationName !== undefined) {\n onChange({\n arrival: arrival || '',\n departure: departure || '',\n minGuests: minGuests,\n latitude: latitude,\n longitude: longitude,\n locationName: locationName,\n searchMethod: 'searchCriteria',\n });\n }\n\n trackSERPEvent('Search Criteria Submitted', {\n location: aiSearchType,\n destinationChanged: locationName !== defaultLocationName,\n guestCountChanged: minGuests !== defaultMinGuests,\n datesChanged: arrival !== defaultArrival || departure !== defaultDeparture,\n });\n\n onClose()\n }\n\n const resetFilter = () => {\n dispatch({ type: 'resetFilter', value: initialState })\n };\n\n const onClearDatesClick = () => {\n dispatch({ type: 'clearDates' })\n }\n\n const renderMessage = () => {\n return (<>\n \n \n \n Location*\n \n handleGPChange(value)}\n required={true}\n placeholder={\"Search by name or address\"}\n onCloseIconClicked={() => dispatch({ type: 'onGooglePlaceCloseIconClicked' })}\n />\n \n \n \n \n \n Dates\n \n \n \n \n Clear dates\n \n \n \n handleDatesChange(dateRange)}\n useMobilePicker\n />\n \n \n \n Adults\n \n handleGuestChange(value)}\n />\n \n \n \n \n Update search\n \n \n \n );\n };\n\n const onDialogClose = () => {\n trackSERPEvent('Search Criteria Drawer Dismissed', {location: aiSearchType});\n resetFilter()\n onClose()\n };\n\n return (\n <>\n \n \n )\n}\n\nexport default AiSearchCriteriaDialog\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport pluralize from \"pluralize\";\nimport dayjs from \"dayjs\";\nimport { Pagination } from \"./ListingsBox\";\nimport {useTrackSERPEvent} from \"../../../../services/segmentEvents/useSERPEvents\";\nimport {aiSearchType} from \"./Filters\";\n\ntype AiSearchPaginationTextProps= {\n arrival?: string,\n departure?: string,\n locationName?: string,\n minGuests?: string,\n pagination: Pagination,\n triggerFilterDialog: (value: boolean) => void,\n aiSearchType?: aiSearchType,\n};\n\nconst useStyles = makeStyles(() => ({\n text: {\n fontWeight: 600,\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n}))\n\nconst AiSearchPaginationText = ({\n arrival,\n departure,\n locationName,\n minGuests,\n pagination,\n triggerFilterDialog,\n aiSearchType,\n}: AiSearchPaginationTextProps) => {\n const classes = useStyles();\n const { trackSERPEvent } = useTrackSERPEvent();\n const onFilterClick = (text) => {\n triggerFilterDialog(true)\n trackSERPEvent('Search Criteria Drawer Initiated', {\n location: aiSearchType,\n entry: text,\n });\n }\n\n const totalListingsCountLabel = () => (\n pagination.count >= 300 ? '300+' : `${pagination.count}`\n );\n\n const renderDates = () => {\n const arrivalDate = arrival ? dayjs(arrival) : null;\n const departureDate = departure ? dayjs(departure) : null;\n\n if (arrivalDate && departureDate) {\n const isSameMonth = arrivalDate.month() === departureDate.month();\n const formatDate = (date, format) => date.format(format);\n\n const datesText = isSameMonth ? ` ${formatDate(arrivalDate, 'MMMM D')} - ${formatDate(departureDate, 'D')}`\n : ` ${formatDate(arrivalDate, 'MMMM D')} - ${formatDate(departureDate, 'MMMM D')}`\n\n return (\n \n from\n onFilterClick('Troupie Dates')}\n className={classes.text}\n >\n {datesText}\n \n \n )\n }\n\n return '';\n };\n\n const renderListingsCount = () => {\n const isSinglePage = !pagination.next && !pagination.prev;\n if (isSinglePage) {\n return {pagination.count};\n } else {\n return (\n \n {`${pagination.from} - ${pagination.to}`} {` of ${totalListingsCountLabel()} `}\n \n );\n }\n };\n\n const renderWithDialogClick = (text, tracker) => {\n return (\n onFilterClick(tracker)}\n >\n {text}\n \n )\n }\n const guestsText = `${minGuests} ${pluralize('guest', Number(minGuests))}`\n\n return(\n \n {renderListingsCount()} in {renderWithDialogClick(locationName, 'Troupie Destination')} for {renderWithDialogClick(guestsText, 'Troupie Guest Count')} {renderDates()}\n \n )\n};\n\nexport default AiSearchPaginationText;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Grid,\n TextField,\n useMediaQuery,\n Typography,\n Box,\n} from \"@mui/material\";\nimport { DefaultTheme, makeStyles, useTheme } from \"@mui/styles\";\nimport Button from \"../../../buttons/Button\";\n\nconst useStyles = makeStyles((theme) => ({\n aiTripSearchTitle: {\n fontSize: 24,\n fontWeight: 600,\n lineHeight: '24px',\n },\n aiPublicSearchTitle: {\n color: '#4A6176',\n fontSize: 22,\n fontWeight: 600,\n },\n aiPublicSearchSubtitle: {\n color: '#4A6176',\n fontSize: 18,\n fontWeight: 500,\n lineHeight: '34px',\n [theme.breakpoints.down(600)]: {\n lineHeight: '28px',\n },\n },\n searchBox: {\n backgroundColor: ({ aiTripSearch }) => aiTripSearch ? '#F2F2F2' : \"\",\n borderRadius: 10,\n margin: 'auto',\n padding: theme.spacing(2, 3, 3, 2),\n width: '100%',\n },\n root: {\n marginTop: theme.spacing(3),\n },\n input: {\n backgroundColor: '#FFFFFF',\n },\n poweredByText: {\n fontSize: 12,\n lineHeight: '24px',\n },\n icon: {\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n },\n filtersBtn: {\n paddingLeft: theme.spacing(1),\n },\n}));\n\nconst AiSearchPrompt: React.FC<{\n aiTripSearch: boolean,\n onSubmit: (prompt: string) => void,\n prompt: string,\n disabled?: boolean,\n}> = ({\n aiTripSearch,\n onSubmit,\n prompt: initialPrompt,\n disabled = false,\n}) => {\n const classes = useStyles({ disabled, aiTripSearch });\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const inputRef = useRef(null)\n const focusInput = () => inputRef.current?.querySelector('textarea')?.focus()\n useEffect(() => {\n if (!isMobile) focusInput()\n }, [])\n\n const [prompt, setPrompt] = useState(initialPrompt ?? '');\n useEffect(() => {\n setPrompt(initialPrompt);\n }, [initialPrompt]);\n\n const handleSubmit = useCallback((event) => {\n event.preventDefault()\n onSubmit(prompt)\n }, [prompt, onSubmit])\n\n const handleEnterKey = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) handleSubmit(event)\n }\n\n const Title = () => {\n if (aiTripSearch) {\n return Ask Troupie\n } else {\n return (\n <>\n 👋 Hi, I’m Troupie!\n I’m here to help you find the perfect stay for your group trip.\n \n )\n };\n };\n\n return (\n \n \n \n \n </Grid>\n <Grid item>\n <TextField\n autoFocus\n className={classes.input}\n data-test-id=\"prompt-input\"\n fullWidth\n multiline\n placeholder=\"Tell me what you’re looking for\"\n type=\"search\"\n onKeyDown={handleEnterKey}\n onChange={e => setPrompt(e.target.value)}\n value={prompt ?? ''}\n disabled={disabled}\n ref={inputRef}\n inputProps={{ maxLength: 500 }}\n />\n </Grid>\n <Grid item container spacing={2} justifyContent={isMobile ? \"center\" : \"space-between\"} alignItems=\"flex-end\">\n <Grid item xs={12} sm={9} container>\n <Grid item>\n <Button\n data-test-id='searchButton'\n fullWidth={isMobile}\n onClick={(prompt) => handleSubmit(prompt)}\n disabled={disabled}\n >\n <img src=\"/assets/stars.svg\" className={classes.icon} />\n Show me {!isMobile && 'results'}\n </Button>\n </Grid >\n </Grid>\n <Grid item xs={12} sm={3} alignSelf=\"flex-start\">\n <Typography align={isMobile ? \"left\" : \"right\"} className={classes.poweredByText}>Powered by ChatGPT API</Typography>\n </Grid>\n </Grid>\n </Grid>\n </Box>\n )\n}\n\nexport default AiSearchPrompt;\n","import React from \"react\";\nimport {\n Grid,\n TextField,\n useMediaQuery,\n Typography,\n Box,\n} from \"@mui/material\";\nimport { DefaultTheme, makeStyles, useTheme } from \"@mui/styles\";\nimport Button from \"../../../buttons/Button\";\nimport { DialogBottomOnMobile } from \"../../../shared/Dialog\";\n\nconst useStyles = makeStyles<DefaultTheme, { disabled: boolean, aiTripSearch: boolean }>((theme) => ({\n searchBox: {\n backgroundColor: ({ aiTripSearch }) => aiTripSearch ? '#F2F2F2' : \"\",\n borderRadius: 10,\n margin: 'auto',\n padding: theme.spacing(2, 4),\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(2),\n },\n promptPreview: {\n overflow: 'hidden',\n cursor: 'pointer',\n backgroundColor: '#FFFFFF',\n borderRadius: 5,\n width: '100%',\n },\n promptPreviewText: {\n padding: theme.spacing(1),\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n color: '#5C7993',\n },\n input: {\n backgroundColor: '#FFFFFF',\n },\n poweredByText: {\n fontSize: 12,\n lineHeight: '24px',\n },\n icon: {\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n },\n dialogBackground: {\n backgroundColor: '#F2F2F2',\n },\n askTroupie: {\n fontWeight: 600,\n fontSize: 20,\n },\n}));\n\nconst AiSearchPromptDialog: React.FC<{\n prompt: string,\n onSubmit: (prompt: string) => void,\n disabled?: boolean,\n aiTripSearch: boolean,\n}> = ({\n prompt: initialPrompt,\n onSubmit,\n disabled = false,\n aiTripSearch,\n}) => {\n const [open, setOpen] = React.useState(false);\n const classes = useStyles({ disabled, aiTripSearch });\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const inputRef = React.useRef(null);\n const focusInput = () => inputRef.current?.querySelector('textarea')?.focus();\n React.useEffect(() => {\n if (!isMobile) focusInput();\n }, [])\n\n const [prompt, setPrompt] = React.useState(initialPrompt ?? '');\n React.useEffect(() => {\n setPrompt(initialPrompt);\n }, [initialPrompt]);\n\n const handleSubmit = React.useCallback((event) => {\n event.preventDefault();\n onSubmit(prompt);\n setOpen(false);\n }, [prompt, onSubmit]);\n\n const handleEnterKey = (event) => {\n if (event.key === 'Enter' && !event.shiftKey && !!prompt.trim()) handleSubmit(event)\n }\n\n const renderDialogContent = () => (\n <Grid container direction=\"column\" spacing={2} data-test-id=\"dialogSearchBox\">\n <Grid item>\n <TextField\n autoFocus\n className={classes.input}\n data-test-id=\"prompt-input\"\n fullWidth\n multiline\n placeholder=\"Tell me what you’re looking for\"\n type=\"search\"\n onKeyDown={handleEnterKey}\n onChange={e => setPrompt(e.target.value)}\n value={prompt ?? ''}\n disabled={disabled}\n ref={inputRef}\n inputProps={{ maxLength: 500 }}\n />\n </Grid>\n <Grid item container direction=\"row\" spacing={2} justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Button\n data-test-id='searchButton'\n onClick={(prompt) => handleSubmit(prompt)}\n disabled={disabled || !prompt.trim()}\n >\n <img src=\"/assets/stars.svg\" className={classes.icon} />\n Show me {!isMobile && 'results'}\n </Button>\n </Grid>\n <Grid item>\n <Typography align={isMobile ? \"left\" : \"right\"} className={classes.poweredByText}>Powered by ChatGPT API</Typography>\n </Grid>\n </Grid>\n </Grid>\n );\n\n const renderPreviewText = () => (\n <Grid container className={classes.searchBox} data-test-id=\"searchBox\">\n {aiTripSearch && (\n <Grid item>\n <Typography className={classes.askTroupie}>Ask Troupie</Typography>\n </Grid>\n )}\n <Grid item xs={!isMobile} className={classes.promptPreview}>\n <Typography\n onClick={() => setOpen(true)}\n className={classes.promptPreviewText}\n data-test-id='prompt-preview'\n >\n {prompt}\n </Typography>\n </Grid>\n </Grid>\n );\n\n return (\n <Box>\n {renderPreviewText()}\n <DialogBottomOnMobile\n fullWidth\n title=\"Ask Troupie\"\n isOpen={open}\n onClose={() => {\n setOpen(false);\n setPrompt(initialPrompt);\n }}\n maxWidth=\"md\"\n message={renderDialogContent()}\n backgroundClass={classes.dialogBackground}\n />\n </Box>\n )\n}\n\nexport default AiSearchPromptDialog;\n","import React from \"react\"\nimport {\n Box,\n Divider,\n Grid,\n Typography,\n Link,\n} from \"@mui/material\";\nimport AiSearchPrompt from \"./AiSearchPrompt\";\nimport { makeStyles } from \"@mui/styles\";\nimport { ListingsContext } from \"../StaysSearch\";\nimport AiSearchPromptDialog from \"./AiSearchPromptDialog\";\n\ntype AiSearchPromptSectionProps = {\n aiTripSearch: boolean,\n handlePromptSubmit: (prompt: string) => void,\n hasSearched: boolean,\n isLoading: boolean,\n isMobile: boolean,\n prompt: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n },\n question: {\n fontSize: 16,\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n },\n answer: {\n color: '#979797',\n fontSize: 16,\n },\n promptExample: () => ({\n color: '#4A6176',\n fontSize: 14,\n cursor: 'pointer',\n textDecoration: 'none',\n borderRadius: '10px',\n padding: '15 15px',\n textAlign: 'left',\n paddingLeft: '15px',\n wordWrap: 'break-word',\n [theme.breakpoints.down(480)]: {\n width: '100%',\n },\n [theme.breakpoints.between(480, 740)]: {\n width: '450px',\n },\n [theme.breakpoints.up(740)]: {\n width: '350px',\n },\n height: '80px',\n display: 'flex',\n paddingTop: '8px',\n paddingBottom: '8px',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n info: {\n width: 350,\n paddingBottom: '8px',\n color: '#7c93a9',\n },\n muiIcon: {\n height: 16,\n paddingRight: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n },\n}));\n\nconst AiSearchPromptSection : React.FC<AiSearchPromptSectionProps> = ({\n aiTripSearch,\n handlePromptSubmit,\n hasSearched,\n isLoading,\n isMobile,\n prompt,\n}) => {\n const classes = useStyles();\n const { onPromptExampleClick } = React.useContext(ListingsContext);\n\n const PromptExample = ({ prompt, baseColor }) => {\n return (\n <Grid item>\n <Link\n onClick={() => onPromptExampleClick(prompt)}\n className={classes.promptExample}\n sx={{border: `2px solid ${baseColor}, 0.8)`, backgroundColor: `${baseColor}, 0.1)`}}\n data-test-id='prompt-example'\n >\n “{prompt}”\n <Grid sx={{position: \"relative\", bottom: 16}}>\n <img src=\"/assets/Right-arrow2.svg\" className={classes.muiIcon} />\n </Grid>\n </Link>\n </Grid>\n );\n };\n\n const InfoTile = ({ text }) => {\n return (\n <Grid display={\"flex\"} direction={\"row\"} className={classes.info}>\n <img src={'/assets/Vector-3.svg'} className={classes.muiIcon} />\n <Typography sx={{fontSize: '14px'}}>\n {text}\n </Typography>\n </Grid>\n );\n };\n\n return(\n <Box>\n { !prompt ? (\n <AiSearchPrompt\n prompt={prompt}\n onSubmit={(prompt) => handlePromptSubmit(prompt)}\n disabled={isLoading}\n aiTripSearch={aiTripSearch}\n />\n ) : (\n <AiSearchPromptDialog\n prompt={prompt}\n onSubmit={(prompt) => handlePromptSubmit(prompt)}\n disabled={isLoading}\n aiTripSearch={aiTripSearch}\n />\n ) }\n {\n !(isLoading || hasSearched) && aiTripSearch && (\n <Grid container direction={\"column\"} justifyContent=\"space-between\" my={4}>\n <Grid item pr={isMobile ? 0 : 5} pb={isMobile ? 2 : 0} xs>\n <Typography className={classes.question}>\n <img src=\"/assets/question_answer.svg\" className={classes.icon} />\n What can I ask?\n </Typography>\n <Grid container spacing={2} justifyContent={\"space-evenly\"} pb={2}>\n <PromptExample\n prompt=\"Hotel under $300/night with AC and free cancellation policy\"\n baseColor=\"rgba(166, 230, 213\"\n />\n <PromptExample\n prompt=\"Help me find a cabin for my family reunion in Asheville, NC; there will be 10 of us.\"\n baseColor=\"rgba(190, 218, 255\"\n />\n <PromptExample\n prompt=\"I'm planning bachelorette party and need to find a house with four bedrooms near Miami\"\n baseColor=\"rgba(219, 221, 255\"\n />\n <PromptExample\n prompt=\"All inclusive resort in Cancun thats also good for kids\"\n baseColor=\"rgba(255, 228, 180\"\n />\n </Grid>\n {isMobile && <Divider orientation={ \"horizontal\"} flexItem />}\n </Grid>\n\n\n <Typography className={classes.question}>\n <img src=\"/assets/privacy_tip.svg\" className={classes.icon} />\n Things to know\n </Typography>\n <Grid container spacing={2} justifyContent={\"space-evenly\"} pb={2}>\n <InfoTile\n text=\"Troupie currently provides recommended filters and location suggestions, explaining the reasons behind its choices.\"\n />\n <InfoTile\n text=\"For accurate pricing, Troupie requires your travel dates.\"\n />\n <InfoTile\n text=\"Troupie understands many languages but might not perfectly interpret or translate.\"\n />\n <InfoTile\n text=\"Troupie aims to help but may occasionally provide inaccurate information. Double-check with other sources before important planning decisions!\"\n />\n </Grid>\n </Grid>\n )\n }\n </Box>\n )\n}\n\nexport default AiSearchPromptSection;\n","import React from \"react\";\nimport {\n Box,\n ButtonBase,\n Grid,\n Skeleton,\n Typography,\n} from \"@mui/material\";\nimport { DialogBottomOnMobile } from \"../../../shared/Dialog\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Alternative } from \"./AiResults\";\nimport { ListingsContext } from \"../StaysSearch\";\n\ntype AlternativesDialogProps = {\n alternatives: Alternative[],\n onClose: () => void,\n open: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n color: '#000',\n fontSize: 16,\n fontWeight: 600,\n marginRight: theme.spacing(3),\n },\n alternativeBox: {\n background: '#DDEBFF',\n border: '1px solid #BEC9D4',\n borderRadius: '5px',\n height: '88px',\n padding: '12px 16px',\n textAlign: 'left',\n },\n name: {\n color: '#000',\n fontSize: 14,\n fontWeight: 600,\n },\n rationale: {\n marginTop: '4px',\n fontSize: 14,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n display: '-webkit-box',\n },\n arrow: {\n width: '14px',\n verticalAlign: 'middle',\n float: 'right',\n },\n}));\n\nconst AlternativesDialog : React.FC<AlternativesDialogProps> = ({\n alternatives,\n onClose,\n open,\n}) => {\n const classes = useStyles();\n const { onAlternativeTileClick } = React.useContext(ListingsContext);\n\n const AlternativeBox = ({ alternative } : { alternative : Alternative }) => (\n <ButtonBase disableRipple onClick={() => onAlternativeTileClick(alternative)} className={classes.alternativeBox}>\n <Grid container direction=\"column\" flexWrap=\"nowrap\">\n <Grid item className={classes.name}>\n {alternative.name}\n <img src=\"/assets/right-arrow.svg\" className={classes.arrow} />\n </Grid>\n <Grid item className={classes.rationale}>\n {alternative.rationale}\n </Grid>\n </Grid>\n </ButtonBase>\n );\n\n const title = (\n <Typography className={classes.title}>Based on your search, we think you might also like</Typography>\n );\n\n const content = (\n <Grid container spacing={2}>\n {alternatives.map((alternative, index) => (\n <Grid item xs={12} md={4} key={`alternative-${index}`}>\n <AlternativeBox alternative={alternative} />\n </Grid>\n ))}\n </Grid>\n );\n\n const loading = (\n <Grid container spacing={2}>\n {Array.from({ length: 3 }).map((_, index) => (\n <Grid item xs={12} md={4} key={`skeleton-${index}`}>\n <Box className={classes.alternativeBox}>\n <Grid container direction=\"column\" flexWrap=\"nowrap\">\n <Grid item>\n <Skeleton variant=\"text\" />\n </Grid>\n <Grid item>\n <Skeleton variant=\"rectangular\" height={40} />\n </Grid>\n </Grid>\n </Box>\n </Grid>\n ))}\n </Grid>\n );\n\n return (\n <DialogBottomOnMobile\n fullWidth\n isOpen={open}\n title={title}\n message={alternatives.length > 0 ? content : loading}\n onClose={onClose}\n maxWidth=\"md\"\n />\n );\n};\n\nexport default AlternativesDialog;\n","import React from 'react';\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport ExternalListingContent from './ExternalListingCard/ExternalListingContent';\nimport FavoriteToggleButton from './ExternalListingCard/FavoriteToggleButton';\nimport ListingPricing from \"./ExternalListingCard/ListingPricing\";\nimport TripObject, { Variation } from '../../../shared/TripObject';\nimport ImagesCarousel from './ExternalListingCard/ImagesCarousel';\nimport { ExternalListingProps } from \"../../../shared/TripObjectTypes\";\nimport { RenderCtaButtonType } from \"../StaysSearch\";\nimport { isCurrentlyInPublicSearch } from \"../../../../services/windowLocation\";\nimport ShareButton from \"../../../shared/ShareButton\";\n\ntype ExternalListingCardProps = {\n stay: ExternalListingProps,\n renderCtaButton: RenderCtaButtonType,\n footer?: React.ReactNode,\n displayToggleFavoriteButton?: boolean,\n favoriteListingId?: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { displayFavoriteButton: boolean }>(() => ({\n root: {\n border: 'none',\n '& .slider-frame': {\n borderRadius: '10px',\n },\n },\n content: {\n paddingLeft: 0,\n paddingRight: 0,\n },\n shareButton: {\n position: 'absolute',\n top: '16px',\n right: ({ displayFavoriteButton }) => displayFavoriteButton ? '56px' : '16px',\n zIndex: 1,\n },\n}));\n\nconst ExternalListingCard = ({\n stay,\n renderCtaButton,\n footer,\n displayToggleFavoriteButton = false,\n favoriteListingId,\n}: ExternalListingCardProps) => {\n const displayFavoriteButton = displayToggleFavoriteButton || isCurrentlyInPublicSearch();\n const classes = useStyles({ displayFavoriteButton });\n\n const ctaButton = renderCtaButton({stay});\n const pricing =\n <ListingPricing\n available={stay.available}\n pricing={stay.pricing}\n isHotel={stay.provider?.toLowerCase() === 'expedia'}\n />;\n\n const contentForListView =\n <ExternalListingContent\n stay={stay}\n nameLink={stay.publicUrl}\n pricing={pricing}\n ctaButton={ctaButton}\n />;\n\n const stayImages =\n <ImagesCarousel\n images={stay.images}\n linkHref={stay.publicUrl}\n />\n\n return React.useMemo(() => (\n <TripObject\n className={classes.root}\n contentClassName={classes.content}\n testId='external-stay-listing'\n variation={Variation.Vertical}\n visual={\n <>\n <ShareButton className={classes.shareButton} url={stay.publicUrl} />\n {displayFavoriteButton && <FavoriteToggleButton favoriteListingId={favoriteListingId} stay={stay} />}\n {stayImages}\n </>\n }\n content={contentForListView}\n footer={footer}\n />\n ), [stay]);\n};\n\nexport default ExternalListingCard;\n","import React from \"react\";\nimport { Grid, ButtonBase } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport StayProperties from \"../../../trips/microsite/HousingPage/Stay/StayProperties\";\nimport StayRating from \"../../../trips/microsite/HousingPage/Stay/StayRating\";\nimport { ExternalListingProps } from \"../../../../shared/TripObjectTypes\";\nimport {useStayAffiliateClickEventRef} from \"../../../../../services/segmentEvents/useStayAffiliateClickEvent\";\n\nconst useStyles = makeStyles(() => ({\n properties: {\n fontSize: 14,\n },\n name: {\n lineHeight: '24px',\n color: 'black',\n fontSize: 16,\n fontWeight: 600,\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n },\n clickArea: {\n zIndex: 1,\n },\n ctaButton: {\n zIndex: 2,\n alignSelf: 'flex-start',\n },\n}));\n\ntype ExternalListingContentProps = {\n stay: ExternalListingProps,\n nameLink: string,\n ctaButton: React.ReactNode,\n pricing: React.ReactNode,\n};\n\nconst ExternalListingContent = ({\n stay,\n nameLink,\n pricing,\n ctaButton,\n}: ExternalListingContentProps) => {\n const classes = useStyles();\n const isPublicSearch = window.location.pathname === '/search'\n\n const refs = useStayAffiliateClickEventRef({\n listingUrl: nameLink,\n targetClicked: 'card',\n });\n\n const ctaClicked = (event) => {\n if(!isPublicSearch) return event.preventDefault()\n };\n\n return (\n <ButtonBase\n data-test-id='stay-click-area'\n href={nameLink}\n className={classes.clickArea}\n ref={refs}\n target='_blank'\n >\n <Grid\n item\n container\n direction=\"column\"\n spacing={1}\n alignItems='center'\n >\n <Grid container item justifyContent=\"space-between\">\n <Grid item xs container className={classes.name}>\n {stay.name}\n </Grid>\n <StayRating stay={stay} />\n </Grid>\n <Grid\n item\n container\n wrap=\"nowrap\"\n alignItems='center'\n spacing={1}\n >\n <Grid item container direction=\"column\">\n <Grid item>\n {pricing}\n </Grid>\n <StayProperties className={classes.properties} stay={stay} />\n </Grid>\n <Grid item className={classes.ctaButton} onClick={ctaClicked}>\n {ctaButton}\n </Grid>\n </Grid>\n </Grid>\n </ButtonBase>\n )\n};\n\nexport default ExternalListingContent;\n","import React, { useCallback, useContext } from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport HoverBorderIconButton from \"../../../../buttons/HoverBorderIconButton\";\nimport { ExternalListingProps } from \"../../../../shared/TripObjectTypes\";\nimport favoritesStorage from \"../../../../../services/favoritesStorage\";\nimport {\n useQuery,\n useMutation,\n gql,\n} from \"@apollo/client\";\nimport { GlobalContext } from \"../../../../Document\";\nimport { getOperationName } from \"../../../../../graphql/utilities\";\nimport { ListingsContext } from '../../StaysSearch';\nimport { GET_FAVORITES_LISTINGS } from '../../../../../graphql/queries/favorites';\nimport {\n useListingFavoriteEvent,\n useListingFavoriteRemovedEvent,\n} from \"../../../../../services/segmentEvents/favoriteEvents\";\n\ntype FavoriteToggleButtonProps = {\n stay: ExternalListingProps,\n favoriteListingId?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n favTest:{\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n zIndex: 1,\n },\n}));\n\nexport const FAVORITE_ADD = gql`\n mutation FavoriteAdd($favoriteId: ID, $listingId: String!, $arrival: String, $departure: String, $minGuests: Int, $bedroomCount: Int) {\n favoriteAdd(input: {\n favoriteId: $favoriteId,\n listingId: $listingId,\n arrival: $arrival,\n departure: $departure,\n minGuests: $minGuests,\n bedroomCount: $bedroomCount,\n }) {\n favoriteList {\n id\n }\n }\n }\n`;\n\nexport const FAVORITE_REMOVE = gql`\n mutation FavoriteRemove($favoriteId: ID!, $favoriteListingId: ID!) {\n favoriteRemove(input: {\n favoriteId: $favoriteId, favoriteListingId: $favoriteListingId\n }) {\n errors\n }\n }\n`;\n\nconst FavoriteToggleButton : React.FC<FavoriteToggleButtonProps> = ({\n stay,\n favoriteListingId,\n}) => {\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const { getFavoriteId, setFavoriteId } = favoritesStorage();\n const { filters } = useContext(ListingsContext);\n\n const favoriteListings = useQuery(GET_FAVORITES_LISTINGS, {\n variables: { favoriteId: getFavoriteId() },\n skip: !getFavoriteId(),\n });\n\n const isFavorited = favoriteListings.data?.node?.listings.find((listing) => {\n return listing.id === favoriteListingId ||\n (listing.externalListing.externalId === stay.externalId &&\n (listing.arrival || '') === (filters.arrival || '') &&\n (listing.departure || '') === (filters.departure || ''))\n });\n const trackFavoriteEvent = useListingFavoriteEvent(stay.publicUrl);\n const trackFavoriteRemoveEvent = useListingFavoriteRemovedEvent(stay.publicUrl)\n\n const favoriteImgSrc = isFavorited ? 'assets/heart_favorited.svg': 'assets/heart_unfilled.svg';\n\n const refetchQueries = [getOperationName(GET_FAVORITES_LISTINGS)];\n const [addFavorite, { loading: addFavoriteLoading }] = useMutation(FAVORITE_ADD, {\n refetchQueries,\n onCompleted: ({ favoriteAdd }) => {\n if(!getFavoriteId()) {\n setFavoriteId(favoriteAdd.favoriteList.id)\n }\n setSnackbar('💖 Added to favorites', 3000)\n trackFavoriteEvent()\n },\n });\n\n const [favoriteRemove, { loading: removeFavoriteLoading }] = useMutation(FAVORITE_REMOVE, {\n refetchQueries,\n onCompleted: () => {\n setSnackbar('Removed from favorites', 3000)\n trackFavoriteRemoveEvent()\n },\n });\n\n const favoriteToggle = useCallback((e) => {\n e.preventDefault();\n if(isFavorited) {\n favoriteRemove({\n variables: {\n favoriteId: getFavoriteId(),\n favoriteListingId: favoriteListingId || isFavorited.id,\n },\n });\n } else {\n addFavorite({\n variables: {\n favoriteId: getFavoriteId(),\n listingId: stay.id,\n arrival: filters.arrival,\n departure: filters.departure,\n minGuests: Number(filters.minGuests),\n bedroomCount: Number(filters.bedroomCount),\n },\n });\n }\n }, [isFavorited]);\n\n return (\n <HoverBorderIconButton\n onClick={favoriteToggle}\n className={classes.favTest}\n data-test-id='fav-toggle-wrapper'\n disabled={addFavoriteLoading || removeFavoriteLoading}\n >\n <img\n data-test-id=\"fav-button\"\n src={favoriteImgSrc}\n />\n </HoverBorderIconButton>\n );\n};\n\nexport default FavoriteToggleButton;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport { ButtonBase } from '@mui/material';\nimport Slider from \"react-slick\";\nimport {useStayAffiliateClickEventRef} from \"../../../../../services/segmentEvents/useStayAffiliateClickEvent\";\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n display: 'block',\n width: \"100%\",\n height: \"100%\",\n [theme.breakpoints.down('md')]: {\n height: '200px',\n },\n objectFit: 'cover',\n objectPosition: 'center',\n background: '#b4b9bc',\n maxHeight: 200,\n },\n slider: {\n '& .slick-list': {\n borderRadius: '8px',\n },\n '& .slick-arrow': {\n zIndex: 2,\n background: 'rgba(0,0,0,0.4)',\n padding: '32px 16px',\n '&:before': {\n lineHeight: 0,\n margin: '-10px',\n },\n },\n '& .slick-prev': {\n left: 0,\n },\n '& .slick-next': {\n right: 0,\n },\n },\n}));\n\ntype ImagesCarouselProps = {\n images: string[],\n linkHref: string,\n};\n\nconst ImagesCarousel = ({\n linkHref,\n images,\n}: ImagesCarouselProps) => {\n const classes = useStyles();\n const segmentRef = useStayAffiliateClickEventRef({\n listingUrl: linkHref,\n targetClicked: 'image',\n });\n\n const renderImage = image => {\n const imageTag = (\n <img\n data-test-id=\"tripStayCarouselPhoto\"\n loading=\"lazy\"\n src={image}\n key={image}\n className={classes.image}\n />\n );\n\n return (\n <ButtonBase\n disableTouchRipple\n onClick={() => window.open(linkHref, '_blank')}\n key={`a-${image}`}\n ref={segmentRef}\n sx={{ width: '100%' }}\n >\n {imageTag}\n </ButtonBase>\n )\n };\n\n const settings = {\n arrows: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n lazyLoad: true,\n className: classes.slider,\n };\n\n return (\n <Slider {...settings}>\n {images.map(image => (\n renderImage(image)\n ))}\n </Slider>\n );\n};\n\nexport default ImagesCarousel;\n","import React from \"react\";\nimport { NumericFormat } from 'react-number-format';\nimport { Typography } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { ExternalListingPricing } from \"../../../../shared/TripObjectTypes\";\nimport { ListingsContext } from \"../../StaysSearch\";\nimport pluralize from 'pluralize';\n\ntype ListingPricingProps = {\n available: boolean,\n pricing: ExternalListingPricing,\n isHotel?: boolean,\n};\n\ntype PriceProps = {\n value: number,\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n textAlign: 'left',\n fontSize: 16,\n color: '#272727',\n },\n addDatesText: {\n color: '#3689FF',\n zIndex: 10000000,\n },\n totalPrice: {\n color: '#555E64',\n },\n nightlyPrice: {\n fontWeight: 600,\n },\n}));\n\nconst ListingPricing = ({\n available,\n pricing: {\n currency,\n pricePerNight,\n price,\n type,\n hotelRoomCount,\n },\n isHotel,\n}: ListingPricingProps) => {\n const classes = useStyles();\n const isTotalPrice = type === 'total';\n const { openSearchCriteriaDrawer } = React.useContext(ListingsContext);\n\n const onAddPricingClick = (e) => {\n e.preventDefault();\n openSearchCriteriaDrawer();\n }\n\n const Price = ({ value }: PriceProps) => (\n <NumericFormat\n value={value}\n displayType={'text'}\n decimalScale={2}\n fixedDecimalScale={value % 1 !== 0}\n thousandSeparator={true}\n prefix={currency}\n />\n );\n\n const renderNumRooms = () => isHotel ? <> • {pluralize('room', Number(hotelRoomCount || 1), true)}</> : null;\n\n const renderNightlyPrice = <span className={classes.nightlyPrice}>\n <Price value={Math.round(pricePerNight)} /> night {!isTotalPrice ? renderNumRooms() : null}\n </span>;\n\n const renderTotalPrice = <span className={classes.totalPrice}>\n (<Price value={price} /> total{renderNumRooms()})\n </span>;\n\n return <>\n {available ? (\n <Typography className={classes.root}>\n {price ? (\n <span>\n {renderNightlyPrice}{isTotalPrice && renderTotalPrice}\n </span>\n ) : (\n <span className={classes.addDatesText} onClick={onAddPricingClick}>\n (Add dates for pricing)\n </span>\n )}\n </Typography>\n ) : (\n <Typography>\n Unavailable for your dates\n </Typography>\n )}\n </>;\n};\n\nexport default ListingPricing;\n","import React, { useEffect, useRef } from \"react\";\nimport {\n Grid,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport { CustomFiltersAppliedType, DateOptionProps } from \"../StaysSearch\";\nimport SearchCriteria from \"./SearchCriteria\";\nimport FiltersButton from \"./FiltersButton\";\nimport GooglePlacesAutocomplete, { Place } from \"../../../shared/GooglePlacesAutocomplete\";\nimport RailsForm from \"../../../shared/RailsForm\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\nimport { makeStyles, DefaultTheme, useTheme } from \"@mui/styles\";\nimport { isCurrentlyInPublicSearch } from \"../../../../services/windowLocation\";\nimport InventoryRadioGroup from \"./Filters/InventoryRadioGroup\";\nimport { AmenitiesFiltersType } from \"../../../../constants/amenitiesFilters\";\nimport { PropertyType } from \"./Filters/SortAndFilter/PropertyTypes\";\nimport AiSearchPromptSection from \"./AiSearchPromptSection\";\nimport AiSearchCriteriaDialog from \"./AiSearchCriteriaDialog\";\nimport { createFormDataForFiltering } from \"../../../../services/createFormDataForFiltering\";\n\nexport type aiSearchType = 'aiPublicSearch' | 'aiTripSearch';\n\nexport type CurrentAppliedFilters = {\n amenities?: AmenitiesFiltersType[],\n arrival?: string,\n bathroomCount?: string,\n bedroomCount?: string,\n customDatesFilterApplied?: boolean,\n customGuestsFilterApplied?: boolean,\n departure?: string,\n freeCancellation?: boolean,\n hotelRoomCount?: string,\n instantBook?: boolean,\n inventory?: string,\n latitude?: string,\n locationName?: string,\n longitude?: string,\n maxPrice?: string,\n minGuests?: string,\n minPrice?: string,\n prompt?: string,\n propertyTypes?: PropertyType[],\n rating?: string,\n};\n\ntype FiltersProps = {\n currentAppliedFilters: CurrentAppliedFilters,\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n filterFormPath: string,\n hasSearched: boolean,\n isLoading: boolean,\n onFilter: (filterParams: FormData) => void,\n searchPath: string,\n showFiltersButton?: boolean,\n aiSearch?: boolean,\n prompt?: string,\n aiSearchType?: aiSearchType,\n isDialogOpen: boolean,\n onDialogClose: () => void\n};\n\nconst useStyles = makeStyles<DefaultTheme, { inPublicSearch: boolean }>((theme) => ({\n FiltersComponent: {\n justifyContent: 'center',\n maxWidth: '800px',\n width: '95%',\n margin: '0 auto',\n },\n logo: {\n height: '14px',\n verticalAlign: 'unset',\n width: 'auto',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n },\n filters: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(2),\n flexWrap: 'wrap',\n },\n googleAutoComplete: {\n flex: ({ inPublicSearch }) => inPublicSearch ? '1 2 278px' : '1 2 800px',\n '& .MuiInputBase-root': {\n height: ({ inPublicSearch }) => inPublicSearch ? '40px' : 'auto',\n borderRadius: '5px',\n },\n },\n searchCriteria:{\n flex: 1,\n minWidth: '222px',\n '& .MuiButtonBase-root': {\n height: ({ inPublicSearch }) => inPublicSearch ? '40px' : 'auto',\n },\n },\n filtersButton: {\n marginLeft: theme.spacing(1),\n '& .MuiButtonBase-root': {\n maxHeight: ({ inPublicSearch }) => inPublicSearch ? '40px' : 'auto',\n maxWidth: ({ inPublicSearch }) => inPublicSearch && '90px',\n },\n },\n poweredByText: {\n alignSelf: 'flex-end',\n [theme.breakpoints.down(701)]: {\n paddingTop: theme.spacing(1),\n },\n },\n wrapper: {\n display: 'flex',\n flex: 1,\n },\n inventoryWrapper: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n [theme.breakpoints.down(701)]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n '& > :last-child': {\n alignSelf: 'flex-end',\n },\n },\n },\n}))\n\nexport const Filters = ({\n currentAppliedFilters = {},\n dateOptions,\n filterFormPath,\n hasSearched,\n onFilter,\n showFiltersButton = false,\n isLoading = false,\n aiSearch = false,\n prompt,\n aiSearchType,\n isDialogOpen = false,\n onDialogClose,\n} : FiltersProps) => {\n const inPublicSearch = isCurrentlyInPublicSearch();\n const classes = useStyles({inPublicSearch});\n const formRef = useRef(null);\n const [filters, setFilters] = useStateWithPromise({...currentAppliedFilters});\n\n useEffect(() => {\n setFilters(prevState => ({ ...prevState, ...currentAppliedFilters, amenities: currentAppliedFilters?.amenities?.filter(a => a) }));\n }, [currentAppliedFilters]);\n\n const handleLocationChange = (value: Place) => {\n if (value) {\n const { latitude, longitude, name: locationName } = value;\n onFilterChange({ latitude, longitude, locationName, searchMethod: 'searchEntered'});\n }\n };\n\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const onFilterChange = (value = {}) => {\n setFilters(prevState => ({ ...prevState, ...value })).then((values) => {\n const formData = createFormDataForFiltering(values, new FormData(formRef.current))\n\n onFilter(formData);\n });\n };\n\n const renderPoweredBy = () => {\n const white = inPublicSearch && hasSearched;\n\n return (\n <div className={classes.poweredByText}>\n <Typography style={{ fontSize: '14px', color: white ? 'white' : 'rgb(151, 151, 151)' }}>\n Powered by\n <img className={classes.logo} style={{ position: 'relative', top: '2px', paddingLeft: '4px' }} src={white ? '/assets/vrbo_logo_white.svg' : '/assets/vrbo_logo_blue.svg'} alt='Vrbo logo' />\n <img className={classes.logo} style={{ position: 'relative', top: '2px', paddingLeft: '8px' }}src={white ? '/assets/expedia_logo_white.svg' : '/assets/expedia_logo.svg'} alt='Expedia logo' />\n {aiSearch && ' & ChatGPT API'}\n </Typography>\n </div>\n );\n };\n\n const handlePromptSubmit = (prompt: string) => {\n onFilterChange({ prompt, searchMethod: 'aiSearch' });\n }\n\n const renderGoogleAutocompleteSearch = () => (\n <div className={classes.googleAutoComplete}>\n <GooglePlacesAutocomplete\n autoFocus\n defaultValue={filters.locationName}\n disabled={isLoading}\n types={[\"geocode\"]}\n formattedAddress\n fullWidth\n placeholder=\"Search stays\"\n onSelect={(value) => handleLocationChange(value)}\n />\n </div>\n );\n\n const renderGoogleSearch = () => (\n <div className={classes.container} data-test-id='regular-stays-search-section'>\n <div className={classes.filters}>\n {renderGoogleAutocompleteSearch()}\n {(!aiSearch || showFiltersButton || hasSearched) && (\n <div className={classes.wrapper}>\n <div className={classes.searchCriteria}>\n <SearchCriteria\n arrival={filters.arrival}\n bedroomCount={filters.bedroomCount}\n departure={filters.departure}\n hotelRoomCount={filters.hotelRoomCount}\n minGuests={filters.minGuests}\n inventory={filters.inventory}\n dateOptions={dateOptions}\n onChange={onFilterChange}\n aiSearchType={aiSearchType}\n />\n </div>\n {showFiltersButton && (\n <div className={classes.filtersButton}>\n <FiltersButton\n onChange={onFilterChange}\n filters={filters}\n />\n </div>\n )}\n </div>\n )}\n </div>\n <Grid container className={classes.inventoryWrapper}>\n <Grid item>\n {(!aiSearch || showFiltersButton || hasSearched) && (\n <InventoryRadioGroup\n value={currentAppliedFilters.inventory}\n hasSearched={hasSearched}\n onChange={onFilterChange}\n isLoading={isLoading}\n />\n )}\n </Grid>\n <Grid item>\n {renderPoweredBy()}\n </Grid>\n </Grid>\n </div>\n )\n\n return <div className={classes.FiltersComponent}>\n <RailsForm\n action={filterFormPath}\n method=\"GET\"\n ref={formRef}\n submitDisabled\n withChangeDetection={false}\n >\n <input type=\"hidden\" value={filters.searchMethod} name=\"search_method\" />\n {\n aiSearch ? (\n <AiSearchPromptSection\n aiTripSearch={aiSearchType === 'aiTripSearch'}\n handlePromptSubmit={handlePromptSubmit}\n hasSearched={hasSearched}\n isLoading={isLoading}\n isMobile={isMobile}\n prompt={prompt}\n />\n ) : renderGoogleSearch()\n }\n {aiSearch && <AiSearchCriteriaDialog\n defaultArrival={currentAppliedFilters.arrival || null}\n defaultLocationName={currentAppliedFilters.locationName}\n defaultDeparture={currentAppliedFilters.departure || null}\n isDialogOpen={isDialogOpen}\n defaultLatitude={currentAppliedFilters.latitude || null}\n defaultLongitude={currentAppliedFilters.longitude || null}\n defaultMinGuests={Number(currentAppliedFilters.minGuests)}\n onChange={onFilterChange}\n onClose={onDialogClose}\n aiSearchType={aiSearchType}\n />}\n </RailsForm>\n </div>;\n};\n\nexport default Filters;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../../../buttons/Button\";\n\ntype FilterButtonProps = {\n active?: boolean,\n children: React.ReactNode,\n className?: string,\n onClick?: () => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n border: [[`1px solid ${theme.palette.text.primary}`], '!important'],\n fontWeight: ['normal', '!important'],\n },\n active: {\n color: [[theme.palette.primary.main], '!important'],\n fontWeight: [600, '!important'],\n },\n}));\n\nconst FilterButton = ({\n active,\n children,\n className,\n onClick,\n ...buttonProps\n}: FilterButtonProps) => {\n const classes = useStyles();\n\n return (\n <Button\n variant=\"tertiary\"\n className={clsx(classes.root, className, { [classes.active]: active })}\n onClick={onClick}\n {...buttonProps}\n >\n {children}\n </Button>\n );\n};\n\nexport default FilterButton;\n","import React from \"react\";\nimport {\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n} from \"@mui/material\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\n\ntype InventoryRadioGroupProps = {\n hasSearched: boolean,\n onChange: (value: any) => void,\n value: string,\n isLoading: boolean,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { hasSearched: boolean }>((theme) => ({\n label: {\n fontSize: 14,\n color: ({ hasSearched }) => hasSearched ? '#FFFFFF' : theme.palette.text.primary,\n [theme.breakpoints.down(360)]: {\n fontSize: 12,\n },\n },\n}));\n\nconst InventoryRadioGroup = ({\n hasSearched,\n onChange,\n value = 'all',\n isLoading,\n}: InventoryRadioGroupProps) => {\n const classes = useStyles({ hasSearched });\n\n const RadioButton : React.FC<{value: string, label: string, disabled: boolean}> = ({\n value, label, disabled,\n }) => (\n <FormControlLabel\n classes={{ label: classes.label }}\n control={<Radio size=\"small\" />}\n label={label}\n value={value}\n disabled={disabled}\n />\n );\n\n return (\n <FormControl>\n <RadioGroup\n sx={{ flexWrap: 'nowrap' }}\n row\n name=\"inventory\"\n defaultValue={value}\n onChange={(_, value) => onChange({inventory: value, searchMethod: 'inventoryButton'})}\n >\n <RadioButton disabled={isLoading} value=\"all\" label=\"All\" />\n <RadioButton disabled={isLoading} value=\"vacation_rentals\" label=\"Vacation rentals\" />\n <RadioButton disabled={isLoading} value=\"hotels\" label=\"Hotels\" />\n </RadioGroup>\n </FormControl>\n );\n};\n\nexport default InventoryRadioGroup;\n","import React from 'react';\nimport {\n Grid,\n Typography,\n Checkbox,\n Collapse,\n Link,\n useMediaQuery,\n FormControlLabel,\n} from '@mui/material';\nimport { makeStyles, useTheme } from '@mui/styles';\nimport {\n POPULAR_FILTERS,\n FEATURES_FILTERS,\n ACCESSIBILITY_AND_SAFETY_FILTERS,\n ALL_AMENITIES_FILTERS,\n AmenitiesFiltersType,\n AmenitiesObjectFiltersType,\n} from '../../../../../../constants/amenitiesFilters';\nimport useSegment from \"../../../../../../services/useSegment\";\nimport useStateWithPromise from \"../../../../../../services/useStateWithPromise\";\ntype AmenitiesFiltersProps = {\n amenitiesFilters: AmenitiesFiltersType[],\n updateAmenitiesFilters: (amenities: AmenitiesFiltersType[]) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n fontSize: '18px',\n },\n subtitle: {\n fontWeight: 600,\n },\n selectedCount: {\n color: '#747474',\n fontSize: '12px',\n },\n amenityFilters: {\n fontSize: 14,\n fontWeight: 600,\n lineHeight: '24px',\n },\n selectAllText: {\n textTransform: \"uppercase\",\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n}));\n\nconst AmenitiesFilters : React.FC<AmenitiesFiltersProps> = ({\n amenitiesFilters,\n updateAmenitiesFilters,\n}) => {\n const classes = useStyles();\n const allSelected = ALL_AMENITIES_FILTERS.length === amenitiesFilters.length\n const [checked, setChecked] = useStateWithPromise(true);\n const { trackSegment } = useSegment();\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const collapseText = checked ? 'See less' : `+${Object.keys(FEATURES_FILTERS).length + Object.keys(ACCESSIBILITY_AND_SAFETY_FILTERS).length} more`;\n const isPublicSearch = window.location.pathname === '/search'\n const location = isPublicSearch ? 'Public Search' : 'SERP';\n\n const handleChange = () => {\n setChecked(!checked).then((value) => {\n trackSegment(value ? 'Filters Expanded' : 'Filters Collapsed', {\n ...(!value) && {selectionsHidden: true},\n isMobileApp,\n location,\n });\n });\n };\n\n const updateFilter = (checked : boolean, filter) => {\n const newAmenitiesFilters = checked ?\n [...amenitiesFilters, filter]\n : amenitiesFilters.filter((amenity : AmenitiesFiltersType) => amenity !== filter);\n\n updateAmenitiesFilters(newAmenitiesFilters);\n }\n\n const selectAll = () => {\n updateAmenitiesFilters(!allSelected ? ALL_AMENITIES_FILTERS : []);\n };\n\n const renderAmenities = (definedAmenitiesFilters : AmenitiesObjectFiltersType) => (\n Object.entries(definedAmenitiesFilters).map((filter) => (\n <Grid\n item\n container\n key={filter[0]}\n xs={6}\n direction='row'\n alignItems='flex-start'\n flexWrap='nowrap'\n >\n <FormControlLabel\n control={\n <Checkbox\n sx={{height: '12px', paddingLeft: 0}}\n checked={!!amenitiesFilters.find(f => f === filter[0])}\n onChange={(e : React.ChangeEvent<HTMLInputElement>) => updateFilter(e.target.checked, filter[0])}\n />\n }\n label={filter[1]}\n />\n </Grid>\n ))\n );\n\n const selectedFilters = (definedAmenitiesFilters : AmenitiesObjectFiltersType) => (\n amenitiesFilters.reduce((t,v) => t += Number(Object.keys(definedAmenitiesFilters).includes(v)), 0)\n );\n\n const renderSelectedFilters = (definedAmenitiesFilters : AmenitiesObjectFiltersType) => {\n const selectedCount = selectedFilters(definedAmenitiesFilters);\n return ( selectedCount > 0 ? (\n <Grid item ml={1}>\n <Typography\n data-test-id='selected-filters'\n className={classes.selectedCount}\n >\n ({selectedCount} selected)\n </Typography>\n </Grid>\n ) : null\n )\n };\n\n const renderSection = (title : string, definedAmenitiesFilters : AmenitiesObjectFiltersType, marginTop = 1 ) => (\n <Grid item container data-test-id={`${title}-section`} mt={marginTop}>\n <Grid item container direction='row' alignItems='center'>\n <Grid item my={1}>\n <Typography className={classes.subtitle}>{title}</Typography>\n </Grid>\n {renderSelectedFilters(definedAmenitiesFilters)}\n </Grid>\n <Grid item container mt={1} rowGap={3}>\n {renderAmenities(definedAmenitiesFilters)}\n </Grid>\n </Grid>\n );\n\n return(\n <Grid item container direction='column' spacing={4} mb={4}>\n <Grid\n item\n container\n justifyContent=\"space-between\"\n >\n <Typography variant=\"h3\" className={classes.title}>Amenities</Typography>\n <Typography\n variant=\"h3\"\n className={classes.selectAllText}\n data-test-id=\"select-all-amenities\"\n onClick={() => selectAll()}\n >\n {allSelected ? \"Deselect all\" : \"Select all\"}\n </Typography>\n </Grid>\n {renderSection('Popular', POPULAR_FILTERS)}\n <Collapse in={checked} sx={{marginLeft: '32px'}}>\n {renderSection('Features', FEATURES_FILTERS, 2)}\n {renderSection('Accessibility and Safety', ACCESSIBILITY_AND_SAFETY_FILTERS, 2)}\n </Collapse>\n <Grid item>\n <Link\n onClick={handleChange}\n data-test-id='collapse-amenities-link'\n sx={{cursor: 'pointer'}}\n underline=\"none\"\n className={classes.amenityFilters}\n >\n {collapseText}\n </Link>\n </Grid>\n </Grid>\n )\n};\n\nexport default AmenitiesFilters;\n","import React from 'react';\nimport { Grid, Typography, Checkbox, Switch } from '@mui/material';\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype BookingOptionsProps = {\n freeCancellationFilter: boolean,\n instantBookFilter: boolean,\n updateFreeCancellationFilter: (value: boolean) => void,\n updateInstantBookFilter: (value: boolean) => void,\n};\n\nconst bookingOptionsFiltersTexts = {\n instantBook: {\n title: 'Instant confirmation',\n text: 'Booking without waiting for owner approval.',\n },\n freeCancellation: {\n title: 'Free cancellation',\n text: 'Properties offering free cancellation depend on your trip dates. Check policy for details.',\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n fontSize: '18px',\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n fontWeight: 600,\n },\n selectedCount: {\n color: '#747474',\n fontSize: '12px',\n },\n filterSection: {\n paddingLeft: '16px !important',\n }\n}));\n\nconst BookingOptions : React.FC<BookingOptionsProps> = ({\n instantBookFilter,\n freeCancellationFilter,\n updateFreeCancellationFilter,\n updateInstantBookFilter,\n}) => {\n const classes = useStyles();\n\n const renderSection = (title : string, text: string, isChecked : boolean, onChange : (value: boolean)=>void) => (\n <Grid item container data-test-id={`${title}-section`} direction='row' flexWrap='nowrap' className={classes.filterSection}>\n <Switch\n checked={isChecked}\n onChange={(e : React.ChangeEvent<HTMLInputElement>) => onChange(e.target.checked)}\n\n />\n <Grid item container direction='column'>\n <Grid item>\n <Typography data-test-id='filter-title' className={classes.subtitle}>{title}</Typography>\n </Grid>\n <Grid item>\n <Typography data-test-id='filter-desc'>{text}</Typography>\n </Grid>\n </Grid>\n </Grid>\n );\n\n return(\n <Grid item container direction='column' spacing={3} mb={4}>\n <Grid item>\n <Typography variant=\"h3\" className={classes.title}>Booking options</Typography>\n </Grid>\n {renderSection(\n bookingOptionsFiltersTexts.freeCancellation.title,\n bookingOptionsFiltersTexts.freeCancellation.text,\n freeCancellationFilter,\n updateFreeCancellationFilter,\n )}\n {renderSection(\n bookingOptionsFiltersTexts.instantBook.title,\n bookingOptionsFiltersTexts.instantBook.text,\n instantBookFilter,\n updateInstantBookFilter\n )}\n </Grid>\n )\n};\n\nexport default BookingOptions;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n Slider,\n} from \"@mui/material\";\nimport { NumericFormat, NumericFormatProps } from 'react-number-format';\n\nexport const MIN_PRICE_EMPTY_VALUE = 0;\nexport const MAX_PRICE_EMPTY_VALUE = 1000;\n\ntype PriceFilterProps = {\n min?: number | null,\n max?: number | null,\n updateMinPrice: (value) => void,\n updateMaxPrice: (value) => void,\n};\n\ninterface CustomProps {\n emptyValue: number,\n emptyValueSuffix?: string,\n onBlur: () => void,\n onChange: (event: { target: { value: string } }) => void,\n value: number,\n};\n\nconst NumericFormatCustom = React.forwardRef<NumericFormatProps, CustomProps>(\n function NumericFormatCustom(props, ref) {\n const { onBlur, onChange, emptyValue, emptyValueSuffix, value, ...other } = props;\n\n const onValueChange = (values) => {\n onChange({target: { value: values.value }});\n };\n\n return (\n <NumericFormat\n {...other}\n getInputRef={ref}\n onBlur={onBlur}\n onValueChange={onValueChange}\n decimalScale={0}\n thousandSeparator=\"\"\n valueIsNumericString\n prefix=\"$\"\n allowNegative={false}\n value={value}\n suffix={emptyValueSuffix && value === emptyValue ? emptyValueSuffix : ''}\n />\n );\n },\n);\n\nconst PriceFilter = ({\n min,\n max,\n updateMinPrice,\n updateMaxPrice,\n}: PriceFilterProps) => {\n const [sliderValue, setSliderValue] = useState({\n minPrice: Number(min || MIN_PRICE_EMPTY_VALUE),\n maxPrice: Number(max || MAX_PRICE_EMPTY_VALUE)\n });\n const minDistance = 10;\n\n useEffect(() => {\n setSliderValue({\n minPrice: Number(min || MIN_PRICE_EMPTY_VALUE),\n maxPrice: Number(max || MAX_PRICE_EMPTY_VALUE),\n })\n }, [min, max])\n\n const onSliderChange = (event: Event, newValue: number | number[], activeThumb: number) => {\n setSliderValue(prevState => ({\n minPrice: activeThumb === 0 ? Math.min(newValue[0], prevState.maxPrice - minDistance) : prevState.minPrice,\n maxPrice: activeThumb === 1 ? Math.max(newValue[1], prevState.minPrice + minDistance) : prevState.maxPrice,\n }))\n };\n\n const onMinPriceChange = (price: number | '') => {\n setSliderValue( prevState => ({...prevState, minPrice: Number(price)}));\n };\n\n const onMaxPriceChange = (price: number | '') => {\n setSliderValue( prevState => ({...prevState, maxPrice: Number(price)}));\n };\n\n const onMinPriceBlur = () => {\n const validMinPrice = sliderValue.minPrice ? Math.min(Number(sliderValue.minPrice), Number(sliderValue.maxPrice) - minDistance) : MIN_PRICE_EMPTY_VALUE;\n\n if (sliderValue.minPrice !== validMinPrice) setSliderValue( prevState => ({...prevState, minPrice: validMinPrice}));\n\n updateMinPrice(validMinPrice === MIN_PRICE_EMPTY_VALUE ? '' : validMinPrice);\n };\n\n const onMaxPriceBlur = () => {\n const validMaxPrice = sliderValue.maxPrice ? Math.max(Number(sliderValue.maxPrice), Number(sliderValue.minPrice) + minDistance) : MAX_PRICE_EMPTY_VALUE;\n\n if (sliderValue.maxPrice !== validMaxPrice) setSliderValue( prevState => ({...prevState, maxPrice: validMaxPrice}));\n\n updateMaxPrice(validMaxPrice === MAX_PRICE_EMPTY_VALUE ? '' : validMaxPrice);\n };\n\n const onSliderChangeCommitted = (event: React.SyntheticEvent | Event, newValue: number | number[]) => {\n updateMinPrice(sliderValue.minPrice === MIN_PRICE_EMPTY_VALUE ? '' : sliderValue.minPrice);\n updateMaxPrice(sliderValue.maxPrice === MAX_PRICE_EMPTY_VALUE ? '' : sliderValue.maxPrice);\n };\n\n return (\n <Grid item container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography variant=\"h3\">Price range (nightly)</Typography>\n </Grid>\n\n <Grid item container alignItems=\"center\" spacing={1} flexWrap=\"nowrap\">\n <Grid item>\n <TextField\n data-test-id=\"min-price-field\"\n label=\"min\"\n onBlur={onMinPriceBlur}\n onChange={(event) => onMinPriceChange(parseInt(event.target.value) || '')}\n size=\"small\"\n InputProps={{\n inputComponent: NumericFormatCustom as any,\n }}\n inputProps={{\n emptyValue: MIN_PRICE_EMPTY_VALUE,\n value: sliderValue.minPrice,\n }}\n />\n </Grid>\n <Grid item>-</Grid>\n <Grid item>\n <TextField\n data-test-id=\"max-price-field\"\n label=\"max\"\n onBlur={onMaxPriceBlur}\n onChange={(event) => onMaxPriceChange(parseInt(event.target.value) || '')}\n size=\"small\"\n InputProps={{\n inputComponent: NumericFormatCustom as any,\n }}\n inputProps={{\n emptyValue: MAX_PRICE_EMPTY_VALUE,\n emptyValueSuffix: '+',\n value: sliderValue.maxPrice,\n }}\n />\n </Grid>\n </Grid>\n\n <Grid item>\n <Slider\n valueLabelDisplay=\"auto\"\n disableSwap\n value={[sliderValue.minPrice, sliderValue.maxPrice]}\n onChange={onSliderChange}\n onChangeCommitted={onSliderChangeCommitted}\n min={MIN_PRICE_EMPTY_VALUE}\n max={MAX_PRICE_EMPTY_VALUE}\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default PriceFilter;\n","import React, {useState} from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Checkbox,\n Grid,\n FormControlLabel,\n Typography,\n Stack,\n} from \"@mui/material\";\n\nexport type PropertyType = {\n checked: boolean,\n label: string,\n name: string,\n};\n\ntype PropertyTypesProps = {\n onPropertyTypeCheck: Function,\n propertyTypes: PropertyType[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n selectAllText: {\n textTransform: \"uppercase\",\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n}));\n\nconst PropertyTypes = ({\n onPropertyTypeCheck,\n propertyTypes,\n} : PropertyTypesProps) => {\n const classes = useStyles();\n const areAllSelected = () => propertyTypes.every((propertyType) => propertyType.checked);\n const [allSelected, setAllSelected] = useState(areAllSelected());\n\n const propertyTypesLength = propertyTypes.length;\n const firstColumnLimit = Math.ceil(propertyTypesLength / 2);\n const propertyTypesFirstColumn = propertyTypes.slice(0, firstColumnLimit);\n const propertyTypesSecondColumn = propertyTypes.slice(firstColumnLimit - propertyTypesLength);\n\n React.useEffect(() => {\n setAllSelected(areAllSelected());\n }, [propertyTypes]);\n\n const selectAll = () => {\n const checked = !areAllSelected();\n onPropertyTypeCheck(propertyTypes.map((propertyType) => ({...propertyType, checked})));\n }\n\n const onCheck = (index, event) => {\n onPropertyTypeCheck(propertyTypes.map((propertyType, i) => (i === index ? {...propertyType, checked : event.currentTarget.checked} : propertyType)));\n }\n\n const checkBoxes = (propertyType: PropertyType, index: number) => {\n return (\n <React.Fragment key={propertyType.label}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n data-test-id={`propertyType-${propertyType.name.replaceAll(' ', '-')}`}\n data-test-checked={propertyType.checked}\n id={propertyType.name}\n name=\"checkbox\"\n checked={propertyType.checked}\n onChange={(event) => onCheck(index, event)}\n />\n }\n label={propertyType.label}\n />\n </React.Fragment>\n )\n }\n\n return <>\n <Grid\n item\n container\n justifyContent=\"space-between\"\n >\n <Typography variant=\"h3\">Property type</Typography>\n <Typography\n variant=\"h3\"\n className={classes.selectAllText}\n data-test-id=\"selectAllText\"\n onClick={() => selectAll()}\n >\n {allSelected ? \"deselect all\" : \"select all\"}\n </Typography>\n </Grid>\n <Stack direction='row' spacing={2} pr={2} mt={2} justifyContent='space-between'>\n <Stack>\n {propertyTypesFirstColumn.map((propertyType, index) =>\n checkBoxes(propertyType, index),\n )}\n </Stack>\n <Stack mt={2} mr={2}>\n {propertyTypesSecondColumn.map((propertyType, index) =>\n checkBoxes(propertyType, index + firstColumnLimit),\n )}\n </Stack>\n </Stack>\n </>;\n};\n\nexport default PropertyTypes;\n","import React from 'react';\nimport { Button, Grid, Typography } from '@mui/material';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport StarIcon from '@mui/icons-material/Star';\n\ntype RatingFilterProps = {\n rating?: string,\n updateRatingFilter: (value?:string) => void;\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n border: '1px solid #D9D9D9',\n borderRadius: 5,\n color: '#272727',\n fontSize: 14,\n height: theme.spacing(4),\n },\n activeButton: {\n color: '#272727',\n background: '#E5E7FF !important',\n border: '2px solid #545DFC !important',\n borderRadius: 5,\n height: theme.spacing(4),\n textColor: '#272727',\n },\n star: {\n fill: '#D9D9D9',\n paddingLeft: theme.spacing(0.5),\n verticalAlign: 'top',\n },\n activeStar: {\n fill: '#FBA500',\n paddingLeft: theme.spacing(0.5),\n verticalAlign: 'top',\n },\n ratingRow: {\n flexWrap: 'nowrap',\n overflowX: 'auto',\n alignItems: 'flex-start',\n flexDirection: 'column',\n },\n}));\n\nconst RatingFilter : React.FC<RatingFilterProps> = ({\n rating,\n updateRatingFilter,\n}) => {\n const classes = useStyles();\n const listOfRatings = ['Any', '3.5', '4.0', '4.5'];\n const isButtonActive = (index: number) => {\n switch (index) {\n case 1:\n return rating === '3.5';\n case 2:\n return rating === '4.0';\n case 3:\n return rating === '4.5';\n default:\n return rating === '';\n }\n }\n\n return(\n <Grid item container direction='column' spacing={1}>\n <Grid item mb={1}>\n <Typography variant=\"h3\">Rating</Typography>\n </Grid>\n <Grid item container direction='row' spacing={1} className={classes.ratingRow}>\n <Grid item>\n At least\n </Grid>\n <Grid item container spacing={1} flexWrap='nowrap'>\n {listOfRatings.map((ratingLabel, index) => (\n <Grid item key={ratingLabel} justifyContent=\"flex-start\" alignItems=\"center\">\n <Grid item>\n <Button\n data-test-id='rating-filter-button'\n variant=\"outlined\"\n className={isButtonActive(index) ? classes.activeButton : classes.button}\n onClick={() => {\n updateRatingFilter(index === 0 ? '' : ratingLabel);\n }}>\n <Grid item>\n <Typography data-test-id='rating-filter-button'>\n {ratingLabel}\n </Typography>\n </Grid>\n <Grid item>\n {index !== 0 && (\n <StarIcon\n data-test-id='star-icon'\n className={isButtonActive(index) ? classes.activeStar : classes.star}/>\n )}\n </Grid>\n </Button>\n </Grid>\n </Grid>\n ))}\n </Grid>\n </Grid>\n </Grid>\n )\n};\n\nexport default RatingFilter;\n","import React from 'react';\nimport { Grid, Typography } from '@mui/material';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport Chip from \"../../../../../buttons/Chip\";\nimport Tooltip from \"../../../../../shared/Tooltip\";\n\ntype RoomFiltersProps = {\n bathroomCount: string,\n bedroomCount: string,\n hotelRoomCount: string,\n updateBathroomCount : (value?:string) => void,\n updateBedroomCount : (value?:string) => void,\n updateHotelRoomCount: (value?:string) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n chip: {\n border: '1px solid #D9D9D9 !important',\n height: '40px !important',\n minWidth: '48px',\n borderRadius: '40px !important',\n },\n activeChip: {\n background: '#E5E7FF !important',\n border: '2px solid #545DFC !important',\n borderRadius: '40px !important',\n minWidth: '48px',\n height: '40px !important',\n },\n chipsRow: {\n marginTop: theme.spacing(2),\n gap: theme.spacing(1),\n flexWrap: 'nowrap',\n width: '100%',\n overflowX: 'auto',\n },\n infoIcon: {\n verticalAlign: 'middle',\n marginLeft: theme.spacing(1),\n fontSize: 24,\n },\n}));\n\ntype RoomFilterProps = {\n count: string,\n onOptionClick: (value? : string) => void,\n options: string[],\n testId?: string,\n title: string,\n tooltip?: string,\n};\n\nexport const RoomFilter : React.FC<RoomFilterProps> = ({\n count,\n onOptionClick,\n options,\n testId,\n title,\n tooltip,\n}) => {\n const classes = useStyles();\n const isChipActive = (countLabel : string, index : number) => (parseInt(countLabel) || 0) === index;\n\n return (\n <Grid item width=\"100%\">\n <Typography>\n {title}\n {tooltip && (\n <Tooltip\n placement=\"top\"\n title={tooltip}\n >\n <InfoIcon className={classes.infoIcon} />\n </Tooltip>\n )}\n </Typography>\n <Grid item container className={classes.chipsRow}>\n {options.map((option, index) => (\n <Grid item key={`${title}-${option}`} margin={0.5}>\n <Chip\n data-test-id={testId}\n className={isChipActive(count, index) ? classes.activeChip : classes.chip}\n onClick={() => onOptionClick(index === 0 ? '' : option)}\n >\n {option}\n </Chip>\n </Grid>\n ))}\n </Grid>\n </Grid>\n )\n};\n\nconst RoomFilters : React.FC<RoomFiltersProps> = ({\n bathroomCount,\n bedroomCount,\n hotelRoomCount,\n updateBathroomCount,\n updateBedroomCount,\n updateHotelRoomCount,\n}) => {\n return(\n <Grid item container direction='column' spacing={3} mb={5}>\n <Grid item>\n <Typography variant=\"h3\">Rooms</Typography>\n </Grid>\n <RoomFilter\n count={bedroomCount}\n onOptionClick={updateBedroomCount}\n options={['Any', '1', '2', '3', '4', '5', '6+']}\n testId=\"bedroom-filter-chip\"\n title=\"Bedrooms\"\n tooltip=\"This bedroom count applies to vacation rental listings.\"\n />\n <RoomFilter\n count={bathroomCount}\n onOptionClick={updateBathroomCount}\n options={['Any', '1', '2', '3', '4', '5', '6+']}\n testId=\"bathroom-filter-chip\"\n title=\"Bathrooms\"\n />\n <RoomFilter\n count={hotelRoomCount}\n onOptionClick={updateHotelRoomCount}\n options={['Any', '1', '2', '3', '4', '5', '6', '7', '8']}\n title=\"Hotel rooms\"\n testId=\"hotelRoom-filter-chip\"\n tooltip=\"This room count applies to hotel listings.\"\n />\n </Grid>\n )\n};\n\nexport default RoomFilters;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Divider,\n Grid,\n IconButton,\n Link,\n Typography,\n} from \"@mui/material\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport FixedSaveBar from \"../../../../../shared/FixedSaveBar\";\nimport PropertyTypes from \"./PropertyTypes\";\nimport Drawer from '../../../../../shared/Drawer';\nimport RoomFilters from \"./RoomFilters\";\nimport PriceFilter from \"./PriceFilter\";\nimport RatingFilter from \"./RatingFilter\";\nimport AmenitiesFilters from \"./AmenitiesFilters\";\nimport BookingOptions from \"./BookingOptions\";\nimport { useTrackSERPEvent } from \"../../../../../../services/segmentEvents/useSERPEvents\";\nimport { CurrentAppliedFilters } from \"../../Filters\";\nimport {\n getStaysSearchFilteredEventProps,\n} from \"../../../../../../services/segmentEvents/getStaysSearchFilteredEventProps\";\n\ntype SortAndFilterDrawerProps = {\n filters: CurrentAppliedFilters,\n onClose: () => void,\n onSubmit: ({\n propertyTypes,\n bedroomCount,\n bathroomCount,\n minPrice,\n maxPrice,\n rating,\n amenities,\n instantBook,\n freeCancellation,\n hotelRoomCount,\n }) => void,\n open: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n drawerContent: {\n padding: theme.spacing(4),\n flex: 1,\n },\n divider: {\n marginLeft: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst SortAndFilterDrawer = ({\n filters,\n open,\n onSubmit,\n onClose,\n} : SortAndFilterDrawerProps) => {\n const classes = useStyles();\n const [ temporalFilters, setTemporalFilters ] = React.useState( filters );\n\n React.useEffect(() => {\n setTemporalFilters(filters);\n }, [filters]);\n\n const { trackSERPEvent } = useTrackSERPEvent();\n\n const onFiltersButtonDrawerSubmit = () => {\n const props = getStaysSearchFilteredEventProps(temporalFilters, 'drawer')\n trackSERPEvent('Stays Search Filtered', props);\n\n if (canSubmitForm()) {\n onSubmit({\n propertyTypes: temporalFilters.propertyTypes,\n bedroomCount: temporalFilters.bedroomCount,\n bathroomCount: temporalFilters.bathroomCount,\n minPrice: temporalFilters.minPrice,\n maxPrice: temporalFilters.maxPrice,\n rating: temporalFilters.rating,\n amenities: temporalFilters.amenities,\n instantBook: temporalFilters.instantBook,\n freeCancellation: temporalFilters.freeCancellation,\n hotelRoomCount: temporalFilters.hotelRoomCount,\n });\n }\n onClose();\n };\n\n const objectsEqual = (currentPropertyType, originalPropertyType) =>\n currentPropertyType.checked === originalPropertyType.checked;\n\n const arraysEqual = (originalPropertyTypes, currentPropertyTypes) =>\n originalPropertyTypes.length === currentPropertyTypes.length &&\n originalPropertyTypes.every(\n (object, index) => objectsEqual(object, currentPropertyTypes[index]),\n );\n\n const canSubmitForm: () => boolean = () => {\n return !arraysEqual(filters.propertyTypes, temporalFilters.propertyTypes) ||\n filters.bedroomCount !== temporalFilters.bedroomCount ||\n filters.bathroomCount !== temporalFilters.bathroomCount ||\n filters.minPrice !== temporalFilters.minPrice ||\n filters.maxPrice !== temporalFilters.maxPrice ||\n filters.rating !== temporalFilters.rating ||\n filters.amenities !== temporalFilters.amenities ||\n filters.instantBook !== temporalFilters.instantBook ||\n filters.freeCancellation !== temporalFilters.freeCancellation ||\n filters.hotelRoomCount !== temporalFilters.hotelRoomCount;\n };\n\n const onResetAllClick = () => {\n trackSERPEvent('SERP Filters Reset',\n {\n priceRangeReset: !!temporalFilters.minPrice || !!temporalFilters.maxPrice,\n propertyTypeReset: temporalFilters.propertyTypes.filter((type) => type.checked === true).length > 0,\n ratingReset: !!temporalFilters.rating,\n roomsReset: !!temporalFilters.bedroomCount || !!temporalFilters.bathroomCount,\n amenitiesReset: temporalFilters.amenities.length > 0,\n instantBookReset: temporalFilters.instantBook,\n freeCancellationReset: temporalFilters.freeCancellation,\n hotelRoomReset: !!temporalFilters.hotelRoomCount,\n },\n );\n\n setTemporalFilters({\n propertyTypes: temporalFilters.propertyTypes?.map((type) => ({...type, checked : false})),\n bedroomCount: '',\n bathroomCount: '',\n minPrice: '',\n maxPrice: '',\n rating: '',\n amenities: [],\n instantBook: false,\n freeCancellation: false,\n hotelRoomCount: '',\n });\n };\n\n const updateTemporalFilter = ({key, value}) => {\n setTemporalFilters( prevState => ({...prevState, [key]: value}));\n };\n\n return <>\n <Drawer\n anchor=\"left\"\n onClose={onClose}\n open={open}\n >\n <Box className={classes.drawerContent}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item container mb={2} justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography variant=\"h2\">\n Filters\n </Typography>\n </Grid>\n <Grid item>\n <IconButton onClick={onClose} data-test-id='CloseIcon'>\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n\n <Divider className={classes.divider} />\n\n <Grid item container direction=\"column\" spacing={5}>\n <Grid item>\n <PriceFilter\n min={Number(temporalFilters.minPrice)}\n max={Number(temporalFilters.maxPrice)}\n updateMinPrice={(value) => updateTemporalFilter({key: 'minPrice', value})}\n updateMaxPrice={(value) => updateTemporalFilter({key: 'maxPrice', value})}\n />\n </Grid>\n <Grid item width=\"100%\">\n <RatingFilter\n rating={temporalFilters.rating}\n updateRatingFilter={(value) => updateTemporalFilter({key: 'rating', value})}\n />\n </Grid>\n <Grid item width=\"100%\">\n <RoomFilters\n bathroomCount={temporalFilters.bathroomCount}\n bedroomCount={temporalFilters.bedroomCount}\n hotelRoomCount={temporalFilters.hotelRoomCount}\n updateBedroomCount={(value) => updateTemporalFilter({key: 'bedroomCount', value})}\n updateBathroomCount={(value) => updateTemporalFilter({key: 'bathroomCount', value})}\n updateHotelRoomCount={(value) => updateTemporalFilter({key: 'hotelRoomCount', value})}\n />\n </Grid>\n <Divider className={classes.divider} />\n <Grid item>\n <AmenitiesFilters\n amenitiesFilters={temporalFilters.amenities ?? []}\n updateAmenitiesFilters={(value) => updateTemporalFilter({key: 'amenities', value})}\n />\n </Grid>\n <Divider className={classes.divider} />\n <BookingOptions\n instantBookFilter={temporalFilters.instantBook}\n updateInstantBookFilter={(value) => updateTemporalFilter({key: 'instantBook', value})}\n freeCancellationFilter={temporalFilters.freeCancellation}\n updateFreeCancellationFilter={(value) => updateTemporalFilter({key: 'freeCancellation', value})}\n />\n <Divider className={classes.divider} />\n <Grid item>\n <PropertyTypes\n onPropertyTypeCheck={(value) => updateTemporalFilter({key: 'propertyTypes', value})}\n propertyTypes={temporalFilters.propertyTypes}\n />\n </Grid>\n </Grid>\n </Grid>\n </Box>\n <FixedSaveBar\n buttonContent=\"Apply\"\n extraButton={\n <Link\n component=\"button\"\n data-test-id='reset-all-button'\n onClick={onResetAllClick}\n sx={{ paddingTop: '16px', color: '#272727', paddingLeft: '16px' }}\n type=\"button\"\n underline=\"none\"\n variant=\"h3\"\n >\n Reset all\n </Link>\n }\n onClick={onFiltersButtonDrawerSubmit}\n saveButtonType=\"button\"\n />\n </Drawer>\n </>;\n};\n\nexport default SortAndFilterDrawer;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Badge,\n Box,\n Chip,\n Theme,\n useMediaQuery,\n} from \"@mui/material\";\nimport TuneIcon from '@mui/icons-material/Tune';\nimport Button from \"../../../buttons/Button\";\nimport SortAndFilterDrawer from \"./Filters/SortAndFilter/SortAndFilterDrawer\";\nimport { CurrentAppliedFilters } from \"./Filters\";\nimport { ListingsContext } from \"../StaysSearch\";\nimport clsx from \"clsx\";\nimport { useTheme } from \"@mui/styles\";\nimport {\n ALL_AMENITIES_FILTERS,\n} from \"../../../../constants/amenitiesFilters\";\n\ntype FiltersButtonProps = {\n onChange: (value: any) => void,\n filters: CurrentAppliedFilters\n aiSearch?: boolean,\n};\n\ntype StyleProps = {\n aiSearch: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme): {} => ({\n root: {\n border: '1px solid #D9D9D9',\n borderRadius: '5px',\n maxHeight: ({ aiSearch }) => aiSearch ? '90px' : '32px',\n fontSize: 16,\n fontWeight: 600,\n },\n aiSearchFilter: {\n border: '1px solid #D9D9D9',\n borderRadius: '5px',\n height: '32px !important',\n marginRight: theme.spacing(1),\n marginTop: 14,\n padding: '0px 4px !important',\n },\n badge: {\n backgroundColor: \"#272727\",\n height: 12,\n minWidth: 12,\n borderRadius: 10,\n },\n currentFiltersCounter: {\n marginRight: theme.spacing(1),\n backgroundColor: \"#334351\",\n color: 'white',\n width: theme.spacing(2.5),\n height: theme.spacing(2.5),\n '& span': {\n padding: 0,\n display: 'flex',\n justifyContent: 'center',\n width: theme.spacing(3),\n },\n },\n}));\n\nexport const FiltersButton = ({\n onChange,\n filters,\n aiSearch = false,\n}: FiltersButtonProps) => {\n const classes = useStyles({ aiSearch });\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const {\n openFiltersDrawer,\n closeFiltersDrawer,\n isFiltersDrawerOpen,\n } = React.useContext(ListingsContext);\n\n const onSubmit = (newFilters) => {\n onChange({ ...newFilters, searchMethod: 'filtersButton' });\n }\n\n const isBedroomFilterApplied = filters.bedroomCount !== '' && !!filters.bedroomCount;\n const isBathroomFilterApplied = filters.bathroomCount !== '' && !!filters.bathroomCount;\n const isRatingFilterApplied = filters.rating !== '' && !!filters.rating;\n const isPriceFilterApplied = !!filters.minPrice || !!filters.maxPrice;\n const isAmenitiesFilterApplied = filters.amenities ?\n filters.amenities.filter((amenity) => ALL_AMENITIES_FILTERS.includes(amenity)).length > 0 : false;\n const isHotelRoomFilterApplied = filters.hotelRoomCount !== '' && !!filters.hotelRoomCount;\n\n const appliedFiltersCount : number = (filters.propertyTypes?.filter(type => type.checked).length ?? 0) +\n (isBedroomFilterApplied ? 1 : 0) +\n (isBathroomFilterApplied ? 1 : 0) +\n (isPriceFilterApplied ? 1 : 0) +\n (isRatingFilterApplied ? 1 : 0) +\n (isAmenitiesFilterApplied ? filters.amenities.length : 0) +\n (filters.instantBook ? 1 : 0) +\n (filters.freeCancellation ? 1 : 0) +\n (isHotelRoomFilterApplied ? 1 : 0);\n\n const numOfFilterChipLabel = Number(appliedFiltersCount)\n const isFilterApplied = numOfFilterChipLabel > 0;\n\n return <>\n <Box>\n <Button\n className={clsx(\n {\n [classes.aiSearchFilter]: aiSearch,\n [classes.root]: !aiSearch,\n },\n )}\n onClick={openFiltersDrawer}\n data-test-id=\"propertyTypeFilter\"\n variant=\"tertiary\"\n >\n <>\n {aiSearch && (\n <Badge\n data-test-id='dot-badge'\n classes={{ badge: classes.badge }}\n badgeContent=\" \"\n variant=\"dot\"\n overlap='rectangular'\n invisible={!isFilterApplied}\n >\n {isMobile ?\n <TuneIcon /> :\n <>\n <TuneIcon style={{paddingRight: 4}}/>\n <span style={{ paddingRight: 4 }}>Filters</span>\n </>\n }\n </Badge>\n )}\n {!aiSearch && (isFilterApplied ? (\n <>\n <Chip\n label={numOfFilterChipLabel}\n className={classes.currentFiltersCounter}\n data-test-id=\"currentFiltersCounter\"\n />\n {isMobile ? <TuneIcon style={{paddingLeft: 2}}/> : 'Filters'}\n </>\n ) : (\n <>\n <TuneIcon />\n Filters\n </>\n ))}\n </>\n </Button>\n </Box>\n <SortAndFilterDrawer\n filters={filters}\n onClose={closeFiltersDrawer}\n onSubmit={onSubmit}\n open={isFiltersDrawerOpen}\n />\n </>;\n};\n\nexport default FiltersButton;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\n\ntype InventoryBannerProps = {\n availability?: number,\n};\n\ntype inventoryBannerType = 'unavailable' | 'available' | 'neutral';\n\nexport type inventoryBannerSegmentTextType = 'low inventory' | 'neutral inventory' | 'high inventory';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n borderRadius: theme.spacing(1),\n display: 'flex',\n justifyContent: 'center',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n width: '100%',\n border: '1px solid #D4D4D4',\n padding: theme.spacing(0, 2),\n textAlign: 'center',\n },\n unavailableCase: {\n backgroundColor: '#FCF6EF',\n },\n availableCase: {\n background: '#E9F9F4',\n },\n}));\n\nconst typeThresholds = (availability : number) : inventoryBannerType => {\n if(availability === undefined || availability >= 100) return 'neutral';\n if(availability < 10) return 'unavailable';\n if(availability < 30) return 'neutral';\n return 'available';\n}\n\nexport const inventoryBannerSegmentText = (availability : number) => {\n const type = typeThresholds(availability);\n // eslint-disable-next-line no-unused-vars\n const segmentValues : {[key in inventoryBannerType] : inventoryBannerSegmentTextType} = {\n 'available': 'high inventory',\n 'unavailable': 'low inventory',\n 'neutral': 'neutral inventory',\n };\n return segmentValues[type];\n}\n\nconst InventoryBanner : React.FC<InventoryBannerProps> = ({availability}) => {\n const classes = useStyles();\n const typeValues = {\n 'available': {\n text: <p>Most stays are available for your dates. Book now to lock in the best option!</p>,\n class: classes.availableCase,\n },\n 'unavailable': {\n text: <p><span style={{fontWeight: 600}}>These dates are popular!</span> Only 10% of stays are available on our site.</p>,\n class: classes.unavailableCase,\n },\n };\n\n const type = typeThresholds(availability);\n if(type === 'neutral') return null;\n return(\n <Grid item container>\n <Grid item className={clsx(classes.container, typeValues[type].class)}>\n {typeValues[type].text}\n </Grid>\n </Grid>\n )\n}\n\nexport default InventoryBanner;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport {ButtonBase, Grid, useMediaQuery} from \"@mui/material\";\nimport {makeStyles, useTheme} from \"@mui/styles\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport InfoWindow from \"./../../../shared/MapView/InfoWindow\";\nimport { ExternalListingProps } from \"../../../shared/TripObjectTypes\";\nimport { ListingsMapContext } from \"../../../../services/RenderWithOrWithoutSidebar\";\nimport MapCard from \"../../trips/microsite/HousingPage/MapView/MapCard\";\nimport { searchLocation, isCurrentlyInPublicSearch } from \"../../../../services/windowLocation\";\nimport useMapClickEventRef from \"../../../../services/segmentEvents/useMapClickEventRef\";\n\ntype ListingMarkerProps = {\n active: boolean,\n alreadyOnTrip: boolean,\n label: string,\n lat: number,\n listing: ExternalListingProps,\n lng: number,\n onClick: () => void,\n onInfoWindowClickOut: () => void,\n sidebar: boolean,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n boxShadow: '0px 5px 10px rgba(0, 0, 0, 0.3)',\n position: 'absolute',\n left: -(parseInt(theme.spacing(11)) / 2),\n backgroundColor: '#FFFFFF',\n padding: theme.spacing(1),\n borderRadius: 6,\n height: 34,\n width: theme.spacing(11),\n textAlign: 'center',\n color: theme.palette.primary.main,\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n right: 38,\n bottom: -5,\n borderTop: '6px solid #FFFFFF',\n borderRight: '6px solid transparent',\n borderLeft: '6px solid transparent',\n borderBottom: 'none',\n },\n '&:focus': {\n zIndex: 99,\n },\n },\n active: {\n zIndex: 101,\n backgroundColor: theme.palette.primary.main,\n color: '#FFFFFF',\n '&::after': {\n borderTopColor: theme.palette.primary.main,\n },\n },\n alreadyOnTrip: {\n backgroundColor: theme.palette.general.dark,\n color: '#FFFFFF',\n '&::after': {\n borderTopColor: theme.palette.general.dark,\n },\n },\n label: {\n fontSize: 14,\n fontWeight: 600,\n },\n icon: {\n fontSize: 14,\n marginRight: 4,\n },\n listingCard: {\n position: 'fixed',\n borderRadius: '10px',\n [theme.breakpoints.up('sm')]: {\n top: '50%',\n left:'25%',\n transform: 'translate(-50%, -50%)',\n },\n backgroundColor: '#FFFFFF',\n width: '250px',\n },\n}));\n\nconst ListingMarker = ({\n active,\n alreadyOnTrip,\n label,\n listing,\n onClick,\n onInfoWindowClickOut,\n sidebar,\n}: ListingMarkerProps) => {\n const classes = useStyles();\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const sidebarOrMobileView = sidebar || isMobileApp;\n const inPublicSearch = isCurrentlyInPublicSearch();\n const location = searchLocation()\n const mapClickEventRef = useMapClickEventRef('stays', listing.uuid, location);\n\n const { hoveredListing } = React.useContext(ListingsMapContext);\n const highlighted = listing.id === hoveredListing?.id;\n\n const renderListingCard = () => (\n <MapCard\n stay={listing}\n key={`marker-listing-${listing.id}`}\n isSERP={!inPublicSearch}\n />\n );\n\n const renderInfoWindowContent = () => {\n if (sidebarOrMobileView) return renderListingCard();\n\n return (\n <Grid className={classes.listingCard} data-test-id='listing-card-div'>\n {renderListingCard()}\n </Grid>\n );\n };\n\n return React.useMemo(() => <>\n {active && (\n <InfoWindow onClickOut={onInfoWindowClickOut} position={sidebarOrMobileView ? 'absolute' : 'relative'}>\n {renderInfoWindowContent()}\n </InfoWindow>\n )}\n <ButtonBase\n data-test-id=\"listingMarker\"\n onClick={onClick}\n ref={mapClickEventRef}\n className={clsx(\n classes.root,\n {\n [classes.active]: highlighted || active,\n [classes.alreadyOnTrip]: alreadyOnTrip,\n },\n )}\n >\n {alreadyOnTrip && (\n <CheckCircleIcon className={classes.icon} />\n )}\n <span className={classes.label}>\n {label}\n </span>\n </ButtonBase>\n </>, [active, hoveredListing, listing]);\n};\n\nexport default ListingMarker;\n","import React from \"react\";\nimport pluralize from 'pluralize';\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport NavigateBeforeIcon from '@mui/icons-material/NavigateBefore';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport Skeleton from \"@mui/material/Skeleton\";\nimport IconButton from \"../../../buttons/IconButton\";\nimport { ExternalListingProps } from \"../../../shared/TripObjectTypes\";\nimport { StayType } from \"../../../shared/TripObjectTypes\";\nimport ExternalListingCard from \"./ExternalListingCard\";\nimport { RenderCtaButtonType, SuggestedDestinationType } from \"../StaysSearch\";\nimport { ListingsMapContext } from \"../../../../services/RenderWithOrWithoutSidebar\";\nimport InventoryBanner from \"./InventoryBanner\";\nimport LoadingState from \"./LoadingState\";\nimport {aiSearchType, CurrentAppliedFilters} from \"./Filters\";\nimport AiResults from \"./AiResults\";\nimport ListingsEmptyState from \"./ListingsEmptyState\";\nimport ListingsErrorState from \"./ListingsErrorState\";\nimport AiFilters from \"./AiFilters\";\n\nexport type Pagination = {\n count: number,\n from: number,\n items: number,\n next: boolean,\n next_url: string,\n page: number,\n prev: boolean,\n prev_url: string,\n to: number,\n};\n\nexport type ModelOutputs = {\n filters?: CurrentAppliedFilters | {},\n alternatives?: [{name: string, latitude: number, longitude: number}],\n requestId?: string | null,\n handleLocationChange: (location: {latitude: number, longitude: number}) => void,\n searchMethod: string,\n}\n\ntype ListingsBoxProps = {\n fetchListings: (fetchArgs?: { pageUrl: string }) => void,\n isLoading: boolean,\n initialLoad: boolean,\n listings: ExternalListingProps[] | StayType[],\n locationName?: string,\n pagination: Pagination,\n error?: boolean,\n topSuggestedDestinations?: SuggestedDestinationType[],\n renderCtaButton: RenderCtaButtonType,\n availability?: number,\n aiSearch?: boolean,\n aiSearchType?: aiSearchType,\n modelOutputs?: ModelOutputs,\n currentAppliedFilters?: CurrentAppliedFilters,\n triggerFilterDialog: (value: boolean) => void,\n onFilter: (value: object) => void,\n prompt?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n costDisclaimer: {\n fontSize: 14,\n color: '#555E64',\n },\n listingsContainer: {\n marginTop: theme.spacing(),\n },\n pageListingsDescription: {\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n },\n}));\n\nconst Loading = (aiSearch = false) => {\n const texts = [\n 'Sending your request to Troupie...',\n 'Selecting your filters...',\n 'Analyzing your options...',\n 'Preparing your results...',\n 'Adding the finishing touches...',\n ];\n\n\n return aiSearch ? (\n <LoadingState texts={texts} interval={1.5} />\n ) : (\n Array.from({length: 3}, (element, index) => (\n <Grid item key={index} data-test-id={\"Loading\"}>\n <Skeleton variant=\"rectangular\" height={140} />\n <Skeleton variant=\"text\" height={40} />\n <Skeleton variant=\"text\" height={40} />\n </Grid>\n ))\n );\n};\n\nconst ListingsBox = ({\n fetchListings,\n isLoading,\n initialLoad,\n listings,\n locationName,\n pagination,\n error = false,\n topSuggestedDestinations,\n renderCtaButton,\n availability,\n aiSearch = false,\n aiSearchType,\n modelOutputs,\n currentAppliedFilters,\n triggerFilterDialog,\n onFilter,\n prompt,\n}: ListingsBoxProps) => {\n const classes = useStyles();\n const { setHoveredListing } = React.useContext(ListingsMapContext);\n\n const showResults = listings && listings.length > 0;\n const showEmptyState = initialLoad && !locationName;\n\n const pageListingsDescription = () => {\n const isSinglePage = !pagination.next && !pagination.prev;\n const totalListingsCountLabel = pagination.count >= 300 ? '300+' : `${pagination.count}`\n\n if (isSinglePage) {\n return <span>{pagination.count}</span>;\n } else {\n return (\n <span>\n <strong>{`${pagination.from} - ${pagination.to}`} {` of ${totalListingsCountLabel} `}</strong>\n </span>\n );\n }\n };\n\n const hideRationaleAndAlternatives = () => {\n const NORMAL_SEARCH_METHODS = [\n 'chipDismissed',\n 'filtersButton',\n 'searchCriteria',\n 'inventoryButton',\n 'troupieAlternativeSuggestions',\n 'alternativeTile',\n ]\n\n return NORMAL_SEARCH_METHODS.includes(modelOutputs?.searchMethod);\n }\n\n const renderNavigation = () => (\n <Grid item container justifyContent=\"center\" alignItems=\"center\">\n <IconButton\n data-test-id=\"previousPage\"\n disabled={!pagination.prev}\n onClick={() => fetchListings({pageUrl: pagination.prev_url})}\n >\n <NavigateBeforeIcon/>\n </IconButton>\n <Typography\n className={classes.pageListingsDescription}\n data-test-id=\"pageListingsDescription\"\n >\n {pageListingsDescription()}\n <span>{` ${pluralize('listing', pagination.count)}`}</span>\n </Typography>\n <IconButton\n data-test-id=\"nextPage\"\n disabled={!pagination.next}\n onClick={() => fetchListings({pageUrl: pagination.next_url})}\n >\n <NavigateNextIcon/>\n </IconButton>\n </Grid>\n );\n\n const renderResults = () => (\n <>\n <Grid item container direction=\"row\" justifyContent=\"space-between\" data-test-id=\"listings-results\">\n {aiSearch ? (\n <AiResults\n hideRationaleAndAlternatives={hideRationaleAndAlternatives()}\n modelRequestId={modelOutputs?.requestId}\n pagination={pagination}\n currentAppliedFilters={currentAppliedFilters}\n triggerFilterDialog={triggerFilterDialog}\n aiSearchType={aiSearchType}\n onFilter={onFilter}\n prompt={prompt}\n />\n ) : (\n <Grid item>\n <Typography variant=\"h2\">\n Results\n </Typography>\n </Grid>\n )}\n </Grid>\n {!aiSearch && (\n <>\n <Grid item>\n <Typography>\n {pageListingsDescription()}\n {locationName ? ` in ${locationName}` : ''}\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.costDisclaimer}>\n Cost may not include taxes and fees\n </Typography>\n </Grid>\n </>\n )}\n <InventoryBanner availability={availability * 100} />\n <Grid container\n className={classes.listingsContainer}\n justifyContent='space-between'\n spacing={3}\n >\n {listings.map((listing) =>\n <Grid item\n xs={12} sm={6} mb={2}\n key={listing.id}\n onMouseEnter={() => setHoveredListing({ id: listing.id, latitude: listing.latitude, longitude: listing.longitude })}\n onMouseLeave={() => setHoveredListing(null)}\n >\n <ExternalListingCard\n stay={listing}\n renderCtaButton={renderCtaButton}\n />\n </Grid>,\n )}\n {renderNavigation()}\n </Grid>\n </>\n );\n\n const renderEmptyState = () => (\n <ListingsEmptyState\n aiSearchType={aiSearchType}\n topSuggestedDestinations={topSuggestedDestinations}\n />\n );\n\n const renderErrorState = () => (\n <>\n {aiSearch && (\n <AiFilters\n currentAppliedFilters={currentAppliedFilters}\n onHandleAiSearchFilterChange={(newValue) => onFilter({...currentAppliedFilters, ...newValue})}\n onFilter={onFilter}\n triggerFilterDialog={triggerFilterDialog}\n aiSearchType={aiSearchType}\n pagination={pagination}\n />\n )}\n <ListingsErrorState\n error={error}\n initialLoad={initialLoad}\n aiSearch={aiSearch}\n fetchListings={fetchListings}\n />\n </>\n );\n\n return (\n <Box mt={0}>\n <Grid container direction=\"column\">\n {isLoading && Loading(aiSearch)}\n {!isLoading && showResults && renderResults()}\n {!isLoading && !showResults && (\n <>\n {showEmptyState ? renderEmptyState() : renderErrorState()}\n </>\n )}\n </Grid>\n </Box>\n );\n};\n\nexport default ListingsBox;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport TripTypeDestinations from \"../TripTypeDestinations\";\nimport TopSuggestedDestinationsTileList from \"./TopSuggestedDestinationsTileList\";\nimport { SuggestedDestinationType } from \"../StaysSearch\";\nimport { isCurrentlyInPublicSearch } from \"../../../../services/windowLocation\";\nimport { aiSearchType } from \"./Filters\";\nimport AiPublicSearchEmptyState from \"./AiPublicSearchEmptyState\";\n\ntype ListingsEmptyStateProps = {\n aiSearchType?: aiSearchType,\n topSuggestedDestinations?: SuggestedDestinationType[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n [theme.breakpoints.down('md')]: {\n height: '200px',\n },\n [theme.breakpoints.up('sm')]: {\n height: '400px',\n },\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(2),\n },\n emptyStateText: {\n textAlign: 'center',\n fontSize: '18px',\n },\n emptyStateHeader: {\n textAlign: 'center',\n fontSize: '24px',\n fontWeight: 600,\n color: '#272727',\n marginTop: theme.spacing(2),\n },\n}));\n\nconst ListingsEmptyState : React.FC<ListingsEmptyStateProps> = ({\n aiSearchType,\n topSuggestedDestinations = [],\n}) => {\n const classes = useStyles();\n const showTopSuggestedDestinations = topSuggestedDestinations.length > 0\n const showEnterDestinationCopy = !aiSearchType && !showTopSuggestedDestinations;\n\n const renderEnterDestinationCopy = () => (\n <Grid container direction=\"column\" justifyContent=\"center\" data-test-id=\"enter-destination\">\n <img\n className={classes.image}\n alt=\"Initial load\"\n src=\"/assets/illustrations/Search_03.svg\"\n />\n <Typography className={classes.emptyStateHeader}>\n Enter your destination to get started\n </Typography>\n <Typography className={classes.emptyStateText}>\n and leave the search to us.\n </Typography>\n </Grid>\n );\n\n return (\n <>\n {showEnterDestinationCopy && renderEnterDestinationCopy()}\n <Grid container direction=\"column\" spacing={5}>\n {isCurrentlyInPublicSearch() && (\n <Grid item sx={{ width: '100%'}}>\n <TripTypeDestinations />\n </Grid>\n )}\n {showTopSuggestedDestinations && (\n <Grid item sx={{ width: '100%'}}>\n <TopSuggestedDestinationsTileList topSuggestedDestinations={topSuggestedDestinations} />\n </Grid>\n )}\n </Grid>\n {aiSearchType === 'aiPublicSearch' && <AiPublicSearchEmptyState />}\n </>\n )\n}\n\nexport default ListingsEmptyState;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../../buttons/Button\";\n\ntype ListingsErrorStateProps = {\n error: boolean,\n initialLoad: boolean,\n aiSearch: boolean,\n fetchListings: (object) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n [theme.breakpoints.down('md')]: {\n height: '200px',\n },\n [theme.breakpoints.up('sm')]: {\n height: '400px',\n },\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(2),\n },\n emptyStateText: {\n textAlign: 'center',\n fontSize: '18px',\n },\n emptyStateHeader: {\n textAlign: 'center',\n fontSize: '24px',\n fontWeight: 600,\n color: '#272727',\n marginTop: theme.spacing(2),\n },\n retryButton: {\n width: '140px',\n height: '50px',\n alignSelf: 'center',\n textDecoration: 'none',\n fontWeight: 600,\n padding: '8px 24px 8px 24px',\n borderRadius: '6px',\n fontSize: '16px',\n marginTop: theme.spacing(3),\n },\n}));\n\nconst ListingsErrorState : React.FC<ListingsErrorStateProps> = ({\n error,\n initialLoad,\n aiSearch,\n fetchListings,\n}) => {\n const classes = useStyles();\n\n const emptyStateKey = (initialLoad, isAiSearch, error) => {\n if (isAiSearch) {\n return 'aISearchError';\n } else if(error) {\n return 'searchError';\n }\n\n return 'defaultError';\n };\n\n const showEmptyState = (emptyState) => {\n const emptyStateDetails = {\n searchError: {\n alt: \"after initial load\",\n src: \"02\",\n header: \"Sorry, there was an error making your request\",\n subHeader: \"\",\n },\n aISearchError: {\n alt: \"after initial load\",\n src: \"02\",\n header: \"No results found\",\n subHeader: \"Oops! Troupie couldn't find any matches based on your criteria. You can modify your prompt or try again.\",\n },\n defaultError: {\n alt: \"after initial load\",\n src: \"02\",\n header: \"We couldn’t find any stays that match your search\",\n subHeader: \"Try adjusting your dates or filters\",\n },\n };\n\n const selectedDetail = emptyStateDetails[emptyState];\n\n return (\n <Grid\n container\n direction=\"column\"\n justifyContent=\"center\"\n >\n <img\n className={classes.image}\n alt={selectedDetail.alt}\n src={`/assets/illustrations/Search_${selectedDetail.src}.svg`}\n />\n <Typography className={classes.emptyStateHeader}>\n {selectedDetail.header}\n </Typography>\n {selectedDetail.subHeader &&\n <Typography className={classes.emptyStateText}>\n {selectedDetail.subHeader}\n </Typography>\n }\n </Grid>\n )\n };\n\n return (\n <>\n {showEmptyState(emptyStateKey(initialLoad, aiSearch, error))}\n {error && !initialLoad && (\n <Button\n className={classes.retryButton}\n data-test-id='retry-button'\n onClick={() => fetchListings({ skipCache: aiSearch, retrySameSearch: true })}\n >\n Try again\n </Button>\n )}\n </>\n )\n}\n\nexport default ListingsErrorState;\n","import React, { useCallback, useContext, useEffect, useReducer } from \"react\";\nimport ListingMarker from \"./ListingMarker\";\nimport MapView from \"./../../../shared/MapView/MapView\";\nimport { updatePosition } from \"../../../../services/mapPosition\";\nimport SearchCheckBox from \"./SearchCheckBox\";\nimport debounce from 'lodash/debounce';\nimport { ListingsContext } from \"../StaysSearch\";\nimport { ListingsMapContext } from \"../../../../services/RenderWithOrWithoutSidebar\";\nimport { ExternalListingProps } from \"../../../shared/TripObjectTypes\";\nimport {Grid, useMediaQuery} from \"@mui/material\";\nimport Button from \"../../../buttons/Button\";\nimport useExpandMapEventRef from \"../../../../services/segmentEvents/useExpandMapEventRef\";\nimport {useTheme} from \"@mui/styles\";\nimport {aiSearchType} from \"./Filters\";\nimport { searchLocation } from \"../../../../services/windowLocation\";\n\ntype ListingsMapViewProps = {\n latitude?: number,\n listings: ExternalListingProps[],\n longitude?: number,\n radius: number,\n listView?: boolean,\n onExpandMapClick?: () => void,\n sidebar?: boolean,\n aiSearch?: boolean,\n aiSearchType?: aiSearchType,\n};\n\nconst reducer = (state, action) => {\n const setState = (props) => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'setMap':\n return setState({ map: action.map });\n case 'loadListings':\n return setState({ activeMarker: null, isLoadingListings: true });\n case 'loadFinished':\n return setState({ isLoadingListings: false });\n case 'setMarker':\n return setState({ activeMarker: action.activeMarker });\n case 'unsetMarker':\n return setState({ activeMarker: null });\n case 'setSearchMovingMap':\n return setState({ isLoadingListings: action.checked, searchMovingMap: action.checked });\n default:\n throw new Error();\n }\n};\n\nconst ListingsMapView = ({\n radius,\n listView,\n listings,\n onExpandMapClick,\n sidebar = false,\n aiSearch,\n aiSearchType,\n}: ListingsMapViewProps) => {\n const { latitude, longitude, onMapPositionChange } = useContext(ListingsContext);\n const { hoveredListing } = useContext(ListingsMapContext);\n const locationName = searchLocation()\n const expandMapButtonRef = useExpandMapEventRef('search page', 'expand map', locationName, aiSearchType)\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const initialState = {\n activeMarker: null,\n isLoadingListings: false,\n map: null,\n searchMovingMap: true,\n };\n\n const [{activeMarker, isLoadingListings, map, searchMovingMap}, dispatch] = useReducer(reducer, initialState);\n\n const fetchListings = () => {\n if (map) {\n const center = map.getCenter();\n const bounds = map.getBounds();\n const visiblePoints = [\n bounds.getNorthEast(),\n bounds.getSouthWest(),\n new google.maps.LatLng(center.lat(), bounds.getNorthEast().lng()),\n new google.maps.LatLng(center.lat(), bounds.getSouthWest().lng()),\n ];\n const visibleDistances = visiblePoints.map(point => google.maps.geometry.spherical.computeDistanceBetween(center, point));\n const radius = Math.min(...visibleDistances);\n\n onMapPositionChange(center.lat(), center.lng(), radius);\n }\n };\n\n useEffect(() => {\n dispatch({ type: 'loadFinished' });\n }, [listings]);\n\n const debouncedFetchListings = useCallback(\n debounce(() => fetchListings(), 500),\n [map],\n );\n\n const handleMarkerClick = (listingId, lat, lng) => {\n dispatch({ type: 'setMarker', activeMarker: listingId })\n if(sidebar || isMobileApp) updatePosition(lat, lng, map);\n map.setOptions({ disableDoubleClickZoom: true });\n };\n\n const handleMarkerClickOut = () => {\n dispatch({ type: 'unsetMarker' })\n map.setOptions({ disableDoubleClickZoom: false });\n };\n\n const handleMapChange = () => {\n if (searchMovingMap) {\n dispatch({ type: 'loadListings' });\n }\n };\n\n const handleSearchCheckBoxChange = (checked) => {\n dispatch({ type: 'setSearchMovingMap', checked: checked });\n };\n\n useEffect(() => {\n if (isLoadingListings && searchMovingMap && !activeMarker && !aiSearch) {\n debouncedFetchListings();\n }\n }, [isLoadingListings]);\n\n const listingLabel = (listing: ExternalListingProps) => (\n listing.pricing.price ? `${listing.pricing.currency}${listing.pricing.price}` : '-'\n );\n\n useEffect(() => {\n if (hoveredListing && map) {\n const newLatlng = new google.maps.LatLng(hoveredListing.latitude, hoveredListing.longitude);\n map.panTo(newLatlng);\n }\n }, [hoveredListing]);\n\n const markers = listings?.filter((listing) => listing.longitude && listing.latitude) || [];\n\n return (\n <>\n {!listView && (\n <SearchCheckBox\n hideSearch={aiSearch}\n isChecked={searchMovingMap}\n isLoading={isLoadingListings}\n onChange={(checked) => handleSearchCheckBoxChange(checked)}\n />\n )}\n <MapView\n latitude={latitude}\n longitude={longitude}\n markers={markers}\n radius={radius}\n renderMarker={(map, listing) =>\n <ListingMarker\n active={activeMarker === listing.id}\n alreadyOnTrip={listing.alreadyOnTrip}\n key={`marker-${listing.id}`}\n label={listingLabel(listing)}\n lat={listing.latitude}\n listing={listing}\n lng={listing.longitude}\n onClick={() => handleMarkerClick(listing.id, listing.latitude, listing.longitude)}\n onInfoWindowClickOut={() => handleMarkerClickOut()}\n sidebar={sidebar}\n />\n }\n onMapLoaded={(map) => dispatch({ type: 'setMap', map })}\n onDragEnd={() => handleMapChange()}\n onZoomChange={() => handleMapChange()}\n />\n {listView && (\n <Grid\n item\n pt={2}\n >\n <Button\n data-test-id='expand-map'\n variant=\"secondary\"\n fullWidth\n onClick={onExpandMapClick}\n ref={expandMapButtonRef}\n >\n Expand map\n </Button>\n </Grid>\n )}\n </>\n );\n};\n\nexport default ListingsMapView;\n","import React, { useEffect, useState } from 'react';\nimport Grid from '@mui/material/Grid';\nimport { makeStyles } from \"@mui/styles\";\nimport { Typography } from \"@mui/material\";\n\ntype LoadingStateProps = {\n texts: string[];\n interval: number;\n};\n\nconst useStyles = makeStyles((theme) => ({\n loadTextItem: {\n fontSize: 20,\n color: theme.palette.primary.main,\n fontWeight: 600,\n fontFamily: 'poppins, sans-serif',\n },\n loadingGif: {\n width: '75%',\n marginTop: '60px',\n marginBottom: '-20px',\n [theme.breakpoints.up('sm')]: {\n width: '30%',\n },\n },\n}));\n\nconst LoadingState = ({ texts, interval }: LoadingStateProps) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const classes = useStyles();\n\n useEffect(() => {\n const maxIndex = texts.length;\n\n const intervalId = setInterval(() => {\n setCurrentIndex((prevIndex) => (prevIndex + 1) % maxIndex);\n }, interval * 1000);\n\n return () => clearInterval(intervalId);\n }, [texts, interval]);\n\n return (\n <Grid container direction=\"column\" alignItems=\"center\" >\n <img src=\"/assets/Loading_White_Bkg\" alt=\"loading\" className={classes.loadingGif} />\n <Typography className={classes.loadTextItem}>\n {texts[currentIndex]}\n </Typography>\n </Grid>\n );\n};\n\nexport default LoadingState;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport type RecentlySearchedDestination = {\n name: string,\n imageUrl: string,\n dates: string,\n}\n\ntype RecentlySearchedCardProps = {\n recentlySearchedDestination: RecentlySearchedDestination,\n};\n\nexport type RecentlySearchedProps = {\n recentlySearchedDestinations?: RecentlySearchedDestination[],\n}\n\nconst useStyles = makeStyles((theme) => ({\n recentlySearched: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n flexDirection: 'column',\n gap: theme.spacing(3),\n },\n image: {\n width: '78px',\n height: '65px',\n borderRadius: theme.spacing(1),\n },\n destinationCard: {\n flexDirection: 'row',\n background: '#F5F9FF',\n border: '1px solid #D4D4D4',\n borderRadius: theme.spacing(1),\n gap: theme.spacing(2),\n alignItems: 'center',\n padding: theme.spacing(1),\n width: '275px',\n flexShrink: 0,\n },\n cardsContainer: {\n display: 'flex',\n flexWrap: 'nowrap',\n gap: theme.spacing(2),\n overflowX: 'auto',\n },\n destinationName: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n width: '155px',\n },\n}));\n\nconst RecentlySearchedCard : React.FC<RecentlySearchedCardProps> = ({\n recentlySearchedDestination,\n}) => {\n const classes = useStyles();\n return(\n <Grid item container className={classes.destinationCard}>\n <img\n className={classes.image}\n src={recentlySearchedDestination.imageUrl}\n />\n <div>\n <Typography className={classes.destinationName}>\n {recentlySearchedDestination.name}\n </Typography>\n <Typography>\n {recentlySearchedDestination.dates}\n </Typography>\n </div>\n </Grid>\n )\n}\n\nconst RecentlySearched : React.FC<RecentlySearchedProps> = ({\n recentlySearchedDestinations = [],\n}) => {\n const classes = useStyles();\n if(!(recentlySearchedDestinations.length > 0)) return null;\n return(\n <Grid item container className={classes.recentlySearched}>\n <Grid item>\n <Typography variant=\"h2\">\n Recently searched\n </Typography>\n </Grid>\n <Grid container className={classes.cardsContainer}>\n {\n recentlySearchedDestinations.map((recentlySearchedDestination) => (\n <RecentlySearchedCard\n recentlySearchedDestination={recentlySearchedDestination}\n key={`${recentlySearchedDestination.name}-${recentlySearchedDestination.dates}`}\n />\n ))\n }\n </Grid>\n </Grid>\n )\n}\n\nexport default RecentlySearched;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Box,\n Grid,\n FormControlLabel,\n Typography,\n} from \"@mui/material\";\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport { DisappearedLoading } from 'react-loadingg';\nimport StyledCheckbox from \"../../../shared/StyledCheckbox\";\nimport Button from \"../../../buttons/Button\";\nimport { ListingsContext } from \"../StaysSearch\";\n\ntype SearchCheckBoxProps = {\n hideSearch: boolean,\n isChecked: boolean,\n isLoading: boolean,\n onChange: (checked: boolean) => void,\n};\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: theme.spacing(6),\n marginTop: theme.spacing(4),\n position: 'absolute',\n width: '100%',\n zIndex: 101,\n '@supports (margin-top: env(safe-area-inset-top))': {\n margin: `calc(env(safe-area-inset-top) + ${theme.spacing(2)}) env(safe-area-inset-right) 0 env(safe-area-inset-left)`,\n },\n },\n boxWrapper: {\n height: '100%',\n display: 'flex',\n flex: 1,\n justifyContent: 'center',\n marginRight: theme.spacing(4),\n },\n box: {\n backgroundColor: \"#FFFFFF\",\n borderRadius: theme.spacing(1),\n boxShadow: '0 2px 4px 0 rgba(60, 64, 67, 0.3)',\n height: '100%',\n alignItems: 'center',\n },\n loading: {\n height: '100%',\n paddingLeft: theme.spacing(5),\n paddingRight: theme.spacing(5),\n },\n searchCheckBox: {\n height: '100%',\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n margin: 0,\n paddingRight: theme.spacing(1),\n },\n searchLabel: {\n fontSize: '14px',\n },\n backButtonWrapper: {\n marginLeft: theme.spacing(4),\n },\n backButton: {\n border: 'none !important',\n borderRadius: theme.spacing(0.75),\n boxShadow: '0 2px 4px 0 rgba(60, 64, 67, 0.3)',\n paddingBottom: `${theme.spacing(1.5)} !important`,\n paddingLeft: `${theme.spacing(1)} !important`,\n paddingRight: `${theme.spacing(1)} !important`,\n paddingTop: `${theme.spacing(1.5)} !important`,\n },\n}));\n\nconst SearchCheckBox = ({\n onChange,\n isChecked,\n isLoading,\n hideSearch = false,\n}: SearchCheckBoxProps) => {\n const classes = useStyles();\n\n return (\n <Grid container justifyContent={hideSearch ? 'flex-start' : 'center'} className={classes.root}>\n <Grid item className={classes.backButtonWrapper} data-test-id='list-view'>\n <ListingsContext.Consumer>\n {({ toggleView }) => (\n <Button className={classes.backButton} variant=\"tertiary\" onClick={toggleView}>\n <ChevronLeftIcon fontSize=\"large\"/>\n </Button>\n )}\n </ListingsContext.Consumer>\n </Grid>\n {!hideSearch && <Grid item className={classes.boxWrapper} data-test-id='map-search-as-move'>\n <Box className={classes.box}>\n {isLoading ?\n <Grid alignItems=\"center\" className={classes.loading}>\n <DisappearedLoading\n size=\"small\"\n color={\"rgba(196, 196, 196, 1)\"}\n style={{\n backgroundColor: '#FFFFFF',\n height: '100%',\n }}\n />\n </Grid> :\n <FormControlLabel\n className={classes.searchCheckBox}\n control={\n <StyledCheckbox\n checked={isChecked}\n onChange={(event) => onChange(event.target.checked)}\n />\n }\n label={<Typography className={classes.searchLabel}>Search as I move map</Typography>}\n />\n }\n </Box>\n </Grid>}\n <Grid item />\n </Grid>\n );\n};\n\nexport default SearchCheckBox;\n","import React, { useState } from \"react\";\nimport {\n Box,\n ButtonBase,\n Divider,\n IconButton,\n Grid,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport clsx from \"clsx\";\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount';\nimport moment from \"moment\";\nimport DatesSection from \"./SearchCriteriaDrawer/DatesSection\";\nimport GuestsSection from \"./SearchCriteriaDrawer/GuestsSection\";\nimport { DateOptionProps } from \"../StaysSearch\";\nimport Drawer from \"../../../shared/Drawer\";\nimport FixedSaveBar from \"../../../shared/FixedSaveBar\";\nimport { useTrackSERPEvent } from \"../../../../services/segmentEvents/useSERPEvents\";\nimport { ListingsContext } from \"../StaysSearch\";\nimport { useTheme } from \"@mui/styles\";\nimport pluralize from \"pluralize\";\nimport { RoomFilter } from \"./Filters/SortAndFilter/RoomFilters\";\nimport {aiSearchType} from \"./Filters\";\n\ntype SearchCriteriaProps = {\n arrival?: string,\n departure?: string,\n minGuests?: number,\n dateOptions: DateOptionProps[],\n onChange: (value: any) => void,\n inventory?: string,\n bedroomCount?: string,\n hotelRoomCount?: string,\n aiSearchType?: aiSearchType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n searchCriteriaBar: {\n width: '100%',\n border: '1px solid #D9D9D9',\n borderRadius: '5px',\n padding: '4px 16px',\n justifyContent: 'flex-start',\n backgroundColor: theme.palette.common.white,\n },\n selectedValue: {\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n lineHeight: '24px',\n whiteSpace: 'nowrap',\n '& svg': {\n marginRight: theme.spacing(1),\n },\n },\n noValueSelected: {\n color: '#979797',\n },\n}));\n\nconst SearchCriteria = ({\n arrival = '',\n departure = '',\n minGuests = 1,\n inventory,\n dateOptions,\n onChange,\n bedroomCount = '',\n hotelRoomCount = '',\n aiSearchType,\n}: SearchCriteriaProps) => {\n const { trackSERPEvent } = useTrackSERPEvent();\n const { openSearchCriteriaDrawer, closeSearchCriteriaDrawer, isSearchCriteriaDrawerOpen } = React.useContext(ListingsContext);\n const roomCountType = {hotels: hotelRoomCount, vacation_rentals: bedroomCount}\n const roomCount = roomCountType[inventory];\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const renderRoomCriteria = !isMobile && roomCount;\n\n\n const SearchCriteriaBar = () => {\n const classes = useStyles();\n\n const formatDate = (date) => moment(date).format('MMM DD');\n const areDatesSelected = !!arrival;\n const datesText = areDatesSelected ? `${formatDate(arrival)} - ${formatDate(departure)}` : 'Select dates';\n const guestsText = `${minGuests} ${renderRoomCriteria ? `${pluralize('guest', Number(minGuests))}, ${roomCount} ${pluralize('room', Number(roomCount))}` : ''}`\n\n return (\n <ButtonBase\n data-test-id=\"search-criteria-bar\"\n disableTouchRipple\n onClick={() => openSearchCriteriaDrawer()}\n className={classes.searchCriteriaBar}\n >\n <Typography className={clsx(classes.selectedValue, { [classes.noValueSelected]: !areDatesSelected })}>\n <CalendarMonthIcon /> {datesText}\n </Typography>\n <Typography className={classes.selectedValue} ml={2}>\n <SupervisorAccountIcon /> {guestsText}\n </Typography>\n </ButtonBase>\n );\n };\n\n const SearchCriteriaDrawer = () => {\n const [selectedDates, setSelectedDates] = useState([arrival, departure]);\n const [selectedMinGuests, setSelectedMinGuests] = useState(minGuests);\n const [selectedBedrooms, setSelectedBedrooms] = useState(bedroomCount);\n const [selectedHotelRooms, setSelectedHotelRooms] = useState(hotelRoomCount);\n\n const onDrawerSubmit = () => {\n const nightCount = moment(selectedDates[1]).diff(moment(selectedDates[0]), 'days') || 0;\n\n trackSERPEvent('Search Criteria Submitted', {\n nightCount,\n bedroomCount: selectedBedrooms,\n hotelRoomCount: selectedHotelRooms,\n location: aiSearchType,\n });\n\n closeSearchCriteriaDrawer();\n\n if (canSubmitForm()) {\n onChange({\n arrival: selectedDates[0] || '',\n departure: selectedDates[1] || '',\n minGuests: selectedMinGuests,\n bedroomCount: selectedBedrooms,\n hotelRoomCount: selectedHotelRooms,\n searchMethod: 'searchCriteria',\n });\n }\n };\n\n const canSubmitForm: () => boolean = () => {\n return (\n (arrival !== selectedDates[0]) ||\n (departure !== selectedDates[1]) ||\n (minGuests !== selectedMinGuests) ||\n (bedroomCount !== selectedBedrooms) ||\n (hotelRoomCount !== selectedHotelRooms)\n );\n };\n\n return (\n <Drawer\n anchor=\"left\"\n onClose={closeSearchCriteriaDrawer}\n open={isSearchCriteriaDrawerOpen}\n >\n <Box sx={{ flex: 1 }} p={2} pb={3}>\n <Grid container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography variant=\"h2\">Edit your search</Typography>\n </Grid>\n <Grid item>\n <IconButton onClick={closeSearchCriteriaDrawer}>\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n\n <Divider />\n\n <DatesSection\n dateOptions={dateOptions}\n selectedDates={selectedDates}\n setSelectedDates={setSelectedDates}\n />\n <GuestsSection\n minGuests={Number(minGuests)}\n onGuestsSelected={setSelectedMinGuests}\n />\n\n <Grid container direction=\"column\" spacing={2} mt={1}>\n <RoomFilter\n count={selectedBedrooms}\n onOptionClick={setSelectedBedrooms}\n options={['Any', '1', '2', '3', '4', '5', '6+']}\n title=\"Bedrooms\"\n tooltip=\"This bedroom count applies to vacation rental listings.\"\n />\n <RoomFilter\n count={selectedHotelRooms}\n onOptionClick={setSelectedHotelRooms}\n options={['Any', '1', '2', '3', '4', '5', '6', '7', '8']}\n title=\"Hotel rooms\"\n tooltip=\"This room count applies to hotel listings.\"\n />\n </Grid>\n </Box>\n <FixedSaveBar\n buttonContent=\"Update\"\n onClick={onDrawerSubmit}\n saveButtonType=\"button\"\n />\n </Drawer>\n );\n };\n\n return (\n <>\n <input type=\"hidden\" value={arrival} name=\"arrival\" />\n <input type=\"hidden\" value={departure} name=\"departure\" />\n <input type=\"hidden\" value={minGuests} name=\"min_guests\" />\n <SearchCriteriaBar />\n <SearchCriteriaDrawer />\n </>\n );\n};\n\nexport default SearchCriteria;\n","import React from \"react\";\nimport {\n FormControlLabel,\n Grid,\n Link,\n Radio,\n RadioGroup,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport clsx from \"clsx\";\nimport { DateOptionProps } from \"../../StaysSearch\";\nimport { default as DateRangePicker } from \"../../../../shared/CustomDateRangePicker\";\n\ntype DatesSectionProps = {\n dateOptions: DateOptionProps[],\n selectedDates: string[],\n setSelectedDates: (dates) => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n headerText: {\n fontSize: 18,\n fontWeight: 600,\n color: theme.palette.text.primary,\n lineHeight: '24px',\n },\n sectionText: {\n fontSize: 16,\n color: theme.palette.text.primary,\n lineHeight: '21px',\n },\n clearDatesButton: {\n textTransform: \"uppercase\",\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n disabled: {\n color: '#bdbdbd',\n },\n customDatesContainer: {\n maxWidth: '390px !important',\n },\n}));\n\nconst DatesSection = ({\n dateOptions,\n selectedDates,\n setSelectedDates,\n}: DatesSectionProps) => {\n const classes = useStyles();\n const isSERP = window.location.href.includes('/add_by_search')\n const [arrival, departure] = selectedDates;\n\n const selectedDatesInDateOptions = dateOptions.find((dateOption) => (\n dateOption.startDate === arrival && dateOption.endDate === departure\n ));\n const [customSelection, setCustomSelection] = React.useState(!selectedDatesInDateOptions)\n\n const handleDateChange = (event) => {\n if (event.target.value === 'custom') {\n setCustomSelection(true);\n } else {\n setSelectedDates(event.target.value.split('|'))\n setCustomSelection(false);\n }\n };\n\n const clearDatesLink = () => (\n <Link\n variant=\"h3\"\n component=\"button\"\n disabled={!arrival && !departure}\n className={clsx(classes.clearDatesButton, { [classes.disabled]: !arrival && !departure })}\n data-test-id=\"clearDatesButton\"\n onClick={() => setSelectedDates([null, null])}\n underline=\"none\"\n >\n Clear dates\n </Link>\n )\n\n const onDateRangePickerChange = (dateRange) => {\n const startDate = dateRange[0];\n const endDate = dateRange[1];\n\n if (startDate && endDate && endDate.isAfter(startDate, 'day')) {\n setSelectedDates([\n startDate.format('YYYY-MM-DD'),\n endDate.format('YYYY-MM-DD')\n ]);\n }\n };\n\n const currentRadioValue = customSelection ? 'custom' : `${arrival}|${departure}`;\n const chosenDate = dateOptions.find((dateOption) => dateOption.isChosenDate);\n\n const DateOptionRadio = ({ dateOption }: { dateOption: DateOptionProps }) => (\n <FormControlLabel\n disabled={dateOption.isPast}\n value={`${dateOption.startDate}|${dateOption.endDate}`}\n control={<Radio color=\"primary\" />}\n data-test-id={`${dateOption.formattedStartDate} - ${dateOption.formattedEndDate}`}\n label={`${dateOption.formattedStartDate} - ${dateOption.formattedEndDate}`}\n />\n );\n\n return (\n <RadioGroup value={currentRadioValue} data-test-id='dates-radio-button' onChange={handleDateChange}>\n <Grid container direction=\"column\" spacing={1} mt={2}>\n <Grid item container justifyContent='space-between' sx={{ maxWidth: '390px !impmortant' }}>\n <Typography className={classes.headerText}>Dates</Typography>\n {!isSERP && clearDatesLink()}\n </Grid>\n {dateOptions.length > 0 && !chosenDate && (\n <Grid item>\n <Typography className={classes.sectionText}>\n These are the dates your group is voting on.\n </Typography>\n </Grid>\n )}\n <Grid item container direction=\"column\">\n {chosenDate ?\n <Grid item>\n <DateOptionRadio dateOption={chosenDate} />\n </Grid>\n : dateOptions.map((dateOption, index) => (\n <Grid key={`date-option-radio-${index}`} item>\n <DateOptionRadio dateOption={dateOption} />\n </Grid>\n ))}\n {isSERP && (\n <Grid\n className={classes.customDatesContainer}\n container\n flexWrap=\"nowrap\"\n item\n justifyContent='space-between'\n >\n <FormControlLabel\n value=\"custom\"\n control={<Radio color=\"primary\" />}\n label=\"Custom dates\"\n data-test-id=\"custom-dates\"\n />\n {clearDatesLink()}\n </Grid>\n )}\n </Grid>\n\n <Grid item>\n <DateRangePicker\n helperText={false}\n autoComplete=\"off\"\n disabled={!customSelection}\n startValue={arrival}\n endValue={departure}\n onChange={(dateRange) => onDateRangePickerChange(dateRange)}\n useMobilePicker\n />\n </Grid>\n </Grid>\n </RadioGroup>\n );\n};\n\nexport default DatesSection;\n","import React from \"react\";\nimport {\n Grid,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport StepperInput from \"../../../../shared/StepperInput\";\n\ntype GuestsSectionProps = {\n minGuests: number,\n onGuestsSelected: (value: number) => void,\n};\n\nconst GuestsSection = ({\n minGuests,\n onGuestsSelected,\n}: GuestsSectionProps) => {\n\n return (\n <Grid container direction=\"column\" spacing={1} mt={2}>\n <Grid item>\n <Typography variant=\"h2\">Guests</Typography>\n </Grid>\n <Grid item container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography>Adults</Typography>\n </Grid>\n <Grid item data-test-id=\"minGuestsValue\">\n <StepperInput\n defaultValue={minGuests}\n minValue={1}\n maxValue={20}\n onChange={(value) => onGuestsSelected(value)}\n />\n </Grid>\n </Grid>\n </Grid>\n );\n};\n\nexport default GuestsSection;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Chip,\n Grid,\n} from \"@mui/material\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport { CurrentAppliedFilters } from \"./Filters\";\nimport pluralize from \"pluralize\";\nimport { PropertyType } from \"./Filters/SortAndFilter/PropertyTypes\";\nimport {\n ALL_FILTERS_OBJECT,\n AmenitiesFiltersType,\n} from \"../../../../constants/amenitiesFilters\";\nimport { capitalize } from \"../../../../utils/strings\";\nimport { useTrackSERPEvent } from \"../../../../services/segmentEvents/useSERPEvents\";\nimport {\n getStaysSearchFilteredEventProps,\n} from \"../../../../services/segmentEvents/getStaysSearchFilteredEventProps\";\n\ntype SearchFilterChipsProps= {\n appliedFilters: CurrentAppliedFilters,\n onClick: (value: object) => void,\n};\n\nconst mapPriceAndRatingFilter = {\n \"maxPrice\": 'Less than',\n \"minPrice\": 'More than',\n};\n\nconst mapRoomFilterValue = {\n \"bedroomCount\": 'bedroom',\n \"bathroomCount\": 'bathroom',\n \"hotelRoomCount\": 'hotel room',\n};\n\nconst mapBookingOptionValue = {\n freeCancellation: 'Free cancellation',\n instantBook: 'Instant confirmation',\n};\n\nconst useStyles = makeStyles((theme) => ({\n filterChipContainer: {\n paddingTop: theme.spacing(1),\n flexWrap: 'nowrap',\n },\n chip: {\n margin: '8px 0px 0px 4px',\n },\n}))\n\nconst SearchFilterChips = ({\n appliedFilters,\n onClick,\n}: SearchFilterChipsProps) => {\n const classes = useStyles();\n const { trackSERPEvent } = useTrackSERPEvent();\n\n const handleOnDelete = (object) => {\n const newFilters = Object.assign({}, appliedFilters, object)\n\n onClick({ ...newFilters, searchMethod: 'chipDismissed' })\n\n const props = getStaysSearchFilteredEventProps(newFilters, 'chip')\n trackSERPEvent('Stays Search Filtered', props);\n };\n\n const renderChip = (label: string, key: string, filterName: string, value: false | null | PropertyType[] | AmenitiesFiltersType[]) => {\n const filterPair = {};\n filterPair[filterName] = value\n\n return (\n <Chip\n data-test-id={`filter-chip-${key}`}\n className={classes.chip}\n deleteIcon={<CloseIcon/>}\n key={key}\n label={label}\n variant=\"outlined\"\n onDelete={() => handleOnDelete(filterPair)}\n />\n )\n };\n\n return(\n <Grid container className={classes.filterChipContainer}>\n {Object.keys(mapPriceAndRatingFilter).map((filter) => {\n const priceFilter = appliedFilters[filter];\n return (priceFilter && renderChip(`${mapPriceAndRatingFilter[filter]} $${priceFilter}`, `price-${filter}`, filter,null))\n })}\n {appliedFilters?.rating && renderChip(`At least ${appliedFilters.rating} ratings`, 'rating','rating', null)}\n {Object.keys(mapRoomFilterValue).map((filter) => {\n const roomFilter = appliedFilters[filter]\n return (roomFilter && renderChip(`${roomFilter} ${pluralize(mapRoomFilterValue[filter], roomFilter)}`, `${filter}`, filter, null))\n })}\n {appliedFilters?.amenities?.map((filter) => {\n const newAppliedAmenities = appliedFilters?.amenities?.filter(am => am !== filter)\n\n return renderChip(ALL_FILTERS_OBJECT[filter] || capitalize((filter.replace(/_/g, ' '))), `amenities-${filter}`, 'amenities', newAppliedAmenities)\n })}\n {Object.keys(mapBookingOptionValue).map((filter) => {\n const bookingOptionFilter = appliedFilters[filter];\n return (bookingOptionFilter && renderChip(mapBookingOptionValue[filter], `bookingOption-${filter}`, filter,false))\n })}\n {appliedFilters?.propertyTypes?.map((propertyType) => {\n const newAppliedPropertyTypes = appliedFilters?.propertyTypes?.filter(pt => pt !== propertyType)\n return propertyType.checked && renderChip(propertyType.label, `propertyType-${propertyType.label}`, 'propertyTypes', newAppliedPropertyTypes)\n })}\n </Grid>\n )\n};\n\nexport default SearchFilterChips;\n","import React from \"react\";\nimport {\n ButtonBase,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport truncateString from \"../../../../helpers/truncateString\";\nimport clsx from \"clsx\";\nimport { ListingsContext, SuggestedDestinationType } from \"../StaysSearch\";\nimport { shouldDisplayRankingLabel } from \"../../../../services/displayRankingLabel\";\nimport { useTrackSERPEvent } from \"../../../../services/segmentEvents/useSERPEvents\";\nimport { isCurrentlyInPublicSearch } from \"../../../../services/windowLocation\";\n\ntype TopSuggestedDestinationTileListProps = {\n topSuggestedDestinations: Array<SuggestedDestinationType>,\n}\n\ntype SuggestedDestinationTileProps = {\n suggestedDestination: SuggestedDestinationType,\n position: number,\n}\n\nconst useStyles = makeStyles((theme) => ({\n tile: {\n height: '200px !important',\n [theme.breakpoints.down(\"sm\")]: {\n width: '150px',\n },\n [theme.breakpoints.up(\"sm\")]: {\n width: '338px',\n },\n flexGrow: 1,\n paddingBottom: theme.spacing(1),\n paddingRight: theme.spacing(1),\n borderRadius: '5px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n tileImage: {\n objectFit: 'cover',\n width: '100%',\n height: '100%',\n borderRadius: '5px',\n background: 'linear-gradient(0deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))',\n },\n tileText: {\n position: 'absolute',\n fontSize: 18,\n lineHeight: '24px',\n zIndex: 3,\n color: \"white\",\n },\n tileFilter: {\n position: 'absolute',\n zIndex: 2,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n borderRadius: '5px',\n },\n tileGrid: {\n width: '100%',\n },\n choiceLabel: {\n background: '#6f42c1',\n position: 'absolute',\n left: 0,\n bottom: 0,\n width: '100%',\n height: '30px',\n padding: '4px',\n color: '#fff',\n borderBottomLeftRadius: '5px',\n borderBottomRightRadius: '5px',\n fontSize: theme.spacing(2),\n fontWeight: 600,\n zIndex: 2,\n },\n topChoice: {\n background: '#1ebe95',\n },\n crown: {\n paddingRight: theme.spacing(1),\n },\n}));\n\ntype RankingLabelProps = {\n ranking: number,\n};\n\nconst RankingLabel = ({\n ranking,\n}: RankingLabelProps ) => {\n const classes = useStyles();\n const isGroupFavorite = ranking === 1\n let labelText;\n\n switch (ranking) {\n case 1:\n labelText = \"Group favorite\"\n break;\n case 2:\n labelText = \"2nd place\"\n break;\n case 3:\n labelText = \"3rd place\"\n break\n default:\n labelText = null;\n }\n\n return (\n <Typography data-test-id=\"choiceLabel\">\n <span className={clsx(\n classes.choiceLabel,\n { [classes.topChoice]: ranking === 1 },\n )}>\n { isGroupFavorite && (<img className={classes.crown} src=\"/assets/illustrations/Crown.svg\"/>)}\n { labelText }\n </span>\n </Typography>\n );\n}\n\nconst SuggestedDestinationTile = ({\n suggestedDestination,\n position,\n}: SuggestedDestinationTileProps) => {\n const classes = useStyles();\n const fallbackSource = \"/assets/airplane-fallback.jpg\";\n const { onDestinationTileClick } = React.useContext(ListingsContext);\n const { trackSERPEvent } = useTrackSERPEvent();\n\n const onClick = () => {\n trackSERPEvent('SERP Destination Tile Clicked', {\n destinationTile: suggestedDestination.name,\n tilePosition: position,\n });\n\n onDestinationTileClick(suggestedDestination);\n };\n\n return (\n <Grid className={classes.tile} onClick={onClick} xs={'auto'} data-test-id={`destination-tile-${position}`}>\n <ButtonBase sx={{height: '100%', width: '100%'}}>\n <img src={suggestedDestination.image || fallbackSource} className={classes.tileImage} data-test-id={\"tile-image\"}/>\n <div className={classes.tileFilter}/>\n {shouldDisplayRankingLabel(suggestedDestination.ranking) && <RankingLabel ranking={suggestedDestination.ranking}/>}\n <Typography variant=\"h2\" className={classes.tileText}>{truncateString(suggestedDestination.name, 30)}</Typography>\n </ButtonBase>\n </Grid>\n )\n}\n\nconst TopSuggestedDestinationsTileList = ({\n topSuggestedDestinations,\n}: TopSuggestedDestinationTileListProps) => {\n const classes = useStyles();\n\n return (\n <Grid container direction=\"column\" spacing={2}>\n {isCurrentlyInPublicSearch() ? (\n <>\n <Grid item>\n <Typography variant=\"h2\">Need more inspiration?</Typography>\n </Grid>\n <Grid item>\n <Typography>Check out other destinations Troupe users have explored.</Typography>\n </Grid>\n </>\n ) : (\n <Grid item mt={2}>\n <Typography variant=\"h2\">Suggested destinations</Typography>\n </Grid>\n )}\n <Grid container item className={classes.tileGrid}>\n {topSuggestedDestinations.map((destination, position) => (\n <SuggestedDestinationTile suggestedDestination={destination} position={position} key={destination.id} />\n ))}\n </Grid>\n </Grid>\n )\n}\n\nexport default TopSuggestedDestinationsTileList;\n","// source https://stackoverflow.com/a/53637828/4280615\nexport default function truncateString(str: string, num: number): string {\n if (!str) {\n return str\n }\n if (str.length > num) {\n return str.slice(0, num) + \"…\";\n } else {\n return str;\n }\n}\n","import React, { useContext, useState } from \"react\";\nimport {\n Collapse,\n Grid,\n IconButton,\n Link,\n Typography,\n} from \"@mui/material\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport { makeStyles } from \"@mui/styles\";\nimport { GlobalContext, TripSiteContext } from \"../../Document\";\nimport Button from \"../../buttons/Button\";\nimport { useMutation } from \"@apollo/client\";\nimport { AI_SEARCH_FEEDBACK_CREATE } from \"../../../graphql/queries/aiSearchFeedbacks\";\nimport SearchFeedbackDialog from \"./SearchFeedbackDialog\";\nimport useSegment from \"../../../services/useSegment\";\nimport { aiSearchType, CurrentAppliedFilters } from \"../stays_search/Listings/Filters\";\nimport {useTrackSERPEvent} from \"../../../services/segmentEvents/useSERPEvents\";\n\ntype SearchFeedbackBox = {\n modelRequestId: string,\n filters?: CurrentAppliedFilters,\n aiSearchType?: aiSearchType,\n resultCount?: number,\n};\n\nconst useStyles = makeStyles((theme) => ({\n searchFeedbackBox: {\n width: '100%',\n padding: theme.spacing(1, 2),\n backgroundColor: '#EEEFFF',\n borderRadius: '8px',\n border: '1px solid #BEC9D4',\n },\n button: {\n borderRadius: '5px',\n border: '1px solid #545DFC',\n background: '#FFFFFF',\n color: '#545DFC',\n fontSize: '12px',\n fontWeight: '400',\n lineHeight: '24px',\n width: '100%',\n height: 'auto',\n padding: '6px 8px',\n },\n copy: {\n fontSize: 14,\n fontWeight: 600,\n lineHeight: '24px',\n },\n closeButton: {\n padding: 0,\n lineHeight: '20px',\n '& svg': {\n fontSize: 16,\n color: '#9DAFBE',\n },\n },\n shareLink: {\n cursor: 'pointer',\n textDecoration: 'none',\n },\n}));\n\nconst SearchFeedbackBox = ({\n modelRequestId,\n filters,\n aiSearchType,\n resultCount,\n}: SearchFeedbackBox) => {\n const classes = useStyles();\n const [open, setOpen] = useState(true)\n const [responseId, setResponseId] = useState(null);\n const [dialogOpen, setDialogOpen] = useState(false);\n const { setSnackbar } = useContext(GlobalContext);\n const { tripGid : tripId, currentUserGid : userId } = useContext(TripSiteContext);\n const [createAiSearchFeedback] = useMutation(AI_SEARCH_FEEDBACK_CREATE);\n const { trackSERPEvent } = useTrackSERPEvent();\n\n const copy = responseId ? (\n <>\n Thanks for sharing your feedback! <br />\n Any suggestions? <Link data-test-id=\"shareLink\" className={classes.shareLink} onClick={() => setDialogOpen(true)}>Share here.</Link>\n </>\n ) : \"How’s your search experience with Troupie?\";\n\n const onResponseButtonClick = (response : string) => {\n trackSERPEvent('Troupie Feedback CTA Clicked',\n {\n location: aiSearchType,\n ctaClicked: response,\n destination: filters.locationName,\n dates: filters.customDatesFilterApplied,\n guestCount: filters.minGuests,\n filtersApplied: filters,\n resultCount: resultCount,\n },\n )\n createAiSearchFeedback({\n variables: {\n userId,\n tripId,\n response,\n modelRequestId,\n },\n onCompleted: ({\n aiSearchFeedbackCreate: {\n aiSearchFeedback,\n errors,\n },\n }) => {\n if(aiSearchFeedback.id && errors.length === 0) {\n setResponseId(aiSearchFeedback.id);\n } else {\n setSnackbar('Something went wrong.', 3000, 'error');\n }\n },\n });\n }\n\n const onDialogSubmit = () => {\n setDialogOpen(false);\n setOpen(false);\n setSnackbar('Success! Your feedback was submitted.');\n };\n\n const responseButton = (response : string) => (\n <Grid item flexGrow={1}>\n <Button\n className={classes.button}\n data-test-id=\"responseButton\"\n onClick={() => onResponseButtonClick(response)}\n >\n {response}\n </Button>\n </Grid>\n );\n\n return (\n <Collapse in={open}>\n <Grid container data-test-id='searchfeedback-box' direction=\"column\" justifyContent=\"space-between\"\n className={classes.searchFeedbackBox}\n >\n <Grid item container alignItems=\"flex-start\" justifyContent=\"space-between\" flexWrap=\"nowrap\">\n <Grid item>\n <Typography className={classes.copy}>{copy}</Typography>\n </Grid>\n <Grid item>\n <IconButton className={classes.closeButton} onClick={() => setOpen(false)}>\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n\n {!responseId && (\n <Grid item container justifyContent=\"space-between\" spacing={1} mt={2}>\n {responseButton('Helpful')}\n {responseButton('Somewhat helpful')}\n {responseButton('Not helpful')}\n </Grid>\n )}\n </Grid>\n <SearchFeedbackDialog\n onClose={() => setDialogOpen(false)}\n onSubmit={onDialogSubmit}\n open={dialogOpen}\n responseId={responseId}\n />\n </Collapse>\n );\n};\n\nexport default SearchFeedbackBox;\n","import React, { useContext, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n Typography,\n Dialog,\n DialogContent,\n TextField,\n} from \"@mui/material\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport { makeStyles } from \"@mui/styles\";\nimport { GlobalContext } from \"../../Document\";\nimport Button from \"../../buttons/Button\";\nimport { useMutation } from \"@apollo/client\";\nimport { AI_SEARCH_FEEDBACK_ADD_MESSAGE } from \"../../../graphql/queries/aiSearchFeedbacks\";\nimport useSegment from \"../../../services/useSegment\";\nimport {searchLocation} from \"../../../services/windowLocation\";\n\ntype SearchFeedbackDialog = {\n onClose: () => void,\n onSubmit: () => void,\n open: boolean,\n responseId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n height: 'auto',\n padding: theme.spacing(1),\n fontSize: 14,\n },\n copy: {\n fontSize: 14,\n fontWeight: 600,\n lineHeight: '24px',\n },\n closeButton: {\n padding: 0,\n lineHeight: '20px',\n '& svg': {\n fontSize: 16,\n color: '#9DAFBE',\n },\n },\n}));\n\nconst SearchFeedbackDialog = ({\n onClose,\n onSubmit,\n open,\n responseId,\n}: SearchFeedbackDialog) => {\n const classes = useStyles();\n const [message, setMessage] = useState(null);\n const { setSnackbar } = useContext(GlobalContext);\n const [addMessageAiSearchFeedback] = useMutation(AI_SEARCH_FEEDBACK_ADD_MESSAGE);\n const { trackSegment } = useSegment();\n\n const onDialogSubmit = () => {\n if (!message) return;\n\n addMessageAiSearchFeedback({\n variables: {\n aiSearchFeedbackId: responseId,\n message,\n },\n onCompleted: ({ aiSearchFeedbackAddMessage: { errors }}) => {\n if(errors.length === 0) {\n trackSegment('Troupie Share Feedback Submitted',\n {\n comment: message,\n location: searchLocation(),\n },\n )\n onSubmit();\n } else {\n setSnackbar('Something went wrong.', 3000, 'error');\n }\n },\n });\n };\n\n return (\n <Dialog fullWidth open={open} onClose={onClose}>\n <DialogContent>\n <Grid container direction=\"column\" justifyContent=\"space-between\" spacing={2}>\n <Grid item container alignItems=\"flex-start\" justifyContent=\"space-between\" flexWrap=\"nowrap\">\n <Grid item>\n <Typography className={classes.copy}>\n How can we improve Troupie?\n </Typography>\n </Grid>\n <Grid item>\n <IconButton className={classes.closeButton} onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n <Grid item>\n <TextField\n autoFocus\n type=\"text\"\n fullWidth\n multiline\n rows={5}\n onChange={(event) => setMessage(event.target.value)}\n />\n </Grid>\n <Grid item container justifyContent=\"center\" spacing={2}>\n <Grid item flexGrow={1}>\n <Button variant=\"tertiary\" fullWidth className={classes.button} onClick={onClose}>\n Close\n </Button>\n </Grid>\n <Grid item flexGrow={1}>\n <Button fullWidth data-test-id=\"submit\" className={classes.button} onClick={onDialogSubmit}>\n Submit\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default SearchFeedbackDialog;\n","import React, {useEffect, useReducer, useState } from \"react\";\nimport axios from 'axios';\nimport {\n Box, Grid,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport Filters, { CurrentAppliedFilters, aiSearchType } from \"./Listings/Filters\";\nimport ListingsBox from \"./Listings/ListingsBox\";\nimport ListingsMapView from \"./Listings/ListingsMapView\";\nimport { ExternalListingProps } from \"../../shared/TripObjectTypes\";\nimport {\n useTrackSERPEvent,\n useTrackSearchPerformed,\n} from \"../../../services/segmentEvents/useSERPEvents\";\nimport RenderWithOrWithoutSidebar from \"../../../services/RenderWithOrWithoutSidebar\";\nimport { inventoryBannerSegmentText } from \"./Listings/InventoryBanner\";\nimport RecentlySearched from \"./Listings/RecentlySearched\";\nimport { TripSiteContext } from \"../../Document\"\nimport {\n createFormDataForFiltering,\n} from \"../../../services/createFormDataForFiltering\";\n\nexport const ListingsContext = React.createContext({\n onAlternativeTileClick: (alternative) => {},\n onDestinationTileClick: (destination) => {},\n onPromptTileClick: (prompt, position) => {},\n onPromptExampleClick: (prompt) => {},\n onExternalListingAdd: null,\n onMapPositionChange: (lat: number, lng: number, radius: number) => {},\n toggleView: () => {},\n latitude: null,\n longitude: null,\n openFiltersDrawer: () => {},\n closeFiltersDrawer: () => {},\n isFiltersDrawerOpen: false,\n openSearchCriteriaDrawer: () => {},\n closeSearchCriteriaDrawer: () => {},\n isSearchCriteriaDrawerOpen: false,\n filters: null,\n});\n\nexport type SuggestedDestinationType = {\n id: string,\n name: string,\n image: string,\n ranking?: number,\n longitude: string,\n latitude: string,\n}\n\nexport type DateOptionProps = {\n endDate: string,\n formattedEndDate: string,\n formattedStartDate: string,\n isChosenDate: boolean,\n isPast: boolean,\n startDate: string,\n};\n\nexport type CustomFiltersAppliedType = {\n dates: boolean,\n minGuests: boolean,\n propertyTypes: boolean,\n bedroomCount: boolean,\n bathroomCount: boolean,\n rating: boolean,\n};\n\nexport type RenderCtaButtonType = (_: {stay: ExternalListingProps}) => React.ReactNode;\n\ntype StaysSearchProps = {\n currentAppliedFilters: CurrentAppliedFilters,\n customFiltersApplied: CustomFiltersAppliedType,\n dateOptions: DateOptionProps[],\n topSuggestedDestinations: SuggestedDestinationType[],\n basePath: string,\n apiSearchPath: string,\n renderCtaButton: RenderCtaButtonType,\n SearchBackground: any,\n showShortBackground?: (value: boolean) => void,\n hasSearched?: boolean,\n aiSearch?: boolean,\n aiSearchType?: aiSearchType,\n};\n\ntype ListingsRequestConfig = {\n historyMethod?: HistoryStateMethod | null\n pageUrl?: string,\n retrySameSearch?: boolean,\n skipCache?: boolean,\n};\n\ntype HistoryStateMethod = 'pushState' | 'replaceState';\n\nconst reducer = (state, action) => {\n const setState = (props) => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'openSearchCriteriaDrawer':\n return setState({ isSearchCriteriaDrawerOpen: true });\n case 'closeSearchCriteriaDrawer':\n return setState({ isSearchCriteriaDrawerOpen: false });\n case 'openDrawer':\n return setState({ isFiltersDrawerOpen: true });\n case 'closeDrawer':\n return setState({ isFiltersDrawerOpen: false });\n case 'toggleView': {\n\n const viewMode = state.viewMode === 'list' ? 'map' : 'list';\n return setState({ viewMode: viewMode });\n }\n case 'filterListings': {\n const filtering = !!action.filterData.get('location_name')?.trim() ||\n !!action.filterData.get('prompt')?.trim();\n\n const filters = { prompt: action.filterData.prompt };\n return setState({ filters, filtering, filterData: action.filterData, initialLoad: action.initialLoad });\n }\n case 'modifyFilter': {\n const formData = createFormDataForFiltering(action.value)\n\n return setState({ filterData: formData, filtering: true })\n }\n case 'loadListings': {\n const { arrival, departure, inventory, location_name: locationName, min_guests: minGuests } = action.params;\n const searchCriteria = { arrival, departure, inventory, locationName, minGuests }\n const filters = { ...state.filters, ...searchCriteria };\n return setState({ loading: true, listings: [], filters });\n }\n case 'showListings':\n return setState({\n customFiltersApplied: action.customFiltersApplied,\n filters: action.filters,\n filterData: action.filterData,\n filtering: false,\n listings: action.listings,\n loading: false,\n pagination: action.pagination,\n availability: action.availability,\n });\n case 'error':\n return setState({\n customFiltersApplied: action.customFiltersApplied,\n filters: action.filters,\n filterData: action.filterData,\n filtering: false,\n listings: action.listings,\n loading: false,\n error: true,\n });\n case 'updateListings':\n return setState({ listings: action.listings });\n default:\n throw new Error();\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n buttonText: {\n marginLeft: theme.spacing(1),\n },\n formContent: {\n flex: 1,\n paddingBottom: theme.spacing(9),\n },\n mapWrapper: {\n width: '100%',\n height: '100%',\n position: 'fixed',\n overflowY: 'hidden',\n zIndex: 1001,\n top: '0%',\n left: 0,\n },\n sidebarMapWrapper: {\n width: '100%',\n height: `calc(80vh - ${theme.spacing(8)})`,\n left: 0,\n },\n}));\n\nconst StaysSearch = ({\n currentAppliedFilters,\n customFiltersApplied,\n dateOptions,\n topSuggestedDestinations,\n basePath,\n apiSearchPath,\n renderCtaButton,\n SearchBackground,\n showShortBackground = () => {},\n hasSearched = false,\n aiSearch = false,\n aiSearchType,\n}: StaysSearchProps) => {\n const { tripId } = React.useContext(TripSiteContext);\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const { trackSERPEvent } = useTrackSERPEvent();\n const trackSearchPerformed = useTrackSearchPerformed();\n\n const searchParams = new URLSearchParams(window.location.search);\n const { viewMode = 'list', ...initialFilterData } = Object.fromEntries(searchParams.entries());\n const initialState = {\n filtering: false,\n filterData: new URLSearchParams(initialFilterData),\n filters: currentAppliedFilters,\n customFiltersApplied: customFiltersApplied,\n listings: null,\n loading: false,\n viewMode: viewMode,\n pagination: {},\n initialLoad: true,\n availability: undefined,\n isFiltersDrawerOpen: false,\n isSearchCriteriaDrawerOpen: false,\n prompt: undefined,\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const [locationNameState, setLocationNameState] = useState(currentAppliedFilters.locationName || null);\n const [prompt, setPrompt] = useState(currentAppliedFilters.prompt);\n const [modelOutputs, setModelOutputs] = useState(null);\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const openFiltersDrawer = () => {\n trackSERPEvent('SERP Sort/Filter Initiated', {});\n dispatch({ type: 'openDrawer' })\n };\n const closeFiltersDrawer = () => dispatch({ type: 'closeDrawer' });\n const openSearchCriteriaDrawer = () => {\n trackSERPEvent('Search Criteria Drawer Initiated', {\n location: aiSearchType,\n });\n dispatch({ type: 'openSearchCriteriaDrawer' })\n };\n const closeSearchCriteriaDrawer = () => {\n trackSERPEvent('Search Criteria Drawer Dismissed', {location: aiSearchType});\n dispatch({ type: 'closeSearchCriteriaDrawer' })\n };\n\n useEffect(() => {\n if (locationName() || currentPrompt()) {\n setModelOutputs(null)\n fetchListings({ historyMethod: 'replaceState' });\n } else {\n dispatchEmptyState();\n }\n\n window.addEventListener('popstate', (event) => {\n const {\n pagination = {},\n viewMode = 'list',\n ...filterParams\n } = event.state || {};\n const pageUrl = buildUrl(apiSearchPath, { ...filterParams, page: pagination?.page, viewMode: viewMode });\n\n setLocationNameState(filterParams.location_name)\n setPrompt(filterParams.prompt)\n setModelOutputs(null)\n\n if (filterParams.location_name || filterParams.prompt) {\n fetchListings({ pageUrl, historyMethod: null });\n } else {\n dispatchEmptyState();\n }\n });\n }, []);\n\n useEffect(() => {\n if (!state.filtering) return\n\n if (locationName() || currentPrompt()) {\n setModelOutputs(null)\n fetchListings();\n } else {\n dispatchEmptyState()\n const pathParams = new URLSearchParams({ ...state.filterData });\n const newUrl = buildUrl(basePath, pathParams);\n history.pushState({ ...state.filterData, pagination: {} }, '', newUrl);\n }\n }, [state.filtering]);\n\n useEffect(() => {\n const params = Object.fromEntries(new URLSearchParams(window.location.search));\n\n if (params.viewMode !== state.viewMode && (locationName() || currentPrompt())) {\n const newParams = new URLSearchParams({ ...params, viewMode: state.viewMode });\n const newUrl = buildUrl(basePath, newParams);\n\n history.pushState(Object.assign({}, history.state, { viewMode: state.viewMode }), '', newUrl);\n }\n }, [state.viewMode]);\n\n const onExternalListingAdd = (listingId) => {\n const updatedListings = state.listings.map((listing) =>\n listing.id === listingId ? { ...listing, alreadyOnTrip: true } : listing,\n );\n dispatch({ type: 'updateListings', listings: updatedListings });\n };\n\n const toggleView = () => {\n dispatch({ type: 'toggleView' });\n };\n\n const onMapPositionChange = (lat, lng, radius) => {\n const filterData = Object.assign(\n initialFilterData,\n { latitude: lat, longitude: lng, radius, location_name: 'Custom Map Area' },\n );\n\n analytics.page();\n\n if(state.viewMode === 'map') {\n dispatch({ type: 'filterListings', filterData: new URLSearchParams(filterData) })\n }\n };\n\n const fetchListings = ({\n historyMethod = 'pushState',\n pageUrl = apiSearchPath,\n retrySameSearch = false,\n skipCache = false,\n }: ListingsRequestConfig = {}): void => {\n const queryString = new URL(pageUrl, window.location.origin).searchParams\n const params = Object.assign(\n { page: 1 },\n Object.fromEntries(state.filterData),\n Object.fromEntries(queryString),\n { viewMode: state.viewMode, isMobile: `${isMobile}` },\n tripId ? { trip_id: tripId } : {},\n );\n const newUrl = buildUrl(basePath, params);\n\n if (state.viewMode === 'list') dispatch({ type: 'loadListings', initialLoad: false, params })\n showShortBackground(true);\n axios.get(pageUrl, { params: { ...params, skipCache } })\n .then(response => {\n const {data} = response;\n\n dispatch({\n type: 'showListings',\n listings: data.listings,\n pagination: data.pagy,\n filterData: state.filterData,\n filters: data.currentAppliedFilters,\n customFiltersApplied: data.customFiltersApplied,\n initialLoad: false,\n availability: data.availability,\n })\n\n if (aiSearch) {\n setPrompt(data.currentAppliedFilters.prompt)\n if (params.search_method !== 'troupieAlternativeSuggestions') {\n const { filters, id: requestId } = data.modelOutputs ?? {};\n\n setModelOutputs({ filters, requestId, searchMethod: params.search_method });\n }\n }\n\n trackSearchPerformed({\n arrival: data.currentAppliedFilters.arrival,\n bedroomCount: data.currentAppliedFilters.bedroomCount,\n filtersApplied: data.customFiltersApplied,\n datesBanner: inventoryBannerSegmentText(data.availability * 100),\n departure: data.currentAppliedFilters.departure,\n destinationSearched: data.currentAppliedFilters.locationName,\n destinationLatLong: [data.currentAppliedFilters.latitude, data.currentAppliedFilters.longitude],\n guestsCount: data.currentAppliedFilters.minGuests,\n hotelRoomCount: data.currentAppliedFilters.hotelRoomCount,\n inventorySelected: data.currentAppliedFilters.inventory,\n resultCountPage: data.pagy.to - data.pagy.from + 1,\n searchMethod: retrySameSearch ? 'Try Again CTA' : data.currentAppliedFilters.searchMethod,\n totalResultCount: data.pagy.count,\n prompt: data.currentAppliedFilters.prompt,\n modelOutputs: data.modelOutputs,\n url: newUrl,\n });\n\n if (historyMethod) {\n history[historyMethod]({ ...params, pagination: data.pagy }, '', newUrl);\n }\n\n if (state.viewMode !== data.viewMode) toggleView();\n })\n .catch(error => {\n if (error.response) {\n const { data } = error.response;\n dispatch({\n type: 'error',\n listings: data?.listings ?? [],\n filterData: state.filterData,\n filters: !aiSearch && (data?.currentAppliedFilters || { prompt: params.prompt }),\n customFiltersApplied: data?.customFiltersApplied,\n initialLoad: false,\n })\n\n if (historyMethod) {\n const pathParams = new URLSearchParams({ ...params, page: state.pagination?.page ?? 1 });\n const newUrl = buildUrl(basePath, pathParams);\n history[historyMethod]({ ...params, pagination: state.pagination }, '', newUrl);\n }\n }\n })\n\n window.scrollTo(0, 0);\n };\n\n const buildUrl = (path, params = {}) => {\n return `${path}?${new URLSearchParams(params).toString()}`;\n };\n\n const filterParams = Object.fromEntries(state.filterData);\n const locationName = () => state.filters?.locationName || currentAppliedFilters.locationName || filterParams.location_name?.trim() || locationNameState;\n const currentPrompt = () => filterParams.prompt?.trim() || currentAppliedFilters.prompt || prompt || '';\n\n const dispatchEmptyState = () => {\n dispatch({\n type: 'showListings',\n listings: [],\n pagination: {},\n filterData: state.filterData,\n filters: currentAppliedFilters,\n customFiltersApplied: customFiltersApplied,\n initialLoad: false,\n })\n }\n\n const withResults = (state.listings && (state.listings.length > 0));\n const showFiltersButton = withResults || !!filterParams.location_name;\n\n const onPromptTileClick = (suggestion, position) => {\n const prompt = suggestion.prompt;\n const filterData = {\n ...Object.fromEntries(state.filterData),\n prompt,\n search_method: 'promptTile',\n };\n\n trackSERPEvent('AI Search Prompt Tile Clicked', {\n promptTile: prompt,\n tilePosition: position,\n });\n dispatch({type: 'filterListings', filterData: new URLSearchParams(filterData)});\n }\n\n const onPromptExampleClick = (prompt) => {\n const filterData = {\n ...Object.fromEntries(state.filterData),\n prompt,\n search_method: 'promptExample',\n };\n\n dispatch({type: 'filterListings', filterData: new URLSearchParams(filterData)});\n };\n\n const onDestinationTileClick = (destination) => {\n const filterData = {\n ...Object.fromEntries(state.filterData),\n latitude: destination.latitude,\n longitude: destination.longitude,\n location_name: destination.name,\n search_method: 'destinationTile',\n };\n\n dispatch({type: 'filterListings', filterData: new URLSearchParams(filterData)});\n };\n\n const onAlternativeTileClick = (alternative) => {\n const filterData = {\n ...state.filters,\n latitude: alternative.latitude,\n longitude: alternative.longitude,\n location_name: alternative.name,\n search_method: 'alternativeTile',\n };\n\n dispatch({type: 'modifyFilter', value: filterData});\n };\n\n const listingsContextValue = {\n onAlternativeTileClick,\n onDestinationTileClick,\n onPromptExampleClick,\n onPromptTileClick,\n onExternalListingAdd,\n onMapPositionChange,\n toggleView,\n latitude: state.filters?.latitude,\n longitude: state.filters?.longitude,\n openFiltersDrawer,\n closeFiltersDrawer,\n isFiltersDrawerOpen: state.isFiltersDrawerOpen,\n openSearchCriteriaDrawer,\n closeSearchCriteriaDrawer,\n isSearchCriteriaDrawerOpen: state.isSearchCriteriaDrawerOpen,\n filters: state.filters,\n };\n\n return (\n <ListingsContext.Provider value={listingsContextValue}>\n {state.viewMode === 'map' && (\n <Box className={classes.mapWrapper} data-test-id=\"mapView\">\n <ListingsMapView\n radius={Object.fromEntries(state.filterData).radius}\n listings={state.listings}\n aiSearch={aiSearch}\n aiSearchType={aiSearchType}\n />\n </Box>\n )}\n <Box className={classes.formContent} data-test-id=\"listView\">\n <SearchBackground logoPath={basePath} hasPrompt={!!currentPrompt()}>\n <Filters\n currentAppliedFilters={state.filters}\n customFiltersApplied={state.customFiltersApplied}\n filterFormPath={apiSearchPath}\n dateOptions={dateOptions}\n hasSearched={hasSearched}\n onFilter={(filterData) => dispatch({ type: 'filterListings', filterData })}\n searchPath={basePath}\n showFiltersButton={showFiltersButton}\n isLoading={state.loading}\n aiSearch={aiSearch}\n prompt={currentPrompt()}\n aiSearchType={aiSearchType}\n isDialogOpen={isDialogOpen}\n onDialogClose={() => setIsDialogOpen(false)}\n />\n </SearchBackground>\n <RecentlySearched />\n <RenderWithOrWithoutSidebar\n showWithSidebar={withResults}\n radius={Object.fromEntries(state.filterData).radius}\n hasSearched={hasSearched}\n modelOutputs={modelOutputs}\n currentAppliedFilters={state.filters}\n component={\n <Grid mt={0}>\n <ListingsBox\n fetchListings={fetchListings}\n initialLoad={state.initialLoad}\n isLoading={state.loading}\n listings={state.listings}\n locationName={locationName()}\n pagination={state.pagination}\n error={state.error}\n topSuggestedDestinations={topSuggestedDestinations}\n renderCtaButton={renderCtaButton}\n availability={state.availability}\n aiSearch={aiSearch}\n aiSearchType={aiSearchType}\n modelOutputs={modelOutputs}\n currentAppliedFilters={state.filters}\n triggerFilterDialog={(value) => setIsDialogOpen(value)}\n onFilter={(value) => dispatch({ type: 'modifyFilter', value })}\n prompt={currentPrompt()}\n />\n </Grid>\n }\n listings={state.listings}\n onClick={() => dispatch({ type: 'toggleView' })}\n locationName={locationName()}\n aiSearchType={aiSearchType}\n />\n </Box>\n </ListingsContext.Provider>\n );\n};\n\nexport default StaysSearch;\n","import React from \"react\";\nimport { makeStyles } from '@mui/styles';\nimport {\n Box,\n ButtonBase,\n Grid,\n Typography,\n} from '@mui/material';\nimport ScrollContainer from 'react-indiana-drag-scroll'\nimport CustomChip from '../../buttons/CustomChip';\nimport destinationsByTripType from './destinationsByTripType';\nimport { ListingsContext } from \"./StaysSearch\";\nimport { useTrackSERPEvent } from \"../../../services/segmentEvents/useSERPEvents\";\n\nconst useStyles = makeStyles(theme => ({\n wrapper: {\n display: 'inline-block',\n },\n scroll: {\n overflowX: 'auto',\n whiteSpace: 'nowrap',\n },\n destination: {\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: 204,\n height: 192,\n position: 'relative',\n borderRadius: '5px',\n marginRight: '14px',\n padding: '5px',\n color: '#FFFFFF',\n fontSize: 18,\n fontWeight: 600,\n whiteSpace: 'break-spaces',\n },\n chipsContainer: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n },\n destinationsContainer: {\n backgroundColor: '#EFF2F4',\n borderRadius: '10px',\n padding: theme.spacing(2),\n },\n}))\n\ntype DestinationCardProps = {\n destination: {\n image: string,\n name: string,\n latitude: number,\n longitude: number,\n },\n index: number,\n tripType: string,\n};\n\nconst DestinationCard: React.FC<DestinationCardProps> = ({destination, index, tripType}) => {\n const classes = useStyles({});\n const { trackSERPEvent } = useTrackSERPEvent();\n const { onDestinationTileClick } = React.useContext(ListingsContext);\n\n const onClick = () => {\n trackSERPEvent('Trip Type Destination Tile clicked', {\n destination: destination.name,\n position: index,\n tripType,\n });\n\n onDestinationTileClick(destination);\n };\n\n return (\n <ButtonBase\n disableRipple\n className={classes.destination}\n sx={{ background: `url(\"${destination.image}\") no-repeat center/cover` }}\n onClick={onClick}\n >\n {destination.name}\n </ButtonBase>\n );\n};\n\nconst TripTypeDestinations = () => {\n const classes = useStyles();\n const preFilteredTripType = new URLSearchParams(window.location.search).get('trip_type');\n const preFilteredTripTypeIndex = destinationsByTripType.findIndex(obj => obj.tripType.toLowerCase() === preFilteredTripType);\n\n const [selected, setSelected] = React.useState(preFilteredTripTypeIndex > -1 ? preFilteredTripTypeIndex : 0);\n const selectedTripType = destinationsByTripType[selected];\n const { trackSERPEvent } = useTrackSERPEvent();\n const scrollRef = React.useRef(null);\n\n const onChipClick = (index) => {\n trackSERPEvent('Trip Type Filtered', { tripType: destinationsByTripType[index].tripType });\n setSelected(index);\n };\n\n React.useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.container.current.scrollLeft = 0;\n }\n }, [selected])\n\n const renderChips = () => (\n <Grid container spacing={2} className={classes.chipsContainer}>\n {destinationsByTripType.map(({ tripType }, index) => (\n <Grid item key={tripType}>\n <CustomChip\n active={selected === index}\n onClick={() => onChipClick(index)}\n trackEventDisabled\n >\n {tripType}\n </CustomChip>\n </Grid>\n ))}\n </Grid>\n );\n\n const renderDestinations = () => (\n <Box className={classes.destinationsContainer}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography variant=\"h3\">{selectedTripType.tripType}</Typography>\n </Grid>\n <Grid item>\n <Typography>{selectedTripType.description}</Typography>\n </Grid>\n <Grid item sx={{ width: '100%' }}>\n <ScrollContainer className={classes.scroll} ref={scrollRef}>\n <Box className={classes.wrapper}>\n {selectedTripType.destinations.map((destination, index) =>\n <DestinationCard\n destination={destination}\n index={index}\n tripType={selectedTripType.tripType}\n key={destination.name}\n />\n )}\n </Box>\n </ScrollContainer>\n </Grid>\n </Grid>\n </Box>\n );\n\n return (\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography variant=\"h2\">Top destinations for Group Trips</Typography>\n </Grid>\n <Grid item sx={{ width: '100%' }}>\n {renderChips()}\n </Grid>\n <Grid item sx={{ width: '100%' }}>\n {renderDestinations()}\n </Grid>\n </Grid>\n );\n};\n\nexport default TripTypeDestinations;\n","export const destinationsByTripType = [\n {\n tripType: 'Friends',\n description: 'Discover the optimal adventure spot for your groups’ excursion.',\n destinations: [\n { name: 'Las Vegas, NV', image: '/assets/trip-type-destinations/Friends/Vegas.png', latitude: 36.171563, longitude: -115.1391009 },\n { name: 'Nashville, TN', image: '/assets/trip-type-destinations/Friends/Nashville.png', latitude: 36.1626638, longitude: -86.7816016 },\n { name: 'Orlando, FL', image: '/assets/trip-type-destinations/Friends/Orlando.png', latitude: 28.5383832, longitude: -81.3789269 },\n { name: 'Athens, Greece', image: '/assets/trip-type-destinations/Friends/Athens.png', latitude: 37.9838096, longitude: 23.7275388 },\n { name: 'London, UK', image: '/assets/trip-type-destinations/Friends/London.png', latitude: 51.5072178, longitude: -0.1275862 },\n { name: 'Boston, MA', image: '/assets/trip-type-destinations/Friends/Boston.png', latitude: 42.3600825, longitude: -71.0588801 },\n { name: 'Charleston, SC', image: '/assets/trip-type-destinations/Friends/Charleston.png', latitude: 32.7764749, longitude: -79.93105120000001 },\n ],\n },\n {\n tripType: 'Birthday',\n description: 'Find the ideal destination to celebrate your birthday getaway in style.',\n destinations: [\n { name: 'Montego Bay, Jamaica', image: '/assets/trip-type-destinations/Birthday/MontegoBay.png', latitude: 18.4762228, longitude: -77.8938895 },\n { name: 'Punta Cana, Dominican Republic', image: '/assets/trip-type-destinations/Birthday/PuntaCana.png', latitude: 18.5600761, longitude: -68.372535 },\n { name: 'New Orleans, LA', image: '/assets/trip-type-destinations/Birthday/NewOrleans.png', latitude: 29.95106579999999, longitude: -90.0715323 },\n { name: 'Cancún, Mexico', image: '/assets/trip-type-destinations/Birthday/Cancun.png', latitude: 21.161908, longitude: -86.8515279 },\n { name: 'Nassau, The Bahamas', image: '/assets/trip-type-destinations/Birthday/Nassau.png', latitude: 25.0443312, longitude: -77.3503609 },\n { name: 'Tokyo, Japan', image: '/assets/trip-type-destinations/Birthday/Tokyo.png', latitude: 35.6761919, longitude: 139.6503106 },\n { name: 'Cabo San Lucas, Mexico', image: '/assets/trip-type-destinations/Birthday/CaboSanLucas.png', latitude: 22.8905327, longitude: -109.9167371 },\n ],\n },\n {\n tripType: 'Bachelorette',\n description: 'Find the perfect destination for an unforgettable bachelorette trip.',\n destinations: [\n { name: 'Miami, FL', image: '/assets/trip-type-destinations/Bachelor/Miami.png', latitude: 25.7616798, longitude: -80.1917902 },\n { name: 'Las Vegas, NV', image: '/assets/trip-type-destinations/Bachelorette/Vegas.png', latitude: 36.171563, longitude: -115.1391009 },\n { name: 'Tulum, Mexico', image: '/assets/trip-type-destinations/Bachelorette/Tulum.png', latitude: 20.2114185, longitude: -87.46535019999999 },\n { name: 'San Diego, CA', image: '/assets/trip-type-destinations/Bachelorette/SanDiego.png', latitude: 32.715738, longitude: -117.1610838 },\n { name: 'Charleston, SC', image: '/assets/trip-type-destinations/Bachelorette/Charleston.png', latitude: 32.7764749, longitude: -79.93105120000001 },\n { name: 'Austin, TX', image: '/assets/trip-type-destinations/Bachelorette/Austin.png', latitude: 30.267153, longitude: -97.7430608 },\n { name: 'Scottsdale, AZ', image: '/assets/trip-type-destinations/Bachelorette/Scottsdale.png', latitude: 33.4948764, longitude: -111.9216734 },\n ],\n },\n {\n tripType: 'Bachelor',\n description: 'Discover the prime location for a one-in-a-lifetime bachelor celebration.',\n destinations: [\n { name: 'Scottsdale, AZ', image: '/assets/trip-type-destinations/Bachelor/Scottsdale.png', latitude: 33.4948764, longitude: -111.9216734 },\n { name: 'Miami, FL', image: '/assets/trip-type-destinations/Bachelor/Miami.png', latitude: 25.7616798, longitude: -80.1917902 },\n { name: 'New Orleans, LA', image: '/assets/trip-type-destinations/Bachelor/NewOrleans.png', latitude: 29.95106579999999, longitude: -90.0715323 },\n { name: 'Denver, CO', image: '/assets/trip-type-destinations/Bachelor/Denver.png', latitude: 39.7392358, longitude: -104.990251 },\n { name: 'Nashville, TN', image: '/assets/trip-type-destinations/Bachelor/Nashville.png', latitude: 36.1626638, longitude: -86.7816016 },\n { name: 'Philadelphia, PA', image: '/assets/trip-type-destinations/Bachelor/Philadelphia.png', latitude: 39.9525839, longitude: -75.1652215 },\n { name: 'Las Vegas, NV', image: '/assets/trip-type-destinations/Bachelor/Vegas.png', latitude: 36.171563, longitude: -115.1391009 },\n ],\n },\n {\n tripType: 'Family',\n description: \"Seek out the perfect destination for your family's memorable retreat.\",\n destinations: [\n { name: 'Orlando, FL', image: '/assets/trip-type-destinations/Family/Orlando.png', latitude: 28.5383832, longitude: -81.3789269 },\n { name: 'Paris, France', image: '/assets/trip-type-destinations/Family/Paris.png', latitude: 48.856614, longitude: 2.3522219 },\n { name: 'Rome, Italy', image: '/assets/trip-type-destinations/Family/Rome.png', latitude: 41.9027835, longitude: 12.4963655 },\n { name: 'London, UK', image: '/assets/trip-type-destinations/Family/London.png', latitude: 51.5072178, longitude: -0.1275862 },\n { name: 'San Juan, Puerto Rico', image: '/assets/trip-type-destinations/Family/SanJuan.png', latitude: 18.4670588, longitude: -66.1184593 },\n { name: 'Myrtle Beach, SC', image: '/assets/trip-type-destinations/Family/MyrtleBeach.png', latitude: 33.6890603, longitude: -78.8866943 },\n { name: 'Destin, FL', image: '/assets/trip-type-destinations/Family/Destin.png', latitude: 30.3935337, longitude: -86.4957833 },\n ],\n },\n];\n\nexport default destinationsByTripType;\n","import React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors, { ErrorsProps } from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport * as routes from '../../../routes';\n\nconst {\n tripPath,\n tripTravelersPath,\n} = routes;\n\ntype NewTripPageProps = {\n errors: ErrorsProps['errors'],\n tripId: string,\n}\n\nconst NewTripPage = ({ errors, tripId }: NewTripPageProps) => {\n return (\n <ModalForm\n closePath={tripPath(tripId)}\n formActionPath={tripTravelersPath(tripId)}\n title=\"Grow your Troupe\"\n saveButtonLabel=\"Invite traveler\"\n >\n <Grid container spacing={2} direction=\"column\">\n <Grid item>\n <Typography>Invite additional travelers by email</Typography>\n </Grid>\n <Grid item>\n <Errors errors={errors} />\n </Grid>\n <Grid item>\n <TextField\n id=\"traveler_email_address\"\n name=\"traveler[email_address]\"\n label=\"Email\"\n variant=\"outlined\"\n fullWidth\n />\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewTripPage);\n","import React, { useContext, useState, useReducer } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport Button from '../../buttons/Button';\nimport Dialog from \"../../shared/Dialog\";\nimport { GlobalContext, TripSiteContext, SegmentContext } from \"../../Document\";\nimport PendingInvite, { PendingInviteData } from \"./IndexPage/PendingInvite\";\nimport AcceptedInvite, { AcceptedInviteData } from \"./IndexPage/AcceptedInvite\";\nimport DeclinedInvite, { DeclinedInviteData } from \"./IndexPage/DeclinedInvite\";\nimport NoSuggestionsYet from \"../../shared/NoSuggestionsYet\";\nimport EmailInviteModal from \"../../shared/EmailInviteModal\";\nimport { track as trackAnalyticsEvent } from \"../../../services/analytics\";\n\ntype IndexPageProps = {\n acceptedInvites: AcceptedInviteData[],\n declinedInvites: DeclinedInviteData[],\n pendingInvites: PendingInviteData[],\n tripId: string,\n};\n\ntype State = {\n resendModalOpened: boolean,\n isResendAllButtonDisabled: boolean,\n};\n\ntype Action =\n | { type: 'INITIAL' }\n | {\n type: 'OPEN_MODAL',\n }\n | {\n type: 'RESEND_ALL_COMPLETED',\n }\n | { type: 'CLOSE_MODAL' }\n;\n\n\nconst useStyles = makeStyles(theme => ({\n subtitle: {\n paddingTop: theme.spacing(1),\n },\n inviteSubText: {\n paddingBottom: theme.spacing(1),\n },\n inviteStatusSection: {\n paddingTop: theme.spacing(3),\n },\n invitesWrapper: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n outerContainer: {\n flexWrap: 'nowrap',\n },\n titleWrapper: {\n textAlign: 'center',\n flexDirection: 'row',\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n minWidth: 480,\n },\n },\n}));\n\nconst initialState: State = {\n resendModalOpened: false,\n isResendAllButtonDisabled: false,\n};\n\nconst reducer = (state: State, action: Action) => {\n switch (action.type) {\n case 'INITIAL':\n return initialState;\n case 'OPEN_MODAL':\n return { ...state, resendModalOpened: true };\n case 'RESEND_ALL_COMPLETED':\n return { resendModalOpened: false, isResendAllButtonDisabled: true };\n case 'CLOSE_MODAL':\n return { ...state, resendModalOpened: false };\n default:\n throw new Error(`Unknown action type: ${JSON.stringify(action)}`);\n };\n};\n\nconst IndexPage = ({\n acceptedInvites,\n declinedInvites,\n pendingInvites,\n tripId,\n}: IndexPageProps) => {\n const classes = useStyles();\n const { tripGid } = useContext(TripSiteContext)\n const { currentUserId, isPlanner } = useContext(SegmentContext);\n const [pendingInvitesList, setPendingInvitesList] = useState(pendingInvites);\n const [state, dispatch] = useReducer(reducer, initialState);\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const segmentProps = {\n userId: currentUserId,\n tripId: tripId,\n planner: isPlanner,\n isMobileApp: isMobileApp,\n };\n\n const pendingEmailInvites = pendingInvitesList.map(pendingInvite => pendingInvite.email)\n\n const openResendInvitesModal = () => {\n dispatch({ type: 'OPEN_MODAL' });\n trackAnalyticsEvent('Resend All Initiated', segmentProps);\n };\n\n const resendInviteCompleted = () => {\n dispatch({ type: 'RESEND_ALL_COMPLETED' });\n };\n\n return(\n <>\n <Grid\n className={classes.outerContainer}\n container\n data-test-id='manage-invites-tab'\n direction=\"column\"\n spacing={2}\n >\n <Grid item>\n <Typography>\n Here’s who has been invited via email.\n </Typography>\n </Grid>\n <Grid\n container\n item\n alignItems='center'\n justifyContent='space-between'\n >\n <Grid item>\n <Typography variant='h3'>\n Pending ({pendingInvitesList.length})\n </Typography>\n </Grid>\n <Grid item>\n <Button\n data-test-id='resend-all-button'\n onClick={openResendInvitesModal}\n disabled={state.isResendAllButtonDisabled || pendingEmailInvites.length == 0}\n >\n Resend all\n </Button>\n </Grid>\n {pendingInvitesList.length === 0 ? (\n <Grid container item>\n <NoSuggestionsYet\n subheading=\"There are no pending email invites.\"\n illustration='paper_airplane'\n />\n </Grid>\n ) : (\n <Grid className={classes.invitesWrapper} container direction=\"column\" spacing={2}>\n {pendingInvitesList.map((invite) => (\n <Grid item key={invite.id}>\n <PendingInvite\n invite={invite}\n onInviteDelete={setPendingInvitesList}\n tripId={tripId}\n disableResendButton={state.isResendAllButtonDisabled}\n />\n </Grid>\n ))}\n </Grid>\n )}\n </Grid>\n <Grid className={classes.inviteStatusSection} item>\n <Typography variant='h3'>\n Accepted ({acceptedInvites.length})\n </Typography>\n {acceptedInvites.length === 0 ? (\n <NoSuggestionsYet\n subheading=\"There are no accepted email invites.\"\n illustration='mailbox_accepted'\n />\n ) : (\n <Grid className={classes.invitesWrapper} container direction=\"column\" spacing={2}>\n {acceptedInvites.map((invite) => (\n <Grid item key={invite.id}>\n <AcceptedInvite invite={invite} />\n </Grid>\n ))}\n </Grid>\n )}\n </Grid>\n <Grid className={classes.inviteStatusSection} item>\n <Typography variant='h3'>\n Declined ({declinedInvites.length})\n </Typography>\n {declinedInvites.length === 0 ? (\n <NoSuggestionsYet\n subheading=\"There are no declined email invites.\"\n illustration='mailbox_declined'\n />\n ) : (\n <Grid className={classes.invitesWrapper} container direction=\"column\" spacing={2}>\n {declinedInvites.map((invite) => (\n <Grid item key={invite.id}>\n <DeclinedInvite invite={invite} />\n </Grid>\n ))}\n </Grid>\n )}\n </Grid>\n </Grid>\n {state.resendModalOpened &&\n <EmailInviteModal\n title='Resend invites'\n tripId={tripId}\n resendEmail={pendingEmailInvites}\n onResend={resendInviteCompleted}\n onModalClose={() => dispatch({ type: 'CLOSE_MODAL' })}\n />\n }\n </>\n );\n};\n\nexport default IndexPage;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar from \"../../../avatars/Avatar\";\n\ntype InviteeData = {\n avatarUrl?: string,\n name: string,\n};\n\nexport type AcceptedInviteData = {\n respondedAt: string,\n createdAt: string,\n email: string,\n id: string,\n invitee: InviteeData,\n inviterName: string,\n};\n\ntype AcceptedInviteProps = {\n invite: AcceptedInviteData,\n};\n\nconst useStyles = makeStyles((theme) => ({\n respondedAtText: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n },\n info: {\n paddingTop: `0px !important`,\n },\n}));\n\nconst AcceptedInvite = ({ invite }: AcceptedInviteProps) => {\n const classes = useStyles();\n const { avatarUrl, name } = invite.invitee;\n\n return (\n <Grid container data-test-id=\"acceptedInvite\" spacing={1}>\n <Grid item>\n <Avatar src={avatarUrl} />\n </Grid>\n <Grid item className={classes.info}>\n <Typography>\n {name}\n </Typography>\n <Typography className={classes.respondedAtText}>\n Joined trip {invite.respondedAt}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default AcceptedInvite;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar from \"../../../avatars/Avatar\";\n\nexport type DeclinedInviteData = {\n email: string,\n id: string,\n inviterName: string,\n respondedAt: string,\n};\n\ntype DeclinedInviteProps = {\n invite: DeclinedInviteData,\n};\n\nconst useStyles = makeStyles((theme) => ({\n respondedAtText: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n },\n info: {\n paddingTop: `0px !important`,\n },\n}));\n\nconst DeclinedInvite = ({ invite }: DeclinedInviteProps) => {\n const classes = useStyles();\n\n return (\n <Grid container data-test-id=\"declinedInvite\" spacing={1}>\n <Grid item>\n <Avatar />\n </Grid>\n <Grid item className={classes.info}>\n <Typography>\n {invite.email}\n </Typography>\n <Typography className={classes.respondedAtText}>\n Declined {invite.respondedAt}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default DeclinedInvite;\n","import React, { useContext, useReducer } from \"react\";\nimport axios from 'axios';\nimport {\n Grid,\n Divider,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport Avatar from \"../../../avatars/Avatar\";\nimport Button from '../../../buttons/Button';\nimport EmailInviteModal from \"../../../shared/EmailInviteModal\";\nimport { FormsContext, GlobalContext, SegmentContext } from '../../../Document';\nimport * as routes from '../../../../routes';\nimport performAsyncRequestWithCancelToken from \"../../../../services/performAsyncRequestWithCancelToken\";\nimport { track as trackAnalyticsEvent } from \"../../../../services/analytics\";\n\nconst { resendApiTripInvitePath, apiTripInvitePath } = routes;\n\nexport type PendingInviteData = {\n createdAt: string,\n email: string,\n id: string,\n inviterName: string,\n lastResendAttemptedAt?: string,\n};\n\ntype PendingInviteProps = {\n invite: PendingInviteData,\n tripId: string,\n onInviteDelete: (invites: PendingInviteData[]) => void,\n disableResendButton?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n actions: {\n marginTop: theme.spacing(1.5),\n },\n actionItem: {\n marginRight: theme.spacing(1.5),\n },\n createdAtText: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n },\n divider: {\n marginTop: theme.spacing(2.5),\n },\n error: {\n color: '#e44444',\n fontSize: 14,\n marginTop: theme.spacing(1),\n },\n info: {\n paddingTop: `0px !important`,\n },\n titleWrapper: {\n textAlign: 'center',\n flexDirection: 'row',\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n minWidth: 480,\n },\n },\n}));\n\nconst initialState = {\n resendLabel: 'Resend',\n deleteLabel: 'Delete invite',\n resendEnabled: true,\n loading: false,\n actionError: null,\n resendModalOpened: false,\n};\n\nconst reducer = (state, action) => {\n const setState = (props) => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'initial':\n return initialState;\n case 'deleting':\n return setState({ actionError: null, deleteLabel: 'Deleting...', loading: true })\n case 'sending':\n return setState({ actionError: null, resendLabel: 'Sending...', resendEnabled: false, loading: true });\n case 'sent':\n return setState({ resendLabel: 'Sent!', resendEnabled: false, loading: false });\n case 'setError':\n return setState({...initialState, actionError: action.message });\n case 'resendModalOpen':\n return setState({...initialState, resendModalOpened: true});\n case 'resendModalSent':\n return setState({resendModalOpened: false, resendLabel: 'Sent!', resendEnabled: false, loading: false});\n case 'resendModalClose':\n return setState({...initialState, resendModalOpened: false});\n default:\n throw new Error();\n }\n};\n\nconst PendingInvite = ({\n invite,\n onInviteDelete,\n tripId,\n disableResendButton = false,\n}: PendingInviteProps) => {\n const classes = useStyles();\n const { currentUserId, isPlanner } = useContext(SegmentContext);\n const { csrfToken } = useContext(FormsContext);\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const [actionsState, dispatch] = useReducer(reducer, initialState);\n const timeoutError = 'Something went wrong, please try again.';\n const segmentProps = {\n userId: currentUserId,\n tripId: tripId,\n planner: isPlanner,\n isMobileApp: isMobileApp,\n };\n const [lastResendAttemptedAt, setLastResendAttemptedAt] = React.useState(invite.lastResendAttemptedAt);\n\n const deleteInvite = (invite) => {\n dispatch({ type: 'deleting' })\n axios.request({\n method: 'DELETE',\n url: apiTripInvitePath(tripId, invite.id),\n data: {\n authenticity_token: csrfToken,\n },\n }).then((response) => {\n trackAnalyticsEvent('Invite Deleted', {\n category: 'Invites',\n emailAddress: invite.email,\n tripId: tripId,\n });\n dispatch({ type: 'deleting' });\n onInviteDelete(response.data.pendingInvites);\n })\n .catch((error) => {\n dispatch({ type: 'setError', message: error.response?.data?.errors ? error.response.data.errors : timeoutError });\n });\n };\n\n const onResendInviteButtonCliked = () => {\n openResendInviteModal()\n };\n\n const openResendInviteModal = () => {\n trackAnalyticsEvent('Invite Resend Initiated', segmentProps);\n dispatch({type: 'resendModalOpen'});\n };\n\n const resendInviteSuccess = (hasCustomMessage) => {\n trackAnalyticsEvent('Invite Resent', Object.assign(segmentProps, {message: hasCustomMessage}));\n setLastResendAttemptedAt(new Date()\n .toLocaleDateString(\"en-US\", { month: 'long', day: 'numeric', year: 'numeric' }),\n );\n dispatch({type: 'resendModalSent'});\n };\n\n const resendInvite = (invite) => {\n dispatch({ type: 'sending' });\n\n performAsyncRequestWithCancelToken({\n method: 'POST',\n url: resendApiTripInvitePath(tripId, invite.id),\n data: {\n authenticity_token: csrfToken,\n invite_id: invite.id,\n },\n onSuccess: (response) => {\n trackAnalyticsEvent('Invite Resent', {\n category: 'Invites',\n emailAddress: invite.email,\n tripId: tripId,\n });\n dispatch({ type: 'sent' })\n },\n onError: (error) => dispatch({ type: 'setError', message: error.response?.data?.errors ? error.response.data.errors : timeoutError }),\n });\n };\n\n const renderPendingInviteText = () => {\n return(\n lastResendAttemptedAt ? (\n `Last invited ${lastResendAttemptedAt}`\n ) : (\n `Invited ${invite.createdAt}`\n )\n )};\n\n return (\n <>\n <Grid container data-test-id=\"pendingInvite\" spacing={1}>\n <Grid item>\n <Avatar />\n </Grid>\n <Grid item className={classes.info}>\n <Grid item>\n <Typography>\n {invite.email}\n </Typography>\n <Typography className={classes.createdAtText}>\n {renderPendingInviteText()}\n </Typography>\n </Grid>\n <Grid item container className={classes.actions}>\n <Grid item className={classes.actionItem}>\n <Button\n disabled={actionsState.loading}\n onClick={() => deleteInvite(invite)}\n variant='tertiary'\n >\n {actionsState.deleteLabel}\n </Button>\n </Grid>\n <Grid item>\n <Button\n data-test-id='resend-invite-button'\n disabled={!actionsState.resendEnabled || actionsState.loading || disableResendButton}\n onClick={() => onResendInviteButtonCliked()}\n variant='secondary'\n >\n {actionsState.resendLabel}\n </Button>\n </Grid>\n </Grid>\n {actionsState.actionError && (\n <Grid item className={classes.error}>\n {actionsState.actionError}\n </Grid>\n )}\n </Grid>\n </Grid>\n <Divider className={classes.divider}/>\n {actionsState.resendModalOpened &&\n <EmailInviteModal\n title='Resend invite'\n tripId={tripId}\n resendEmail={[invite.email]}\n onResend={resendInviteSuccess}\n onModalClose={() => dispatch({ type: 'resendModalClose' })}\n />\n }\n </>\n );\n};\n\nexport default PendingInvite;\n","import React, { useContext } from 'react';\nimport { hocRailsAction, FormsContext } from '../../Document';\nimport { Link, Grid, Typography } from '@mui/material';\nimport NavigationBar from \"../../trip-page/NavigationBar\";\nimport SiteHeader from \"../../shared/SiteHeader\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport { useStyles as homePageStyles } from \"../home/HomePage\";\nimport { PublicTripType } from \"../../shared/TripTypes\";\n\ntype InviteRequiredPageProps = {\n currentUserAvatarUrl: string | undefined,\n isUserLoggedIn: boolean,\n navItems: [],\n trip: PublicTripType,\n};\n\nconst InviteRequiredPage = ({\n currentUserAvatarUrl,\n isUserLoggedIn,\n navItems,\n trip,\n}: InviteRequiredPageProps) => {\n const classes = homePageStyles();\n const { triggerLogIn } = useContext(FormsContext);\n\n return (\n <div className={classes.root}>\n <SiteHeader\n currentUserAvatarUrl={currentUserAvatarUrl}\n isUserLoggedIn={isUserLoggedIn}\n showCoverPhoto\n trip={trip}\n />\n <NavigationBar disabled={true} items={navItems} />\n <Grid container direction=\"row\" alignItems=\"center\" className={classes.messageBox}>\n <Grid item>\n <Typography variant=\"h1\">\n Invite required 🔑\n </Typography>\n <Typography>\n Only invited travelers can access this tripsite. { !isUserLoggedIn && (\n <>\n Already invited?\n <Link href=\"#\" onClick={ triggerLogIn }> Log in </Link>\n </>\n )}\n </Typography>\n <Typography>\n Looking to join the trip? Have a current traveler invite you via email, or reach out to the planner directly to be granted access.\n </Typography>\n <Typography>\n Have additional questions? Email\n <Link href=\"mailto:help@troupe.com\" underline=\"none\"> help@troupe.com </Link>\n and we’ll lend a hand.\n </Typography>\n </Grid>\n </Grid>\n <SiteFooter />\n </div>\n );\n};\n\nexport default hocRailsAction(InviteRequiredPage);\n","import React, { useCallback } from 'react';\nimport clsx from \"clsx\";\nimport {\n Chip,\n Container,\n Grid,\n Typography,\n ButtonBase,\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport makeStyles from '@mui/styles/makeStyles';\nimport IconButton from \"../../buttons/IconButton\";\nimport { hocRailsAction } from '../../Document';\nimport TripActions from \"./ListTripsPage/TripActions\";\nimport CardButton from \"../../buttons/CardButton\";\nimport EmptySectionContentWithCTA from '../../shared/EmptySectionContentWithCTA';\nimport DismissibleAlert from \"../../shared/DismissibleAlert\";\nimport SiteHeader from \"../../shared/SiteHeader\";\nimport SiteFooter from \"../../shared/SiteFooter\";\nimport { newTripPath, tripPath } from '../../../routes';\nimport { trackLink as trackAnalyticsEvent } from '../../../services/analytics';\nimport { GlobalTrip } from '../../shared/TripTypes';\nimport TravelersAvatars from './TravelersAvatars';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n },\n trip: {\n position: 'relative',\n },\n plannerChip: {\n color: '#ffffff',\n fontWeight: 600,\n fontSize: 14,\n height: theme.spacing(3),\n borderRadius: 3,\n backgroundColor: '#4dadb1',\n '& .MuiChip-label': {\n padding: '6px 9px 6px 15px',\n },\n },\n travelerChip: {\n backgroundColor: '#509cff',\n },\n tripBox: {\n borderRadius: theme.spacing(1),\n height: theme.spacing(40),\n width: '100%',\n },\n tripBoxInnerGrid: {\n height: '100%',\n padding: theme.spacing(2),\n },\n tripTitleSection: {\n display: \"flex\",\n position: \"absolute\",\n bottom: theme.spacing(2),\n },\n tripTitle: {\n color: 'white',\n fontSize: 24,\n maxWidth: '80%',\n lineHeight: '1.4',\n },\n sectionHeaderGridItem: {\n height: theme.spacing(3),\n },\n sectionHeaderItemButton: {\n marginTop: `-${theme.spacing(1)}`,\n },\n sectionContainer: {\n flex: 1,\n padding: theme.spacing(2),\n },\n pageContainer: {\n maxWidth: theme.spacing(96),\n },\n myTripsHeader: {\n fontSize: theme.spacing(3),\n },\n topContainer: {\n paddingTop: theme.spacing(4),\n },\n}));\n\ntype TravelerChipProps = {\n isPlanner: boolean,\n className?: string,\n }\n\nexport const TravelerChip = ({ isPlanner, className }: TravelerChipProps) => {\n const classes = useStyles();\n\n return (\n <Chip\n label={isPlanner ? 'Planner' : 'Traveler' }\n className={clsx(\n classes.plannerChip,\n className,\n {\n [classes.travelerChip]: !isPlanner,\n },\n )}\n />\n )\n};\n\ntype ListTripsPageProps = {\n currentUserAvatarUrl: string,\n errorNotification: string,\n isUserLoggedIn: boolean,\n successNotification: string,\n trips: GlobalTrip[],\n}\n\nconst ListTripsPage = ({\n currentUserAvatarUrl,\n errorNotification,\n isUserLoggedIn,\n successNotification,\n trips,\n}: ListTripsPageProps) => {\n const classes = useStyles();\n\n const addTripButtonRef = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Trip Creation Initiated',\n {\n category: 'Trip Creation',\n buttonClicked: '\"+\" in My Trips',\n },\n );\n }\n }, []);\n\n return (\n <div className={classes.root}>\n <SiteHeader\n currentUserAvatarUrl={currentUserAvatarUrl}\n hideMyTripsButton\n isTripUpdatesHidden\n isUserLoggedIn={isUserLoggedIn}\n />\n <Container maxWidth={trips.length === 0 ? false : \"sm\"} className={clsx(\n classes.sectionContainer,\n {\n [classes.pageContainer]: trips.length === 0,\n },\n )}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Grid container className={classes.topContainer} justifyContent=\"space-between\">\n <Grid item className={classes.sectionHeaderGridItem}>\n <Typography variant='h2' className={classes.myTripsHeader}>My trips</Typography>\n </Grid>\n <Grid item className={classes.sectionHeaderGridItem}>\n <IconButton\n className={classes.sectionHeaderItemButton}\n data-test-id=\"+TripButton\"\n href={newTripPath()}\n ref={(el) => addTripButtonRef(el)}\n >\n <AddIcon data-test-id=\"addTripButton\"/>\n </IconButton>\n </Grid>\n </Grid>\n </Grid>\n {successNotification && (\n <Grid item>\n <DismissibleAlert>\n <> {successNotification} </>\n </DismissibleAlert>\n </Grid>\n )}\n {errorNotification && (\n <Grid item>\n <DismissibleAlert severity=\"error\">\n <> {errorNotification} </>\n </DismissibleAlert>\n </Grid>\n )}\n {trips.map((trip) => (\n <Grid item key={trip.id} className={classes.trip} data-test-id=\"tripCard\">\n <CardButton>\n <TripActions\n travelerId={trip.travelerId}\n deletable={trip.deletable}\n isPlanner={trip.isPlanner}\n tripId={trip.id}\n />\n <ButtonBase\n id={`trip-${trip.id}`}\n href={tripPath(trip.id)}\n className={classes.tripBox}\n style={{background: `linear-gradient(to bottom, rgba(14, 51, 71, 0) 1%, rgba(9, 26, 35, 0.3) 46%, rgba(4, 6, 7, 0.9)), url(${trip.coverPhotos.small}), center`}}\n >\n <Grid container justifyContent=\"space-between\" direction=\"column\" className={classes.tripBoxInnerGrid}>\n <Grid item>\n <TravelerChip isPlanner={trip.isPlanner}/>\n <TravelersAvatars trip={trip} />\n <Grid item\n container\n direction=\"row\"\n className={classes.tripTitleSection}\n >\n <Typography variant=\"h3\" className={classes.tripTitle}>{trip.name}</Typography>\n </Grid>\n </Grid>\n </Grid>\n </ButtonBase>\n </CardButton>\n </Grid>\n ))}\n {trips.length === 0 && (\n <Grid item>\n <EmptySectionContentWithCTA\n heading=\"Time to schedule some PTO\"\n body=\"Press the “+” button to create your tripsite and start planning your next adventure with Troupe.\"\n message1=\"Americans forfeit over 212 million vacation days a year.\"\n message2=\"Don’t let that hard-earned PTO go to waste!\"\n illustration=\"mountains_01\"\n ctaText=\"Plan your first trip\"\n ctaHREF={newTripPath()}\n ctaTrackingProps={{\n eventName: 'Trip Creation Initiated',\n properties: {\n category: 'Trip Creation',\n buttonClicked: '\"Plan your first trip\" in empty My Trips',\n },\n }}\n />\n </Grid>\n )}\n </Grid>\n </Container>\n <SiteFooter />\n </div>\n );\n};\n\nexport default hocRailsAction(ListTripsPage);\n","import React, { useContext, useState } from \"react\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport ExitToAppIcon from '@mui/icons-material/ExitToApp';\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport {\n Box,\n IconButton,\n Menu,\n MenuItem,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport DeleteResourceConfirmationDialog from \"../../../shared/DeleteResourceConfirmationDialog\";\nimport LeaveConfirmationDialog from \"../../../shared/LeaveConfirmationDialog\";\nimport * as routes from '../../../../routes';\nimport { track as trackAnalyticsEvent } from \"../../../../services/analytics\";\nimport { SegmentContext } from \"../../../Document\";\n\nconst {\n tripPath,\n tripTravelerPath,\n} = routes;\n\ntype TripActionsProps = {\n deletable: boolean,\n isPlanner: boolean,\n travelerId: string,\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'absolute',\n top: theme.spacing(3),\n right: theme.spacing(3),\n zIndex: 1,\n },\n iconButton: {\n width: 32,\n height: 32,\n backgroundColor: \"#FFFFFF\",\n border: `1px solid ${theme.palette.general.background.disabled}`,\n \"&:hover\": {\n backgroundColor: '#F6F6F6',\n border: `1px solid ${theme.palette.primary.main}`,\n },\n },\n icon: {\n color: '#334351',\n },\n exitToAppIcon: {\n transform: 'scaleX(-1)',\n marginRight: theme.spacing(1),\n marginLeft: `-${theme.spacing(1)}`,\n },\n deleteIcon: {\n marginRight: theme.spacing(1),\n marginLeft: `-${theme.spacing(1)}`,\n },\n}));\n\nconst TripActions = ({ deletable, isPlanner, travelerId, tripId }: TripActionsProps) => {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = useState(null);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [leaveDialogOpen, setLeaveDialogOpen] = useState(false)\n const handleCloseMenu = () => setAnchorEl(null);\n const { currentUserId } = useContext(SegmentContext);\n const handleDeleteClick = () => {\n setDeleteDialogOpen(true);\n handleCloseMenu()\n };\n const handleLeaveClick = () => {\n setLeaveDialogOpen(true);\n trackAnalyticsEvent('Leave Trip Initiated', {\n tripId: tripId,\n userId: currentUserId,\n });\n handleCloseMenu()\n };\n\n return (\n <Box className={classes.root}>\n <IconButton\n className={classes.iconButton}\n data-test-id=\"tripActionsButton\"\n onClick={(event) => setAnchorEl(event.target)}\n >\n <MoreHorizIcon fontSize=\"large\" className={classes.icon} />\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseMenu}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem onClick={handleDeleteClick} dense disabled={!deletable}>\n <DeleteIcon fontSize=\"small\" className={classes.deleteIcon}/>\n Delete trip\n </MenuItem>\n <MenuItem onClick={handleLeaveClick} dense disabled={isPlanner} data-test-id=\"leave-trip\">\n <ExitToAppIcon fontSize=\"small\" className={classes.exitToAppIcon}/>\n Leave trip\n </MenuItem>\n </Menu>\n <DeleteResourceConfirmationDialog\n confirmationToggleText=\"Yes, I still want to delete\"\n fullWidthButtons\n isOpen={deleteDialogOpen}\n onClose={() => setDeleteDialogOpen(false)}\n path={tripPath(tripId)}\n resourceName=\"trip\"\n />\n <LeaveConfirmationDialog\n fullWidthButtons\n isOpen={leaveDialogOpen}\n onClose={() => setLeaveDialogOpen(false)}\n path={tripTravelerPath(tripId, travelerId)}\n />\n </Box>\n );\n};\n\nexport default TripActions;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport DateOption from \"../../shared/DateOption\";\nimport { hocRailsAction } from \"../../Document\";\nimport TripObjectChoosingModalForm, { ChoosingTypeTripObject } from \"./shared/TripObjectChoosingModalForm\";\nimport getMostPopularDateOptions from \"../../../services/getMostPopularDateOptions\";\nimport isSkipVoting from \"../../../services/skipVoting\";\nimport * as routes from '../../../routes';\nimport { DateOptionType } from \"../../shared/TripObjectTypes\";\n\nconst {\n tripChosenDateOptionPath,\n tripDatesPath,\n} = routes;\n\ntype NewChosenDateOptionPageProps = {\n errors: string[],\n tripId: string,\n tripObjects: DateOptionType[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n dateOption: {\n marginTop: theme.spacing(2),\n },\n}));\n\nconst NewChosenDateOptionPage = ({\n errors,\n tripId,\n tripObjects,\n}: NewChosenDateOptionPageProps) => {\n const classes = useStyles();\n const mostPopularOptions = getMostPopularDateOptions(tripObjects).map(option => option.id);\n\n return (\n <TripObjectChoosingModalForm\n title=\"Which date option do you want to finalize?\"\n subtitle=\"Don’t worry, you can always edit your dates at a later point.\"\n tripSitePath={tripDatesPath(tripId)}\n newChosenTripObjectPath={tripChosenDateOptionPath(tripId)}\n errors={errors}\n tripObjects={tripObjects}\n type={ChoosingTypeTripObject.Dates}\n isSkipVoting={isSkipVoting()}\n renderTripObject={({ tripObject, isChosen, chooseFinalTripObject }) => {\n const dateOption = tripObject as DateOptionType;\n return <DateOption\n className={classes.dateOption}\n currentUserVote={dateOption.currentUserVote}\n endDate={dateOption.endDate}\n endDateWeekday={dateOption.endDateWeekday}\n endDateYear={dateOption.endDateYear}\n highlightAsChosen={isChosen}\n isClickable={!dateOption.isPast}\n isMostPopular={mostPopularOptions.includes(dateOption.id)}\n isPast={dateOption.isPast}\n key={dateOption.id}\n numNights={dateOption.numNights}\n onDateOptionClick={() => !dateOption.isPast && chooseFinalTripObject(dateOption.id)}\n startDate={dateOption.startDate}\n startDateWeekday={dateOption.startDateWeekday}\n startDateYear={dateOption.startDateYear}\n travelersVotes={dateOption.travelersVotes}\n noVotesBreakdown={isSkipVoting()}\n />\n }}\n />\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewChosenDateOptionPage);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport Destination from \"./microsite/DestinationPage/Destination\";\nimport { hocRailsAction } from \"../../Document\";\nimport TripObjectChoosingModalForm, { ChoosingTypeTripObject } from \"./shared/TripObjectChoosingModalForm\";\nimport isSkipVoting from \"../../../services/skipVoting\";\nimport * as routes from '../../../routes';\nimport { DestinationType } from \"../../shared/TripObjectTypes\";\n\nconst {\n tripDestinationsPath,\n tripChosenDestinationPath,\n} = routes;\n\ntype NewChosenDestinationPageProps = {\n errors: string[],\n tripId: string,\n tripObjects: DestinationType[],\n};\n\nconst usePageStyles = makeStyles(theme => ({\n destination: {\n marginTop: theme.spacing(2),\n },\n}));\n\nconst NewChosenDestinationPage = ({\n errors,\n tripId,\n tripObjects,\n}: NewChosenDestinationPageProps) => {\n const classes = usePageStyles();\n\n return (\n <TripObjectChoosingModalForm\n title=\"Which destination do you want to finalize?\"\n subtitle=\"Don’t worry, you can always edit your choice at a later point.\"\n tripSitePath={tripDestinationsPath(tripId)}\n newChosenTripObjectPath={tripChosenDestinationPath(tripId)}\n errors={errors}\n tripObjects={tripObjects}\n type={ChoosingTypeTripObject.Destination}\n isSkipVoting={isSkipVoting()}\n renderTripObject={({ tripObject, isChosen, chooseFinalTripObject }) => (\n <Destination\n className={classes.destination}\n destination={tripObject as DestinationType}\n hideVotes={true}\n isChosen={isChosen}\n isClickable\n key={tripObject.id}\n onDestinationClick={() => chooseFinalTripObject(tripObject.id)}\n />\n )}\n />\n );\n};\n\nexport default hocRailsAction(NewChosenDestinationPage);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport Stay from \"./microsite/HousingPage/Stay\";\nimport { hocRailsAction } from \"../../Document\";\nimport TripObjectChoosingModalForm, { ChoosingTypeTripObject } from \"./shared/TripObjectChoosingModalForm\";\nimport isSkipVoting from \"../../../services/skipVoting\";\nimport * as routes from '../../../routes';\nimport { StayType } from \"../../shared/TripObjectTypes\";\n\nconst {\n tripStaysPath,\n tripChosenStayPath,\n} = routes;\n\ntype NewChosenStayPageProps = {\n errors: string[],\n tripId: string,\n tripObjects: StayType[],\n};\n\nconst usePageStyles = makeStyles(theme => ({\n stay: {\n marginTop: theme.spacing(2),\n },\n chosenStay: {\n border: `2px solid ${theme.palette.general.primary} !important`,\n },\n}));\n\nconst NewChosenStayPage = ({\n errors,\n tripId,\n tripObjects,\n}: NewChosenStayPageProps) => {\n const classes = usePageStyles();\n\n return (\n <TripObjectChoosingModalForm\n title=\"Which stay do you want to finalize?\"\n subtitle=\"Don’t worry, you can always edit your choice at a later point.\"\n tripSitePath={tripStaysPath(tripId)}\n newChosenTripObjectPath={tripChosenStayPath(tripId)}\n errors={errors}\n tripObjects={tripObjects}\n type={ChoosingTypeTripObject.Stay}\n isSkipVoting={isSkipVoting()}\n renderTripObject={({ tripObject, isChosen, chooseFinalTripObject }) => (\n <Stay\n stay={tripObject as StayType}\n className={clsx(classes.stay, {\n [classes.chosenStay]: isChosen,\n })}\n hideDateOptionsAvailability\n isClickable\n key={tripObject.id}\n onStayClick={() => chooseFinalTripObject(tripObject.id)}\n />\n )}\n />\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewChosenStayPage);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Grid, Typography, Theme } from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { isMobile } from \"react-device-detect\";\n\ntype StyleProps = {\n isMobile: boolean;\n}\n\ntype FirstStepTripFormType = {\n setOptionalData: (data: any) => void,\n optionalData: any,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n cardButton: {\n justifyContent: \"center\",\n display: \"flex\",\n border: \"1px dashed #545DFC\",\n \"&:hover\": {\n backgroundColor: ({ isMobile }) => !isMobile ? '#EEEFFF' : null,\n border: ({ isMobile }) => !isMobile ? \"1px solid #545DFC\" : null,\n },\n borderRadius: '8px',\n cursor: 'pointer',\n width: '100%',\n maxWidth: '500px',\n minHeight: '60px',\n padding: theme.spacing(2),\n },\n cardLabel: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n },\n image: {\n width: '100%',\n padding: theme.spacing(2),\n [theme.breakpoints.down(\"sm\")]: {\n width: '300px',\n },\n [theme.breakpoints.up(\"md\")]: {\n height: '200px',\n },\n },\n selectedVertical: {\n backgroundColor: '#EEEFFF',\n border: \"1px solid #545DFC\",\n },\n}));\n\nexport const UpperImage = () => {\n const classes = useStyles({isMobile});\n return(\n <img src=\"/assets/trips.svg\" alt=\"plane\" className={classes.image} />\n )\n};\n\ntype VerticalBoxType = {\n vertical: string,\n onClick: () => void,\n selectedVerticals: {}\n};\n\nconst VerticalBox = ({\n vertical,\n onClick,\n selectedVerticals = {},\n}: VerticalBoxType) => {\n const classes = useStyles({isMobile});\n return(\n <Box\n className={clsx(classes.cardButton, selectedVerticals[vertical.toLowerCase()] && classes.selectedVertical)}\n my={1}\n onClick={onClick}\n data-test-id={`vertical-box-${vertical.toLowerCase()}`}\n >\n <Typography variant=\"h3\" textAlign='center' className={classes.cardLabel}>\n {vertical}\n </Typography>\n </Box>\n )\n}\n\nconst FirstStepTripForm : React.FC<FirstStepTripFormType> = ({\n setOptionalData,\n optionalData,\n}) => {\n const onButtonClick = (vertical) => {\n if(vertical === 'nothing')\n return setOptionalData(prevState => ({\n ...prevState,\n verticals: {\n dates: false,\n destinations: false,\n nothing: !prevState.verticals.nothing,\n stays: false,\n },\n disabledSubmit: prevState.verticals.nothing,\n }));\n setOptionalData(prevState => ({\n ...prevState,\n verticals: {\n ...prevState.verticals,\n nothing: false,\n [vertical]: !prevState.verticals[vertical],\n },\n disabledSubmit: !Object.values({...prevState.verticals, [vertical]: !prevState.verticals[vertical]}).some(v => v),\n }));\n };\n const options = ['Dates', 'Destinations', 'Stays', 'Nothing'];\n\n React.useEffect(() => {\n setOptionalData(prevState => ({\n ...prevState,\n disabledSubmit: !Object.values(prevState.verticals).some(v => v),\n }))\n }, []);\n\n return (\n <Grid container direction=\"column\" alignContent=\"space-around\">\n {options.map((option) => (\n <VerticalBox\n key={option}\n vertical={option}\n onClick={() => onButtonClick(option.toLowerCase())}\n selectedVerticals={optionalData.verticals}\n />\n ))}\n </Grid>\n )\n};\n\nexport default FirstStepTripForm;\n","import React from \"react\";\nimport { hocRailsAction } from \"../../../Document\";\nimport { Typography } from \"@mui/material\";\nimport Button, { ButtonType } from \"../../../buttons/Button\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport SecondStepTripForm, { UpperImage as SecondStepUpperImage } from \"./SecondStepTripForm\";\nimport ThirdStepTripForm, {UpperImage as ThirdStepUpperImage} from \"./ThirdStepTripForm\";\nimport Errors from \"../../../shared/Errors\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { tripsPath } from \"../../../../routes\";\nimport { MARKETING_URL } from \"../../../../constants/urls\";\nimport { track } from \"../../../../services/analytics\";\nimport { DestinationLocationType } from '../../../../types/DestinationTypes';\nimport FirstStepTripForm, { UpperImage as FirstStepTripImage } from \"./FirstStepTripForm\";\n\ntype NewCreationFormProps = {\n errors: string[],\n currentUserId?: string,\n};\n\ntype OptionalDataType = {\n start_date?: string,\n end_date?: string,\n location?: DestinationLocationType,\n disabledSubmit?: boolean,\n verticals: {\n dates: boolean,\n destinations: boolean,\n stays: boolean,\n nothing: boolean,\n },\n stay?: string,\n}\n\nconst useStyles = makeStyles((theme) => ({\n errors: {\n paddingBottom: theme.spacing(2),\n },\n subTitle: {\n textAlign: 'center',\n },\n title: {\n textAlign: 'center',\n },\n}));\n\nconst NewCreationForm = ({\n errors,\n currentUserId,\n}: NewCreationFormProps) => {\n const classes = useStyles();\n const [currentStep, setCurrentStep] = React.useState(1 as (1 | 2 | 3));\n const [optionalData, setOptionalData] = React.useState({\n disabledSubmit: true,\n verticals: {\n dates: false,\n destinations: false,\n nothing: false,\n stays: false,\n }} as OptionalDataType);\n\n type stepToScreenType = {\n Body: JSX.Element,\n title: string,\n subtitle: string,\n backButton: boolean,\n onFormSubmit: (e: any) => void,\n UpperImage: () => JSX.Element,\n buttonType: ButtonType,\n buttonLabel: string,\n page?: string,\n };\n\n const stepToScreen: {[key: number]: stepToScreenType} = {\n 1: {\n Body: <FirstStepTripForm setOptionalData={setOptionalData} optionalData={optionalData} />,\n title: 'Let’s set up your trip!',\n subtitle: 'What have you decided?',\n backButton: false,\n onFormSubmit: (e) => {\n e.preventDefault();\n optionalData.verticals.nothing ? setCurrentStep(3) : setCurrentStep(2);\n },\n UpperImage: FirstStepTripImage,\n buttonType: 'button',\n buttonLabel: 'Continue',\n },\n 2: {\n Body: <SecondStepTripForm setOptionalData={setOptionalData} optionalData={optionalData} />,\n title: 'A few more details...',\n subtitle: 'Fill in what’s been decided so Troupe can help you with the rest.',\n backButton: true,\n onFormSubmit: (e) => {\n e.preventDefault();\n stepSubmittedEvent();\n setCurrentStep(3)\n },\n UpperImage: SecondStepUpperImage,\n buttonType: 'button',\n buttonLabel: 'Next',\n page: 'decided input form',\n },\n 3: {\n Body: <ThirdStepTripForm optionalData={optionalData} />,\n title: 'Finishing touches',\n subtitle: 'Let travelers know what your trip is all about.',\n backButton: true,\n onFormSubmit: () => {},\n UpperImage: ThirdStepUpperImage,\n buttonType: 'submit',\n buttonLabel: 'Submit',\n page: 'decided selection form',\n },\n };\n\n const closeOnCreatingSegmentEvent = () => {\n track('Trip Creation Form Dismissed', {\n userId: currentUserId ? currentUserId : 'anonymous',\n });\n };\n\n const stepSubmittedEvent = () => {\n track('Trip Creation Form Step Submitted', {\n currentUserId: currentUserId ? currentUserId : 'anonymous',\n buttonClicked: stepToScreen[currentStep].buttonLabel,\n page: stepToScreen[currentStep].page,\n decidedSelection: optionalData,\n });\n };\n\n const backButton = () => (\n <Button\n fullWidth\n onClick={() => setCurrentStep(prevStep => (\n (prevStep === 2 || optionalData.verticals.nothing) ? 1 : 2\n ))}\n variant=\"secondary\"\n data-test-id=\"back-button\"\n >\n Back\n </Button>\n );\n\n const renderDateHiddenInputs = () => (\n <div data-test-id='dates-input'>\n <input\n type=\"hidden\"\n value={optionalData?.start_date}\n name={'trip[date_options_attributes][0][start_date]'}\n />\n <input\n type=\"hidden\"\n value={optionalData?.end_date}\n name={'trip[date_options_attributes][0][end_date]'}\n />\n </div>\n );\n\n const renderDestinationHiddenInputs = () => (\n <div data-test-id='location-inputs'>\n <input\n type=\"hidden\"\n value={optionalData?.location?.name || \"\"}\n name=\"trip[destinations_attributes][0][name]\"\n />\n <input\n type=\"hidden\"\n value={optionalData?.location?.google_place_id || \"\"}\n name=\"trip[destinations_attributes][0][google_place_id]\"\n />\n <input\n type=\"hidden\"\n value={optionalData?.location?.google_place_url || \"\"}\n name=\"trip[destinations_attributes][0][google_place_url]\"\n />\n <input\n type=\"hidden\"\n value={`POINT(${optionalData?.location?.longitude} ${optionalData?.location?.latitude})` || \"\"}\n name=\"trip[destinations_attributes][0][location]\"\n />\n <input\n type=\"hidden\"\n value={optionalData?.location?.image || \"\"}\n name=\"trip[destinations_attributes][0][original_image]\"\n />\n </div>\n );\n\n const renderStayHiddenInputs = () => (\n <div data-test-id='stay-input'>\n <input\n type=\"hidden\"\n value={optionalData?.stay || \"\"}\n name=\"trip[stay_url]\"\n />\n </div>\n );\n\n return (\n <ModalForm\n closePath={currentUserId ? tripsPath() : MARKETING_URL}\n disabledSubmit={optionalData.disabledSubmit}\n extraSaveBarButton={stepToScreen[currentStep].backButton ? backButton() : null}\n formActionPath={tripsPath()}\n onClick={stepToScreen[currentStep].onFormSubmit}\n saveButtonLabel={stepToScreen[currentStep].buttonLabel}\n saveButtonType={stepToScreen[currentStep].buttonType}\n subtitle={\n <Typography className={classes.subTitle}>\n {stepToScreen[currentStep].subtitle}\n </Typography>\n }\n title={stepToScreen[currentStep].title}\n titleClassName={classes.title}\n useDefaultSaveButton\n onModalClose={closeOnCreatingSegmentEvent}\n upperImage={stepToScreen[currentStep].UpperImage()}\n >\n {errors.length > 0 && (\n <Errors errors={errors} className={classes.errors}/>\n )}\n {stepToScreen[currentStep].Body}\n { optionalData.verticals.dates && renderDateHiddenInputs()}\n { optionalData.verticals.destinations && renderDestinationHiddenInputs()}\n { optionalData.verticals.stays && renderStayHiddenInputs()}\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(NewCreationForm);\n","export const MARKETING_URL : string = 'https://troupe.com';\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n TextField,\n IconButton,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport DateRangePicker from \"../../../shared/CustomDateRangePicker\";\nimport DestinationField from \"../../destinations/DestinationField\";\nimport { Place } from \"../../../shared/GooglePlacesAutocomplete\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport StayPreview from \"../../stays/StayForm/StayPreview\";\n\ntype SecondStepTripFormProps = {\n setOptionalData: (data: any) => void,\n optionalData: any,\n};\n\nconst useStyles = makeStyles((theme) => ({\n verticalTitle: {\n marginBottom: theme.spacing(1),\n lineHeight: '24px',\n },\n title: {\n textAlign: 'center',\n },\n subTitle: {\n textAlign: 'center',\n },\n image: {\n width: '100%',\n padding: theme.spacing(2),\n maxWidth: '100%',\n [theme.breakpoints.down(\"sm\")]: {\n width: '360px',\n },\n [theme.breakpoints.up(\"md\")]: {\n height: '200px',\n },\n },\n centeredSection: {\n textAlign: 'center',\n },\n noStayImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n paddingTop: theme.spacing(2),\n },\n emptyStateImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n padding: theme.spacing(4),\n paddingTop: theme.spacing(2),\n },\n}));\n\nexport const UpperImage = () => {\n const classes = useStyles();\n return(\n <img src=\"/assets/illustrations/create_trip_second_step.svg\" alt=\"posts\" className={classes.image} />\n )\n};\n\nconst SecondStepTripForm : React.FC<SecondStepTripFormProps> = ({\n setOptionalData,\n optionalData,\n}) => {\n const classes = useStyles();\n\n const isVerticalPresentOrFilled = (isVerticalSelected : boolean, data: any) => (\n isVerticalSelected ? !!data : true\n );\n\n const handleDisabledSubmit = (value: any, type: string, optionalDataPrevState) => {\n const typeToSubmitButtonEnabled = {\n dates: !!(value[0] && value[1]) && isVerticalPresentOrFilled(optionalDataPrevState.verticals.destinations, optionalDataPrevState.location) && isVerticalPresentOrFilled(optionalDataPrevState.verticals.stays, optionalDataPrevState.stay),\n destinations: !!value && isVerticalPresentOrFilled(optionalDataPrevState.verticals.dates, !!(optionalDataPrevState.start_date && optionalDataPrevState.end_date)) && isVerticalPresentOrFilled(optionalDataPrevState.verticals.stays, optionalDataPrevState.stay),\n stays: !!value && isVerticalPresentOrFilled(optionalDataPrevState.verticals.dates, !!(optionalDataPrevState.start_date && optionalDataPrevState.end_date)) && isVerticalPresentOrFilled(optionalDataPrevState.verticals.destinations, optionalDataPrevState.location),\n }\n return !typeToSubmitButtonEnabled[type];\n }\n\n const renderDatesPicker = () => (\n <Grid item>\n <Typography variant=\"h3\" className={classes.verticalTitle}>\n Dates\n </Typography>\n <DateRangePicker\n onChange={dates => {\n setOptionalData(prevState => ({\n ...prevState,\n start_date: dates[0]?.format('YYYY-MM-DD'),\n end_date: dates[1]?.format('YYYY-MM-DD'),\n disabledSubmit: handleDisabledSubmit(dates, 'dates', prevState),\n }));\n }}\n defaultStartValue={optionalData.start_date}\n defaultEndValue={optionalData.end_date}\n />\n </Grid>\n );\n\n const renderDestinationTextField = () => {\n const inputRef = React.useRef(null);\n const handleLocationChange = (place: Place) => {\n if (place) {\n setOptionalData(prevState => ({\n ...prevState,\n location: {\n name: place.name,\n google_place_id: place.id,\n google_place_url: place.url,\n image: place.image,\n latitude: place.latitude,\n longitude: place.longitude,\n },\n disabledSubmit: handleDisabledSubmit(place, 'destinations', prevState),\n }));\n } else {\n setOptionalData(prevState => ({\n ...prevState,\n location: {},\n disabledSubmit: handleDisabledSubmit(false, 'destinations', prevState),\n }));\n inputRef.current?.focus();\n }\n };\n\n return(\n <Grid item>\n <Typography variant=\"h3\" className={classes.verticalTitle}>\n Destination\n </Typography>\n <DestinationField\n currentDestination={optionalData?.location?.name}\n currentGooglePlaceId={optionalData?.location?.googlePlaceId}\n currentGooglePlaceUrl={optionalData?.location?.googlePlaceUrl}\n currentLatitude={optionalData?.location?.latitude}\n currentLongitude={optionalData?.location?.longitude}\n currentImage={optionalData?.location?.googlePlaceImage}\n onChange={handleLocationChange}\n ref={inputRef}\n required\n />\n </Grid>\n )\n };\n\n const renderStayField = () => {\n const inputRef = React.useRef(null);\n return(\n <Grid item>\n <Typography variant=\"h3\" className={classes.verticalTitle}>\n Stay\n </Typography>\n <TextField\n fullWidth\n value={optionalData?.stay || ''}\n id=\"stay_url\"\n inputRef={inputRef}\n InputProps={{\n endAdornment: optionalData?.stay && (\n <IconButton onClick={() => {\n setOptionalData(prevState => ({\n ...prevState,\n stay: \"\",\n disabledSubmit: handleDisabledSubmit(false, 'stays', prevState),\n }));\n inputRef.current?.focus();\n }}>\n <CloseIcon />\n </IconButton>\n ),\n }}\n onChange={(event) => setOptionalData(prevState => ({\n ...prevState,\n stay: event.target.value.trim(),\n disabledSubmit: handleDisabledSubmit(event.target.value.trim(), 'stays', prevState),\n }))}\n placeholder=\"Paste your link here\"\n required\n variant=\"outlined\"\n />\n {optionalData?.stay ? (\n <StayPreview\n url={optionalData?.stay}\n />\n ) : (\n <Grid item className={classes.centeredSection}>\n <img\n className={classes.noStayImage}\n alt=\"No preview found\"\n src={`/assets/illustrations/camper.svg`}\n />\n </Grid>\n )}\n </Grid>\n )\n };\n\n const disabledSubmitOnFirstRender = (optionalData) => (\n !(isVerticalPresentOrFilled(optionalData.verticals.destinations, optionalData.location?.name) &&\n isVerticalPresentOrFilled(optionalData.verticals.dates, !!(optionalData.start_date && optionalData.end_date)) &&\n isVerticalPresentOrFilled(optionalData.verticals.stays, optionalData.stay))\n );\n\n React.useEffect(() => {\n setOptionalData(prevState => ({\n ...prevState,\n disabledSubmit: disabledSubmitOnFirstRender(prevState),\n }))\n }, []);\n\n return(\n <Grid container spacing={2} direction=\"column\">\n {optionalData.verticals?.dates && renderDatesPicker()}\n {optionalData.verticals?.destinations && renderDestinationTextField()}\n {optionalData.verticals?.stays && renderStayField()}\n </Grid>\n );\n};\n\nexport default SecondStepTripForm;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ImageUploader from '../../../shared/ImageUploader';\nimport RichTextEditor from '../../../shared/RichTextEditor';\nimport InputWithCharacterCounter from '../../../shared/InputWithCharacterCounter';\nimport TripTypesSelection from './TripTypesSelection';\n\ntype ThirdStepTripFormProps = {\n optionalData: any,\n};\n\nconst useStyles = makeStyles((theme) => ({\n headLine: {\n marginTop: theme.spacing(3),\n },\n title: {\n textAlign: 'center',\n },\n subTitle: {\n textAlign: 'center',\n },\n blurbWrapper: {\n marginTop: theme.spacing(2),\n },\n uploaderContainer: {\n marginTop: 12,\n },\n travelerCount: {\n width: '50%',\n },\n image: {\n width: '100%',\n padding: theme.spacing(2),\n maxWidth: '100%',\n [theme.breakpoints.down(\"sm\")]: {\n padding: theme.spacing(4),\n width: '360px',\n },\n [theme.breakpoints.up(\"md\")]: {\n height: '200px',\n },\n },\n tripName: {\n lineHeight: '24px',\n marginBottom: theme.spacing(1),\n },\n tripNameInput : {\n borderWidth: '1px',\n },\n}));\n\ntype EstimatedTravelerCountProps = {\n estimatedTraveler?: number | null,\n}\n\nexport const EstimatedTravelerCount : React.FC<EstimatedTravelerCountProps> = ({\n estimatedTraveler,\n}) => {\n const classes = useStyles();\n\n return (\n <Grid container spacing={2} direction=\"column\">\n <Grid item>\n <Typography variant=\"h3\" mt={3}>\n Estimated travelers (optional)\n </Typography>\n </Grid>\n <Grid item>\n <Typography>\n Not including you, how many travelers do you think will join this trip?\n </Typography>\n </Grid>\n <Grid item>\n <TextField\n id={\"estimated_traveler\"}\n className={classes.travelerCount}\n placeholder='Dont know? Skip this question'\n type='number'\n inputProps={{ min: 1, max: 99 }}\n name='trip[estimated_travelers]'\n defaultValue={estimatedTraveler}\n />\n </Grid>\n </Grid>\n )\n};\n\nexport const UpperImage = () => {\n const classes = useStyles();\n return(\n <img src=\"/assets/illustrations/create_trip_third_step.svg\" alt=\"road\" className={classes.image} />\n )\n};\n\nconst ThirdStepTripForm : React.FC<ThirdStepTripFormProps> = ({optionalData}) => {\n const [description, setDescription] = useState('');\n const classes = useStyles();\n const defaultTripName = 'Untitled trip';\n const setDefaultName = (field) => {\n if (field.value.trim() === '') {\n field.value = defaultTripName;\n }\n };\n const CHARACTER_LIMIT = 100;\n\n return (\n <>\n <Grid container spacing={2} direction=\"column\">\n <Grid item>\n <Typography variant=\"h3\" className={classes.tripName}>\n Trip name\n </Typography>\n <InputWithCharacterCounter\n name=\"trip[name]\"\n focused\n fullWidth\n defaultValue={defaultTripName}\n onTextFieldBlur={setDefaultName}\n defaultBlurValue={defaultTripName}\n characterLimit={CHARACTER_LIMIT}\n noLabel\n withBorder\n className={classes.tripNameInput}\n />\n </Grid>\n </Grid>\n <div data-test-id=\"tripDescription\" className={classes.blurbWrapper}>\n <RichTextEditor\n onChange={(data) => setDescription(data)}\n placeholder=\"What’s the plan for this trip?\"\n />\n <input type=\"hidden\" name=\"trip[blurb]\" value={description} />\n </div>\n <TripTypesSelection />\n <EstimatedTravelerCount />\n <Grid container spacing={2} direction=\"column\">\n <Grid item container direction=\"column\" spacing={1}>\n <Grid item>\n <Typography variant=\"h3\" className={classes.headLine}>\n Add cover photo\n </Typography>\n </Grid>\n <Grid item>\n <Typography>\n Cover photos help your group get excited about where you’re headed.\n </Typography>\n </Grid>\n <Grid item className={classes.uploaderContainer}>\n <ImageUploader\n defaultImage='https://res.cloudinary.com/troupe/image/upload/c_fill,h_416,q_auto:good,w_1120/v1612306537/manual-trips/default/cover_agiagz.jpg'\n forcedAspectRatio={2.2}\n inputName=\"trip[image_url]\"\n isFullSize\n />\n </Grid>\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport default ThirdStepTripForm;\n","export const TRIP_TYPES = {\n bachelorette_bachelor: '🎉 Bachelorette/Bachelor',\n cruise: '🛳️ Cruise',\n destination: '🏝️ Destination',\n friends: '👯 Friends',\n outdoors_ski: '🌲 Outdoors/Ski',\n birthday_milestone: '🎈 Birthday/Milestone',\n family: '🏡 Family',\n girls_trip: '💃️ Girls Trip',\n other: 'Other'\n};\n","import React, { useState } from \"react\";\nimport {\n Chip,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { TRIP_TYPES } from '../../../../constants/tripTypes';\n\nconst useChipStyles = makeStyles((theme) => ({\n root: {\n fontSize: 16,\n lineHeight: '24px',\n },\n filled: {\n backgroundColor: '#EFF2F4',\n },\n outlined: {\n backgroundColor: '#F4F5FF',\n border: '2px solid #545DFC',\n },\n}));\n\ntype TripTypesSelectionProps = {\n tripTypes?: string[],\n};\n\nconst TripTypesSelection : React.FC<TripTypesSelectionProps> = ({ tripTypes = [] }) => {\n const chipClasses = useChipStyles();\n const [selectedTypes, setSelectedTypes] = useState(tripTypes);\n\n const handleSelectType = (type) => {\n setSelectedTypes(prevSelectedTypes => [...prevSelectedTypes, type]);\n };\n\n const handleDeselectType = (type) => {\n setSelectedTypes(prevSelectedTypes => prevSelectedTypes.filter(selectedType => selectedType !== type));\n };\n\n return (\n <Grid container spacing={2} direction=\"column\">\n <input type=\"hidden\" name=\"trip[trip_types][]\" />\n {selectedTypes.map((type) => (\n <input type=\"hidden\" name=\"trip[trip_types][]\" value={type} key={`input-${type}`} />\n ))}\n <Grid item>\n <Typography variant=\"h3\" mt={3}>\n What type of trip is this? (optional)\n </Typography>\n </Grid>\n <Grid item>\n {Object.entries(TRIP_TYPES).map(([key, value]) => (\n <Chip\n classes={chipClasses}\n key={key}\n label={value}\n onClick={() => (selectedTypes.includes(key) ? handleDeselectType(key) : handleSelectType(key))}\n variant={selectedTypes.includes(key) ? 'outlined' : 'filled'}\n sx={{ m: 0.5 }}\n />\n ))}\n </Grid>\n </Grid>\n );\n};\n\nexport default TripTypesSelection;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport { hocRailsAction } from \"../../Document\";\nimport Errors, { ErrorsProps } from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport { default as DateRangePicker } from \"../../shared/CustomDateRangePicker\";\nimport Button from \"../../buttons/Button\";\nimport TextButton from \"../../buttons/TextButton\";\nimport * as routes from '../../../routes';\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\n\nconst MIN_DATE_OPTIONS_ALLOWED = 1;\nconst MAX_DATE_OPTIONS_ALLOWED = 10;\n\nconst {\n tripDatesPath,\n tripDateOptionsPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n addMoreDatesButton: {\n marginTop: theme.spacing(1),\n },\n error: {\n color: '#F44336',\n fontSize: 12,\n lineHeight: '18px',\n },\n removeButton: {\n display: 'flex !important',\n height: '56px !important',\n width: '60%',\n marginLeft: theme.spacing(1),\n },\n suggestion: {\n fontWeight: 600,\n lineHeight: '24px',\n },\n}));\n\ntype DateOptionType = {\n end_date: string | undefined,\n start_date: string | undefined,\n}\n\ntype NewDateOptionPageProps = {\n dateOptions: DateOptionType[],\n existingDateOptions: DateOptionType[],\n errors: ErrorsProps['errors'],\n tripId: string,\n}\nconst NewDateOptionPage = ({\n dateOptions,\n existingDateOptions,\n errors,\n tripId,\n}: NewDateOptionPageProps) => {\n const classes = useStyles();\n const [dates, setDates] = useStateWithPromise(dateOptions);\n\n const canAddMoreDates = dates.length < MAX_DATE_OPTIONS_ALLOWED;\n const canRemoveDates = dates.length > MIN_DATE_OPTIONS_ALLOWED;\n\n const addDate = () => {\n if (!canAddMoreDates) return;\n\n setDates(dates.concat([{end_date: undefined, start_date: undefined}]));\n };\n\n const removeDate = (index, onFormChange) => {\n if (!canRemoveDates) return;\n\n const newArray = Array.from(dates);\n newArray.splice(index, 1);\n\n setDates(newArray).then(() => onFormChange());\n };\n\n const setSelectedDates = (index, selectedRange) => {\n const newArray = Array.from(dates);\n\n newArray[index]['start_date'] = selectedRange[0]?.format('MM/DD/YYYY');\n newArray[index]['end_date'] = selectedRange[1]?.format('MM/DD/YYYY');\n\n setDates(newArray);\n\n if (dates.length == 1 && !!dates[0]['start_date'] && !!dates[0]['end_date']) {\n addDate();\n }\n };\n\n const [alreadySuggested, setAlreadySuggested] = useState([]);\n const isDateAlreadySuggested = (date) => {\n return existingDateOptions.some((existingDate) => existingDate.start_date == date.start_date && existingDate.end_date == date.end_date);\n };\n const isDateAlreadySelected = (selectedDate) => {\n return validDates().filter((date) => selectedDate.start_date == date.start_date && selectedDate.end_date == date.end_date).length > 1;\n };\n\n useEffect(() => {\n let indexes = [];\n\n dates.forEach((date, index) => {\n if (isDateAlreadySuggested(date) || isDateAlreadySelected(date)) {\n indexes = indexes.concat(index);\n };\n });\n\n setAlreadySuggested(indexes);\n }, [dates]);\n\n const validDates = () => {\n return dates.filter((date) => date.start_date && date.end_date);\n };\n\n const invalidDates = () => {\n return dates.filter((date) => (!date.start_date && date.end_date) || (date.start_date && !date.end_date));\n };\n\n const shouldDisableForm = () => {\n return alreadySuggested.length > 0 || invalidDates().length > 0 || validDates().length == 0;\n };\n\n return (\n <ModalForm\n closePath={tripDatesPath(tripId)}\n disabledSubmit={shouldDisableForm()}\n formActionPath={tripDateOptionsPath(tripId)}\n title=\"Suggest dates\"\n withChangeDetection\n >\n <Box paddingBottom={2}>\n <Typography>Suggest start and end dates for your group’s upcoming trip.</Typography>\n </Box>\n <Grid container spacing={2} direction=\"column\">\n {errors.length > 0 && (\n <Grid item>\n <Errors errors={errors} />\n </Grid>\n )}\n <Grid item container spacing={3}>\n <FormContext.Consumer>\n {({ onFormChange }) => <>\n {dates.map((date, index) => (\n <Grid item container direction=\"column\" spacing={1.5} key={index} data-test-id=\"suggestion\">\n <Grid item>\n <Typography className={classes.suggestion}>Suggestion {index + 1}</Typography>\n </Grid>\n <Grid item container spacing={1} alignItems=\"center\" flexWrap=\"nowrap\">\n <Grid item>\n <DateRangePicker\n id={`date-picker-${index}`}\n autoComplete=\"off\"\n hasError={alreadySuggested.includes(index)}\n endValue={date.end_date ? date.end_date : null}\n startValue={date.start_date ? date.start_date : null}\n helperText={false}\n nameEnd={`date_option[${index}][end_date]`}\n nameStart={`date_option[${index}][start_date]`}\n onChange={(range) => {\n setSelectedDates(index, range);\n onFormChange();\n }}\n />\n </Grid>\n <Grid item>\n <Button\n className={classes.removeButton}\n data-test-id={`remove-date-${index}`}\n detachedFromForm\n disabled={!canRemoveDates}\n type='button'\n variant='tertiary'\n onClick={() => removeDate(index, onFormChange)}\n >\n <DeleteOutlineIcon fontSize='large'/>\n </Button>\n </Grid>\n </Grid>\n {alreadySuggested.includes(index) && (\n <Grid item>\n <Typography className={classes.error}>These dates have already been suggested</Typography>\n </Grid>\n )}\n </Grid>\n ))}\n </>}\n </FormContext.Consumer>\n </Grid>\n {canAddMoreDates && (\n <Grid item container justifyContent=\"center\">\n <Grid item>\n <TextButton\n data-test-id='add-more-dates'\n detachedFromForm\n className={classes.addMoreDatesButton}\n onClick={() => addDate()}\n >\n + Add more dates\n </TextButton>\n </Grid>\n </Grid>\n )}\n </Grid>\n </ModalForm>\n );\n};\n\nNewDateOptionPage.defaultProps = {\n dateOptions: [{end_date: undefined, start_date: undefined}],\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewDateOptionPage);\n","import React, { useReducer, useRef } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport DestinationPreview from \"../destinations/DestinationPreview\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport { Place } from \"../../shared/GooglePlacesAutocomplete\";\nimport { FormContext } from \"../../shared/RailsForm\";\nimport DestinationField from \"../destinations/DestinationField\";\nimport useStateWithPromise from \"../../../services/useStateWithPromise\";\nimport { tripDestinationsPath } from '../../../routes';\nimport { DestinationLocationType } from '../../../types/DestinationTypes';\n\ntype NewDestinationPageProps = {\n errors: string[],\n tripId: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n emptyStateImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n padding: theme.spacing(4),\n paddingTop: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n noImage: {\n maxWidth: theme.spacing(50),\n width: '100%',\n paddingTop: theme.spacing(2),\n },\n}));\n\nconst NewDestinationPage = ({\n errors,\n tripId,\n}: NewDestinationPageProps) => {\n const classes = useStyles();\n const [location, setLocation] = useStateWithPromise({} as DestinationLocationType);\n const inputRef = useRef(null);\n\n const initialState = {\n showFetchErrorMessage: false,\n showEmptyState: true,\n };\n\n const reducer = (state, action) => {\n switch(action.type) {\n case 'showFetchErrorMessage':\n return { showFetchErrorMessage: true, showEmptyState: false }\n case 'hideAll':\n return { showFetchErrorMessage: false, showEmptyState: false }\n case 'resetForm':\n setLocation({}).then(() => inputRef.current.focus());\n return initialState;\n default:\n throw new Error();\n }\n };\n\n const [{ showFetchErrorMessage, showEmptyState }, dispatch] = useReducer(\n reducer,\n initialState,\n );\n\n const handleLocationChange = (place: Place) => {\n if (place) {\n setLocation({\n name: place.name,\n google_place_id: place.id,\n google_place_url: place.url,\n image: place.image,\n latitude: place.latitude,\n longitude: place.longitude,\n });\n } else {\n dispatch({ type: 'resetForm' });\n }\n };\n\n return (\n <ModalForm\n closePath={tripDestinationsPath(tripId)}\n formActionPath={tripDestinationsPath(tripId)}\n formMethod=\"post\"\n saveButtonLabel=\"Save\"\n subtitle=\"Suggest a destination for your upcoming trip.\"\n title=\"Add a destination\"\n withChangeDetection\n >\n <FormContext.Consumer>\n {({ onFormChange, submit }) => (\n <Grid container direction=\"column\" spacing={2}>\n { errors.length > 0 && (\n <Grid item><Errors errors={errors} /></Grid>\n )}\n <Grid item>\n <Typography className={classes.label}>\n Where to?*\n </Typography>\n <DestinationField\n currentGooglePlaceId={location.googlePlaceId}\n currentGooglePlaceUrl={location.googlePlaceUrl}\n currentLatitude={location.latitude}\n currentLongitude={location.longitude}\n currentImage={location.googlePlaceImage}\n onChange={handleLocationChange}\n ref={inputRef}\n required\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Add a comment\n </Typography>\n <TextField\n fullWidth\n id=\"destination_comment\"\n label=\"Comment\"\n name=\"destination[comments_attributes][0][body]\"\n variant=\"outlined\"\n />\n </Grid>\n <Grid item>\n <DestinationPreview\n onError={() => dispatch({ type: 'showFetchErrorMessage' })}\n onFetch={() => dispatch({ type: 'hideAll' })}\n onLoading={() => dispatch({ type: 'hideAll' })}\n onRemove={() => dispatch({ type: 'resetForm' })}\n resourcePath={tripDestinationsPath(tripId)}\n tripId={tripId}\n location={location}\n />\n </Grid>\n {showEmptyState && (\n <Grid item container justifyContent=\"center\" data-test-id=\"emptyState\">\n <img\n className={classes.emptyStateImage}\n alt=\"Search for destinations\"\n src=\"/assets/illustrations/globe.svg\"\n />\n </Grid>\n )}\n {showFetchErrorMessage && (\n <Grid item container justifyContent=\"center\">\n <img\n className={classes.noImage}\n alt=\"No preview found\"\n src=\"/assets/illustrations/map.svg\"\n />\n <Typography>\n We can't preview that location but you can still save if you like.\n </Typography>\n </Grid>\n )}\n </Grid>\n )}\n </FormContext.Consumer>\n </ModalForm>\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewDestinationPage);\n","import React, { useState } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { hocRailsAction } from \"../../Document\";\nimport Errors from \"../../shared/Errors\";\nimport ModalForm from \"../../shared/ModalForm\";\nimport ImageUploader from '../../shared/ImageUploader';\nimport RichTextEditor from '../../shared/RichTextEditor';\nimport InputWithCharacterCounter from '../../shared/InputWithCharacterCounter';\nimport * as routes from '../../../routes';\nimport { GlobalTrip } from \"../../shared/TripTypes\";\nimport { EstimatedTravelerCount, UpperImage } from \"./NewCreationForm/ThirdStepTripForm\";\nimport TripTypesSelection from './NewCreationForm/TripTypesSelection';\n\ntype RenewedTripFormEditPageProps = {\n trip?: GlobalTrip,\n currentUserId?: string,\n errors: string[],\n};\n\nconst {\n tripPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n headLine: {\n marginTop: theme.spacing(3),\n },\n title: {\n textAlign: 'center',\n },\n blurbWrapper: {\n marginTop: theme.spacing(2),\n },\n uploaderContainer: {\n marginTop: 12,\n },\n tripName: {\n lineHeight: '24px',\n marginBottom: theme.spacing(1),\n },\n tripNameInput : {\n borderWidth: '1px',\n },\n}));\n\nconst RenewedTripFormEditPage = ({\n trip,\n errors = [],\n}: RenewedTripFormEditPageProps) => {\n const [description, setDescription] = useState(trip?.blurb);\n const classes = useStyles();\n const closePath = () => ( tripPath(trip.id) );\n\n const formActionPath = tripPath(trip.id);\n\n const defaultTripName = trip.name || 'Untitled trip';\n const setDefaultName = (field) => {\n if (field.value.trim() === '') {\n field.value = defaultTripName;\n }\n };\n const CHARACTER_LIMIT = 100;\n\n return (\n <ModalForm\n title={\"Trip details\"}\n titleClassName={classes.title}\n closePath={closePath()}\n formActionPath={formActionPath}\n formMethod={\"patch\"}\n saveButtonLabel=\"Save trip\"\n upperImage={<UpperImage />}\n >\n <Grid container spacing={2} direction=\"column\">\n {errors?.length > 0 && (\n <Grid item>\n <Errors errors={errors} />\n </Grid>\n )}\n <Grid item>\n <Typography variant=\"h3\" className={classes.tripName}>\n Trip name\n </Typography>\n <InputWithCharacterCounter\n characterLimit={CHARACTER_LIMIT}\n className={classes.tripNameInput}\n defaultBlurValue={defaultTripName}\n defaultValue={defaultTripName}\n focused\n fullWidth\n noLabel\n name=\"trip[name]\"\n onTextFieldBlur={setDefaultName}\n />\n </Grid>\n </Grid>\n <div data-test-id=\"tripDescription\" className={classes.blurbWrapper}>\n <RichTextEditor\n defaultValue={trip?.blurb}\n onChange={(data) => setDescription(data)}\n placeholder=\"What’s the plan for this trip? Feel free to add bullet points, drop in some links, or embed photos and videos right here for other travelers to see.\"\n />\n <input type=\"hidden\" name=\"trip[blurb]\" value={description} />\n </div>\n <TripTypesSelection tripTypes={trip.tripTypes} />\n <EstimatedTravelerCount estimatedTraveler={trip.estimatedTravelers} />\n <Grid container spacing={2} direction=\"column\">\n <Grid item container direction=\"column\" spacing={1}>\n <Grid item>\n <Typography variant=\"h3\" className={classes.headLine}>\n Add cover photo\n </Typography>\n </Grid>\n <Grid item>\n <Typography>\n Cover photos help your group get excited about where you’re headed.\n </Typography>\n </Grid>\n <Grid item className={classes.uploaderContainer}>\n <ImageUploader\n defaultImage='https://res.cloudinary.com/troupe/image/upload/c_fill,h_416,q_auto:good,w_1120/v1612306537/manual-trips/default/cover_agiagz.jpg'\n forcedAspectRatio={2.2}\n image={trip?.coverPhotos?.original}\n inputName=\"trip[image_url]\"\n isFullSize\n />\n </Grid>\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(RenewedTripFormEditPage);\n","import React from 'react';\nimport pluralize from 'pluralize';\nimport {\n Avatar,\n Container,\n Grid,\n Typography,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { GlobalTrip } from '../../shared/TripTypes';\n\nconst useStyles = makeStyles(theme => ({\n traveler: {\n border: '1px solid white',\n background: '#0D2F45',\n marginLeft: `-${theme.spacing(2)}`,\n fontSize: 14,\n fontWeight: '600',\n height: theme.spacing(4),\n width: theme.spacing(4),\n },\n travelerCount: {\n color: 'white',\n display: 'flex',\n alignItems: 'center',\n paddingTop: `${theme.spacing(3)} !important`,\n },\n travelerGroup: {\n marginTop: theme.spacing(2),\n display: 'flex',\n paddingLeft: theme.spacing(4),\n },\n}));\n\ntype TravelersAvatarsProps = {\n trip: GlobalTrip,\n}\n\nconst TravelersAvatars = ({\n trip,\n}: TravelersAvatarsProps) => {\n const classes = useStyles();\n const tripDisplayedAvatars = ( trip : GlobalTrip ) : number => (\n trip.previewTravelers.length + trip.guests.length\n );\n\n const renderGuestAvatars = ( trip : GlobalTrip) =>{\n const guestToRender = trip.previewTravelers.length < 3 ? trip.guests.slice(0, 3 - trip.previewTravelers.length) : [];\n return(\n guestToRender.map( guest => (\n <Avatar\n className={classes.traveler}\n key={guest.uuid}\n data-test-id='guest-avatar'\n >\n <img\n alt=\"guest avatar\"\n src='/assets/guest_avatar.svg'\n style={{maxWidth: '100%', maxHeight: '100%'}}\n />\n </Avatar>\n ))\n )\n };\n\n return (\n <Container>\n <Grid container spacing={1} direction=\"row\">\n <Grid item className={classes.travelerGroup}>\n {trip.previewTravelers.map((traveler) => (\n <Avatar key={traveler.id} className={classes.traveler} src={traveler.avatarUrl} data-test-id='traveler-avatar'/>\n ))}\n {\n renderGuestAvatars(trip)\n }\n {trip.travelersCount > tripDisplayedAvatars(trip) && (\n <Avatar className={classes.traveler} data-test-id='overflow-avatar'>\n {'+' + (trip.travelersCount - tripDisplayedAvatars(trip))}\n </Avatar>\n )}\n </Grid>\n <Grid item className={classes.travelerCount} data-test-id='travelers-total'>\n <Typography>{trip.travelersCount} {pluralize('traveler', trip.travelersCount)} total</Typography>\n </Grid>\n </Grid>\n </Container>\n );\n};\n\nexport default TravelersAvatars;\n","import React, { useState } from \"react\";\nimport {\n ActivityType,\n} from \"../../../../shared/TripObjectTypes\";\nimport {\n Box,\n Divider,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport TripObject, { Variation } from \"../../../../shared/TripObject\";\nimport ActionsButtonGroup from \"../../../../shared/ActionsButtonGroup\";\nimport Button from \"../../../../buttons/Chip\";\nimport CommentIcon from '@mui/icons-material/Comment';\nimport CommentsLink from \"../shared/CommentsLink\";\nimport CategoryLabel from \"../shared/CategoryLabel\";\nimport { useTheme } from \"@mui/styles\";\nimport TripObjectLink, { EventTrackerType } from \"../../../../shared/TripObjectLink\";\nimport SelectButton from \"../../../../buttons/SelectButton\";\nimport SentimentButtons from '../../microsite/shared/SentimentButtons';\nimport RemoveActivityFromGroupButton from \"./Activity/RemoveActivityFromGroupButton\";\nimport ActivityVotingSummaryDialog from './Activity/ActivityVotingSummaryDialog';\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport * as routes from '../../../../../routes';\nimport Header from \"./Activity/Header\";\nimport ActivityGroupsTitles from \"./Activity/ActivityGroupsTitles\";\n\nconst {\n tripDeleteActivityPath,\n editTripActivityPath,\n tripRemoveActivityPath,\n tripActivityVotesPath,\n} = routes;\n\ntype StyleProps = {\n isCarouselItem: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n activityCardImage: {\n display: 'block',\n height: \"100%\",\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n height: '172px',\n },\n objectFit: 'contain',\n objectPosition: 'center',\n background: '#F4F5FF',\n },\n activityLink: {\n display: 'inline-block',\n zIndex: 2,\n },\n bottomInfoContainer: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n googleLink: {\n display: 'inline-block',\n zIndex: 2,\n },\n infoContainer: {\n width: '100%',\n paddingTop: theme.spacing(1),\n minHeight: '100px',\n [theme.breakpoints.up('sm')]: {\n height: '100%',\n },\n },\n fallbackImageObjectFit: {\n objectFit: 'fill',\n },\n nonFallbackImageObjectFit: {\n objectFit: 'cover',\n },\n commentButton: {\n zIndex: 2,\n height: '32px !important',\n },\n nonSearchPageImageSize: {\n [theme.breakpoints.up('sm')]: {\n height: '368px',\n },\n },\n root: {\n display: 'block',\n width: \"100%\",\n [theme.breakpoints.up('sm')]: {\n minHeight: ({isCarouselItem}) => isCarouselItem ? 'auto' : '368px',\n height: '100%',\n },\n [theme.breakpoints.down('sm')]: {\n height: theme.spacing(21),\n },\n objectPosition: 'center',\n background: '#F4F5FF',\n },\n cardVariationImage: {\n maxHeight: 200,\n },\n wrapper: {\n width: '100%',\n height: '100%',\n position: 'relative',\n },\n fullHeight: {\n [theme.breakpoints.up('sm')]: {\n height: '100%',\n },\n },\n commentsContainer: {\n justifyContent: 'space-between',\n alignItems: 'center',\n flexDirection: 'row',\n width: '100%',\n marginTop: 'auto',\n },\n voteBox: {\n justifyContent: 'space-between',\n },\n commentBox: {\n whiteSpace: 'nowrap',\n justifyContent: 'flex-end',\n },\n tripActivity: {\n [theme.breakpoints.up('sm')]: {\n minHeight: '368px',\n height: '100%',\n },\n [theme.breakpoints.down('sm')]: {\n minHeight: ({isCarouselItem}) => isCarouselItem ? '368px' : '442px',\n height: ({isCarouselItem}) => isCarouselItem ? '368px' : 'auto',\n },\n },\n divider: {\n borderColor: '#e6e7e8',\n width:'100%',\n padding: theme.spacing(1),\n },\n externalButtons: {\n flexDirection: 'row',\n padding: '16px 0px 16px 0',\n },\n selectButtonWrapper: {\n position: 'absolute',\n bottom: 0,\n marginBottom: theme.spacing(2),\n width: '62%',\n },\n verticalActions: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n commentButtonContainer: {\n textAlign: 'right',\n },\n}));\n\ntype ActivityProps = {\n activity: ActivityType,\n activityGroupId?: string,\n activityTracker?: EventTrackerType,\n setActivityComment?: () => void,\n displayActivityLinks?: boolean,\n displayCommentButton?: boolean,\n displaySelectButton?: boolean,\n isCarouselItem?: boolean,\n isPlanner?: boolean,\n isSelectedActivity?: boolean,\n onActivityClick?: () => void,\n showActions?: boolean,\n linkToComment?: string,\n groupPermapage?: boolean,\n variation?: Variation,\n showSentiments?: boolean,\n showGroupsTitles?: boolean,\n};\n\nexport const Activity = ({\n activity,\n activityGroupId,\n activityTracker,\n setActivityComment,\n displayCommentButton = false,\n displaySelectButton = false,\n displayActivityLinks = true,\n isCarouselItem = false,\n isPlanner,\n isSelectedActivity = false,\n onActivityClick,\n showActions = false,\n linkToComment,\n groupPermapage = false,\n variation = null,\n showSentiments = true,\n showGroupsTitles = false,\n}: ActivityProps) => {\n const classes = useStyles({ isCarouselItem });\n const [imageSource, setImageSource] = useState(activity.image);\n const fallbackSource = \"/assets/activity_fallback.svg\";\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const [dialogOpen, setDialogOpen] = useState(false);\n\n const activityRankLabels = [\n { icon: \"HeartEyes\", iconExt: 'png', label: \"Love\", shortLabel: \"Love\", value: \"love\" },\n { icon: \"SlightSmile\", iconExt: 'png', label: \"Like\", shortLabel: \"Like\", value: \"like\" },\n { icon: \"ThumbsDown\", iconExt: 'png', label: \"Pass\", shortLabel: \"Pass\", value: \"pass\" },\n ];\n\n const tripObjectHeader = (prop: { showActions: boolean, groupPermapage?: boolean }): JSX.Element => {\n if(!showActions) { return <></> }\n if(groupPermapage) {\n return <>\n <RemoveActivityFromGroupButton\n actionPath={tripRemoveActivityPath(activity.tripId, activityGroupId, activity.id)}\n />\n </>\n }\n\n const deleteDialogAdditionalMessage = (groupsTitles: string[], hasItineraryEvent: boolean) => {\n if(groupsTitles?.length === 0 && !hasItineraryEvent) { return <></> }\n\n return <>\n {hasItineraryEvent && (\n <Box pt={3} data-test-id='events-message'>\n <Typography>This activity will disappear from your itinerary.</Typography>\n </Box>\n )}\n {groupsTitles?.length > 0 && (\n <Box pt={3} data-test-id='groups-titles-message'>\n <Typography>This activity will also disappear from the following groups:</Typography>\n <Box pt={1}>\n <ActivityGroupsTitles expanded titles={groupsTitles} />\n </Box>\n </Box>\n )}\n </>\n }\n\n return (\n <ActionsButtonGroup\n deleteDialogAdditionalMessage={\n deleteDialogAdditionalMessage(activity.groupsTitles, activity.hasItineraryEvent)\n }\n deletePath={tripDeleteActivityPath(activity.tripId, activity.id)}\n editPath={editTripActivityPath(activity.tripId, activity.id)}\n resourceName=\"activity\"\n testId=\"activity-actions\"\n />\n )\n };\n\n return <>\n <TripObject\n anchor={`activity_${activity.id}`}\n noMargin\n className={classes.tripActivity}\n testId=\"trip-activity\"\n isClickable={true}\n onTripObjectClick={onActivityClick}\n linkHref={linkToComment}\n header={tripObjectHeader({showActions, groupPermapage})}\n variation={variation}\n visual={\n <>\n <div className={classes.fullHeight}>\n <div className={classes.wrapper}>\n <img\n data-test-id=\"activityImage\"\n onError={() => setImageSource(fallbackSource)}\n className={\n clsx(\n classes.root,\n classes.nonSearchPageImageSize,\n {\n [classes.fallbackImageObjectFit]: !activity.image,\n },\n {\n [classes.nonFallbackImageObjectFit]: activity.image,\n [classes.cardVariationImage]: variation == Variation.Vertical,\n },\n )\n }\n src={imageSource || fallbackSource}\n />\n </div>\n </div>\n {activity.category && isMobile && (<CategoryLabel category={activity.category} imageLabel/>)}\n </>\n }\n content={\n <Grid container direction=\"column\" className={classes.infoContainer} data-test-id={`activity_${activity.id}`}>\n <Grid item container>\n <Header\n activity={activity}\n displayActivityLinks={displayActivityLinks}\n linkToComment={linkToComment}\n onActivityClick={onActivityClick}\n showActions={showActions}\n showGroupsTitles={showGroupsTitles}\n />\n </Grid>\n {!isMobile && (\n <Grid item>\n <Divider className={classes.divider}/>\n </Grid>\n )}\n {displayActivityLinks &&\n <Grid container className={classes.externalButtons}>\n {activity.locationName &&\n <TripObjectLink\n url={activity.googlePlaceUrl}\n linkText='View on map'\n dataTestId='activity-location-link'\n />\n }\n {activity.link &&\n <TripObjectLink\n url={activity.link}\n linkText='View details'\n dataTestId='activity-link'\n eventTracker={activityTracker}\n />\n }\n </Grid>\n }\n {displaySelectButton &&\n <Grid item className={clsx({[classes.selectButtonWrapper]: !isMobile})}>\n <SelectButton\n onClick={() => onActivityClick()}\n data-test-id='select-button'\n isSelected={isSelectedActivity}\n />\n </Grid>\n }\n {showActions &&\n <Grid item container className={classes.commentsContainer}>\n <Grid item mb={1} container className={classes.voteBox}>\n {showSentiments &&\n <Grid item xs={8} container data-test-id='activity-voting-summary-dialog'>\n <ActivityVotingSummaryDialog\n isPlanner={isPlanner}\n votes={activity.activityVotes}\n votesCount={activity.votesCount}\n activityId={activity.id}\n />\n </Grid>\n }\n {displayCommentButton &&\n <Grid item xs={showSentiments ? 4 : 12} className={classes.commentBox} container>\n <CommentsLink\n commentsLink={activity.commentsPath}\n commentsCount={activity.commentsCount}\n segment={{\n tripId: activity.tripId,\n tripObjectId: activity.id,\n tripObjectType: 'activities',\n }}\n />\n </Grid>\n }\n </Grid>\n <Grid\n container\n direction=\"row\"\n className={classes.verticalActions}\n >\n {showSentiments && (\n <Grid item xs={displayCommentButton ? 9 : 12} container justifyContent=\"center\" data-test-id=\"SentimentButtons\">\n <SentimentButtons\n activityId={activity.id}\n currentUserSentiment={activity.currentUserVote}\n disabled={false}\n sentimentParamName=\"value\"\n sentimentSettingPath={tripActivityVotesPath(activity.tripId, activity.id)}\n sentiments={activityRankLabels}\n testId=\"tripActivityButtons\"\n />\n </Grid>\n )}\n {displayCommentButton &&\n <Grid item xs={showSentiments ? 3 : 12} className={classes.commentButtonContainer}>\n <Button\n className={classes.commentButton}\n onClick={() => setActivityComment()}\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: activity.id}}\n data-test-id='commentButton'\n >\n <CommentIcon/>\n </Button>\n </Grid>\n }\n </Grid>\n </Grid>\n }\n </Grid>\n }\n />\n </>;\n};\n\nexport default Activity;\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport Grid from \"@mui/material/Grid\";\nimport Label from \"../../../../../shared/Label\";\nimport Link from \"../../../../../shared/Link\";\n\ntype ActivityGroupsTitlesProps = {\n expanded?: boolean,\n titles: string[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n link: {\n color: '#3689FF',\n fontWeight: 600,\n fontSize: '12px',\n lineHeight: '24px',\n },\n linkWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n minWidth: 'fit-content',\n },\n root: {\n zIndex: 2,\n cursor: 'initial',\n width: '100%',\n '& > div': {\n overflow: 'auto',\n },\n },\n}));\n\nconst TitlesRow = ({ titles }: ActivityGroupsTitlesProps) => {\n return <>\n {titles.map((title, index) => (\n <Grid item key={index}>\n <Label label={title} />\n </Grid>\n ))}\n </>;\n};\n\nconst ActivityGroupsTitles = ({\n expanded,\n titles,\n}: ActivityGroupsTitlesProps) => {\n const classes = useStyles();\n const [collapsed, setCollapsed] = useState(!expanded);\n const labelsPerRow = 2;\n\n return (\n <Grid\n container\n spacing={1}\n alignItems=\"center\"\n className={classes.root}\n flexWrap={collapsed ? \"nowrap\" : \"wrap\"}\n >\n {expanded && <TitlesRow titles={titles} />}\n {!expanded && <>\n <TitlesRow titles={titles.slice(0, labelsPerRow)} />\n {titles.length > labelsPerRow && (\n <>\n {!collapsed && <TitlesRow titles={titles.slice(labelsPerRow)} />}\n <Grid item className={classes.linkWrapper}>\n <Link\n className={classes.link}\n onClick={() => setCollapsed(!collapsed)}\n text={collapsed ? 'See groups' : 'Hide groups'}\n />\n </Grid>\n </>\n )}\n </>}\n </Grid>\n );\n};\n\nActivityGroupsTitles.defaultProps = {\n expanded: false,\n};\n\nexport default ActivityGroupsTitles;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype ActivityImageProps = {\n imageUrl: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'block',\n width: \"100%\",\n height: \"100%\",\n [theme.breakpoints.down('sm')]: {\n height: theme.spacing(21),\n },\n objectFit: 'cover',\n objectPosition: 'center',\n background: '#F4F5FF',\n },\n small: {\n maxHeight: 200,\n },\n wrapper: {\n width: '100%',\n height: '100%',\n position: 'relative',\n },\n}));\n\nconst ActivityImage = ({\n imageUrl,\n}: ActivityImageProps) => {\n const classes = useStyles();\n const [imageSource, setImageSource] = useState(imageUrl);\n const fallbackSource = \"/assets/activity_fallback.svg\";\n\n return (\n <div className={classes.wrapper}>\n <img\n data-test-id='activity-image'\n className={clsx(\n classes.root,\n classes.small,\n )}\n onError={() => setImageSource(fallbackSource)}\n src={imageSource || fallbackSource}\n />\n </div>\n );\n};\n\nexport default ActivityImage;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Link as TitleLink, Typography } from \"@mui/material\";\nimport Linkify from \"../../../../../shared/Linkify\";\n\ntype ActivityNameProps = {\n activityName: string,\n linkToComment?: string,\n showLink?: boolean,\n onActivityClick?: () => void,\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n left: '3px',\n textAlign: 'left',\n lineHeight: '24px',\n color: 'black',\n fontSize: 18,\n fontWeight: 600,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: [18, '!important'],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: \"calc(100% - 88px)\",\n marginRight: theme.spacing(5),\n },\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n zIndex: 2,\n },\n activityNameLink: {\n '&:hover': {\n color: '#3B41B0',\n textDecoration: 'none',\n },\n },\n}));\n\nconst ActivityName = ({\n activityName,\n linkToComment,\n showLink = true,\n onActivityClick,\n}: ActivityNameProps) => {\n const classes = useStyles();\n\n return <>\n { showLink ?\n <TitleLink\n href={linkToComment}\n underline=\"none\"\n color=\"inherit\"\n className={clsx(classes.root, classes.activityNameLink)}\n data-test-id='activity-name'\n >\n <Linkify>{activityName}</Linkify>\n </TitleLink>\n :\n <Typography\n className={classes.root}\n data-test-id='activity-name-label'\n onClick={onActivityClick}\n >\n {activityName}\n </Typography>\n }\n </>\n}\nexport default ActivityName;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype SentimentIconProps = {\n icon: string,\n index: number,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n verticalAlign: \"bottom\",\n width: theme.spacing(3),\n marginRight: theme.spacing(-3),\n borderRadius: '24px',\n border: '2px solid white',\n backgroundColor: 'white',\n },\n totalVotes: {\n position: 'relative',\n '&:first-child': {\n zIndex: 3,\n },\n '&:nth-child(2)': {\n zIndex: 2,\n },\n '&:not(:last-child)': {\n paddingRight: theme.spacing(2),\n },\n '&:last-child > img': {\n borderTopRightRadius: 0,\n },\n },\n}));\n\nconst SentimentIcon = ({\n icon,\n index,\n}: SentimentIconProps) => {\n const classes = useStyles();\n\n return <>\n <span className={classes.totalVotes} key={index}>\n <img\n className={classes.icon}\n data-test-id={`${icon}-medal`}\n src={`/assets/illustrations/${icon}.png`}\n />\n </span>\n </>\n};\n\nexport default SentimentIcon;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport pluralize from 'pluralize';\nimport activitySentiments from './activitySentiments';\nimport { ActivitySentimentType } from '../../../../../../shared/TripObjectTypes';\nimport TextButton from \"../../../../../../buttons/TextButton\";\nimport SentimentIcon from \"./SentimentIcon\";\nimport textButtonColors from \"../../../../../../buttons/textButtonColors\";\n\ntype VoteResultsButtonProps = {\n votes: ActivitySentimentType,\n votesCount: number,\n onClick?: () => void,\n};\n\ntype StyleProps = {\n activityHasNoVotes: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n activeSentiments: {\n display: 'flex',\n flexWrap: 'nowrap',\n },\n votesCount: {\n marginLeft: ({activityHasNoVotes}) => activityHasNoVotes ? 0 : theme.spacing(4),\n color: textButtonColors.link.default.color,\n fontSize: theme.spacing(2),\n fontWeight: textButtonColors.link.default.fontWeight,\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n votesContainer: {\n zIndex: 2,\n },\n}));\n\nconst VoteResultsButton = ({\n votes,\n votesCount,\n onClick,\n}: VoteResultsButtonProps) => {\n const isSentimentVoted = (sentimentValue) => votes[sentimentValue].length > 0;\n const activityHasNoVotes = Object.values(votes).flat().length === 0\n const classes = useStyles({activityHasNoVotes});\n\n return (\n <TextButton\n className={classes.votesContainer}\n data-test-id=\"see-votes-button\"\n onClick={onClick}\n >\n <span className={classes.activeSentiments}>\n {activitySentiments.map(({icon, value}, index) => (\n (isSentimentVoted(value) &&\n <SentimentIcon\n icon={icon}\n index={index}\n />\n )\n ))}\n </span>\n <span className={classes.votesCount}>\n View {votesCount} {pluralize('vote', votesCount)}\n </span>\n </TextButton>\n );\n};\n\nexport default VoteResultsButton;\n","import React from 'react';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport clsx from 'clsx';\nimport { Grid, Typography } from '@mui/material';\nimport AvatarGroup from '../../../../../../shared/AvatarGroup';\nimport { ActivitySentimentType } from '../../../../../../shared/TripObjectTypes';\nimport ExcludesPlusOnesMessage from \"../../../../../../shared/ExcludesPlusOnesMessage\";\nimport activitySentiments from './activitySentiments';\n\ntype VotesTableProps = {\n votes: ActivitySentimentType,\n}\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n marginLeft: theme.spacing(1.8),\n fontWeight: 600,\n },\n votesRow: {\n marginBottom: theme.spacing(1),\n },\n votesCount: {\n fontSize: theme.spacing(2),\n marginRight: theme.spacing(0.6),\n },\n sentimentIcon: {\n width: 40,\n height: 40,\n },\n}));\n\nconst VotesTable = ({\n votes,\n}: VotesTableProps) => {\n const classes = useStyles();\n let showPlusOnesMessage = false;\n\n const renderVotesRow = (icon, label, sentiment) => {\n const sentimentVotes = votes[sentiment];\n const hasPlusOnes = sentimentVotes.filter(({ plusOneCount }) => plusOneCount > 0).length > 0;\n\n showPlusOnesMessage = showPlusOnesMessage || hasPlusOnes;\n\n return (\n <Grid container key={sentiment} spacing={1}>\n <Grid item xs={5} sx={{display: 'inline-flex'}} alignItems=\"center\">\n <img data-test-id={icon} className={classes.sentimentIcon} src={`/assets/illustrations/${icon}.png`} />\n <Typography data-test-id={`${sentiment}-count`} className={clsx(classes.label, classes.votesCount)}>\n {`${label} (${sentimentVotes.length})`}{hasPlusOnes && '*'}\n </Typography>\n </Grid>\n <Grid item data-test-id={`${sentiment}-avatars`} >\n <AvatarGroup max={5} avatars={sentimentVotes} />\n </Grid>\n </Grid>\n );\n };\n\n return <>\n <Grid container direction=\"column\" className={classes.votesRow} spacing={2}>\n {activitySentiments.map(({icon, label, value}, index) => (\n <Grid item>\n {renderVotesRow(icon, label, value)}\n </Grid>\n ))}\n </Grid>\n {showPlusOnesMessage && <ExcludesPlusOnesMessage />}\n </>;\n};\n\nexport default VotesTable;\n","const activitySentiments = [\n { icon: \"HeartEyes\", label: \"Love\", value: \"love\" },\n { icon: \"SlightSmile\", label: \"Like\", value: \"like\" },\n { icon: \"ThumbsDown\", label: \"Pass\", value: \"pass\" },\n];\n\nexport default activitySentiments\n","import React, { useState } from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { track as trackAnalyticsEvent } from \"../../../../../../services/analytics\";\nimport { ActivitySentimentType } from '../../../../../shared/TripObjectTypes';\nimport { DialogBottomOnMobile } from '../../../../../shared/Dialog';\nimport VotesTable from \"./ActivityVote/VotesTable\";\nimport VoteResultsButton from \"./ActivityVote/VoteResultsButton\";\n\ntype ActivityVotingSummaryDialogProps = {\n activityId: string,\n isPlanner: boolean,\n votes: ActivitySentimentType,\n votesCount: number,\n};\n\nconst ActivityVotingSummaryDialog = ({\n isPlanner,\n votes,\n votesCount,\n activityId,\n}: ActivityVotingSummaryDialogProps) => {\n const [isDialogOpen, setIsDialogOpen ] = useState(false);\n\n const onButtonClick = () => {\n setIsDialogOpen(true);\n\n trackAnalyticsEvent('See All Votes Selected', {\n isPlanner: isPlanner,\n tripObjectId: activityId,\n vertical: 'activities',\n });\n };\n\n return (\n <>\n <DialogBottomOnMobile\n title=\"Voting results\"\n fullWidth\n maxWidth=\"xs\"\n message={\n <VotesTable votes={votes}/>\n }\n isOpen={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n >\n </DialogBottomOnMobile>\n <Grid item>\n <VoteResultsButton\n votesCount={votesCount}\n votes={votes}\n onClick={() => onButtonClick()}\n />\n </Grid>\n </>\n );\n};\n\nexport default ActivityVotingSummaryDialog;\n","import React from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport Grid from \"@mui/material/Grid\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport { NumericFormat } from 'react-number-format';\nimport ActivityName from \"./ActivityName\";\nimport ActivityGroupsTitles from \"./ActivityGroupsTitles\";\nimport CategoryLabel from \"../../shared/CategoryLabel\";\nimport { ActivityType } from \"../../../../../shared/TripObjectTypes\";\nimport TextButton from \"../../../../../buttons/TextButton\";\nimport { editTripActivityPath } from '../../../../../../routes';\n\ntype HeaderProps = {\n activity: ActivityType,\n displayActivityLinks?: boolean,\n linkToComment?: string,\n onActivityClick?: () => void,\n showActions?: boolean,\n showGroupsTitles: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n addPriceText: {\n fontSize: theme.spacing(2),\n color: '#3689FF',\n '&:hover': {\n color: '#2C71D3',\n },\n },\n editIcon: {\n fontSize: theme.spacing(2),\n '&:hover': {\n textDecoration: [\"underline\",\"!important\"],\n },\n marginRight: theme.spacing(1),\n zIndex: 2,\n },\n priceText: {\n fontSize: theme.spacing(2),\n color: '#272727',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n}));\n\nconst Header = ({\n activity,\n displayActivityLinks,\n linkToComment,\n onActivityClick,\n showActions,\n showGroupsTitles,\n}: HeaderProps) => {\n const classes = useStyles();\n const priceText = parseFloat(activity.price).toFixed(2).replace(/\\.00$/,'')\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const wrapWithLink = (component) => {\n const onButtonClick = () => {\n window.location.replace(editTripActivityPath(activity.tripId, activity.id) + '?focus=price');\n };\n\n return (\n <>\n <TextButton\n data-test-id=\"activity-edit-pricing\"\n className={classes.editIcon}\n onClick={() => onButtonClick()}\n >\n {component}\n </TextButton>\n </>\n );\n };\n\n return (\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n {activity.category && !isMobile && (<CategoryLabel category={activity.category}/>)}\n </Grid>\n <Grid item>\n <ActivityName\n activityName={activity.name}\n linkToComment={linkToComment}\n showLink={displayActivityLinks}\n onActivityClick={onActivityClick}\n />\n </Grid>\n {!activity.price && showActions && (\n <Grid item>\n {wrapWithLink(\n <span data-test-id='add-pricing' className={classes.addPriceText}>\n <EditIcon fontSize=\"small\" className={classes.editIcon}/>\n Add pricing\n </span>,\n )}\n </Grid>\n )}\n {activity.price && (\n <Grid item>\n <NumericFormat\n className={classes.priceText}\n value={priceText}\n displayType={'text'}\n decimalScale={2}\n fixedDecimalScale={Number(priceText) % 1 !== 0}\n thousandSeparator={true}\n prefix={'$'}\n suffix={' per person'}\n />\n </Grid>\n )}\n {showGroupsTitles && activity.groupsTitles?.length > 0 && (\n <Grid item container>\n <ActivityGroupsTitles titles={activity.groupsTitles} />\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default Header;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ButtonGroup,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport ConfirmationDialog from \"../../../../../shared/ConfirmationDialog\";\nimport CloseIcon from '@mui/icons-material/Close';\n\ntype RemoveActivityFromGroupButtonProps = {\n actionPath: string,\n};\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'absolute',\n zIndex: 2,\n right: theme.spacing(2),\n top: theme.spacing(2),\n },\n button: {\n height: 32,\n width: 32,\n padding: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n}));\n\nconst RemoveActivityFromGroupButton = ({\n actionPath,\n}: RemoveActivityFromGroupButtonProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n\n return <>\n <Box className={classes.root}>\n <ButtonGroup\n classes={{\n groupedOutlined: classes.buttonGroup,\n }}\n disableElevation\n variant=\"outlined\"\n size=\"small\"\n >\n <Button\n data-test-id=\"deletePollButton\"\n onClick={() => setDialogOpen(true)}\n className={classes.button}\n >\n <CloseIcon fontSize=\"small\"/>\n </Button>\n </ButtonGroup>\n <ConfirmationDialog\n actionMethod=\"PATCH\"\n actionPath={actionPath}\n actionText=\"Remove\"\n fullWidthButtons\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n title=\"Remove this activity?\"\n message=\"This will remove the activity from the group, but not delete the activity itself.\"\n />\n </Box>\n </>\n};\n\nexport default RemoveActivityFromGroupButton;\n","import React from \"react\";\nimport {Grid, TextField, Typography} from \"@mui/material\";\nimport { ActivityGroupType } from \"../../../shared/TripObjectTypes\";\nimport InputWithCharacterCounter from \"../../../shared/InputWithCharacterCounter\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport { hocRailsAction } from \"../../../Document\";\nimport * as routes from \"../../../../routes\"\nimport Errors from \"../../../../components/shared/Errors\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst {\n tripActivityGroupPath,\n tripActivityGroupsPath,\n} = routes;\n\ntype ActivityGroupEditFormProps = {\n activityGroup: ActivityGroupType,\n errors?: string[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n}))\n\nconst ActivityGroupEditForm = ({\n activityGroup,\n errors,\n}: ActivityGroupEditFormProps) => {\n const classes = useStyles();\n\n return (\n <ModalForm\n closePath={tripActivityGroupsPath(activityGroup.tripId)}\n formActionPath={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n withChangeDetection\n formMethod=\"patch\"\n title=\"Edit activity group\"\n data-test-id='edit-activity-group'\n subtitle=\"Edit the details for this activity group.\"\n >\n <Grid container spacing={2} direction=\"column\">\n {errors && (\n <Grid item>\n <Errors errors={errors} />\n </Grid>\n )}\n <Grid item>\n <Typography className={classes.label}>\n Group Name\n </Typography>\n <InputWithCharacterCounter\n defaultValue={activityGroup.title}\n name=\"activity_group[title]\"\n noLabel\n focused\n fullWidth\n characterLimit={100}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Description\n </Typography>\n <InputWithCharacterCounter\n defaultValue={activityGroup.description}\n name=\"activity_group[description]\"\n placeholder=\"Add a group description\"\n noLabel\n characterLimit={150}\n fullWidth\n />\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(ActivityGroupEditForm);\n","import React, { useState } from \"react\";\nimport withMicrositeLayout from \"./withLayout\";\nimport { ActivityGroupType } from \"../../../shared/TripObjectTypes\";\nimport MainContent from \"./ActivityGroupPage/MainContent\";\nimport SideBarContent from \"./ActivityGroupPage/SideBarContent\";\nimport FullscreenMapView from './shared/ActivitiesMap/FullscreenMapView';\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport MobileMapButton from '../../../shared/MapView/MobileMapButton';\nimport {\n ActivityFilterContext,\n ActivityFilterContextType,\n ActivitySortingContext,\n ActivitySortingContextType,\n} from \"../../../shared/ActivityFilterContext\";\n\ntype ActivityGroupPageProps = {\n activityGroup: ActivityGroupType,\n isPlanner: boolean,\n filterContextProps: ActivityFilterContextType,\n sortingContextProps: ActivitySortingContextType,\n};\n\nconst ActivityGroupPage = ({\n activityGroup,\n isPlanner,\n filterContextProps,\n sortingContextProps,\n}: ActivityGroupPageProps) => {\n const [fullscreenMap, setFullscreenMap] = useState(false);\n const activitiesWithCoords = activityGroup.activitiesSelected.filter((activity) => activity.longitude && activity.latitude);\n\n return <>\n <ActivityFilterContext.Provider value={filterContextProps}>\n <ActivitySortingContext.Provider value={sortingContextProps}>\n {fullscreenMap ? (\n <FullscreenMapView\n activities={activitiesWithCoords}\n onListButtonClick={() => setFullscreenMap(false)}\n />\n ) : (\n <>\n <SideBarPage\n mainContent={\n <MainContent\n activityGroup={activityGroup}\n isPlanner={isPlanner}\n />\n }\n sideBarContent={\n <SideBarContent\n activities={activityGroup.activitiesSelected}\n onExpandMap={() => setFullscreenMap(true)}\n />\n }\n />\n {activitiesWithCoords.length > 0 && (\n <MobileMapButton onClick={() => setFullscreenMap(true)} source='activities' />\n )}\n </>\n )}\n </ActivitySortingContext.Provider>\n </ActivityFilterContext.Provider>\n </>\n};\n\nexport default withMicrositeLayout(ActivityGroupPage, { fluid: true });\n","import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ButtonGroup, IconButton, Menu, MenuItem, Tooltip,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport DeleteConfirmationDialog from \"../../../../shared/DeleteConfirmationDialog\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\n\ntype ActivityGroupActionsButtonGroupProps = {\n deletePath: string,\n disableDeleteButton?: boolean,\n editPath: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n top: theme.spacing(2),\n right: theme.spacing(2),\n },\n button: {\n height: 30,\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n '&:hover': {\n backgroundColor: '#F6F6F6',\n border: '1px solid #B4B9BC',\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n buttonDisabled: {\n color: `${theme.palette.general.background.disabled} !important`,\n '&:focus': {\n boxShadow: 'none !important',\n outline: '0 !important',\n },\n },\n iconButton: {\n width: 32,\n height: 32,\n backgroundColor: \"#FFFFFF\",\n border: `1px solid ${theme.palette.general.background.disabled}`,\n \"&:hover\": {\n backgroundColor: '#F6F6F6',\n border: `1px solid ${theme.palette.primary.main}`,\n },\n },\n icon: {\n color: '#334351',\n },\n}));\n\nconst ActivityGroupActionsButtonGroup = ({\n deletePath,\n disableDeleteButton,\n editPath,\n}: ActivityGroupActionsButtonGroupProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const handleCloseMenu = () => setAnchorEl(null);\n const handleDeleteClick = () => {\n handleCloseMenu()\n setDialogOpen(true);\n };\n\n const goToEditPath = () => {\n window.location.href = editPath;\n };\n\n return (\n <Box className={classes.root} data-test-id='activity-group-actions-button-group'>\n <IconButton\n size=\"small\"\n onClick={(event) => setAnchorEl(event.target)}\n className={classes.iconButton}\n data-test-id=\"actionsMenu\"\n >\n <MoreHorizIcon fontSize=\"large\" className={classes.icon}/>\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseMenu}\n >\n <MenuItem data-test-id={'edit-activity-group-button'} onClick={goToEditPath} dense>\n <EditIcon fontSize=\"small\"/>\n Edit\n </MenuItem>\n <MenuItem\n data-test-id={'delete-activity-group-button'}\n onClick={handleDeleteClick}\n dense\n disabled={disableDeleteButton}\n >\n <DeleteIcon fontSize=\"small\"/>\n Delete\n </MenuItem>\n </Menu>\n <DeleteConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={deletePath}\n title='Delete this group'\n message='This will delete the group itself, but not any activities saved to the group.'\n />\n </Box>\n )\n};\n\nexport default ActivityGroupActionsButtonGroup;\n","import React, { useCallback, useContext } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { ActivityGroupType } from \"../../../../shared/TripObjectTypes\";\nimport { ActivitySortingContext } from \"../../../../shared/ActivityFilterContext\";\nimport ActivityGroupActionsButtonGroup from \"./ActivityGroupActionsButtonGroup\";\nimport ActivitiesList from \"../SuggestedActivitiesPage/ActivitiesList\";\nimport ActivitiesFilteringAndSortingBar from \"../SuggestedActivitiesPage/ActivitiesFilteringAndSortingBar\";\nimport Button from \"../../../../buttons/Button\";\nimport Breadcrumbs from \"../../../../shared/Breadcrumbs\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport responsiveText from \"../../../../../services/responsiveText\";\nimport { trackLink as trackAnalyticsEvent } from \"../../../../../services/analytics\";\nimport Linkify from \"../../../../shared/Linkify\";\nimport * as routes from '../../../../../routes';\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport CurrentSortingAndCount from \"../shared/CurrentSortingAndCount\";\n\nconst {\n tripAddActivitiesPath,\n tripActivitiesPath,\n tripActivityGroupsPath,\n tripActivityGroupPath,\n editTripActivityGroupPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n activityGroupTitle: {\n textAlign: 'left',\n lineHeight: theme.spacing(4),\n color: theme.palette.text.primary,\n fontSize: 20,\n fontWeight: 600,\n minWidth: '100%',\n overflow: 'hidden',\n },\n activityGroupSubheader: {\n marginBottom: theme.spacing(2),\n },\n note: {\n fontSize: theme.spacing(2),\n },\n}));\n\ntype MainContentProps = {\n activityGroup: ActivityGroupType,\n isPlanner: boolean,\n};\n\nconst MainContent = ({\n activityGroup,\n isPlanner,\n}: MainContentProps) => {\n const classes = useStyles();\n const noSuggestions = !activityGroup.activitiesSelected.length;\n const addActivityToActivityGroupText = responsiveText('+ Add', '+ Add activity');\n const activitiesAvailableEmpty = activityGroup.activitiesAvailable.length == 0;\n\n const { currentSortingLabel } = useContext(ActivitySortingContext);\n\n const tooltipTitle = () => {\n const noActivitiesCreated = activityGroup.activitiesAvailable.length === 0 && activityGroup.activitiesSelected.length === 0\n if(noActivitiesCreated) {\n return \"Add activities to get this group rolling.\"\n }\n\n const allActivitiesAdded = activityGroup.activitiesAvailable.length === 0 && activityGroup.activitiesSelected.length !== 0\n if(allActivitiesAdded) {\n return \"All activities from the list have been added.\"\n }\n\n return \"\";\n }\n\n const breadcrumbs = [\n {\n label: 'All activities',\n href: tripActivitiesPath(activityGroup.tripId),\n },\n {\n label: 'Groups',\n href: tripActivityGroupsPath(activityGroup.tripId),\n },\n ];\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Add Group Activity Initiated',\n {\n tripId: activityGroup.tripId,\n isPlanner: isPlanner,\n page: 'permapage',\n },\n );\n }\n }, []);\n\n return <>\n <Box my={2}>\n <Breadcrumbs\n active={activityGroup.title}\n links={breadcrumbs}\n />\n </ Box>\n <Grid\n container\n wrap=\"nowrap\"\n justifyContent=\"space-between\"\n >\n <Grid item>\n <Typography\n className={classes.activityGroupTitle}\n >\n {activityGroup.title}\n </Typography>\n </Grid>\n <Grid item ml={2}>\n <ActivityGroupActionsButtonGroup\n deletePath={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n editPath={editTripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n />\n </Grid>\n </Grid>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n my={2}\n >\n <Grid item className={classes.note}>\n <Linkify>{activityGroup.description}</Linkify>\n </Grid>\n </Grid>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n my={2}\n >\n <Grid item>\n <ActivitiesFilteringAndSortingBar\n disabled={noSuggestions}\n tripId={activityGroup.tripId}\n formPath={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n />\n </Grid>\n <Tooltip title={tooltipTitle()} >\n <Grid item>\n <Button\n data-test-id=\"add-activity\"\n href={tripAddActivitiesPath(activityGroup.tripId, activityGroup.id)}\n variant=\"primary\"\n ref={(element) => refs(element)}\n disabled={activitiesAvailableEmpty}\n >\n {addActivityToActivityGroupText}\n </Button>\n </Grid>\n </Tooltip>\n </Grid>\n {!noSuggestions && (\n <Box pt={3}>\n <CurrentSortingAndCount\n count={activityGroup.activitiesSelected.length}\n sorting={currentSortingLabel}\n type=\"activity\"\n />\n </Box>\n )}\n {!noSuggestions &&\n <ActivitiesList\n activities={activityGroup.activitiesSelected}\n activityGroupId={activityGroup.id}\n groupPermapage\n />\n }\n {noSuggestions && (\n <NoSuggestionsYet\n illustration='activity_group_fallback'\n subheading='Add some activities to get this group rolling!'\n />\n )}\n </>;\n};\n\nexport default MainContent;\n","import React from \"react\";\nimport ActivitiesMapSection from '../shared/ActivitiesMap/ActivitiesMapSection';\nimport { ActivityType } from \"../../../../shared/TripObjectTypes\";\n\ntype SideBarContentProps = {\n activities: ActivityType[],\n onExpandMap?: () => void,\n};\n\nconst SideBarContent = ({\n activities,\n onExpandMap,\n}: SideBarContentProps) => {\n const activitiesWithCoords = activities.filter((activity) => activity.longitude && activity.latitude);\n\n return <>\n {activitiesWithCoords.length > 0 && (\n <ActivitiesMapSection\n activities={activitiesWithCoords}\n onExpandMap={onExpandMap}\n />\n )}\n </>;\n};\n\nexport default SideBarContent;\n","import React from \"react\";\nimport { hocRailsAction } from \"../../../Document\";\nimport { ActivityGroupType } from \"../../../shared/TripObjectTypes\";\nimport ActivityChoosingModalForm from \"./AddActivityToActivityGroupsPage/ActivityChoosingModalForm\";\n\ntype AddActivityToActivityGroupsPageProps = {\n activityGroup: ActivityGroupType,\n refererPage: 'permapage' | 'groups_tab',\n};\n\nconst AddActivityToActivityGroupsPage = ({\n activityGroup,\n refererPage,\n}: AddActivityToActivityGroupsPageProps) => {\n\n return (\n <ActivityChoosingModalForm\n activityGroup={activityGroup}\n title=\"Add activities to\"\n refererPage={refererPage}\n subtitle={`\"${activityGroup.title}\"`}\n />\n );\n};\n\nexport default hocRailsAction(AddActivityToActivityGroupsPage);\n","import React, { useState } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Button from \"../../../../buttons/Button\";\nimport ModalForm from \"../../../../shared/ModalForm\";\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport Activity from \"../ActivitiesPage/Activity\";\nimport { ActivityGroupType, ActivityType } from \"../../../../shared/TripObjectTypes\";\nimport * as routes from '../../../../../routes';\nimport TuneIcon from \"@mui/icons-material/Tune\";\nimport CustomChip from \"../../../../buttons/CustomChip\";\n\nconst {\n tripActivityGroupPath,\n tripActivityGroupsPath,\n tripAddActivitiesUpdatePath,\n} = routes;\n\ntype ActivityChoosingModalFormProps = {\n activityGroup: ActivityGroupType,\n refererPage: 'permapage' | 'groups_tab',\n title: string,\n subtitle: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n selectedActivity: {\n border: \"2px solid #80b4fb\",\n },\n container: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n [theme.breakpoints.down(540)]: {\n width: 'calc(100vw - 16px)',\n },\n },\n title: {\n color: '#303232',\n fontSize: 18,\n lineHeight: '24px',\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n}));\n\ntype ActivityIdsInputProps = {\n selectedActivityIds: string[],\n};\n\nconst ActivityIdsInput = ({\n selectedActivityIds,\n}: ActivityIdsInputProps) => {\n return <>\n {selectedActivityIds.map((activitId, index) =>\n <input type=\"hidden\" value={activitId} name=\"activity_group[activity_ids][]\" />\n )}\n </>\n}\n\nconst ActivityChoosingModalForm = ({\n activityGroup,\n refererPage,\n subtitle,\n title,\n}: ActivityChoosingModalFormProps) => {\n const classes = useStyles();\n\n const [activityIds, setActivityIds] = useState([]);\n const [activeCategory, setActiveCategory] = useState('All')\n const [activityList, setActivityList] = useState(activityGroup.activitiesAvailable)\n\n const isSelectedActivity = (activity) => {\n return activityIds.indexOf(activity.id) > -1\n }\n\n const onClick = (activity) => {\n if(isSelectedActivity(activity)) {\n setActivityIds(activityIds.filter(activityId => activityId !== activity.id));\n } else {\n setActivityIds(activityIds => [...activityIds, activity.id]);\n }\n }\n\n const pathTo = {\n permapage: {\n closePath: tripActivityGroupPath(activityGroup.tripId, activityGroup.id),\n },\n groupsTab: {\n closePath: tripActivityGroupsPath(activityGroup.tripId),\n }\n };\n\n const categoryCount = category => {\n let count = 0\n activityGroup.activitiesAvailable.map(activity => {\n if (activity.category === category){ count++ }\n })\n return count\n }\n\n const availableCategories = () => {\n const categories = {\n All: activityGroup.activitiesAvailable.length,\n }\n activityGroup.activitiesAvailable.map(({category})=>{\n if(category) {\n categories[category] = categoryCount(category)\n }\n });\n return categories\n }\n\n const isActive = category => {\n return category === activeCategory\n }\n\n const filterActivities = (category) => {\n if (category === 'All') {return activityGroup.activitiesAvailable}\n return activityGroup.activitiesAvailable.filter( activity => {\n return activity.category === category\n })\n }\n\n const filterGroup = (category) => {\n setActiveCategory(category)\n setActivityList(filterActivities(category))\n }\n\n return (\n <ModalForm\n title={title}\n subtitle={subtitle}\n formMethod='PATCH'\n closePath={pathTo[refererPage].closePath}\n formActionPath={tripAddActivitiesUpdatePath(activityGroup.tripId, activityGroup.id)}\n useDefaultSaveButton={true}\n saveButtonLabel={`Add (${activityIds.length})`}\n disabledSubmit={activityIds.length === 0}\n >\n <FormContext.Consumer>\n {({ onFormChange }) => (<>\n <input type=\"hidden\" value={refererPage} name=\"refererPage\" />\n <ActivityIdsInput selectedActivityIds={activityIds} />\n <Box mb={4} >\n <Grid container direction=\"column\" justifyContent=\"center\">\n <Grid item container spacing={1}>\n <Grid item>\n <TuneIcon />\n </Grid>\n <Grid item>\n <Typography className={classes.title}>\n Filter by\n </Typography>\n </Grid>\n </Grid>\n <Grid item container spacing={2} className={classes.container}>\n {Object.keys(availableCategories()).sort().map((option, index) => (\n <Grid item key={index}\n >\n <div\n onClick={() => filterGroup(option)}\n data-test-id={`${option}-filter-tab`}\n >\n <CustomChip\n active={isActive(option)}\n trackEventDisabled\n >\n {option} ({availableCategories()[`${option}`]})\n </CustomChip>\n </div>\n </Grid>\n ))}\n </Grid>\n </Grid>\n </Box>\n <Box>\n <Grid container direction=\"column\">\n {activityList.map((activity, index) =>\n <React.Fragment key={activity.id}>\n <Grid\n item\n my={2}\n className={clsx(\n {[classes.selectedActivity]: isSelectedActivity(activity)},\n )}\n >\n <Activity\n activity={activity}\n displaySelectButton\n displayActivityLinks={false}\n isSelectedActivity={isSelectedActivity(activity)}\n onActivityClick={() => onClick(activity)}\n showSentiments={false}\n />\n </Grid>\n </React.Fragment>,\n )}\n </Grid>\n </Box>\n </>)}\n </FormContext.Consumer>\n </ModalForm>\n );\n};\n\nexport default ActivityChoosingModalForm;\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport axios from 'axios';\nimport withLayout from \"./withLayout\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport pluralize from 'pluralize';\nimport { FormsContext, TripSiteContext } from \"../../../Document\";\nimport Divider from \"../../../shared/Divider\";\nimport NoSuggestionsYet from \"../../../shared/NoSuggestionsYet\";\nimport Button from \"../../../buttons/Button\";\nimport { newTripBroadcastPath, tripBroadcastsPath } from \"../../../../routes\";\nimport { trackLink as trackAnalyticsEvent } from '../../../../services/analytics';\nimport { TripType } from \"../../../shared/TripTypes\";\nimport BroadcastView, { Broadcast } from \"./BroadcastsPage/BroadcastView\";\nimport FilteringAndSortingBar from './shared/FilteringAndSortingBar'\nimport MostRecentCommentBox from \"./shared/MostRecentCommentBox\";\nimport SectionHeader from './shared/SectionHeader'\nimport * as routes from '../../../../routes';\nimport Tooltip from \"../../../shared/Tooltip\";\nimport * as Sentry from \"@sentry/browser\";\n\nconst {\n tripUserBroadcastViewLogsPath,\n} = routes;\n\ntype BroadcastPageProps = {\n currentUserId: string,\n trip: TripType,\n broadcasts: Array<Broadcast>,\n currentSorting: string,\n currentSortingLabel: string,\n sortings: Array<{\n label: string,\n sortBy: string,\n }>,\n};\n\nconst useStyles = makeStyles((theme) => ({\n sortText: {\n fontWeight: 'normal',\n },\n subtitle: {\n marginTop: theme.spacing(2),\n },\n}));\n\nconst BroadcastPage = ({\n broadcasts,\n currentUserId,\n currentSorting,\n currentSortingLabel,\n sortings,\n trip,\n trip: {\n isPlanner,\n },\n}: BroadcastPageProps) => {\n const classes = useStyles();\n const { csrfToken } = useContext(FormsContext);\n\n const initialValue = Array(broadcasts.length).fill(false);\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n const newBroadcastRef = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Broadcast Initiated',\n {\n category: 'Broadcasts',\n planner: trip.isPlanner,\n tripId: trip.id,\n userId: currentUserId,\n },\n );\n }\n }, []);\n const newBroadcastLabel = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ New' : '+ New broadcast'\n\n useEffect(() => {\n if (!currentUserId) return;\n const timer = setTimeout(() => {\n axios.post(\n tripUserBroadcastViewLogsPath(trip.id),\n { authenticity_token: csrfToken },\n ).catch((error) => {\n Sentry.captureException(error);\n })\n }, 3000);\n }, []);\n\n return (\n <Box my={4}>\n <SectionHeader title=\"Broadcasts\" note=\"Here’s what you need to know about your upcoming trip.\" />\n <Grid container direction=\"column\">\n <Grid item container justifyContent=\"space-between\">\n <FilteringAndSortingBar\n data-test-id=\"broadcasts-sorting-bar\"\n vertical=\"Broadcasts\"\n currentSorting={currentSorting}\n disabled={broadcasts.length === 0}\n formPath={tripBroadcastsPath(trip.id)}\n sortByRadioGroupName=\"broadcast_filter[sort_by]\"\n sortings={sortings}\n />\n <Tooltip\n data-test-id=\"new-broadcast-tooltip\"\n title={trip.isTraveler ? '' : 'Join this trip to send a broadcast'}\n >\n <span>\n <Button\n data-test-id=\"new-broadcast-button\"\n disabled={!trip.isTraveler}\n href={newTripBroadcastPath(trip.id)}\n ref={(element) => newBroadcastRef(element)}\n >\n {newBroadcastLabel}\n </Button>\n </span>\n </Tooltip>\n </Grid>\n {broadcasts.length > 0 &&\n <Grid item container justifyContent=\"space-between\">\n <Typography className={classes.subtitle} data-test-id=\"sort-label\" variant=\"h3\">\n Sort: <span className={classes.sortText}>{currentSortingLabel}</span>\n </Typography>\n <Typography data-test-id=\"broadcasts-count\" className={classes.subtitle} variant=\"h3\">\n {`${broadcasts.length} ${pluralize('broadcast', broadcasts.length)}`}\n </Typography>\n </Grid>\n }\n </Grid>\n <Box my={2}><Divider /></Box>\n {broadcasts.map((broadcast, index) => (\n <Box my={4} key={index}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <BroadcastView\n broadcast={broadcast}\n displayCommentButton\n key={index}\n setComment={() => toggleCommentFormVisibility(index)}\n showLink\n tripId={trip.id}\n />\n </Grid>\n {(broadcast.mostRecentComment || showCommentForm[index]) && (\n <Grid item>\n <MostRecentCommentBox\n comment={broadcast.mostRecentComment}\n commentFormPath={broadcast.commentsPath}\n commentsPath={broadcast.commentsPath}\n showCommentForm={showCommentForm[index]}\n showLoadMoreCommentsButton={broadcast.commentsCount > 1}\n tripId={trip.id}\n />\n </Grid>\n )}\n </Grid>\n </Box>\n ))}\n {broadcasts.length === 0 && (\n <NoSuggestionsYet\n subheading=\"No broadcasts have been sent to your group yet.\"\n illustration='celebration'\n />\n )}\n </Box>\n );\n};\n\nexport default withLayout(BroadcastPage);\n","import React, { useCallback, useContext } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from '@mui/material';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport CommentIcon from '@mui/icons-material/Comment';\nimport { Broadcast } from \"./BroadcastView\";\nimport CommentsLink from \"../shared/CommentsLink\";\nimport ContainerLink from \"../../../../shared/ContainerLink\";\nimport ReadMore from '../../../../shared/ReadMore';\nimport Button from \"../../../../buttons/Chip\";\nimport { tripBroadcastPath } from '../../../../../routes';\nimport Reactions, { ReactionCounts } from \"../../../../shared/Reactions/Reactions\";\nimport { TripSiteContext } from \"../../../../Document\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { ADD_REACTION, GET_REACTIONS, REMOVE_REACTION } from \"../../../../../graphql/queries/reactions\";\nimport { GET_USER_DISPLAY_NAME } from \"../../../../../graphql/queries/users\";\nimport { getOperationName } from \"../../../../../graphql/utilities\";\nimport clsx from \"clsx\";\n\ntype BroadcastBodyProps = {\n broadcast: Broadcast,\n displayCommentButton?: boolean,\n setComment?: () => void,\n showLink?: boolean,\n tripId: string,\n showReactions?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n commentButton: {\n height: '32px !important',\n },\n commentButtonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n zIndex: 2,\n maxWidth: '100%',\n },\n containerLink: {\n width: '100%',\n },\n messageContainer: {\n border: '1px solid #C4C4C4',\n borderRadius: 5,\n marginTop: theme.spacing(2),\n },\n message: {\n wordBreak: 'break-word',\n whiteSpace: 'pre-wrap',\n },\n reactions: {\n position: 'absolute',\n bottom: theme.spacing(4),\n left: theme.spacing(2),\n zIndex: 2,\n },\n indexPageReactions: {\n zIndex: 2,\n margin: theme.spacing(1),\n },\n}));\n\nconst BroadcastBody = ({\n broadcast,\n displayCommentButton = false,\n setComment = () => {},\n showLink = true,\n tripId,\n showReactions = true,\n}: BroadcastBodyProps) => {\n const classes = useStyles();\n const { message, id } = broadcast;\n const { tripGid, currentUserGid } = useContext(TripSiteContext);\n\n const { loading, data } = (useQuery(GET_REACTIONS, {\n variables: { reactableId: broadcast.gid },\n })) || {};\n\n const { data: userData } = (useQuery(GET_USER_DISPLAY_NAME, {\n variables: { id: currentUserGid },\n })) || {};\n\n const refetchQueries = [getOperationName(GET_REACTIONS)];\n const [addReaction, { loading: addReactionLoading }] = useMutation(ADD_REACTION, { refetchQueries });\n const [removeReaction, { loading: removeReactionLoading }] = useMutation(REMOVE_REACTION, { refetchQueries });\n\n const onAddReaction = useCallback(({emoji, name}) => {\n addReaction({\n variables: {\n emoji,\n humanReadableName: name,\n reactableId: broadcast.gid,\n tripId: tripGid,\n },\n })\n }, [broadcast, tripGid]);\n const onRemoveReaction = useCallback(({emoji}) => {\n removeReaction({\n variables: {\n emoji,\n reactableId: broadcast.gid,\n tripId: tripGid,\n },\n })\n }, [broadcast, tripGid]);\n\n const reactions = data?.node?.reactions ?? [];\n const reactionCounts : ReactionCounts = reactions.reduce((acc, reaction) => ({\n ...acc,\n [reaction.emoji]: {\n ...reaction,\n users : reaction.users.map(user => user.displayName),\n name : reaction.humanReadableName,\n },\n }), {});\n\n const currentUserDisplayName = userData?.node?.displayName;\n\n const onContainerLinkClicked = (event) => {\n if (event.target.dataset['element'] === 'link' || event.target instanceof SVGPathElement) {\n event.preventDefault();\n }\n }\n\n const disableRippleEffectOnParent = (event) => {event.stopPropagation();}\n\n return (\n <ContainerLink\n className={classes.containerLink}\n href={tripBroadcastPath(tripId, id)}\n onClick={onContainerLinkClicked}\n showLink={showLink}\n >\n <Grid container direction=\"column\" className={classes.messageContainer}>\n <Grid item>\n <Box sx={{ p: 4 }}>\n <Typography\n className={classes.message}\n data-test-id=\"broadcast-message\"\n >\n <ReadMore\n text={message}\n lineHeight={1.4}\n readMoreCharacterLimit={300}\n showLessButton={true}\n />\n </Typography>\n </Box>\n </Grid>\n <Grid className={clsx({\n [classes.reactions]: showLink,\n [classes.indexPageReactions]: !showLink,\n })}>\n {!loading && showReactions && (\n <Reactions\n currentUserDisplayName={currentUserDisplayName}\n initialReactions={reactionCounts}\n onAddReaction={onAddReaction}\n onRemoveReaction={onRemoveReaction}\n disabled={addReactionLoading || removeReactionLoading}\n reactableId={broadcast.id}\n reactableType='Broadcast'\n isSelfReaction={broadcast.author.displayName === currentUserDisplayName}\n permapage={!showLink}\n />\n )}\n </Grid>\n {displayCommentButton && (\n <Grid item container direction=\"column\" alignItems=\"flex-end\" sx={{ px: 4, pb: 4 }}>\n <Grid item>\n <CommentsLink\n commentsLink={broadcast.commentsPath}\n commentsCount={broadcast.commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: broadcast.id,\n tripObjectType: 'broadcasts',\n }}\n />\n </Grid>\n <Grid item className={classes.commentButtonContainer}>\n <Button\n onClick={() => setComment()}\n onMouseDown={disableRippleEffectOnParent}\n className={classes.commentButton}\n data-test-id='commentButton'\n data-element='link'\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: broadcast.id}}\n >\n <CommentIcon\n data-element='link'\n />\n </Button>\n </Grid>\n </Grid>\n )}\n </Grid>\n </ContainerLink>\n );\n};\n\nexport default BroadcastBody;\n","import React from 'react';\nimport {\n Grid,\n Typography,\n} from '@mui/material';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport BroadcastBody from \"./BroadcastBody\";\nimport TimeStamp from '../../../../shared/TimeStamp';\nimport UserAvatar from '../../../../shared/UserAvatar';\nimport { TravelerProps } from '../../../../shared/TravelersVotingBox';\nimport ActionsMenu from '../../../../shared/ActionsMenu';\nimport { SyncComment } from \"../../../../shared/TripObjectTypes\";\nimport NewTripUpdatesDot from \"../TripUpdatesPage/NewTripUpdatesDot\";\nimport { tripBroadcastPath } from '../../../../../routes';\n\nexport type Broadcast = {\n author: TravelerProps,\n gid?: string,\n commentsCount?: number,\n commentsPath?: string,\n id: string,\n message: string,\n mostRecentComment?: SyncComment,\n timeStamp: number,\n isCurrentUserAuthor: boolean,\n isUnviewed: boolean,\n type: 'Broadcast',\n};\n\ntype BroadcastViewProps = {\n broadcast: Broadcast,\n displayCommentButton?: boolean,\n setComment?: () => void,\n showLink?: boolean,\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n authorName: {\n fontSize: 14,\n },\n bold: {\n fontWeight: 600,\n },\n descriptionContainer: {\n position: 'relative',\n },\n timestamp: {\n fontSize: 14,\n },\n}));\n\nconst BroadcastView = ({\n broadcast,\n displayCommentButton = false,\n tripId,\n setComment,\n showLink,\n}: BroadcastViewProps) => {\n const classes = useStyles();\n const { author, timeStamp, id, isUnviewed } = broadcast;\n\n return (\n <Grid item data-test-id=\"broadcast-item\">\n <Grid item container spacing={1}>\n <Grid item>\n <UserAvatar avatarSrc={author.avatarUrl} />\n </Grid>\n <Grid item flex={1}>\n <Grid container direction=\"column\">\n <TimeStamp className={classes.timestamp} date={timeStamp} />\n <Typography\n data-test-id=\"author-name\"\n className={classes.authorName}\n >\n <span className={classes.bold}>{author.name}</span> sent a broadcast\n </Typography>\n </Grid>\n </Grid>\n {broadcast.isCurrentUserAuthor &&\n <Grid item alignSelf=\"center\" data-test-id='display-actions-menu'>\n <ActionsMenu deletePath={tripBroadcastPath(tripId, id)} resourceName=\"broadcast\"/>\n </Grid>\n }\n {isUnviewed &&\n <Grid item xs={2} md={2} className={classes.descriptionContainer}>\n <NewTripUpdatesDot />\n </Grid>\n }\n </Grid>\n <BroadcastBody\n broadcast={broadcast}\n displayCommentButton={displayCommentButton}\n setComment={setComment}\n showLink={showLink}\n tripId={tripId}\n />\n </Grid>\n );\n};\n\nBroadcastView.defaultProps = {\n showLink: true,\n};\n\nexport default BroadcastView;\n","import React, {useContext} from \"react\";\nimport clsx from \"clsx\";\nimport {\n Divider,\n Grid,\n Link as TitleLink,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport TripObject from \"../../../../shared/TripObject\";\nimport VotingProgressBanner from '../../../../shared/VotingProgressBanner';\nimport { TripSiteContext } from '../../../../Document';\nimport {\n DestinationType,\n} from \"../../../../shared/TripObjectTypes\";\nimport RankingLabel from \"../shared/RankingLabel\";\nimport VotingSummaryDialog from \"../../../../shared/VotingSummaryDialog\";\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport { usePhasingContext } from \"../../../../../services/phasing\";\nimport rankLabels from \"../../../../shared/rankLabels\";\nimport SentimentButtons from \"../shared/SentimentButtons\";\nimport CommentIcon from '@mui/icons-material/Comment';\nimport Button from \"../../../../buttons/Chip\";\nimport CommentsLink from \"../shared/CommentsLink\";\nimport ActionsButtonGroup from \"../../../../shared/ActionsButtonGroup\";\nimport {\n addBySearchTripStaysPath,\n tripDestinationRankingsPath,\n tripDestinationPath,\n editTripDestinationPath,\n} from '../../../../../routes';\nimport TripObjectLink from \"../../../../shared/TripObjectLink\";\nimport Linkify from \"../../../../shared/Linkify\";\nimport AsyncSentimentButtons from \"../shared/AsyncSentimentButtons\";\nimport { shouldDisplayRankingLabel } from \"../../../../../services/displayRankingLabel\";\nimport ExploreStaysButton from \"../../../../shared/ExploreStaysButton\";\n\nconst useStyles = makeStyles((theme) => ({\n chosenDestination: {\n border: `2px solid ${theme.palette.general.primary}!important`,\n },\n destinationCardImage: {\n display: 'block',\n height: '270px',\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n height: '172px',\n },\n objectFit: 'cover',\n objectPosition: 'center',\n background: '#F4F5FF',\n },\n destinationName: {\n display: 'inline-block',\n position: 'relative',\n textAlign: 'left',\n lineHeight: '24px',\n color: 'black',\n fontSize: 18,\n fontWeight: 600,\n paddingBottom: theme.spacing(2),\n zIndex: 2,\n '&:hover': {\n color: '#3B41B0',\n textDecoration: [\"none\",\"!important\"],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: \"calc(100% - 88px)\",\n },\n },\n destinationLink: {\n display: 'inline-block',\n fontSize: 16,\n zIndex: 2,\n '&:hover': {\n textDecoration: [\"underline\",\"!important\"],\n },\n },\n wrapper: {\n width: '100%',\n height: '100%',\n position: 'relative',\n },\n openNewTabIcon: {\n position: 'relative',\n top: '3px',\n fontSize: '16px',\n },\n verticalActions: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n commentButton: {\n zIndex: 2,\n height: '32px !important',\n },\n commentButtonContainer: {\n textAlign: 'right',\n },\n externalButtons: {\n flexDirection: 'row',\n padding: '16px 0px 16px 0',\n },\n divider: {\n borderColor: '#e6e7e8',\n width:'100%',\n marginBottom: theme.spacing(2),\n },\n viewOnMap: {\n paddingBottom: theme.spacing(4),\n },\n}));\n\ntype DestinationProps = {\n className?: string,\n destination: DestinationType,\n displayCommentButton?: boolean,\n isChosen?: boolean,\n isClickable?: boolean,\n isPlanner?: boolean,\n hideVotes?: boolean,\n linkToComment?: string,\n showActions?: boolean,\n onDestinationClick?: () => void,\n ranking?: number,\n showVotingProgressBanner?: boolean,\n travelers?: TravelerProps[],\n setDestinationComment?: () => void,\n displayActions?: boolean,\n showCommentButton?: boolean,\n suggestionsCount?: number\n page?: 'index' | null,\n openVotingProgress?: (voteCompleted: boolean) => void,\n}\n\nconst Destination = ({\n className,\n destination,\n displayCommentButton = false,\n isChosen,\n isClickable,\n isPlanner,\n hideVotes = false,\n linkToComment,\n showActions,\n onDestinationClick,\n displayActions = false,\n ranking,\n showVotingProgressBanner = false,\n travelers,\n showCommentButton = false,\n setDestinationComment,\n suggestionsCount,\n page,\n openVotingProgress,\n}: DestinationProps) => {\n const classes = useStyles();\n const fallbackSource = \"/assets/destination_fallback.svg\";\n const { currentUserId, tripId, tripGid } = useContext(TripSiteContext);\n const destinationId = destination.uuid ?? destination.id\n const destinationGid = destination.gid ?? destination.id\n\n const { areDestinationsInVotingPhase, areDestinationsFinalized } = usePhasingContext();\n const shouldDisplayVotes = !hideVotes && (areDestinationsFinalized() || areDestinationsInVotingPhase());\n const destinationRankings = travelers?.find(traveler => traveler.userId === currentUserId )?.destinationRankings\n const queryParams = {\n latitude: destination.latitude,\n longitude: destination.longitude,\n location_name: destination.name,\n };\n\n const exploreStaysButtonUrl = addBySearchTripStaysPath(tripId, queryParams);\n\n const displayVotingProgressBanner = showVotingProgressBanner && areDestinationsInVotingPhase();\n\n return <>\n <TripObject\n anchor={`destination_${destinationId}`}\n className={clsx(\n className,\n {[classes.chosenDestination]: isChosen},\n )}\n isClickable={isClickable}\n linkHref={!onDestinationClick ? tripDestinationPath(tripId, destinationId) : undefined}\n header={\n <>\n {showActions && (\n <ActionsButtonGroup\n deletePath={tripDestinationPath(tripId, destinationId)}\n disableDeleteButton={destination.isChosen}\n editPath={editTripDestinationPath(tripId, destinationId)}\n resourceName=\"destination\"\n testId=\"destinationActions\"\n />\n )}\n </>\n }\n noMargin\n testId=\"tripDestination\"\n onTripObjectClick={onDestinationClick}\n visual={\n <>\n {shouldDisplayRankingLabel(ranking) && (<RankingLabel ranking={destination.ranking}/>)}\n <img\n alt='destination_image'\n className={classes.destinationCardImage}\n src={destination.image || fallbackSource}\n />\n </>\n }\n content={\n <>\n <Grid container direction=\"column\">\n <TitleLink\n href={tripDestinationPath(tripId, destinationId)}\n underline=\"none\"\n color=\"inherit\"\n className={classes.destinationName}\n data-test-id='destinationName'\n onClick={onDestinationClick}\n >\n <Linkify>{destination.name}</Linkify>\n </TitleLink>\n <Divider className={classes.divider}/>\n <Grid\n className={classes.viewOnMap}\n item\n >\n <TripObjectLink\n url={destination.googlePlaceUrl}\n linkText='View on map'\n dataTestId='destinationLink'\n />\n <ExploreStaysButton\n destination={destination}\n url={exploreStaysButtonUrl}\n />\n </Grid>\n {shouldDisplayVotes && <>\n <Grid container direction=\"row\" pb={2}>\n <Grid item xs={6} container >\n <VotingSummaryDialog\n isPlanner={isPlanner}\n travelers={travelers}\n objectId={destinationId}\n objectType='destinations'\n />\n </Grid>\n {isClickable &&\n <Grid item xs={6} container justifyContent=\"flex-end\">\n <CommentsLink\n commentsLink={tripDestinationPath(tripId, destinationId)}\n commentsCount={destination.commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: destination.id,\n tripObjectType: 'destinations',\n }}\n />\n </Grid>\n }\n </Grid>\n </>\n }\n </Grid>\n {!shouldDisplayVotes && isClickable &&\n <Grid container direction=\"row\">\n <Grid item xs={12} container justifyContent=\"flex-end\" pb={2}>\n <CommentsLink\n commentsLink={tripDestinationPath(tripId, destinationId)}\n commentsCount={destination.commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: destination.id,\n tripObjectType: 'destinations',\n }}\n />\n </Grid>\n </Grid>\n }\n {displayActions && (\n <>\n <Grid\n container\n direction=\"row\"\n className={classes.verticalActions}\n >\n {areDestinationsInVotingPhase() && (\n <Grid item xs={showCommentButton ? 9 : 12} container justifyContent=\"center\">\n { currentUserId ? (\n <AsyncSentimentButtons\n currentUserSentiment={destination.currentUserRanking}\n disabled={destination.isDisabled}\n page={page}\n sentiments={rankLabels}\n tripObjectGid={destinationGid}\n tripGid={tripGid}\n testId=\"tripDestinationButtons\"\n tripObjectType=\"destination\"\n openVotingProgress={openVotingProgress}\n />\n ) : (\n <SentimentButtons\n currentUserSentiment={destination.currentUserRanking}\n disabled={destination.isDisabled}\n sentimentParamName=\"position\"\n sentimentSettingPath={tripDestinationRankingsPath(tripId, destinationId)}\n sentiments={rankLabels}\n testId=\"tripDestinationButtons\"\n />\n )}\n </Grid>\n )}\n {showCommentButton && (\n <Grid item xs={areDestinationsInVotingPhase() ? 3 : 12} className={classes.commentButtonContainer}>\n <Button\n className={classes.commentButton}\n onClick={() => setDestinationComment()}\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: destination.id}}\n data-test-id='commentButton'\n >\n <CommentIcon/>\n </Button>\n </Grid>)}\n </Grid>\n </>\n )}\n </>\n }\n footer={displayVotingProgressBanner &&\n <VotingProgressBanner\n rankings={destinationRankings}\n suggestionsCount={suggestionsCount}\n />\n }\n />\n </>;\n};\n\nexport default Destination;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripItineraryDatesPath, tripItineraryDatePath } from \"../../../../routes\";\nimport { ItineraryDateType } from \"../../../shared/TripObjectTypes\";\nimport InputWithCharacterCounter from \"../../../shared/InputWithCharacterCounter\";\n\nexport type EditItineraryDateFormProps = {\n backTo: 'itineraryDatesList' | 'itineraryDatePermapage',\n itineraryDate: ItineraryDateType,\n errors?: string[],\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n dayNumber: {\n color: theme.palette.text.primary,\n fontSize: 20,\n fontWeight: 600,\n lineHeight: '32px',\n },\n date: {\n color: theme.palette.text.primary,\n fontSize: 16,\n lineHeight: '24px',\n },\n label: {\n color: theme.palette.text.primary,\n fontSize: 16,\n fontWeight: 600,\n },\n}));\n\nconst EditItineraryDateForm = ({\n backTo,\n itineraryDate,\n errors,\n tripId,\n}: EditItineraryDateFormProps) => {\n const classes = useStyles();\n\n const closePath = {\n itineraryDatesList: tripItineraryDatesPath(tripId),\n itineraryDatePermapage: tripItineraryDatePath(tripId, itineraryDate.id),\n };\n\n return (\n <ModalForm\n closePath={closePath[backTo]}\n formActionPath={tripItineraryDatePath(tripId, itineraryDate.id)}\n formMethod=\"patch\"\n saveButtonLabel='Save'\n subtitle=\"Add a description of what you'll be doing, so travelers know what to expect.\"\n title='Edit day'\n withChangeDetection\n >\n {errors && (\n <Box mb={2}>\n <Errors errors={errors} />\n </Box>\n )}\n <Grid container direction=\"column\" my={3}>\n <Grid item>\n <Typography className={classes.dayNumber}>\n Day {itineraryDate.dayNumber}\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.date}>\n {itineraryDate.formattedDate}\n </Typography>\n </Grid>\n </Grid>\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <Typography className={classes.label}>Add a description</Typography>\n </Grid>\n <Grid item>\n <input type=\"hidden\" value={document.referrer} name=\"refererPage\" />\n <InputWithCharacterCounter\n defaultValue={itineraryDate?.description}\n name=\"itinerary_date[description]\"\n noLabel\n focused\n fullWidth\n characterLimit={100}\n placeholder=\"What’s the plan for the day?\"\n />\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(EditItineraryDateForm);\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n TextField,\n Theme,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripItineraryDatePath, tripActivityEventPath } from \"../../../../routes\";\nimport { ItineraryEventType, ItineraryDateType } from \"../../../shared/TripObjectTypes\";\nimport moment from \"moment\";\nimport { isSafari, isDesktop } from \"react-device-detect\";\nimport ItineraryActivityEvent from \"./ItineraryDatePermapage/ItineraryActivityEvent\";\n\nexport type EditItineraryEventFormProps = {\n itineraryDate: ItineraryDateType,\n itineraryEvent: ItineraryEventType,\n errors?: string[]\n withChangeDetection?: boolean,\n source: 'itineraryPermapage' | 'scheduleList',\n};\n\ntype StyleProps = {\n isSafariDesktop: boolean;\n}\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n label: {\n fontWeight: 600,\n fontSize: 16,\n color: theme.palette.text.primary,\n },\n timeInput: {\n width: 191,\n height: 56,\n [theme.breakpoints.down('sm')]: {\n width: 131,\n },\n '& input': {\n // ensure placeholder text is visible on Safari desktop and that we don't break styles on iOS and other devices\n backgroundColor: ({ isSafariDesktop }) => isSafariDesktop ? theme.palette.background.default : null,\n },\n },\n}));\n\nconst EditItineraryEventForm = ({\n itineraryDate,\n itineraryEvent,\n errors,\n withChangeDetection = true,\n source,\n}: EditItineraryEventFormProps) => {\n const classes = useStyles({ isSafariDesktop: isSafari && isDesktop });\n\n const errorText = \"End time can't come before start time\";\n\n const [startTime, setStartTime] = React.useState <string> (itineraryEvent.startTime);\n const [endTime, setEndTime] = React.useState <string> (itineraryEvent.endTime);\n const [errorsState, setErrors] = React.useState <string[]> (errors);\n\n const disableSubmit = () : boolean => {\n const isStartTimeSelected = !!startTime;\n const isEndTimeSelected = !!endTime;\n return isStartTimeSelected !== isEndTimeSelected;\n }\n\n const areValidTimes = () => {\n const startTimeMoment = moment(startTime, \"HH:mm\");\n const endTimemoment = moment(endTime, \"HH:mm\");\n if (startTimeMoment > endTimemoment) {\n setErrors([errorText]);\n return false;\n }\n\n return true;\n }\n\n const onSubmit = e => {\n e.preventDefault();\n areValidTimes() && e.target.submit();\n }\n\n return (\n <ModalForm\n closePath={tripItineraryDatePath(itineraryEvent.tripId, itineraryDate.id)}\n formActionPath={tripActivityEventPath(itineraryEvent.tripId, itineraryEvent.id) + `?source=${source}`}\n formMethod=\"patch\"\n saveButtonLabel='Save'\n subtitle='Let travelers know when this activity will be happening.'\n title='Edit time'\n disabledSubmit={disableSubmit()}\n onClick={onSubmit}\n withChangeDetection={withChangeDetection}\n >\n <input type=\"hidden\" name=\"itinerary_date_id\" value={itineraryDate.id} />\n {errorsState && (\n <Box mb={2}>\n <Errors errors={errorsState} />\n </Box>\n )}\n <Grid mb={2} >\n <ItineraryActivityEvent\n itineraryDateId={itineraryDate.id}\n activityEvent={itineraryEvent}\n isClickeable\n page={'editForm'}\n />\n </Grid>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.label}>Add a time</Typography>\n </Grid>\n <Grid item container spacing={2}>\n <Grid item>\n <TextField\n id=\"start_time\"\n label=\"Start time\"\n type=\"time\"\n value={startTime}\n onChange={e => setStartTime(e.target.value)}\n name=\"itinerary_event[start_time]\"\n InputLabelProps={{\n shrink: true,\n }}\n className={classes.timeInput}\n />\n </Grid>\n <Grid item>\n <TextField\n id=\"end_time\"\n label=\"End time\"\n type=\"time\"\n value={endTime}\n onChange={e => setEndTime(e.target.value)}\n name=\"itinerary_event[end_time]\"\n InputLabelProps={{\n shrink: true,\n }}\n className={classes.timeInput}\n />\n </Grid>\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(EditItineraryEventForm);\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { hocRailsAction } from \"../../../Document\";\nimport Errors from \"../../../shared/Errors\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport { ItineraryType, ItineraryDateType, ItineraryEventType } from \"../../../shared/TripObjectTypes\";\nimport {\n tripItineraryDatePath,\n tripItineraryDatesPath,\n tripStayEventPath,\n} from '../../../../routes';\nimport ItineraryStayEvent from \"./ItineraryDatePermapage/ItineraryStayEvent\";\nimport { default as DateRangePicker } from \"../../../shared/CustomDateRangePicker\";\nimport InputWithCharacterCounter from '../../../shared/InputWithCharacterCounter';\n\ntype EditItineraryStayEventFormProps = {\n errors?: string[],\n itinerary: ItineraryType,\n itineraryDate: ItineraryDateType,\n itineraryEvent: ItineraryEventType,\n source: 'permapage' | 'scheduleList',\n};\n\nconst EditItineraryStayEventForm: React.FC<EditItineraryStayEventFormProps> = ({\n errors = [],\n itinerary,\n itineraryDate,\n itineraryEvent,\n source,\n}) => {\n const { tripId } = itineraryEvent;\n const returnPath = source === 'scheduleList' ? tripItineraryDatesPath(tripId) : tripItineraryDatePath(tripId, itineraryDate.id);\n\n return (\n <ModalForm\n closePath={returnPath}\n formMethod=\"PATCH\"\n formActionPath={`${tripStayEventPath(tripId, itineraryEvent.id)}?itinerary_date_id=${itineraryDate.id}&source=${source}`}\n subtitle=\"Let travelers know when you’ll be staying at each accommodation.\"\n title=\"Edit stay details\"\n useDefaultSaveButton\n >\n <input type=\"hidden\" name=\"itinerary_date_id\" value={itineraryDate.id} />\n <Grid container direction=\"column\" spacing={3}>\n {errors.length > 0 && (\n <Grid item>\n <Errors errors={errors} />\n </Grid>\n )}\n\n <Grid item sx={{width: '100%'}}>\n <ItineraryStayEvent stayEvent={itineraryEvent} isInModal page={'editForm'}/>\n </Grid>\n\n <Grid item>\n <Typography variant=\"h3\" pb={1}>Dates</Typography>\n <DateRangePicker\n autoComplete=\"off\"\n defaultEndValue={itineraryEvent.endDate}\n defaultStartValue={itineraryEvent.startDate}\n helperText={false}\n nameEnd=\"itinerary_event[end_date]\"\n nameStart=\"itinerary_event[start_date]\"\n allowedMinDate={itinerary.startDate}\n allowedMaxDate={itinerary.endDate}\n shouldDisableDateEnabled\n disablePast={false}\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"h3\" pb={1}>Note (optional)</Typography>\n <InputWithCharacterCounter\n defaultValue={itineraryEvent.notes}\n name=\"itinerary_event[notes]\"\n label=\"Note\"\n fullWidth\n withBorder\n noLabel\n characterLimit={250}\n />\n </Grid>\n </Grid>\n </ModalForm>\n )\n};\n\nexport default hocRailsAction(EditItineraryStayEventForm);\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withMicrositeLayout from \"./withLayout\";\nimport FinalizedPageContentHeader from \"./shared/FinalizedPageContentHeader\";\nimport ChosenTripObjectHeader from \"./shared/ChosenTripObjectHeader\";\nimport Destination from \"./DestinationPage/Destination\";\nimport Button from \"../../../buttons/Button\";\nimport * as routes from \"../../../../routes\";\nimport pluralize from 'pluralize';\nimport DateOption from \"../../../shared/DateOption\";\nimport getMostPopularDateOptions from \"../../../../services/getMostPopularDateOptions\";\nimport VotingResultsButton from \"./FinalizedTripObjectPage/VotingResultsButton\";\nimport Tooltip from \"../../../shared/Tooltip\";\nimport { DateOptionType } from \"../../../shared/TripObjectTypes\";\nimport { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport Stay from \"./HousingPage/Stay\";\nimport { ChoosingTypeTripObject } from \"../shared/TripObjectChoosingModalForm\";\nimport { usePhasingContext } from \"../../../../services/phasing\";\nimport ActivityAd, { AdContent } from \"../../../shared/ActivityAd\";\n\nconst {\n destroyConfirmationTripChosenDateOptionPath,\n destroyConfirmationTripChosenDestinationPath,\n destroyConfirmationTripChosenStayPath,\n tripChosenDateOptionNotePath,\n tripChosenDestinationNotePath,\n tripChosenStayNotePath,\n tripDestinationPath,\n tripStayPath,\n} = routes;\n\ntype FinalizedTripObjectProps = {\n activityAd?: AdContent,\n chosenTripObject: any,\n hasChosenTripObject: boolean,\n hideVotes: boolean,\n trip: { id: string, dateOptions: DateOptionType[], travelers: TravelerProps[], isPlanner: boolean },\n typeTripObject: ChoosingTypeTripObject,\n};\n\nconst useStyles = makeStyles((theme) => ({\n chooseFinalDifferentTripObjectButton: {\n marginBottom: theme.spacing(3),\n },\n chosenDateOptionActions :{\n marginTop: theme.spacing(2),\n },\n chosenTripObject: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n headerSeparator: {\n border: 'none',\n borderTop: '1px solid #c1c1c1',\n marginBottom: theme.spacing(3),\n },\n title: {\n textTransform: 'capitalize',\n fontWeight: 600,\n color: '#272727',\n [theme.breakpoints.down(\"md\")]: {\n fontSize: 20,\n },\n [theme.breakpoints.up(\"sm\")]: {\n fontSize: 24,\n },\n },\n tripObject: {\n marginTop: theme.spacing(2),\n },\n votingResultsButton: {\n marginBottom: theme.spacing(4),\n },\n}));\n\nconst FinalizedTripObjectPage = ({\n activityAd,\n chosenTripObject,\n hideVotes = false,\n hasChosenTripObject,\n typeTripObject,\n trip: { dateOptions, travelers, ...trip },\n}: FinalizedTripObjectProps) => {\n const classes = useStyles();\n const mostPopularOptionsIds = ( typeTripObject === 'dates' && getMostPopularDateOptions(dateOptions).map(option => option.id));\n const { staysState } = usePhasingContext();\n const showSerpButtons = !['finalized', 'skipped_voting_finalized'].includes(staysState) && typeTripObject !== 'stay';\n const destinationSubheading = showSerpButtons ? \"Your group’s destination has been set! Now find the perfect place to stay.\"\n : \"Woo hoo! Your group’s destination has been set.\"\n\n let destroyConfirmationTripChosenObjectPath;\n let note = 'Add any additional details you want to share with the group on this page.'\n let subheading;\n let tripChosenObjectNotePath;\n\n switch(typeTripObject) {\n case 'stay':\n destroyConfirmationTripChosenObjectPath = destroyConfirmationTripChosenStayPath\n subheading = \"Woo hoo! Your group’s stay has been set.\"\n tripChosenObjectNotePath = tripChosenStayNotePath\n break;\n case 'dates':\n destroyConfirmationTripChosenObjectPath = destroyConfirmationTripChosenDateOptionPath\n subheading = \"Woo hoo! Your group’s dates have been set.\"\n tripChosenObjectNotePath = tripChosenDateOptionNotePath\n break;\n case 'destination':\n destroyConfirmationTripChosenObjectPath = destroyConfirmationTripChosenDestinationPath\n subheading = destinationSubheading\n tripChosenObjectNotePath = tripChosenDestinationNotePath\n if (showSerpButtons) {note = \"Troupe can help you find a vacation rental by searching Stays.\"}\n break;\n };\n\n return (\n <>\n <FinalizedPageContentHeader\n heading={<span className={classes.title}>{pluralize(typeTripObject, 2)}</span> }\n subheading={subheading}\n note={note}\n showButtons={showSerpButtons}\n tripObjectType={typeTripObject}\n />\n <hr className={classes.headerSeparator} />\n {activityAd && (\n <ActivityAd\n content={activityAd}\n small\n vertical=\"Destinations\"\n />\n )}\n <ChosenTripObjectHeader\n avatarUrl={chosenTripObject.chooserAvatarUrl}\n chosenByName={chosenTripObject.chooserName}\n chosenAt={chosenTripObject.timestamp}\n isPlanner={trip.isPlanner}\n note={chosenTripObject.note}\n objectPath={tripChosenObjectNotePath(trip.id) }\n hasChosenTripObject={hasChosenTripObject}\n />\n {typeTripObject === 'stay' &&\n <Stay\n stay={chosenTripObject}\n className={classes.chosenTripObject}\n imgPath={tripStayPath(trip.id, chosenTripObject.uuid)}\n isClickable\n linkNameToProvider\n hideVotes={hideVotes}\n travelers={travelers}\n displayBookButton\n />\n }\n {typeTripObject === 'destination' &&\n <Destination\n className={classes.chosenTripObject}\n destination={chosenTripObject}\n hideVotes={hideVotes}\n isClickable\n key={chosenTripObject.id}\n linkToComment={tripDestinationPath(trip.id, chosenTripObject.id)}\n travelers={travelers}\n />\n }\n {typeTripObject === 'dates' &&\n <DateOption\n endDate={chosenTripObject.endDate}\n endDateWeekday={chosenTripObject.endDateWeekday}\n endDateYear={chosenTripObject.endDateYear}\n isMostPopular={mostPopularOptionsIds.includes(chosenTripObject.id)}\n key={chosenTripObject.id}\n linkPath={chosenTripObject.tripObjectPath}\n numNights={chosenTripObject.numNights}\n showLink\n startDate={chosenTripObject.startDate}\n startDateWeekday={chosenTripObject.startDateWeekday}\n startDateYear={chosenTripObject.startDateYear}\n travelersVotes={chosenTripObject.travelersVotes}\n />\n }\n <Grid container justifyContent=\"center\" alignItems=\"center\" className={classes.chosenDateOptionActions}>\n <Tooltip title={trip.isPlanner ? '' : `Only planners can change ${pluralize(typeTripObject, 2)}`}>\n <Grid item xs={11} md={11}>\n <Button\n className={classes.chooseFinalDifferentTripObjectButton}\n data-test-id='choose-different'\n fullWidth\n href={destroyConfirmationTripChosenObjectPath(trip.id)}\n variant=\"secondary\"\n disabled={!trip.isPlanner}\n >\n Change {typeTripObject}\n </Button>\n </Grid>\n </Tooltip>\n {!hideVotes &&\n <Grid data-test-id='voting-results-button' item xs={11} md={11}>\n {typeTripObject === 'dates' && (\n <VotingResultsButton\n className={classes.votingResultsButton}\n dateOptions={dateOptions}\n />\n )}\n </Grid>\n }\n </Grid>\n </>\n );\n};\n\nexport default withMicrositeLayout(FinalizedTripObjectPage);\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport makeStyles from \"@mui/styles/makeStyles\"\nimport Button from \"../../../../buttons/Button\";\nimport getMostPopularDateOptions from \"../../../../../services/getMostPopularDateOptions\";\nimport DateOption from \"../../../../shared/DateOption\";\n\ntype VotingResultsButtonProps = {\n dateOptions: any[],\n className?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n votingResultsButton: {\n marginBottom: theme.spacing(2),\n },\n dateOption: {\n marginBottom: theme.spacing(2),\n },\n addPadding: {\n '&:last-child': {\n paddingBottom: theme.spacing(3),\n },\n },\n}))\n\nconst VotingResultsButton = ({\n className,\n dateOptions\n}: VotingResultsButtonProps) => {\n const classes = useStyles();\n const [showDateOptions, setShowDateOptions] = useState(false);\n const mostPopularOptionsIds = getMostPopularDateOptions(dateOptions).map(option => option.id);\n\n return (\n <>\n <Button\n className={className}\n fullWidth\n onClick={() => setShowDateOptions(!showDateOptions)}\n variant=\"tertiary\"\n >\n {showDateOptions ? \"Hide\" : \"Show\"} voting results\n </Button>\n {showDateOptions && dateOptions.map((dateOption) => (\n <div className={clsx(\"anchor\", classes.addPadding)} key={dateOption.id}>\n <a id={`date_option_${dateOption.id}`} />\n <DateOption\n className={classes.dateOption}\n endDate={dateOption.endDate}\n endDateWeekday={dateOption.endDateWeekday}\n endDateYear={dateOption.endDateYear}\n isMostPopular={mostPopularOptionsIds.includes(dateOption.id)}\n key={dateOption.id}\n linkPath={dateOption.tripObjectPath}\n numNights={dateOption.numNights}\n startDate={dateOption.startDate}\n startDateWeekday={dateOption.startDateWeekday}\n startDateYear={dateOption.startDateYear}\n travelersVotes={dateOption.travelersVotes}\n />\n </div>\n ))}\n </>\n );\n};\n\nexport default VotingResultsButton;\n","import React, { FC } from \"react\";\nimport { Box, Link, Stack, Theme, Typography } from \"@mui/material\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles<Theme>((theme) => ({\n bookedBorder: {\n border: `3px solid #3b4452`,\n borderRadius: theme.spacing(.75),\n boxShadow: \"0px 0px 8px rgba(0, 0, 0, 0.15)\",\n },\n bookedText: {\n fontWeight: \"600\",\n marginLeft: theme.spacing(1),\n },\n bookedHeader: {\n color: \"#ffffff\",\n backgroundColor: \"#3b4452\",\n padding: `${theme.spacing(.8)} ${theme.spacing(1)}`,\n display: 'flex',\n flexDirection: \"row\",\n justifyContent: 'space-between',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n bookingDetails: {\n fontSize: 14,\n fontWeight: 600,\n },\n}));\ninterface BookedWrapperProps {\n children: any,\n booked: boolean,\n linkUrl?: string,\n onClick?: () => void,\n}\n\nconst BookedWrapper: FC<BookedWrapperProps> = ({ children, booked, linkUrl, onClick }) => {\n const classes = useStyles();\n\n if (!booked) {\n return children\n }\n return (\n <Box className={classes.bookedBorder} data-test-id=\"booked-wrapper\">\n <Link href={linkUrl} onClick={onClick} sx={{ cursor: linkUrl || onClick ? 'pointer' : 'auto'}} className={classes.bookedHeader}>\n <Stack direction=\"row\" alignItems=\"center\">\n <img alt=\"check mark icon\" src={\"/assets/illustrations/Yes.svg\"} />\n <Typography className={classes.bookedText}>\n Booked\n </Typography>\n </Stack>\n {linkUrl && (\n <Stack direction=\"row\" alignItems=\"center\">\n <Typography className={classes.bookingDetails}>Booking Details</Typography>\n <ChevronRightIcon fontSize=\"medium\" />\n </Stack>\n )}\n </Link>\n {children}\n </Box>\n )\n}\n\nexport default BookedWrapper\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n ButtonBase,\n Grid,\n Button,\n} from '@mui/material';\nimport StayImages from \"../Stay/StayImages\";\nimport StayName from \"../Stay/StayName\";\nimport { ExternalListingProps } from \"../../../../../shared/TripObjectTypes\";\nimport ProviderName from \"../shared/ProviderName\";\nimport { SegmentContext }from \"../../../../../Document\";\nimport TripObject, { Variation } from \"../../../../../shared/TripObject\";\nimport ListingPricing from \"../../../../stays_search/Listings/ExternalListingCard/ListingPricing\";\nimport StayRating from \"../Stay/StayRating\";\nimport ExternalListingForm from \"../../../../stays_search/ExternalListingForm\";\nimport { tripStaysPath } from \"../../../../../../routes\";\nimport { capitalize } from \"../../../../../../utils/strings\";\nimport { useStayAffiliateClickEventRef } from \"../../../../../../services/segmentEvents/useStayAffiliateClickEvent\";\nimport ShareButton from \"../../../../../shared/ShareButton\";\n\nexport type MapCardProps = {\n stay: ExternalListingProps,\n isSERP: boolean,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n borderRadius: '10px',\n maxWidth: '280px',\n border: 'none',\n boxShadow: '0px 2px 20px rgba(0, 0, 0, 0.15)',\n '& .slider-frame': {\n '& img': {\n height: '130px !important',\n },\n borderRadius: '10px 10px 0px 0px',\n },\n },\n content: {\n paddingLeft: 0,\n paddingRight: 0,\n },\n clickArea: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 1,\n },\n shareButton: {\n position: 'absolute',\n top: '8px',\n right: '8px',\n zIndex: 3,\n },\n}));\n\nconst MapCard = ({\n stay,\n isSERP,\n}: MapCardProps) => {\n const classes = useStyles();\n const { tripId } = React.useContext(SegmentContext);\n const shouldRenderCarousel = stay.images.length > 1;\n\n const segmentRef = useStayAffiliateClickEventRef({\n listingUrl: stay.publicUrl,\n targetClicked: 'card',\n });\n\n const providerButton = (\n <Button\n href={stay.publicUrl}\n target='_blank'\n variant='text'\n ref={segmentRef}\n data-test-id='external-stay-listing-button'\n sx={{ zIndex: 2 }}\n >\n <ProviderName>\n {capitalize(stay.provider)}.com\n </ProviderName>\n </Button>\n );\n\n const cardContent = (\n <Grid container direction=\"column\" px={2} py={1} spacing={1}>\n <Grid item>\n <StayName fullWidth name={stay.name} />\n </Grid>\n <Grid item>\n <ListingPricing\n available={stay.available}\n pricing={stay.pricing}\n />\n </Grid>\n <Grid item container justifyContent='space-between' alignItems=\"center\">\n <Grid item>\n <StayRating stay={stay} />\n </Grid>\n <Grid item>\n {tripId && isSERP ? (\n <ExternalListingForm\n staysPath={tripStaysPath(tripId)}\n canAddToTrip={!stay.alreadyOnTrip}\n fullWidth\n id={stay.id}\n url={stay.originalUrl}\n source={isSERP ? 'SERP search' : 'Smart Search'}\n />\n ) : (\n <>{providerButton}</>\n )}\n </Grid>\n </Grid>\n </Grid>\n );\n\n return (\n <TripObject\n className={classes.root}\n contentClassName={classes.content}\n testId='external-stay-listing'\n variation={Variation.Vertical}\n visual={<>\n <ShareButton className={classes.shareButton} url={stay.publicUrl} />\n <StayImages\n images={stay.images}\n isExternalListing\n linkHref={stay.publicUrl}\n shouldRenderCarousel={shouldRenderCarousel}\n small\n />\n </>}\n content={\n <>\n <ButtonBase\n className={classes.clickArea}\n disableRipple\n data-test-id='map-view-click-area'\n ref={segmentRef}\n href={stay.publicUrl}\n target='_blank'\n />\n {cardContent}\n </>\n }\n />\n );\n};\n\nexport default MapCard;\n","import React, { useContext } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport StayMiniView from './StayMiniView';\nimport StayNanoView from './StayNanoView';\nimport InfoWindow from \"../../../../../shared/MapView/InfoWindow\";\nimport { StayType } from \"../../../../../shared/TripObjectTypes\";\nimport { tripStayPath } from \"../../../../../../routes\";\nimport { TripSiteContext } from \"../../../../../Document\";\nimport useMapClickEventRef from \"../../../../../../services/segmentEvents/useMapClickEventRef\";\nimport { searchLocation } from \"../../../../../../services/windowLocation\";\n\ntype StayMarkerProps = {\n stay: StayType,\n active: boolean,\n lat: number,\n lng: number,\n onMarkerClick: () => void,\n onMarkerClickOut: () => void,\n variant: \"mini\" | \"nano\",\n};\n\nconst useStyles = makeStyles(({\n root: {\n '&:hover': {\n cursor: 'pointer',\n },\n },\n}));\n\nconst StayMarker = ({\n stay,\n active,\n // eslint-disable-next-line no-unused-vars\n lat,\n // eslint-disable-next-line no-unused-vars\n lng,\n onMarkerClickOut,\n onMarkerClick,\n variant,\n}: StayMarkerProps) => {\n const classes = useStyles();\n const { tripId } = useContext(TripSiteContext);\n const location = searchLocation()\n\n const mapClickRef = useMapClickEventRef('stays', stay.uuid, location);\n\n\n const InfoWindowContent = () => (\n variant === \"nano\" ? (\n <StayNanoView\n stayPath={tripStayPath(tripId, stay.uuid)}\n stayUrl={stay.publicUrl}\n images={stay.images}\n isDisabled={stay.isDisabled}\n name={stay.name}\n provider={stay.provider}\n />\n ) : (\n <StayMiniView stay={stay} />\n )\n );\n\n return (\n <>\n {active &&\n <InfoWindow onClickOut={onMarkerClickOut} position='absolute'>\n <InfoWindowContent />\n </InfoWindow>\n }\n <img\n className={classes.root}\n alt='stay_marker'\n data-test-id=\"stayMarker\"\n height=\"30px\"\n onClick={onMarkerClick}\n src=\"/assets/location_marker.png\"\n width=\"22px\"\n ref={mapClickRef}\n />\n </>\n );\n};\n\nexport default StayMarker;\n","import React, { useContext } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Grid } from '@mui/material';\nimport StayImages from \"../Stay/StayImages\";\nimport { StayNameWithLink } from \"../Stay/StayName\";\nimport StayProperties from \"../Stay/StayProperties\";\nimport StayPricing from \"../Stay/StayPricing\";\nimport StayRating from \"../Stay/StayRating\";\nimport Button from \"../../../../../buttons/Button\";\nimport { StayType } from \"../../../../../shared/TripObjectTypes\";\nimport ProviderName from \"../shared/ProviderName\";\nimport * as routes from \"../../../../../../routes\"\nimport { TripSiteContext } from \"../../../../../Document\";\n\ntype StayMiniViewProps = {\n stay: StayType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n dataContainer: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n pricing: {\n fontSize: 16,\n },\n disabled: {\n color: [\"#C0C0C0\", '!important'],\n },\n}));\n\nconst {\n tripStayPath,\n} = routes\n\nconst StayMiniView = ({\n stay,\n}: StayMiniViewProps) => {\n const classes = useStyles();\n const { tripId } = useContext(TripSiteContext)\n const shouldRenderCarousel = stay.images.length > 1 && !stay.isDisabled;\n const chosenDate = (stay.dateOptions || []).filter(date => date.isChosenDate);\n const hasChosenDate = chosenDate.length > 0;\n const chosenDatePrice = hasChosenDate ? chosenDate[0].price : null;\n\n return (\n <Grid container>\n <StayImages\n isExternalListing={false}\n images={stay.images}\n isDisabled={stay.isDisabled}\n shouldRenderCarousel={shouldRenderCarousel}\n small\n />\n <Grid container item className={classes.dataContainer} direction=\"column\" spacing={1}>\n <Grid item>\n <ProviderName>\n {stay.provider}\n </ProviderName>\n </Grid>\n <Grid className={classes.name} item>\n <StayNameWithLink\n fullWidth\n isDisabled={stay.isDisabled}\n name={stay.name}\n stayUrl={stay.publicUrl}\n />\n </Grid>\n <Grid item>\n <StayPricing\n available={stay.available}\n averagePricing={stay.averagePricing}\n className={classes.pricing}\n chosenDatePrice={chosenDatePrice}\n currency={stay.currency}\n isDisabled={stay.isDisabled}\n price={stay.price?.price || stay.price?.prices}\n pricingType={stay.pricingType}\n />\n </Grid>\n <Grid\n item\n className={stay.isDisabled ? classes.disabled : \"\"}\n container\n >\n <StayProperties stay={stay} />\n </Grid>\n <Grid item>\n <StayRating stay={stay} />\n </Grid>\n <Grid item>\n <Button fullWidth href={tripStayPath(tripId, stay.uuid)} >\n Cast your vote\n </Button>\n </Grid>\n </Grid>\n </Grid>\n );\n};\n\nexport default StayMiniView;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n Link,\n} from '@mui/material';\nimport { StayNameWithLink } from '../Stay/StayName';\nimport StayImages from '../Stay/StayImages';\nimport ProviderName from '../shared/ProviderName';\n\ntype StayNanoViewProps = {\n stayPath: string,\n stayUrl: string,\n isDisabled: boolean,\n name: string,\n images?: string[],\n provider?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n info: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n providerName: {\n paddingBottom: theme.spacing(1),\n },\n}));\n\nconst StayNanoView = ({\n stayPath,\n stayUrl,\n images,\n isDisabled,\n name,\n provider,\n}: StayNanoViewProps) => {\n const classes = useStyles();\n\n return (\n <Link\n href={stayPath}\n underline=\"none\"\n >\n <Grid container>\n <StayImages\n isExternalListing={false}\n images={images}\n isDisabled={isDisabled}\n shouldRenderCarousel={images.length > 1 && !isDisabled}\n small={true}\n />\n <Grid item className={classes.info}>\n <Grid item className={classes.providerName}>\n <ProviderName>\n {provider}\n </ProviderName>\n </Grid>\n <Grid className={classes.name} item>\n <StayNameWithLink\n fullWidth\n stayUrl={stayUrl}\n isDisabled={isDisabled}\n name={name}\n />\n </Grid>\n </Grid>\n </Grid>\n </Link>\n );\n};\n\nexport default StayNanoView;\n","import React, { useState } from \"react\";\nimport StayMarker from \"./StayMarker\";\nimport MapView from \"../../../../../shared/MapView/MapView\";\nimport { updatePosition } from \"../../../../../../services/mapPosition\";\nimport { StayType } from \"../../../../../shared/TripObjectTypes\";\n\ntype StaysMapViewProps = {\n fullscreen?: boolean,\n stays: StayType[],\n};\n\nconst StaysMapView = ({\n stays,\n fullscreen = false,\n}: StaysMapViewProps) => {\n const markers = stays?.filter((stay) => stay.longitude && stay.latitude) || [];\n const [activeMarker, setActiveMarker] = useState(null);\n\n const handleMarkerClick = (index, lat, lng, map) => {\n setActiveMarker(index);\n updatePosition(lat, lng, map);\n map.setOptions({ disableDoubleClickZoom: true });\n };\n\n const handleClickOut = (map) => {\n setActiveMarker(null);\n map.setOptions({ disableDoubleClickZoom: false });\n };\n\n return <>\n {markers.length > 0 && (\n <MapView\n markers={markers}\n renderMarker={(map, stay) =>\n <StayMarker\n stay={stay}\n active={activeMarker === stay.id}\n key={stay.id}\n lat={stay.latitude}\n lng={stay.longitude}\n onMarkerClick={() => handleMarkerClick(stay.id, stay.latitude, stay.longitude, map)}\n onMarkerClickOut={() => handleClickOut(map)}\n variant={fullscreen ? \"mini\" : \"nano\"}\n />\n }\n />\n )}\n </>;\n};\n\nexport default StaysMapView;\n","import React, {FC} from \"react\";\nimport { Box } from \"@mui/material\";\n\ninterface SelectedWrapperProps {\n children: any,\n selected: boolean,\n}\n\nconst SelectedWrapper: FC<SelectedWrapperProps> = ({ children, selected }) => {\n\n const sx = {\n borderRadius: \"8px\",\n border: '2px solid rgba(255,255,255,0)',\n }\n if (selected) {\n sx[\"border\"] = '2px solid #80b4fb'\n }\n\n return (\n <Box sx={sx} data-test-id={selected ? \"selected-wrapper\" : \"unselected-wrapper\"}>\n {children}\n </Box>\n )\n}\n\nexport default SelectedWrapper\n","import React, { useContext } from \"react\";\nimport {\n Grid,\n Link,\n Theme,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport BookButton from \"./Stay/BookButton\";\nimport StayAddress from \"./Stay/StayAddress\";\nimport StayDetails from \"./Stay/StayDetails\";\nimport StayImages from \"./Stay/StayImages\";\nimport StayPricing from \"./Stay/StayPricing\";\nimport VotingSection from \"./Stay/VotingSection\";\nimport Divider from \"../../../../shared/Divider\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\nimport RankingLabel from \"../shared/RankingLabel\";\nimport VotingSummaryDialog from '../../../../shared/VotingSummaryDialog';\nimport { usePhasingContext } from \"../../../../../services/phasing\";\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport StayContent from \"./StayContent\";\nimport CommentsLink from \"../shared/CommentsLink\";\nimport TripObject, { Variation } from \"../../../../shared/TripObject\";\nimport VotingProgressBanner from '../../../../shared/VotingProgressBanner';\nimport { TripSiteContext } from \"../../../../Document\";\nimport ActionsButtonGroup from \"../../../../shared/ActionsButtonGroup\";\nimport CommentIcon from '@mui/icons-material/Comment';\nimport Button from \"../../../../buttons/Chip\";\nimport SelectButton from '../../../../buttons/SelectButton';\nimport {\n editTripStayPath,\n tripStayPath,\n newTripStayBookingPath,\n editTripStayBookingPath,\n} from '../../../../../routes';\nimport {\n useTrackEditStayClick,\n useHandleMarkAsBookedClick\n} from \"../../../../../services/segmentEvents/useStayCardEvents\";\nimport { RANKING_SIZE } from \"../../../../../services/RankingSystem\";\nimport ShareButton from \"../../../../shared/ShareButton\";\n\ntype StyleProps = {\n showActions: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n imgLink: {\n height: '100%',\n },\n commentButton: {\n height: '32px !important',\n zIndex: 2,\n },\n commentButtonContainer: {\n textAlign: 'right',\n },\n divider: {\n borderColor: '#e6e7e8',\n width:'100%',\n padding: theme.spacing(1),\n marginTop: theme.spacing(2),\n },\n shareButton: {\n position: 'absolute',\n top: '11px',\n right: ({showActions}) => showActions ? '56px' : '16px',\n zIndex: 3,\n },\n}));\n\ntype StayProps = {\n stay: StayType,\n cardGoesToProvider?: boolean,\n className?: string,\n displayActions?: boolean,\n displayBookButton?: boolean,\n displaySelectButton?: boolean,\n hideButtons?: boolean,\n hideCommentsLink?: boolean,\n hideDateOptionsAvailability?: boolean,\n hideDetails?: boolean,\n hideVotes?: boolean,\n showVotingProgressBanner?: boolean,\n imgPath?: string,\n isClickable?: boolean,\n isNameClickable?: boolean,\n isSelected?: boolean,\n isPlanner?: boolean,\n linkNameToProvider?: boolean,\n noCarousel?: boolean,\n onStayClick?: () => void,\n onSelect?: () => void,\n showActions?: boolean,\n suggestionsCount?: number,\n travelers?: TravelerProps[],\n variation?: Variation,\n setStayComment?: () => void,\n showCommentButton?: boolean,\n page?: 'index' | 'permapage' | null,\n openVotingProgress?: (voteCompleted: boolean) => void,\n hideAddPricingLink?: boolean,\n stayMethod?: \"staysVertical\" | \"stayPermapage\" | \"itineraryPermapage\" | \"scheduleList\" | null,\n};\n\nexport const Stay = ({\n stay,\n cardGoesToProvider,\n className,\n displayBookButton = false,\n displaySelectButton = false,\n hideButtons = false,\n hideCommentsLink = false,\n hideDateOptionsAvailability,\n hideDetails,\n hideVotes = true,\n showVotingProgressBanner = false,\n imgPath,\n isClickable,\n isNameClickable = isClickable,\n isSelected = false,\n isPlanner,\n linkNameToProvider,\n noCarousel,\n onStayClick,\n onSelect = () => {},\n showActions,\n suggestionsCount,\n travelers,\n variation,\n displayActions = false,\n showCommentButton = false,\n setStayComment,\n page,\n openVotingProgress,\n hideAddPricingLink = false,\n stayMethod,\n}: StayProps) => {\n const { areStaysInVotingPhase, areStaysFinalized } = usePhasingContext();\n const { currentUserId, tripId } = useContext(TripSiteContext);\n const stayId = stay.uuid ?? stay.id\n const chosenDate = stay.dateOptions.filter(date => date.isChosenDate);\n const hasChosenDate = chosenDate.length > 0;\n const dateOptionsAvailability = hasChosenDate ? chosenDate : stay.dateOptions;\n const chosenDatePrice = hasChosenDate ? chosenDate[0].price : null;\n const shouldRenderCarousel = noCarousel === undefined && !stay.isDisabled && stay.images.length > 1\n const providerLink = cardGoesToProvider ? stay.publicUrl : undefined;\n const commentsLink = isClickable && !onStayClick && stayId ? tripStayPath(tripId, stayId) : undefined;\n const shouldDisplayVotes = !hideVotes && (areStaysInVotingPhase() || areStaysFinalized());\n const stayNameLink = commentsLink ? commentsLink : stay.publicUrl;\n const shouldDisplayRankingLabel = !!(stay.ranking && stay.ranking <= RANKING_SIZE && areStaysInVotingPhase());\n const classes = useStyles({ showActions });\n const firstStayBooking = (stay.stayBookings || []).at(0)\n\n const displayVotingProgressBanner = showVotingProgressBanner && areStaysInVotingPhase();\n const stayRankings = travelers?.find(traveler => traveler.userId === currentUserId )?.stayRankings\n\n const onEditStayClick = useTrackEditStayClick(stayId);\n\n const handleMarkAsBookedClick = useHandleMarkAsBookedClick(stayMethod);\n\n const maybeWrapWithLink = (component, withLink) => {\n if (withLink) {\n return (\n <Link\n className={classes.imgLink}\n href={imgPath}\n target={cardGoesToProvider ? '_blank' : ''}\n >\n {component}\n </Link>\n )\n }\n return component\n };\n\n const stayPricing = (stay) => {\n const price = stay.price?.price || stay.price?.prices;\n if( !hideAddPricingLink || (hideAddPricingLink && price) ) {\n return (\n <StayPricing\n available={stay.available}\n averagePricing={stay.averagePricing}\n currency={stay.currency}\n dateOptions={dateOptionsAvailability}\n hasAutomaticAvailability={stay.hasAutomaticAvailability}\n isDisabled={stay.isDisabled}\n price={price}\n chosenDatePrice={chosenDatePrice}\n pricingType={stay.pricingType}\n stayPath={stayId ? editTripStayPath(tripId, stayId) : ''}\n stayId={stayId}\n tripId={tripId}\n />\n )\n }\n };\n\n return <div>\n <div className=\"anchor\">\n <a id={`stay_${stayId}`} />\n </div>\n <TripObject\n noMargin\n isClickable={isClickable}\n linkTargetBlank={cardGoesToProvider}\n linkHref={providerLink || commentsLink}\n onTripObjectClick={onStayClick}\n className={className}\n testId=\"tripStay\"\n variation={variation}\n header={<>\n <ShareButton className={classes.shareButton} url={stay.publicUrl} />\n {showActions && (\n <ActionsButtonGroup\n deletePath={tripStayPath(tripId, stayId)}\n editPath={editTripStayPath(tripId, stayId)}\n disableDeleteButton={stay.isChosen}\n testId=\"stayActions\"\n resourceName=\"stay\"\n onEditClick={onEditStayClick}\n onMarkAsBookedClick={handleMarkAsBookedClick}\n displayMarkAsBooked={!firstStayBooking}\n newBookingPath={newTripStayBookingPath(tripId, stayId)}\n updateBookingPath={firstStayBooking ? editTripStayBookingPath(tripId, stayId, firstStayBooking.uuid) : undefined}\n />\n )}\n </>}\n visual={\n <>\n {shouldDisplayRankingLabel && (<RankingLabel ranking={stay.ranking}/>)}\n {maybeWrapWithLink(\n <StayImages\n images={stay.images}\n isDisabled={stay.isDisabled}\n shouldRenderCarousel={shouldRenderCarousel}\n small={variation === Variation.Vertical}\n />,\n imgPath,\n )}\n </>\n }\n content={\n <>\n <Grid container direction=\"column\" pb={2}>\n <StayContent\n stay={stay}\n className={className}\n hideDetails={hideDetails}\n isNameClickable={isNameClickable}\n isDisabled={stay.isDisabled}\n linkNameToProvider={linkNameToProvider}\n nameLink={stayNameLink}\n nameTargetLink={commentsLink ? null : 'blank'}\n pricing={stayPricing(stay)}\n variation={variation}\n onClick={onStayClick}\n />\n\n <Divider className={classes.divider} />\n\n {!hideButtons && (\n <Grid container>\n {!hideDateOptionsAvailability && <StayDetails page={page} publicUrl={stay.publicUrl} provider={stay.provider} />}\n {stay.googlePlaceUrl && <StayAddress googlePlaceUrl={stay.googlePlaceUrl}/>}\n </Grid>\n )}\n\n {displaySelectButton && (\n <Grid item>\n <SelectButton onClick={onSelect} isSelected={isSelected} />\n </Grid>\n )}\n\n {displayBookButton && stay.bookable && (\n <Grid item pt={1}>\n <BookButton url={stay.publicUrl} page={page} provider={stay.provider} />\n </Grid>\n )}\n\n {(shouldDisplayVotes || isClickable) && (\n <Grid\n item\n container\n justifyContent=\"space-between\"\n pt={2}\n >\n <Grid item sx={{ zIndex: 2 }}>\n {shouldDisplayVotes && (\n <VotingSummaryDialog\n isPlanner={isPlanner}\n objectType='stays'\n objectId={stayId}\n travelers={travelers}\n />\n )}\n </Grid>\n <Grid item sx={{ zIndex: 2 }}>\n {!hideCommentsLink && isClickable && (\n <CommentsLink\n commentsLink={commentsLink}\n commentsCount={stay.commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: stayId,\n tripObjectType: 'stays',\n }}\n />\n )}\n </Grid>\n </Grid>\n )}\n\n {displayActions && (\n <Grid\n item\n container\n spacing={1}\n pt={2}\n >\n {areStaysInVotingPhase() && (\n <Grid item xs={showCommentButton ? 9 : 12} container justifyContent=\"center\">\n <VotingSection stay={stay} page={page} openVotingProgress={openVotingProgress} />\n </Grid>\n )}\n {showCommentButton && (\n <Grid\n item\n xs={areStaysInVotingPhase() ? 3 : 12}\n className={classes.commentButtonContainer}\n >\n <Button\n className={classes.commentButton}\n onClick={() => setStayComment()}\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: stayId}}\n data-test-id='commentButton'\n >\n <CommentIcon/>\n </Button>\n </Grid>\n )}\n </Grid>\n )}\n </Grid>\n </>\n }\n footer={displayVotingProgressBanner &&\n <VotingProgressBanner\n rankings={stayRankings}\n suggestionsCount={suggestionsCount}\n />\n }\n />\n </div>;\n};\n\nexport default Stay;\n","import React from \"react\";\nimport Button from \"../../../../../buttons/Button\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport { useBookButtonClickedEvent } from \"../../../../../../services/segmentEvents/useBookButtonEvents\";\nimport clsx from \"clsx\";\n\ntype BookButtonProps = {\n fullWidth?: boolean,\n url: string,\n page: string,\n provider: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme>((theme) => ({\n root: {\n zIndex: 2,\n height: '40px',\n maxWidth: '75%',\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n },\n },\n fullWidth: {\n maxWidth: '100%',\n },\n}));\n\nconst BookButton = ({\n fullWidth = false,\n url,\n page,\n provider,\n}: BookButtonProps) => {\n const classes = useStyles();\n const providerText = {\n 'EXPEDIA': 'Expedia',\n 'expedia.com': 'Expedia',\n 'expedia': 'Expedia',\n 'VRBO': 'Vrbo',\n 'vrbo.com': 'Vrbo',\n 'vrbo': 'Vrbo',\n }\n const trackButtonClicked = useBookButtonClickedEvent(page, providerText[provider]);\n\n return (\n <Button\n className={clsx(classes.root,\n {\n [classes.fullWidth]: fullWidth,\n },\n )}\n href={url}\n target=\"_blank\"\n ref={trackButtonClicked}\n >\n Learn more on {providerText[provider]}\n </Button>\n );\n};\n\nexport default BookButton;\n","import React from 'react';\nimport useSegment from '../useSegment';\nimport { TripSiteContext } from \"../../components/Document\";\n\nexport const useBookButtonClickedEvent = (page, provider) => {\n const { staysState } = React.useContext(TripSiteContext);\n const { trackLinkSegment } = useSegment();\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Book CTA Clicked',\n {\n VRBO: provider === 'Vrbo',\n page,\n stayVerticalStatus: staysState,\n listingUrl: element.href,\n Expedia: provider === 'Expedia',\n buttonName: 'Learn more',\n },\n )\n }\n }, []);\n\n return buttonRef;\n};\n","import React from \"react\";\nimport TripObjectLink from \"../../../../../shared/TripObjectLink\";\n\ntype StayAddressProps = {\n googlePlaceUrl: string,\n};\n\nconst StayAddress = ({\n googlePlaceUrl,\n}: StayAddressProps) => {\n\n return (\n <TripObjectLink\n url={googlePlaceUrl}\n linkText='View on map'\n dataTestId='stay-address-link'\n />\n );\n};\n\nexport default StayAddress;\n","import React, { useContext } from \"react\";\nimport { TripSiteContext } from \"../../../../../Document\";\nimport TripObjectLink from \"../../../../../shared/TripObjectLink\";\nimport useSegment from \"../../../../../../services/useSegment\";\n\ntype StayDetailsProps = {\n page: string,\n provider: string,\n publicUrl: string,\n};\n\nconst StayDetails = ({\n page,\n provider,\n publicUrl,\n}: StayDetailsProps) => {\n const linkText = () => {\n switch (provider) {\n case 'VRBO':\n return 'View on Vrbo';\n case 'EXPEDIA':\n return 'View on Expedia';\n default:\n return 'View on source';\n }\n };\n const { trackSegment } = useSegment();\n const { staysState } = useContext(TripSiteContext);\n\n const onClick = () => {\n trackSegment(\n 'View Source Link Clicked',\n {\n page,\n source: provider,\n stayVerticalStatus: staysState,\n listingURL: publicUrl,\n },\n )\n };\n\n return (\n <TripObjectLink\n url={publicUrl}\n linkText={linkText()}\n dataTestId='stay-details-link'\n onClick={onClick}\n />\n )\n};\n\nexport default StayDetails;\n","import React from \"react\";\nimport StayImage from \"./StayImages/StayImage\";\nimport ImagesCarousel from \"../../../../../shared/ImagesCarousel\";\nimport {useStayAffiliateClickEventRef} from \"../../../../../../services/segmentEvents/useStayAffiliateClickEvent\";\n\ntype StayImagesProps = {\n images: string[],\n isDisabled?: boolean,\n isExternalListing?: boolean,\n linkHref?: string,\n shouldRenderCarousel?: boolean,\n small?: boolean,\n};\n\nconst StayImages = ({\n images,\n isDisabled,\n isExternalListing,\n linkHref,\n shouldRenderCarousel,\n small,\n}: StayImagesProps) => {\n const segmentRef = useStayAffiliateClickEventRef({\n listingUrl: linkHref,\n targetClicked: 'image',\n });\n\n return (\n shouldRenderCarousel ? (\n <ImagesCarousel\n changeImageSize={isExternalListing}\n images={images}\n linkHref={linkHref}\n small={small}\n segmentRef={isExternalListing && segmentRef}\n />\n ) : (\n <StayImage\n disabled={isDisabled}\n imageUrl={images[0]}\n small={small}\n />\n )\n );\n};\n\nexport default StayImages;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Typography } from \"@mui/material\";\n\ntype StayImageProps = {\n disabled: boolean,\n imageUrl?: string,\n small?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n disabledGradient: {\n bottom: 0,\n left: 0,\n display: 'block',\n width: \"100%\",\n height: \"100%\",\n zIndex: 2,\n position: 'absolute',\n background: \"rgba(216, 216, 216, 0.6)\",\n },\n root: {\n display: 'block',\n width: \"100%\",\n height: \"100%\",\n [theme.breakpoints.down('sm')]: {\n height: '200px',\n },\n objectFit: 'cover',\n objectPosition: 'center',\n background: '#F4F5FF',\n },\n small: {\n maxHeight: 200,\n },\n unavailable: {\n zIndex: 3,\n fontSize: theme.spacing(3),\n fontWeight: 600,\n fontStretch: \"normal\",\n fontStyle: \"normal\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n color: \"#d43e53\",\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: \"translate(-50%, -50%) rotate(-34deg)\",\n },\n wrapper: {\n width: '100%',\n height: '100%',\n position: 'relative',\n },\n}));\n\nconst StayImage = ({\n disabled,\n imageUrl,\n small,\n}: StayImageProps) => {\n const classes = useStyles();\n const [imageSource, setImageSource] = useState(imageUrl);\n const fallbackSource = \"/assets/stay_fallback.svg\";\n\n return (\n <div className={classes.wrapper}>\n <img\n className={clsx(\n classes.root,\n {[classes.small]: small},\n )}\n data-test-id=\"tripStayPhoto\"\n onError={() => setImageSource(fallbackSource)}\n src={imageSource || fallbackSource}\n />\n {disabled && <>\n <div className={classes.disabledGradient} />\n <Typography className={classes.unavailable}>\n UNAVAILABLE\n </Typography>\n </>}\n </div>\n );\n};\n\nexport default StayImage;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { Link, Typography } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ntype StayNameProps = {\n isClickable?: boolean,\n fullWidth?: boolean,\n name: string,\n};\n\ntype StayNameWithLinkProps = {\n fullWidth?: boolean,\n isClickable?: boolean,\n isDisabled?: boolean,\n name: string,\n stayUrl: string,\n target?: string,\n};\n\ntype StyleProps = {\n fullWidth?: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme): {} => ({\n root: {\n textAlign: 'left',\n lineHeight: '24px',\n color: 'black',\n fontSize: 18,\n fontWeight: 600,\n zIndex: 2,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: [18, '!important'],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: ({ fullWidth }) => fullWidth ? '100%' : \"calc(100% - 88px)\",\n marginRight: theme.spacing(5),\n },\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n },\n disabled: {\n color: [\"#C0C0C0\", '!important'],\n },\n applyHover: {\n '&:hover': {\n color: '#3B41B0',\n textDecoration: 'none',\n },\n },\n}));\n\nconst StayName = ({\n isClickable,\n fullWidth,\n name,\n}: StayNameProps) => {\n const classes = useStyles({ fullWidth: fullWidth });\n\n return (\n <Typography\n className={clsx(\n classes.root,\n \"stay-title\",\n {[classes.applyHover]: isClickable },\n )}\n >\n {name}\n </Typography>\n );\n};\n\nexport const StayNameWithLink = ({\n fullWidth,\n stayUrl,\n isClickable,\n isDisabled,\n name,\n target,\n}: StayNameWithLinkProps) => {\n const classes = useStyles({ fullWidth: fullWidth });\n\n return (\n <Link\n data-test-id=\"stayTitle\"\n href={stayUrl}\n target={target ? '_blank' : ''}\n underline=\"none\"\n color=\"inherit\"\n className={clsx(\n classes.root,\n { [classes.applyHover]: isClickable },\n { [classes.disabled]: isDisabled },\n \"stay-title\",\n )}\n >\n {name}\n </Link>\n )\n};\n\nexport default StayName;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { NumericFormat } from 'react-number-format';\nimport { IconButton, Typography } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport DateOptionsPricing from \"./shared/DateOptionsPricing\";\nimport { DateOptionWithAvailabilityType } from \"../../../../../shared/TripObjectTypes\";\nimport TextButton from \"../../../../../buttons/TextButton\";\nimport useSegment from \"../../../../../../services/useSegment\";\n\ntype StayPricingProps = {\n available: boolean,\n averagePricing?: boolean,\n className?: string,\n currency: string | null,\n dateOptions?: DateOptionWithAvailabilityType[],\n isDisabled?: boolean,\n hasAutomaticAvailability?: boolean,\n price: number | [number, number] | null,\n chosenDatePrice?: number | null,\n pricingType: 'night' | 'total',\n stayPath?: string,\n tripId?: string,\n stayId?: string,\n};\n\ntype PriceProps = {\n value: number,\n className?: string,\n};\n\nconst determineIfIsNumber = (\n toBeDetermined: number | [number, number],\n): toBeDetermined is number => {\n if (Number.isFinite(toBeDetermined as number)) {\n return true;\n } else {\n return false;\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n disabled: {\n color: \"#COCOCO\",\n },\n editIcon: {\n '&:hover': {\n textDecoration: [\"underline\",\"!important\"],\n },\n marginRight: theme.spacing(1),\n zIndex: 2,\n },\n iconButton: {\n color: theme.palette.general.primary,\n zIndex: 2,\n width: '20px',\n height: '20px',\n margin: '0px 8px',\n },\n priceText: {\n textAlign: 'left',\n fontSize: theme.spacing(2),\n color: '#272727',\n },\n addPriceText: {\n fontSize: theme.spacing(2),\n color: '#3689FF',\n '&:hover': {\n color: '#2C71D3',\n },\n },\n priceDetailsText: {\n textAlign: 'left',\n fontSize: '14px',\n color: '#697379',\n paddingTop: '4px',\n },\n suffix: {\n fontWeight: 400,\n fontSize: 16,\n },\n priceRange: {\n fontSize: 16,\n },\n}));\n\nconst StayPricing = ({\n available,\n averagePricing,\n chosenDatePrice,\n className,\n currency,\n dateOptions,\n hasAutomaticAvailability,\n isDisabled,\n price,\n pricingType,\n stayPath,\n tripId,\n stayId,\n}: StayPricingProps) => {\n const [openDialog, setOpenDialog] = useState(false);\n const classes = useStyles();\n const { trackSegment } = useSegment();\n const isNightlyPricing = pricingType === 'night';\n const pricingTypeText = isNightlyPricing ? ' / night' : ' total';\n const isRangePrice = Array.isArray(price);\n const isChosenDateZero = chosenDatePrice === 0;\n const isPriceZero = price === 0;\n\n const Price = ({ value, className }: PriceProps) => (\n <NumericFormat\n value={value}\n displayType={'text'}\n decimalScale={2}\n fixedDecimalScale={value % 1 !== 0}\n thousandSeparator={true}\n prefix={currency}\n className={className}\n />\n );\n\n const DateOptionsIcon = () => {\n const onDateOptionsClick = () => {\n trackSegment('Stays Tooltip Clicked', {\n category: 'Stays Pricing',\n property: 'buttonClicked',\n });\n\n setOpenDialog(true);\n };\n\n return(\n !isDisabled && dateOptions?.length ? (\n <>\n <IconButton\n className={classes.iconButton}\n data-test-id=\"stayDateOptionsPricing\"\n onClick={() => onDateOptionsClick()}\n >\n <InfoIcon />\n </IconButton>\n <DateOptionsPricing\n dateOptions={dateOptions}\n stayHasAutomaticAvailability={hasAutomaticAvailability}\n isOpen={openDialog}\n onClose={() => setOpenDialog(false)}\n stayPath={stayPath}\n stayId={stayId}\n />\n </>\n ) : <span></span>\n );\n };\n\n const wrapWithLink = (component) => {\n if (stayPath && !hasAutomaticAvailability) {\n const onButtonClick = () => {\n trackSegment('Add Pricing Selected', {\n category: 'Stays Edit Pricing',\n property: 'buttonClicked',\n tripId: tripId,\n });\n\n window.location.replace(stayPath + '?focus=price');\n };\n\n return (\n <>\n <TextButton\n data-test-id=\"stay-edit-pricing\"\n className={classes.editIcon}\n onClick={() => onButtonClick()}\n >\n {component}\n </TextButton>\n <DateOptionsIcon />\n </>\n );\n };\n\n return component;\n };\n\n return (\n <>\n {available && (\n <>\n <Typography className={clsx(className,\n {\n [classes.disabled]: isDisabled,\n [classes.priceText]: !isDisabled,\n })}\n >\n <>\n {!price && !isChosenDateZero && !isPriceZero && (\n <>\n {(!averagePricing && (!stayPath || hasAutomaticAvailability)) && (\n wrapWithLink(\n <span data-test-id='no-price' className={classes.addPriceText}>\n (no price)\n </span>,\n )\n )}\n {(!averagePricing && stayPath && !hasAutomaticAvailability) && (\n wrapWithLink(\n <span data-test-id='add-pricing' className={classes.addPriceText}>\n <EditIcon fontSize=\"small\" className={classes.editIcon}/>\n Add pricing\n </span>,\n )\n )}\n </>\n )}\n {(chosenDatePrice || isChosenDateZero) && (\n wrapWithLink(\n <span data-test-id='chosen-date-price'>\n <Price value={chosenDatePrice} />\n <span className={classes.suffix}>{pricingTypeText}</span>\n </span>,\n )\n )}\n {((price && !chosenDatePrice) || isPriceZero) &&\n <>\n {isRangePrice ? (\n <span className={classes.priceRange}>\n <Price value={price[0]} data-test-id='price-range-price-low'/>\n <span> - </span>\n <Price value={price[1]} data-test-id='price-range-price-high'/>\n <span className={classes.suffix}> total</span>\n {!hasAutomaticAvailability && <DateOptionsIcon />}\n </span>\n ) : (\n determineIfIsNumber(price) && (\n <span data-test-id='single-stay-price'>\n <Price value={price} />\n <span className={classes.suffix}>{pricingTypeText}</span>\n {!hasAutomaticAvailability && <DateOptionsIcon />}\n </span>\n )\n )}\n </>}\n </>\n {hasAutomaticAvailability && <DateOptionsIcon />}\n </Typography>\n {(!!price || isPriceZero) && (\n <Typography className={isDisabled ? classes.disabled : classes.priceDetailsText} data-test-id=\"taxes-fees-warning\">\n Cost may not include taxes and fees\n </Typography>\n )}\n </>\n )}\n {!available && (\n <Typography>\n Unavailable for your dates\n </Typography>\n )}\n </>\n );\n};\n\nexport default StayPricing;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { DefaultTheme, makeStyles } from \"@mui/styles\";\n\ntype StayPropertiesProps = {\n className?: string,\n stay: {\n bedroomsCount: number,\n maxGuests: number,\n propertyType: string,\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n stayProperties: {\n fontSize: theme.typography.h3.fontSize,\n },\n dividerMargin: {\n marginLeft: '5px',\n marginRight: '5px',\n bottom: '2px',\n position: 'relative',\n color: theme.palette.general.gray,\n },\n guestFontSize: {\n fontSize: '14px',\n },\n}));\n\nconst StayProperties = ({\n className,\n stay,\n}: StayPropertiesProps) => {\n const classes = useStyles();\n const {\n bedroomsCount,\n maxGuests,\n } = stay;\n const propertyType = stay.propertyType === 'Private Vacation Home' ? 'Private Home' : stay.propertyType;\n\n const guests = maxGuests ? `${maxGuests} Guests max.` : null;\n const bedrooms = !bedroomsCount ? null : bedroomsCount + \" BR\";\n\n const setPropertiesText = () => (\n [propertyType, bedrooms, guests].filter(attribute => attribute).join(' | ')\n );\n\n return (\n <Grid item>\n <Typography className={clsx(className, classes.stayProperties)} data-test-id='stay-properties'>\n {setPropertiesText()}\n </Typography>\n </Grid>\n );\n};\n\nexport default StayProperties;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { Typography, Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport StarIcon from \"@mui/icons-material/Star\";\nimport pluralize from 'pluralize';\n\ntype StayRatingProps = {\n stay: {\n reviewsCount: number,\n starRating: string,\n },\n className?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n fontSize: 14,\n \"& svg\": {\n color: '#ffd13f',\n height: 18,\n marginBottom: 4,\n width: 18,\n verticalAlign: 'middle',\n },\n textAlign: 'left',\n },\n}));\n\nconst StayRating = ({\n stay,\n className,\n}: StayRatingProps) => {\n const classes = useStyles();\n const {\n reviewsCount,\n starRating,\n } = stay;\n\n const showRating = reviewsCount > 0 && !!starRating;\n const reviewWord = pluralize('review', reviewsCount)\n\n return (\n <>\n {showRating && (\n <Grid item xs container justifyContent='flex-end'>\n <Typography className={clsx(\n className,\n classes.root,\n )}>\n <StarIcon/>\n <strong>{starRating}</strong>\n <span>\n {` (${reviewsCount.toString()} ${reviewWord})`}\n </span>\n </Typography>\n </Grid>\n )}\n </>\n );\n};\n\nexport default StayRating;\n","import React, { useContext } from \"react\";\nimport AsyncSentimentButtons from \"../../shared/AsyncSentimentButtons\";\nimport SentimentButtons from \"../../shared/SentimentButtons\";\nimport rankLabels from \"../../../../../shared/rankLabels\";\nimport { StayType } from \"../../../../../shared/TripObjectTypes\";\nimport { TripSiteContext } from \"../../../../../Document\";\nimport { tripStayRankingsPath } from '../../../../../../routes';\n\ntype VotingSectionProps = {\n openVotingProgress: (voteCompleted: boolean) => void,\n stay: StayType,\n page?: 'index' | 'permapage' | null,\n};\n\nconst VotingSection: React.FC<VotingSectionProps> = ({\n openVotingProgress,\n stay,\n page,\n}) => {\n const { currentUserId, tripId, tripGid } = useContext(TripSiteContext);\n const stayId = stay.uuid ?? stay.id;\n const stayGid = stay.gid ?? stay.id;\n\n return (\n <>\n {currentUserId ? (\n <AsyncSentimentButtons\n currentUserSentiment={stay.currentUserRanking}\n disabled={stay.isDisabled}\n page={page}\n sentiments={rankLabels}\n tripObjectGid={stayGid}\n tripGid={tripGid}\n testId=\"tripStayButtons\"\n openVotingProgress={openVotingProgress}\n tripObjectType=\"stay\"\n />\n ) : (\n <SentimentButtons\n currentUserSentiment={stay.currentUserRanking}\n disabled={stay.isDisabled}\n sentiments={rankLabels}\n sentimentParamName=\"position\"\n sentimentSettingPath={tripStayRankingsPath(tripId, stayId)}\n testId=\"tripStayButtons\"\n />\n )}\n </>\n );\n};\n\nexport default VotingSection;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport DateOptionPrice from \"./DateOptionsPricing/DateOptionPrice\";\nimport { DialogBottomOnMobile } from \"../../../../../../shared/Dialog\";\nimport {\n DateOptionWithAvailabilityType,\n} from \"../../../../../../shared/TripObjectTypes\";\nimport Button from \"../../../../../../buttons/Button\";\nimport useSegment from \"../../../../../../../services/useSegment\";\n \ntype DateOptionsPricingProps = {\n dateOptions: DateOptionWithAvailabilityType[],\n isOpen: boolean,\n onClose: () => void,\n stayHasAutomaticAvailability: boolean,\n stayPath?: string,\n tripId?: string,\n stayId?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n editButton: {\n [theme.breakpoints.up(\"sm\")]: {\n margin: theme.spacing(4),\n marginTop: theme.spacing(2),\n },\n [theme.breakpoints.down(\"sm\")]: {\n margin: theme.spacing(2),\n },\n },\n estimatedPriceText: {\n color: '#555e64',\n fontSize: 12,\n marginTop: theme.spacing(2),\n },\n}));\n\nconst DateOptionsPricing = ({\n dateOptions,\n stayHasAutomaticAvailability,\n isOpen,\n onClose,\n stayPath,\n tripId,\n stayId,\n}: DateOptionsPricingProps) => {\n const classes = useStyles();\n const { trackSegment } = useSegment();\n\n const onEditStayClick = () => {\n trackSegment('Stay Edit Opened', {\n category: 'Stays Pricing',\n property: 'buttonClicked',\n objectId: stayId,\n method: 'tooltip',\n });\n };\n\n return (\n <DialogBottomOnMobile\n fullWidth\n data-test-id=\"dialog\"\n isOpen={isOpen}\n maxWidth=\"xs\"\n message={<>\n <Grid\n container\n data-test-id=\"dateOptionsPricing\"\n direction=\"column\"\n spacing={2}\n >\n {dateOptions.map(dateOption =>\n <DateOptionPrice\n dateOption={dateOption}\n key={dateOption.id}\n />,\n )}\n </Grid>\n <Grid container>\n <Grid item>\n <Typography className={classes.estimatedPriceText} data-test-id=\"estimated-price-disclaimer\">\n * This cost is an estimate and may not include taxes and/or fees\n </Typography>\n </Grid>\n </Grid>\n </>}\n onClose={() => onClose()}\n title=\"Pricing and availability\"\n >\n {(stayPath && !stayHasAutomaticAvailability) &&\n <Button\n className={classes.editButton}\n data-test-id=\"edit-stay-button\"\n onClick={() => onEditStayClick()}\n href={stayPath + '?focus=price'}\n variant='secondary'\n >\n Edit\n </Button>\n }\n </DialogBottomOnMobile>\n );\n};\n\nexport default DateOptionsPricing;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { DateOptionWithAvailabilityType } from \"../../../../../../../shared/TripObjectTypes\";\n\ntype AvailabilityIconProps = {\n dateOption: DateOptionWithAvailabilityType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n dateOptionIcon: {\n verticalAlign: 'middle',\n marginRight: theme.spacing(1),\n },\n availableDateOption: {\n color: '#1EBE95',\n },\n unavailableDateOption: {\n color: '#FB5D5D',\n },\n unknownDateOption: {\n color: '#7D94A9',\n },\n}));\n\nconst AvailabilityIcon = ({ dateOption }: AvailabilityIconProps) => {\n const classes = useStyles();\n\n return <>\n {dateOption.available === true && (\n <CheckCircleIcon\n className={clsx(classes.dateOptionIcon, classes.availableDateOption)}\n data-test-id=\"availableDateOption\"\n />\n )}\n {dateOption.available === false && (\n <CancelIcon\n className={clsx(classes.dateOptionIcon, classes.unavailableDateOption)}\n data-test-id=\"unavailableDateOption\"\n />\n )}\n {dateOption.available === null && (\n <ErrorIcon\n className={clsx(classes.dateOptionIcon, classes.unknownDateOption)}\n data-test-id=\"unknownDateOption\"\n />\n )}\n </>\n};\n\nexport default AvailabilityIcon;\n","import React from \"react\";\nimport pluralize from 'pluralize';\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { NumericFormat } from 'react-number-format';\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport AvailabilityIcon from \"./AvailabilityIcon\";\nimport { DateOptionWithAvailabilityType } from \"../../../../../../../shared/TripObjectTypes\";\n\ntype DateOptionPriceProps = {\n dateOption: DateOptionWithAvailabilityType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n date: {\n fontWeight: 600,\n },\n price: {\n fontWeight: 600,\n fontSize: theme.spacing(2),\n },\n priceContainer: {\n [theme.breakpoints.down('md')]: {\n marginLeft: theme.spacing(4),\n },\n },\n rightItem: {\n [theme.breakpoints.up('md')]: {\n position: 'absolute',\n right: theme.spacing(3),\n }\n },\n root: {\n width: '100%',\n },\n text: {\n fontSize: theme.spacing(2),\n },\n unavailable: {\n color: '#c0c0c0',\n },\n}));\n\nconst DateFormatted = ({ dateOption }: DateOptionPriceProps) => {\n const classes = useStyles();\n const isCurrentYear = (year) => new Date().getFullYear().toString() === year;\n\n return (\n <Grid item>\n <AvailabilityIcon dateOption={dateOption} />\n <span className={classes.date}>\n {dateOption.startDate}{!isCurrentYear(dateOption.startDateYear) && (`, ${dateOption.startDateYear}`)}\n <span> — </span>\n {dateOption.endDate}{!isCurrentYear(dateOption.endDateYear) && (`, ${dateOption.endDateYear}`)}\n </span>\n {` / ${dateOption.numNights} ${pluralize('night', dateOption.numNights)}`}\n </Grid>\n );\n};\n\nconst DateOptionPrice = ({ dateOption }: DateOptionPriceProps) => {\n const classes = useStyles();\n const price = dateOption.price || dateOption.estimatedPrice;\n const isUnavailable = dateOption.available === false;\n const isEstimated = !dateOption.price && dateOption.estimatedPrice;\n\n return (\n <Grid\n className={clsx(\n classes.root,\n {\n [classes.unavailable]: isUnavailable,\n },\n )}\n container\n data-test-id=\"dateOptionPricing\"\n item\n justifyContent=\"space-between\"\n spacing={1}\n >\n <Grid item direction='row' xs={12} sm={8} className={classes.text}>\n <DateFormatted dateOption={dateOption}/>\n </Grid>\n <Grid item xs={12} sm={4} className={classes.priceContainer}>\n {isUnavailable && !price ? (\n <Typography className={clsx(classes.text, classes.rightItem)}>\n Unavailable\n </Typography>\n ) : (\n price ? (\n <Grid container>\n <Grid item className={clsx(classes.price, classes.rightItem)}>\n <NumericFormat\n decimalScale={2}\n displayType='text'\n fixedDecimalScale={price % 1 !== 0}\n prefix='$'\n thousandSeparator={true}\n value={price}\n />\n {isEstimated && '*'}\n </Grid>\n </Grid>\n ) : (\n <Typography className={clsx(classes.text, classes.rightItem)}>\n (no price)\n </Typography>\n )\n )}\n </Grid>\n </Grid>\n );\n};\n\nexport default DateOptionPrice;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport StayProperties from \"./Stay/StayProperties\";\nimport StayName, {\n StayNameWithLink,\n} from \"./Stay/StayName\";\nimport StayRating from \"./Stay/StayRating\";\nimport {\n Variation,\n} from \"../../../../shared/TripObject\";\nimport { ExternalListingProps } from \"../../../../shared/TripObjectTypes\";\nimport ProviderName from \"./shared/ProviderName\";\nimport LiveStayIcon from \"./shared/LiveStayIcon\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n disabled: {\n color: \"#C0C0C0 !important\",\n },\n hideDetails: {\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n ratingAndReviews:{\n marginTop: theme.spacing(1.5),\n float: \"left\",\n },\n stayInfoContainer: {\n width: '100%',\n textAlign: 'left',\n paddingBottom: theme.spacing(1),\n },\n liveStayIconWrapper: {\n marginLeft: theme.spacing(0.5),\n zIndex: 2,\n },\n starRating: {\n justifyContent: 'left !important',\n display: 'grid',\n paddingBottom: theme.spacing(1),\n },\n}));\n\ntype StayContentProps = {\n stay: | StayType | ExternalListingProps,\n className?: string,\n hideDetails?: boolean,\n isDisabled?: boolean,\n isNameClickable?: boolean,\n linkNameToProvider?: boolean,\n nameLink?: string,\n nameTargetLink?: 'blank',\n ctaButton?: React.ReactNode,\n pricing?: React.ReactNode,\n variation?: Variation,\n onClick?: () => void,\n};\n\nexport const StayContent = ({\n stay,\n isDisabled,\n isNameClickable,\n hideDetails,\n linkNameToProvider,\n nameLink,\n nameTargetLink,\n pricing,\n variation,\n ctaButton,\n onClick,\n}: StayContentProps) => {\n const classes = useStyles();\n\n return <>\n <Grid item container direction=\"column\">\n <Grid item container className={classes.stayInfoContainer}>\n <Grid item>\n <ProviderName>\n {stay.provider}\n </ProviderName>\n </Grid>\n <Grid item className={classes.liveStayIconWrapper}>\n {stay.hasAutomaticAvailability && <LiveStayIcon />}\n </Grid>\n </Grid>\n <Grid\n item\n className={clsx({[classes.disabled]: isDisabled})}\n container\n direction=\"column\"\n spacing={1}\n onClick={onClick}\n >\n <Grid item>\n {stay.name && linkNameToProvider ? (\n <StayNameWithLink\n stayUrl={nameLink}\n isClickable={isNameClickable}\n isDisabled={isDisabled}\n name={stay.name}\n target={nameTargetLink}\n />\n ) : (\n <StayName\n isClickable={isNameClickable}\n name={stay.name}\n />\n )}\n </Grid>\n {pricing && (\n <Grid item>\n {pricing}\n </Grid>\n )}\n <Grid\n item\n container\n direction=\"column\"\n spacing={1}\n className={clsx({[classes.hideDetails]: hideDetails})}\n >\n <Grid item>\n <Grid\n className={clsx({[classes.disabled]: isDisabled})}\n container\n direction=\"row\"\n >\n <StayProperties stay={stay} />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Grid item data-test-id=\"star-rating\" className={classes.starRating}>\n <StayRating\n stay={stay}\n className={classes.ratingAndReviews}\n />\n </Grid>\n {ctaButton}\n </Grid>\n </>\n};\n\nexport default StayContent;\n\n","import React from \"react\";\nimport {\n Grid,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport BookButton from \"./Stay/BookButton\";\nimport StayAddress from \"./Stay/StayAddress\";\nimport StayDetails from \"./Stay/StayDetails\";\nimport StayImages from \"./Stay/StayImages\";\nimport StayPricing from \"./Stay/StayPricing\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\nimport StayContent from \"./StayContent\";\nimport TripObject, { Variation } from \"../../../../shared/TripObject\";\nimport ActionsButtonGroup from \"../../../../shared/ActionsButtonGroup\";\nimport { TripSiteContext } from \"../../../../Document\";\nimport {\n editTripStayPath,\n tripStayPath,\n newTripStayBookingPath,\n editTripStayBookingPath,\n} from '../../../../../routes';\nimport {\n useTrackEditStayClick,\n useHandleMarkAsBookedClick\n} from \"../../../../../services/segmentEvents/useStayCardEvents\";\nimport ShareButton from \"../../../../shared/ShareButton\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n border: 'none !important',\n },\n content: {\n paddingLeft: 0,\n paddingRight: 0,\n \"& .stay-title\": {\n fontSize: '20px !important',\n },\n },\n price: {\n fontWeight: 600,\n fontSize: 20,\n },\n shareButton: {\n position: 'absolute',\n top: '11px',\n right: '56px',\n zIndex: 3,\n },\n}));\n\ntype StayPermapageCardProps = {\n stay: StayType,\n};\n\nconst StayPermapageCard : React.FC<StayPermapageCardProps> = ({\n stay,\n}) => {\n const classes = useStyles();\n const { tripId } = React.useContext(TripSiteContext);\n const stayId = stay.uuid ?? stay.id\n\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n // pricing\n const chosenDate = stay.dateOptions.filter(date => date.isChosenDate);\n const hasChosenDate = chosenDate.length > 0;\n const dateOptionsAvailability = hasChosenDate ? chosenDate : stay.dateOptions;\n const chosenDatePrice = hasChosenDate ? chosenDate[0].price : null;\n const price = stay.price?.price || stay.price?.prices;\n\n const shouldRenderCarousel = !stay.isDisabled && stay.images.length > 1;\n const firstStayBooking = (stay.stayBookings || []).at(0);\n\n const onEditStayClick = useTrackEditStayClick(stayId);\n\n const handleMarkAsBookedClick = useHandleMarkAsBookedClick('stayPermapage');\n\n const stayPricing = (\n <StayPricing\n available={stay.available}\n averagePricing={stay.averagePricing}\n className={classes.price}\n currency={stay.currency}\n dateOptions={dateOptionsAvailability}\n hasAutomaticAvailability={stay.hasAutomaticAvailability}\n isDisabled={stay.isDisabled}\n price={price}\n chosenDatePrice={chosenDatePrice}\n pricingType={stay.pricingType}\n stayPath={stayId ? editTripStayPath(tripId, stayId) : ''}\n stayId={stayId}\n tripId={tripId}\n />\n );\n\n return (\n <TripObject\n className={classes.root}\n contentClassName={classes.content}\n noMargin\n testId=\"tripStay\"\n variation={Variation.Vertical}\n header={<>\n <ShareButton className={classes.shareButton} url={stay.publicUrl} />\n <ActionsButtonGroup\n deletePath={tripStayPath(tripId, stayId)}\n editPath={editTripStayPath(tripId, stayId)}\n disableDeleteButton={stay.isChosen}\n testId=\"stayActions\"\n resourceName=\"stay\"\n onEditClick={onEditStayClick}\n onMarkAsBookedClick={handleMarkAsBookedClick}\n displayMarkAsBooked={!firstStayBooking}\n newBookingPath={newTripStayBookingPath(tripId, stayId)}\n updateBookingPath={firstStayBooking ? editTripStayBookingPath(tripId, stayId, firstStayBooking.uuid) : undefined}\n />\n </>}\n visual={\n <StayImages\n images={stay.images}\n isDisabled={stay.isDisabled}\n shouldRenderCarousel={shouldRenderCarousel}\n />\n }\n content={\n <>\n <Grid container direction={isMobile ? \"column\" : \"row\"} pb={2} flexWrap=\"nowrap\">\n <Grid item xs={8} container direction=\"column\">\n <StayContent\n stay={stay}\n isDisabled={stay.isDisabled}\n nameLink={stay.publicUrl}\n nameTargetLink='blank'\n />\n <Grid item>\n <StayDetails page='permapage' publicUrl={stay.publicUrl} provider={stay.provider} />\n {stay.googlePlaceUrl && <StayAddress googlePlaceUrl={stay.googlePlaceUrl}/>}\n </Grid>\n </Grid>\n\n <Grid item xs={4} container direction=\"column\" alignItems={isMobile ? \"flex-start\" : \"flex-end\"}>\n <Grid item>\n {stayPricing}\n </Grid>\n\n {stay.bookable && (\n <Grid item mt={2} sx={{ width: '100%' }}>\n <BookButton fullWidth url={stay.publicUrl} page='permapage' provider={stay.provider} />\n </Grid>\n )}\n </Grid>\n </Grid>\n </>\n }\n />\n );\n};\n\nexport default StayPermapageCard;\n","import React, { useState, useContext } from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport MostRecentCommentBox from \"../shared/MostRecentCommentBox\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\nimport {\n tripStayCommentPath,\n tripStayCommentsPath,\n tripStayCommentsURL,\n tripStayPath,\n} from '../../../../../routes'\nimport { TripSiteContext } from \"../../../../Document\";\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport { AsyncComment, SyncComment } from \"../../../../shared/TripObjectTypes\";\nimport Stay from \"./Stay\";\nimport VotingProgressDialog from \"../../../../shared/VotingProgressDialog\";\nimport {\n useVotingProgressReducer,\n OPEN_PROGRESS_DIALOG,\n CLOSE_PROGRESS_DIALOG,\n} from \"../../../../../services/useVotingProgressReducer\";\nimport BookedWrapper from \"./BookedWrapper\";\n\ntype StaysListProps = {\n isPlanner: boolean,\n stays: StayType[],\n travelers: TravelerProps[],\n};\n\ntype MostRecentCommentProps = {\n comment: AsyncComment | null,\n commentsCount: number,\n showForm: boolean,\n stayId: string,\n tripId: string,\n};\n\ntype CommentPathProps = {} | {\n commentPath: string,\n commentsUrl: string,\n};\n\nconst MostRecentComment = ({\n comment,\n commentsCount,\n showForm,\n stayId,\n tripId,\n}: MostRecentCommentProps) => {\n const pathProps: CommentPathProps = !comment ? {} : {\n commentPath: tripStayCommentPath(tripId, stayId, comment.uuid),\n commentsUrl: tripStayCommentsURL(tripId, stayId, { anchor: `comment_${comment.uuid}` }),\n }\n const { author, ...mostRecentComment } = comment ?? {}\n\n return (\n <Grid item>\n <MostRecentCommentBox\n comment={comment && {\n ...mostRecentComment,\n ...pathProps,\n id: comment.uuid,\n gid: comment.id,\n authorAvatarUrl: author.avatarUrl,\n authorName: author.displayName,\n timestamp: parseInt(comment.timestamp, 10),\n } as SyncComment}\n commentFormPath={tripStayCommentsPath(tripId, stayId)}\n commentsPath={tripStayPath(tripId, stayId)}\n showCommentForm={showForm}\n showLoadMoreCommentsButton={commentsCount > 1}\n tripId={tripId}\n />\n </Grid>\n)}\n\nconst StaysList = ({\n isPlanner,\n stays,\n travelers,\n}: StaysListProps) => {\n\n const { tripId } = useContext(TripSiteContext);\n const { displayDialog, voteCompleted, dispatch } = useVotingProgressReducer();\n\n const votedCount = stays.reduce((count, stay) => (stay.currentUserRanking !== null ? count + 1 : count), 0);\n\n const staysWithRankings = [...stays].sort((a, b) => {\n if(a.ranking === null || b.ranking === null) return 1;\n return (a.ranking > b.ranking ? 1 : -1);\n });\n\n const initialValue = Array<boolean>(2).fill(false)\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState<boolean[]>(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n const votingProgress = (voteCompleted: boolean) => {\n dispatch({ type: OPEN_PROGRESS_DIALOG, voteCompleted });\n };\n\n return (\n <>\n {staysWithRankings.map((stay, index) => (\n <React.Fragment key={stay.uuid}>\n <Box mb={6} >\n <BookedWrapper booked={(stay.stayBookings?.length || 0) > 0} linkUrl={tripStayPath(tripId, stay.uuid)}>\n <Stay\n stay={stay}\n hideVotes={false}\n imgPath={tripStayPath(tripId, stay.uuid)}\n isPlanner={isPlanner}\n isClickable\n showActions\n suggestionsCount={staysWithRankings.length}\n linkNameToProvider\n travelers={travelers}\n setStayComment={() => toggleCommentFormVisibility(index)}\n displayActions\n showCommentButton\n showVotingProgressBanner\n page={'index'}\n openVotingProgress={votingProgress}\n stayMethod='staysVertical'\n displayBookButton\n />\n </BookedWrapper>\n {(stay.mostRecentComment || showCommentForm[index]) && (\n <Grid pt={2}>\n <MostRecentComment\n comment={stay.mostRecentComment as AsyncComment}\n commentsCount={stay.commentsCount}\n showForm={showCommentForm[index]}\n stayId={stay.uuid}\n tripId={tripId}\n />\n </Grid>\n )}\n </Box>\n </React.Fragment>\n ))}\n <VotingProgressDialog\n isOpen={displayDialog}\n closeDialog={() => dispatch({ type: CLOSE_PROGRESS_DIALOG, displayDialog: false })}\n totalVotes={staysWithRankings.length}\n votedCount={votedCount}\n vertical=\"Stays\"\n voteCompleted={voteCompleted}\n />\n </>\n );\n};\n\nexport default StaysList;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Divider,\n} from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport StaysList from \"./StaysList\";\nimport AddStayButton from \"./StaysSection/AddStayButton\";\nimport HousingFilteringAndSortingBar, {\n DateOption,\n StaySorting,\n} from \"./StaysSection/HousingFilteringAndSortingBar\";\nimport { Sorting } from \"../shared/FilteringAndSortingBar\";\nimport PhasingStepper from \"../shared/PhasingStepper\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport CurrentSortingAndCount from \"../shared/CurrentSortingAndCount\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport LastUpdateFilterLink from \"../../../../shared/LastUpdateFilterLink\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport {\n StayType,\n} from \"../../../../shared/TripObjectTypes\";\nimport { usePhasingContext } from \"../../../../../services/phasing\";\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport { GlobalContext, TripSiteContext } from \"../../../../Document\";\nimport ActionCallout from \"../SuggestedDatesPage/ActionCallout\";\nimport SearchStaysButton from \"./StaysSection/SearchStaysButton\";\n\ntype StaysSectionProps = {\n stays: StayType[],\n staySortings: Sorting<StaySorting>[],\n currentStayFilters: {\n dateOptionIds: string[],\n },\n currentStaySorting: StaySorting,\n dateOptions: DateOption[],\n isPlanner: boolean,\n lastEventUpdatedAt: number,\n onSortAndFilterChange: (_: {\n sortBy?: StaySorting,\n dateOptionIds?: string[],\n }) => void,\n tripGid: string,\n tripId: string,\n travelers: TravelerProps[],\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n filters: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst StaysSection = ({\n staySortings,\n stays,\n currentStayFilters,\n currentStaySorting,\n dateOptions,\n isPlanner,\n lastEventUpdatedAt,\n onSortAndFilterChange,\n tripId,\n travelers,\n}: StaysSectionProps) => {\n const classes = useStyles();\n const { currentUserId } = React.useContext(TripSiteContext);\n const { areStaysInSuggestingPhase, areStaysInVotingPhase, staysState } = usePhasingContext();\n const activeFilterCount = currentStayFilters?.dateOptionIds.length ?? 0\n const areFiltersActive = activeFilterCount > 0\n const noSuggestions = !stays.length && !areFiltersActive;\n const noFilteredSuggestions = !stays.length && areFiltersActive;\n const sortingName = staySortings.find((sorting) => sorting.sortBy === currentStaySorting).label;\n const addStayText = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ Add' : '+ Add stay'\n const note = areStaysInVotingPhase() ? 'Vote for your favorite options from the list below.' : `Suggest new stays using the “${addStayText}” button below.`;\n const isSuggestingEnabled = areStaysInSuggestingPhase();\n\n const renderActionCallout = () => {\n const thisTraveler = travelers.find((traveler) => traveler.userId === currentUserId);\n const showActionCallout = areStaysInVotingPhase() && thisTraveler?.stayMissingVotesCount > 0;\n return showActionCallout && (\n <>\n <Box my={2}><Divider /></Box>\n <ActionCallout\n currentUserAvatarUrl={thisTraveler.avatarUrl}\n missingVotesCount={thisTraveler.stayMissingVotesCount}\n />\n </>\n )\n };\n\n return (\n <Box data-test-id=\"tripStayListings\">\n <SectionHeader\n title=\"Stays\"\n note={note}\n rightElement={ lastEventUpdatedAt && (\n <LastUpdateFilterLink\n date={lastEventUpdatedAt}\n tripId={tripId}\n tripObjectType=\"Stay\"\n />\n )}\n />\n <PhasingStepper currentPhase={staysState} tripObjectType='stays' />\n { renderActionCallout() }\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n className={classes.filters}\n rowSpacing={2}\n >\n {isSuggestingEnabled && (\n <Grid item xs={12} display=\"flex\" alignItems=\"center\" >\n <SearchStaysButton tripId={tripId} />\n </Grid>\n )}\n <Grid item>\n <HousingFilteringAndSortingBar\n currentFiltersCount={activeFilterCount}\n currentFilters={currentStayFilters}\n currentSorting={currentStaySorting}\n dateOptions={dateOptions}\n disabled={noSuggestions}\n sortings={staySortings}\n onSortAndFilterChange={onSortAndFilterChange}\n />\n </Grid>\n <Tooltip title={isSuggestingEnabled ? '' : 'Suggestions can’t be made once voting has begun'}>\n <Grid item>\n <AddStayButton tripId={tripId} disabled={!isSuggestingEnabled} labelText={addStayText}/>\n </Grid>\n </Tooltip>\n </Grid>\n {!noSuggestions && (\n <Box pt={1} pb={3}>\n <CurrentSortingAndCount\n count={stays.length}\n sorting={sortingName}\n type=\"stay\"\n />\n </Box>\n )}\n <StaysList\n isPlanner={isPlanner}\n stays={stays}\n travelers={travelers}\n />\n {noSuggestions && (\n <Grid>\n <NoSuggestionsYet\n heading=\"Next steps\"\n listItems={['Add stays', 'Get your group to vote', 'Finalize and book your stay!']}\n illustration='camper'\n />\n </Grid>\n )}\n {noFilteredSuggestions && (\n <Grid>\n <NoSuggestionsYet\n illustration='desert'\n subheading='Hmm…looks like no stays match your filters. Let’s try again.'\n />\n </Grid>\n )}\n </Box>\n );\n};\n\nexport default StaysSection;\n","import React, { useCallback } from 'react';\nimport Button from \"../../../../../buttons/Button\";\nimport useSegment from '../../../../../../services/useSegment';\nimport { addBySmartSearchTripStaysPath } from '../../../../../../routes';\n\ntype AddStayButtonProps = {\n disabled: boolean,\n tripId: string,\n labelText: string | React.ReactNode,\n className?: string,\n};\n\nconst AddStayButton = ({ tripId, disabled, labelText, className }: AddStayButtonProps) => {\n const { trackLinkSegment } = useSegment();\n\n const addButtonRefs = useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Add Stay Link Clicked',\n {\n label: '\"Add Stay\" button',\n },\n );\n }\n }, []);\n\n if (disabled) return (<>\n <Button\n data-test-id=\"add-button\"\n disabled\n variant=\"primary\"\n >\n { labelText }\n </Button>\n </>)\n\n const addStayButton = () => (\n <Button\n className={className}\n href={addBySmartSearchTripStaysPath(tripId)}\n data-test-id='add-stay-button'\n variant=\"primary\"\n ref={addButtonRefs}\n >\n { labelText }\n </Button>\n\n );\n\n return addStayButton();\n};\n\nexport default AddStayButton;\n","import React, { ChangeEvent, useState } from \"react\";\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n Grid,\n InputLabel,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { castArray } from 'lodash'\nimport serializeForm from \"../../../../../../services/serializeForm\";\nimport FilteringAndSortingBar, { Sorting } from \"../../shared/FilteringAndSortingBar\";\n\nexport type DateOption = {\n endDate: string,\n endDateYear: string,\n id: string,\n startDate: string,\n startDateYear: string,\n};\n\nexport type StaySorting = |\n 'recently_added' |\n 'bedrooms_count' |\n 'rating' |\n 'price_per_night_descending' |\n 'price_per_night_ascending';\n\ntype SortAndFilterProps = {\n sortBy: StaySorting,\n dateOptionIds: string[],\n}\ntype HousingFilteringAndSortingBarProps = {\n currentFiltersCount: number,\n currentFilters: {\n dateOptionIds: string[],\n },\n currentSorting: StaySorting,\n dateOptions: DateOption[],\n disabled?: boolean,\n onSortAndFilterChange: (_: SortAndFilterProps) => void,\n sortings: Sorting<StaySorting>[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontSize: 16,\n fontWeight: 300,\n transform: 'scale(1)',\n },\n dateOptions: {\n paddingTop: theme.spacing(1),\n },\n}));\n\nconst HousingFilteringAndSortingBar = ({\n currentFiltersCount,\n currentFilters,\n currentSorting,\n dateOptions,\n disabled,\n onSortAndFilterChange,\n sortings,\n}: HousingFilteringAndSortingBarProps) => {\n const classes = useStyles();\n\n const [\n appliedFiltersCount,\n setAppliedFiltersCount,\n ] = useState(currentFiltersCount);\n\n const onDrawerClose: () => void = () => {\n setAppliedFiltersCount(currentFiltersCount);\n };\n\n const handleDateOptionCheck = (event) => {\n const isChecked = event.target.checked;\n\n if (isChecked) {\n setAppliedFiltersCount(appliedFiltersCount + 1);\n } else {\n setAppliedFiltersCount(appliedFiltersCount - 1);\n }\n };\n\n return (\n <FilteringAndSortingBar\n currentFiltersCount={appliedFiltersCount}\n currentSorting={currentSorting}\n disabled={disabled}\n onSubmit={(e) => {\n e.preventDefault();\n\n const values = serializeForm(e.target as HTMLFormElement) as SortAndFilterProps\n // NOTE: a single-checked value does not get turned into an array.\n if(typeof(values.dateOptionIds) === 'string') {\n values.dateOptionIds = castArray<string>(values.dateOptionIds)\n }\n onSortAndFilterChange(values)\n return false\n }}\n onClose={onDrawerClose}\n sortByRadioGroupName=\"sortBy\"\n vertical=\"Stays\"\n sortings={sortings}\n filters={\n <>\n <Grid item>\n <Typography variant=\"h2\">\n Filters\n </Typography>\n </Grid>\n <Grid item data-test-id=\"stayFilteringByDateOptions\">\n <InputLabel className={classes.label}>\n Available dates\n </InputLabel>\n <Box className={classes.dateOptions}>\n {currentFilters && dateOptions.map(dateOption => (\n <Box key={dateOption.id} data-test-id=\"dateOptionCheckbox\">\n <FormControlLabel\n control={\n <Checkbox\n defaultChecked={currentFilters.dateOptionIds.includes(dateOption.id)}\n color=\"primary\"\n value={dateOption.id}\n name=\"dateOptionIds\"\n />\n }\n label={`${dateOption.startDate}, ${dateOption.startDateYear} - ${dateOption.endDate}, ${dateOption.endDateYear}`}\n onChange={handleDateOptionCheck}\n />\n </Box>\n ))}\n </Box>\n </Grid>\n </>\n }\n />\n );\n};\n\nexport default HousingFilteringAndSortingBar;\n","import React, { useCallback } from 'react';\nimport { Link, Typography } from \"@mui/material\";\nimport SearchIcon from '@mui/icons-material/Search';\nimport useSegment from \"../../../../../../services/useSegment\";\nimport { addBySmartSearchTripStaysPath } from '../../../../../../routes';\n\ntype SearchStayButtonProps = {\n tripId: string,\n};\n\nconst SearchStaysButton = ({ tripId }: SearchStayButtonProps) => {\n const { trackLinkSegment } = useSegment()\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Add Stay Link Clicked',\n {\n label: '\"Explore stays\" search bar',\n },\n );\n }\n }, []);\n\n return (\n <Link data-test-id=\"search-stays-button\"\n sx={{color: \"rgb(150, 150, 150)\", border: \"1px solid rgb(217, 216, 216)\", width: \"100%\", padding: \"6px\", borderRadius: \"5px\", textDecoration: \"none\", display: \"flex\", flexDirection: \"row\", alignItems: \"center\" }}\n href={addBySmartSearchTripStaysPath(tripId)}\n ref={refs}\n >\n <SearchIcon sx={{ fontSize: 30 }} />\n <Typography sx={{ marginLeft: 0.5 }}>\n Explore stays\n </Typography>\n </Link>\n );\n};\n\nexport default SearchStaysButton;\n","import React from \"react\"\nimport { Grid, Typography } from \"@mui/material\"\nimport Button from \"../../../../../buttons/Button\";\nimport { makeStyles } from \"@mui/styles\";\nimport StaysMapView from '../MapView/StaysMapView';\nimport { StayType } from \"../../../../../shared/TripObjectTypes\";\nimport useExpandMapEventRef from \"../../../../../../services/segmentEvents/useExpandMapEventRef\";\n\ntype StaysMapSectionProps = {\n stays: StayType[],\n onExpandMapClick: () => void,\n};\n\nconst useStyles = makeStyles( theme => ({\n root: {\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n header: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n },\n mapWrapper: {\n width: '100%',\n height: `calc(80vh - ${theme.spacing(8)})`,\n left: 0,\n },\n}));\n\nconst StaysMapSection = ({\n stays,\n onExpandMapClick,\n} : StaysMapSectionProps ) => {\n const classes = useStyles();\n\n const expandMapButtonRef = useExpandMapEventRef('stays', 'expand map')\n\n return(\n <Grid container direction=\"column\" spacing={2} className={classes.root}>\n <Grid item>\n <Typography className={classes.header}>\n Map view\n </Typography>\n </Grid>\n <Grid item className={classes.mapWrapper} data-test-id=\"sideBarMap\">\n <StaysMapView stays={stays} />\n </Grid>\n <Grid item>\n <Button\n data-test-id='expand-map'\n variant=\"secondary\"\n fullWidth\n onClick={onExpandMapClick}\n ref={expandMapButtonRef}\n >\n Expand map\n </Button>\n </Grid>\n </Grid>\n )\n};\n\nexport default StaysMapSection;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport Tooltip from \"../../../../../shared/Tooltip\";\n\nconst useStyles = makeStyles( theme => ({\n icon: {\n height: '16px',\n width: '16px',\n },\n tooltip: {\n padding: theme.spacing(1),\n },\n tooltipTitle: {\n fontSize: '14px',\n fontWeight: 700,\n lineHeight: '21px',\n marginLeft: theme.spacing(0.5),\n },\n tooltipDescription: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '21px',\n },\n}));\n\nconst LiveStayIcon : React.FC = () => {\n const classes = useStyles();\n\n const renderVerifiedIcon = () => (\n <img src=\"/assets/verified_icon.svg\" className={classes.icon} />\n );\n\n const tooltipText = () => {\n return (\n <Grid container direction=\"column\" spacing={1} className={classes.tooltip}>\n <Grid item container alignItems=\"center\">\n {renderVerifiedIcon()}\n <Typography className={classes.tooltipTitle}>Troupe Preferred Partner</Typography>\n </Grid>\n <Grid item className={classes.tooltipDescription}>\n Price, rating, and availability for this stay will\n automatically update if things change.\n </Grid>\n </Grid>\n );\n };\n\n return (\n <Tooltip title={tooltipText()}>\n {renderVerifiedIcon()}\n </Tooltip>\n );\n};\n\nexport default LiveStayIcon;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.secondary,\n fontWeight: '500',\n fontSize: '0.875rem',\n },\n}));\n\nconst ProviderName: React.FC = ({children}) => {\n const classes = useStyles();\n\n return (\n <Typography className={classes.root}>\n {children}\n </Typography>\n );\n};\n\nexport default ProviderName;\n","import SideBarPage from \"../../../shared/SideBarPage\";\nimport React from \"react\";\nimport { ItineraryDateType, ItineraryType } from \"../../../shared/TripObjectTypes\";\nimport ItineraryMainContent from \"./ItineraryDatePermapage/ItineraryMainContent\";\nimport withLayout from \"./withLayout\";\n\n\ntype ItineraryDatePermapageProps = {\n itinerary: ItineraryType,\n itineraryDate: ItineraryDateType,\n availableActivitiesCount: number,\n};\n\nconst ItineraryDatePermapage = ({\n itineraryDate,\n itinerary,\n availableActivitiesCount,\n}: ItineraryDatePermapageProps) => {\n\n return (\n <SideBarPage\n mainContent={\n <ItineraryMainContent\n itineraryDate={itineraryDate}\n itineraryDates={itinerary.itineraryDates}\n availableActivitiesCount={availableActivitiesCount}\n page={'permapage'}\n />\n }\n />\n )\n}\n\nexport default withLayout(ItineraryDatePermapage, { fluid: true });\n","import React from \"react\";\nimport {\n Link,\n MenuList,\n MenuItem,\n ListItemText,\n ListItemIcon,\n} from \"@mui/material\";\nimport CalendarTodayOutlinedIcon from '@mui/icons-material/CalendarTodayOutlined';\nimport HotelIcon from '@mui/icons-material/Hotel';\nimport DropdownButton from \"../../../../shared/DropdownButton\";\nimport useSegment from \"../../../../../services/useSegment\";\nimport * as routes from \"../../../../../routes\";\n\ntype AddEventDropdownProps = {\n tripId: string,\n itineraryDateId: string,\n};\n\ntype AddLinkProps = {\n icon: React.ReactNode,\n label: string,\n path: string,\n};\n\nconst {\n newTripActivityEventPath,\n newTripStayEventPath,\n} = routes;\n\nconst AddEventDropdown: React.FC<AddEventDropdownProps> = ({\n tripId,\n itineraryDateId,\n}) => {\n const { trackSegment } = useSegment();\n\n const AddLink: React.FC<AddLinkProps> = ({ icon, label, path }) => (\n <Link\n color=\"inherit\"\n underline=\"none\"\n href={path}\n >\n <MenuItem>\n <ListItemIcon>\n {icon}\n </ListItemIcon>\n <ListItemText primary={label} />\n </MenuItem>\n </Link>\n );\n\n return (\n <DropdownButton\n onClick={() => trackSegment('Add Itinerary Event Initiated', {})}\n testId='dropdown-add-btn'\n label=\"+ Add\"\n menuList={\n <MenuList>\n <AddLink\n icon={<HotelIcon/>}\n label=\"Add stay\"\n path={`${newTripStayEventPath(tripId)}?itinerary_date_id=${itineraryDateId}`}\n />\n <AddLink\n icon={<CalendarTodayOutlinedIcon/>}\n label=\"Add activity\"\n path={`${newTripActivityEventPath(tripId)}?itinerary_date_id=${itineraryDateId}`}\n />\n </MenuList>\n }\n />\n );\n};\n\nexport default AddEventDropdown;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport FloatingActionButton from \"../shared/FloatingActionButton\";\nimport { DialogBottomOnMobile } from \"../../../../shared/Dialog\";\nimport * as routes from \"../../../../../routes\";\nimport useSegment from \"../../../../../services/useSegment\";\n\ntype AddEventFloatingButtonProps = {\n itineraryDateId: string,\n tripId: string,\n};\n\ntype AddLinkProps = {\n imageSrc: string,\n path: string,\n resourceName: string,\n};\n\nconst {\n newTripActivityEventPath,\n newTripStayEventPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n cardButton: {\n display: \"flex\",\n border: \"1px dashed #545DFC\",\n borderRadius: '15px',\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: '#F8F7FE',\n },\n },\n cardLabel: {\n paddingLeft: \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"middle\",\n },\n imageContainer: {\n backgroundColor: '#E5E7FF',\n minWidth: '80px',\n minHeight: '80px',\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n}));\n\nconst AddEventFloatingButton: React.FC<AddEventFloatingButtonProps> = ({\n itineraryDateId,\n tripId,\n}) => {\n const classes = useStyles();\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const { trackSegment } = useSegment();\n\n const handleFloatingBtnOnClick = () => {\n setIsDialogOpen(true)\n trackSegment('Add Itinerary Event Initiated', {})\n };\n\n const AddLink: React.FC<AddLinkProps> = ({ imageSrc, path, resourceName }) => (\n <Link\n className={classes.cardButton}\n color=\"inherit\"\n href={path}\n underline=\"none\"\n data-test-id={`add-${resourceName}`}\n >\n <Box className={classes.imageContainer}>\n <img height=\"60px\" width=\"60px\" alt={`add ${resourceName}`} src={imageSrc} />\n </Box>\n <Box className={classes.cardLabel}>\n <Typography variant=\"h3\" textAlign='center'>\n {`Add ${resourceName}`}\n </Typography>\n </Box>\n </Link>\n );\n\n return (\n <>\n <FloatingActionButton\n onClick={() => handleFloatingBtnOnClick()}\n testId=\"floating-action-button\"\n />\n <DialogBottomOnMobile\n fullWidth\n isOpen={isDialogOpen}\n keepMounted\n maxWidth=\"xs\"\n message={\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <AddLink\n path={`${newTripStayEventPath(tripId)}?itinerary_date_id=${itineraryDateId}`}\n imageSrc=\"/assets/illustrations/camper_icon.svg\"\n resourceName=\"stay\"\n />\n </Grid>\n <Grid item>\n <AddLink\n path={`${newTripActivityEventPath(tripId)}?itinerary_date_id=${itineraryDateId}`}\n imageSrc=\"/assets/illustrations/sailboat_icon.svg\"\n resourceName=\"activity\"\n />\n </Grid>\n </Grid>\n }\n onClose={() => setIsDialogOpen(false)}\n title='Add to itinerary'\n subtitle='Select a category to add to your itinerary'\n >\n </DialogBottomOnMobile>\n </>\n );\n};\n\nexport default AddEventFloatingButton;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport MoreTimeIcon from '@mui/icons-material/MoreTime';\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport ActionsMenu from '../../../../shared/ActionsMenu';\nimport moment from \"moment\";\nimport * as routes from '../../../../../routes';\nimport { ItineraryDialogModal } from \"./ItineraryDialogModal\";\nimport ItineraryActivityEventDialog from \"./ItineraryActivityEventDialog\";\nimport ItineraryEvent, {\n ClickArea,\n useStyles,\n} from \"./ItineraryEvent\";\nimport {\n useTrackDeletionInitiated,\n useTrackEventCardClicked,\n useTrackItineraryEventEditInitiated,\n} from \"../../../../../services/segmentEvents/useItineraryEvents\";\n\nconst {\n tripItineraryEventPath,\n tripGetActivityPath,\n editTripActivityEventPath,\n tripItineraryDatePath,\n} = routes;\n\ntype ItineraryActivityEventProps = {\n itineraryDateId?: string,\n activityEvent: ItineraryEventType,\n showAddTimeLink?: boolean,\n showActionsMenu?: boolean,\n isClickeable?: boolean,\n page: string,\n};\n\nconst ItineraryActivityEvent = ({\n itineraryDateId = null,\n activityEvent,\n showAddTimeLink = false,\n showActionsMenu = false,\n isClickeable = false,\n page,\n}: ItineraryActivityEventProps) => {\n const classes = useStyles();\n const fallbackSource = \"/assets/activity_fallback_simple.svg\";\n const { tripId } = activityEvent;\n const searchParams = new URLSearchParams(window.location.search);\n const startDialogOpen = searchParams.toString().includes(`eventId=${activityEvent.id}`);\n const [isDialogOpen, setIsDialogOpen ] = useState(startDialogOpen);\n const [imageSource, setImageSource] = useState(activityEvent.imageUrl || fallbackSource);\n const tripObjectPath = itineraryDateId ? tripGetActivityPath(tripId, activityEvent.schedulableId, { itinerary_date_id: itineraryDateId, source: page }) : tripGetActivityPath(tripId, activityEvent.schedulableId);\n const trackEventCardClicked = useTrackEventCardClicked();\n const trackItineraryEventEditInitiated = useTrackItineraryEventEditInitiated();\n const trackDeletionInitiated = useTrackDeletionInitiated();\n\n const onButtonClick = () => {\n if(page === 'tripUpdates'){\n window.location.href = tripItineraryDatePath(tripId, itineraryDateId, {eventId: activityEvent.id});\n } else {\n setIsDialogOpen(!isDialogOpen);\n }\n trackEventCardClicked(activityEvent.schedulableType, activityEvent.schedulableId, page);\n };\n\n const onEditTimeClick = (method: string) => {\n trackItineraryEventEditInitiated(method, activityEvent.schedulableType, activityEvent.schedulableId, page);\n window.location.href = `${editTripActivityEventPath(tripId, activityEvent.id)}?itinerary_date_id=${itineraryDateId}&source=${page}`;\n };\n\n\n const renderTimeText = () => {\n const { startTime, endTime } = activityEvent;\n\n const formattedStartTime = moment(startTime, \"HH:mm\").format('h:mm A');\n const formattedEndTime = moment(endTime, \"HH:mm\").format('h:mm A');\n const activityTimeText = (startTime && endTime) ? `${formattedStartTime} - ${formattedEndTime}` : \"No time set\";\n\n return(\n <Typography className={classes.time} data-test-id=\"itinerary-event-time\">\n {activityTimeText}\n </Typography>\n )}\n\n const renderActionsMenu = () => (\n <ActionsMenu\n onEditClick={() => onEditTimeClick('overflow')}\n deletePath={`${tripItineraryEventPath(tripId, activityEvent.id)}?itinerary_date_id=${itineraryDateId}&source=${page}`}\n resourceName=\"event\"\n onDeleteClick={() => trackDeletionInitiated(activityEvent.schedulableType, activityEvent.schedulableId, page)}\n />\n );\n\n const renderItineraryDialogModal = () => (\n <ItineraryDialogModal\n title={activityEvent.name}\n fullWidth\n maxWidth=\"xs\"\n imgUrl={imageSource || fallbackSource}\n eventObjectPath={tripObjectPath}\n itineraryEvent={activityEvent}\n message={\n <ItineraryActivityEventDialog\n itineraryDateId={itineraryDateId}\n itineraryEvent={activityEvent}\n renderTimeText={renderTimeText}\n />\n }\n isOpen={isDialogOpen}\n onClose={()=>setIsDialogOpen(false)}\n />\n )\n\n return (\n <ItineraryEvent\n actionsMenu={renderActionsMenu()}\n showActionsMenu={showActionsMenu}\n itineraryDialog={renderItineraryDialogModal()}\n sx={{ height: 80 }}\n >\n <>\n { isClickeable &&\n <ClickArea\n anchor={`itineraryEvent_${activityEvent.id}`}\n onTripObjectClick={onButtonClick}\n sx={{ height: 80 }}\n />\n }\n <Grid item className={classes.imageWrapper}>\n <img\n alt=\"\"\n onError={() => setImageSource(fallbackSource)}\n src={imageSource || fallbackSource}\n />\n </Grid>\n <Grid\n item\n container\n direction=\"column\"\n justifyContent=\"space-evenly\"\n flexWrap=\"nowrap\"\n flexGrow={2}\n sx={{ overflow: 'hidden' }}\n >\n <Grid item data-test-id=\"itinerary-event-name\">\n <Typography className={classes.name}>{activityEvent.name}</Typography>\n </Grid>\n <Grid item className={classes.clickableTime} sx={{zIndex: showAddTimeLink ? 1 : 0}}>\n {showAddTimeLink ? (\n <Link\n onClick={() => onEditTimeClick('add time link')}\n underline=\"hover\"\n className={classes.addTimeLink}\n data-test-id=\"add-time-link\"\n >\n <MoreTimeIcon />\n Add a time\n </Link>\n ) : (\n renderTimeText()\n )}\n </Grid>\n </Grid>\n </>\n </ItineraryEvent>\n );\n};\n\nexport default ItineraryActivityEvent;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Grid, Link, Typography } from \"@mui/material\";\nimport { DateRange } from \"@mui/icons-material\";\nimport MoreTimeIcon from \"@mui/icons-material/MoreTime\";\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport ItineraryEventDialog, { renderButtons } from \"./ItineraryEventDialog\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport CategoryLabel from \"../shared/CategoryLabel\";\nimport { editTripActivityEventPath } from \"../../../../../routes\";\nimport useSegment from \"../../../../../services/useSegment\";\n\ntype ItineraryActivityEventDialogProps = {\n itineraryDateId?: string,\n itineraryEvent: ItineraryEventType,\n renderTimeText: () => any,\n};\n\nconst useStyles = makeStyles(theme => ({\n imageLabel: {\n top: '191px',\n position: 'absolute',\n },\n date: {\n fontSize: theme.spacing(2),\n display: 'flex',\n paddingRight: theme.spacing(2),\n color: '#4A6176',\n },\n dateIcon: {\n fontSize: '1.2rem',\n top: '2px',\n position: 'relative',\n marginRight: theme.spacing(1),\n },\n dateTimeBox: {\n color: '#4A6176',\n },\n addTimeLink: {\n fontSize: 16,\n lineHeight: '24px',\n color: '#4A6176',\n cursor: 'pointer',\n '&:hover': {\n color: theme.palette.link.main,\n },\n },\n addTimeText: {\n position: \"relative\",\n marginRight: '4px',\n bottom:' 4px',\n },\n timeIcon: {\n marginRight: '4px',\n position: 'relative',\n bottom:' 4px',\n fontSize: '1.2rem',\n },\n}));\n\nconst ItineraryActivityEventDialog = ({\n itineraryDateId,\n itineraryEvent,\n renderTimeText,\n}: ItineraryActivityEventDialogProps) => {\n const classes = useStyles();\n const price = parseFloat(itineraryEvent.metadata.price || '0').toFixed(2).replace(/\\.00$/,'');\n const { trackSegment } = useSegment();\n\n const imageLabel = (\n <Grid item className={classes.imageLabel}>\n {itineraryEvent.metadata.category && (<CategoryLabel category={itineraryEvent.metadata.category} dialog/>)}\n </Grid>\n );\n\n const trackEditTimeInitiated = (method: string) => {\n trackSegment(\n 'Activity Event Add Time Initiated',\n {\n method,\n objectId: itineraryEvent.id,\n objectType: itineraryEvent.schedulableType,\n },\n );\n };\n\n const onEditTimeClick = (method: string) => {\n trackEditTimeInitiated(method);\n window.location.href = `${editTripActivityEventPath(itineraryEvent.tripId, itineraryEvent.id)}?itinerary_date_id=${itineraryDateId}`;\n };\n\n return (\n <ItineraryEventDialog\n imageLabel={imageLabel}\n itineraryDateId={itineraryDateId}\n itineraryEvent={itineraryEvent}\n price={price}\n >\n {(itineraryEvent.formattedDate || itineraryEvent.startTime) && (\n <Grid container className={classes.dateTimeBox} pt={1}>\n {itineraryEvent.formattedDate && (\n <Grid item className={classes.date} data-test-id=\"itinerary-event-date\">\n {<DateRange className={classes.dateIcon}/>} {itineraryEvent.formattedDate}\n </Grid>\n )}\n\n <Grid item className={classes.date} data-test-id=\"itinerary-event-time\">\n {!itineraryEvent.startTime ? (\n <Link\n onClick={() => onEditTimeClick('add time link')}\n underline=\"hover\"\n className={classes.addTimeLink}\n sx={{position: 'relative', top: '4px'}}\n data-test-id=\"add-time-link\"\n >\n <Grid container alignItems=\"center\">\n <MoreTimeIcon className={classes.timeIcon}/>\n <Typography className={classes.addTimeText}>Add a time</Typography>\n </Grid>\n </Link>\n ) : (\n <>\n {<AccessTimeIcon className={classes.dateIcon}/>}\n {renderTimeText()}\n </>\n )}\n </Grid>\n </Grid>\n )}\n\n {renderButtons(itineraryEvent)}\n </ItineraryEventDialog>\n );\n};\n\nexport default ItineraryActivityEventDialog;\n","import React, { useContext } from \"react\";\nimport { Grid } from \"@mui/material\";\nimport CustomChip from '../../../../buttons/CustomChip';\nimport * as routes from '../../../../../routes';\nimport { ItineraryDateType } from \"../../../../shared/TripObjectTypes\";\nimport { SegmentContext } from \"../../../../Document\";\n\ntype ItineraryDatesChipBarProps = {\n itineraryDates: Array<ItineraryDateType>,\n selectedDate: string,\n};\n\nexport const ITINERARY_DATE_CHIP_WIDTH = 150;\n\nconst {\n tripItineraryDatePath,\n tripItineraryDatesPath,\n} = routes;\n\nconst ItineraryDatesChipBar = ({\n itineraryDates,\n selectedDate,\n}: ItineraryDatesChipBarProps) => {\n const { currentUserId, tripId, isPlanner } = useContext(SegmentContext);\n\n const active = (chipDate) => {\n return selectedDate === chipDate;\n };\n const eventProperties = {\n method: 'Date Chip',\n planner: isPlanner,\n tripId: tripId,\n userId: currentUserId,\n };\n\n return (\n <>\n <Grid px={1} item key={'All'}>\n <CustomChip\n active={active('All')}\n href={tripItineraryDatesPath(tripId)}\n eventName='Itinerary Day Permapage loaded'\n eventProperties={eventProperties}\n sx={{ width: 124 }}\n >\n {`All`}\n </CustomChip>\n </Grid>\n {itineraryDates.map((itineraryDate, index) => (\n <Grid px={1} item key={index}>\n <CustomChip\n active={active(itineraryDate.date)}\n href={tripItineraryDatePath(tripId, itineraryDate.id)}\n eventName='Itinerary Day Permapage loaded'\n eventProperties={eventProperties}\n >\n {itineraryDate.formattedDate}\n </CustomChip>\n </Grid>\n ))}\n </>\n )\n};\n\nexport default ItineraryDatesChipBar;\n","import React, {FunctionComponent, useContext} from \"react\";\nimport {\n Dialog as DialogBase,\n DialogContent,\n DialogActions,\n DialogContentText,\n IconButton,\n Slide,\n useMediaQuery,\n SlideProps,\n Divider,\n Grid,\n} from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport TextButton from \"../../../../buttons/TextButton\";\nimport ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport { track } from \"../../../../../services/analytics\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport { SegmentContext } from \"../../../../Document\";\n\nexport type DialogProps = {\n actions?: React.ReactNode,\n children?: React.ReactNode,\n fullWidth?: boolean,\n isOpen: boolean,\n maxWidth?: false | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\",\n message: string | React.ReactNode,\n onClose?: () => void,\n onConfirm?: () => void,\n position?: 'center' | 'bottom',\n transition?: React.ForwardRefExoticComponent<SlideProps>,\n title?: string,\n imgUrl: string,\n eventObjectPath: string,\n itineraryEvent: ItineraryEventType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n modalFooter: {\n backgroundColor: '#4A6176',\n height: '50px',\n },\n closeIcon: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n zIndex: 1,\n border: '2px solid #BEC9D4',\n color: '#505050',\n backgroundColor: '#fff',\n '&:hover': {\n backgroundColor: '#EFF2F4',\n },\n },\n dialogActions: {\n [theme.breakpoints.up(\"sm\")]: {\n padding: theme.spacing(4),\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: theme.spacing(2),\n },\n paddingTop: [[theme.spacing(1)], '!important'],\n },\n message: {\n [theme.breakpoints.up(\"sm\")]: {\n padding: theme.spacing(4),\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: theme.spacing(2),\n },\n paddingBottom: [[theme.spacing(2)], '!important'],\n paddingTop: [[theme.spacing(2)], '!important'],\n },\n messageBody: {\n margin: 0,\n },\n img: {\n maxHeight: 209,\n maxWidth: 530,\n objectFit: 'cover',\n },\n forward: {\n top: '4px',\n position: 'relative',\n color: ['#5C7993', '!important'],\n },\n footerMessage: {\n textDecoration: 'none',\n color: ['white', '!important'],\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props: SlideProps, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const ItineraryDialogModal = ({children, ...props}: DialogProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down(445));\n const position = isMobile ? 'bottom' : 'center'\n const transition = position === 'bottom' ? Transition : undefined;\n\n return (\n <Dialog\n position={position}\n transition={transition}\n {...props}\n >\n {children}\n </Dialog>\n );\n};\n\nconst Dialog = ({\n actions,\n isOpen,\n message,\n onClose,\n onConfirm,\n position = 'center',\n title,\n transition,\n children,\n imgUrl,\n eventObjectPath,\n itineraryEvent,\n ...dialogBaseProps\n}: DialogProps) => {\n const classes = useStyles();\n const { isPlanner } = useContext(SegmentContext);\n const footerText = `View full ${itineraryEvent.schedulableType.toLowerCase()} page`\n\n const closeDialog = () => {\n if (onClose) {\n onClose();\n }\n };\n\n const CloseDialogButton = () => (\n <IconButton\n className={classes.closeIcon}\n data-test-id=\"closeDialogButton\"\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n );\n const trackViewFullPageClicked = () => {\n track('View Full Page Clicked',\n {\n tripId: itineraryEvent.tripId,\n planner: isPlanner,\n objectId: itineraryEvent.schedulableId,\n type: itineraryEvent.schedulableType,\n },\n )\n };\n\n\n return (\n <DialogBase\n classes={{ paper: classes[position] }}\n open={isOpen}\n onClose={closeDialog}\n TransitionComponent={transition}\n {...dialogBaseProps}\n data-test-id=\"itinerary-dialog-modal\"\n >\n <img src={imgUrl} className={classes.img}/>\n <CloseDialogButton />\n <Grid item xs={12} container justifyContent=\"center\">\n <Grid item xs={12}>\n <Divider />\n </Grid>\n </Grid>\n <DialogContent className={classes.message}>\n {typeof message === 'string' ? (\n <DialogContentText className={classes.messageBody}>\n {message}\n </DialogContentText>\n ) : (\n message\n )}\n </DialogContent>\n {actions && (\n <DialogActions className={classes.dialogActions}>\n {actions}\n </DialogActions>\n )}\n {children}\n <Grid\n container\n item\n className={classes.modalFooter}\n data-test-id=\"itineraryModalPermapageLink\"\n alignItems=\"center\"\n justifyContent=\"center\"\n onClick={trackViewFullPageClicked}\n >\n <Grid item>\n <TextButton\n className={classes.footerMessage}\n href={eventObjectPath}\n >\n {footerText}\n </TextButton>\n </Grid>\n <Grid item className={classes.forward}>\n <ArrowForwardIosIcon />\n </Grid>\n </Grid>\n </DialogBase>\n );\n};\n\nexport default Dialog;\n","import React from \"react\";\nimport {\n ButtonBase,\n Grid,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport CardButton from \"../../../../buttons/CardButton\";\n\ntype ItineraryEventProps = {\n showActionsMenu?: boolean,\n actionsMenu: React.ReactNode,\n itineraryDialog: React.ReactNode,\n children: React.ReactNode,\n sx?: object,\n};\n\nexport const useStyles = makeStyles(theme => ({\n root: {\n border: '1px solid #7D94A9',\n borderRadius: '4px',\n padding: theme.spacing(1),\n },\n imageWrapper: {\n width: 64,\n height: 64,\n marginRight: theme.spacing(1),\n '& > img': {\n width: 64,\n height: '100%',\n objectFit: 'cover',\n },\n },\n stayImageWrapper: {\n height: 32,\n marginRight: theme.spacing(1),\n marginTop: 3,\n background: '#EEEFFF',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& > img': {\n width: 22,\n height: 15,\n margin: '0 21px',\n objectFit: 'cover',\n },\n },\n name: {\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n addTimeLink: {\n fontSize: 16,\n lineHeight: '24px',\n color: '#4A6176',\n cursor: 'pointer',\n '&:hover': {\n color: theme.palette.link.main,\n },\n '& > svg': {\n fontSize: 20,\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n paddingBottom: 4,\n },\n },\n time: {\n fontSize: 16,\n lineHeight: '24px',\n color: '#4A6176',\n },\n cardButton: {\n '&:focus': {\n border: 'none',\n outline:'none',\n },\n position: 'relative',\n },\n clickableArea: {\n position: \"absolute\",\n width: '98%',\n bottom: 0,\n right: 0,\n zIndex: 1,\n },\n clickableTime: {\n width: 'fit-content',\n },\n checkIcon: {\n color: '#1EBE95',\n fontSize: 24,\n },\n bookedImage: {\n width: 77,\n marginRight: theme.spacing(1),\n marginTop: 3,\n marginBottom: 2,\n background: '#EEEFFF',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n '& > img': {\n width: 22,\n margin: '0 21px',\n objectFit: 'cover',\n },\n },\n}));\n\ntype ClickAreaProps = {\n anchor?: string,\n linkHref?: string,\n linkTargetBlank?: boolean,\n onTripObjectClick?: () => any,\n isStayEvent?: boolean,\n sx?: object,\n}\n\nexport const ClickArea = ({\n anchor,\n onTripObjectClick,\n sx,\n}: ClickAreaProps) => {\n if (!onTripObjectClick) return null;\n\n const classes = useStyles();\n\n return (\n <ButtonBase\n className={classes.clickableArea}\n sx={sx}\n onClick={onTripObjectClick}\n id={anchor}\n />\n );\n};\n\nconst ItineraryEvent = ({\n showActionsMenu = false,\n actionsMenu,\n itineraryDialog,\n children,\n sx,\n}: ItineraryEventProps) => {\n const classes = useStyles();\n\n return (\n <CardButton className={classes.cardButton}>\n <Grid\n item\n container\n alignItems=\"center\"\n flexWrap=\"nowrap\"\n justifyContent=\"space-between\"\n className={classes.root}\n sx={sx}\n >\n <Grid container data-test-id='itinerary-event' flexWrap=\"nowrap\">\n {itineraryDialog}\n {children}\n {showActionsMenu && (\n <Grid item p={1} sx={{zIndex: 1, alignSelf: 'center'}}>\n {actionsMenu}\n </Grid>\n )}\n </Grid>\n </Grid>\n </CardButton>\n );\n};\n\nexport default ItineraryEvent;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { NumericFormat } from 'react-number-format';\nimport { makeStyles } from \"@mui/styles\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport { ViewDetailsTrackerType } from \"../../../../shared/TripObjectLink\";\nimport TripObjectLink, { EventTrackerType } from \"../../../../shared/TripObjectLink\";\nimport useSegment from \"../../../../../services/useSegment\";\n\ntype ItineraryEventDialogProps = {\n children: React.ReactNode,\n imageLabel?: React.ReactNode,\n itineraryDateId?: string,\n itineraryEvent: ItineraryEventType,\n price?: string,\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n paddingTop: theme.spacing(1),\n minHeight: '100px',\n [theme.breakpoints.up('sm')]: {\n height: '100%',\n },\n },\n divider: {\n borderColor: '#e6e7e8',\n width: '100%',\n padding: theme.spacing(1),\n },\n priceText: {\n fontSize: theme.spacing(2),\n color: '#272727',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n name: {\n position: 'relative',\n left: '3px',\n textAlign: 'left',\n lineHeight: '24px',\n color: 'black',\n fontSize: 18,\n fontWeight: 600,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: [18, '!important'],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: \"calc(100% - 88px)\",\n marginRight: theme.spacing(5),\n },\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n zIndex: 2,\n },\n externalButtons: {\n flexDirection: 'row',\n padding: '16px 0px 16px 0',\n '& button:last-child': {\n marginRight: 0,\n },\n [theme.breakpoints.down(\"sm\")]: {\n '& button': {\n marginRight: '8px',\n },\n },\n },\n}\n));\n\nexport const renderButtons = (itineraryEvent: ItineraryEventType) => {\n const classes = useStyles();\n const { trackSegment } = useSegment();\n const provider = itineraryEvent.provider?.toLowerCase().replace(/\\.com$/, \"\");\n const linkText = () => {\n switch (provider) {\n case 'vrbo':\n return 'View on Vrbo';\n case 'expedia':\n return 'View on Expedia';\n default:\n return 'View on source';\n }\n };\n\n const viewDetailsTracker = () : ViewDetailsTrackerType => ({\n category: itineraryEvent.schedulableType,\n page: 'Itinerary',\n objectId: itineraryEvent.id,\n link: itineraryEvent.url,\n });\n\n const trackViewOnMap = () => {\n trackSegment('View Map Clicked', { objectId: itineraryEvent.id });\n };\n\n const eventTracker = () : EventTrackerType => ({\n category: itineraryEvent.schedulableType,\n vertical: 'Itinerary',\n });\n\n return <>\n {(itineraryEvent.url || itineraryEvent.metadata.googlePlaceUrl) && (\n <Grid container className={classes.externalButtons}>\n <TripObjectLink\n url={itineraryEvent.url || itineraryEvent.metadata.googlePlaceUrl}\n linkText={linkText()}\n eventTracker={eventTracker()}\n viewDetailsTracker={viewDetailsTracker()}\n dataTestId='view-details-link'\n />\n {itineraryEvent.metadata.googlePlaceUrl &&\n <div onClick={trackViewOnMap}>\n <TripObjectLink\n url={itineraryEvent.metadata.googlePlaceUrl}\n linkText='View on map'\n dataTestId='view-map-link'\n viewDetailsTracker={viewDetailsTracker()}\n />\n </div>\n }\n </Grid>\n )}\n </>;\n};\n\nconst ItineraryEventDialog = ({\n children,\n imageLabel,\n itineraryEvent,\n price,\n}: ItineraryEventDialogProps) => {\n const classes = useStyles();\n\n return (\n <Grid container direction=\"column\"\n className={classes.root}\n data-test-id={`itinerary_dialog_${itineraryEvent.id}`}\n >\n {imageLabel}\n\n <Grid item data-test-id=\"event-name\">\n <Typography\n className={classes.name}\n >\n {itineraryEvent.name}\n </Typography>\n </Grid>\n\n {price && (\n <Grid item pt={1}>\n <NumericFormat\n className={classes.priceText}\n value={price}\n displayType={'text'}\n decimalScale={2}\n fixedDecimalScale={Number(price) % 1 !== 0}\n thousandSeparator={true}\n prefix={'$'}\n suffix={' per person'}\n />\n </Grid>\n )}\n\n {children}\n </Grid>\n )\n}\n\nexport default ItineraryEventDialog;\n","import React from \"react\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport Divider from \"../../../../shared/Divider\";\nimport ItineraryActivityEvent from \"./ItineraryActivityEvent\";\nimport ItineraryStayEvent from \"./ItineraryStayEvent\";\n\ntype ItineraryEventsListProps = {\n itineraryDateId: string,\n itineraryEvents: ItineraryEventType[],\n page: string,\n};\n\nconst ItineraryEventsList = ({\n itineraryDateId,\n itineraryEvents,\n page,\n}: ItineraryEventsListProps) => {\n const unscheduledEvents = itineraryEvents.filter((event) => !event.scheduled && event.schedulableType !== \"Stay\");\n const scheduledEvents = itineraryEvents.filter((event) => event.scheduled && event.schedulableType !== \"Stay\");\n const stayItineraryEvents = itineraryEvents.filter((event) => event.schedulableType === \"Stay\");\n\n const renderStayEvents = (itineraryEvents : ItineraryEventType[], showAddTimeLink = false) => (\n itineraryEvents.map((event) => (\n <Grid item key={event.id} sx={{ width: '100%' }}>\n <ItineraryStayEvent\n itineraryDateId={itineraryDateId}\n stayEvent={event}\n showActionsMenu\n showAddTimeLink={showAddTimeLink}\n isClickeable\n page={page}\n />\n </Grid>\n ))\n );\n\n const renderActivityEvents = (itineraryEvents : ItineraryEventType[], showAddTimeLink = false) => (\n itineraryEvents.map((event) => (\n <Grid item key={event.id} sx={{ width: '100%' }}>\n <ItineraryActivityEvent\n itineraryDateId={itineraryDateId}\n activityEvent={event}\n showActionsMenu\n showAddTimeLink={showAddTimeLink}\n isClickeable\n page={page}\n />\n </Grid>\n ))\n );\n\n return (\n <Grid item container direction=\"column\" spacing={2}>\n <Grid item container spacing={2} data-test-id=\"scheduled-events\">\n {renderStayEvents(stayItineraryEvents)}\n {renderActivityEvents(scheduledEvents)}\n </Grid>\n {unscheduledEvents.length > 0 && (\n <Grid item container spacing={2} mt={1} data-test-id=\"unscheduled-events\" flexDirection='column'>\n <Grid item>\n <Typography variant=\"h2\">SCHEDULE A TIME</Typography>\n </Grid>\n <Grid item>\n <Divider />\n </Grid>\n {renderActivityEvents(unscheduledEvents, true)}\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default ItineraryEventsList;\n","import React, { useCallback, useContext } from \"react\";\nimport {\n Grid,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport EditIcon from '@mui/icons-material/Edit';\nimport AddEventDropdown from \"./AddEventDropdown\";\nimport AddEventFloatingButton from \"./AddEventFloatingButton\";\nimport { ItineraryDateType } from \"../../../../shared/TripObjectTypes\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport Linkify from \"../../../../shared/Linkify\";\nimport { SegmentContext } from \"../../../../Document\";\nimport * as routes from \"../../../../../routes\";\nimport ItineraryDatesChipBar, { ITINERARY_DATE_CHIP_WIDTH } from \"./ItineraryDatesChipBar\";\nimport { setScrollBarHorizontalPosition } from \"../../../../../services/setScrollBarHorizontalPosition\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport ItineraryEventsList from \"./ItineraryEventsList\";\nimport Divider from \"../../../../shared/Divider\";\nimport clsx from \"clsx\";\nimport useSegment from \"../../../../../services/useSegment\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport AddDescriptionLink from \"../ItineraryDatesPage/AddDescriptionLink\";\n\nconst {\n editTripItineraryDatePath,\n tripItineraryDatePath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n filterContainer: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n },\n itineraryDateTitle: {\n textAlign: 'left',\n lineHeight: theme.spacing(4),\n color: theme.palette.text.primary,\n fontSize: 20,\n fontWeight: 600,\n minWidth: '100%',\n overflow: 'hidden',\n },\n itineraryDateSubtitle: {\n fontSize: 20,\n },\n itineraryDaySubheader: {\n marginBottom: theme.spacing(2),\n },\n note: {\n fontSize: theme.spacing(2),\n },\n editButton: { // TODO: Refactor DRY\n width: 32,\n height: 32,\n backgroundColor: \"#FFFFFF\",\n border: `1px solid ${theme.palette.general.background.disabled}`,\n \"&:hover\": {\n backgroundColor: '#F6F6F6',\n border: `1px solid ${theme.palette.primary.main}`,\n },\n '& > svg': {\n color: '#334351',\n },\n },\n itineraryHeader: {\n maxWidth: '250px',\n },\n dayAndEditSection: {\n justifyContent: 'space-between',\n },\n chevronRight: {\n fontSize: theme.typography.h3.fontSize,\n color: theme.palette.primary.main,\n fontWeight: 600,\n '& > svg': {\n fontSize: '2rem',\n },\n },\n}));\n\ntype ItineraryMainContentType = {\n itineraryDate: ItineraryDateType,\n itineraryDates: Array<ItineraryDateType>,\n availableActivitiesCount: number,\n scheduleListView?: boolean,\n page: string,\n};\n\nconst ItineraryMainContent = ({\n itineraryDate,\n itineraryDates,\n availableActivitiesCount,\n scheduleListView = false,\n page,\n}: ItineraryMainContentType) => {\n const classes = useStyles();\n const { tripId } = useContext(SegmentContext);\n const { trackLinkSegment } = useSegment();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const refs = useCallback((element) => {\n if(element !== null) {\n trackLinkSegment(\n element,\n 'Edit Itinerary Day Initiated ',\n {\n page: page,\n },\n );\n }\n }, []);\n\n return(\n <Grid data-test-id=\"itinerary-date-section\">\n {!scheduleListView && (\n <>\n <Grid\n container\n pb={1}\n className={classes.filterContainer}\n ref={(ele) => {setScrollBarHorizontalPosition(ele, ITINERARY_DATE_CHIP_WIDTH, itineraryDate.dayNumber - 1)}}\n >\n <ItineraryDatesChipBar\n itineraryDates={itineraryDates}\n selectedDate={itineraryDate.date}\n />\n </Grid>\n </>\n )}\n <Grid container spacing={1} justifyContent=\"space-between\" pt={5} data-test-id='itinerary-date-card' >\n <Grid\n className={clsx({\n [classes.itineraryHeader]: !isMobile,\n })}\n pt={2}\n container\n item\n wrap=\"nowrap\"\n >\n <Grid container>\n <Grid container item className={clsx( {\n [classes.dayAndEditSection]: isMobile,\n })}>\n <Grid item>\n <Typography className={classes.itineraryDateTitle}>\n {`Day ${itineraryDate.dayNumber}`}\n </Typography>\n </Grid>\n {!scheduleListView && itineraryDate.description && (\n <Grid item ml={2}>\n <IconButton\n className={classes.editButton}\n data-test-id=\"edit-button\"\n href={editTripItineraryDatePath(itineraryDate.tripId, itineraryDate.id)}\n ref={(element) => refs(element)}\n >\n <EditIcon fontSize=\"small\" />\n </IconButton>\n </Grid>\n )}\n { scheduleListView && isMobile && (\n <Grid item>\n <ButtonBase\n href={tripItineraryDatePath(tripId, itineraryDate)}\n className={classes.chevronRight}\n data-test-id='view-button'\n >\n View\n <ChevronRightIcon fontSize=\"small\" />\n </ButtonBase>\n </Grid>\n )}\n </Grid>\n <Grid item>\n <Typography pt={1} className={classes.itineraryDateSubtitle}>\n {itineraryDate.formattedDate}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n {!isMobile && (\n <Grid item>\n { !scheduleListView && (\n <AddEventDropdown tripId={tripId} itineraryDateId={itineraryDate.id} />\n )}\n { scheduleListView && (\n <ButtonBase\n href={tripItineraryDatePath(tripId, itineraryDate)}\n className={classes.chevronRight}\n data-test-id='view-button'\n >\n View\n <ChevronRightIcon fontSize=\"small\" />\n </ButtonBase>\n )}\n </Grid>\n )}\n </Grid>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n my={2}\n >\n <Grid item className={classes.note}>\n {\n itineraryDate.description ?\n <Linkify>{itineraryDate.description}</Linkify> :\n <AddDescriptionLink itineraryDate={itineraryDate} />\n }\n </Grid>\n </Grid>\n <Divider />\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n my={2}\n >\n {itineraryDate.itineraryEvents.length > 0 ? (\n <ItineraryEventsList\n itineraryDateId={itineraryDate.id}\n itineraryEvents={itineraryDate.itineraryEvents}\n page={page}\n />\n ) : (\n <NoSuggestionsYet\n illustration='itinerary_02'\n subheading='Start adding to your day.'\n />\n )}\n </Grid>\n {isMobile && !scheduleListView && <AddEventFloatingButton tripId={tripId} itineraryDateId={itineraryDate.id} />}\n </Grid>\n )\n};\n\nexport default ItineraryMainContent;\n","import React, { useState } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport ActionsMenu from '../../../../shared/ActionsMenu';\nimport * as routes from '../../../../../routes';\nimport { ItineraryDialogModal } from \"./ItineraryDialogModal\";\nimport ItineraryStayEventDialog from \"./ItineraryStayEventDialog\";\nimport ItineraryEvent, {\n ClickArea,\n useStyles,\n} from \"./ItineraryEvent\";\nimport moment from \"moment\";\nimport {\n useTrackDeletionInitiated,\n useTrackEventCardClicked,\n useTrackItineraryEventEditInitiated,\n} from \"../../../../../services/segmentEvents/useItineraryEvents\";\nimport clsx from \"clsx\";\n\nconst {\n tripItineraryEventPath,\n tripStayPath,\n editTripStayEventPath,\n newTripStayBookingPath,\n editTripStayBookingPath,\n tripItineraryDatePath,\n} = routes;\n\ntype ItineraryStayEventProps = {\n itineraryDateId?: string,\n stayEvent: ItineraryEventType,\n showAddTimeLink?: boolean,\n showActionsMenu?: boolean,\n isClickeable?: boolean,\n isInModal?: boolean,\n page: string,\n};\n\nconst ItineraryStayEvent = ({\n itineraryDateId = null,\n stayEvent,\n showActionsMenu = false,\n isClickeable = false,\n isInModal = false,\n page,\n}: ItineraryStayEventProps) => {\n const classes = useStyles();\n const fallbackSource = \"/assets/activity_fallback_simple.svg\";\n const image = \"/assets/Stay_icon.svg\";\n const { tripId } = stayEvent;\n const searchParams = new URLSearchParams(window.location.search);\n const startDialogOpen = searchParams.toString().includes(`eventId=${stayEvent.id}`);\n const [isDialogOpen, setIsDialogOpen ] = useState(startDialogOpen);\n const [imageSource, setImageSource] = useState(stayEvent.imageUrl || fallbackSource);\n const tripObjectPath = itineraryDateId ? tripStayPath(tripId, stayEvent.schedulableId, { itinerary_date_id: itineraryDateId, source: page }) : tripStayPath(tripId, stayEvent.schedulableId);\n const cardHeight = isInModal ? 80 : 48;\n const trackEventCardClicked = useTrackEventCardClicked();\n const trackItineraryEventEditInitiated = useTrackItineraryEventEditInitiated();\n const trackDeletionInitiated = useTrackDeletionInitiated();\n const showBookedIcon = isInModal || !stayEvent.isBooked\n const newBookingPath = `${newTripStayBookingPath(tripId, stayEvent.schedulableId)}?stay_event_id=${stayEvent.id}&source=${page}&itinerary_date_id=${itineraryDateId}`;\n const firstStayBooking = stayEvent.stayBookings?.at(0)\n const updateBookingPath = firstStayBooking ? `${editTripStayBookingPath(tripId, stayEvent.schedulableId, firstStayBooking.uuid)}?stay_event_id=${stayEvent.id}&source=${page}&itinerary_date_id=${itineraryDateId}` : undefined;\n\n const onButtonClick = () => {\n if(page === 'tripUpdates'){\n window.location.href = tripItineraryDatePath(tripId, itineraryDateId, {eventId: stayEvent.id});\n } else {\n setIsDialogOpen(!isDialogOpen);\n }\n trackEventCardClicked(stayEvent.schedulableType, stayEvent.schedulableId, page);\n };\n\n const onEditTimeClick = (method : string) => {\n trackItineraryEventEditInitiated(method, stayEvent.schedulableType, stayEvent.schedulableId, page);\n window.location.href = `${editTripStayEventPath(tripId, stayEvent.id)}?itinerary_date_id=${itineraryDateId}&source=${page}`;\n };\n\n const renderDateText = () => {\n const { startDate, endDate } = stayEvent;\n const formattedStartDate = moment(startDate, \"YYYY-MM-DD\").format('MM/DD/YYYY');\n const formattedEndDate = moment(endDate, \"YYYY-MM-DD\").format('MM/DD/YYYY');\n const text = (startDate && endDate) ? `${formattedStartDate} - ${formattedEndDate}` : \"No date set\";\n return(\n <Typography className={classes.time} data-test-id=\"itinerary-event-time\">\n {text}\n </Typography>\n )}\n\n const renderActionsMenu = () => (\n <ActionsMenu\n onEditClick={() => onEditTimeClick('overflow')}\n deletePath={`${tripItineraryEventPath(tripId, stayEvent.id)}?itinerary_date_id=${itineraryDateId}&source=${page}`}\n resourceName=\"event\"\n displayMarkAsBooked={stayEvent.stayBookings?.length === 0}\n onDeleteClick={() => trackDeletionInitiated(stayEvent.schedulableType, stayEvent.schedulableId, page)}\n newBookingPath={newBookingPath}\n updateBookingPath={updateBookingPath}\n />\n );\n\n const renderItineraryDialogModal = () => (\n <ItineraryDialogModal\n title={stayEvent.name}\n fullWidth\n maxWidth=\"xs\"\n imgUrl={imageSource || fallbackSource}\n eventObjectPath={tripObjectPath}\n itineraryEvent={stayEvent}\n message={\n <ItineraryStayEventDialog\n itineraryDateId={itineraryDateId}\n itineraryEvent={stayEvent}\n />\n }\n isOpen={isDialogOpen}\n onClose={()=>setIsDialogOpen(false)}\n />\n )\n\n return (\n <ItineraryEvent\n actionsMenu={renderActionsMenu()}\n showActionsMenu={showActionsMenu}\n itineraryDialog={renderItineraryDialogModal()}\n sx={{ height: cardHeight }}\n >\n {\n isClickeable &&\n <ClickArea\n anchor={`itineraryEvent_${stayEvent.id}`}\n onTripObjectClick={onButtonClick}\n sx={{ height: cardHeight }}\n />\n }\n <Grid item className={clsx(\n {\n [classes.imageWrapper]: isInModal,\n [classes.stayImageWrapper]: !isInModal && !stayEvent.isBooked,\n [classes.bookedImage]: stayEvent.isBooked,\n },\n )}>\n {showBookedIcon ? (\n <img\n alt=\"\"\n onError={() => setImageSource(fallbackSource)}\n src={isInModal ? imageSource : (image || fallbackSource)}\n />\n ) : (\n <img alt=\"check mark icon\" src={\"/assets/illustrations/Yes.svg\"} style={{zIndex: 3}} />\n )}\n </Grid>\n <Grid\n item\n container\n direction=\"column\"\n justifyContent=\"space-evenly\"\n flexWrap=\"nowrap\"\n flexGrow={2}\n sx={{ overflow: 'hidden' }}\n >\n <Grid item data-test-id=\"itinerary-event-name\">\n <Typography className={classes.name}>{stayEvent.name}</Typography>\n </Grid>\n { isInModal && renderDateText() }\n </Grid>\n </ItineraryEvent>\n );\n};\n\nexport default ItineraryStayEvent;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Grid, Stack, Typography } from \"@mui/material\";\nimport { DateRange } from \"@mui/icons-material\";\nimport ItineraryEventDialog, { renderButtons } from \"./ItineraryEventDialog\";\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport RichText from \"../../../../shared/RichText\";\nimport Button from \"../../../../buttons/Button\";\nimport moment from \"moment/moment\";\nimport { editTripStayEventPath } from \"../../../../../routes\";\nimport useSegment from \"../../../../../services/useSegment\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport Divider from \"../../../../shared/Divider\";\nimport Avatar from \"../../../../avatars/Avatar\";\nimport { StayBookingDetailsProps } from \"../../../comments/IndexPage/StayBookingDetails\";\nimport BookButton from \"../HousingPage/Stay/BookButton\";\n\ntype ItineraryStayEventDialogProps = {\n itineraryDateId?: string,\n itineraryEvent: ItineraryEventType,\n};\n\nconst useStyles = makeStyles(theme => ({\n date: {\n fontSize: theme.spacing(2),\n display: 'flex',\n paddingRight: theme.spacing(2),\n color: '#4A6176',\n },\n dateIcon: {\n fontSize: '1.2rem',\n top: '2px',\n position: 'relative',\n marginRight: theme.spacing(1),\n },\n dateTimeBox: {\n color: '#4A6176',\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n [theme.breakpoints.down(\"md\")]: {\n fontSize: 18,\n },\n },\n greenCheck: {\n top: '4px',\n position: 'relative',\n marginRight: '8px',\n color: '#1EBE95',\n },\n boldText: {\n fontWeight: 600,\n fontSize: '16px',\n margin: \"auto 0\",\n },\n refundable: {\n fontWeight: 400,\n fontSize: '16px',\n margin: \"auto 0\",\n color: '#69737A',\n },\n checkinText: {\n fontWeight: 400,\n margin: \"auto 0\",\n },\n}));\n\nconst BookingDetails = ({ booking } : StayBookingDetailsProps) => {\n const classes = useStyles();\n const formatDate = (date) => moment(date, \"YYYY-MM-DD\").format(\"ddd, MMM D\");\n const formatTime = (time) => moment(time, \"HH:mm:ss\").format(\"h:mm A\");\n const formatDateTime = (date, time = \"\") => {\n if (date && time) {\n return `${formatDate(date)}, ${formatTime(time)}`\n } else {\n return formatDate(date)\n }\n };\n const checkIn = formatDateTime(booking.checkInDate, booking.checkInTime);\n const checkOut = formatDateTime(booking.checkOutDate, booking.checkOutTime);\n const refundability = {\n 'non_refundable': 'Non-refundable',\n 'refundable': `Refundable until ${moment((booking?.refundableUntil), \"YYYY-MM-DD\").format(\"MMM Do\")}`,\n }\n\n return (\n <Stack >\n <Divider/>\n <Typography className={classes.title} pt={1} pb={2}>\n <CheckCircleIcon className={classes.greenCheck} />{'Booking details'}\n </Typography>\n <Typography className={classes.boldText}>{'Check-in: '} <span className={classes.checkinText}>{checkIn}</span></Typography>\n <Typography className={classes.boldText}>{'Check-out: '} <span className={classes.checkinText}>{checkOut}</span></Typography>\n <Grid item pt={1} direction=\"row\">\n <Typography className={classes.refundable}>{refundability[booking.refundability]}</Typography>\n </Grid>\n <Grid item container xs={12} pt={2}>\n <Grid item pr={1} >\n <Avatar src={booking.author.avatarUrl} size='xs' />\n </Grid>\n <Typography className={classes.checkinText}>\n Booked by <span style={{fontWeight: 600}}>{booking.author.displayName}</span>\n </Typography>\n </Grid>\n </Stack>\n );\n};\n\nconst ItineraryStayEventDialog = ({\n itineraryDateId,\n itineraryEvent,\n}: ItineraryStayEventDialogProps) => {\n const classes = useStyles();\n const formattedStartDate = moment(itineraryEvent.startDate, \"YYYY-MM-DD\").format(\"ddd, MMM Do\");\n const formattedEndDate = moment(itineraryEvent.endDate, \"YYYY-MM-DD\").format('ddd, MMM Do');\n const displayBookButton = itineraryEvent.bookable;\n const { trackSegment } = useSegment();\n\n const onAddNotesClick = () => {\n trackSegment('Add Note Clicked', {objectId: itineraryEvent.id});\n window.location.href = `${editTripStayEventPath(itineraryEvent.tripId, itineraryEvent.id)}?itinerary_date_id=${itineraryDateId}`;\n };\n\n return (\n <ItineraryEventDialog\n itineraryDateId={itineraryDateId}\n itineraryEvent={itineraryEvent}\n >\n <Grid container className={classes.dateTimeBox} pt={1}>\n <Grid item className={classes.date} data-test-id=\"itinerary-event-date\">\n {<DateRange className={classes.dateIcon}/>} {formattedStartDate} - {formattedEndDate}\n </Grid>\n </Grid>\n\n {renderButtons(itineraryEvent)}\n {displayBookButton && <BookButton fullWidth url={itineraryEvent.url} page='itinerary' provider={itineraryEvent.provider} />}\n {itineraryEvent.stayBookings?.length > 0 &&\n <BookingDetails\n stayId={itineraryEvent.schedulableId}\n tripId={itineraryEvent.tripId}\n booking={itineraryEvent.stayBookings[0]}\n />\n }\n <Grid container pt={2}>\n <Grid item sx={{width: '100%'}}>\n {itineraryEvent.notes ? (\n <RichText value={itineraryEvent.notes} />\n ) : (\n <Button\n aria-label='add-notes-button'\n disabled={false}\n data-test-id='add-notes-button'\n fullWidth\n onClick={() => onAddNotesClick()}\n variant={'secondary'}\n >\n Add Note\n </Button>\n )}\n </Grid>\n </Grid>\n </ItineraryEventDialog>\n );\n};\n\nexport default ItineraryStayEventDialog;\n","import React from \"react\";\nimport { Typography, Stack, Collapse } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { track } from '../../../../services/analytics';\nimport { SegmentContext } from \"../../../Document\";\n\nconst useStyles = makeStyles((theme) => ({\n ItineraryDatesChangeExplanation: {\n display: \"flex\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n borderTop: \"1px solid #BEC9D4\",\n borderBottom: \"1px solid #BEC9D4\",\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n title: {\n fontWeight: '600',\n fontSize: '16px',\n lineHeight: '24px',\n color: '#5C7993',\n },\n toggleButton: {\n fontWeight: '600',\n fontSize: '16px',\n lineHeight: '24px',\n color: '#545DFC',\n cursor: 'pointer',\n },\n text: {\n fontStyle: 'normal',\n fontWeight: '400',\n fontSize: '14px',\n lineHeight: '21px',\n marginTop: theme.spacing(2),\n },\n}));\n\nconst ItineraryDatesChangeExplanation = () => {\n const [isShowing, setIsShowing] = React.useState(false);\n const classes = useStyles();\n const { tripId, isPlanner } = React.useContext(SegmentContext);\n\n const onToggleClick = () => {\n setIsShowing( prevState => {\n track('Itinerary Edit Dates Tip Toggled', {\n tripId,\n planner: isPlanner,\n status: prevState ? 'hide' : 'visible',\n });\n return !prevState;\n } )\n }\n\n return (\n <div className={classes.ItineraryDatesChangeExplanation}>\n <Stack flexDirection=\"row\" justifyContent=\"space-between\">\n <Typography className={classes.title}>\n How will changing dates affect your itinerary?\n </Typography>\n <Typography \n className={classes.toggleButton}\n onClick={onToggleClick}\n >\n {isShowing ? 'Hide' : 'Show'}\n </Typography>\n </Stack>\n <Collapse in={isShowing}>\n <Typography className={classes.text}>\n Events added to a numbered day on your itinerary will stay attached to that day,\n even if your trip’s start and end dates change. \n <br />\n <br />\n Ex: Your original trip dates were May 1 - May 7 and a “Welcome lunch”\n event is scheduled for Day 1. Your trip dates then change to Oct 1 - Oct 7.\n The “Welcome lunch” will remain attached to Day 1, which is now Oct 1.\n </Typography>\n </Collapse>\n </div>\n)};\n\nexport default ItineraryDatesChangeExplanation;","import React from \"react\";\nimport MainContent from \"./ItineraryDatesPage/MainContent\";\nimport withLayout from \"./withLayout\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport { ItineraryType } from \"../../../shared/TripObjectTypes\";\n\ntype ItineraryDatesPageProps = {\n itinerary: ItineraryType,\n};\n\nconst ItineraryDatesPage = ({\n itinerary,\n}: ItineraryDatesPageProps) => {\n\n return (\n <SideBarPage\n mainContent={\n <MainContent\n itinerary={itinerary}\n />}\n />\n );\n}\n\nexport default withLayout(ItineraryDatesPage, { fluid: true });\n","import React, { useCallback, useContext } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport Link from \"@mui/material/Link\";\nimport EditIcon from '@mui/icons-material/Edit';\nimport { ItineraryDateType } from \"../../../../shared/TripObjectTypes\";\nimport { editTripItineraryDatePath } from '../../../../../routes';\nimport { trackLink as trackAnalyticsEvent } from '../../../../../services/analytics';\nimport { SegmentContext } from \"../../../../Document\";\n\ntype AddDescriptionLinkProps = {\n itineraryDate: ItineraryDateType,\n};\n\nconst useStyles = makeStyles(theme => ({\n addDescriptionLink: {\n pointerEvents: 'all',\n fontWeight: '400',\n fontSize: theme.typography.h3.fontSize,\n lineHeight: '24px',\n color: '#4A6176',\n '&:hover': {\n color: theme.palette.link.main,\n },\n },\n editIcon: {\n fontSize: '15px',\n marginRight: '5px',\n },\n}));\n\nconst AddDescriptionLink = ({\n itineraryDate,\n}: AddDescriptionLinkProps) => {\n const classes = useStyles();\n const { currentUserId, tripId, isPlanner } = useContext(SegmentContext);\n const refs = useCallback((element) => {\n if(element !== null) {\n trackAnalyticsEvent(\n element,\n 'Edit Itinerary Day Initiated ',\n {\n userId: currentUserId,\n tripId: tripId,\n planner: isPlanner,\n page: 'Itinerary List',\n },\n );\n }\n }, []);\n\n return (\n <Link\n href={editTripItineraryDatePath(itineraryDate.tripId, itineraryDate.id)}\n className={classes.addDescriptionLink}\n underline=\"hover\"\n ref={(element) => refs(element)}\n >\n <EditIcon className={classes.editIcon}/>\n Add a description\n </Link>\n );\n};\n\nexport default AddDescriptionLink;\n\n","import React, { useCallback, useContext } from \"react\";\nimport {\n ButtonBase,\n Grid,\n Typography,\n Link,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport { ItineraryDateType } from \"../../../../shared/TripObjectTypes\";\nimport CardButton from \"../../../../buttons/CardButton\";\nimport { tripItineraryDatePath } from '../../../../../routes';\nimport AddDescriptionLink from \"./AddDescriptionLink\";\nimport { trackLink as trackLinkAnalyticsEvent } from \"../../../../../services/analytics\";\nimport { SegmentContext } from \"../../../../Document\";\n\ntype ItineraryDateProps = {\n itineraryDate: ItineraryDateType,\n};\n\nconst useStyles = makeStyles(theme => ({\n itinerary: {\n borderRadius: theme.spacing(.4),\n position: 'relative',\n pointerEvents: 'none',\n zIndex: 1,\n },\n dayBlock: {\n minWidth: '64px',\n width: '64px',\n height: '56px',\n background: '#EEEFFF',\n borderRadius: '4px',\n fontWeight: theme.typography.h3.fontWeight,\n fontSize: theme.typography.h3.fontSize,\n marginRight: '12px',\n },\n description: {\n fontSize: '16px',\n lineHeight: '24px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n descriptionWrapper: {\n width: '100%',\n },\n itineraryDate: {\n fontSize: '18px',\n fontWeight: theme.typography.h2.fontWeight,\n lineHeight: '24px',\n textAlign: 'left',\n },\n chevronRight: {\n fontSize: theme.typography.h3.fontSize,\n color: theme.palette.primary.main,\n '& > svg': {\n fontSize: '2rem',\n },\n },\n chevronRightWrapper: {\n maxWidth: '16px',\n },\n dateBox: {\n '&:hover': {\n cursor: 'pointer',\n },\n width: '100%',\n },\n root: {\n position: 'relative',\n }\n}));\n\nconst ItineraryDate = ({\n itineraryDate,\n}: ItineraryDateProps) => {\n const { isPlanner, tripId, currentUserId } = useContext(SegmentContext);\n const classes = useStyles();\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackLinkAnalyticsEvent(\n element,\n 'Itinerary Day Permapage loaded',\n {\n method: 'Date Card',\n planner: isPlanner,\n tripId: tripId,\n userId: currentUserId,\n },\n );\n }\n }, []);\n\n return <>\n <CardButton className={classes.root} testId='itinerary-date-card'>\n <Link\n data-test-id='itinerary-date-card-link'\n href={tripItineraryDatePath(itineraryDate.tripId, itineraryDate.id)}\n ref={(el) => refs(el)}\n sx={{ position: 'absolute', left: 0, top: 0, right: 0, bottom: 0 }}\n />\n <Grid\n container\n item\n data-test-id='itinerary-date'\n className={classes.itinerary}\n sx={{ padding: 2 }}\n flexWrap=\"nowrap\"\n >\n <Grid item container direction=\"column\" alignItems='center' justifyContent='center' className={classes.dayBlock}>\n <Grid item>Day</Grid>\n <Grid item>{itineraryDate.dayNumber}</Grid>\n </Grid>\n <Grid item container direction=\"column\" spacing={1} sx={{ width: \"calc(100% - 88px)\" }}>\n <Grid item>\n <Typography className={classes.itineraryDate}>{itineraryDate.formattedDate}</Typography>\n </Grid>\n <Grid item className={classes.descriptionWrapper}>\n {itineraryDate.description ? (\n <Typography className={classes.description}>{itineraryDate.description}</Typography>\n ) : (\n <AddDescriptionLink itineraryDate={itineraryDate} />\n )}\n </Grid>\n </Grid>\n <Grid item className={classes.chevronRightWrapper}>\n <span className={classes.chevronRight}>\n <ChevronRightIcon />\n </span>\n </Grid>\n </Grid>\n </CardButton>\n </>;\n};\n\nexport default ItineraryDate;\n","import React from \"react\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport { ItineraryDateType } from \"../../../../shared/TripObjectTypes\";\nimport ItineraryDate from \"./ItineraryDate\";\n\ntype ItineraryDatesListProps = {\n itineraryDates: ItineraryDateType[],\n};\n\nconst ItineraryDatesList = ({\n itineraryDates,\n}: ItineraryDatesListProps) => {\n return <>\n <Grid container direction=\"column\" spacing={2} mb={3}>\n {itineraryDates.map((itineraryDate, index) => (\n <Grid item key={`itinerary-date-${index}`} sx={{ width: '100%' }}>\n <ItineraryDate itineraryDate={itineraryDate} />\n </Grid>\n ))}\n </Grid>\n </>;\n};\n\nexport default ItineraryDatesList;\n","import React, { useState, useContext } from \"react\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport ItineraryDatesList from \"./ItineraryDatesList\";\nimport { ItineraryType } from \"../../../../shared/TripObjectTypes\";\nimport ActionsMenu from '../../../../shared/ActionsMenu';\nimport * as routes from '../../../../../routes';\nimport { SegmentContext } from \"../../../../Document\";\nimport { track as trackAnalyticsEvent } from \"../../../../../services/analytics\";\n\nconst {\n tripItineraryPath,\n editTripItineraryPath,\n} = routes;\n\ntype MainContentProps = {\n itinerary: ItineraryType,\n};\n\nconst MainContent = ({\n itinerary,\n}: MainContentProps) => {\n const { currentUserId, tripId, isPlanner } = useContext(SegmentContext);\n\n const trackDeletionInitiated = () => {\n trackAnalyticsEvent('Itinerary Deletion Initiated',\n {\n tripId: tripId,\n userId: currentUserId,\n planner: isPlanner,\n },\n )\n };\n\n const trackEditClick = () => {\n trackAnalyticsEvent('Itinerary Edit Dates Initiated',\n {\n tripId: tripId,\n planner: isPlanner,\n },\n )\n };\n\n const goToEditPage = () => {\n trackEditClick();\n window.location.href = editTripItineraryPath(tripId);\n };\n\n return <>\n <SectionHeader\n title='Itinerary'\n note='Build an itinerary to start organizing your destinations, stays, and activities by day.'\n rightElement={isPlanner && (\n <ActionsMenu\n deletePath={tripItineraryPath(tripId)}\n dense={false}\n resourceName=\"itinerary\"\n onDeleteClick={trackDeletionInitiated}\n onEditClick={goToEditPage}\n />\n )}\n />\n <ItineraryDatesList itineraryDates={itinerary.itineraryDates} />\n </>;\n};\n\nexport default MainContent;\n","import React from \"react\";\nimport { Typography, Stack, Switch } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { ChangeEvent } from \"react\";\n\ntype ItineraryDatesChangeExplanationProps = {\n switchChecked: boolean,\n // eslint-disable-next-line no-unused-vars\n onSwitchClick: (e: ChangeEvent<HTMLInputElement>) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n ItineraryDatesReduction: {\n display: \"flex\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n background: '#EEEFFF',\n borderRadius: '8px',\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n title: {\n fontWeight: '600',\n fontSize: '20px',\n lineHeight: '30px',\n color: '#262A71',\n },\n text: {\n fontWeight: '400',\n fontSize: '14px',\n lineHeight: '24px',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n confirmSubtitle: {\n fontWeight: '600',\n fontSize: '16px',\n lineHeight: '24px',\n color: '#262A71',\n },\n}));\n\nconst ItineraryDatesReduction = ({switchChecked, onSwitchClick} : ItineraryDatesChangeExplanationProps) => {\n const classes = useStyles();\n\n return (\n <div className={classes.ItineraryDatesReduction}>\n <Typography className={classes.title}>\n Shorten itinerary?\n </Typography>\n <Typography className={classes.text}>\n You’ve shortened your itinerary. Events associated with days you’ve\n removed from your itinerary will need to be re-added.\n </Typography>\n <Stack flexDirection=\"row\" justifyContent=\"space-between\" alignItems=\"center\">\n <Typography className={classes.confirmSubtitle}>\n Confirm changes\n </Typography>\n <Switch\n checked={switchChecked}\n onChange={onSwitchClick}\n />\n </Stack>\n </div>\n)};\n\nexport default ItineraryDatesReduction;\n","import dayjs from \"dayjs\";\n\nexport const durationInDays = (startDate: string, endDate: string) : number => {\n return dayjs(endDate)?.diff(dayjs(startDate), 'days')\n};\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripItineraryPath } from \"../../../../routes\";\nimport { default as DateRangePicker } from \"../../../shared/CustomDateRangePicker\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport { ItineraryType } from \"../../../shared/TripObjectTypes\";\nimport ItineraryDatesChangeExplanation from \"./ItineraryDatesChangeExplanation\";\nimport ItineraryDatesReduction from \"./ItineraryDatesReduction\";\nimport { durationInDays } from \"../../../../services/dates\";\n\nexport type ItineraryFormProps = {\n itinerary?: ItineraryType,\n errors?: string[],\n tripId: string\n};\n\ntype FormOption = {\n formMethod: 'patch',\n subtitle: string,\n title: string,\n labelText: string,\n};\n\ntype FormOptions = {\n edit: FormOption\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n fontSize: 16,\n color: theme.palette.text.primary,\n },\n}));\n\nconst ItineraryEditForm = ({\n itinerary,\n errors,\n tripId,\n}: ItineraryFormProps) => {\n\n const classes = useStyles();\n\n const [ initialTotalDays ] = React.useState(durationInDays(itinerary?.startDate, itinerary?.endDate));\n const [switchChecked, setSwitchChecked] = React.useState(false);\n\n const reducer = (state, action) => {\n switch (action.type) {\n case 'setDates':\n return {...state,\n startDate: action.payload.startDate,\n endDate: action.payload.endDate,\n areLessDays: durationInDays(action.payload.startDate, action.payload.endDate) < initialTotalDays,\n };\n default:\n throw new Error();\n }\n };\n\n const initialState = {\n startDate: itinerary?.startDate,\n endDate: itinerary?.endDate,\n areLessDays: false,\n };\n\n const [state, dispatch] = React.useReducer(reducer, initialState);\n\n const onDatesChange = (dates) => {\n dispatch({type: 'setDates', payload: {startDate: dates[0], endDate: dates[1]}});\n };\n\n const itineraryFormOptions:FormOptions = {\n edit: {\n formMethod: 'patch',\n subtitle: 'Change your start and end dates to reflect updates to your trip’s itinerary.',\n title: 'Edit itinerary',\n labelText: 'What are your new dates?',\n },\n }\n\n const disableSubmit = () => (\n state.areLessDays && !switchChecked\n );\n\n return (\n <ModalForm\n closePath={tripItineraryPath(tripId)}\n formActionPath={tripItineraryPath(tripId)}\n formMethod={itineraryFormOptions['edit'].formMethod}\n saveButtonLabel='Save'\n subtitle={itineraryFormOptions['edit'].subtitle}\n title={itineraryFormOptions['edit'].title}\n withChangeDetection\n disabledSubmit={disableSubmit()}\n saveTooltipText={disableSubmit() && 'Confirm your changes before pressing save.'}\n >\n {errors && (\n <Box mb={2}>\n <Errors errors={errors} />\n </Box>\n )}\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.label}>{itineraryFormOptions['edit'].labelText}</Typography>\n </Grid>\n <Grid item>\n <FormContext.Consumer>\n {({ onFormChange }) => (\n <DateRangePicker\n autoComplete=\"off\"\n defaultEndValue={itinerary?.endDate}\n defaultStartValue={itinerary?.startDate}\n helperText={false}\n nameEnd=\"itinerary[end_date]\"\n nameStart=\"itinerary[start_date]\"\n onChange={dates => {\n onDatesChange(dates);\n onFormChange()\n }}\n />\n )}\n </FormContext.Consumer>\n </Grid>\n <>\n <Grid item>\n <ItineraryDatesChangeExplanation />\n </Grid>\n {state.areLessDays && (\n <Grid item>\n <input type=\"hidden\" name=\"shorten_trip_toggled\" value={switchChecked.toString()} />\n <ItineraryDatesReduction\n switchChecked={switchChecked}\n onSwitchClick={e => setSwitchChecked(e.target.checked)} />\n </Grid>\n )}\n </>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(ItineraryEditForm);\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripItineraryPath } from \"../../../../routes\";\nimport { default as DateRangePicker } from \"../../../shared/CustomDateRangePicker\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport { ItineraryType } from \"../../../shared/TripObjectTypes\";\n\nexport type ItineraryFormProps = {\n itinerary?: ItineraryType,\n errors?: string[],\n tripId: string,\n isEditing?: boolean,\n};\n\ntype FormOption = {\n formMethod: 'post',\n subtitle: string,\n title: string,\n labelText: string,\n};\n\ntype FormOptions = {\n create: FormOption,\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n fontSize: 16,\n color: theme.palette.text.primary,\n },\n}));\n\nconst ItineraryForm = ({\n itinerary,\n errors,\n tripId,\n}: ItineraryFormProps) => {\n\n const classes = useStyles();\n\n const itineraryFormOptions:FormOptions = {\n create: {\n formMethod: 'post',\n subtitle: 'Enter your start and end dates to create a day-by day itinerary for your trip.',\n title: 'Create itinerary',\n labelText: 'What are your trip dates?',\n },\n }\n\n return (\n <ModalForm\n closePath={tripItineraryPath(tripId)}\n formActionPath={tripItineraryPath(tripId)}\n formMethod={itineraryFormOptions['create'].formMethod}\n saveButtonLabel='Save'\n subtitle={itineraryFormOptions['create'].subtitle}\n title={itineraryFormOptions['create'].title}\n withChangeDetection={!itinerary}\n >\n {errors && (\n <Box mb={2}>\n <Errors errors={errors} />\n </Box>\n )}\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.label}>{itineraryFormOptions['create'].labelText}</Typography>\n </Grid>\n <Grid item>\n <FormContext.Consumer>\n {({ onFormChange }) => (\n <DateRangePicker\n autoComplete=\"off\"\n defaultEndValue={itinerary?.endDate}\n defaultStartValue={itinerary?.startDate}\n helperText={false}\n nameEnd=\"itinerary[end_date]\"\n nameStart=\"itinerary[start_date]\"\n onChange={() => onFormChange()}\n />\n )}\n </FormContext.Consumer>\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(ItineraryForm);\n","import React from \"react\";\nimport withLayout from \"./withLayout\";\nimport MainContent from \"./ItineraryPage/MainContent\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport { TripType } from \"../../../shared/TripTypes\";\n\ntype ItineraryPageProps = {\n trip: TripType,\n}\nconst ItineraryPage = ({\n trip,\n}: ItineraryPageProps) => {\n return <>\n <SideBarPage\n mainContent={\n <MainContent tripId={trip.id} />\n }\n />\n </>\n}\n\nexport default withLayout(ItineraryPage, { fluid: true });\n","import React from \"react\";\nimport {\n Box,\n} from \"@mui/material\";\n\nimport Button from \"../../../../buttons/Button\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport { newTripItineraryPath } from \"../../../../../routes\";\n\ntype MainContentProps = {\n tripId: string,\n};\n\nconst MainContent = ({\n tripId,\n}: MainContentProps) => {\n return <>\n <SectionHeader\n title='Itinerary'\n note={'Create an itinerary to start organizing your destinations, stays, and activities by day.'}\n />\n <NoSuggestionsYet\n illustration='itinerary_fallback'\n />\n <Box mb={5} sx={{display: 'flex', justifyContent: 'center' }}>\n <Button\n data-test-id=\"add-button\"\n disabled={false}\n href={newTripItineraryPath(tripId)}\n variant=\"primary\"\n >\n Create itinerary\n </Button>\n </Box>\n </>\n}\n\nexport default MainContent\n","import React, { useContext } from \"react\";\nimport withLayout from \"./withLayout\";\nimport { ItineraryDateType } from \"../../../shared/TripObjectTypes\";\nimport ItineraryMainContent from \"./ItineraryDatePermapage/ItineraryMainContent\";\nimport ActionsMenu from \"../../../shared/ActionsMenu\";\nimport SectionHeader from \"./shared/SectionHeader\";\nimport { SegmentContext } from \"../../../Document\";\nimport { track as trackAnalyticsEvent } from \"../../../../services/analytics\";\nimport * as routes from \"../../../../routes\";\nimport { Grid } from \"@mui/material\";\nimport { setScrollBarHorizontalPosition } from \"../../../../services/setScrollBarHorizontalPosition\";\nimport ItineraryDatesChipBar, {ITINERARY_DATE_CHIP_WIDTH} from \"./ItineraryDatePermapage/ItineraryDatesChipBar\";\nimport { makeStyles } from \"@mui/styles\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\n\nconst {\n tripItineraryPath,\n editTripItineraryPath,\n} = routes;\n\nconst useStyles = makeStyles(() => ({\n filterContainer: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n },\n}));\n\ntype ItineraryScheduleListProps = {\n itineraryDates: ItineraryDateType[],\n};\n\nconst ItineraryScheduleList = ({\n itineraryDates,\n}: ItineraryScheduleListProps) => {\n const { currentUserId, tripId, isPlanner } = useContext(SegmentContext);\n const classes = useStyles();\n\n const trackDeletionInitiated = () => {\n trackAnalyticsEvent('Itinerary Deletion Initiated',\n {\n tripId: tripId,\n userId: currentUserId,\n planner: isPlanner,\n },\n )\n };\n\n const trackEditClick = () => {\n trackAnalyticsEvent('Itinerary Edit Dates Initiated',\n {\n tripId: tripId,\n planner: isPlanner,\n },\n )\n };\n\n const goToEditPage = () => {\n trackEditClick();\n window.location.href = editTripItineraryPath(tripId);\n };\n\n return (\n <Grid>\n <SideBarPage mainContent={\n <>\n <SectionHeader\n title='Itinerary'\n note='Build an itinerary to start organizing your destinations, stays, and activities by day.'\n rightElement={isPlanner && (\n <ActionsMenu\n deletePath={tripItineraryPath(tripId)}\n dense={false}\n resourceName=\"itinerary\"\n onDeleteClick={trackDeletionInitiated}\n onEditClick={goToEditPage}\n />\n )}\n />\n <Grid\n container\n pb={1}\n className={classes.filterContainer}\n ref={(ele) => {setScrollBarHorizontalPosition(ele, ITINERARY_DATE_CHIP_WIDTH, 0)}}\n >\n <ItineraryDatesChipBar\n itineraryDates={itineraryDates}\n selectedDate={'All'}\n />\n </Grid>\n {itineraryDates.map((itineraryDate) => (\n <ItineraryMainContent\n itineraryDate={itineraryDate}\n itineraryDates={itineraryDates}\n availableActivitiesCount={itineraryDate.availableActivitiesCount}\n scheduleListView\n page={'scheduleList'}\n key={itineraryDate.id}\n />\n ))}\n </>\n }\n />\n </Grid>\n );\n}\n\nexport default withLayout(ItineraryScheduleList, { fluid: true });\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripBroadcastsPath } from \"../../../../routes\";\nimport InputWithCharacterCounter from \"../../../shared/InputWithCharacterCounter\";\n\ntype Broadcast = {\n message: string,\n};\n\nexport type NewBroadcastFormProps = {\n broadcast?: Broadcast,\n errors?: string[],\n tripId: string,\n};\n\nconst MINIMUM_MESSAGE_LENGTH = 1000;\n\nconst useStyles = makeStyles((theme) => ({\n messageInput: {\n '& textarea': {\n minHeight: 350,\n top: 1\n },\n },\n errors: {\n marginBottom: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n },\n subtitle: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n}));\n\nconst NewBroadcastForm = ({\n broadcast,\n errors,\n tripId,\n}: NewBroadcastFormProps) => {\n const classes = useStyles();\n\n return (\n <ModalForm\n title='Broadcast message'\n formActionPath={tripBroadcastsPath(tripId)}\n formMethod=\"post\"\n closePath={tripBroadcastsPath(tripId)}\n withChangeDetection\n saveButtonLabel='Send'\n >\n {errors && (\n <Grid item className={classes.errors}>\n <Errors errors={errors} />\n </Grid>\n )}\n <Typography className={classes.subtitle}>\n Broadcasts will be sent to travelers “Interested” or “Going” on your trip.\n </Typography>\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <InputWithCharacterCounter\n inputClassName={classes.messageInput}\n id='broadcast-message'\n characterLimit={MINIMUM_MESSAGE_LENGTH}\n data-test-id=\"message-text-field\"\n defaultValue={broadcast?.message || ''}\n placeholder='Write your message...'\n multiline\n name='broadcast[message]'\n fullWidth\n withBorder\n />\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(NewBroadcastForm);\n\n","import React from \"react\";\nimport { hocRailsAction } from \"../../../Document\";\nimport {ActivityType, ItineraryDateType} from \"../../../shared/TripObjectTypes\";\nimport ItineraryActivitiesChoosingForm from \"./NewItineraryActivityEventPage/ItineraryActivitiesChoosingForm\";\n\ntype NewItineraryActivityEventPageProps = {\n itineraryDate: ItineraryDateType,\n activitiesAvailable: ActivityType[],\n};\n\nconst NewItineraryActivityEventPage = ({\n itineraryDate,\n activitiesAvailable,\n}: NewItineraryActivityEventPageProps) => {\n return (\n <ItineraryActivitiesChoosingForm\n itineraryDate={itineraryDate}\n activitiesAvailable={activitiesAvailable}\n />\n );\n};\n\nexport default hocRailsAction(NewItineraryActivityEventPage);\n","import React, { useState } from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport * as routes from '../../../../../routes';\nimport TuneIcon from \"@mui/icons-material/Tune\";\nimport {ActivityType, ItineraryDateType} from \"../../../../shared/TripObjectTypes\";\nimport ModalForm from \"../../../../shared/ModalForm\";\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport CustomChip from \"../../../../buttons/CustomChip\";\nimport Activity from \"../ActivitiesPage/Activity\";\nimport EmptyStateModalForm from \"../../../../shared/EmptyStateModalForm\";\n\nconst {\n tripActivitiesPath,\n tripActivityEventsPath,\n tripItineraryDatePath,\n} = routes;\n\ntype ItineraryActivitiesChoosingFormProps = {\n itineraryDate: ItineraryDateType,\n activitiesAvailable: ActivityType[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n selectedActivity: {\n border: \"2px solid #80b4fb\",\n },\n container: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n [theme.breakpoints.down(540)]: {\n width: 'calc(100vw - 16px)',\n },\n },\n title: {\n color: '#303232',\n fontSize: 18,\n lineHeight: '24px',\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n}));\n\ntype ActivityIdsInputProps = {\n selectedActivityIds: string[],\n};\n\nconst ActivityIdsInput = ({\n selectedActivityIds,\n}: ActivityIdsInputProps) => {\n return <>\n {selectedActivityIds.map((activityId) =>\n <input key={activityId} type=\"hidden\" value={activityId} name=\"schedulable_ids[]\" />,\n )}\n </>\n}\n\nconst ItineraryActivitiesChoosingForm = ({\n itineraryDate,\n activitiesAvailable,\n}: ItineraryActivitiesChoosingFormProps) => {\n const classes = useStyles();\n\n const [activityIds, setActivityIds] = useState([]);\n const [activeCategory, setActiveCategory] = useState('All')\n const [activityList, setActivityList] = useState(activitiesAvailable)\n const showEmptyState = activityList.length === 0;\n\n const isSelectedActivity = (activity) => {\n return activityIds.indexOf(activity.id) > -1\n }\n\n const onClick = (activity) => {\n if(isSelectedActivity(activity)) {\n setActivityIds(activityIds.filter(activityId => activityId !== activity.id));\n } else {\n setActivityIds(activityIds => [...activityIds, activity.id]);\n }\n }\n\n const categoryCount = category => {\n let count = 0\n activitiesAvailable.map(activity => {\n if (activity.category === category){ count++ }\n })\n return count\n }\n\n const availableCategories = () => {\n const categories = {\n All: activitiesAvailable.length,\n }\n activitiesAvailable.map(({category})=>{\n if(category) {\n categories[category] = categoryCount(category)\n }\n });\n return categories\n }\n\n const isActive = category => {\n return category === activeCategory\n }\n\n const filterActivities = (category) => {\n if (category === 'All') {return activitiesAvailable}\n return activitiesAvailable.filter( activity => {\n return activity.category === category\n })\n }\n\n const filterGroup = (category) => {\n setActiveCategory(category)\n setActivityList(filterActivities(category))\n }\n\n return (\n <>\n {showEmptyState && (\n <EmptyStateModalForm\n buttonHref={tripActivitiesPath(itineraryDate.tripId)}\n buttonText='Go to activities'\n closePath={tripItineraryDatePath(itineraryDate.tripId, itineraryDate)}\n imgSrc={'/assets/activity_fallback.svg'}\n subtitle='Head over to the Activities tab to create some activities first.'\n title='You don’t have any activities'\n />\n )}\n {!showEmptyState &&\n <ModalForm\n title={`Add activities to Day ${itineraryDate.dayNumber}`}\n subtitle={'Select activities to add to your itinerary for the day'}\n closePath={tripItineraryDatePath(itineraryDate.tripId, itineraryDate)}\n formActionPath={tripActivityEventsPath(itineraryDate.tripId)}\n useDefaultSaveButton={true}\n saveButtonLabel={`Add activities (${activityIds.length})`}\n disabledSubmit={activityIds.length === 0}\n >\n <input type=\"hidden\" name=\"itinerary_date_id\" value={itineraryDate.id} />\n <FormContext.Consumer>\n {({ onFormChange }) => (<>\n <input type=\"hidden\" value={\"activity\"} name=\"schedulable_type\" />\n <ActivityIdsInput selectedActivityIds={activityIds} />\n <Box mb={4} >\n {activityList.length > 0 && (\n <Grid container direction=\"column\" justifyContent=\"center\">\n <Grid item container spacing={1}>\n <Grid item>\n <TuneIcon />\n </Grid>\n <Grid item>\n <Typography className={classes.title}>\n Filter by\n </Typography>\n </Grid>\n </Grid>\n <Grid item container spacing={2} className={classes.container}>\n {Object.keys(availableCategories()).sort().map((option, index) => (\n <Grid item key={index}>\n <div\n onClick={() => filterGroup(option)}\n data-test-id={`${option}-filter-tab`}\n >\n <CustomChip\n active={isActive(option)}\n trackEventDisabled\n >\n {option} ({availableCategories()[`${option}`]})\n </CustomChip>\n </div>\n </Grid>\n ))}\n </Grid>\n </Grid>\n )}\n </Box>\n <Box>\n <Grid container direction=\"column\">\n {activityList.map((activity, index) =>\n <React.Fragment key={activity.id}>\n <Grid\n item\n key={index}\n my={2}\n className={clsx(\n {[classes.selectedActivity]: isSelectedActivity(activity)},\n )}\n >\n <Activity\n activity={activity}\n displaySelectButton\n displayActivityLinks={false}\n isSelectedActivity={isSelectedActivity(activity)}\n onActivityClick={() => onClick(activity)}\n showSentiments={false}\n />\n </Grid>\n </React.Fragment>,\n )}\n </Grid>\n </Box>\n </>)}\n </FormContext.Consumer>\n </ModalForm>\n }\n </>\n );\n};\n\nexport default ItineraryActivitiesChoosingForm;\n","import React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { hocRailsAction } from \"../../../Document\";\nimport { ItineraryType, ItineraryDateType, StayType } from \"../../../shared/TripObjectTypes\";\nimport Button from \"../../../buttons/Button\";\nimport EmptyStateModalForm from \"../../../shared/EmptyStateModalForm\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport {\n tripItineraryDatePath,\n tripStayEventsPath,\n tripStaysPath,\n} from '../../../../routes';\nimport FirstStep from \"./NewItineraryStayEventPage/FirstStep\";\nimport LastStep from \"./NewItineraryStayEventPage/LastStep\";\nimport HorizontalStepper from \"../../../shared/HorizontalStepper\";\nimport useSegment from \"../../../../services/useSegment\";\nimport Errors from \"../../../shared/Errors\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport {\n getSortedStaysFirstByFinalizedThenByRankings,\n} from \"../../../../services/RankingSystem\";\n\ntype NewItineraryStayEventPageProps = {\n itinerary: ItineraryType,\n itineraryDate: ItineraryDateType,\n staysAvailable: StayType[],\n errors: string[],\n travelers: TravelerProps[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n errors: {\n paddingBottom: theme.spacing(2),\n },\n}));\n\nconst NewItineraryStayEventPage = ({\n itinerary,\n itineraryDate,\n staysAvailable,\n errors = [],\n}: NewItineraryStayEventPageProps) => {\n const classes = useStyles();\n const showEmptyState = staysAvailable.length === 0;\n const { trackSegment } = useSegment();\n\n const [selectedIds, setSelectedIds] = useState([]);\n const [lastStep, setLastStep] = useState(false);\n const [errorMessages, setErrorMessages] = useState(errors)\n\n const sortedStays = getSortedStaysFirstByFinalizedThenByRankings(staysAvailable);\n\n const onStaySelect = (stay) => {\n if (selectedIds.includes(stay.id)) {\n setSelectedIds(selectedIds.filter(id => id !== stay.id));\n } else {\n setSelectedIds(selectedIds => [...selectedIds, stay.id]);\n }\n };\n\n const bookedStays = (selectedIds) => {\n return selectedIds.map(stayId => {\n const stay = staysAvailable.find(stayAvailable => stayId === stayAvailable.id);\n\n return stay.stayBookings.length > 0\n });\n };\n\n const bookedStayCount = (selectedIds) => {\n return bookedStays(selectedIds).filter(booked => booked).length;\n };\n\n const onFormSubmit = (event) => {\n if (!lastStep) {\n event.preventDefault();\n trackSegment('Add Stay Event Selected', {\n stayCount: selectedIds.length,\n booked: bookedStays(selectedIds),\n });\n setLastStep(true);\n if(errorMessages) {\n setErrorMessages([])\n }\n } else {\n trackSegment('Stay Event Added', {\n stayCount: selectedIds.length,\n bookedStayCount: bookedStayCount(selectedIds),\n });\n }\n };\n\n const onBackButtonClick = () => {\n setLastStep(false);\n trackSegment('Stay Event Selection Back Selected', {\n stayCount: selectedIds.length,\n bookedStayCount: bookedStayCount(selectedIds),\n });\n };\n\n React.useEffect(() => {\n window.scrollTo(0, 0);\n }, [lastStep]);\n\n const backButton = () => (\n <Button\n fullWidth\n onClick={onBackButtonClick}\n variant=\"secondary\"\n data-test-id=\"back-button\"\n >\n Back\n </Button>\n );\n\n const steps = ['Select stays', 'Add dates'];\n const formTitle = lastStep ? \"Assign dates to stays\" : \"Select stays to add\";\n const formSubtitle = (\n <div>\n {lastStep ? \"Let travelers know when you’ll be staying at each accommodation.\" : \"Select from your group’s suggested stays to start building out your day.\"}\n <Box mt={4} mb={2}>\n <HorizontalStepper activeStep={lastStep ? 1 : 0} steps={steps}/>\n </Box>\n </div>\n );\n\n return (\n <>\n {showEmptyState && (\n <EmptyStateModalForm\n buttonHref={tripStaysPath(itineraryDate.tripId)}\n buttonText='Go to stays'\n closePath={tripItineraryDatePath(itineraryDate.tripId, itineraryDate.id)}\n imgSrc='/assets/illustrations/camper.svg'\n subtitle='Head over to the Stays tab to add some stays first.'\n title='You don’t have any stays'\n />\n )}\n {!showEmptyState && (\n <ModalForm\n closePath={tripItineraryDatePath(itineraryDate.tripId, itineraryDate.id)}\n disabledSubmit={selectedIds.length === 0}\n extraSaveBarButton={lastStep ? backButton() : null}\n formActionPath={tripStayEventsPath(itineraryDate.tripId)}\n onClick={(event) => onFormSubmit(event)}\n saveButtonLabel={lastStep ? 'Save' : `Add stays (${selectedIds.length})`}\n saveButtonType={lastStep ? 'submit' : 'button'}\n subtitle={formSubtitle}\n title={formTitle}\n useDefaultSaveButton\n >\n {errorMessages.length > 0 && (\n <Errors errors={errorMessages} className={classes.errors}/>\n )}\n <input type=\"hidden\" name=\"itinerary_date_id\" value={itineraryDate.id} />\n {!lastStep &&\n <FirstStep\n onStaySelect={(stay) => onStaySelect(stay)}\n selectedIds={selectedIds}\n stays={sortedStays}\n />\n }\n {lastStep &&\n <LastStep\n defaultStartDate={itineraryDate.date}\n defaultEndDate={itinerary.endDate}\n itineraryEndDate={itinerary.endDate}\n itineraryStartDate={itinerary.startDate}\n selectedStays={sortedStays.filter( stay => selectedIds.includes(stay.id))}\n />\n }\n </ModalForm>\n )}\n </>\n );\n};\n\nexport default hocRailsAction(NewItineraryStayEventPage);\n","import React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport Stay from \"../HousingPage/Stay\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\nimport BookedWrapper from \"../HousingPage/BookedWrapper\";\nimport SelectedWrapper from \"../HousingPage/SelectedWrapper\";\n\ntype FirstStepProps = {\n onStaySelect: (stay: StayType) => void,\n selectedIds: string[],\n stays: StayType[],\n};\n\nconst FirstStep: React.FC<FirstStepProps> = ({\n onStaySelect,\n selectedIds,\n stays,\n}) => {\n\n return (\n <Grid container direction=\"column\" spacing={2}>\n {stays.map((stay, index) => {\n return (\n <Grid item key={index}>\n <SelectedWrapper selected={selectedIds.indexOf(stay.id) > -1}>\n <BookedWrapper booked={stay.stayBookings?.length > 0} onClick={() => onStaySelect(stay)}>\n <Stay\n displaySelectButton\n hideAddPricingLink\n hideButtons\n hideCommentsLink\n hideDateOptionsAvailability\n isClickable\n isNameClickable={false}\n isSelected={selectedIds.indexOf(stay.id) > -1}\n onSelect={() => onStaySelect(stay)}\n onStayClick={() => onStaySelect(stay)}\n stay={stay}\n />\n </BookedWrapper>\n </SelectedWrapper>\n </Grid>\n )})}\n </Grid>\n );\n};\n\nexport default FirstStep;\n","import React from \"react\";\nimport {\n Divider,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { StayType } from \"../../../../shared/TripObjectTypes\";\nimport { default as DateRangePicker } from \"../../../../shared/CustomDateRangePicker\";\nimport InputWithCharacterCounter from '../../../../shared/InputWithCharacterCounter';\nimport { ItineraryEventType } from \"../../../../shared/TripObjectTypes\";\nimport ItineraryStayEvent from \"../ItineraryDatePermapage/ItineraryStayEvent\";\n\ntype LastStepProps = {\n defaultStartDate: string,\n defaultEndDate: string,\n selectedStays: StayType[],\n itineraryStartDate: string,\n itineraryEndDate: string,\n};\n\nconst LastStep: React.FC<LastStepProps> = ({\n defaultStartDate,\n defaultEndDate,\n selectedStays,\n itineraryStartDate,\n itineraryEndDate,\n}) => {\n const StayForm: React.FC<{ stay: StayType }> = ({ stay }) => {\n const itineraryEvent : ItineraryEventType = {\n id: stay.id,\n tripId: stay.tripId,\n itineraryDateId: undefined,\n name: stay.name,\n schedulableId: stay.id,\n imageUrl: stay.images[0],\n startTime: undefined,\n endTime: undefined,\n scheduled: false,\n formattedDate: undefined,\n schedulableType: 'Stay',\n metadata: {\n price: null,\n },\n };\n\n return (\n <Grid item container direction=\"column\" spacing={3}>\n <input type=\"hidden\" name=\"itinerary_event[][schedulable_id]\" value={stay.id} />\n <input type=\"hidden\" name=\"itinerary_event[][schedulable_type]\" value=\"Stay\" />\n <Grid item sx={{width: '100%'}}>\n <ItineraryStayEvent\n stayEvent={itineraryEvent}\n showActionsMenu={false}\n page={'last step'}\n isInModal\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"h3\" pb={1}>Dates</Typography>\n <DateRangePicker\n autoComplete=\"off\"\n defaultEndValue={defaultEndDate}\n defaultStartValue={defaultStartDate}\n helperText={false}\n nameEnd=\"itinerary_event[][end_date]\"\n nameStart=\"itinerary_event[][start_date]\"\n allowedMinDate={itineraryStartDate}\n allowedMaxDate={itineraryEndDate}\n shouldDisableDateEnabled\n disablePast={false}\n />\n </Grid>\n\n <Grid item>\n <Typography variant=\"h3\" pb={1}>Note (optional)</Typography>\n <InputWithCharacterCounter\n name=\"itinerary_event[][notes]\"\n label=\"Note\"\n fullWidth\n withBorder\n noLabel\n characterLimit={250}\n />\n </Grid>\n <Grid item><Divider /></Grid>\n </Grid>\n );\n };\n\n return (\n <Grid container direction=\"column\" spacing={2}>\n {selectedStays.map( stay => (\n <StayForm stay={stay} key={stay.id} />\n ))}\n </Grid>\n );\n};\n\nexport default LastStep;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Box,\n Grid,\n IconButton,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport ClearIcon from '@mui/icons-material/Clear';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport PollPreview from \"./NewPollForm/PollPreview\";\nimport Button from \"../../../buttons/Button\";\nimport Errors from '../../../shared/Errors';\nimport HorizontalStepper from \"../../../shared/HorizontalStepper\";\nimport { track as trackAnalyticsEvent } from \"../../../../services/analytics\";\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripPollsPath } from \"../../../../routes\";\nimport TextButton from \"../../../buttons/TextButton\";\nimport { FormContext } from \"../../../shared/RailsForm\";\n\nexport type NewPollAnswer = {\n body: string,\n responsesPercentage?: number,\n};\n\ntype NewPoll = {\n answers: Array<NewPollAnswer>,\n question: string,\n};\n\nconst MINIMUM_REQUIRED_ANSWERS = 2;\nconst MAX_ANSWERS = 10\n\nconst useStyles = makeStyles((theme) => ({\n addMoreAnswerButton: {\n marginTop: theme.spacing(1),\n },\n answerInput: {\n height: 48,\n },\n backButton: {\n marginRight: theme.spacing(2),\n },\n errors: {\n marginBottom: theme.spacing(2),\n },\n hidden: {\n display: 'none',\n },\n preview: {\n width: '100%',\n },\n label: {\n fontWeight: 600,\n },\n subtitle: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n stepper: {\n margin: theme.spacing(2),\n },\n answersContainer: {\n marginTop: theme.spacing(1),\n },\n}));\n\ntype NewPollFormProps = {\n errors?: string[],\n poll: NewPoll,\n currentUserId: string,\n isPlanner: boolean,\n question: string,\n tripId: string,\n maxAnswers: number,\n};\n\nconst NewPollForm = ({\n errors,\n poll,\n currentUserId,\n tripId,\n isPlanner,\n maxAnswers,\n}: NewPollFormProps) => {\n const classes = useStyles();\n const steps = ['Draft poll', 'Preview & Send'];\n const [previewStep, setPreviewStep] = useState(false);\n const [answers, setAnswers] = useState(Array.from(poll.answers));\n const setAnswer = (value, index) => {\n const newAnswers = Array.from(answers);\n newAnswers[index]['body'] = value;\n setAnswers(newAnswers);\n };\n const [question, setQuestion] = useState(poll.question);\n const validAnswers = answers.filter((answer) => !!answer.body);\n const disabledSubmit = !question || validAnswers.length < MINIMUM_REQUIRED_ANSWERS;\n const canAddMoreAnswers = answers.length < MAX_ANSWERS\n\n const addAnswerField = () => {\n if (!canAddMoreAnswers) return;\n\n setAnswers(answers.concat([{body: null, responsesPercentage: 0}]));\n };\n\n const onFormSubmit = (event) => {\n if (!previewStep) {\n event.preventDefault();\n\n setPreviewStep(true);\n\n trackAnalyticsEvent('Poll Previewed', {\n category: 'Polling',\n tripId: tripId,\n planner: isPlanner,\n userId: currentUserId,\n });\n };\n };\n\n const backButton = () => {\n return (\n <Button\n className={classes.backButton}\n fullWidth\n onClick={() => setPreviewStep(false)}\n variant=\"secondary\"\n >\n Back\n </Button>\n );\n };\n\n return (\n <ModalForm\n title='Create poll'\n formActionPath={tripPollsPath(tripId)}\n formMethod=\"post\"\n closePath={tripPollsPath(tripId)}\n disabledSubmit={disabledSubmit}\n onClick={(event) => onFormSubmit(event)}\n saveButtonLabel={previewStep ? \"Send\" : \"Preview\"}\n saveButtonType={previewStep ? \"submit\" : \"button\"}\n extraSaveBarButton={previewStep ? backButton() : null}\n >\n {errors && (\n <Grid item className={classes.errors}>\n <Errors errors={errors} />\n </Grid>\n )}\n <Box className={classes.stepper}>\n <HorizontalStepper activeStep={previewStep ? 1 : 0} steps={steps}/>\n </Box>\n <Typography className={classes.subtitle}>\n Write a custom question with up to {maxAnswers} answers travelers can choose from.\n </Typography>\n <Box className={clsx({ [classes.hidden]: previewStep })}>\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <Typography className={classes.label} variant=\"subtitle1\">\n Question\n </Typography>\n </Grid>\n <Grid item>\n <TextField\n data-test-id=\"question-text-field\"\n defaultValue={poll.question}\n label='Write your question...'\n name='poll[question]'\n fullWidth\n required\n onChange={(event) => setQuestion(event.target.value)}\n />\n </Grid>\n </Grid>\n <Grid container direction=\"column\" spacing={1} className={classes.answersContainer}>\n <Grid item>\n <Typography variant=\"subtitle1\">\n <span className={classes.label}>Answer</span> (Add up to {maxAnswers})\n </Typography>\n </Grid>\n <Grid item container direction=\"column\" spacing={2}>\n <FormContext.Consumer>\n {({ onFormChange }) => <>\n {answers.map((answer, index) => (\n <Grid\n item\n key={index}\n data-test-id={`answer-${index+1}`}\n >\n <TextField\n value={answers[index].body || ''}\n label={`Answer ${index + 1}`}\n name='poll[answers_attributes][][body]'\n fullWidth\n onChange={(event) => {\n setAnswer(event.target.value, index);\n onFormChange();\n }}\n InputProps={{\n className: classes.answerInput,\n endAdornment: (\n <IconButton\n data-test-id=\"clearButton\"\n tabIndex={-1}\n onClick={() => setAnswer('', index)}\n >\n <ClearIcon />\n </IconButton>\n ),\n }}\n />\n </Grid>\n ))}\n </>}\n </FormContext.Consumer>\n </Grid>\n {canAddMoreAnswers &&\n <Grid item container justifyContent=\"center\">\n <Grid item>\n <TextButton\n className={classes.addMoreAnswerButton}\n data-test-id='add-answer-button'\n detachedFromForm\n onClick={() => addAnswerField()}\n >\n + Add answer\n </TextButton>\n </Grid>\n </Grid>\n }\n </Grid>\n </Box>\n {previewStep && (\n <Grid container className={classes.preview}>\n <PollPreview\n question={question}\n answers={validAnswers}\n />\n </Grid>\n )}\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(NewPollForm);\n\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { NewPollAnswer } from \"../NewPollForm\";\nimport PollAnswerButton from \"../shared/PollAnswerButton\";\n\ntype PollPreviewProps = {\n answers: Array<NewPollAnswer>,\n question: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n border: '1px solid #C1C1C1',\n borderRadius: 5,\n padding: theme.spacing(3),\n width: '100%',\n },\n item: {\n marginBottom: theme.spacing(2),\n wordBreak: 'break-word',\n },\n subtitle: {\n fontSize: '14px',\n color: '#697379',\n },\n}));\n\nconst PollPreview = ({\n question,\n answers,\n}: PollPreviewProps) => {\n const classes = useStyles();\n\n return (\n <Grid container direction=\"column\" className={classes.container} alignItems=\"center\" data-test-id=\"pollPreview\">\n <Grid item container justifyContent=\"left\" className={classes.item}>\n <Typography variant=\"h3\" fontSize={18}>\n {question}\n </Typography>\n </Grid>\n <Grid item container justifyContent=\"left\" className={classes.item}>\n <Typography className={classes.subtitle}>\n Select your answer below\n </Typography>\n </Grid>\n <Grid item container>\n <Grid item container direction=\"column\">\n {answers.map((answer, index) =>\n <Grid item key={index}>\n <PollAnswerButton\n answer={answer}\n className={classes.item}\n disabled\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n );\n};\n\nexport default PollPreview;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { TripNote } from './NotesListPage';\nimport Errors from '../../../shared/Errors';\nimport ModalForm from '../../../shared/ModalForm';\nimport { hocRailsAction } from \"../../../Document\";\nimport { tripNotePath, tripNotesPath } from \"../../../../routes\";\nimport InputWithCharacterCounter from \"../../../shared/InputWithCharacterCounter\";\n\ntype NoteFormProps = {\n tripNote?: TripNote,\n tripId: string,\n errors?: string[],\n};\n\nconst CHARACTER_LIMIT = 100;\n\nconst useStyles = makeStyles((theme) => ({\n errors: {\n marginBottom: theme.spacing(2),\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n },\n image: {\n height: '174px',\n },\n imageCopy: {\n color: '#303232',\n fontSize: 16,\n fontWeight: 400,\n lineHeight: '24px',\n textAlign: 'center',\n },\n}));\n\nconst NoteForm = ({\n tripNote,\n tripId,\n errors,\n}: NoteFormProps) => {\n const classes = useStyles();\n\n return (\n <ModalForm\n title={tripNote ? 'Edit note' : 'Add new note'}\n formActionPath={tripNote ? tripNotePath(tripId, tripNote.id) : tripNotesPath(tripId)}\n formMethod={tripNote ? \"put\" : \"post\"}\n closePath={tripNote ? tripNotePath(tripId, tripNote.id) : tripNotesPath(tripId)}\n saveButtonLabel='Save'\n withChangeDetection\n subtitle={tripNote ?\n 'Add a custom title, so travelers know what information to add to this note.'\n :\n 'Create a new note to help organize information around a particular topic.'\n }\n >\n {errors && (\n <Grid item className={classes.errors}>\n <Errors errors={errors} />\n </Grid>\n )}\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <Typography className={classes.label}>\n Note title\n </Typography>\n </Grid>\n <Grid item>\n <InputWithCharacterCounter\n defaultValue={tripNote?.title}\n characterLimit={CHARACTER_LIMIT}\n placeholder=\"Give your note a name\"\n focused\n fullWidth\n noLabel\n name=\"trip_note[title]\"\n />\n </Grid>\n </Grid>\n <Grid container direction=\"column\" justifyContent=\"center\" alignItems=\"center\" spacing={2} sx={{ mt: 4 }}>\n <Grid item>\n <img\n className={classes.image}\n src=\"/assets/illustrations/notes.svg\"\n />\n </Grid>\n <Grid item>\n <Typography className={classes.imageCopy}>\n You can add content to your note once you give it a name and press save.\n </Typography>\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(NoteForm);\n","import React, { useCallback } from \"react\";\nimport {\n Box,\n ButtonBase,\n Divider,\n Grid,\n} from \"@mui/material\";\nimport withLayout from \"./withLayout\";\nimport SectionHeader from \"./shared/SectionHeader\";\nimport NoteRow from './NotesListPage/NoteRow';\nimport Button from \"../../../buttons/Button\";\nimport responsiveText from \"../../../../services/responsiveText\";\nimport {\n trackLink as trackLinkAnalyticsEvent,\n track as trackAnalyticsEvent,\n} from \"../../../../services/analytics\";\nimport { TripType } from \"../../../shared/TripTypes\";\nimport { newTripNotePath, tripNotesPath } from \"../../../../routes\";\nimport CurrentSortingAndCount from \"./shared/CurrentSortingAndCount\";\nimport FilteringAndSortingBar from './shared/FilteringAndSortingBar'\n\nexport type TripNote = {\n body: string | null,\n id: string,\n title: string,\n tripId: string,\n updatedAt: number,\n};\n\ntype SortingType = {\n label: string,\n sortBy: string,\n};\n\ntype NotesListPageProps = {\n currentSorting: string,\n currentSortingLabel: string,\n currentUserId: string,\n isUserLoggedIn: boolean,\n notes: TripNote[],\n sortings?: SortingType[],\n trip: TripType,\n};\n\nconst NotesListPage = ({\n currentSorting,\n currentSortingLabel,\n currentUserId,\n isUserLoggedIn,\n notes,\n sortings,\n trip,\n}: NotesListPageProps) => {\n const addButtonCopy = responsiveText('+ Add', '+ Add note');\n\n const addNewNote = useCallback((element) => {\n if (element !== null) {\n trackLinkAnalyticsEvent(\n element,\n 'New Note Initiated',\n {\n authorId: currentUserId,\n planner: trip.isPlanner,\n tripId: trip.id,\n },\n );\n }\n }, []);\n\n const onFilteringAndSortingBarSubmit = (event) => {\n event.preventDefault();\n const formData = new FormData(event.target);\n const formProps = Object.fromEntries(formData);\n\n trackAnalyticsEvent(\n 'Sort/Filter Saved',\n {\n vertical: 'Notes',\n userId: currentUserId,\n tripId: trip.id,\n sortType: formProps['trip_note_filter[sort_by]'],\n },\n );\n\n event.target.submit();\n };\n\n return (\n <Box pt={3} pb={4}>\n <SectionHeader\n title=\"Shared notes\"\n note=\"Collaborate with fellow travelers in real-time to plan out your upcoming trip.\"\n />\n <Divider />\n <Grid pt={2} container justifyContent=\"space-between\">\n <Grid item>\n <FilteringAndSortingBar\n vertical=\"Notes\"\n currentSorting={currentSorting}\n disabled={notes.length === 0}\n formPath={tripNotesPath(trip.id)}\n sortByRadioGroupName=\"trip_note_filter[sort_by]\"\n sortings={sortings}\n onSubmit={onFilteringAndSortingBarSubmit}\n />\n </Grid>\n <Grid item>\n <Button\n data-test-id='add-note-button'\n disabled={!isUserLoggedIn || !trip.isTraveler}\n href={newTripNotePath(trip.id)}\n ref={(element) => addNewNote(element)}\n >\n {addButtonCopy}\n </Button>\n </Grid>\n </Grid>\n {notes.length > 0 && (\n <Box pt={3}>\n <CurrentSortingAndCount\n count={notes.length}\n sorting={currentSortingLabel}\n type=\"note\"\n />\n </Box>\n )}\n <Box pt={3}>\n <Grid container direction=\"column\" spacing={3}>\n {notes.map((note, index) => (\n <Grid item key={index}>\n <NoteRow note={note} />\n </Grid>\n ))}\n </Grid>\n </Box>\n </Box>\n );\n};\n\nexport default withLayout(NotesListPage);\n","import React from \"react\";\nimport {\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport TimeStamp from \"../../../../shared/TimeStamp\";\nimport * as routes from '../../../../../routes';\nimport { TripNote } from '../NotesListPage';\n\ntype NotesListPageProps = {\n note: TripNote,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.primary,\n fontWeight: 600,\n fontSize: '18px',\n lineHeight: '23px',\n '&:hover': {\n color: theme.palette.link.default,\n }\n },\n updatedAt: {\n color: '#334351',\n display: 'inline',\n fontWeight: 400,\n fontSize: '16px',\n fontStyle: 'italic',\n lineHeight: '24px',\n },\n}));\n\nconst {\n tripNotePath,\n} = routes;\n\nconst NoteRow = ({\n note,\n}: NotesListPageProps) => {\n const classes = useStyles();\n\n return (\n <Grid container direction=\"column\" data-test-id='trip-note'>\n <Grid item>\n <Link\n className={classes.root}\n href={tripNotePath(note.tripId, note.id)}\n underline=\"none\"\n >\n {note.title}\n </Link>\n </Grid>\n <Grid item>\n <Typography className={classes.updatedAt}>\n Last updated <TimeStamp date={note.updatedAt} className={classes.updatedAt} />\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default NoteRow;\n","import React, { useContext, useState } from \"react\";\nimport axios from \"axios\";\nimport {\n Box,\n Container,\n Grid,\n Theme,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { TripNote } from './NotesListPage';\nimport withLayout from \"./withLayout\";\nimport SectionHeader from \"./shared/SectionHeader\";\nimport { FormsContext } from '../../../Document';\nimport RichTextEditor from '../../../shared/RichTextEditor';\nimport RichText from '../../../shared/RichText';\nimport * as routes from '../../../../routes';\nimport { HEADER_BAR_HEIGHT } from '../../../../components/shared/SiteHeader';\nimport { NAV_BAR_HEIGHT } from '../../../../components/trip-page/NavigationBar'\nimport CircularProgress from '@mui/material/CircularProgress';\nimport clsx from \"clsx\";\nimport Breadcrumbs from \"../../../shared/Breadcrumbs\";\nimport TimeStamp from \"../../../shared/TimeStamp\";\nimport ActionButtons from \"./NotesPage/ActionButtons\";\n\ntype NotesPageProps = {\n isUserLoggedIn: boolean,\n showDeleteButton: boolean,\n tripNote: TripNote,\n trip: { id: string, isTraveler: boolean },\n};\n\nconst {\n tripNotePath,\n tripNotesPath,\n} = routes;\n\ntype StyleProps = {\n fullHeaderHeight: number;\n}\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n root: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(4),\n },\n editor: {\n width: 'fill-available',\n '& .ck.ck-sticky-panel .ck-sticky-panel__content_sticky': {\n top: ({ fullHeaderHeight }) => fullHeaderHeight,\n },\n },\n indicatorImage: {\n marginTop: theme.spacing(-0.2),\n },\n indicatorIcon: {\n marginRight: theme.spacing(1),\n },\n savingIndicationWrapper: {\n height: 20,\n fontSize: 16,\n fontWeight: 600,\n color: '#5F6368',\n '& .MuiCircularProgress-colorPrimary': {\n color: theme.palette.primary.main,\n },\n },\n updatedAt: {\n color: '#334351',\n display: 'inline',\n fontWeight: 400,\n fontSize: '16px',\n fontStyle: 'italic',\n lineHeight: '24px',\n },\n}));\n\nconst NotesPage = ({\n isUserLoggedIn,\n showDeleteButton,\n tripNote,\n trip,\n}: NotesPageProps) => {\n const fullHeaderHeight = HEADER_BAR_HEIGHT + NAV_BAR_HEIGHT;\n const classes = useStyles({ fullHeaderHeight });\n const [saveIndicatorLabel, setSaveIndicatorLabel] = useState('Saved');\n const { csrfToken } = useContext(FormsContext);\n const breadcrumbs = [\n {\n label: 'All notes',\n href: tripNotesPath(trip.id),\n },\n ];\n\n const onAutosave = (body: string) => {\n axios.put(\n tripNotePath(trip.id, tripNote.id),\n { trip_note: { body: body }, authenticity_token: csrfToken, format: 'json' },\n ).then(() => setSaveIndicatorLabel('Saved'))\n .catch(() => setSaveIndicatorLabel('Try again'));\n };\n\n const savingIndicatorIcon = (icon: 'Yes' | 'No', testId: string) =>\n <img\n data-test-id={testId}\n className={clsx(classes.indicatorIcon, classes.indicatorImage)}\n src={`/assets/illustrations/${icon}.svg`}\n />\n\n const saveIndicatorItem = () =>\n <Grid className={classes.savingContainer} container justifyContent=\"end\">\n <Grid item container direction=\"row\" className={classes.savingIndicationWrapper}>\n {saveIndicatorLabel === 'Saving' && (<CircularProgress data-test-id='saving-icon' className={classes.indicatorIcon} size={24} />)}\n {saveIndicatorLabel === 'Saved' && (savingIndicatorIcon('Yes', 'saved-img'))}\n {saveIndicatorLabel === 'Try again' && (savingIndicatorIcon('No', 'error-img'))}\n {saveIndicatorLabel}\n </Grid>\n </Grid>\n\n return (\n <Container className={classes.root}>\n <Box pb={3}>\n <Breadcrumbs\n active={tripNote.title}\n links={breadcrumbs}\n />\n </Box>\n <SectionHeader\n title={tripNote.title}\n rightElement={\n <>\n {isUserLoggedIn && trip.isTraveler &&\n <ActionButtons tripNote={tripNote} showDeleteButton={showDeleteButton}/>}\n </>\n }\n note={\n <>\n {\n <Grid container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item className={classes.updatedAt}>\n Last updated <TimeStamp date={tripNote.updatedAt} className={classes.updatedAt} />\n </Grid>\n <Grid item>\n {saveIndicatorItem()}\n </Grid>\n </Grid>\n }\n {!isUserLoggedIn && (\n <span>\n <b> Log in</b> to be able to update this trip's notes.\n </span>\n )}\n </>\n }\n />\n <Grid container direction=\"column\" spacing={2}>\n <Grid item className={classes.editor}>\n {isUserLoggedIn && trip.isTraveler ? (\n <RichTextEditor\n defaultValue={tripNote.body}\n onAutosave={onAutosave}\n onChange={() => setSaveIndicatorLabel('Saving')}\n placeholder=\"Use this section of the tripsite to: share important links, include your flight or car rental details, estimate your group’s shared costs, and so much more!\"\n />\n ) : (\n <RichText value={tripNote.body} />\n )}\n </Grid>\n </Grid>\n </Container>\n );\n};\n\n\n// noinspection JSUnusedGlobalSymbols\nexport default withLayout(NotesPage);\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n IconButton,\n Menu,\n MenuItem,\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { TripNote } from '../NotesListPage';\nimport * as routes from '../../../../../routes';\nimport DeleteConfirmationDialog from \"../../../../shared/DeleteConfirmationDialog\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\n\ntype ActionButtonsProps = {\n showDeleteButton: boolean,\n tripNote: TripNote,\n};\n\nconst {\n editTripNotePath,\n tripNotePath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(-0.625),\n marginBottom: theme.spacing(-0.625),\n },\n iconButton: {\n width: 32,\n height: 32,\n backgroundColor: \"#FFFFFF\",\n border: `1px solid ${theme.palette.general.background.disabled}`,\n \"&:hover\": {\n backgroundColor: '#F6F6F6',\n border: `1px solid ${theme.palette.primary.main}`,\n },\n },\n icon: {\n color: '#334351',\n },\n button: {\n height: 30,\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n '&:hover': {\n borderColor: theme.palette.primary.main,\n borderRightColor: [theme.palette.primary.main, '!important'],\n background: theme.palette.general.hover,\n zIndex: 4,\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: `1px solid ${theme.palette.general.background.disabled}`,\n color: theme.palette.text.primary,\n },\n}));\n\nconst ActionButtons = ({\n showDeleteButton,\n tripNote,\n}: ActionButtonsProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const handleCloseMenu = () => setAnchorEl(null);\n const handleDeleteClick = () => {\n handleCloseMenu()\n setDialogOpen(true);\n };\n\n return (\n <Box className={classes.root} data-test-id=\"actions-menu\">\n <IconButton\n size=\"small\"\n onClick={(event) => setAnchorEl(event.target)}\n data-test-id='actions-buttons'\n className={classes.iconButton}\n >\n <MoreHorizIcon fontSize=\"large\" className={classes.icon}/>\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseMenu}\n >\n <MenuItem onClick={() => window.location.href = editTripNotePath(tripNote.tripId, tripNote.id)} dense>\n <EditIcon fontSize=\"small\"/>\n Edit\n </MenuItem>\n {showDeleteButton && (\n <MenuItem onClick={handleDeleteClick} dense>\n <DeleteIcon fontSize=\"small\"/>\n Delete\n </MenuItem>\n )}\n </Menu>\n <DeleteConfirmationDialog\n isOpen={dialogOpen}\n fullWidthButtons\n message=\"This note will be deleted, along with all its contents.\"\n onClose={() => setDialogOpen(false)}\n path={tripNotePath(tripNote.tripId, tripNote.id)}\n title=\"Delete this note?\"\n />\n </Box>\n)};\n\nexport default ActionButtons;\n","import React, { useContext, useState } from \"react\";\nimport {\n Container,\n Grid,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport EditIcon from '@mui/icons-material/Edit';\nimport withMicrositeLayout from \"./withLayout\";\nimport AttendeesAvatars from \"./OverviewPage/AttendeesAvatars\";\nimport SectionDivider from \"./OverviewPage/SectionDivider\";\nimport SectionHeader from \"./OverviewPage/SectionHeader\";\nimport TripStatus from \"./OverviewPage/TripStatus\";\nimport Button from \"../../../buttons/Button\";\nimport ShareTripButton from \"../../../shared/SiteHeader/ShareTripButton\";\nimport ManageTripButton from \"../../../shared/SiteHeader/ManageTripButton\";\nimport RichText from \"../../../shared/RichText\";\nimport InviteDialog from \"../../../shared/InviteDialog\";\nimport { editTripPath } from '../../../../routes';\nimport { track as trackAnalyticsEvent } from '../../../../services/analytics';\nimport { DateOptionType, StayType, DestinationType } from \"../../../shared/TripObjectTypes\";\nimport { TripType } from \"../../../shared/TripTypes\";\nimport InviteModal from \"../../../shared/InviteModal\";\nimport { useEditTripInitiated } from \"../../../../services/segmentEvents/tripEvents\";\nimport FinalizedDatesAndDestination from \"./OverviewPage/FinalizedDatesAndDestination\";\n\ntype OverviewPageType = {\n chosenDateOption?: DateOptionType,\n chosenDestination?: DestinationType,\n chosenStay?: StayType,\n currentUserId?: string,\n inviterName?: string,\n isInviteValid?: boolean,\n trip: TripType,\n utmMedium?: 'copied' | 'shared' | 'email',\n withInvite?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n tripName: {\n color: theme.palette.primary.main,\n fontSize: 32,\n fontWeight: 700,\n textAlign: \"center\",\n marginBottom: theme.spacing(3),\n marginTop: theme.spacing(3),\n lineHeight: '1.4',\n },\n blurb: {\n width: '100%',\n },\n blurbContainer: {\n paddingTop: theme.spacing(3),\n },\n editIcon: {\n marginRight: theme.spacing(1),\n },\n noMarginTop: {\n marginTop: theme.spacing(-4),\n },\n}));\n\nconst BlurbSection = ({trip}: {trip: TripType}) => {\n const classes = useStyles();\n const editTripInitiatedEvent = useEditTripInitiated();\n\n return <>\n <Grid container direction=\"column\" spacing={3} alignItems=\"center\">\n <Grid item className={classes.blurb}>\n <RichText value={trip.blurb} />\n </Grid>\n {trip.isPlanner && (\n <Grid item>\n <Button\n data-test-id=\"editTripDetailsButton\"\n href={editTripPath(trip.id)}\n variant=\"tertiary\"\n onClick={() => editTripInitiatedEvent()}\n >\n <EditIcon className={classes.editIcon} />\n Edit Trip Details\n </Button>\n </Grid>\n )}\n </Grid>\n </>;\n};\n\nconst OverviewPage = ({\n currentUserId,\n chosenDateOption,\n chosenDestination,\n inviterName,\n isInviteValid,\n trip,\n utmMedium,\n withInvite,\n}: OverviewPageType) => {\n const classes = useStyles();\n const [attendeesAvatarsExpanded, setAttendeesAvatarsExpanded] = useState(false);\n\n const shareMediums = {\n copied: 'Copy share link',\n shared: 'Sharesheet',\n email: 'Email',\n };\n\n if (!!utmMedium && !!shareMediums[utmMedium]) {\n trackAnalyticsEvent('Invite Link Opened', {\n category: 'Invites',\n source: shareMediums[utmMedium],\n tripId: trip.id,\n });\n }\n\n const firstTimeNew = (new URLSearchParams(window.location.search).get('invite_modal') === 'true')\n const [inviteModalFormOpen, setInviteModalFormOpen] = useState(firstTimeNew);\n return (\n <>\n {inviteModalFormOpen && (\n <InviteModal\n inviterId={currentUserId}\n onClose={() => setInviteModalFormOpen(false)}\n tripId={trip.id}\n tripGid={trip.gid}\n tripName={trip.name}\n shareLinkSource=\"Trip Creation\"\n />\n )}\n {withInvite && (\n <InviteDialog isInviteValid={isInviteValid} inviterName={inviterName} />\n )}\n <FinalizedDatesAndDestination\n chosenDateOption={chosenDateOption}\n chosenDestination={chosenDestination}\n />\n {trip.blurb && <>\n <Container className={classes.blurbContainer}>\n <BlurbSection trip={trip} />\n </Container>\n <SectionDivider />\n </>}\n\n <TripStatus />\n <SectionDivider />\n\n <a id=\"attendees_avatars\" />\n <SectionHeader\n heading=\"The Who\"\n subheading=\"Here’s who’s joined this trip so far.\"\n />\n <AttendeesAvatars\n travelers={[...trip.travelers, ...trip.guests]}\n expanded={attendeesAvatarsExpanded}\n onToggleClick={() => setAttendeesAvatarsExpanded(!attendeesAvatarsExpanded)}\n />\n <Grid container justifyContent=\"center\" flexWrap='nowrap' pb={3}>\n <Grid item data-test-id=\"secondaryInviteButton\">\n <ShareTripButton\n disabled={!trip.isTraveler}\n collapseOnMobile={false}\n inviteBtnVariant='primary'\n inviterId={currentUserId}\n tripId={trip.id}\n tripGid={trip.gid}\n tripName={trip.name}\n segmentMethod='\"Invite\" CTA in The Who'\n shareLinkSource=\"Overview\"\n />\n </Grid>\n <Grid item ml={2}>\n <ManageTripButton\n disabled={!trip.isTraveler}\n collapseOnMobile={false}\n inviteBtnVariant='tertiary'\n tripId={trip.id}\n segmentMethod='\"Manage\" CTA in The Who'\n />\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport default withMicrositeLayout(OverviewPage);\n","import React from 'react';\nimport {\n Box,\n Grid,\n Typography,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport Avatar, { statusToVariant } from \"../../../../avatars/Avatar\";\nimport Link from \"../../../../shared/Link\";\nimport { TravelerProps } from '../../../../shared/TravelersVotingBox';\nimport TravelerDetailsDialog from './TravelerDetailsDialog';\nimport { humanizedStatus } from '../../../../../helpers/statusToHuman';\nimport { useTravelerClickEvent } from '../../../../../services/segmentEvents/useTravelerPlusOnesDialogEvents';\nimport clsx from 'clsx';\nimport { GuestType } from '../../../../../types/GuestType';\n\ntype TravelersRowProps = {\n travelers: (TravelerProps | GuestType)[];\n onTravelerClick: (traveler: TravelerProps) => void;\n};\n\ntype AttendeesAvatarsProps = {\n travelers: (TravelerProps | GuestType)[];\n expanded: boolean,\n onToggleClick: () => void,\n guests?: GuestType[],\n};\n\nconst useStyle = makeStyles((theme) => ({\n root: {\n borderTopLeftRadius: 4,\n borderTopRightRadius: 4,\n maxWidth: 660,\n marginBottom: theme.spacing(3),\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n travelerContainer: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n marginTop: theme.spacing(2),\n width: theme.spacing(10),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n travelerName: {\n fontSize: 16,\n color: '#272727',\n marginTop: theme.spacing(1),\n textAlign: 'center',\n lineHeight: '24px',\n maxWidth: '88px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n travelerStatus: {\n color: '#505050',\n fontStyle: 'italic',\n fontSize: 14,\n lineHeight: '24px',\n textAlign: 'center',\n },\n avatarsToggle: {\n color: theme.palette.primary.main,\n display: 'block',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.spacing(2),\n fontWeight: 600,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginLeft: 'auto',\n marginRight: 'auto',\n textAlign: 'center',\n },\n travelerContainerPointer: {\n cursor: 'pointer',\n },\n}));\n\nexport const TravelersRow = ({\n travelers,\n onTravelerClick,\n}: TravelersRowProps) => {\n const classes = useStyle();\n\n const travelerHasPlusOnes = (traveler :TravelerProps ) => (\n traveler.plusOnes?.length > 0\n )\n\n const renderUserTraveler = (traveler: TravelerProps) => (\n <Grid\n key={`user_${traveler.id}`}\n item\n className={clsx(classes.travelerContainer, { [classes.travelerContainerPointer]: travelerHasPlusOnes(traveler) })}\n data-test-id=\"userTripTraveler\"\n onClick={() => travelerHasPlusOnes(traveler) && onTravelerClick(traveler)}\n >\n <Grid item>\n <Avatar\n borderVariant={statusToVariant[traveler.status]}\n src={traveler.avatarUrl}\n size=\"lg\"\n plusOnes={traveler.plusOnes?.length || 0}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.travelerName}>\n {traveler.name}\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.travelerStatus}>\n {humanizedStatus(traveler.status)}\n </Typography>\n </Grid>\n </Grid>\n );\n\n const renderGuestTraveler = (traveler: GuestType) => (\n <Grid\n key={`guest_${traveler.uuid}`}\n item\n className={classes.travelerContainer}\n data-test-id=\"guestTripTraveler\"\n >\n <Grid item>\n <Avatar\n borderVariant='success'\n size=\"lg\"\n >\n <img\n alt=\"guest avatar\"\n src='/assets/guest_avatar.svg'\n style={{maxWidth: '100%', maxHeight: '100%'}}\n />\n </Avatar>\n </Grid>\n <Grid item>\n <Typography className={classes.travelerName}>\n {traveler.displayName}\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.travelerStatus}>\n Going\n </Typography>\n </Grid>\n </Grid>\n );\n\n return (\n <Grid container justifyContent=\"center\" wrap=\"nowrap\">\n {travelers.map( (traveler : any) => (\n traveler.userId ? renderUserTraveler(traveler as TravelerProps) : renderGuestTraveler(traveler as GuestType)\n ))}\n </Grid>\n )\n}\n\nconst collapsedTravelersRows = (travelers, avatarsPerLine, onTravelerClick) => {\n let rows = [];\n\n for (let i = avatarsPerLine; i < travelers.length; i+=avatarsPerLine) {\n let rowTravelers = travelers.slice(i, i+avatarsPerLine);\n rows.push(<TravelersRow travelers={rowTravelers} onTravelerClick={onTravelerClick} />);\n }\n\n return rows;\n}\n\nconst AttendeesAvatars = ({\n travelers,\n expanded,\n onToggleClick,\n}: AttendeesAvatarsProps) => {\n const classes = useStyle();\n const avatarsPerLine = 4;\n const seeLessMoreText = `See ${expanded ? 'less' : `${travelers.length - avatarsPerLine} more`}`;\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n const [clickedTraveler, setClickedTraveler] = React.useState<TravelerProps | undefined>(undefined);\n\n const travelerClickEvent = useTravelerClickEvent();\n\n const onTravelerClick = (traveler : TravelerProps) => {\n setClickedTraveler(traveler);\n setIsDialogOpen(true);\n travelerClickEvent(traveler);\n };\n\n return (\n <Box className={classes.root} data-test-id=\"tripTravelers\">\n <TravelersRow travelers={travelers.slice(0, avatarsPerLine)} onTravelerClick={onTravelerClick}/>\n\n {(travelers.length > avatarsPerLine) && (\n <>\n {expanded && collapsedTravelersRows(travelers, avatarsPerLine, onTravelerClick) }\n <Link\n className={classes.avatarsToggle}\n onClick={onToggleClick}\n text={seeLessMoreText}\n />\n </>\n )}\n\n <TravelerDetailsDialog\n setIsDialogOpen={setIsDialogOpen}\n isDialogOpen={isDialogOpen}\n traveler={clickedTraveler}\n />\n </Box>\n );\n};\n\nexport default AttendeesAvatars;\n","import React, { useState } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport CardGroupCarousel from '../../../../shared/CardGroupCarousel';\nimport CardGroupCarouselContext from '../../../../shared/CardGroupCarousel/Context';\nimport {\n PreviousStepButton,\n NextStepButton,\n} from '../../../../shared/CardGroupCarousel/CarouselStepButton';\nimport { DateOptionType, StayType } from '../../../../shared/TripObjectTypes';\n\ntype Item = {\n card: DateOptionType[] | StayType[],\n renderCardFunc: (tripObject) => React.ReactNode,\n};\n\ntype CardsOverviewProps = {\n items: Item[],\n};\n\nconst CardsOverview = ({\n items,\n}: CardsOverviewProps) => {\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [maxStep, setMaxStep] = useState<number>(0);\n const showStepButtons = items.length > 1;\n\n return (\n <CardGroupCarouselContext.Provider value={{\n currentStep,\n maxStep,\n setCurrentStep,\n setMaxStep,\n }}>\n <Box position=\"relative\" mb={3}>\n {showStepButtons && (\n <Box position=\"absolute\" top=\"50%\" left={0}>\n <PreviousStepButton />\n </Box>\n )}\n <Box px={4}>\n <CardGroupCarousel items={items} />\n </Box>\n {showStepButtons && (\n <Box position=\"absolute\" top=\"50%\" right={0}>\n <NextStepButton />\n </Box>\n )}\n </Box>\n </CardGroupCarouselContext.Provider>\n );\n};\n\nexport default CardsOverview;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport {\n DateOptionType,\n DestinationType,\n} from \"../../../../shared/TripObjectTypes\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport SectionDivider from \"./SectionDivider\";\n\ntype FinalizedDatesAndDestinationProps = {\n chosenDateOption?: DateOptionType,\n chosenDestination?: DestinationType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '20px',\n fontWeight: 400,\n lineHeight: '30px',\n letterSpacing: '0px',\n },\n boldText: {\n color: '#545DFC',\n fontWeight: 700,\n },\n}));\n\nconst FinalizedDatesAndDestination = ({\n chosenDateOption,\n chosenDestination,\n}: FinalizedDatesAndDestinationProps) => {\n const classes = useStyles();\n\n const renderDestination = () => (\n <span className={classes.boldText}> {chosenDestination.name} </span>\n )\n\n const renderDates = () => (\n <span className={classes.boldText}> {chosenDateOption.startDate}-{chosenDateOption.endDate}, {chosenDateOption.endDateYear}</span>\n )\n\n const renderFinalizedCopy = () => (\n <Typography className={classes.root}>\n { chosenDestination && !chosenDateOption && <>\n You’re going to\n {renderDestination()}\n </>\n }\n { !chosenDestination && chosenDateOption && <>\n Your trip is\n {renderDates()}\n </>\n }\n { chosenDestination && chosenDateOption && <>\n You’re going to\n {renderDestination()}\n from\n {renderDates()}\n </>\n }\n </Typography>\n )\n\n if(!chosenDateOption && !chosenDestination) {\n return null\n }\n\n return <>\n <Grid\n container\n direction=\"column\"\n spacing={3}\n alignItems=\"center\"\n data-test-id='finalized-dates-and-destination'\n pt={3}\n >\n <Grid item textAlign='center'>\n {renderFinalizedCopy()}\n </Grid>\n </Grid>\n <SectionDivider />\n </>\n}\nexport default FinalizedDatesAndDestination;\n","import React from 'react';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Grid, Theme, Typography } from '@mui/material';\nimport Avatar, { statusToVariant } from '../../../../avatars/Avatar';\nimport BroadcastButton from '../../../../shared/SiteHeader/BroadcastButton';\nimport ShareTripButton from '../../../../shared/SiteHeader/ShareTripButton';\nimport Tooltip from '../../../../shared/Tooltip';\nimport { TravelerChip } from '../../../trips/ListTripsPage';\nimport { TripType } from \"../../../../shared/TripTypes\";\nimport RsvpModal from '../../../../shared/RsvpModal';\nimport RespondToInviteOptions from './RespondToInviteOptions';\n\nexport type OverviewTripProps = {\n travelerId: string,\n currentTravelerStatus: string,\n plannerStatus: string,\n plannerAvatarUrl: string,\n}\n\nexport type Invite = {\n id: string,\n inviterAvatarUrl: string,\n inviterName: string,\n inviterStatus: string,\n}\n\ntype OverviewSubheaderProps = {\n currentUserId?: string,\n invite?: Invite,\n trip: TripType & OverviewTripProps,\n};\n\ntype StyleProps = {\n isPlanner: boolean,\n}\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n plannerStatus: {\n marginLeft: theme.spacing(3),\n backgroundColor: '#509CFF',\n },\n userAvatarContainer: {\n width: '100%',\n display: 'inline-flex',\n backgroundColor: 'rgba(49, 93, 205, 0.1)',\n borderRadius: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n marginRight: theme.spacing(2),\n },\n '& > div:first-child': {\n margin: 0,\n },\n },\n bold: {\n fontWeight: 500,\n },\n userName: {\n display: 'inline',\n marginLeft: theme.spacing(1),\n },\n shareTripButtonContainer: {\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(2),\n [theme.breakpoints.down(990)]: {\n margin: '0px 4px',\n },\n [theme.breakpoints.down(400)]: {\n margin: 0,\n },\n },\n}));\n\nconst OverviewSubheader = ({\n currentUserId,\n invite,\n trip,\n}: OverviewSubheaderProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down(700));\n const inviteBtnVariant = trip.isPlanner ? 'primary' : 'tertiary';\n const classes = useStyles({ isPlanner: trip.isPlanner });\n\n const userName = invite ? invite.inviterName : trip.plannerName;\n const showRsvpButtons = !trip.isPlanner;\n\n const inviterInfo =\n <Grid item alignItems=\"center\" className={classes.userAvatarContainer} px={2} py={1}>\n <Avatar\n borderVariant={statusToVariant[invite ? invite.inviterStatus : trip.plannerStatus]}\n src={invite ? invite.inviterAvatarUrl : trip.plannerAvatarUrl}\n size=\"xs\"\n />\n <Typography className={classes.userName}>\n <span className={classes.bold}>{userName}</span> {invite && 'invited you'}\n </Typography>\n {!invite && <TravelerChip className={classes.plannerStatus} isPlanner={true}/>}\n </Grid>;\n\n const shareTripButtonWithTooltip =\n <Tooltip title={!trip.isTraveler ? \"Join trip to invite travelers\" : \"\"}>\n <span className={classes.shareTripButtonContainer}>\n <ShareTripButton\n collapseOnMobile={!trip.isPlanner}\n disabled={!trip.isTraveler}\n inviterId={currentUserId}\n tripId={trip.id}\n tripGid={trip.gid}\n tripName={trip.name}\n inviteBtnVariant={inviteBtnVariant}\n isPlanner={trip.isPlanner}\n segmentMethod='\"Invite\" button in trip navigation'\n shareLinkSource=\"Secondary Nav\"\n />\n </span>\n </Tooltip>;\n\n return (\n <Grid container justifyContent=\"center\" alignItems=\"center\" data-test-id=\"overviewSubHeader\" spacing={1} p={1}>\n <Grid item container={isMobile}>\n {inviterInfo}\n </Grid>\n <Grid item container={isMobile} justifyContent={isMobile && showRsvpButtons ? \"space-between\" : \"center\"} sx={{ display: 'inline-flex' }}>\n {showRsvpButtons && (\n <Grid item>\n <RespondToInviteOptions trip={trip} inviteId={invite?.id} />\n </Grid>\n )}\n <Grid item>\n {shareTripButtonWithTooltip}\n {currentUserId && (\n <BroadcastButton\n currentUserId={currentUserId}\n disabled={!trip.isTraveler}\n tripId={trip.id}\n collapseOnMobile={!trip.isPlanner}\n />\n )}\n </Grid>\n </Grid>\n {currentUserId && (\n <RsvpModal\n tripId={trip.id}\n tripName={trip.name}\n inviterId={currentUserId}\n />\n )}\n </Grid>\n );\n};\n\nexport default OverviewSubheader;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport {\n ListItemIcon,\n ListItemText,\n MenuItem,\n} from '@mui/material';\n\ntype DeclineInviteMenuItemProps = {\n onClick: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n listItemIcon: {\n minWidth: 'auto',\n paddingRight: theme.spacing(2),\n },\n}));\n\nconst DeclineInviteMenuItem = ({\n onClick,\n}: DeclineInviteMenuItemProps) => {\n const classes = useStyles();\n\n return (\n <MenuItem data-test-id='decline-option' tabIndex={2} onClick={onClick}>\n <ListItemIcon className={classes.listItemIcon}>\n ❌\n </ListItemIcon>\n <ListItemText primary=\"Decline\"/>\n </MenuItem>\n )\n};\n\nexport default DeclineInviteMenuItem;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport {\n ButtonBase,\n ListItemIcon,\n Stack,\n Typography,\n} from '@mui/material';\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport {\n tripTravelersPath,\n} from '../../../../../routes';\n\ntype RespondToInviteButtonsProps = {\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexDirection: \"row\",\n height: '48px',\n '& form:first-of-type': {\n marginRight: theme.spacing(2),\n [theme.breakpoints.between(960, 990)]: {\n marginRight: '4px',\n },\n [theme.breakpoints.down(400)]: {\n marginRight: '4px',\n },\n },\n },\n button: {\n width: '100%',\n height: '100%',\n maxHeight: '48px',\n borderRadius: \"6px\",\n padding: \"12px 24px\",\n [theme.breakpoints.down('md')]: {\n padding: \"12px\",\n },\n [theme.breakpoints.down(370)]: {\n padding: \"12px 6px\",\n },\n },\n goingButton:{\n backgroundColor: \"#E9F8F5\",\n border: \"1px solid #1EBE95\",\n },\n interestedButton:{\n backgroundColor: \"#FFF6E6\",\n border: \"1px solid #FCBC40\",\n },\n listItemIcon: {\n color: 'currentColor',\n minWidth: 'auto',\n },\n buttonText: {\n marginLeft: theme.spacing(1),\n fontWeight: 600,\n },\n}));\n\nconst RespondToInviteButtons = ( {\n tripId,\n} : RespondToInviteButtonsProps ) => {\n const classes = useStyles();\n\n const options = {\n going: {\n dataTestId: \"going-option\",\n status: 'going',\n icon: \"Yes\",\n label: \"Going\",\n },\n interested: {\n dataTestId: \"interested-option\",\n status: 'interested',\n icon: \"Maybe\",\n label: \"Interested\",\n },\n };\n\n const renderButton = (option, stylesClass) => (\n <RailsForm\n action={tripTravelersPath(tripId)}\n method='POST'\n withChangeDetection={false}\n >\n <input type=\"hidden\" name=\"status\" value={option.status} />\n <input type=\"hidden\" name=\"redirect_to_path\" value={window.location.pathname} />\n <ButtonBase\n className={[classes.button, stylesClass].join(' ')}\n data-test-id={option.dataTestId}\n type=\"submit\"\n >\n <ListItemIcon className={classes.listItemIcon}>\n {<img src={`/assets/illustrations/${option.icon}.svg`}/>}\n </ListItemIcon>\n <Typography className={classes.buttonText}>\n {option.label}\n </Typography>\n </ButtonBase>\n </RailsForm>\n );\n\n return (\n <Stack className={classes.root}>\n {renderButton(options.going, classes.goingButton)}\n {renderButton(options.interested, classes.interestedButton)}\n </Stack>\n );\n};\n\nexport default RespondToInviteButtons;\n","import React, { useState } from 'react';\nimport { makeStyles, withStyles } from '@mui/styles';\nimport {\n ButtonBase,\n ListItemIcon,\n ListItemText,\n MenuItem,\n MenuList,\n Radio,\n RadioProps,\n} from '@mui/material';\nimport DeclineInviteMenuItem from \"./RespondToInviteButton/DeclineInviteMenuItem\";\nimport DropdownButton from \"../../../../shared/DropdownButton\";\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport ConfirmationDialog from \"../../../../shared/ConfirmationDialog\";\nimport * as routes from '../../../../../routes';\n\ntype RespondToInviteDropdownButtonProps = {\n currentStatus: string,\n disabled?: boolean,\n travelerId: string,\n tripId: string,\n tripInviteId?: string,\n};\n\nconst {\n tripTravelerPath,\n declineTripInvitePath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n width: '100%',\n },\n listItem: {\n width: '100% !important',\n },\n listItemIcon: {\n color: 'currentColor',\n minWidth: 'auto',\n paddingRight: theme.spacing(2),\n },\n listDivider: {\n boxShadow: \"0 1px 0 0 rgba(0, 0, 0, 0.2)\",\n border: \"1px solid white\",\n padding: 0,\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst CustomRadio = withStyles((theme) => ({\n root: {\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n checked: {},\n}))((props: RadioProps) => <Radio color=\"default\" {...props} />);\n\nconst RespondToInviteDropdownButton = ({\n currentStatus,\n disabled,\n travelerId,\n tripId,\n tripInviteId,\n}: RespondToInviteDropdownButtonProps) => {\n const classes = useStyles();\n const formAction = tripTravelerPath(tripId, travelerId);\n const formMethod = 'PATCH';\n\n const labels = {\n 'going': {\n icon: \"Yes\",\n label: \"Going\",\n },\n 'interested': {\n icon: \"Maybe\",\n label: \"Interested\",\n },\n 'cannot_go': {\n icon: \"No\",\n label: \"Not going\",\n },\n };\n\n const options = [\n {\n checked: currentStatus === 'going',\n dataTestId: \"going-option\",\n status: 'going',\n shouldDisplay: true,\n },\n {\n checked: currentStatus === 'interested',\n dataTestId: \"interested-option\",\n status: 'interested',\n shouldDisplay: true,\n },\n {\n checked: currentStatus === 'cannot_go',\n dataTestId: \"cannot-go-option\",\n status: 'cannot_go',\n shouldDisplay: currentStatus,\n },\n ];\n\n const buttonLabel = labels[currentStatus].label;\n const buttonIcon = labels[currentStatus].icon;\n\n const [dialogOpen, setDialogOpen] = useState(false);\n const handleDeclineClick = () => setDialogOpen(true);\n const closeDeclineConfirmationDialog = () => setDialogOpen(false);\n\n return (\n <>\n {tripInviteId && (\n <ConfirmationDialog\n actionMethod=\"PATCH\"\n actionPath={declineTripInvitePath(tripId, tripInviteId)}\n actionText=\"Yes, decline this invite\"\n fullWidthButtons\n isOpen={dialogOpen}\n onClose={closeDeclineConfirmationDialog}\n title=\"Decline this invite?\"\n message=\"If you change your mind later on, the planner will have to re-invite you to this trip.\"\n />\n )}\n <DropdownButton\n disabled={disabled}\n icon={buttonIcon}\n label={buttonLabel}\n menuList={\n <MenuList\n className={classes.listItem}>\n {options.map((option, index) => (\n option.shouldDisplay && (\n <RailsForm\n action={formAction}\n key={index}\n method={formMethod}\n withChangeDetection={false}\n >\n <input type=\"hidden\" name=\"status\" value={option.status} />\n <input type=\"hidden\" name=\"redirect_to_path\" value={window.location.pathname} />\n <ButtonBase\n className={classes.button}\n data-test-id={option.dataTestId}\n disableRipple\n type=\"submit\"\n >\n <MenuItem\n className={classes.listItem}\n tabIndex={2}\n key={index}\n >\n <ListItemIcon key={index} className={classes.listItemIcon}>\n {<img src={`/assets/illustrations/${labels[option.status].icon}.svg`}/>}\n </ListItemIcon>\n <ListItemText primary={labels[option.status].label} />\n <CustomRadio checked={option.checked} disableRipple disabled />\n </MenuItem>\n </ButtonBase>\n </RailsForm>\n )\n ))}\n {tripInviteId && (\n <>\n <hr className={classes.listDivider} />\n <DeclineInviteMenuItem onClick={handleDeclineClick} />\n </>\n )}\n </MenuList>\n }\n />\n </>\n );\n};\n\nexport default RespondToInviteDropdownButton;\n","import React from 'react';\nimport { GlobalTrip } from '../../../../shared/TripTypes';\nimport RespondToInviteDropdownButton from './RespondToInviteDropdownButton';\nimport RespondToInviteButtons from './RespondToInviteButtons';\n\ntype RespondToInviteOptionsTypes = {\n trip: GlobalTrip,\n inviteId?: string,\n}\n\nconst RespondToInviteOptions = ( {trip, inviteId} : RespondToInviteOptionsTypes ) => {\n return (\n <>\n {trip.currentTravelerStatus ? (\n <RespondToInviteDropdownButton\n currentStatus={trip.currentTravelerStatus}\n disabled={trip.isPlanner}\n travelerId={trip.travelerId}\n tripId={trip.id}\n tripInviteId={inviteId}\n />\n ) : (\n <RespondToInviteButtons tripId={trip.id} />\n )}\n </>\n );\n};\n\nexport default RespondToInviteOptions;\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\nimport Button, { ButtonProps } from \"../../../../buttons/Button\";\nimport { theme } from \"../../../../Document\"\n\ntype SectionCtaButtonProps = ButtonProps & {\n children: React.ReactNode,\n}\nconst SectionCtaButton = React.forwardRef(({\n children,\n ...buttonProps\n}: SectionCtaButtonProps, ref: React.ForwardedRef<HTMLButtonElement>) => {\n return (\n <Box sx={{marginBottom: theme.spacing(4), textAlign: 'center'}}>\n <Button\n ref={ref}\n {...buttonProps}\n >\n {children}\n </Button>\n </Box>\n );\n});\n\nSectionCtaButton.displayName = 'SectionCtaButton'\n\nexport default SectionCtaButton;\n","import React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n border: 'none',\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(1),\n },\n rule: {\n background: '#c1c1c1',\n border: 'none',\n height: '1px',\n margin: 0,\n },\n}));\n\nconst SectionDivider = () => {\n const classes = useStyles();\n\n return (\n <Box className={classes.root}>\n <hr className={classes.rule} />\n </Box>\n );\n};\n\nexport default SectionDivider;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport {\n Container,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype SectionHeaderProps = {\n hasNoMarginBottom?: boolean,\n heading: string,\n subheading: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: theme.spacing(96),\n textAlign: 'center',\n marginBottom: theme.spacing(3),\n marginTop: theme.spacing(3),\n },\n heading: {\n background: '#fff',\n color: '#272727',\n display: 'inline-block',\n fontSize: 20,\n fontWeight: 600,\n textAlign: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n [theme.breakpoints.up('sm')]: {\n fontSize: 24,\n },\n },\n subheading: {\n marginTop: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n fontSize: 18,\n },\n },\n noMargin: {\n marginBottom: theme.spacing(-3),\n },\n}));\n\nconst SectionHeader = ({\n hasNoMarginBottom = false,\n heading,\n subheading,\n}: SectionHeaderProps) => {\n const classes = useStyles();\n\n return (\n <Container className={classes.root} data-test-id=\"section-header\">\n <Typography className={classes.heading}>\n {heading}\n </Typography>\n {subheading && (\n <Typography className={clsx(classes.subheading,\n {[classes.noMargin]: hasNoMarginBottom})}>\n {subheading}\n </Typography>\n )}\n </Container>\n )\n};\n\nexport default SectionHeader;\n","import { Chip, Stack, Typography } from '@mui/material';\nimport React from 'react';\nimport { DialogBottomOnMobile } from '../../../../shared/Dialog';\nimport { TravelerProps } from '../../../../shared/TravelersVotingBox';\nimport { humanizedStatus } from '../../../../../helpers/statusToHuman';\nimport { makeStyles } from '@mui/styles';\nimport Avatar from '../../../../avatars/Avatar';\nimport { SegmentContext } from '../../../../Document';\nimport { useDismissDialogEvent } from '../../../../../services/segmentEvents/useTravelerPlusOnesDialogEvents';\nimport ManageTripButton from '../../../../shared/SiteHeader/ManageTripButton';\nimport pluralize from 'pluralize';\n\ntype TravelerDetailsDialogProps = {\n isDialogOpen: boolean;\n setIsDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n traveler?: TravelerProps\n};\n\nconst useStyles = makeStyles((theme) => ({\n chip: {\n marginLeft: theme.spacing(1),\n color: 'white',\n borderRadius: '5px',\n },\n travelersGroup: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n },\n travelersPlusOnes: {\n fontSize: '16px',\n marginBottom: theme.spacing(1),\n },\n travelersNote: {\n fontSize: '14px',\n lineHeight: '24px',\n color: '#4A6176',\n marginBottom: theme.spacing(3),\n },\n plusOneName: {\n fontSize: '14px',\n paddingTop: theme.spacing(0.5),\n },\n manageButton: {\n marginTop: theme.spacing(2),\n width: '100%',\n },\n plusOnesContainer: {\n display: 'flex',\n alignItems: 'flex-start',\n overflowX: 'auto',\n },\n}));\n\nconst chipBackgroundColors = {\n going: '#1EBE95',\n interested: '#FBA500',\n cannot_go: '#C94A4A',\n}\n\nconst getFirstName = (name: string) : string => name?.split(\" \")[0];\n\nconst TravelerDetailsDialog = ({\n isDialogOpen,\n setIsDialogOpen,\n traveler,\n}: TravelerDetailsDialogProps) => {\n const { currentUserId, tripId } = React.useContext(SegmentContext);\n const classes = useStyles();\n\n const dismissDialogEvent = useDismissDialogEvent();\n\n const onClose = () => {\n setIsDialogOpen(false);\n dismissDialogEvent(traveler)\n };\n\n const renderTitle = () => (\n <Stack flexDirection=\"row\" alignItems=\"center\">\n <Typography\n className={classes.travelersGroup}\n >\n {`${getFirstName(traveler?.name)}'s group`}\n </Typography>\n <Chip\n className={classes.chip}\n sx={{ backgroundColor: chipBackgroundColors[traveler?.status] }}\n size=\"small\"\n label={humanizedStatus(traveler?.status)}\n />\n </Stack>\n );\n\n const renderManageButton = () => (\n isTravelerCurrentUser && (\n <ManageTripButton\n tripId={tripId}\n segmentMethod='Plus 1 modal'\n disabled={false}\n collapseOnMobile={false}\n className={classes.manageButton}\n />\n )\n );\n\n const isTravelerCurrentUser = currentUserId === traveler?.userId;\n const plusOneText = `${pluralize('plus-one', traveler?.plusOnes.length)}`;\n const currentUserTitle = `You're traveling with ${traveler?.plusOnes.length} ${plusOneText}.`;\n const anotherUserTitle = `${getFirstName(traveler?.name)} is traveling with ${traveler?.plusOnes.length} ${plusOneText}.`\n const titleText = isTravelerCurrentUser ? currentUserTitle : anotherUserTitle;\n\n const renderMessage = () => (\n <Stack>\n <Typography className={classes.travelersPlusOnes}>\n {titleText}\n </Typography>\n <Typography className={classes.travelersNote}>\n *Note: Plus-ones are for visibility only\n </Typography>\n <div className={classes.plusOnesContainer}>\n {\n traveler?.plusOnes.map((plusOne) => (\n <Stack key={plusOne.displayName} mr={3} alignItems='center'>\n <Avatar>\n <img src='/assets/plus_one_avatar.svg' width=\"40\" height=\"40\" />\n </Avatar>\n <Typography className={classes.plusOneName}>\n {plusOne.displayName}\n </Typography>\n </ Stack>\n ))\n }\n </div>\n {renderManageButton()}\n </Stack>\n );\n\n return(\n <DialogBottomOnMobile\n title={renderTitle()}\n fullWidth\n maxWidth=\"xs\"\n message={renderMessage()}\n isOpen={isDialogOpen}\n onClose={onClose}\n />\n )\n};\n\nexport default TravelerDetailsDialog;\n","import React from 'react';\nimport clsx from 'clsx';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport SectionCtaButton from './SectionCtaButton';\nimport CardsOverview from './CardsOverview';\nimport NoSuggestionsYet from '../../../../shared/NoSuggestionsYet';\nimport SectionHeader from './SectionHeader';\nimport { DateOptionType, StayType } from '../../../../shared/TripObjectTypes';\n\ntype TripObjectListProps = {\n ctaPath: string,\n ctaText: string,\n heading: string,\n illustration: 'calendar' | 'camper',\n renderCard: (tripObject) => React.ReactNode,\n subheading: string,\n tripObjects: DateOptionType[] | StayType[],\n useRef: (element) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n noMarginTop: {\n marginTop: theme.spacing(-4),\n },\n}));\n\nconst TripObjectList = ({\n ctaPath,\n ctaText,\n heading,\n illustration,\n renderCard,\n subheading,\n tripObjects,\n useRef,\n}: TripObjectListProps) => {\n const classes = useStyles();\n\n const cardsOverviewItems = tripObjects.map((tripObject) => {\n return { card: tripObject, renderCardFunc: renderCard };\n });\n\n return (\n <>\n <SectionHeader\n heading={heading}\n subheading={subheading}\n hasNoMarginBottom\n />\n {tripObjects.length > 0 ?\n <CardsOverview items={cardsOverviewItems} />\n :\n <NoSuggestionsYet\n illustration={illustration}\n heading=\"No suggestions yet.\"\n subheading=\"Have an idea? Suggest it below.\"\n />\n }\n <SectionCtaButton\n href={ctaPath}\n className={clsx({[classes.noMarginTop]: tripObjects.length > 0})}\n ref={(el) => useRef(el)}\n data-test-id=\"cta-button\"\n >\n {ctaText}\n </SectionCtaButton>\n </>\n );\n};\n\nexport default TripObjectList;\n","import { gql } from \"@apollo/client\";\n\nexport const TRIP_QUERY = gql`\n query fetchTrip($tripId: ID!) {\n node(id: $tripId) {\n ... on Trip {\n uuid\n name\n datesState\n destinationsState\n staysState\n chosenDateOption {\n startDate\n endDate\n endDateYear\n }\n chosenDestination {\n name\n }\n chosenStay {\n name\n }\n }\n }\n }\n`;\n\n","import React, { useContext } from \"react\";\nimport { Skeleton, Stack } from \"@mui/material\";\nimport SectionHeader from \"./SectionHeader\";\nimport VerticalStatusCard from \"./VerticalStatusCard\";\nimport {\n TripSiteContext,\n} from \"../../../../Document\";\nimport {\n tripActivitiesPath,\n tripDatesPath,\n tripDestinationsPath,\n tripStaysPath,\n addBySmartSearchTripStaysPath,\n} from \"../../../../../routes\";\nimport { useQuery } from \"@apollo/client\";\nimport { TRIP_QUERY } from \"../../../../../graphql/queries/trips\";\nimport * as Sentry from \"@sentry/browser\";\nimport SnackbarNotification, { SnackbarNotificationProp } from '../../../../shared/SnackbarNotification';\n\nconst Snackbar = (props: Partial<SnackbarNotificationProp>) => (\n <SnackbarNotification\n autoHideDuration={props.autoHideDuration ?? null}\n message={props.message}\n open={!!props.message}\n severity={props.severity}\n />\n);\n\nconst TripStatusSkeletonCards = () => {\n return (\n <Stack alignItems=\"center\" sx={{ marginTop: '0px !important' }}>\n <Skeleton width={500} height={100} />\n <Skeleton width={500} height={100} />\n <Skeleton width={500} height={100} />\n </Stack>\n );\n};\n\nconst TripStatus = () => {\n const { tripGid, tripId } = useContext(TripSiteContext);\n const staysSuggestingPath = addBySmartSearchTripStaysPath(tripId);\n\n const { data, loading, error } = useQuery(\n TRIP_QUERY, {\n variables: {\n tripId: tripGid,\n },\n },\n )\n\n if (error) {\n Sentry.captureException(error)\n return <>\n <Snackbar\n message='Sorry, something went wrong loading trip statuses. Please try again.'\n severity='error'\n />\n <TripStatusSkeletonCards />\n </>\n }\n\n const {\n datesState,\n destinationsState,\n staysState,\n chosenDateOption,\n chosenDestination,\n chosenStay,\n uuid,\n } = data?.node || {};\n\n const finalizedDates = `${chosenDateOption?.startDate} - ${chosenDateOption?.endDate}, ${chosenDateOption?.endDateYear}`;\n\n return (\n <Stack alignItems=\"center\" spacing={2}>\n <SectionHeader\n heading=\"Trip Status\"\n subheading=\"Collaborate with your group and keep track of decisions for this trip.\"\n />\n {loading ?\n <TripStatusSkeletonCards />\n : <>\n <VerticalStatusCard\n data-test-id='verticalStatusCardDates'\n finalizedDetails={finalizedDates}\n vertical=\"Dates\"\n status={datesState}\n path={tripDatesPath(uuid)}\n />\n <VerticalStatusCard\n data-test-id='verticalStatusCardDestination'\n finalizedDetails={chosenDestination?.name}\n vertical=\"Destinations\"\n status={destinationsState}\n path={tripDestinationsPath(uuid)}\n />\n <VerticalStatusCard\n data-test-id='verticalStatusCardStay'\n finalizedDetails={chosenStay?.name}\n vertical=\"Stays\"\n status={staysState}\n path={staysState === 'suggesting' ? staysSuggestingPath : tripStaysPath(tripId)}\n />\n <VerticalStatusCard\n vertical=\"Activities\"\n status=\"suggesting\"\n path={tripActivitiesPath(uuid)}\n />\n </>}\n </Stack>\n );\n};\n\nexport default TripStatus;\n","import React from \"react\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport { Chip, Grid, Stack, Typography } from \"@mui/material\";\nimport useSegment from \"../../../../../services/useSegment\";\n\ntype Status = 'suggesting' | 'voting' | 'finalized' | 'skipped_voting_finalized';\ntype Vertical = 'Activities' | 'Dates' | 'Destinations' | 'Stays';\n\ntype VerticalStatusCardProps = {\n finalizedDetails?: string,\n vertical: Vertical,\n status: Status,\n path: string,\n};\n\ntype StatusProps = {\n backgroundColor: string,\n chipColor: string,\n};\n\ntype chipColorProps = (status: Status) => StatusProps\n\nconst suggestingLabelByVertical = {\n Activities: 'Suggest and vote',\n Stays: 'Search and add stays',\n Dates: 'Add suggestions',\n Destinations: 'Add suggestions',\n};\n\nconst chipLabel = (vertical: Vertical) => ({\n suggesting: suggestingLabelByVertical[vertical],\n voting: 'Vote on options',\n finalized: 'Finalized',\n skipped_voting_finalized: 'Finalized',\n});\n\nconst chipColor : chipColorProps = (status) => {\n const isFinalized = status === 'finalized' || status === 'skipped_voting_finalized';\n\n return {\n backgroundColor: isFinalized ? '#E9F9F4' : '#F4F5FF',\n chipColor: isFinalized ? '#1EBE95' : '#545DFC',\n }\n};\n\nconst subtitleCopy = {\n Activities: 'Make your trip memorable with activities.',\n Dates: 'Pick a date that works for the group.',\n Destinations: 'Select the best destination for your trip.',\n Stays: 'Find the perfect place to stay.',\n};\n\nconst verticalImages = (isFinalized) => {\n const assetPath = isFinalized ? '' : 'non-';\n\n return {\n Activities: `/assets/activities.svg`,\n Dates: `/assets/dates-${assetPath}finalized.svg`,\n Destinations: `/assets/destinations-${assetPath}finalized.svg`,\n Stays: `/assets/stays-${assetPath}finalized.svg`,\n }\n};\n\nconst useStyles = makeStyles<DefaultTheme, { status: Status }>((theme) => ({\n root: {\n border: '1px solid #BEC9D4',\n borderRadius: '8px',\n backgroundColor: ({ status }) => chipColor(status).backgroundColor,\n cursor: 'pointer',\n width: '100%',\n maxWidth: '500px',\n padding: theme.spacing(2),\n },\n vertical: {\n color: '#272727',\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n },\n chip: {\n backgroundColor: ({ status }) => chipColor(status).chipColor,\n color: '#FFFFFF',\n cursor: 'pointer',\n fontSize: 14,\n fontWeight: 600,\n width: 'fit-content',\n },\n finalizedDetails: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}));\n\nconst VerticalStatusCard = ({\n finalizedDetails,\n vertical,\n status,\n path,\n}: VerticalStatusCardProps) => {\n const classes = useStyles({ status });\n const { trackSegment } = useSegment();\n const isFinalized = status === 'finalized' || status === 'skipped_voting_finalized';\n\n const onClick = () => {\n trackSegment('Trip Status Card Clicked', { verticalCardClicked: vertical, verticalStatus: status });\n window.location.href = path;\n };\n\n return (\n <Grid container direction=\"column\" className={classes.root} onClick={onClick}>\n <Grid item container justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Stack spacing={1}>\n <Typography className={classes.vertical}>{vertical}</Typography>\n <Chip\n className={classes.chip}\n label={chipLabel(vertical)[status]}\n />\n </Stack>\n <img src={verticalImages(isFinalized)[vertical]} data-test-id=\"vertical-image\" />\n </Grid>\n {isFinalized && finalizedDetails && (\n <Grid item container pt={1}>\n <Typography className={classes.finalizedDetails}>\n {finalizedDetails}\n </Typography>\n </Grid>\n )}\n {!isFinalized && (\n <Grid item container pt={1}>\n <Typography className={classes.finalizedDetails}>\n {subtitleCopy[vertical]}\n </Typography>\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default VerticalStatusCard;\n","import React from \"react\";\nimport withLayout from \"./withLayout\";\nimport {\n Box,\n Grid,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport Divider from \"../../../shared/Divider\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport TravelersVotingBox, { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport SectionHeader from \"./shared/SectionHeader\";\nimport ClosedPollsSection from \"./PollsPage/ClosedPollsSection\";\nimport OpenedPollsSection from \"./PollsPage/OpenedPollsSection\";\nimport { Poll, PollState } from './PollsPage/PollView/PollTypes';\nimport { GlobalTrip } from \"../../../shared/TripTypes\";\n\ntype PollsPageProps = {\n polls: Array<Poll>,\n travelersVoting: Array<TravelerProps>,\n trip: GlobalTrip & {\n maxOpenPollCount: number,\n },\n}\n\nconst useStyles = makeStyles((theme) => ({\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst PollsPage = ({\n trip,\n polls,\n travelersVoting,\n}: PollsPageProps) => {\n const classes = useStyles();\n const openedPolls = polls.filter(poll => poll.state === PollState.Open);\n const closedPolls = polls.filter(poll => poll.state === PollState.Closed);\n const openedPollCount = openedPolls.length;\n const hasOpenedPoll = openedPollCount > 0;\n const sectionHeaderNote = 'Create a poll to help your group narrow down options or answer key questions.';\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const travelersVotingBox = () => {\n return (\n <TravelersVotingBox\n isEmptyState={!hasOpenedPoll}\n travelers={travelersVoting}\n tripId={trip.id}\n verticalType='polls'\n />\n );\n };\n\n const sideBarContent = () => {\n if (isMobile) return;\n\n return (\n <Grid container direction=\"column\">\n <Grid item>\n {travelersVotingBox()}\n </Grid>\n </Grid>\n );\n };\n\n return (\n <SideBarPage\n mainContent={\n <>\n {isMobile && <>\n <Box mb={3}><Divider /></Box>\n {travelersVotingBox()}\n <Box my={3}><Divider /></Box>\n </>}\n <SectionHeader title=\"Polls\" note={sectionHeaderNote} />\n <OpenedPollsSection\n polls={openedPolls}\n maxOpenPollCount={trip.maxOpenPollCount}\n />\n <Divider className={classes.divider} />\n <ClosedPollsSection polls={closedPolls} />\n </>\n }\n sideBarContent={sideBarContent()}\n />\n );\n};\n\nexport default withLayout(PollsPage, { fluid: true });\n","import React, { useCallback, useContext } from \"react\";\nimport Button from \"../../../../buttons/Button\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport { newTripPollPath } from \"../../../../../routes\";\nimport { trackLink as trackLinkAnalyticsEvent } from '../../../../../services/analytics';\nimport { SegmentContext } from \"../../../../Document\";\nimport { Grid } from \"@mui/material\";\n\ntype AddPollButtonProps = {\n hasMoreThanThreeOpenedPolls: boolean,\n};\n\nconst AddPollButton = ({\n hasMoreThanThreeOpenedPolls,\n}: AddPollButtonProps) => {\n const { tripId, currentUserId, isPlanner } = useContext(SegmentContext)\n\n const createPollRef = useCallback((element) => {\n if (element !== null) {\n trackLinkAnalyticsEvent(\n element,\n 'Poll Creation Initiated',\n {\n category: 'Polling',\n tripId: tripId,\n planner: isPlanner,\n userId: currentUserId,\n },\n );\n }\n }, []);\n\n const tooltip = 'Only 3 polls can be open at a time';\n\n return (\n <Tooltip title={hasMoreThanThreeOpenedPolls ? tooltip : ''}>\n <Grid>\n <Button\n data-test-id='create-poll-button'\n disabled={hasMoreThanThreeOpenedPolls}\n fullWidth\n href={newTripPollPath(tripId)}\n ref={(el) => createPollRef(el)}\n >\n Create poll\n </Button>\n </Grid>\n </Tooltip>\n );\n};\n\nexport default AddPollButton;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Typography } from \"@mui/material\";\nimport Button from \"../../../../buttons/Button\";\nimport ConfirmationDialog from \"../../../../shared/ConfirmationDialog\";\nimport { Poll } from './PollView/PollTypes';\n\nimport {\n closeTripPollPath,\n} from \"../../../../../routes\";\nimport Tooltip from \"../../../../shared/Tooltip\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n bold: {\n fontWeight: 500,\n display: 'inline',\n },\n}));\n\ntype CloseButtonProps = {\n disableButton: boolean,\n poll: Poll,\n};\n\nconst CloseButton = ({\n disableButton,\n poll,\n}: CloseButtonProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n const tooltipTitle = disableButton ? 'Only the planner or person who created this poll can close it.' : '';\n\n return <>\n <Tooltip\n data-test-id=\"close-poll-tooltip\"\n title={tooltipTitle}\n >\n <span>\n <Button\n data-test-id=\"closePollButton\"\n disabled={disableButton}\n fullWidth\n onClick={() => setDialogOpen(true)}\n variant=\"secondary\"\n >\n Close Poll\n </Button>\n </span>\n </Tooltip>\n <ConfirmationDialog\n actionPath={closeTripPollPath(poll.tripId, poll.id)}\n actionMethod=\"PATCH\"\n actionText=\"Close poll\"\n buttonVariant=\"primary\"\n isOpen={dialogOpen}\n message={(\n <Typography className={classes.root}>\n <span className={classes.bold}>Heads up! </span>\n This will close the poll for everyone on your trip and prevent anyone else from voting.\n </Typography>\n )}\n onClose={() => setDialogOpen(false)}\n title=\"Close this poll?\"\n />\n </>;\n};\n\nexport default CloseButton;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport PollsList from './PollsList';\nimport { Poll } from './PollView/PollTypes';\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\n\ntype ClosedPollsSectionProps = {\n polls: Array<Poll>,\n};\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n marginTop: theme.spacing(2),\n },\n pollsCount: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: '24px',\n color: '#69737A',\n },\n}));\n\nconst ClosedPollsSection = ({\n polls,\n}: ClosedPollsSectionProps) => {\n const classes = useStyles();\n const hasClosedPolls = polls.length > 0;\n\n return <>\n <Grid\n container\n justifyContent=\"space-between\"\n className={classes.header}\n >\n <Grid item>\n <Typography className={classes.pollsCount}>Closed polls ({polls.length})</Typography>\n </Grid>\n </Grid>\n {hasClosedPolls && (\n <PollsList polls={polls} />\n )}\n {!hasClosedPolls && <NoSuggestionsYet subheading=\"There are no closed polls.\" />}\n </>;\n};\n\nexport default ClosedPollsSection;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport PollsList from './PollsList';\nimport AddPollButton from \"./AddPollButton\";\nimport { Poll } from './PollView/PollTypes';\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\n\ntype OpenedPollsSectionProps = {\n maxOpenPollCount: number,\n polls: Array<Poll>,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n pollsCount: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: '24px',\n color: '#69737A',\n },\n}));\n\nconst OpenedPollsSection = ({\n maxOpenPollCount,\n polls,\n}: OpenedPollsSectionProps) => {\n const classes = useStyles();\n const hasMoreThanThreeOpenedPolls = polls.length >= maxOpenPollCount;\n const hasNoPolls = polls.length === 0;\n\n return <>\n <Grid container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography className={classes.pollsCount}>Open polls ({polls.length})</Typography>\n </Grid>\n <Grid item>\n <AddPollButton hasMoreThanThreeOpenedPolls={hasMoreThanThreeOpenedPolls} />\n </Grid>\n </Grid>\n <Box className={classes.root}>\n {hasNoPolls ?\n <NoSuggestionsYet\n subheading=\"There are no open polls.\"\n illustration=\"polling\"\n />\n :\n <PollsList polls={polls} />\n }\n </Box>\n </>;\n};\n\nexport default OpenedPollsSection;\n","import React, { useState, useContext } from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Divider,\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport DeleteButton from './PollView/DeleteButton';\nimport PollAnswersForm from \"./PollView/PollAnswersForm\";\nimport { Poll, PollState } from './PollView/PollTypes';\nimport CommentIcon from '@mui/icons-material/Comment';\nimport Button from \"../../../../buttons/Chip\";\nimport PollAnswerButton from '../shared/PollAnswerButton';\nimport PollAnswerResponses from \"../shared/PollAnswerResponses\";\nimport PollVotes from \"./PollView/PollVotes\";\nimport Linkify from \"../../../../shared/Linkify\";\nimport CloseButton from \"./CloseButton\";\nimport { SegmentContext } from \"../../../../Document\";\nimport ObjectAuthor from \"../../../../shared/ObjectAuthor\";\n\nimport {\n tripPollCommentsPath,\n tripPollResponsesPath,\n} from \"../../../../../routes\";\n\nconst useStyles = makeStyles((theme) => ({\n actions: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n clickable: {\n cursor: 'pointer',\n },\n header: {\n position: 'relative',\n },\n pollAnswers: {\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(1),\n },\n pollQuestion: {\n width: '100%',\n fontWeight: 600,\n fontSize: '18px',\n lineHeight: theme.spacing(3),\n },\n root: {\n border: '1px solid #C1C1C1',\n boxSizing: 'border-box',\n borderRadius: '5px',\n padding: theme.spacing(2),\n marginBottom: theme.spacing(1),\n width: '100%',\n },\n divider: {\n paddingTop: theme.spacing(3),\n },\n verticalActions: {\n marginTop: theme.spacing(1),\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(1),\n },\n },\n commentButton: {\n height: '32px !important',\n },\n commentButtonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n zIndex: 2,\n maxWidth: '100%',\n },\n objectAuthorWrapper: {\n overflow: 'auto',\n },\n}));\n\ntype PollViewProps = {\n commentFormToggle?: boolean,\n displayFormToggle?: (displayForm: boolean) => void,\n displayCommentButton?: boolean,\n displayDeleteButton?: boolean,\n hideAnswers?: boolean,\n poll: Poll,\n shouldRedirectTo?: string,\n wrapWithLink?: boolean,\n isExpanded?: boolean,\n};\n\nconst PollView = ({\n commentFormToggle,\n displayFormToggle,\n displayCommentButton = false,\n displayDeleteButton = true,\n hideAnswers = false,\n poll,\n shouldRedirectTo,\n wrapWithLink = false,\n isExpanded = false,\n}: PollViewProps) => {\n const classes = useStyles();\n const { isPlanner } = useContext(SegmentContext)\n const isOpenForResponses = poll.state === PollState.Open;\n const [collapsed, setCollapsed] = useState(!isExpanded && !isOpenForResponses);\n\n const onContainerLinkClicked = (event) => {\n if (event.target.dataset['element'] !== 'link') {\n setCollapsed(!collapsed);\n };\n };\n\n const disableClosedButton = !(poll.isAuthoredByCurrentUser || isPlanner)\n\n const wrapQuestionWithLink = (component) => {\n if (wrapWithLink) {\n return (\n <Link href={tripPollCommentsPath(poll.tripId, poll.id)}>\n {component}\n </Link>\n );\n } else {\n return component;\n };\n };\n\n return (\n <Box data-test-id=\"pollView\" className={classes.root}>\n <Grid container justifyContent=\"space-between\" alignItems=\"center\" flexWrap=\"nowrap\">\n <Grid item className={classes.objectAuthorWrapper}>\n <ObjectAuthor authorName={poll.authorName} avatarUrl={poll.authorAvatarUrl} />\n </Grid>\n {poll.isAuthoredByCurrentUser && displayDeleteButton && (\n <Grid item>\n <DeleteButton poll={poll} />\n </Grid>\n )}\n </Grid>\n <Box pt={2} className={classes.header}>\n {wrapQuestionWithLink(\n <Typography\n className={clsx(\n classes.pollQuestion,\n {[classes.clickable]: !hideAnswers},\n )}\n data-test-id=\"question-header\"\n onClick={onContainerLinkClicked}\n >\n <Linkify>{poll.question}</Linkify>\n </Typography>\n )}\n {!collapsed && !hideAnswers && <Divider className={classes.divider}/>}\n {collapsed && (\n <>\n <Divider sx={{mb: 2, pt: 3}}/>\n <PollVotes\n commentsCount={poll.commentsCount}\n commentsPath={poll.commentsPath}\n responsesCountTotal={poll.responsesCountTotal}\n tripId={poll.tripId}\n tripObjectId={poll.id}\n />\n </>\n )}\n </Box>\n {!hideAnswers && !collapsed && (<>\n <Grid container direction=\"column\" id={poll.id} className={classes.pollAnswers} spacing={2}>\n <Grid item>\n {isOpenForResponses && (\n <PollAnswersForm\n currentUserChoice={poll.currentUserChoice}\n pollAnswers={poll.answers}\n path={tripPollResponsesPath(poll.tripId, poll.id)}\n shouldRedirectTo={shouldRedirectTo}\n />\n )}\n {!isOpenForResponses && poll.answers.map((answer, index) => (\n <React.Fragment key={index}>\n <PollAnswerButton\n answer={answer}\n isClickable={false}\n selected={poll.currentUserChoice?.id == answer.id}\n />\n <PollAnswerResponses answer={answer} />\n </React.Fragment>\n ))}\n </Grid>\n </Grid>\n <>\n {displayCommentButton && (\n <>\n <Divider sx={{mb: 2, pt: 3}}/>\n <PollVotes\n commentsCount={poll.commentsCount}\n commentsPath={poll.commentsPath}\n responsesCountTotal={poll.responsesCountTotal}\n tripId={poll.tripId}\n tripObjectId={poll.id}\n />\n </>\n )}\n {displayCommentButton && (\n <>\n <Divider sx={{mb: 2, mt: -1}} className={classes.divider}/>\n <Grid container direction=\"row\" justifyContent='end'>\n {isOpenForResponses && (\n <Grid item xs={6} sm={3}>\n <CloseButton poll={poll} disableButton={disableClosedButton} />\n </Grid>\n )}\n <Grid item xs={6} sm={9} className={classes.commentButtonContainer}>\n <Button\n onClick={() => displayFormToggle(!commentFormToggle)}\n className={classes.commentButton}\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: poll.id}}\n data-test-id='commentButton'\n >\n <CommentIcon />\n </Button>\n </Grid>\n </Grid>\n </>\n )}\n </>\n </>\n )}\n </Box>\n );\n};\n\nexport default PollView;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Button,\n ButtonGroup,\n} from \"@mui/material\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport DeleteResourceConfirmationDialog from \"../../../../../shared/DeleteResourceConfirmationDialog\";\nimport { Poll } from './PollTypes';\n\nimport {\n tripPollPath,\n} from \"../../../../../../routes\";\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n height: 30,\n padding: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n root: {\n position: 'relative',\n boxSizing: 'border-box',\n borderRadius: '5px',\n },\n}));\n\ntype DeleteButtonProps = {\n poll: Poll,\n};\n\nconst DeleteButton = ({\n poll,\n}: DeleteButtonProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n\n return (\n <Box className={classes.root}>\n <ButtonGroup\n classes={{\n groupedOutlined: classes.buttonGroup,\n }}\n disableElevation\n variant=\"outlined\"\n size=\"small\"\n >\n <Button\n data-test-id=\"deletePollButton\"\n onClick={() => setDialogOpen(true)}\n className={classes.button}\n >\n <DeleteIcon fontSize=\"small\" />\n </Button>\n </ButtonGroup>\n <DeleteResourceConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={tripPollPath(poll.tripId, poll.id)}\n resourceName=\"poll\"\n />\n </Box>\n );\n};\n\nexport default DeleteButton;\n","import React, { useRef } from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport PollAnswerButton from '../../shared/PollAnswerButton';\nimport PollAnswerResponses from \"../../shared/PollAnswerResponses\";\nimport RailsForm from '../../../../../shared/RailsForm';\nimport useStateWithPromise from \"../../../../../../services/useStateWithPromise\";\nimport {\n Grid,\n Typography,\n} from '@mui/material';\n\ntype ResponseType = {\n displayName: string,\n avatarUrl: string,\n plusOneCount: number,\n};\n\nexport type PollAnswerType = {\n body: string,\n id: string,\n responses: Array<ResponseType>,\n responsesCount: number,\n responsesPercentage: number,\n};\n\ntype PollAnswersFormProps = {\n pollAnswers: Array<PollAnswerType>,\n path: string,\n currentUserChoice?: PollAnswerType,\n shouldRedirectTo?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n color: '#272727',\n fontSize: 16,\n lineHeigth: '24px',\n },\n}));\n\nconst PollAnswersForm = ({\n currentUserChoice,\n pollAnswers,\n path,\n shouldRedirectTo,\n}: PollAnswersFormProps) => {\n const classes = useStyles();\n const [selectedAnswerId, setSelectedAnswerId] = useStateWithPromise(currentUserChoice?.id);\n const [formMethod, setFormMethod] = useStateWithPromise('POST');\n const formRef = useRef(null);\n\n const onAnswerClicked = (answerId) => {\n if (answerId !== selectedAnswerId) {\n setSelectedAnswerId(answerId).then(() => formRef.current.submit());\n } else {\n setFormMethod('DELETE').then(() => formRef.current.submit());\n };\n };\n\n return (\n <RailsForm\n method={formMethod}\n action={path}\n withChangeDetection\n ref={formRef}\n >\n {shouldRedirectTo && <input hidden name='after_response' value={shouldRedirectTo} />}\n <input hidden name='poll_answer_id' value={selectedAnswerId} />\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.title}>\n Select your answer below\n </Typography>\n </Grid>\n {pollAnswers.map((answer, index) => (\n <React.Fragment key={index}>\n <Grid item data-test-id={`answer-option-${index}`}>\n <PollAnswerButton\n answer={answer}\n onClick={() => onAnswerClicked(answer.id)}\n selected={currentUserChoice?.id == answer.id}\n showProgressBar\n />\n <PollAnswerResponses answer={answer} />\n </Grid>\n </React.Fragment>\n ))}\n </Grid>\n </RailsForm>\n );\n};\n\nexport default PollAnswersForm;\n","import { PollAnswerType } from \"./PollAnswersForm\";\nimport { SyncComment } from \"../../../../../shared/TripObjectTypes\";\n\nexport type Poll = {\n answers: Array<PollAnswerType>,\n authorName: string,\n authorAvatarUrl: string,\n commentsCount: number,\n commentsPath: string,\n currentUserChoice?: PollAnswerType,\n mostRecentComment?: SyncComment,\n responsesCountTotal: number,\n id: string,\n isAuthoredByCurrentUser?: boolean,\n question: string,\n state: PollState,\n tripId: string,\n type: 'Poll',\n};\n\nexport enum PollState {\n Open = 'open',\n Closed = 'closed',\n};\n","import React from \"react\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport CommentsLink from \"../../shared/CommentsLink\";\nimport pluralize from 'pluralize';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: '#555E64',\n },\n}));\n\ntype PollVotesProps = {\n commentsCount: number,\n commentsPath: string,\n responsesCountTotal: number,\n tripId: string,\n tripObjectId: string,\n};\n\nconst PollVotes = ({\n commentsCount,\n commentsPath,\n responsesCountTotal,\n tripId,\n tripObjectId,\n}: PollVotesProps) => {\n const classes = useStyles();\n\n return <>\n <Grid container className={classes.root} justifyContent=\"space-between\">\n <Grid item data-test-id=\"responsesCountTotal\" >\n {pluralize('vote', responsesCountTotal, true)}\n </Grid>\n <Grid item>\n <CommentsLink\n commentsLink={commentsPath}\n commentsCount={commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: tripObjectId,\n tripObjectType: 'polls',\n }}\n />\n </Grid>\n </Grid>\n </>\n};\n\nexport default PollVotes;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Grid } from \"@mui/material\";\nimport { Poll } from './PollView/PollTypes';\nimport PollView from \"./PollView\";\nimport { tripPollCommentsPath } from \"../../../../../routes\";\nimport MostRecentCommentBox from \"../shared/MostRecentCommentBox\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n list: {\n width: '100%',\n },\n}));\n\ntype PollsListProps = {\n polls: Array<Poll>,\n};\n\nconst PollsList = ({\n polls,\n}: PollsListProps) => {\n const classes = useStyles();\n const initialValue = Array(polls.length).fill(false);\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n return (\n <Grid className={classes.root} container justifyContent='center' spacing={2}>\n {polls.map((poll, index) => (\n <Grid\n item\n container\n direction=\"column\"\n spacing={1}\n data-test-id=\"poll\"\n key={index}\n sx={{ mb: 3 }}\n id={`poll_${poll.id}`}\n >\n <Grid item className={classes.list} key={index}>\n <PollView\n displayCommentButton\n poll={poll}\n shouldRedirectTo='index'\n displayFormToggle={() => toggleCommentFormVisibility(index)}\n commentFormToggle={showCommentForm[index]}\n />\n </Grid>\n {(poll.mostRecentComment || showCommentForm) && (\n <Grid item>\n <MostRecentCommentBox\n comment={poll.mostRecentComment}\n commentFormPath={tripPollCommentsPath(poll.tripId, poll.id)}\n commentsPath={tripPollCommentsPath(poll.tripId, poll.id)}\n showCommentForm={showCommentForm[index]}\n showLoadMoreCommentsButton={poll.commentsCount > 1}\n tripId={poll.tripId}\n />\n </Grid>\n )}\n </Grid>\n ))}\n </Grid>\n );\n};\n\nexport default PollsList;\n","import React, { useState, useContext } from \"react\";\nimport { hocRailsAction, MaxPrice, TripSiteContext } from \"../../../Document\";\nimport {\n Grid,\n TextField,\n Typography,\n Select,\n MenuItem,\n useMediaQuery,\n} from \"@mui/material\";\nimport {\n DatePicker,\n LocalizationProvider,\n} from \"@mui/x-date-pickers-pro\";\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { Dayjs } from \"dayjs\";\nimport * as dayjs from \"dayjs\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport DateRangePicker from \"../../../shared/CustomDateRangePicker\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport Errors from \"../../../shared/Errors\";\nimport InputWithCharacterCounter from '../../../shared/InputWithCharacterCounter';\nimport {ItineraryEventType, RefundabilityType, StayBookingType} from '../../../shared/TripObjectTypes';\nimport useSegment from \"../../../../services/useSegment\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\nimport * as routes from '../../../../routes';\nimport { tripStayBookingPath } from \"../../../../routes\";\n\nconst {\n tripStayBookingsPath,\n tripStaysPath,\n tripItineraryDatesPath,\n tripItineraryDatePath\n} = routes;\n\ntype StayBookingsFormProps = {\n errors: string[],\n tripId: string,\n stayId: string,\n stayEvent?: ItineraryEventType,\n source?: string,\n itineraryDateId?: string,\n stayBooking?: StayBookingType,\n verticalPageMethod: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n datePicker: {\n \"& fieldset.MuiOutlinedInput-notchedOutline\": {\n borderColor: \"rgba(0, 0, 0, 0.23) !important\",\n },\n },\n}));\n\nconst refundabilityList: Array<RefundabilityType> = [\n 'refundable',\n 'non_refundable',\n];\n\nconst StayBookingsForm = ({\n errors,\n tripId,\n stayId,\n stayBooking,\n verticalPageMethod,\n stayEvent,\n source = \"\",\n itineraryDateId,\n}: StayBookingsFormProps) => {\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const refundabilityInitialValue = stayBooking?.refundability\n const { staysState } = useContext(TripSiteContext);\n const { trackSegment } = useSegment();\n const [confirmationText, setConfirmationText] = useStateWithPromise(stayBooking?.confirmationCode || '');\n const [checkInDate, setCheckInDate] = useStateWithPromise(stayBooking?.checkInDate || \"\");\n const [checkOutDate, setCheckOutDate] = useStateWithPromise(stayBooking?.checkOutDate || \"\");\n const [refundabilityValue, setRefundabilityValue] = useStateWithPromise(refundabilityInitialValue);\n const [refundDeadLineValue, setRefundDeadLineValue] = useState<Dayjs | null>(stayBooking?.refundableUntil ? dayjs(stayBooking.refundableUntil) : null);\n const isRefundabable = refundabilityValue === 'refundable';\n const closePath = itineraryDateId ? tripItineraryDatePath(tripId, itineraryDateId) : tripStaysPath(tripId);\n const disabledSubmit = !confirmationText || (isRefundabable && !refundDeadLineValue) || (checkInDate === null || checkOutDate === null);\n\n const actionRoute = !stayBooking?.uuid ? tripStayBookingsPath(tripId, stayId) : tripStayBookingPath(tripId, stayId, stayBooking.uuid)\n const formMethod = !stayBooking?.uuid ? \"post\" : \"patch\";\n\n const refundabilityText = {\n 'refundable': 'Yes',\n 'non_refundable': 'No',\n 'none': 'None',\n };\n\n const handleRefundDeadLine = (newValue: Dayjs | null) => {\n setRefundDeadLineValue(newValue);\n };\n\n const handleFormDismiss = () => {\n trackSegment('Booking form Dismissed', {\n verticalStatus: staysState,\n method: verticalPageMethod,\n isMobileApp: isMobile,\n });\n };\n\n const formatNumber = (value?: string): string => {\n if (!value) {\n return undefined\n }\n if (Number.parseFloat(value) - Number.parseInt(value) === 0) {\n return Number.parseInt(value).toString()\n } else {\n return Number.parseFloat(value).toFixed(2)\n }\n }\n\n return (\n <ModalForm\n closePath={closePath}\n formActionPath={actionRoute}\n formMethod={formMethod}\n saveButtonLabel={stayBooking ? \"Update booking\" : \"Save booking\"}\n title=\"Booking details\"\n withChangeDetection\n data-test-id='stay-booking-form'\n onModalClose={handleFormDismiss}\n disabledSubmit={disabledSubmit}\n >\n <FormContext.Consumer>\n {({ onFormChange }) => (\n <Grid container direction=\"column\" spacing={2}>\n <input name='isMobile' value={`${isMobile}`} type=\"hidden\" />\n { errors.length > 0 && (\n <Grid item><Errors errors={errors} /></Grid>\n )}\n <Grid item>\n <input\n type=\"hidden\"\n value={source}\n name={'source'}\n />\n <input\n type=\"hidden\"\n value={itineraryDateId}\n name={'itinerary_date_id'}\n />\n <Typography className={classes.label}>\n Confirmation code*\n </Typography>\n <TextField\n fullWidth\n id='confirmation_code'\n label='Enter confirmation code'\n name='stay_booking[confirmation_code]'\n variant='outlined'\n value={confirmationText}\n onChange={(e) => {\n setConfirmationText(e.target.value);\n onFormChange();\n }}\n />\n </Grid>\n <Grid item>\n <DateRangePicker\n autoComplete=\"off\"\n defaultStartValue={stayBooking?.checkInDate || stayEvent?.startDate}\n defaultEndValue={stayBooking?.checkOutDate || stayEvent?.endDate}\n startValue={checkInDate}\n endValue={checkOutDate}\n defaultStayBookingCheckInTimeValue={stayBooking?.checkInTime}\n defaultStayBookingCheckOutTimeValue={stayBooking?.checkOutTime}\n isStayBookingForm\n helperText={false}\n nameStart=\"stay_booking[check_in_date]\"\n nameEnd=\"stay_booking[check_out_date]\"\n onChange={(e) => {\n onFormChange();\n setCheckInDate(e[0]);\n setCheckOutDate(e[1]);\n }}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Total cost (USD)\n </Typography>\n <TextField\n fullWidth\n id='total_cost'\n placeholder='Enter an amount'\n name='stay_booking[total_cost]'\n type=\"number\"\n variant='outlined'\n defaultValue={formatNumber(stayBooking?.totalCost?.toString())}\n inputProps={{\n min: 0,\n step: 0.01,\n max: MaxPrice,\n inputMode: \"decimal\",\n }}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Is the payment refundable?\n </Typography>\n <Select\n displayEmpty\n fullWidth\n value={refundabilityValue}\n data-test-id=\"stay-booking-refundability\"\n name='stay_booking[refundability]'\n onChange={(e) => {\n setRefundabilityValue(e.target.value).then(() => onFormChange());\n }}\n renderValue={(selectedValue) => {\n if (!selectedValue || selectedValue === null) {\n return <span style={{color: '#b4b9bc'}}>Select answer</span>\n } else {\n return refundabilityText[selectedValue]\n }\n }}\n >\n <MenuItem value='none'>None</MenuItem>\n {refundabilityList.map((refundability) => {\n return (\n <MenuItem\n value={refundability}\n key={`${refundability}-option`}\n data-test-id={`${refundability}-option`}\n >\n {refundabilityText[refundability]}\n </MenuItem>\n )\n })}\n </Select>\n </Grid>\n { isRefundabable &&\n <Grid item data-test-id='refund-deadline'>\n <Typography className={classes.label}>\n When is the refund deadline?*\n </Typography>\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n className={classes.datePicker}\n data-test-id='start-date'\n inputFormat=\"MM/DD/YYYY\"\n value={refundDeadLineValue}\n showToolbar={false}\n onChange={(e) => {\n handleRefundDeadLine(e);\n onFormChange();\n }}\n renderInput={(params) =>\n <TextField\n name='stay_booking[refundable_until]'\n {...params}\n />\n }\n />\n </LocalizationProvider>\n </Grid>\n }\n <Grid item>\n <Typography className={classes.label}>Additional notes</Typography>\n <InputWithCharacterCounter\n name=\"stay_booking[notes]\"\n defaultValue={stayBooking?.notes}\n placeholder='Include other information about the booking you’d want travelers to know, like booking date, booking source, stay address, etc.'\n fullWidth\n withBorder\n noLabel\n hasExtraHeight\n characterLimit={5000}\n />\n </Grid>\n </Grid>\n )}\n </FormContext.Consumer>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(StayBookingsForm);\n","import React, { useState } from \"react\";\nimport withLayout from \"./withLayout\";\nimport { Counter } from \"./shared/ActivitiesSectionNavigation\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport MainContent from \"./SuggestedActivitiesPage/MainContent\";\nimport SideBarContent from \"./SuggestedActivitiesPage/SideBarContent\";\nimport FullscreenMapView from './shared/ActivitiesMap/FullscreenMapView';\nimport MobileMapButton from '../../../shared/MapView/MobileMapButton';\nimport { TripType } from \"../../../shared/TripTypes\";\nimport TravelersVotingBox, { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport {\n ActivityType,\n} from \"../../../shared/TripObjectTypes\";\nimport {\n ActivityFilterContext,\n ActivityFilterContextType,\n ActivitySortingContext,\n ActivitySortingContextType,\n} from \"../../../shared/ActivityFilterContext\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport { Box, Divider } from \"@mui/material\";\nimport { AdContent } from \"../../../shared/ActivityAd\";\n\ntype SuggestedActivitiesPageProps = {\n activityAd: AdContent,\n activities: ActivityType[],\n filterContextProps: ActivityFilterContextType,\n sortingContextProps: ActivitySortingContextType,\n tabsCounter: Counter,\n trip: TripType,\n travelersVoting?: Array<TravelerProps>,\n};\n\nconst SuggestedActivitiesPage = ({\n activityAd,\n activities,\n filterContextProps,\n sortingContextProps,\n tabsCounter,\n trip,\n travelersVoting,\n}: SuggestedActivitiesPageProps) => {\n const [fullscreenMap, setFullscreenMap] = useState(false);\n const activitiesWithCoords = activities.filter((activity) => activity.longitude && activity.latitude);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const showVotingBoxOnSidebar = !isMobile && activities.length > 0;\n const showVotingBoxOnMainContent = isMobile && activities.length > 0;\n const votingBox = (isSidebar) => {\n if (((isSidebar && showVotingBoxOnSidebar) || (!isSidebar && showVotingBoxOnMainContent))) {\n return <>\n {isSidebar && <Box mt={3}><Divider /></Box>}\n <Box mb={3} mt={isSidebar ? 3 : 0}>\n <TravelersVotingBox\n travelers={travelersVoting}\n tripId={trip.id}\n verticalType='activities'\n />\n </Box>\n <Box mb={3}><Divider /></Box>\n </>;\n }\n };\n\n return (\n <>\n <ActivityFilterContext.Provider value={filterContextProps}>\n <ActivitySortingContext.Provider value={sortingContextProps}>\n {fullscreenMap ? (\n <FullscreenMapView\n activities={activitiesWithCoords}\n onListButtonClick={() => setFullscreenMap(false)}\n />\n ) : (\n <>\n <SideBarPage\n mainContent={\n <>\n {votingBox(false)}\n <MainContent\n activityAd={activityAd}\n activities={activities}\n tabsCounter={tabsCounter}\n trip={trip}\n />\n </>\n }\n sideBarContent={\n <>\n <SideBarContent\n activityAd={activityAd}\n activities={activities}\n onExpandMap={() => setFullscreenMap(true)}\n />\n {votingBox(true)}\n </>\n }\n />\n {activitiesWithCoords.length > 0 && (\n <MobileMapButton onClick={() => setFullscreenMap(true)} source='activities' />\n )}\n </>\n )}\n </ActivitySortingContext.Provider>\n </ActivityFilterContext.Provider>\n </>\n );\n};\n\nexport default withLayout(SuggestedActivitiesPage, { fluid: true });\n","import React, { useContext, useState } from \"react\";\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n Grid,\n InputLabel,\n Link,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport FilteringAndSortingBar from \"../shared/FilteringAndSortingBar\";\nimport useStateWithPromise from \"../../../../../services/useStateWithPromise\";\nimport { FormContext } from \"../../../../shared/RailsForm\";\nimport {\n ActivityFilterContext,\n ActivitySortingContext,\n} from \"../../../../shared/ActivityFilterContext\";\n\ntype ActivitiesFilteringAndSortingBarProps = {\n disabled?: boolean,\n formPath: string,\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontSize: 16,\n fontWeight: 300,\n transform: 'scale(1)',\n },\n}));\n\nconst ActivitiesFilteringAndSortingBar = ({\n disabled,\n formPath,\n tripId,\n}: ActivitiesFilteringAndSortingBarProps) => {\n const classes = useStyles();\n\n const {\n allowedCategories,\n categories,\n currentFilters,\n currentFiltersCount,\n activitiesWithoutVotesCount,\n activitiesWithVotesCount,\n } = useContext(ActivityFilterContext);\n\n const {\n currentSorting,\n sortings,\n } = useContext(ActivitySortingContext);\n\n const [\n appliedFiltersCount,\n setAppliedFiltersCount,\n ] = useState(currentFiltersCount);\n\n const onDrawerClose: () => void = () => {\n setAppliedFiltersCount(currentFiltersCount);\n };\n\n const [selectedCategories, setSelectedCategories] = useStateWithPromise(currentFilters.categories);\n const [selectedWithVotes, setSelectedWithVotes] = useState(currentFilters.withVotes)\n const [selectedWithoutVotes, setSelectedWithoutVotes] = useState(currentFilters.withoutVotes)\n const allCategoriesSelected = selectedCategories.length == allowedCategories.length;\n const disableWithVotesCheckbox = activitiesWithVotesCount === 0 && !currentFilters.withVotes\n const disableWithoutVotesCheckbox = activitiesWithoutVotesCount === 0 && !currentFilters.withoutVotes\n const isInterestSort = (sort) => ['interest_descending', 'interest_ascending'].includes(sort)\n const [selectedInterestLevel, setSelectedInterestLevel] = useState(isInterestSort(currentSorting))\n const selectOrDeselectAll = (onFormChange) => {\n const newArray = allCategoriesSelected ? [] : allowedCategories;\n setSelectedCategories(newArray).then(() => onFormChange());\n };\n\n const disableWithoutVotes = (sort) => {\n if (isInterestSort(sort)){\n setSelectedInterestLevel(true)\n } else {\n setSelectedInterestLevel(false)\n }\n }\n\n const handleCategoryCheck = (category) => {\n const newArray = Array.from(selectedCategories);\n\n if (newArray.includes(category)) {\n newArray.splice(newArray.indexOf(category), 1);\n } else {\n newArray.push(category);\n }\n\n setSelectedCategories(newArray);\n setAppliedFiltersCount(newArray.length);\n };\n\n return (\n <FilteringAndSortingBar\n currentFiltersCount={appliedFiltersCount}\n currentSorting={currentSorting}\n disabled={disabled && !(selectedWithVotes || selectedWithoutVotes)}\n formPath={formPath}\n onClose={onDrawerClose}\n sortByRadioGroupName=\"activity_filter[sort_by]\"\n vertical=\"Activities\"\n sortings={sortings}\n selectedWithoutVotes={selectedWithoutVotes}\n selectedInterestLevel={disableWithoutVotes}\n isInterestSort={isInterestSort}\n filters={\n <>\n <Grid item>\n <Typography variant=\"h2\">\n Filters\n </Typography>\n </Grid>\n <Grid item container direction=\"column\" data-test-id=\"activityVotesFilter\">\n <Grid item container justifyContent=\"space-between\">\n <InputLabel className={classes.label}>\n Votes\n </InputLabel>\n </Grid>\n <Grid item>\n <Box pt={1}>\n <Box>\n <FormControlLabel\n control={\n <Checkbox\n disabled={disableWithVotesCheckbox}\n checked={selectedWithVotes}\n color=\"primary\"\n value={selectedWithVotes}\n name=\"activity_filter[with_votes]\"\n id=\"withVotesCheckbox\"\n data-test-id=\"withVotesCheckbox\"\n />\n }\n label={\"Activities with votes\"}\n onChange={() => setSelectedWithVotes(!selectedWithVotes)}\n />\n </Box>\n </Box>\n </Grid>\n <Grid item>\n <Box>\n <Box>\n <FormControlLabel\n control={\n <Checkbox\n disabled={disableWithoutVotesCheckbox || selectedInterestLevel}\n checked={selectedWithoutVotes}\n color=\"primary\"\n value={selectedWithoutVotes}\n name=\"activity_filter[without_votes]\"\n id=\"withoutVotesCheckbox\"\n data-test-id=\"withoutVotesCheckbox\"\n />\n }\n label={\"Activities without votes\"}\n onChange={() => setSelectedWithoutVotes(!selectedWithoutVotes)}\n />\n </Box>\n </Box>\n </Grid>\n </Grid>\n <Grid item container direction=\"column\" data-test-id=\"categoryFilter\">\n <Grid item container justifyContent=\"space-between\">\n <InputLabel className={classes.label}>\n Categories\n </InputLabel>\n <FormContext.Consumer>\n {({ onFormChange }) => (\n <Link\n component=\"button\"\n type=\"button\"\n onClick={() => selectOrDeselectAll(onFormChange)}\n underline=\"none\"\n variant=\"h3\"\n >\n {allCategoriesSelected ? \"DESELECT ALL\" : \"SELECT ALL\"}\n </Link>\n )}\n </FormContext.Consumer>\n </Grid>\n <Grid item>\n <Box pt={1}>\n {currentFilters && categories.map(category => (\n <Box key={category}>\n <FormControlLabel\n control={\n <Checkbox\n disabled={!allowedCategories.includes(category)}\n checked={selectedCategories.includes(category)}\n color=\"primary\"\n value={category}\n name=\"activity_filter[categories][]\"\n />\n }\n data-test-id=\"categoryCheckbox\"\n label={category}\n onChange={() => handleCategoryCheck(category)}\n />\n </Box>\n ))}\n </Box>\n </Grid>\n </Grid>\n </>\n }\n />\n );\n};\n\nexport default ActivitiesFilteringAndSortingBar;\n","import React, { useState } from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport {\n ActivityType,\n} from \"../../../../shared/TripObjectTypes\";\nimport { TripType } from \"../../../../shared/TripTypes\";\nimport Activity from \"../ActivitiesPage/Activity\";\nimport MostRecentCommentBox from \"../shared/MostRecentCommentBox\";\nimport { tripGetActivityPath } from '../../../../../routes';\nimport { EventTrackerType } from \"../../../../shared/TripObjectLink\";\n\ntype ActivitiesListProps = {\n activities: ActivityType[],\n trip?: TripType,\n groupPermapage?: boolean,\n activityGroupId?: string,\n};\n\nconst ActivitiesList = ({\n activities,\n trip,\n groupPermapage = false,\n activityGroupId,\n}: ActivitiesListProps) => {\n\n const initialValue = Array(activities.length).fill(false);\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n const activityTracker: EventTrackerType = {\n category: 'Activity',\n vertical: 'Activities',\n };\n\n const linkToComment = activity => groupPermapage ?\n tripGetActivityPath(activity.tripId, activity.id, { groupId: activityGroupId })\n :\n tripGetActivityPath(activity.tripId, activity.id);\n\n return <>\n {activities.map((activity, index) => (\n <Box mt={3} mb={4} key={index} id={`activity_${activity.id}`}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item container>\n <Activity\n activity={activity}\n activityGroupId={activityGroupId}\n activityTracker={activityTracker}\n displayCommentButton\n groupPermapage={groupPermapage}\n isPlanner={trip?.isPlanner}\n linkToComment={linkToComment(activity)}\n setActivityComment={() => toggleCommentFormVisibility(index)}\n showActions\n showGroupsTitles\n />\n </Grid>\n {(activity.mostRecentComment || showCommentForm[index]) && (\n <Grid item>\n <MostRecentCommentBox\n comment={activity.mostRecentComment}\n commentFormPath={activity.commentsPath}\n commentsPath={activity.tripObjectPath}\n page={groupPermapage ? 'ActivityGroupPermapage' : 'Vertical'}\n showCommentForm={showCommentForm[index]}\n showLoadMoreCommentsButton={activity.commentsCount > 1}\n tripId={activity.tripId}\n />\n </Grid>\n )}\n </Grid>\n </Box>\n ))}\n </>;\n};\n\nexport default ActivitiesList;\n","import React, { useContext } from \"react\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport ActivitiesSectionNavigation, { Counter } from \"../shared/ActivitiesSectionNavigation\";\nimport AddActivityButton from \"../TripActivitiesPage/ActivitiesSection/AddActivityButton\";\nimport { Box, Grid } from \"@mui/material\";\nimport { ActivityType } from \"../../../../shared/TripObjectTypes\";\nimport { TripType } from \"../../../../shared/TripTypes\";\nimport ActivitiesList from \"./ActivitiesList\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport ActivitiesFilteringAndSortingBar from \"./ActivitiesFilteringAndSortingBar\";\nimport CurrentSortingAndCount from \"../shared/CurrentSortingAndCount\";\nimport { ActivitySortingContext } from \"../../../../shared/ActivityFilterContext\";\nimport * as routes from '../../../../../routes';\nimport ActivityAd, { AdContent } from \"../../../../shared/ActivityAd\";\n\nconst { tripActivitiesPath } = routes;\n\ntype MainContentProps = {\n activityAd: AdContent,\n activities: ActivityType[],\n tabsCounter: Counter,\n trip: TripType,\n};\n\nconst MainContent = ({\n activityAd,\n activities,\n tabsCounter,\n trip,\n}: MainContentProps) => {\n const addActivityText = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ Add' : '+ Add activity'\n const noSuggestions = !activities.length;\n const { currentSortingLabel } = useContext(ActivitySortingContext);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n return <>\n <SectionHeader\n title='Activities'\n note={`Suggest new activities using the “${addActivityText}” button below.`}\n />\n {isMobile && activityAd && (\n <ActivityAd\n content={activityAd}\n small\n vertical=\"Activities\"\n />\n )}\n <Box mb={2}>\n <ActivitiesSectionNavigation\n active='All'\n counter={tabsCounter}\n tripId={trip.id}\n />\n </Box>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <Grid item data-test-id=\"activities-filter\">\n <ActivitiesFilteringAndSortingBar\n disabled={noSuggestions}\n tripId={trip.id}\n formPath={tripActivitiesPath(trip.id)}\n />\n </Grid>\n <Grid item>\n <AddActivityButton disabled={false} tripId={trip.id} />\n </Grid>\n </Grid>\n {!noSuggestions && (\n <Box pt={3}>\n <CurrentSortingAndCount\n count={activities.length}\n sorting={currentSortingLabel}\n type=\"activity\"\n />\n </Box>\n )}\n <ActivitiesList\n activities={activities}\n trip={trip}\n />\n {noSuggestions && (\n <Grid>\n <NoSuggestionsYet\n illustration='activity_fallback'\n heading=\"Next steps\"\n listItems={['Add activities', 'Get your group to comment and weigh in', 'Book the activities you like best']}\n />\n </Grid>\n )}\n </>;\n};\n\nexport default MainContent;\n","import React from \"react\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport ActivitiesMapSection from '../shared/ActivitiesMap/ActivitiesMapSection';\nimport { ActivityType } from \"../../../../shared/TripObjectTypes\";\nimport ActivityAd, { AdContent } from \"../../../../shared/ActivityAd\";\n\ntype SideBarContentProps = {\n activityAd: AdContent,\n activities: ActivityType[],\n onExpandMap?: () => void,\n};\n\nconst SideBarContent = ({\n activityAd,\n activities,\n onExpandMap,\n}: SideBarContentProps) => {\n const activitiesWithCoords = activities.filter((activity) => activity.longitude && activity.latitude);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n return <>\n {!isMobile && activityAd && (\n <ActivityAd\n content={activityAd}\n vertical=\"Activities\"\n />\n )}\n {activitiesWithCoords.length > 0 && (\n <ActivitiesMapSection\n activities={activitiesWithCoords}\n onExpandMap={onExpandMap}\n />\n )}\n </>;\n};\n\nexport default SideBarContent;\n","import React from \"react\";\nimport withLayout from \"./withLayout\";\nimport MainContent from \"./SuggestedActivityGroupsPage/MainContent\";\nimport { TripType } from \"../../../shared/TripTypes\";\nimport { Counter } from \"./shared/ActivitiesSectionNavigation\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport { ActivityGroupType } from \"../../../shared/TripObjectTypes\";\n\ntype SuggestedActivityGroupsPageProps = {\n activityGroupList: ActivityGroupType[],\n sortingContextProps: SortingContextType,\n tabsCounter: Counter,\n trip: TripType,\n};\n\ntype SortingType = {\n label: string,\n sortBy: string,\n};\n\ntype SortingContextType = {\n currentSorting: string,\n currentSortingLabel: string,\n sortings?: SortingType[],\n};\n\nexport const SortingContext = React.createContext<SortingContextType>({\n currentSorting: '',\n currentSortingLabel: '',\n sortings: null,\n});\n\nconst SuggestedActivityGroupsPage = ({\n activityGroupList,\n sortingContextProps,\n tabsCounter,\n trip,\n}: SuggestedActivityGroupsPageProps) => {\n return (\n <SortingContext.Provider value={sortingContextProps}>\n <SideBarPage\n mainContent={\n <MainContent\n tabsCounter={tabsCounter}\n tripId={trip.id}\n activityGroupList={activityGroupList}\n />\n }\n />\n </SortingContext.Provider>\n );\n};\n\nexport default withLayout(SuggestedActivityGroupsPage, { fluid: true });\n","import React, { useContext } from \"react\";\nimport { Box, Divider, Grid, Button } from \"@mui/material\";\nimport ActionsButtonGroup from \"../../../../shared/ActionsButtonGroup\";\nimport ActivityGroupCarousel from \"./ActivityGroupCarousel\";\nimport { ActivityGroupType } from \"../../../../shared/TripObjectTypes\";\nimport Linkify from \"../../../../shared/Linkify\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Link as TitleLink } from \"@mui/material\"\nimport { track as trackAnalyticsEvent } from '../../../../../services/analytics';\nimport { SegmentContext } from \"../../../../Document\";\nimport {\n tripActivityGroupPath,\n editTripActivityGroupPath,\n} from \"../../../../../routes\";\n\ntype ActivityGroupProps = {\n activityGroup: ActivityGroupType,\n hideActionButtons?: boolean,\n hideActivityCards?: boolean,\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n border: '1px solid #C1C1C1',\n boxSizing: 'border-box',\n borderRadius: '5px',\n padding: theme.spacing(2),\n width: '100%',\n },\n divider: {\n paddingTop: theme.spacing(1),\n },\n header: {\n position: 'relative',\n },\n actions: {\n position: 'relative',\n bottom: '41px',\n left: '17px',\n paddingBottom: theme.spacing(2),\n },\n groupTitle: {\n width: 'calc(100% - 80px)',\n fontWeight: 600,\n fontSize: '18px',\n lineHeight: theme.spacing(3),\n position: 'relative',\n left: '3px',\n top: theme.spacing(0.5),\n textAlign: 'left',\n color: 'black',\n zIndex: 2,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: [18, '!important'],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: \"calc(100% - 88px)\",\n marginRight: theme.spacing(5),\n },\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n '&:hover': {\n color: '#3B41B0',\n textDecoration: 'none',\n },\n },\n customLink: {\n color: '#555E64',\n display: 'inline-block',\n zIndex: 2,\n fontSize: 16,\n marginTop: theme.spacing(1),\n '&:hover': {\n textDecoration: [\"underline\",\"!important\"],\n },\n },\n note: {\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(0.25),\n marginBottom: theme.spacing(1),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n boxOrient: 'vertical',\n overflowWrap: \"anywhere\",\n lineClamp: 2,\n },\n}));\n\nconst ActivityGroup = ({\n activityGroup,\n hideActionButtons,\n hideActivityCards,\n}: ActivityGroupProps) => {\n const classes = useStyles();\n const { isPlanner, tripId } = useContext(SegmentContext);\n\n const trackClick = (eventName) => {\n trackAnalyticsEvent(\n eventName,\n {\n tripId,\n planner: isPlanner,\n objectId: activityGroup.id,\n },\n )\n }\n\n return (\n <Grid container ml={2} mt={3} mb={4} data-test-id={`activity_group_${activityGroup.id}`}>\n <Grid container direction=\"column\" spacing={2}>\n <Box className={classes.root}>\n <Box className={classes.header}>\n <TitleLink\n href={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n underline=\"none\"\n color=\"inherit\"\n className={classes.groupTitle}\n data-test-id=\"group-title\"\n onClick={()=>trackClick('Activity Group Title Clicked')}\n >\n <Linkify>{activityGroup.title}</Linkify>\n </TitleLink>\n <Box className={classes.actions}>\n {!hideActionButtons && <ActionsButtonGroup\n deletePath={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n editPath={editTripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n disableDeleteButton={false}\n resourceName=\"activity group\"\n />}\n </Box>\n <TitleLink\n href={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n underline=\"none\"\n color=\"inherit\"\n >\n { activityGroup.description && (\n <Grid item className={classes.note}>\n <Linkify>{activityGroup.description}</Linkify>\n </Grid>)\n }\n </TitleLink>\n {!hideActivityCards && (\n <>\n <Divider className={classes.divider}/>\n <ActivityGroupCarousel activityGroup={activityGroup}/>\n </>\n )}\n </Box>\n </Box>\n </Grid>\n </Grid>\n )\n}\n\nexport default ActivityGroup;\n","import React, { useState, useContext } from \"react\";\nimport { Box, Grid, Button } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Activity from \"../ActivitiesPage/Activity\";\nimport { ActivityGroupType } from \"../../../../shared/TripObjectTypes\";\nimport AddActivityButtonCard from \"./ActivityGroupCarousel/AddActivityButtonCard\";\nimport CardGroupCarousel, { Item } from \"../../../../shared/CardGroupCarousel\";\nimport CardGroupCarouselContext from \"../../../../shared/CardGroupCarousel/Context\";\nimport {\n PreviousStepButton,\n NextStepButton,\n} from '../../../../shared/CardGroupCarousel/CarouselStepButton';\nimport { Variation } from \"../../../../shared/TripObject\";\nimport Link from \"../../../../shared/Link\";\nimport textButtonColors from \"../../../../buttons/textButtonColors\";\nimport { track as trackAnalyticsEvent } from '../../../../../services/analytics';\nimport { SegmentContext } from \"../../../../Document\";\nimport pluralize from 'pluralize';\nimport * as routes from \"../../../../../routes\";\n\nconst {\n tripActivityGroupPath,\n} = routes;\n\ntype ActivityGroupCarouselProps = {\n activityGroup: ActivityGroupType,\n}\n\nconst useStyles = makeStyles((theme) => ({\n customLink: {\n color: textButtonColors.link.default.color,\n display: 'inline-block',\n zIndex: 2,\n fontSize: theme.spacing(2),\n fontWeight: textButtonColors.link.default.fontWeight,\n marginTop: theme.spacing(1),\n '&:hover': {\n color: textButtonColors.link.default.color,\n textDecoration: 'underline',\n },\n },\n stepButtonMargin: {\n marginLeft: theme.spacing(1),\n marginRigth: theme.spacing(1),\n },\n bottomCardRow: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(4),\n }\n}));\n\nconst ActivityGroupCarousel = ({\n activityGroup,\n}: ActivityGroupCarouselProps) => {\n const classes = useStyles();\n const { isPlanner, tripId } = useContext(SegmentContext);\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [maxStep, setMaxStep] = useState<number>(0);\n\n const activitiesSelectedCount = activityGroup.activitiesSelected.length;\n const activitiesSelectedText = `View ${activitiesSelectedCount} ${pluralize('activity', activitiesSelectedCount)}`;\n\n const renderCardFunc = (activity) => {\n return <Activity\n displayActivityLinks={false}\n isCarouselItem\n activity={activity}\n variation={Variation.Vertical}\n onActivityClick={() => window.location.href = tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n />\n };\n\n const renderButtonCardFunc = () => {\n const tooltipTitle = () => {\n const noActivitiesCreated = activityGroup.activitiesAvailable.length === 0 && activityGroup.activitiesSelected.length === 0\n if(noActivitiesCreated) {\n return \"Add activities to get this group rolling.\"\n }\n\n const allActivitiesAdded = activityGroup.activitiesAvailable.length === 0 && activityGroup.activitiesSelected.length !== 0\n if(allActivitiesAdded) {\n return \"All activities from the list have been added.\"\n }\n\n return \"\";\n }\n\n return <AddActivityButtonCard\n activityGroupId={activityGroup.id}\n tripId={activityGroup.tripId}\n noActivitiesAvailable={activityGroup.activitiesAvailable.length === 0}\n tooltipTitle={tooltipTitle()}\n />\n }\n\n let carouselItems: Item[] = [{\n card: {},\n renderCardFunc: renderButtonCardFunc,\n }];\n\n activityGroup.activitiesSelected.map((activity) => {\n carouselItems.push({\n card: activity,\n renderCardFunc: renderCardFunc,\n })\n });\n\n const trackClick = (eventName) => {\n trackAnalyticsEvent(\n eventName,\n {\n tripId: activityGroup.tripId,\n planner: isPlanner,\n objectId: activityGroup.id,\n },\n )\n }\n\n return <CardGroupCarouselContext.Provider value={{\n currentStep,\n maxStep,\n setCurrentStep,\n setMaxStep,\n }}>\n <Box data-test-id=\"carousel-box\">\n <CardGroupCarousel\n items={carouselItems}\n fullWidth={carouselItems.length === 1}\n />\n </Box>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n className={classes.bottomCardRow}\n mx={2}\n pr={4}\n >\n <Grid item>\n <Link\n className={classes.customLink}\n data-test-id={'activity-group-count-link'}\n text={activitiesSelectedText}\n href={tripActivityGroupPath(activityGroup.tripId, activityGroup.id)}\n onClick={() => trackClick('Activity Group Count Clicked')}\n />\n </Grid>\n <Grid item>\n <span className={classes.stepButtonMargin}>\n <PreviousStepButton />\n </span>\n <span className={classes.stepButtonMargin}>\n <NextStepButton />\n </span>\n </Grid>\n </Grid>\n </CardGroupCarouselContext.Provider>\n}\n\nexport default ActivityGroupCarousel;\n","import React, { useCallback, useContext } from \"react\";\nimport AddRoundedIcon from '@mui/icons-material/AddRounded';\nimport {\n Grid,\n Typography,\n Link,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport Tooltip from \"../../../../../shared/Tooltip\";\nimport Button from \"../../../../../buttons/Button\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { track } from \"../../../../../../services/analytics\";\nimport { SegmentContext } from \"../../../../../Document\";\nimport * as routes from \"../../../../../../routes\";\n\nconst {\n tripAddActivitiesPath,\n} = routes;\n\ntype AddActivityButtonCardProps = {\n activityGroupId: string,\n tooltipTitle: string,\n tripId: string,\n noActivitiesAvailable?: boolean,\n}\n\ntype StyleProps = {\n buttonEnabled: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n root: {\n minHeight: '100px',\n height: '368px',\n border: `1px dashed ${theme.palette.primary.main}`,\n borderRadius: theme.spacing(0.5),\n cursor: 'pointer',\n '&:hover': {\n background: ({buttonEnabled}) => buttonEnabled ? theme.palette.general.hover : theme.palette.background.default,\n },\n },\n addActivityText: {\n fontSize: theme.spacing(2),\n fontWeight: 600,\n lineHeight: theme.spacing(2),\n letterSppacing: '0px',\n textAlign: 'center',\n },\n addActivitybutton: {\n padding: theme.spacing(1),\n backgroundColor: ({buttonEnabled}) => buttonEnabled ? theme.palette.link.main : theme.palette.link.disabled,\n color: 'white',\n width: '52px !important',\n height: '52px !important',\n borderRadius: `${theme.spacing(9)} !important`,\n },\n}));\n\nconst AddActivityButtonCard = ({\n activityGroupId,\n tooltipTitle,\n tripId,\n noActivitiesAvailable = false,\n}: AddActivityButtonCardProps) => {\n const classes = useStyles({buttonEnabled: !noActivitiesAvailable});\n const { isPlanner } = useContext(SegmentContext);\n\n const handleSegmentEvent = () => {\n track(\n 'Add Group Activity Initiated',\n {\n tripId: tripId,\n isPlanner: isPlanner,\n page: 'groupsTab',\n },\n );\n }\n\n return (\n <Link\n href={noActivitiesAvailable ? null : tripAddActivitiesPath(tripId, activityGroupId)}\n underline=\"none\"\n onClick={handleSegmentEvent}\n >\n <Grid\n container\n spacing={0}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n className={classes.root}\n gap={2}\n >\n <Tooltip title={tooltipTitle}>\n <Grid item>\n <Button\n data-test-id='add-activity-button'\n href={tripAddActivitiesPath(tripId, activityGroupId)}\n className={classes.addActivitybutton}\n disabled={noActivitiesAvailable}\n >\n <AddRoundedIcon />\n </Button>\n </Grid>\n </Tooltip>\n <Grid item>\n <Typography className={classes.addActivityText}>Add activity</Typography>\n </Grid>\n </Grid>\n </Link>\n )\n}\n\nexport default AddActivityButtonCard;\n","import React from \"react\";\nimport ActivityGroup from \"./ActivityGroup\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Grid } from \"@mui/material\";\nimport { ActivityGroupType } from \"../../../../shared/TripObjectTypes\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n list: {\n width: '100%',\n },\n}));\n\ntype ActivityGroupListProps = {\n activityGroupList: ActivityGroupType[],\n};\n\nconst ActivityGroupList = ({\n activityGroupList,\n}: ActivityGroupListProps) => {\n const classes = useStyles();\n\n return <>\n <Grid className={classes.root}>\n {activityGroupList.map((activityGroup) => (\n <ActivityGroup\n key={activityGroup.id}\n activityGroup={activityGroup}\n />\n ))}\n </Grid>\n </>;\n};\n\nexport default ActivityGroupList;\n","import React, { useContext } from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport ActivitiesSectionNavigation, { Counter } from \"../shared/ActivitiesSectionNavigation\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport Button from \"../../../../buttons/Button\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport * as routes from '../../../../../routes';\nimport ActivityGroupList from \"./ActivityGroupList\";\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport {ActivityGroupType} from \"../../../../shared/TripObjectTypes\";\nimport CurrentSortingAndCount from \"../shared/CurrentSortingAndCount\";\nimport { SortingContext } from \"../SuggestedActivityGroupsPage\";\nimport FilteringAndSortingBar from \"../shared/FilteringAndSortingBar\";\n\nconst {\n tripActivityGroupsPath,\n} = routes;\n\ntype MainContentProps = {\n tabsCounter: Counter,\n tripId: string,\n activityGroupList: ActivityGroupType[],\n};\n\nconst MainContent = ({\n tabsCounter,\n tripId,\n activityGroupList,\n}: MainContentProps) => {\n const addGroupsText = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ Add' : '+ Add group'\n const noSuggestions = !activityGroupList.length;\n const {\n currentSorting,\n currentSortingLabel,\n sortings,\n } = useContext(SortingContext);\n\n return <>\n <SectionHeader\n title='Activities'\n note='Create a group to organize suggestions by day, theme, or activity type.'\n />\n <Box mb={2}>\n <ActivitiesSectionNavigation\n active='Activity groups'\n counter={tabsCounter}\n tripId={tripId}\n />\n </Box>\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <Grid item>\n <FilteringAndSortingBar\n currentSorting={currentSorting}\n disabled={noSuggestions}\n formPath={tripActivityGroupsPath(tripId)}\n sortByRadioGroupName=\"activity_group_filter[sort_by]\"\n vertical=\"Activity groups\"\n sortings={sortings}\n />\n </Grid>\n <Grid item>\n <RailsForm\n action={tripActivityGroupsPath(tripId)}\n method=\"POST\"\n withChangeDetection={false}\n >\n <Button\n data-test-id=\"add-button\"\n variant=\"primary\"\n disabled={false}\n type=\"submit\"\n >\n {addGroupsText}\n </Button>\n </RailsForm>\n </Grid>\n </Grid>\n {!noSuggestions && (\n <>\n <Box pt={3} pb={3}>\n <CurrentSortingAndCount\n count={activityGroupList.length}\n sorting={currentSortingLabel}\n type=\"group\"\n />\n </Box>\n <ActivityGroupList activityGroupList={activityGroupList}/>\n </>\n )}\n {noSuggestions && (\n <Grid>\n <NoSuggestionsYet\n illustration='activity_groups'\n subheading=\"Create a group to start organizing activities\"\n />\n </Grid>\n )}\n </>;\n};\n\nexport default MainContent;\n","import React, { useCallback } from \"react\";\nimport {\n Box,\n Grid,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport SectionHeader from \"./shared/SectionHeader\";\nimport CurrentSortingAndCount from \"./shared/CurrentSortingAndCount\";\nimport withMicrositeLayout from \"./withLayout\";\nimport ActionCallout from \"./SuggestedDatesPage/ActionCallout\";\nimport DatesList from \"./SuggestedDatesPage/DatesList\";\nimport SuggestingPhaseButtons from './shared/SuggestingPhaseButtons';\nimport PhasingStepper from \"./shared/PhasingStepper\";\nimport Button from \"../../../buttons/Button\";\nimport Tooltip from \"../../../shared/Tooltip\";\nimport Divider from \"../../../shared/Divider\";\nimport NoSuggestionsYet from \"../../../shared/NoSuggestionsYet\";\nimport FilteringAndSortingBar from \"./shared/FilteringAndSortingBar\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport * as routes from '../../../../routes';\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\nimport {\n trackLink as trackLinkAnalyticsEvent,\n track as trackAnalyticsEvent,\n} from '../../../../services/analytics';\nimport VotingTopSideBarContent from \"./shared/VotingTopSideBarContent\";\nimport TravelersVotingBox from \"../../../shared/TravelersVotingBox\";\nimport LastUpdateFilterLink from \"../../../shared/LastUpdateFilterLink\";\nimport { usePhasingContext } from '../../../../services/phasing';\nimport FixedSaveBar from \"../../../shared/FixedSaveBar\";\nimport titleize from \"titleize\";\n\nconst {\n newTripDateOptionPath,\n newTripChosenDateOptionPath,\n newTripVotingPath,\n setSuggestingPhaseTripDatesPath,\n setVotingPhaseTripDatesPath,\n tripDatesPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n datesCtaButton: {\n marginBottom: theme.spacing(3),\n },\n dateOptionsTitle: {\n fontSize: 20,\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n },\n filters: {\n marginBottom: theme.spacing(2),\n },\n header: {\n fontSize: theme.spacing(3),\n fontWeight: 600,\n lineHeight: '32px',\n marginBottom: theme.spacing(2),\n },\n subheader: {\n marginBottom: theme.spacing(3),\n },\n saveBar: {\n marginLeft: theme.spacing(-2),\n marginRight: theme.spacing(-2),\n },\n}));\n\nconst SuggestedDatesPage = ({\n trip: { dateOptions, ...trip },\n currentDateOptionSorting,\n currentUserAvatarUrl,\n currentUserFirstName,\n dateOptionsSortings,\n isUserLoggedIn,\n plannerCanSkipVotingEnabled,\n lastEventUpdatedAt,\n shouldDisplayTravelersList,\n travelersVoting,\n}) => {\n const classes = useStyles();\n const { areDatesInSuggestingPhase, areDatesInVotingPhase, datesState } = usePhasingContext();\n const sortingName = dateOptionsSortings.find((sorting) => sorting.sortBy === currentDateOptionSorting).label;\n const addDatesText = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ Add' : '+ Add dates'\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const validDateOptions = dateOptions.filter((dateOption) => !dateOption.isPast);\n const isCurrentUserVoteRequired = dateOptions.some((dateOption) => dateOption.isCurrentUserVoteRequired)\n const canUserStillVoteOnDates = validDateOptions.length > 0\n\n const currentDateOptions = dateOptions.filter(date => (!date.isPast))\n const currentUserMissingVotesCount = currentDateOptions.filter((dateOption) => {\n return dateOption.currentUserVote === 'missing';\n }).length;\n const hasUserStartedVoting = currentUserMissingVotesCount < validDateOptions.length;\n const focusedVotingText =\n isCurrentUserVoteRequired ?\n (hasUserStartedVoting ? 'Finish voting' : 'Start voting') :\n (currentUserFirstName ? 'Change votes' : 'Start voting')\n\n const buttonVariant = focusedVotingText === 'Change votes' ? 'secondary' : 'primary';\n const suggestDateRef = useCallback((element) => {\n if (element !== null) {\n trackLinkAnalyticsEvent(\n element,\n 'Add Dates Form Opened',\n {\n category: 'Dates',\n buttonClicked: '\"Add Dates\" in Dates',\n },\n );\n }\n }, []);\n\n const note = areDatesInVotingPhase() ? 'Vote for your favorite options from the list below.' : `Suggest new dates using the “${addDatesText}” button below.`;\n\n const showVotingBoxOnSidebar = shouldDisplayTravelersList && !isMobile && canUserStillVoteOnDates;\n const showVotingBoxOnMainContent = shouldDisplayTravelersList && isMobile && canUserStillVoteOnDates;\n const displayVotingBtn = areDatesInVotingPhase() && !isMobile;\n\n const votingBox = (isSidebar) => {\n if (areDatesInVotingPhase() && ((isSidebar && showVotingBoxOnSidebar) || (!isSidebar && showVotingBoxOnMainContent))) {\n return <>\n {isSidebar && <Box mt={3}><Divider /></Box>}\n <Box mb={3} mt={isSidebar ? 3 : 0}>\n <TravelersVotingBox\n travelers={travelersVoting}\n tripId={trip.id}\n verticalType='dates'\n />\n </Box>\n <Box mb={3}><Divider /></Box>\n </>;\n }\n };\n\n const toolTipText = (displayVotingBtn && !canUserStillVoteOnDates) ? 'Votes cannot be changed for past dates.' : '';\n const showActionCallout = isUserLoggedIn && areDatesInVotingPhase() && canUserStillVoteOnDates && currentUserMissingVotesCount > 0;\n\n const focusedVotingButtonClicked = () => {\n trackAnalyticsEvent(`Dates ${titleize(focusedVotingText)} Selected`, {\n tripId: trip.id,\n source: 'primary button',\n });\n };\n\n return (\n <>\n <SideBarPage\n mainContent={\n <>\n {votingBox(false)}\n <SectionHeader\n title=\"Dates\"\n note={note}\n rightElement={ lastEventUpdatedAt && (\n <LastUpdateFilterLink\n date={lastEventUpdatedAt}\n tripId={trip.id}\n tripObjectType=\"TripDateOption\"\n />\n )}\n />\n <PhasingStepper currentPhase={datesState} tripObjectType='dates' />\n {showActionCallout && (\n <>\n <Box my={2}><Divider /></Box>\n <ActionCallout\n currentUserAvatarUrl={currentUserAvatarUrl}\n missingVotesCount={currentUserMissingVotesCount}\n />\n </>\n )}\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n className={classes.filters}\n >\n <Grid item>\n <FilteringAndSortingBar\n vertical='Dates'\n currentSorting={currentDateOptionSorting}\n disabled={dateOptions.length === 0}\n formPath={tripDatesPath(trip.id)}\n sortByRadioGroupName=\"date_option_filter[sort_by]\"\n sortings={dateOptionsSortings}\n />\n </Grid>\n <Tooltip data-test-id='tool-tip' title={toolTipText}>\n <Grid item>\n {areDatesInSuggestingPhase() && (\n <Button\n data-test-id=\"add-button\"\n disabled={!areDatesInSuggestingPhase()}\n href={newTripDateOptionPath(trip.id)}\n ref={(el) => suggestDateRef(el)}\n variant=\"primary\"\n >\n {addDatesText}\n </Button>\n )}\n {displayVotingBtn && (\n <Button\n data-test-id=\"focused-voting-button\"\n href={newTripVotingPath(trip.id)}\n onClick={focusedVotingButtonClicked}\n ref={(el) => suggestDateRef(el)}\n variant={buttonVariant}\n disabled={!canUserStillVoteOnDates}\n >\n {focusedVotingText}\n </Button>\n )}\n </Grid>\n </Tooltip>\n </Grid>\n {dateOptions.length === 0 && (\n <NoSuggestionsYet\n heading=\"Next steps\"\n listItems={['Add dates', 'Get your group to vote', 'Finalize and move to destinations']}\n illustration='calendar'\n />\n )}\n {dateOptions.length > 0 && (\n <Box pt={1}>\n <CurrentSortingAndCount\n count={dateOptions.length}\n sorting={sortingName}\n type=\"date\"\n />\n </Box>\n )}\n <DatesList dateOptions={dateOptions} />\n </>\n }\n sideBarContent={\n <>\n {areDatesInVotingPhase() && (\n <VotingTopSideBarContent\n disabledActions={!canUserStillVoteOnDates}\n finalizePath={newTripChosenDateOptionPath(trip.id)}\n isCurrentUserPlanner={trip.isPlanner}\n transitionToSuggestingPath={setSuggestingPhaseTripDatesPath(trip.id)}\n type='dates'\n />\n )}\n {areDatesInSuggestingPhase() && (\n <SuggestingPhaseButtons\n hasSuggestions={canUserStillVoteOnDates}\n isPlanner={trip.isPlanner}\n transitionToVotingPath={setVotingPhaseTripDatesPath(trip.id)}\n tripId={trip.id}\n tripObjectType='dates'\n />\n )}\n {votingBox(true)}\n </>\n }\n />\n { isMobile && areDatesInVotingPhase() &&\n <FixedSaveBar\n buttonContent={focusedVotingText}\n className={classes.saveBar}\n data-test-id='fixed-save-bar-button'\n href={newTripVotingPath(trip.id)}\n onClick={focusedVotingButtonClicked}\n saveButtonVariant={buttonVariant}\n saveButtonType=\"button\"\n />\n }\n </>\n);\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default withMicrositeLayout(SuggestedDatesPage, { fluid: true });\n","import React from 'react';\nimport pluralize from \"pluralize\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar from '../../../../avatars/Avatar';\n\nexport type ActionCalloutProps = {\n currentUserAvatarUrl: string,\n missingVotesCount: number,\n};\nconst useStyles = makeStyles((theme) => ({\n actionCalloutTitle: {\n color: '#FB5D5D',\n paddingLeft: theme.spacing(1),\n },\n actionCalloutTitleWrapper: {\n alignItems: 'center',\n },\n actionCalloutWrapper: {\n padding: theme.spacing(2),\n borderRadius: theme.spacing(1),\n backgroundColor: '#FDF6EE',\n border: '1px solid #CBCBCB',\n },\n bold: {\n fontWeight: 600,\n },\n}));\n\nconst ActionCallout = ({\n currentUserAvatarUrl,\n missingVotesCount,\n}: ActionCalloutProps) => {\n const classes = useStyles();\n\n const missingMessage = () => (\n <Typography>\n <span className={classes.bold}>\n {missingVotesCount} {pluralize('vote', missingVotesCount)} remaining.\n </span> Cast your votes so your group can decide and book.\n </Typography>\n );\n\n return (\n <Box my={2} className={classes.actionCalloutWrapper}>\n <Grid item container spacing={1}>\n <Grid item container className={classes.actionCalloutTitleWrapper}>\n <Avatar src={currentUserAvatarUrl} size=\"xs\" />\n <Typography\n variant=\"h2\"\n className={classes.actionCalloutTitle}\n >\n Action needed\n </Typography>\n </Grid>\n <Grid item>\n {missingMessage()}\n </Grid>\n </Grid>\n </Box>\n );\n};\n\nexport default ActionCallout;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Box, Grid } from \"@mui/material\";\nimport MostRecentCommentBox from \"../shared/MostRecentCommentBox\";\nimport DateOption from \"../../../../shared/DateOption\";\nimport { DateOptionType } from \"../../../../shared/TripObjectTypes\";\nimport getMostPopularDateOptions from \"../../../../../services/getMostPopularDateOptions\";\n\ntype DatesListProps = {\n dateOptions: DateOptionType[],\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n dateOptionCard: {\n '&:last-child': {\n marginBottom: theme.spacing(2),\n },\n },\n}));\n\nconst DatesList = ({\n dateOptions,\n}: DatesListProps) => {\n const classes = useStyles();\n const mostPopularOptionsIds = getMostPopularDateOptions(dateOptions).map(option => option.id);\n\n const initialValue = Array(dateOptions.length).fill(false);\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n return <>\n {dateOptions.map((dateOption, index) => (\n <Box data-test-id=\"date-option-container\" className={clsx(\"anchor\", classes.dateOptionCard)} key={dateOption.id} mt={1} mb={3}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <a id={`date_option_${dateOption.id}`} />\n <DateOption\n commentsPath={dateOption.commentsPath}\n commentsCount={dateOption.commentsCount}\n className={classes.dateOption}\n currentUserVote={dateOption.currentUserVote}\n dateOptionPath={dateOption.dateOptionPath}\n endDate={dateOption.endDate}\n endDateWeekday={dateOption.endDateWeekday}\n endDateYear={dateOption.endDateYear}\n isMostPopular={mostPopularOptionsIds.includes(dateOption.id)}\n isPast={dateOption.isPast}\n key={dateOption.id}\n linkPath={dateOption.tripObjectPath}\n numNights={dateOption.numNights}\n showActions\n showLink\n showMissingVoteAlert={dateOption.isCurrentUserVoteRequired}\n startDate={dateOption.startDate}\n startDateWeekday={dateOption.startDateWeekday}\n startDateYear={dateOption.startDateYear}\n travelersVotes={dateOption.travelersVotes}\n setDateOptionComment={() => toggleCommentFormVisibility(index)}\n displayCommentButton={true}\n tripObjectId={dateOption.id}\n />\n </Grid>\n {(dateOption.mostRecentComment || showCommentForm[index]) && (\n <Grid item>\n <MostRecentCommentBox\n comment={dateOption.mostRecentComment}\n commentFormPath={dateOption.commentsPath}\n commentsPath={dateOption.tripObjectPath}\n showCommentForm={showCommentForm[index]}\n showLoadMoreCommentsButton={dateOption.commentsCount > 1}\n tripId={dateOption.tripId}\n />\n </Grid>\n )}\n </Grid>\n </Box>\n ))}\n </>;\n};\n\nexport default DatesList;\n","type LabelType = \"Yes\" | \"Maybe\" | \"No\" | \"Missing\";\ntype ValueType = \"yes\" | \"maybe\" | \"no\" | \"missing\";\n\ntype VoteSentiment = {\n icon: LabelType,\n label: LabelType,\n showIconWithoutLabel: boolean,\n value: ValueType,\n hideOnVoting?: boolean,\n}\n\nconst voteSentiments: VoteSentiment[] = [{\n icon: 'Yes',\n label: 'Yes',\n showIconWithoutLabel: true,\n value: 'yes',\n}, {\n icon: 'Maybe',\n label: 'Maybe',\n showIconWithoutLabel: true,\n value: 'maybe',\n}, {\n icon: 'No',\n label: 'No',\n showIconWithoutLabel: true,\n value: 'no',\n}, {\n icon: 'Missing',\n label: 'Missing',\n showIconWithoutLabel: true,\n value: 'missing',\n hideOnVoting: true,\n}];\n\nexport default voteSentiments;\n","import React, { useState } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from \"@mui/styles\";\nimport withLayout from \"./withLayout\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport MainContent from \"./SuggestedDestinationsPage/MainContent\";\nimport VotingTopSideBarContent from \"./shared/VotingTopSideBarContent\";\nimport * as routes from \"../../../../routes\";\nimport Divider from \"../../../shared/Divider\";\nimport TravelersVotingBox, { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport { Box } from \"@mui/material\";\nimport { usePhasingContext } from \"../../../../services/phasing\";\nimport SuggestingPhaseButtons from './shared/SuggestingPhaseButtons';\nimport { DESTINATIONS_LIST_QUERY } from \"../../../../graphql/queries/destinations\";\nimport SkeletonPage from \"../../../shared/SkeletonPage\";\nimport * as Sentry from \"@sentry/browser\";\nimport { DestinationType } from \"../../../shared/TripObjectTypes\";\nimport SnackbarNotification, { SnackbarNotificationProp } from \"../../../shared/SnackbarNotification\";\nimport ActivityAd from \"../../../shared/ActivityAd\";\n\nconst {\n newTripChosenDestinationPath,\n setSuggestingPhaseTripDestinationsPath,\n setVotingPhaseTripDestinationsPath,\n} = routes;\n\ntype DestinationSortAndFilter = {\n sortBy: 'recently_added',\n}\n\nconst Snackbar = (props: Partial<SnackbarNotificationProp>) => (\n <SnackbarNotification\n autoHideDuration={props.autoHideDuration ?? null}\n message={props.message}\n open={!!props.message}\n severity={props.severity}\n />\n)\n\nconst SuggestedDestinationsPage = ({\n activityAd,\n currentSorting,\n currentSortingLabel,\n lastEventUpdatedAt,\n shouldDisplayTravelersList,\n sortings,\n travelersVoting,\n trip,\n userHasCompletedVotingOnDestinations,\n}) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const { areDestinationsInSuggestingPhase, areDestinationsInVotingPhase } = usePhasingContext();\n\n const initialSortAndFilter = {\n sortBy: currentSorting,\n };\n\n const [activeSortAndFilter] = useState<DestinationSortAndFilter>(initialSortAndFilter);\n const { sortBy } = activeSortAndFilter;\n\n const { data, loading, error } = useQuery(\n DESTINATIONS_LIST_QUERY, {\n variables: {\n tripId: trip.gid,\n ...activeSortAndFilter,\n },\n },\n );\n\n if (loading) return <SkeletonPage />;\n\n if (error) {\n Sentry.captureException(error)\n return <>\n <Snackbar\n message='Sorry, something went wrong loading destinations. Please try again.'\n severity='error'\n />\n <SkeletonPage />\n </>\n }\n\n const destinations: DestinationType[] = data.destinations\n const travelers: TravelerProps[] = data.travelers.map(traveler => ({\n ...traveler,\n missingVotesCount: traveler.destinationMissingVotesCount,\n name: traveler.displayName,\n }));\n\n const showVotingBoxOnSidebar = shouldDisplayTravelersList && !isMobile && destinations.length > 0;\n const showVotingBoxOnMainContent = shouldDisplayTravelersList && isMobile && destinations.length > 0;\n const votingBox = (isSidebar) => {\n if (areDestinationsInVotingPhase() && ((isSidebar && showVotingBoxOnSidebar) || (!isSidebar && showVotingBoxOnMainContent))) {\n return <>\n {isSidebar && <Box mt={3}><Divider /></Box>}\n <Box mb={3} mt={isSidebar ? 3 : 0}>\n <TravelersVotingBox\n travelers={travelers}\n tripId={trip.gid}\n verticalType='destinations'\n />\n </Box>\n <Box mb={3}><Divider /></Box>\n </>;\n }\n };\n\n return (\n <SideBarPage\n mainContent={\n <>\n {votingBox(false)}\n <MainContent\n activityAd={activityAd}\n currentSorting={sortBy}\n currentSortingLabel={currentSortingLabel}\n destinations={destinations}\n isPlanner={trip.isPlanner}\n userHasCompletedVoting={userHasCompletedVotingOnDestinations}\n sortings={sortings}\n travelers={travelers}\n lastEventUpdatedAt={lastEventUpdatedAt}\n tripId={trip.id}\n />\n </>\n }\n sideBarContent={\n <>\n {!isMobile && activityAd && (\n <ActivityAd\n content={activityAd}\n vertical=\"Destinations\"\n />\n )}\n {areDestinationsInVotingPhase() && (\n <VotingTopSideBarContent\n disabledActions={destinations.length === 0}\n finalizePath={newTripChosenDestinationPath(trip.id)}\n isCurrentUserPlanner={trip.isPlanner}\n transitionToSuggestingPath={setSuggestingPhaseTripDestinationsPath(trip.id)}\n type='destination'\n />\n )}\n {areDestinationsInSuggestingPhase() && (\n <SuggestingPhaseButtons\n hasSuggestions={destinations.length > 0}\n isPlanner={trip.isPlanner}\n transitionToVotingPath={setVotingPhaseTripDestinationsPath(trip.id)}\n tripId={trip.id}\n tripObjectType='destinations'\n />\n )}\n {votingBox(true)}\n </>\n }\n />\n );\n};\n\nexport default withLayout(SuggestedDestinationsPage, { fluid: true });\n","import React, { useState, useEffect } from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport Destination from \"../DestinationPage/Destination\";\nimport { AsyncComment, DestinationType, SyncComment } from \"../../../../shared/TripObjectTypes\";\nimport {\n tripDestinationPath,\n tripDestinationCommentPath,\n tripDestinationCommentsPath,\n tripDestinationCommentsURL,\n} from \"../../../../../routes\";\nimport { TravelerProps } from \"../../../../shared/TravelersVotingBox\";\nimport MostRecentCommentBox from \"../shared/MostRecentCommentBox\";\nimport VotingProgressDialog from \"../../../../shared/VotingProgressDialog\";\nimport {\n useVotingProgressReducer,\n OPEN_PROGRESS_DIALOG,\n CLOSE_PROGRESS_DIALOG,\n} from \"../../../../../services/useVotingProgressReducer\";\n\ntype DestinationsListProps = {\n destinations: DestinationType[],\n isPlanner: boolean,\n travelers: TravelerProps[],\n tripId: string,\n};\n\ntype MostRecentCommentProps = {\n comment: AsyncComment | null,\n commentsCount: number,\n showForm: boolean,\n destinationId: string,\n tripId: string,\n};\n\ntype CommentPathProps = {} | {\n commentPath: string,\n commentsUrl: string,\n};\n\nconst MostRecentComment = ({\n comment,\n commentsCount,\n showForm,\n destinationId,\n tripId,\n}: MostRecentCommentProps) => {\n const pathProps: CommentPathProps = !comment ? {} : {\n commentPath: tripDestinationCommentPath(tripId, destinationId, comment.uuid),\n commentsUrl: tripDestinationCommentsURL(tripId, destinationId, { anchor: `comment_${comment.uuid}` }),\n }\n const { author, ...mostRecentComment } = comment ?? {}\n\n return (\n <Grid item>\n <MostRecentCommentBox\n comment={comment && {\n ...mostRecentComment,\n ...pathProps,\n id: comment.uuid,\n gid: comment.id,\n authorAvatarUrl: author.avatarUrl,\n authorName: author.displayName,\n timestamp: parseInt(comment.timestamp, 10),\n } as SyncComment}\n commentFormPath={tripDestinationCommentsPath(tripId, destinationId)}\n commentsPath={tripDestinationPath(tripId, destinationId)}\n showCommentForm={showForm}\n showLoadMoreCommentsButton={commentsCount > 1}\n tripId={tripId}\n />\n </Grid>\n )}\n\nconst DestinationsList = ({\n destinations,\n isPlanner,\n travelers,\n tripId,\n}: DestinationsListProps) => {\n const { displayDialog, voteCompleted, dispatch } = useVotingProgressReducer();\n\n const votedCount = destinations.reduce((count, destination) => (destination.currentUserRanking !== null ? count + 1 : count), 0);\n\n const sortedDestinationsByRanking = [...destinations].sort((a, b) => {\n if(a.ranking === null || b.ranking === null) return 1;\n return (a.ranking > b.ranking ? 1 : -1);\n });\n\n const initialValue = Array(sortedDestinationsByRanking.length).fill(false);\n const [\n showCommentForm,\n setShowCommentForm,\n ] = useState(initialValue);\n\n const toggleCommentFormVisibility = (index) => {\n const newArray = Array.from(showCommentForm);\n newArray[index] = !showCommentForm[index];\n setShowCommentForm(newArray);\n };\n\n useEffect(() => {\n const { hash } = window.location;\n const elementToScroll = document.getElementById(hash?.replace(\"#\", \"\"));\n\n if (!elementToScroll) return;\n\n window.scrollTo({\n top: elementToScroll.getBoundingClientRect().top,\n });\n }, []);\n\n const votingProgress = (voteCompleted: boolean) => {\n dispatch({ type: OPEN_PROGRESS_DIALOG, voteCompleted });\n };\n\n return <>\n {sortedDestinationsByRanking.map((destination, index) => (\n <Box mt={3} mb={4} key={destination.id}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Destination\n destination={destination}\n ranking={destination.ranking}\n isClickable\n isPlanner={isPlanner}\n hideVotes={false}\n linkToComment={tripDestinationPath(tripId, destination.id)}\n showActions\n suggestionsCount={sortedDestinationsByRanking.length}\n travelers={travelers}\n setDestinationComment={() => toggleCommentFormVisibility(index)}\n showCommentButton\n showVotingProgressBanner\n displayActions\n page={'index'}\n openVotingProgress={votingProgress}\n />\n </Grid>\n {(destination.mostRecentComment || showCommentForm[index]) && (\n <Grid item>\n <MostRecentComment\n comment={destination.mostRecentComment as AsyncComment}\n commentsCount={destination.commentsCount}\n showForm={showCommentForm[index]}\n destinationId={destination.uuid}\n tripId={tripId}\n />\n </Grid>\n )}\n </Grid>\n </Box>\n ))}\n <VotingProgressDialog\n isOpen={displayDialog}\n closeDialog={() => dispatch({ type: CLOSE_PROGRESS_DIALOG, displayDialog: false })}\n totalVotes={destinations.length}\n votedCount={votedCount}\n vertical=\"Destinations\"\n voteCompleted={voteCompleted}\n />\n </>;\n};\n\nexport default DestinationsList;\n","import React, { useCallback } from \"react\";\nimport { Grid, Box, Divider } from \"@mui/material\";\nimport FilteringAndSortingBar from \"../shared/FilteringAndSortingBar\";\nimport Button from \"../../../../buttons/Button\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport DestinationsList from \"./DestinationsList\"\nimport PhasingStepper from \"../shared/PhasingStepper\";\nimport SectionHeader from \"../shared/SectionHeader\";\nimport CurrentSortingAndCount from \"../shared/CurrentSortingAndCount\";\nimport NoSuggestionsYet from \"../../../../shared/NoSuggestionsYet\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport { DestinationType } from \"../../../../shared/TripObjectTypes\"\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport * as routes from '../../../../../routes';\nimport { useTheme } from \"@mui/styles\";\nimport { trackLink as trackAnalyticsEvent } from '../../../../../services/analytics';\nimport LastUpdateFilterLink from \"../../../../shared/LastUpdateFilterLink\";\nimport { usePhasingContext } from \"../../../../../services/phasing\";\nimport { TravelerProps } from '../../../../shared/TravelersVotingBox';\nimport ActionCallout from \"../SuggestedDatesPage/ActionCallout\";\nimport { TripSiteContext } from \"../../../../Document\";\nimport ActivityAd, { AdContent } from \"../../../../shared/ActivityAd\";\n\nexport type SortingType = {\n label: string,\n sortBy: string,\n};\n\ntype MainContentProps = {\n activityAd: AdContent,\n currentSorting: string,\n currentSortingLabel: string,\n destinations: DestinationType[],\n isPlanner: boolean,\n travelers: TravelerProps[],\n lastEventUpdatedAt: number,\n sortings: SortingType[],\n tripId: string,\n userHasCompletedVoting: boolean,\n};\n\nconst {\n newTripDestinationPath,\n tripDestinationsPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n filters: {\n marginBottom: theme.spacing(3),\n },\n}));\n\nconst MainContent = ({\n activityAd,\n currentSorting,\n currentSortingLabel,\n destinations,\n isPlanner,\n lastEventUpdatedAt,\n sortings,\n travelers,\n tripId,\n userHasCompletedVoting,\n}: MainContentProps) => {\n const { currentUserId } = React.useContext(TripSiteContext);\n const classes = useStyles();\n const { areDestinationsInSuggestingPhase, areDestinationsInVotingPhase, destinationsState } = usePhasingContext();\n const noSuggestions = destinations.length === 0\n const addDestinationText = useMediaQuery(useTheme().breakpoints.down(470)) ? '+ Add' : '+ Add destination'\n const note = areDestinationsInVotingPhase() ? 'Vote for your favorite options from the list below.' : `Suggest new destinations using the “${addDestinationText}” button below.`;\n const isSuggestingEnabled = areDestinationsInSuggestingPhase();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const renderActionCallout = () => {\n const thisTraveler = travelers.find((traveler) => traveler.userId === currentUserId);\n if (!thisTraveler) return null;\n const showActionCallout = areDestinationsInVotingPhase() && !userHasCompletedVoting && thisTraveler.destinationMissingVotesCount > 0;\n return showActionCallout && (\n <>\n <Box my={2}><Divider /></Box>\n <ActionCallout\n currentUserAvatarUrl={thisTraveler.avatarUrl}\n missingVotesCount={thisTraveler.destinationMissingVotesCount}\n />\n </>\n )};\n\n const addDestinationRef = useCallback((el) => {\n trackAnalyticsEvent(\n el,\n 'Add Destination Form Opened',\n {\n category: 'Destinations',\n buttonClicked: '\"Add destinations\" in Destinations',\n tripId: tripId,\n },\n );\n }, []);\n\n return <>\n <SectionHeader\n title=\"Destinations\"\n note={note}\n rightElement={ lastEventUpdatedAt && (\n <LastUpdateFilterLink\n date={lastEventUpdatedAt}\n tripId={tripId}\n tripObjectType=\"Destination\"\n />\n )}\n />\n {isMobile && activityAd && (\n <ActivityAd\n content={activityAd}\n small\n vertical=\"Destinations\"\n />\n )}\n <PhasingStepper currentPhase={destinationsState} tripObjectType='destinations' />\n {renderActionCallout()}\n <Grid\n container\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n className={classes.filters}\n >\n <Grid item>\n <FilteringAndSortingBar\n currentSorting={currentSorting}\n disabled={destinations.length === 0}\n formPath={tripDestinationsPath(tripId)}\n sortByRadioGroupName=\"destination_filter[sort_by]\"\n vertical=\"Destinations\"\n sortings={sortings}\n />\n </Grid>\n <Tooltip title={isSuggestingEnabled ? '' : 'Suggestions can’t be made once voting has begun'}>\n <Grid item>\n <Button\n data-test-id=\"add-button\"\n disabled={!isSuggestingEnabled}\n href={newTripDestinationPath(tripId)}\n variant=\"primary\"\n ref={(el) => addDestinationRef(el)}\n >\n {addDestinationText}\n </Button>\n </Grid>\n </Tooltip>\n </Grid>\n {!noSuggestions && (\n <CurrentSortingAndCount\n count={destinations.length}\n sorting={currentSortingLabel}\n type=\"destination\"\n />\n )}\n <DestinationsList\n destinations={destinations}\n isPlanner={isPlanner}\n travelers={travelers}\n tripId={tripId}\n />\n {noSuggestions && (\n <NoSuggestionsYet\n heading=\"Next steps\"\n listItems={['Add destinations', 'Get your group to vote', 'Finalize and move to stays']}\n illustration='globe'\n />\n )}\n </>;\n};\n\nexport default MainContent;\n","import React, { useState } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport {\n Box,\n Grid,\n Theme,\n} from \"@mui/material\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport withMicrositeLayout from \"./withLayout\";\nimport StaysSection from \"./HousingPage/StaysSection\";\nimport Divider from \"../../../shared/Divider\";\nimport TravelersVotingBox from \"../../../shared/TravelersVotingBox\";\nimport SideBarPage from \"../../../shared/SideBarPage\";\nimport * as routes from '../../../../routes';\nimport StaysMapView from './HousingPage/MapView/StaysMapView';\nimport VotingTopSideBarContent from './shared/VotingTopSideBarContent';\nimport { usePhasingContext } from \"../../../../services/phasing\";\nimport SuggestingPhaseButtons from './shared/SuggestingPhaseButtons';\nimport { HEADER_BAR_HEIGHT } from \"../../../shared/SiteHeader\";\nimport { NAV_BAR_HEIGHT } from \"../../../trip-page/NavigationBar\";\nimport MobileListButton from '../../../shared/MapView/MobileListButton';\nimport MobileMapButton from '../../../shared/MapView/MobileMapButton';\nimport { Sorting } from \"./shared/FilteringAndSortingBar\";\nimport { StaySorting } from \"../microsite/HousingPage/StaysSection/HousingFilteringAndSortingBar\";\nimport { TravelerProps } from \"../../../shared/TravelersVotingBox\";\nimport { TripType } from \"../../../shared/TripTypes\";\nimport { StayType } from \"../../../shared/TripObjectTypes\";\nimport SkeletonPage from '../../../shared/SkeletonPage';\nimport SnackbarNotification, { SnackbarNotificationProp } from '../../../shared/SnackbarNotification';\nimport { STAYS_LIST_QUERY } from \"../../../../graphql/queries/stays\";\nimport * as Sentry from \"@sentry/browser\";\nimport StaysMapSection from \"./HousingPage/StaysSection/StaysMapSection\";\n\nconst {\n newTripChosenStayPath,\n setSuggestingPhaseTripStaysPath,\n setVotingPhaseTripStaysPath,\n} = routes;\n\nconst useStyles = makeStyles<Theme, { fullScreenMapTop: number }>((theme) => ({\n header: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n },\n mapContainer: {\n marginBottom: theme.spacing(3),\n },\n mapWrapper: {\n width: '100%',\n height: `calc(80vh - ${theme.spacing(8)})`,\n left: 0,\n },\n fullscreenMap: {\n position: 'absolute',\n width: '100%',\n left: 0,\n height: ({ fullScreenMapTop }) => `calc(100% - ${fullScreenMapTop}px)`,\n '@supports (height: env(safe-area-inset-top))': {\n height: ({ fullScreenMapTop }) => `calc(100% - env(safe-area-inset-top) - ${fullScreenMapTop}px)`,\n },\n },\n}));\n\nconst Snackbar = (props: Partial<SnackbarNotificationProp>) => (\n <SnackbarNotification\n autoHideDuration={props.autoHideDuration ?? null}\n message={props.message}\n open={!!props.message}\n severity={props.severity}\n />\n);\n\ntype SuggestedHousingPageProps = {\n staySortings: Sorting<StaySorting>[],\n currentStayFilters?: {\n dateOptionIds: string[],\n },\n currentStaySorting?: StaySorting,\n shouldDisplayTravelersList: boolean,\n trip: TripType,\n lastEventUpdatedAt: number,\n}\n\ntype StaySortAndFilter = {\n sortBy: StaySorting,\n dateOptionIds: string[],\n}\n\nconst SuggestedHousingPage = ({\n staySortings,\n currentStayFilters,\n currentStaySorting,\n shouldDisplayTravelersList,\n trip,\n lastEventUpdatedAt,\n}: SuggestedHousingPageProps) => {\n const fullScreenMapTop = HEADER_BAR_HEIGHT + NAV_BAR_HEIGHT;\n const classes = useStyles({ fullScreenMapTop });\n\n const { areStaysInSuggestingPhase, areStaysInVotingPhase } = usePhasingContext();\n\n const [fullscreenMap, setFullscreenMap] = useState(false);\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const initialSortAndFilter = {\n sortBy: currentStaySorting,\n dateOptionIds: currentStayFilters?.dateOptionIds ?? [],\n };\n\n const [activeSortAndFilter, setSortAndFilter] = useState<StaySortAndFilter>(initialSortAndFilter);\n const { sortBy, dateOptionIds } = activeSortAndFilter;\n\n const { data, loading, error } = useQuery(\n STAYS_LIST_QUERY, {\n variables: {\n tripId: trip.gid,\n ...activeSortAndFilter,\n },\n },\n );\n\n if (loading) return <SkeletonPage />;\n\n if (error) {\n Sentry.captureException(error)\n return <>\n <Snackbar\n message='Sorry, something went wrong loading stays. Please try again.'\n severity='error'\n />\n <SkeletonPage />\n </>\n }\n\n const stays: StayType[] = data.stays\n const travelers: TravelerProps[] = data.travelers.map(traveler => ({\n ...traveler,\n missingVotesCount: traveler.stayMissingVotesCount,\n name: traveler.displayName,\n }));\n\n const shouldShowMapView = stays.some((stay) => stay.longitude && stay.latitude);\n const showVotingBoxOnSidebar = shouldDisplayTravelersList && !isMobile && stays.length > 0;\n const showVotingBoxOnMainContent = shouldDisplayTravelersList && isMobile && stays.length > 0;\n const votingBox = (isSidebar) => {\n if ((areStaysInVotingPhase()) && ((isSidebar && showVotingBoxOnSidebar) || (!isSidebar && showVotingBoxOnMainContent))) {\n return <>\n {isSidebar && <Box mt={3}><Divider /></Box>}\n <Box mb={3} mt={isSidebar ? 3 : 0}>\n <TravelersVotingBox\n travelers={travelers}\n tripId={trip.id}\n verticalType='stays'\n />\n </Box>\n <Box mb={3}><Divider /></Box>\n </>;\n }\n };\n\n const handleFilterAndSortChange = (newSortAndFilter: Partial<StaySortAndFilter>) => {\n const defaultSortAndFilter: StaySortAndFilter = { sortBy: 'recently_added', dateOptionIds: [] }\n\n setSortAndFilter({ ...defaultSortAndFilter, ...newSortAndFilter })\n };\n\n return <>\n {fullscreenMap ? (\n <Grid item className={classes.fullscreenMap} data-test-id=\"fullscreenMap\">\n <StaysMapView\n fullscreen={fullscreenMap}\n stays={stays}\n />\n <MobileListButton onClick={() => setFullscreenMap(false)} source='stays' />\n </Grid>\n ) : (\n <>\n <SideBarPage\n mainContent={\n <>\n {votingBox(false)}\n <StaysSection\n stays={stays}\n staySortings={staySortings}\n onSortAndFilterChange={handleFilterAndSortChange}\n currentStayFilters={{ dateOptionIds }}\n currentStaySorting={sortBy}\n dateOptions={trip.dateOptions}\n isPlanner={trip.isPlanner}\n lastEventUpdatedAt={lastEventUpdatedAt}\n travelers={travelers}\n tripGid={trip.gid}\n tripId={trip.uuid}\n />\n </>\n }\n sideBarContent={\n <>\n <div className={classes.mapContainer}>\n {areStaysInVotingPhase() && (\n <>\n <VotingTopSideBarContent\n disabledActions={stays.length === 0}\n finalizePath={newTripChosenStayPath(trip.uuid)}\n isCurrentUserPlanner={trip.isPlanner}\n transitionToSuggestingPath={setSuggestingPhaseTripStaysPath(trip.uuid)}\n type='stay'\n />\n </>\n )}\n {areStaysInSuggestingPhase() && (\n <SuggestingPhaseButtons\n hasSuggestions={stays.length > 0}\n isPlanner={trip.isPlanner}\n transitionToVotingPath={setVotingPhaseTripStaysPath(trip.uuid)}\n tripObjectType='stays'\n tripId={trip.uuid}\n />\n )}\n </div>\n {votingBox(true)}\n {shouldShowMapView &&\n <StaysMapSection\n stays={stays}\n onExpandMapClick={() => setFullscreenMap(true)}\n />\n }\n </>\n }\n />\n {shouldShowMapView && <MobileMapButton onClick={() => setFullscreenMap(true)} source='stays' />}\n </>\n )}\n </>;\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default withMicrositeLayout(SuggestedHousingPage, { fluid: true });\n","import React, { useCallback } from 'react';\nimport {\n Link,\n ListItemIcon,\n ListItemText,\n MenuItem,\n MenuList,\n} from '@mui/material';\nimport * as routes from \"../../../../../../routes\";\nimport DropdownButton from \"../../../../../shared/DropdownButton\";\nimport Button from \"../../../../../buttons/Button\";\nimport { trackLink as trackAnalyticsEvent } from '../../../../../../services/analytics';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport RoomOutlinedIcon from \"@mui/icons-material/RoomOutlined\";\nimport LinkIcon from \"@mui/icons-material/Link\";\n\ntype AddActivityButtonProps = {\n disabled: boolean,\n tripId: string,\n};\n\nconst {\n newTripActivityPath,\n} = routes;\n\nconst AddActivityButton = ({ tripId, disabled }: AddActivityButtonProps) => {\n const options = [\n {\n dataTestID: \"custom\",\n href:`${newTripActivityPath(tripId)}?add_by=custom`,\n icon: <CategoryIcon/>,\n label: \"Add custom\",\n method: \"Custom\",\n },\n {\n dataTestID: \"add-by-url\",\n href: `${newTripActivityPath(tripId)}?add_by=url`,\n icon: <LinkIcon/>,\n label: \"Add by URL\",\n method: \"URL\",\n },\n {\n dataTestID: \"add-by-address\",\n href: `${newTripActivityPath(tripId)}?add_by=address`,\n icon: <RoomOutlinedIcon/>,\n label: \"Add by Google Maps\",\n method: \"Google Places\",\n },\n ];\n\n const refs = useCallback((element, option) => {\n trackAnalyticsEvent(\n element,\n 'Add Activities Opened',\n {\n buttonClicked: '\"Add activity\" in Activities',\n category: 'Activities',\n method: option.method,\n tripId: tripId,\n },\n );\n }, []);\n\n if (disabled) return (<>\n <Button\n data-test-id=\"add-button\"\n disabled={true}\n variant=\"primary\"\n >\n {'+ Add Activity'}\n </Button>\n </>\n );\n\n return (\n <DropdownButton\n conciseLabel=\"+ Add\"\n label=\"+ Add activity\"\n testId=\"add-button\"\n menuList={\n <MenuList>\n {options.map((option, index) => (\n <Link\n key={index}\n color=\"inherit\"\n href={option.href}\n underline=\"none\"\n data-test-id={option.dataTestID}\n ref={(el) => refs(el, option)}\n >\n <MenuItem\n tabIndex={2}\n key={index}\n >\n <ListItemIcon key={index}>\n {option.icon}\n </ListItemIcon>\n <ListItemText primary={option.label}/>\n </MenuItem>\n </Link>\n ))}\n </MenuList>\n }\n />\n );\n};\n\nexport default AddActivityButton;\n","import React, { useContext, useEffect } from \"react\";\nimport axios from 'axios';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Divider,\n Grid,\n Skeleton,\n Typography,\n} from \"@mui/material\";\nimport {FormsContext, TripSiteContext} from \"../../../Document\";\nimport withLayout from \"./withLayout\";\nimport TripUpdateEntry from \"./TripUpdatesPage/TripUpdateEntry\";\nimport FilteringBar from \"./TripUpdatesPage/FilteringBar\";\nimport { TripEvent } from \"./TripUpdatesPage/TripUpdateEntry/TripUpdateEntryAction\";\nimport * as routes from '../../../../routes';\nimport * as Sentry from \"@sentry/browser\";\nimport { gql, useQuery } from \"@apollo/client\";\nimport { USER_QUERY } from \"../../../../graphql/queries/users\";\nimport ManageNotificationsCallout from \"./TripUpdatesPage/ManageNotificationsCallout\";\nimport { TripType } from \"../../../shared/TripTypes\";\n\nexport type TripUpdateEventType = TransitionEvent | PollEvent | FinalizedEvent | CommentEvent | VotedEvent | CreatedEvent;\n\nexport enum TransitionEvent {\n DatesSuggesting = 'dates_transitioned_to_suggesting',\n DatesVoting = 'dates_transitioned_to_voting',\n DestinationSuggesting = 'destination_transitioned_to_suggesting',\n DestinationVoting = 'destination_transitioned_to_voting',\n StaySuggesting = 'stay_transitioned_to_suggesting',\n StayVoting = 'stay_transitioned_to_voting',\n}\n\nexport enum PollEvent {\n PollClosed = 'poll_closed',\n PollCreated = 'poll_created',\n}\n\nexport enum FinalizedEvent {\n DatesFinalized = 'dates_transitioned_to_finalized',\n DestinationFinalized = 'destination_transitioned_to_finalized',\n StayFinalized = 'stay_transitioned_to_finalized',\n}\n\nexport enum CommentEvent {\n Commented = 'commented',\n}\n\nexport enum VotedEvent {\n DateOptionVoted = 'date_option_voted',\n DestinationVoted = 'destination_voted',\n FinalizedVotedDateOption = 'finished_voted_date_options',\n FinalizedVotedDestination = 'finished_voted_destination',\n FinishedVotedStay = 'finished_voted_stay',\n StayVoted = 'stay_voted',\n}\n\nexport enum CreatedEvent {\n ActivityCreated = 'activity_created',\n DateOptionCreated = 'date_option_created',\n DestinationCreated = 'destination_created',\n StayCreated = 'stay_created',\n ItineraryEventCreated = 'itinerary_event_created',\n}\n\ntype TripUpdatesPageProps = {\n currentUserId: string,\n currentFilter?: string,\n countByCategory: {[key: string]: number},\n isPlanner: boolean,\n isUserLoggedIn: boolean,\n tripEvents: TripEvent[],\n trip: TripType,\n showCallout: boolean,\n};\n\nconst {\n tripUpdatesViewLogsPath,\n} = routes;\n\nexport const DISMISS_CALLOUT = gql`\n mutation UserNotificationCalloutDismiss {\n userNotificationCalloutDismiss(input:{}) {\n errors\n }\n }\n`\n\nconst useStyles = makeStyles((theme) => ({\n headerTitle: {\n fontSize: 28,\n fontWeight: 600,\n color: \"#061722\",\n paddingBottom: theme.spacing(2),\n },\n headerSubtitle: {\n fontSize: 16,\n color: \"#272727\",\n paddingBottom: theme.spacing(2),\n },\n noDataText: {\n fontSize: 16,\n color: \"#272727\",\n fontWeight: 600,\n marginTop: 25,\n marginBottom: theme.spacing(2),\n },\n checkBackText: {\n fontSize: 16,\n color: \"#272727\",\n textAlign: \"center\",\n marginBottom: theme.spacing(2),\n },\n divider: {\n marginBottom: theme.spacing(3),\n },\n image: {\n width: '100%',\n maxWidth: '426px',\n },\n root: {\n paddingTop: theme.spacing(4),\n },\n}));\n\nconst TripUpdatesPage = ({\n currentFilter,\n currentUserId,\n countByCategory,\n isUserLoggedIn,\n isPlanner,\n trip,\n tripEvents,\n}: TripUpdatesPageProps) => {\n const classes = useStyles();\n const { csrfToken } = useContext(FormsContext);\n const { currentUserGid } = useContext(TripSiteContext);\n const { data, loading } = useQuery(\n USER_QUERY, {\n variables: {\n ID: currentUserGid,\n },\n },\n );\n\n useEffect(() => {\n let timer: any;\n\n if (isUserLoggedIn) {\n timer = setTimeout(() => {\n axios.post(\n tripUpdatesViewLogsPath(trip.id),\n { authenticity_token: csrfToken },\n ).catch((error) => {\n if(!error.response?.status) return;\n\n Sentry.captureException(error);\n })\n }, 3000);\n }\n\n return () => {\n clearTimeout(timer)\n };\n }, []);\n\n const renderManageNotificationsCallout = () => (\n loading ? <Skeleton variant=\"text\" height={40} data-test-id='skeleton'/> : <ManageNotificationsCallout />\n );\n\n return (\n <>\n <Grid container direction=\"column\" className={classes.root}>\n <Grid item>\n <Typography className={classes.headerTitle}>Trip Updates</Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.headerSubtitle}>\n Here’s what’s happening with your upcoming trip plans.\n </Typography>\n </Grid>\n {!data?.node.dateSawNotificationCallout && renderManageNotificationsCallout()}\n </Grid>\n <Divider className={classes.divider} />\n <Box mb={4}>\n <FilteringBar\n countByCategory={countByCategory}\n currentFilter={currentFilter}\n currentUserId={currentUserId}\n trip={trip}\n isPlanner={isPlanner}\n />\n </Box>\n {!tripEvents.length && (\n <Grid container direction=\"column\" alignItems=\"center\">\n <img\n className={classes.image}\n alt=\"No suggestions\"\n src={`/assets/illustrations/relaxation.svg`}\n />\n <Grid item>\n <Typography className={classes.noDataText}>\n Nothing to see here…yet\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.checkBackText}>\n Check back once your group has suggested some options for your upcoming trip.\n </Typography>\n </Grid>\n </Grid>\n )}\n <Grid container direction=\"column\" alignItems=\"center\">\n {tripEvents.map((tripEvent) => (\n <TripUpdateEntry\n key={tripEvent.id}\n tripEvent={tripEvent}\n />\n ))}\n </Grid>\n </>\n );\n};\n\nexport default withLayout(TripUpdatesPage);\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport TuneIcon from '@mui/icons-material/Tune';\nimport CustomChip from '../../../../buttons/CustomChip';\nimport { tripUpdatesPath } from '../../../../../routes';\nimport { TripType } from \"../../../../shared/TripTypes\";\n\ntype FilteringBarProps = {\n countByCategory: {[key: string]: number},\n currentFilter?: string,\n currentUserId: string,\n isPlanner: boolean,\n trip: TripType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n },\n title: {\n color: '#303232',\n fontSize: 18,\n lineHeight: '24px',\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst FilteringBar = ({\n countByCategory,\n currentFilter,\n currentUserId,\n isPlanner,\n trip,\n}: FilteringBarProps) => {\n const classes = useStyles();\n const filterPathFor = (category) => {\n return tripUpdatesPath(trip.id, { 'trip_event_filter': { 'category': category } })\n };\n\n const filteringOptions = [\n {\n active: !currentFilter,\n disabled: false,\n label: 'All',\n count: Object.values(countByCategory).reduce((sum, count) => sum + count),\n path: tripUpdatesPath(trip.id),\n },\n {\n active: currentFilter === 'reaction',\n disabled: false,\n label: 'Reactions',\n count: countByCategory['reaction'],\n path: filterPathFor('reaction'),\n },\n {\n active: currentFilter === 'broadcast',\n disabled: false,\n label: 'Broadcasts',\n count: countByCategory['broadcast'],\n path: filterPathFor('broadcast'),\n },\n {\n active: currentFilter === 'itinerary',\n disabled: false,\n label: 'Itinerary',\n count: countByCategory['itinerary'],\n path: filterPathFor('itinerary'),\n },\n {\n active: currentFilter === 'activity',\n disabled: false,\n label: 'Activities',\n count: countByCategory['activity'],\n path: filterPathFor('activity'),\n },\n {\n active: currentFilter === 'poll',\n disabled: false,\n label: 'Polls',\n count: countByCategory['poll'],\n path: filterPathFor('poll'),\n },\n {\n active: currentFilter === 'trip_date_option',\n disabled: false,\n label: 'Dates',\n count: countByCategory['trip_date_option'],\n path: filterPathFor('trip_date_option'),\n },\n {\n active: currentFilter === 'destination',\n disabled: false,\n label: 'Destinations',\n count: countByCategory['destination'],\n path: filterPathFor('destination'),\n },\n {\n active: currentFilter === 'stay',\n disabled: false,\n label: 'Stays',\n count: countByCategory['stay'],\n path: filterPathFor('stay'),\n },\n {\n active: currentFilter === 'note',\n disabled: false,\n label: 'Notes',\n count: countByCategory['note'],\n path: filterPathFor('note'),\n },\n ];\n\n const eventName = 'Trip Updates Filtered'\n const eventProperties = (label) => ({\n verticalFiltered: label,\n tripId: trip.id,\n userId: currentUserId,\n isPlanner: isPlanner,\n })\n\n return (\n <Grid container direction=\"column\" justifyContent=\"center\">\n <Grid item container spacing={1}>\n <Grid item>\n <TuneIcon />\n </Grid>\n <Grid item>\n <Typography className={classes.title}>\n Filter by\n </Typography>\n </Grid>\n </Grid>\n <Grid item container spacing={2} className={classes.container}>\n {filteringOptions.filter(option => !option.disabled).map((option, index) => (\n <Grid item key={index}>\n <CustomChip\n active={option.active}\n eventName={eventName}\n eventProperties={eventProperties(option.label)}\n href={option.path}\n >\n {option.label} ({option.count})\n </CustomChip>\n </Grid>\n ))}\n </Grid>\n </Grid>\n );\n};\n\nexport default FilteringBar;\n","import React, { useContext } from \"react\";\nimport {\n Grid,\n IconButton,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Button from \"../../../../buttons/Button\";\nimport { accountPath } from \"../../../../../routes\";\nimport { useMutation } from \"@apollo/client\";\nimport { USER_QUERY } from \"../../../../../graphql/queries/users\";\nimport { DISMISS_CALLOUT } from \"../TripUpdatesPage\";\nimport { GlobalContext } from \"../../../../Document\";\nimport {\n useCalloutDismissed,\n useNotificationCalloutClicked,\n} from \"../../../../../services/segmentEvents/useCalloutEvents\";\nimport { isMobile } from \"react-device-detect\";\nimport { getOperationName } from \"../../../../../graphql/utilities\";\n\ntype handleOnClickType = (path?: string | null) => void\n\nconst useStyles = makeStyles((theme) => ({\n manageNotificationsCallout: {\n padding: theme.spacing(2),\n border: '2px solid #D9D9D9',\n borderRadius: '8px',\n },\n}))\n\nconst ManageNotificationsCallout = () => {\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const useOnClickEvent = useNotificationCalloutClicked();\n const useDismissEvent = useCalloutDismissed();\n\n const [ dismissCalloutMutation ] = useMutation(DISMISS_CALLOUT,\n { refetchQueries: [getOperationName(USER_QUERY)] },\n );\n\n const handleOnClick: handleOnClickType = (path = null) => {\n dismissCalloutMutation({\n onCompleted: ({ userNotificationCalloutDismiss }) => {\n if (userNotificationCalloutDismiss?.errors.length === 0) {\n if (path) {\n window.location.href = path\n useOnClickEvent()\n } else {\n useDismissEvent()\n }\n } else {\n setSnackbar && setSnackbar('Sorry, something went wrong. Please try again.', 3000, 'error')\n }\n },\n })\n };\n\n return (\n <Grid item>\n <Stack className={classes.manageNotificationsCallout}>\n <Stack flexDirection='row' alignItems='center' justifyContent='space-between'>\n <Typography variant=\"h3\" pb={1}>\n Don’t miss an update!\n </Typography>\n <IconButton\n aria-label=\"close\"\n color=\"inherit\"\n size=\"small\"\n >\n <CloseIcon\n fontSize=\"inherit\"\n data-test-id=\"closeManageNotificationButton\"\n onClick={() => handleOnClick()}\n />\n </IconButton>\n </Stack>\n <Typography>\n Choose how you want to get notified by managing your notifications on the Account page. Select from email, SMS, or push (iOS app only).\n </Typography>\n <Grid pt={2} alignSelf=\"auto\">\n <Button\n fullWidth={isMobile}\n onClick={() => handleOnClick(accountPath())}\n data-test-id=\"manageNotificationButton\"\n >\n Manage Notifications\n </Button>\n </Grid>\n </Stack>\n </Grid>\n )\n};\n\nexport default ManageNotificationsCallout;\n","import useSegment from '../useSegment';\n\nexport const useCalloutDismissed = () => {\n const { trackSegment } = useSegment();\n return () => {\n trackSegment('Trip Updates Notification Callout Dismissed',\n {},\n )\n }\n};\n\nexport const useNotificationCalloutClicked = () => {\n const { trackSegment } = useSegment();\n return () => {\n trackSegment('Trip Updates Notification Callout Clicked',\n {},\n )\n }\n};\n","import React from \"react\";\nimport { Badge } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n outerDot: {\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n top: theme.spacing(3),\n },\n '& .MuiBadge-dot': {\n backgroundColor: 'rgba(84, 93, 252, 0.2)',\n width: theme.spacing(2),\n height: theme.spacing(2),\n borderRadius: theme.spacing(1),\n },\n },\n innerDot: {\n '& .MuiBadge-dot': {\n backgroundColor: theme.palette.primary.main,\n width: 10,\n height: 10,\n },\n },\n}));\n\nconst NewTripUpdatesDot = () => {\n const classes = useStyles();\n\n return (\n <Badge\n variant=\"dot\"\n className={classes.outerDot}\n data-test-id=\"unviewedEventDot\"\n >\n <Badge\n variant=\"dot\"\n className={classes.innerDot}\n />\n </Badge>\n )\n};\n\nexport default NewTripUpdatesDot;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Divider,\n Grid,\n} from \"@mui/material\";\nimport NewTripUpdatesDot from \"./NewTripUpdatesDot\";\nimport TripUpdateEntryAction, {\n TripEvent,\n} from \"./TripUpdateEntry/TripUpdateEntryAction\";\nimport Activity from \"../ActivitiesPage/Activity\";\nimport Destination from \"../DestinationPage/Destination\";\nimport FinishedVotedTripEventLink from './TripUpdateEntry/FinishedVotedTripEventLink'\nimport TransitionedTripEventLink from './TripUpdateEntry/TransitionedTripEventLink'\nimport PollView from \"../PollsPage/PollView\"\nimport BroadcastBody from \"../BroadcastsPage/BroadcastBody\";\nimport UserAvatar from \"../../../../shared/UserAvatar\";\nimport DateOption from \"../../../../shared/DateOption\";\nimport CommentBody from \"../../../../shared/Comments/CommentBody\";\nimport {\n tripDatePath,\n tripDestinationPath,\n tripGetActivityPath,\n tripStayPath,\n} from '../../../../../routes';\nimport Stay from \"../HousingPage/Stay\";\nimport TextButton from \"../../../../buttons/TextButton\";\nimport { tripNotePath } from \"../../../../../routes\";\nimport ActivityGroup from \"../SuggestedActivityGroupsPage/ActivityGroup\";\nimport ItineraryStayEvent from \"../ItineraryDatePermapage/ItineraryStayEvent\";\nimport ItineraryActivityEvent from \"../ItineraryDatePermapage/ItineraryActivityEvent\";\n\nexport type ActivityEntryProps = {\n tripEvent: TripEvent,\n};\n\nconst useStyles = makeStyles((theme) => ({\n eventAvatar: {\n width: theme.spacing(6),\n height: theme.spacing(6),\n },\n eventDescriptionContainer: {\n position: 'relative',\n },\n eventDescription: {\n paddingLeft: `${theme.spacing(1)} !important`,\n },\n eventDivider: {\n width: '100%',\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n eventTripObject: {\n marginTop: theme.spacing(1),\n },\n goToNotes: {\n textAlign: 'center',\n width: '100%',\n },\n}));\n\nconst avatarBadgeContent = (eventType) => {\n return isFinishedVotedEvent(eventType) ? <span>🎉</span> : null;\n};\n\nconst isFinishedVotedEvent = (eventType) => {\n return ['finished_voted_date_options',\n 'finished_voted_destination',\n 'finished_voted_stay',\n ].indexOf(eventType) > -1;\n};\n\nconst TripUpdateEntry = ({\n tripEvent,\n}: ActivityEntryProps) => {\n const classes = useStyles();\n const showTransitionLink = (eventType) => {\n return eventType.match(/transitioned_to_voting/) || eventType.match(/transitioned_to_suggesting/);\n }\n\n return (\n <>\n <Grid container spacing={1} className={classes.eventDescriptionContainer}>\n <Grid item>\n <UserAvatar\n avatarSrc={tripEvent.authorAvatarUrl}\n avatarClassName={classes.eventAvatar}\n badgeContent={avatarBadgeContent(tripEvent.eventType)}\n />\n </Grid>\n <Grid item xs={9} className={classes.eventDescription}>\n <TripUpdateEntryAction tripEvent={tripEvent} />\n </Grid>\n {tripEvent.isUnviewedEvent && <NewTripUpdatesDot />}\n </Grid>\n <Grid container className={classes.eventTripObject}>\n {tripEvent.eventObjectType === 'Activity' && tripEvent.eventObject && (\n <Activity\n activity={tripEvent.eventObject}\n linkToComment={tripGetActivityPath(tripEvent.tripId, tripEvent.eventObject.id)}\n showSentiments={false}\n />\n )}\n {tripEvent.eventObjectType === 'ActivityGroup' && tripEvent.eventObject && (\n <ActivityGroup\n activityGroup={tripEvent.eventObject}\n hideActionButtons={true}\n hideActivityCards={true}\n />\n )}\n {tripEvent.eventObjectType === 'Broadcast' && (\n <BroadcastBody broadcast={tripEvent.eventObject} tripId={tripEvent.tripId} showReactions={false}/>\n )}\n {tripEvent.eventObjectType === 'Destination' && tripEvent.eventType !== 'finished_voted_destination' && (\n <Destination\n hideVotes={true}\n destination={tripEvent.eventObject}\n isClickable\n linkToComment={tripDestinationPath(tripEvent.tripId, tripEvent.eventObject.id)}\n />\n )}\n {tripEvent.eventObjectType === 'Stay' && (\n <Stay\n stay={tripEvent.eventObject}\n hideDateOptionsAvailability\n hideDetails\n imgPath={tripStayPath(tripEvent.tripId, tripEvent.eventObject.id)}\n linkNameToProvider\n isClickable\n noCarousel={true}\n />\n )}\n {tripEvent.eventObjectType === 'Comment' && (\n <CommentBody comment={tripEvent.eventObject} />\n )}\n {tripEvent.eventObjectType === 'TripDateOption' && (\n <DateOption\n commentsPath={tripDatePath(tripEvent.tripId, tripEvent.eventObject.id)}\n endDate={tripEvent.eventObject.endDate}\n endDateWeekday={tripEvent.eventObject.endDateWeekday}\n endDateYear={tripEvent.eventObject.endDateYear}\n noVotesBreakdown\n numNights={tripEvent.eventObject.numNights}\n showLink\n showMissingVoteAlert={tripEvent.eventObject.isCurrentUserVoteRequired}\n startDate={tripEvent.eventObject.startDate}\n startDateWeekday={tripEvent.eventObject.startDateWeekday}\n startDateYear={tripEvent.eventObject.startDateYear}\n travelersVotes={tripEvent.eventObject.travelersVotes}\n />\n )}\n {tripEvent.eventObjectType === 'Poll' && (\n <PollView\n displayDeleteButton={false}\n poll={tripEvent.eventObject}\n shouldRedirectTo='index'\n hideAnswers={true}\n wrapWithLink={true}\n />\n )}\n {tripEvent.eventObjectType === 'TripNote' && (\n <TextButton\n className={classes.goToNotes}\n href={tripNotePath(tripEvent.tripId, tripEvent.eventObject.id)}\n >\n Go to Notes\n </TextButton>\n )}\n {tripEvent.eventObjectType === 'Reaction' && (\n tripEvent.eventObject.reactableType === 'comment' ? (\n <CommentBody comment={{\n ...tripEvent.eventObject.reactable,\n commentsUrl: tripEvent.eventObject.commentableUrl,\n }} />)\n :\n (<BroadcastBody broadcast={tripEvent.eventObject.reactable} tripId={tripEvent.tripId} showReactions={false}/>)\n )}\n {tripEvent.eventObjectType === \"ItineraryEvent\" && (\n tripEvent.eventObject.schedulableType === 'Stay' ? (\n <Grid sx={{width: '100%'}}>\n <ItineraryStayEvent stayEvent={tripEvent.eventObject} page={\"tripUpdates\"} itineraryDateId={tripEvent.eventObject.itineraryStartDate.id} isClickeable/>\n </Grid>\n ) : (\n <Grid sx={{width: '100%'}}>\n <ItineraryActivityEvent activityEvent={tripEvent.eventObject} page={\"tripUpdates\"} itineraryDateId={tripEvent.eventObject.itineraryStartDate.id} isClickeable/>\n </Grid>\n ))}\n {isFinishedVotedEvent(tripEvent.eventType) && (\n <FinishedVotedTripEventLink\n tripId={tripEvent.tripId}\n eventType={tripEvent.eventType}/>\n )}\n {showTransitionLink(tripEvent.eventType) && (\n <TransitionedTripEventLink\n eventType={tripEvent.eventType}\n tripId={tripEvent.tripId}/>\n )}\n </Grid>\n <Divider className={classes.eventDivider} />\n </>\n );\n};\n\nexport default TripUpdateEntry;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport TextButton from \"../../../../../buttons/TextButton\";\nimport * as routes from '../../../../../../routes';\n\nconst {\n tripDatesPath,\n tripDestinationsPath,\n tripStaysPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n goToButton: {\n textAlign: 'center',\n width: '100%',\n },\n}));\n\ntype FinishedVotedTripEventLinkProps = {\n eventType: string,\n tripId: string,\n};\n\nconst buttonAttrs = {\n finished_voted_date_options: {\n tripObjectListPath: (tripId) => {return tripDatesPath(tripId)},\n text: 'Go to Dates',\n },\n finished_voted_destination: {\n tripObjectListPath: (tripId) => {return tripDestinationsPath(tripId)},\n text: 'Go to Destinations',\n },\n finished_voted_stay: {\n tripObjectListPath: (tripId) => {return tripStaysPath(tripId)},\n text: 'Go to Stays',\n },\n};\n\nconst FinishedVotedTripEventLink = ({\n eventType,\n tripId,\n}: FinishedVotedTripEventLinkProps) => {\n const classes = useStyles();\n const tripObjectListPath = buttonAttrs[eventType]['tripObjectListPath'](tripId);\n const linkButtonText = buttonAttrs[eventType]['text'];\n\n return (<>\n <TextButton\n href={tripObjectListPath}\n className={classes.goToButton}\n >\n {linkButtonText}\n </TextButton>\n </>)\n};\n\nexport default FinishedVotedTripEventLink;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport TextButton from \"../../../../../buttons/TextButton\";\nimport * as routes from '../../../../../../routes';\nimport { TripUpdateEventType } from \"../../TripUpdatesPage\";\n\nconst {\n tripDatesPath,\n tripDestinationsPath,\n tripStaysPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n goToButton: {\n textAlign: 'center',\n width: '100%',\n },\n}));\n\ntype TransitionedTripEventLinkProps = {\n eventType: TripUpdateEventType,\n tripId: string,\n};\n\nconst buttonAttrs = {\n destination_transitioned_to_suggesting: {\n tripObjectListPath: (tripId) => {return tripDestinationsPath(tripId)},\n text: 'Go to Destinations',\n },\n destination_transitioned_to_voting: {\n tripObjectListPath: (tripId) => {return tripDestinationsPath(tripId)},\n text: 'Go to Destinations',\n },\n stay_transitioned_to_suggesting: {\n tripObjectListPath: (tripId) => {return tripStaysPath(tripId)},\n text: 'Go to Stays',\n },\n stay_transitioned_to_voting: {\n tripObjectListPath: (tripId) => {return tripStaysPath(tripId)},\n text: 'Go to Stays',\n },\n dates_transitioned_to_suggesting: {\n tripObjectListPath: (tripId) => {return tripDatesPath(tripId)},\n text: 'Go to Dates',\n },\n dates_transitioned_to_voting: {\n tripObjectListPath: (tripId) => {return tripDatesPath(tripId)},\n text: 'Go to Dates',\n },\n};\n\nconst TransitionedTripEventLink = ({\n eventType,\n tripId,\n}: TransitionedTripEventLinkProps ) => {\n const classes = useStyles();\n const tripObjectListPath = buttonAttrs[eventType]['tripObjectListPath'](tripId);\n const linkButtonText = buttonAttrs[eventType]['text'];\n\n return (<>\n <TextButton\n href={tripObjectListPath}\n className={classes.goToButton}\n >\n {linkButtonText}\n </TextButton>\n </>)\n};\n\nexport default TransitionedTripEventLink;\n","const ordinalize = (number) => {\n switch(number){\n case 1:\n return \"1st\";\n case 2:\n return \"2nd\";\n case 3:\n return \"3rd\";\n }\n};\n\nconst humanize = (commentableType) => {\n switch(commentableType){\n case 'Activity':\n return \"an activity\";\n case 'Destination':\n return \"a destination\";\n case 'Stay':\n return 'a stay';\n case 'TripDateOption':\n return \"a date\";\n case 'Poll':\n return \"a poll\";\n case 'Broadcast':\n return \"a broadcast\";\n }\n};\n\nconst getEditStatement = (edits) => {\n const categories = {\n start_time: 'time',\n end_time: 'time',\n start_date: 'date',\n end_date: 'date',\n notes: 'note',\n };\n\n const editedCategories = Array.from(new Set(Object.keys(edits).filter(key => categories[key]).map(key => categories[key])));\n\n const formattedCategories = (categoriesArray) => {\n return `${categoriesArray.slice(0, -1).join(', ')}${categoriesArray.length > 1 ? ' and' : ''} ${categoriesArray.slice(-1)}`;\n }\n\n return `edited the ${formattedCategories(editedCategories)} for an event`;\n}\n\nconst actionsMap = {\n \"activity_voted\": ({ metadata: { sentiment } }) => (\n `voted \"${sentiment}\" for activities`\n ),\n \"activity_created\": () => (\n `added a new activity`\n ),\n \"activity_group_created\": () => (\n `added a new group`\n ),\n \"broadcast_created\": () => (\n `sent a broadcast`\n ),\n \"date_option_created\": () => (\n `added new dates`\n ),\n \"destination_created\": () => (\n `added a new destination`\n ),\n \"destination_voted\": ({ metadata: { rank } }) => (\n `voted for their \"${ordinalize(rank)} choice\" destination`\n ),\n \"stay_created\": () => (\n `added a new stay`\n ),\n \"stay_voted\": ({ metadata: { rank } }) => (\n `voted for their \"${ordinalize(rank)} choice\" stays`\n ),\n \"date_option_voted\": ({ metadata: { sentiment } }) => (\n `voted \"${sentiment}\" for dates`\n ),\n \"commented\": ({ eventObject: { commentableType } }) => (\n `commented on ${humanize(commentableType)}`\n ),\n \"finished_voted_date_options\": () => (\n `finished voting for dates`\n ),\n \"finished_voted_destination\": () => (\n `finished voting for destination`\n ),\n \"finished_voted_stay\": () => (\n `finished voting for stays`\n ),\n \"poll_created\": () => (\n `added a new poll`\n ),\n \"poll_closed\": () => (\n `closed a poll`\n ),\n \"note_created\": () => (\n `created a new note`\n ),\n \"destination_transitioned_to_suggesting\": () => (\n `transitioned to suggesting for destination`\n ),\n \"destination_transitioned_to_voting\": () => (\n `transitioned destinations to voting`\n ),\n \"dates_transitioned_to_suggesting\": () => (\n `transitioned dates to suggesting`\n ),\n \"dates_transitioned_to_voting\": () => (\n `transitioned dates to voting`\n ),\n \"stay_transitioned_to_suggesting\": () => (\n `transitioned stays to suggesting`\n ),\n \"stay_transitioned_to_voting\": () => (\n `transitioned stays to voting`\n ),\n \"dates_transitioned_to_finalized\": () => (\n \"finalized the dates\"\n ),\n \"stay_transitioned_to_finalized\": () => (\n \"finalized the stay\"\n ),\n \"destination_transitioned_to_finalized\": () => (\n \"finalized the destination\"\n ),\n \"reaction_created\": ({ eventObject: { emoji, reactableType }}) => (\n `reacted “${emoji}“ to a ${reactableType}`\n ),\n \"itinerary_event_created\": () => (\n \"added an event to the itinerary\"\n ),\n \"itinerary_event_updated\": ({ metadata}) => (\n getEditStatement(metadata)\n ),\n};\n\nexport default actionsMap;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Typography,\n} from \"@mui/material\";\nimport actionsMap from \"../../../../../../services/tripUpdatePageActions\";\nimport TimeStamp from \"../../../../../shared/TimeStamp\";\nimport { TripUpdateEventType } from \"../../TripUpdatesPage\";\nimport {ItineraryDateType} from \"../../../../../shared/TripObjectTypes\";\n\nexport type TripEvent = {\n authorAvatarUrl: string,\n authorName: string,\n id: string,\n isUnviewedEvent: boolean,\n timestamp: number,\n tripId: string,\n eventObject: any,\n eventObjectType: string,\n eventType: TripUpdateEventType,\n metadata: { sentiment: string, rank: number },\n};\n\nexport type ActivityEntryActionProps = {\n tripEvent: TripEvent,\n};\n\nconst useStyles = makeStyles((theme) => ({\n eventTimestamp: {\n fontSize: 14,\n color: '#697379',\n fontWeight: 500,\n },\n eventTitle: {\n fontSize: 16,\n },\n username: {\n fontWeight: 600,\n },\n}));\n\nconst TripUpdateEntryAction = ({\n tripEvent,\n}: ActivityEntryActionProps) => {\n const classes = useStyles();\n\n return (\n <>\n <TimeStamp className={classes.eventTimestamp} date={tripEvent.timestamp}/>\n <Typography component=\"div\" className={classes.eventTitle}>\n <Box className={classes.username} display=\"inline\" data-test-id='authorName'>\n {tripEvent.authorName + \" \"}\n </Box>\n <Box display=\"inline\" data-test-id='tripEventAction'>\n {actionsMap[tripEvent.eventType](tripEvent)}\n </Box>\n </Typography>\n </>\n )\n};\n\nexport default TripUpdateEntryAction;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n useMediaQuery,\n useTheme,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../../../../buttons/Button\";\nimport { ActivityType } from \"../../../../../shared/TripObjectTypes\";\nimport ActivitiesMapView from './ActivitiesMapView';\nimport useExpandMapEventRef from \"../../../../../../services/segmentEvents/useExpandMapEventRef\";\n\ntype ActivitiesMapSectionProps = {\n activities: ActivityType[],\n onExpandMap?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n },\n mapContainer: {\n marginBottom: theme.spacing(3),\n },\n mapWrapper: {\n width: '100%',\n height: `calc(80vh - ${theme.spacing(8)})`,\n left: 0,\n },\n}));\n\nconst ActivitiesMapSection = ({\n activities,\n onExpandMap,\n}: ActivitiesMapSectionProps) => {\n const classes = useStyles();\n\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const expandMapButtonRef = useExpandMapEventRef('activities', 'expand map');\n\n return !isMobile && (\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.header}>\n Map view\n </Typography>\n </Grid>\n <Grid item className={classes.mapWrapper} data-test-id=\"side-bar-map\">\n <ActivitiesMapView\n activities={activities}\n />\n </Grid>\n <Grid item>\n <Button\n data-test-id='expand-map'\n fullWidth\n ref={expandMapButtonRef}\n onClick={onExpandMap}\n variant=\"secondary\"\n >\n Expand map\n </Button>\n </Grid>\n </Grid>\n );\n};\n\nexport default ActivitiesMapSection;\n","import React, { useState } from \"react\";\nimport ActivityMarker from \"./ActivityMarker\";\nimport MapView from \"../../../../../shared/MapView/MapView\";\nimport { updatePosition } from \"../../../../../../services/mapPosition\";\nimport { ActivityType } from \"../../../../../shared/TripObjectTypes\";\n\ntype ActivitiesMapViewProps = {\n activities: ActivityType[],\n};\n\nconst ActivitiesMapView = ({\n activities,\n}: ActivitiesMapViewProps) => {\n const markers = activities?.filter((activity) => activity.longitude && activity.latitude) || [];\n const [activeMarker, setActiveMarker] = useState(null);\n\n const handleMarkerClick = (index, lat, lng, map) => {\n setActiveMarker(index);\n updatePosition(lat, lng, map);\n map.setOptions({ disableDoubleClickZoom: true });\n };\n\n const handleClickOut = (map) => {\n setActiveMarker(null);\n map.setOptions({ disableDoubleClickZoom: false });\n };\n\n return <>\n {activities.length > 0 && (\n <MapView\n markers={markers}\n renderMarker={(map, activity) =>\n <ActivityMarker\n activity={activity}\n active={activeMarker === activity.id}\n lat={activity.latitude}\n lng={activity.longitude}\n key={activity.id}\n onMarkerClick={() => handleMarkerClick(activity.id, activity.latitude, activity.longitude, map)}\n onMarkerClickOut={() => handleClickOut(map)}\n />\n }\n />\n )}\n </>;\n};\n\nexport default ActivitiesMapView;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport ActivityNanoView from './ActivityNanoView';\nimport InfoWindow from \"../../../../../shared/MapView/InfoWindow\";\nimport { ActivityType } from \"../../../../../shared/TripObjectTypes\";\nimport useMapClickEventRef from \"../../../../../../services/segmentEvents/useMapClickEventRef\";\n\ntype ActivityMarkerProps = {\n activity: ActivityType,\n active: boolean,\n lat: number,\n lng: number,\n onMarkerClick: () => void,\n onMarkerClickOut: () => void,\n};\n\nconst useStyles = makeStyles(({\n root: {\n '&:hover': {\n cursor: 'pointer',\n },\n },\n}));\n\nconst ActivityMarker = ({\n activity,\n active,\n // eslint-disable-next-line no-unused-vars\n lat,\n // eslint-disable-next-line no-unused-vars\n lng,\n onMarkerClickOut,\n onMarkerClick,\n}: ActivityMarkerProps) => {\n const classes = useStyles();\n const mapClickRef = useMapClickEventRef('activities', activity.id);\n\n return (\n <>\n {active &&\n <InfoWindow onClickOut={onMarkerClickOut} position='absolute'>\n <ActivityNanoView\n activityPath={activity.tripObjectPath}\n image={activity.image}\n name={activity.name}\n />\n </InfoWindow>\n }\n <img\n className={classes.root}\n alt='activity_marker'\n data-test-id=\"activity-marker\"\n height=\"30px\"\n onClick={onMarkerClick}\n src=\"/assets/location_marker.png\"\n width=\"22px\"\n ref={mapClickRef}\n />\n </>\n );\n};\n\nexport default ActivityMarker;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n Link,\n Typography,\n} from '@mui/material';\nimport ActivityImage from '../../ActivitiesPage/Activity/ActivityImage';\n\ntype ActivityNanoViewProps = {\n activityPath: string,\n name: string,\n image: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n activityName: {\n position: 'relative',\n left: '3px',\n textAlign: 'left',\n lineHeight: '24px',\n color: 'black',\n fontSize: 18,\n fontWeight: 600,\n zIndex: 2,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: [18, '!important'],\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: '100%',\n marginRight: theme.spacing(5),\n },\n maxWidth: '100%',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n overflow: 'hidden',\n wordBreak: 'break-word',\n },\n info: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst ActivityNanoView = ({\n image,\n name,\n activityPath,\n}: ActivityNanoViewProps) => {\n const classes = useStyles();\n\n return (\n <Link\n href={activityPath}\n underline=\"none\"\n data-test-id='activity-nano-view'\n >\n <Grid container>\n <ActivityImage\n imageUrl={image}\n />\n <Grid item className={classes.info}>\n <Grid item>\n <Typography\n className={classes.activityName}\n >\n {name}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n </Link>\n );\n};\n\nexport default ActivityNanoView;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from '@mui/material/styles';\nimport { makeStyles } from \"@mui/styles\";\nimport { HEADER_BAR_HEIGHT } from \"../../../../../shared/SiteHeader\";\nimport { NAV_BAR_HEIGHT } from \"../../../../../trip-page/NavigationBar\";\nimport ActivitiesMapView from '../../shared/ActivitiesMap/ActivitiesMapView';\nimport { ActivityType } from \"../../../../../shared/TripObjectTypes\";\nimport MobileListButton from \"../../../../../shared/MapView/MobileListButton\";\n\ntype FullscreenMapViewProps = {\n activities: ActivityType[],\n onListButtonClick: () => void,\n};\n\ntype fullScreenMapTopProps = {\n fullScreenMapTop: number,\n};\n\nconst useStyles = makeStyles<Theme, fullScreenMapTopProps>((theme) => ({\n fullscreenMap: {\n position: 'absolute',\n width: '100%',\n left: 0,\n height: ({ fullScreenMapTop }) => `calc(100% - ${fullScreenMapTop}px)`,\n '@supports (height: env(safe-area-inset-top))': {\n height: ({ fullScreenMapTop }) => `calc(100% - env(safe-area-inset-top) - ${fullScreenMapTop}px)`,\n },\n },\n}));\n\nconst FullscreenMapView = ({\n activities,\n onListButtonClick,\n}: FullscreenMapViewProps) => {\n const fullScreenMapTop = HEADER_BAR_HEIGHT + NAV_BAR_HEIGHT;\n const classes = useStyles({ fullScreenMapTop });\n\n return (\n <Grid item className={classes.fullscreenMap} data-test-id=\"fullscreenMap\">\n <ActivitiesMapView\n activities={activities}\n />\n <MobileListButton onClick={onListButtonClick} source='activities' />\n </Grid>\n );\n};\n\nexport default FullscreenMapView;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Tab, Tabs } from \"@mui/material\";\nimport * as routes from '../../../../../routes';\nimport clsx from \"clsx\";\n\nconst {\n tripActivitiesPath,\n tripActivityGroupsPath,\n} = routes;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderBottom: '1px solid #b2b2b2',\n },\n label: {\n fontSize: theme.spacing(2),\n color: \"#243060\",\n },\n nonSelectedHover: {\n color: theme.palette.text.secondary,\n opacity: 1.0,\n '&:hover': {\n color: '#7D94A9',\n },\n },\n selectedHover: {\n '&:hover': {\n color: theme.palette.link.hover,\n },\n },\n}));\n\nexport type Counter = {\n activities: number | '999+',\n groups: number | '999+',\n};\n\ntype ActivitiesSectionNavigationProps = {\n active: 'All' | 'Activity groups',\n counter: Counter,\n tripId: string,\n};\n\nconst ActivitiesSectionNavigation = ({\n active,\n counter,\n tripId,\n}: ActivitiesSectionNavigationProps) => {\n const classes = useStyles();\n\n const tabs = [\n {\n label: 'All',\n count: counter.activities,\n path: tripActivitiesPath(tripId),\n },\n {\n label: 'Activity groups',\n count: counter.groups,\n path: tripActivityGroupsPath(tripId),\n },\n ];\n\n const activeValue = tabs.findIndex((tab) => tab.label === active);\n\n return (\n <Tabs\n classes={{\n root: classes.root,\n }}\n data-test-id='activitiesSectionNavigation'\n value={activeValue}\n textColor=\"inherit\"\n >\n {tabs.map((tab, index) => (\n <Tab\n className={clsx(classes.label, {\n [classes.nonSelectedHover]: tab.label !== active,\n [classes.selectedHover]: tab.label === active,\n })}\n href={tab.path}\n key={`tab-${index}`}\n label={`${tab.label} (${tab.count})`}\n data-test-id={`${tab.label.replace(' ', '-')}-tab`}\n />\n ))}\n </Tabs>\n );\n};\n\nexport default ActivitiesSectionNavigation;\n","import React, { useCallback, useContext } from \"react\";\nimport { gql, useMutation, ApolloError } from \"@apollo/client\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport Button from \"../../../../buttons/Chip\";\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport { STAYS_LIST_QUERY } from '../../../../../graphql/queries/stays';\nimport { GlobalContext } from \"../../../../Document\"\nimport { useStyles, SentimentType } from './SentimentButtons'\nimport { getOperationName } from '../../../../../graphql/utilities'\nimport * as Sentry from \"@sentry/browser\";\nimport { DESTINATIONS_LIST_QUERY } from '../../../../../graphql/queries/destinations';\nimport { useRankingChangeEvent } from \"../../../../../services/segmentEvents/useRankingChangeEvents\";\n\ntype AsyncSentimentButtonsProps = {\n currentUserSentiment: number | string | null,\n disabled?: boolean,\n sentiments: SentimentType[],\n tripObjectGid: string,\n tripGid: string,\n testId?: string,\n tripObjectType: 'stay' | 'destination',\n page?: 'index' | 'permapage' | null,\n openVotingProgress?: (voteCompleted: boolean) => void,\n};\n\nconst capitalize = (word) => {\n return word.charAt(0).toUpperCase() + word.slice(1);\n};\n\nexport const tripObjectRank = (objectType: any) => {\n return(\n gql`\n mutation Rank${capitalize(objectType)}($position: Int!, $${objectType}Id: ID!, $tripId: ID!) {\n ${objectType}Rank(input: {\n position: $position,\n ${objectType}Id: $${objectType}Id,\n tripId: $tripId,\n }) {\n ${objectType} {\n id\n currentUserRanking\n }\n errors\n voteCompleted\n }\n }\n`);}\n\nexport const tripObjectUnrank = (objectType) => (\n gql`\n mutation Unrank${capitalize(objectType)}($${objectType}Id: ID!, $tripId: ID!) {\n ${objectType}Unrank(input: {\n ${objectType}Id: $${objectType}Id,\n tripId: $tripId,\n }) {\n ${objectType} {\n id\n currentUserRanking\n }\n errors\n voteCompleted\n }\n }\n`);\n\nconst AsyncSentimentButtons = ({\n currentUserSentiment,\n disabled,\n sentiments,\n tripObjectGid,\n tripGid,\n testId,\n tripObjectType,\n page,\n openVotingProgress,\n}: AsyncSentimentButtonsProps) => {\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const onIndexPage = page === 'index';\n const [prevCurrentUserSentiment, setPrevCurrentUserSentiment] = React.useState(currentUserSentiment);\n const trackRankingChangeEvent = useRankingChangeEvent();\n\n // NOTE: Only refetch queries that have been run so far; stays list on\n // the index page, and the individual node query for on permapage\n\n const tripObjectQuery = {\n stay: STAYS_LIST_QUERY,\n destination: DESTINATIONS_LIST_QUERY,\n };\n\n const query = tripObjectQuery[tripObjectType];\n\n const refetchQueries = [getOperationName(query)]\n\n const onError = (error: ApolloError) => {\n const { networkError, graphQLErrors } = error\n if (networkError) {\n Sentry.captureException(networkError)\n setSnackbar('Sorry, something went wrong. Please try again.', 5000, 'error')\n }\n if (graphQLErrors?.length > 0) {\n console.error('got graphqlerrors:', JSON.stringify(graphQLErrors, null, 2))\n }\n }\n const [rankMutationFn, { loading: rankLoading }] = useMutation(\n tripObjectRank(tripObjectType),\n {\n onCompleted: ({ [`${tripObjectType}Rank`]: { errors, voteCompleted }}) => {\n if(errors.length > 0){\n setSnackbar('Sorry, something went wrong. Please try again.', 3000, 'error');\n } else {\n if(prevCurrentUserSentiment === null) {\n openVotingProgress(voteCompleted);\n } else {\n setSnackbar('Success! Your vote was recorded.', 2000);\n trackRankingChangeEvent(capitalize(tripObjectType));\n }\n setPrevCurrentUserSentiment(currentUserSentiment);\n }\n },\n onError,\n refetchQueries,\n },\n )\n const [unrankMutationFn, { loading: unrankLoading }] = useMutation(\n tripObjectUnrank(tripObjectType),\n {\n onCompleted: ({ [`${tripObjectType}Unrank`]: { _, errors }}) => {\n errors.length > 0 ?\n setSnackbar('Sorry, something went wrong. Please try again.', 3000, 'error') :\n setSnackbar('Success! Your vote was removed.', 2000);\n setPrevCurrentUserSentiment(currentUserSentiment);\n },\n onError,\n refetchQueries,\n },\n )\n\n const loading = rankLoading || unrankLoading\n\n const optimisticRankResponse = (value: number | null) => ({\n [tripObjectType]: {\n id: tripObjectGid,\n currentUserRanking: value,\n __typename: capitalize(tripObjectType),\n },\n errors: [],\n voteCompleted: false,\n })\n\n const rankTripObject = (position) => rankMutationFn({\n variables: {\n position: position,\n [`${tripObjectType}Id`]: tripObjectGid,\n tripId: tripGid,\n },\n optimisticResponse: {\n [`${tripObjectType}Rank`]: optimisticRankResponse(position),\n },\n })\n\n const unrankTripObject = () => unrankMutationFn({\n variables: {\n [`${tripObjectType}Id`]: tripObjectGid,\n tripId: tripGid,\n },\n optimisticResponse: {\n [`${tripObjectType}Unrank`]: optimisticRankResponse(null),\n },\n })\n\n const AsyncSentimentButton = ({\n hideOnVoting,\n icon,\n iconExt,\n value,\n }: SentimentType) => {\n if (hideOnVoting) return null\n\n const defaultIconExt = 'svg';\n const isActiveRank = currentUserSentiment === value\n\n const handleRankSubmit = useCallback((e) => {\n e.preventDefault();\n\n if (isActiveRank) {\n unrankTripObject()\n } else {\n rankTripObject(value)\n }\n\n return false\n }, [isActiveRank, value])\n\n return (\n <Grid item className={clsx(\n classes.gridItem,\n {[classes.indexGridItem]: onIndexPage},\n )}>\n <RailsForm\n action={\"\"}\n onSubmit={handleRankSubmit}\n withChangeDetection={false}\n >\n <Button\n active={isActiveRank}\n className={classes.button}\n data-test-id={`${value}-button`}\n disabled={disabled || loading}\n type=\"submit\"\n >\n <span className={clsx(\n classes.emoji,\n { [classes.disabledEmoji]: disabled || loading},\n )}>\n {<img\n className={classes.icon}\n data-test-id={icon}\n src={`/assets/illustrations/${icon}.${iconExt || defaultIconExt}`}\n />}\n </span>\n </Button>\n </RailsForm>\n </Grid>\n )\n };\n\n return (\n <Grid\n container\n justifyContent=\"center\"\n data-test-id={testId}\n className={classes.sentimentButtonsContainer}\n >\n {sentiments.map((sentimentProps: SentimentType) => (\n <AsyncSentimentButton {...sentimentProps} key={`${tripObjectGid}${sentimentProps.label}`}/>\n ))}\n </Grid>\n );\n}\n\nexport default AsyncSentimentButtons;\n","import useSegment from '../useSegment';\n\nexport const useRankingChangeEvent = () => {\n const { trackSegment } = useSegment();\n\n return( (vertical) =>\n trackSegment(\n 'Voting Updated',\n {\n vertical,\n },\n )\n )\n};\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\n\ntype BackToButtonProps = {\n path: string,\n text: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.link.default,\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n verticalAlign: \"middle\",\n },\n}));\n\nconst BackToButton = ({\n path,\n text,\n}: BackToButtonProps) => {\n const classes = useStyles();\n\n return (\n <ButtonBase href={path} className={classes.root}>\n <ArrowBackIosIcon fontSize=\"small\" /> {text}\n </ButtonBase>\n )\n};\n\nexport default BackToButton;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport Link from \"../../../../shared/Link\";\nimport ConfirmationDialog from \"../../../../shared/ConfirmationDialog\";\nimport { TypeTripObjectType } from '../../../../shared/TripObjectTypes';\n\ntype BackToSuggestingButtonProps = {\n transitionToSuggestingPath: string,\n tripObjectType: TypeTripObjectType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 0,\n },\n link: {\n color: theme.palette.primary.main,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n },\n}));\n\nconst BackToSuggestingButton = ({\n transitionToSuggestingPath,\n tripObjectType,\n}: BackToSuggestingButtonProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n\n return (\n <Grid className={classes.root} container spacing={2}>\n <ConfirmationDialog\n actionMethod=\"PATCH\"\n actionPath={transitionToSuggestingPath}\n actionText='Yes, go back'\n isOpen={dialogOpen}\n message={`Your group will be able to suggest and delete ${tripObjectType}.`}\n onClose={() => setDialogOpen(false)}\n title=\"Go back to suggesting?\"\n />\n <Link\n className={classes.link}\n data-test-id=\"transition-to-suggesting-link\"\n onClick={() => setDialogOpen(true)}\n text='Go back to suggesting'\n />\n </Grid>\n );\n};\n\nexport default BackToSuggestingButton;\n","import React from \"react\";\nimport { Chip } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport { ActivityCategoryType } from \"../../../../shared/TripObjectTypes\";\n\ntype CategoryLabelProps = {\n category: ActivityCategoryType,\n imageLabel?: boolean,\n selectBar?: boolean,\n dialog?: boolean,\n};\n\ntype HEX = `#${string}`;\n\nconst useStyles = makeStyles((theme) => ({\n choiceLabel: {\n color: '#fff',\n fontWeight: 600,\n },\n imageLabel: {\n position: 'absolute',\n bottom: theme.spacing(-2),\n left: theme.spacing(2),\n },\n nonImageLabel: {\n bottom: theme.spacing(1),\n position: 'relative',\n },\n selectBar: {\n position: 'relative',\n },\n}))\n\nexport const CategoryLabel = ({\n category,\n imageLabel,\n selectBar,\n dialog,\n}: CategoryLabelProps ) => {\n const classes = useStyles();\n\n const categoryColors: Record<ActivityCategoryType, HEX> = {\n Arts: '#007C8D',\n Classes: '#1B896C',\n Cruises: '#235850',\n Entertainment: '#B15C69',\n Food: '#EC5E5E',\n Landmarks: '#F16719',\n Nightlife: '#272727',\n Outdoors: '#5C9914',\n Recreation: '#0595D2',\n Shopping: '#2264DF',\n Tours: '#A05AE5',\n Wellness: '#4C5BE9',\n }\n\n return (\n <Chip\n data-test-id=\"category-label\"\n className={clsx(classes.choiceLabel,\n {\n [classes.imageLabel]: imageLabel,\n [classes.nonImageLabel]: !imageLabel && !selectBar && !dialog,\n [classes.selectBar]: selectBar,\n },\n )}\n label={category} style={ {background: categoryColors[category]}}\n />\n );\n};\n\nexport default CategoryLabel;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Grid,\n IconButton,\n Menu,\n MenuItem,\n Typography,\n} from \"@mui/material\"\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport DeleteResourceConfirmationDialog from \"../../../../shared/DeleteResourceConfirmationDialog\";\nimport Avatar from \"../../../../avatars/Avatar\";\nimport ReadMore from '../../../../shared/ReadMore';\nimport TimeStamp from '../../../../shared/TimeStamp';\nimport NoteForm from './ChosenTripObjectHeader/NoteForm';\n\ntype ChosenTripObjectNoteActionsProps = {\n objectPath: string,\n};\n\ntype ChosenTripObjectHeaderProps = {\n avatarUrl: string,\n objectPath: string,\n hasChosenTripObject: boolean,\n isPlanner: boolean,\n note: string,\n chosenAt: number,\n chosenByName: string,\n};\n\nconst useChosenTripObjectNoteActionsStyles = makeStyles((theme) => ({\n root: {\n position: 'absolute',\n top: 5,\n right: 5,\n },\n deleteIcon: {\n marginRight: theme.spacing(1),\n },\n}))\n\nconst ChosenTripObjectNoteActions = ({\n objectPath,\n}: ChosenTripObjectNoteActionsProps) => {\n const classes = useChosenTripObjectNoteActionsStyles();\n const [anchorEl, setAnchorEl] = useState<EventTarget | null>(null);\n const [dialogOpen, setDialogOpen] = useState(false);\n const handleCloseMenu = () => setAnchorEl(null);\n const handleDeleteClick = () => { setDialogOpen(true); handleCloseMenu() };\n return (\n <div data-test-id=\"chosen-trip-object-actions\">\n <Box className={classes.root}>\n <IconButton\n size=\"small\"\n onClick={(event) => setAnchorEl(event.target)}\n >\n <MoreHorizIcon />\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl as HTMLElement}\n onClose={handleCloseMenu}\n >\n <MenuItem onClick={handleDeleteClick}>\n <DeleteIcon className={classes.deleteIcon} />\n Delete note\n </MenuItem>\n </Menu>\n <DeleteResourceConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={objectPath}\n resourceName=\"note\"\n />\n </Box>\n </div>\n );\n}\n\nconst useChosenTripObjectHeaderStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n },\n chosenByName: {\n fontSize: 14,\n fontWeight: 600,\n },\n chosenByTitle: {\n fontSize: 14,\n marginLeft: theme.spacing(0.5),\n },\n chosenAt: {\n fontSize: 12,\n color: theme.palette.text.secondary,\n },\n note: {\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst ChosenTripObjectHeader = ({\n avatarUrl,\n objectPath,\n hasChosenTripObject,\n isPlanner,\n note,\n chosenAt,\n chosenByName,\n}: ChosenTripObjectHeaderProps) => {\n const classes = useChosenTripObjectHeaderStyles();\n return (\n <div data-test-id=\"chosen-trip-object-header\">\n <Grid container spacing={1} alignItems=\"center\" className={classes.root}>\n <Grid item>\n <Avatar src={avatarUrl} borderVariant=\"primary\" />\n </Grid>\n <Grid item>\n <Typography>\n <span className={classes.chosenByName}>\n {chosenByName}\n </span>\n <span className={classes.chosenByTitle}>\n {!note && \"chose the option\"}\n </span>\n </Typography>\n <TimeStamp className={classes.chosenAt} date={chosenAt}/>\n </Grid>\n {note && (\n <>\n {hasChosenTripObject && <ChosenTripObjectNoteActions objectPath={objectPath} /> }\n <Grid item xs={12} mt={1}>\n <Typography className={classes.note}>\n <ReadMore\n text={note}\n lineHeight={1.4}\n readMoreCharacterLimit={200}\n showLessButton={true}\n />\n </Typography>\n </Grid>\n </>\n )}\n {!note && isPlanner && (\n <Grid item xs={12} mt={1}>\n <NoteForm objectPath={objectPath} />\n </Grid>\n )}\n </Grid>\n </div>\n );\n};\n\nexport default ChosenTripObjectHeader;\n","import React from \"react\";\nimport {\n IconButton,\n InputAdornment,\n TextField,\n Typography,\n} from \"@mui/material\"\nimport SendIcon from \"@mui/icons-material/Send\";\nimport RailsForm from \"../../../../../shared/RailsForm\";\n\ntype NoteFormProps = {\n objectPath: string,\n};\n\nconst NoteForm = ({\n objectPath,\n}: NoteFormProps) => (\n <RailsForm action={objectPath} method=\"patch\">\n <Typography variant='h3' mb={2}>Add a note</Typography>\n <TextField\n label=\"Any additional info to share?\"\n variant=\"outlined\"\n name=\"note\"\n maxRows={10}\n fullWidth\n multiline\n data-test-id='note-field'\n InputProps={{\n endAdornment:\n <InputAdornment position=\"end\">\n <IconButton type=\"submit\">\n <SendIcon />\n </IconButton>\n </InputAdornment>,\n }}\n />\n </RailsForm>\n);\n\nexport default NoteForm;\n","import React from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype CommentFieldProps = {\n fieldId?: string,\n fieldName: string,\n subtitle?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst CommentField = ({\n fieldId,\n fieldName,\n subtitle,\n}: CommentFieldProps) => {\n const classes = useStyles();\n\n return (\n <Grid item data-test-id='add-comment'>\n <Grid item>\n <Typography className={classes.label}>\n Add a comment\n </Typography>\n </Grid>\n { subtitle &&\n <Grid item>\n <Typography>\n {subtitle}\n </Typography>\n </Grid>\n }\n <Grid item>\n <TextField\n data-test-id='comment-text-field'\n fullWidth\n id={fieldId}\n label=\"Comment\"\n name={fieldName}\n variant=\"outlined\"\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default CommentField;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { track as trackAnalyticsEvent } from \"../../../../../services/analytics\";\nimport pluralize from 'pluralize';\nimport CustomLink from '../../../../shared/Link';\nimport SegmentType from '../../../../shared/SegmentType';\nimport textButtonColors from \"../../../../buttons/textButtonColors\";\n\ntype CommentsLinkProps = {\n commentsCount: number,\n commentsLink: string,\n segment: SegmentType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: textButtonColors.link.default.color,\n zIndex: 2,\n fontSize: 16,\n fontWeight: textButtonColors.link.default.fontWeight,\n '&:hover': {\n color: textButtonColors.link.default.color,\n textDecoration: 'underline',\n },\n },\n}));\n\nconst CommentsLink = ({\n commentsCount,\n commentsLink,\n segment,\n}: CommentsLinkProps) => {\n const classes = useStyles();\n const commentsText = `See ${commentsCount} ${pluralize('comment', commentsCount)}`;\n\n const trackClickedComments = () => {\n trackAnalyticsEvent('Comment Count Clicked', {\n property: {\n tripId: segment.tripId,\n tripObjectId: segment.tripObjectId,\n tripObjectType: segment.tripObjectType\n },\n });\n };\n\n return (\n <CustomLink\n className={classes.root}\n href={commentsLink}\n text={commentsText}\n data-test-id='CommentsLink'\n onClick={() => trackClickedComments()}\n />\n );\n};\n\nexport default CommentsLink;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport pluralize from \"pluralize\";\n\ntype CurrentSortingAndCountProps = {\n count: number,\n sorting: string,\n type: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n sortText: {\n fontWeight: 'normal',\n },\n count: {\n paddingRight: theme.spacing(2),\n },\n}));\n\nconst CurrentSortingAndCount = ({\n count,\n sorting,\n type,\n}: CurrentSortingAndCountProps) => {\n const classes = useStyles();\n\n return (\n <Grid container justifyContent=\"space-between\" data-test-id=\"currentSortingAndCount\">\n <Grid item>\n <Typography variant=\"h3\">\n Sort: <span className={classes.sortText}>{sorting}</span>\n </Typography>\n </Grid>\n <Grid item>\n <Typography variant=\"h3\" className={classes.count}>\n {count} {pluralize(type, count)}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default CurrentSortingAndCount;\n","import React, { useContext, useReducer, FormEvent } from \"react\";\nimport {\n Box,\n Chip,\n Divider,\n FormControl,\n FormControlLabel,\n FormLabel,\n Grid,\n IconButton,\n Radio,\n RadioGroup,\n Typography,\n} from \"@mui/material\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport TuneIcon from '@mui/icons-material/Tune';\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../../../buttons/Button\";\nimport CollapsibleBox from \"../../../../shared/CollapsibleBox\";\nimport FixedSaveBar from \"../../../../shared/FixedSaveBar\";\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport Drawer from \"../../../../shared/Drawer\";\nimport {track as trackAnalyticsEvent} from \"../../../../../services/analytics\";\nimport { SegmentContext } from \"../../../../Document\";\n\n\nconst useStyles = makeStyles((theme) => ({\n buttonText: {\n marginLeft: theme.spacing(1),\n },\n currentFiltersCounter: {\n marginLeft: theme.spacing(1),\n backgroundColor: theme.palette.general.primary,\n color: 'white',\n minWidth: theme.spacing(4),\n height: theme.spacing(4),\n },\n form: {\n minHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n formContent: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(3),\n flex: 1,\n },\n label: {\n fontSize: 16,\n fontWeight: 300,\n transform: 'scale(1)',\n },\n sortBy: {\n paddingRight: theme.spacing(4/3),\n },\n sortByFormControl: {\n width: 200,\n },\n}));\n\nexport type Sorting<T> = {\n label: string,\n sortBy: T,\n}\n\ntype FilterVertical = 'Dates' | 'Stays' | 'Destinations' | 'Activities' | 'Activity groups' | 'Broadcasts' | 'Notes'\n\ntype FilterSubmitEvent = React.SyntheticEvent;\n\ninterface BaseFilterAndSortProps {\n sortByRadioGroupName: string,\n vertical: FilterVertical,\n currentFiltersCount?: number,\n currentSorting?: string,\n disabled?: boolean,\n filters?: React.ReactNode,\n onClose?: () => void,\n sortings?: Sorting<string>[],\n selectedWithoutVotes?: boolean,\n selectedInterestLevel?: (sort: string) => void,\n isInterestSort?: (sort: string) => boolean,\n}\n\ninterface AsyncFilterAndSortProps extends BaseFilterAndSortProps {\n onSubmit: (event: FilterSubmitEvent) => void,\n formPath?: string,\n}\n\ninterface SyncFilterAndSortProps extends BaseFilterAndSortProps {\n formPath: string,\n onSubmit?: (event: FilterSubmitEvent) => void,\n}\n\ntype FilteringAndSortingBarProps = AsyncFilterAndSortProps | SyncFilterAndSortProps;\n\nconst FilteringAndSortingBar = ({\n currentFiltersCount = 0,\n currentSorting,\n disabled,\n filters,\n formPath,\n onClose,\n onSubmit,\n sortByRadioGroupName,\n sortings,\n vertical,\n selectedWithoutVotes,\n selectedInterestLevel,\n isInterestSort,\n}: FilteringAndSortingBarProps) => {\n const classes = useStyles();\n const initialState = { sortBy: currentSorting, openDrawer: false };\n const { isPlanner, currentUserId, tripId } = useContext(SegmentContext);\n\n const reducer = (state: any, action: any) => {\n switch (action.type) {\n case 'openDrawer':\n return Object.assign({}, initialState, { openDrawer: true });\n case 'closeDrawerAndReset':\n onClose && onClose();\n return initialState;\n case 'closeDrawerWithoutReset':\n return { ...state, openDrawer: false };\n case 'changeSortBy':\n return Object.assign({}, state, { sortBy: action.sortBy });\n default:\n throw new Error();\n }\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const sortingName = () => sortings ? sortings.find((sorting) => sorting.sortBy === state.sortBy)?.label : null;\n\n const handleOpenDrawClick = (event: any) => {\n dispatch({ type: 'openDrawer' })\n\n trackAnalyticsEvent(\n 'Sort/Filter Initiated',\n {\n vertical: vertical,\n userId: currentUserId,\n tripId: tripId,\n planner: isPlanner,\n },\n );\n }\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n dispatch({ type: 'closeDrawerWithoutReset' })\n if (onSubmit) onSubmit(event)\n }\n\n return (\n <>\n <Button\n disabled={disabled}\n onClick={(el) => handleOpenDrawClick(el)}\n variant=\"tertiary\"\n >\n <TuneIcon />\n <span className={classes.buttonText}>Sort & Filter</span>\n {currentFiltersCount > 0 && <Chip label={currentFiltersCount} className={classes.currentFiltersCounter} />}\n </Button>\n <Drawer\n anchor=\"left\"\n onClose={() => dispatch({ type: 'closeDrawerAndReset' })}\n open={state.openDrawer}\n data-test-id=\"filtersDrawer\"\n >\n <RailsForm action={formPath as string} method=\"GET\" className={classes.form} onSubmit={handleSubmit}>\n <Box className={classes.formContent}>\n <Grid container direction=\"column\" spacing={2}>\n <Grid item container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography variant=\"h2\">\n Sort & filter\n </Typography>\n </Grid>\n <Grid item data-test-id=\"CloseIcon\">\n <IconButton onClick={() => dispatch({ type: 'closeDrawerAndReset' })}>\n <CloseIcon />\n </IconButton>\n </Grid>\n </Grid>\n <Divider />\n {sortings && (\n <Grid item data-test-id=\"sortingGrid\">\n <CollapsibleBox\n header={\n <Typography variant=\"h2\">Sort</Typography>\n }\n note={\n <FormLabel className={classes.label}>{sortingName()}</FormLabel>\n }\n className={classes.sortBy}\n >\n <FormControl component=\"fieldset\">\n <RadioGroup\n aria-label=\"sortBy\"\n defaultValue={currentSorting}\n name={sortByRadioGroupName}\n onChange={(event) => {\n if (selectedInterestLevel) { selectedInterestLevel(event.target.value) }\n dispatch({ type: 'changeSortBy', sortBy: event.target.value })\n }}\n >\n {sortings.map((sorting) => (\n <FormControlLabel\n key={`sorting-menu-item-${sorting.sortBy}`}\n value={sorting.sortBy}\n control={<Radio color=\"primary\"/>}\n label={sorting.label}\n data-test-id=\"sortingOptionRadio\"\n disabled={selectedWithoutVotes && isInterestSort && isInterestSort(sorting.sortBy)}\n />\n ))}\n </RadioGroup>\n </FormControl>\n </CollapsibleBox>\n </Grid>\n )}\n {filters}\n </Grid>\n </Box>\n <FixedSaveBar buttonContent=\"Apply\" saveButtonType=\"submit\" />\n </RailsForm>\n </Drawer>\n </>\n );\n};\n\nexport default FilteringAndSortingBar;\n","import React, { useCallback, useContext } from \"react\";\nimport {\n Typography,\n Stack,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Button from \"../../../../buttons/Button\";\nimport { SegmentContext } from \"../../../../Document\";\nimport useSegment from \"../../../../../services/useSegment\";\nimport { addBySmartSearchTripStaysPath } from \"../../../../../routes\";\n\ntype FinalizedPageContentHeaderProps = {\n heading: React.ReactNode,\n note: string,\n subheading: string,\n showButtons?: boolean,\n tripObjectType: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n sectionHeading: {\n color: \"#3953e2\",\n fontSize: 32,\n fontWeight: 700,\n marginBottom: theme.spacing(2),\n },\n subheading: {\n fontSize: 16,\n fontWeight: 600,\n },\n exploreStaysButton: {\n marginTop: `${theme.spacing(2)} !important`,\n maxWidth: '300px',\n alignSelf: \"center\",\n },\n}));\n\nconst FinalizedPageContentHeader = ({\n heading,\n note,\n subheading,\n showButtons = false,\n tripObjectType,\n}: FinalizedPageContentHeaderProps) => {\n const classes = useStyles();\n const { tripId, currentUserId } = useContext(SegmentContext)\n const { trackLinkSegment } = useSegment();\n\n const buttonRef = useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Search Stays Clicked',\n {\n travelerId: currentUserId,\n vertical: tripObjectType,\n },\n );\n }\n }, []);\n\n return (\n <Stack spacing={1} mt={2} mb={4}>\n <Typography className={classes.sectionHeading}>{heading}</Typography>\n <Typography className={classes.subheading}>{subheading}</Typography>\n <Typography>{note}</Typography>\n {showButtons && (\n <Button\n className={classes.exploreStaysButton}\n fullWidth\n href={addBySmartSearchTripStaysPath(tripId)}\n ref={buttonRef}\n >\n Explore stays\n </Button>\n )}\n </Stack>\n );\n};\n\nexport default FinalizedPageContentHeader;\n","import React from \"react\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport clsx from \"clsx\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n disabledButton: {\n backgroundColor: '#FFFFFF !important',\n },\n addIcon: {\n fontSize: theme.spacing(8),\n color: '#FFFFFF',\n },\n disabledAddIcon: {\n color: '#D6DEE4',\n },\n itineraryHeader: {\n maxWidth: '250px',\n },\n dayAndEditSection: {\n justifyContent: 'space-between',\n },\n addButtonContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n position: 'sticky',\n bottom: theme.spacing(2),\n paddingRight: theme.spacing(2),\n zIndex: 20,\n },\n addButton: {\n boxShadow: '0 8px 16px 0 rgb(60 64 67 / 30%)',\n backgroundColor: '#545DFC',\n height: theme.spacing(7),\n width: theme.spacing(7),\n fontSize: theme.spacing(7),\n '&:hover': {\n backgroundColor: '#3B41B0',\n },\n },\n}));\n\nexport type FloatingActionButtonProps = {\n testId: string,\n disabled?: boolean,\n onClick?: () => void,\n href?: string,\n toolTipText?: string,\n}\n\nconst FloatingActionButton = ({\n disabled,\n onClick,\n href,\n toolTipText = \"\",\n testId,\n}: FloatingActionButtonProps) => {\n const classes = useStyles();\n\n return (\n <Grid item className={classes.addButtonContainer}>\n <Grid/>\n <Tooltip title={disabled ? toolTipText : \"\"}>\n <div>\n <IconButton\n className={clsx(classes.addButton,\n {[classes.disabledButton]: disabled},\n )}\n data-test-id={testId}\n disabled={disabled}\n onClick={onClick}\n >\n <AddIcon data-test-id=\"floatingActionIcon\" className={clsx(classes.addIcon,\n {[classes.disabledAddIcon]: disabled},\n )}/>\n </IconButton>\n </div>\n </Tooltip>\n </Grid>\n )\n};\n\nexport default FloatingActionButton;\n","import React, { useRef } from \"react\";\nimport { makeStyles } from '@mui/styles';\nimport { Grid } from \"@mui/material\";\nimport LoadMoreCommentsButton from \"../../../../buttons/LoadMoreCommentsButton\";\nimport CommentForm from \"../../../../shared/Comments/CommentForm\";\nimport CommentBox from \"../../../../shared/Comments/CommentBox\";\nimport { SyncComment } from \"../../../../shared/TripObjectTypes\";\nimport { PageType } from \"../../../../shared/Comments/CommentForm\";\n\ntype MostRecentCommentBoxProps = {\n comment?: SyncComment,\n commentFormPath: string,\n commentsPath: string,\n page?: PageType,\n showCommentForm: boolean,\n showLoadMoreCommentsButton: boolean,\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n commentBox: {\n listStyleType: \"none\",\n padding: 0,\n margin: 0,\n },\n}));\n\nconst MostRecentCommentBox = ({\n comment,\n commentFormPath,\n commentsPath,\n page = 'Vertical',\n showCommentForm,\n showLoadMoreCommentsButton,\n tripId,\n}: MostRecentCommentBoxProps) => {\n const classes = useStyles();\n const scrollRef = useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n const el = scrollRef.current;\n\n if (showCommentForm && el.scrollIntoView) {\n el.scrollIntoView({behavior: \"smooth\", block: \"center\", inline: \"nearest\"})\n el.getElementsByTagName('textarea')[0].focus({preventScroll: true})\n }\n }, [showCommentForm])\n\n return (\n <Grid container direction=\"column\" spacing={1}>\n {showLoadMoreCommentsButton && (\n <Grid item>\n <LoadMoreCommentsButton\n commentsPath={commentsPath}\n tripId={tripId}\n />\n </Grid>\n )}\n {comment && (\n <Grid item>\n <ul className={classes.commentBox}>\n <CommentBox comment={comment} />\n </ul>\n </Grid>\n )}\n {showCommentForm && (\n <Grid item ref={scrollRef} sx={{ mt: comment ? 2 : 0 }}>\n <CommentForm\n data-test-id='comment-form'\n commentsPath={commentFormPath}\n isUserLoggedIn\n page={page}\n />\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default MostRecentCommentBox;\n","import React from 'react';\nimport { Box } from \"@mui/material\";\nimport HorizontalStepper from \"../../../../shared/HorizontalStepper\";\nimport { TypeTripObjectType } from \"../../../../shared/TripObjectTypes\";\n\nexport type PhasingStepperProps = {\n currentPhase: 'suggesting' | 'voting' | 'finalized',\n tripObjectType: TypeTripObjectType,\n};\n\nconst PhasingStepper = ({\n currentPhase,\n tripObjectType,\n}: PhasingStepperProps) => {\n const steps = [\n `Suggest ${tripObjectType}`,\n 'Vote',\n `Finalize ${tripObjectType}`,\n ];\n const activeStep = currentPhase == 'suggesting' ? 0 : 1;\n\n return (\n <Box paddingTop={2} paddingBottom={3} data-test-id=\"phasingStepper\">\n <HorizontalStepper activeStep={activeStep} steps={steps} />\n </Box>\n );\n};\n\nexport default PhasingStepper;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n Button,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { NewPollAnswer } from \"../NewPollForm\";\nimport { PollAnswerType } from \"../PollsPage/PollView/PollAnswersForm\";\nimport Linkify from \"../../../../shared/Linkify\";\n\ntype PollAnswerButtonProps = {\n answer: NewPollAnswer | PollAnswerType,\n className?: string,\n disabled?: boolean,\n isClickable?: boolean,\n onClick?: () => void,\n selected?: boolean,\n showProgressBar?: boolean,\n};\n\ntype StylesProps = {\n isClickable: boolean,\n responsesPercentage?: number,\n};\n\nconst useStyles = makeStyles<Theme, StylesProps>((theme) => ({\n root: {\n fontWeight: 400,\n height: 'auto',\n justifyContent: 'flex-start',\n paddingLeft: theme.spacing(2),\n background: ({ responsesPercentage }) => {\n if (responsesPercentage > 0) {\n return `linear-gradient(to left, #EEEEEE ${100 - responsesPercentage}%, #D6D8FB 0%)`;\n } else {\n return '#EEEEEE';\n };\n },\n borderColor: '#C8C8C8',\n color: '#000000',\n '&:hover': {\n background: ({ isClickable, responsesPercentage }) => {\n if (responsesPercentage > 0) {\n return `linear-gradient(to left, #EEEEEE ${100 - responsesPercentage}%, ${isClickable ? '#9AA0FF' : 'D6D8FB'} 0%)`;\n } else {\n return isClickable ? '#D7DAFF' : '#EEEEEE';\n };\n }\n },\n },\n disabled: {\n borderRadius: theme.spacing(1.25),\n background: '#EEEEEE',\n borderColor: '#E6E7E8',\n color: '#979797',\n },\n checkmark: {\n '& img': {\n display: 'block',\n marginTop: '3px',\n },\n },\n unclickable: {\n cursor: 'initial',\n },\n selected: {\n border: '2px solid #545DFC',\n },\n answerBody: {\n textAlign: 'left',\n overflowWrap: \"anywhere\",\n },\n}));\n\nconst PollAnswerButton = ({\n answer,\n className,\n disabled = false,\n isClickable = true,\n onClick,\n selected = false,\n showProgressBar = true,\n}: PollAnswerButtonProps) => {\n const classes = useStyles({\n isClickable: isClickable,\n responsesPercentage: showProgressBar ? answer.responsesPercentage : 0,\n });\n\n const onContainerLinkClicked = (event) => {\n if (event.target.dataset['element'] !== 'link') {\n onClick && onClick();\n }\n };\n\n return (\n <Button\n className={clsx(\n className,\n classes.root,\n {[classes.disabled]: disabled},\n {[classes.unclickable]: !isClickable},\n {[classes.selected]: selected},\n )}\n data-test-id='poll-answer-button'\n disabled={disabled}\n disableRipple\n fullWidth\n onClick={onContainerLinkClicked}\n >\n <Grid container justifyContent=\"space-between\">\n <Grid item>\n <Typography\n className={classes.answerBody}\n >\n <Linkify>{answer.body}</Linkify>\n </Typography>\n </Grid>\n {selected && (\n <Grid item data-test-id='checkMark' className={classes.checkmark}>\n <img src=\"/assets/illustrations/Yes.svg\" />\n </Grid>\n )}\n </Grid>\n </Button>\n );\n};\n\nexport default PollAnswerButton;\n","import React from 'react';\nimport pluralize from 'pluralize';\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport AvatarGroup from \"../../../../shared/AvatarGroup\";\nimport { PollAnswerType } from \"../PollsPage/PollView/PollAnswersForm\";\n\ntype PollAnswerResponsesProps = {\n answer: PollAnswerType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n responsesCount: {\n fontWeight: 600,\n fontSize: '16px',\n lineHeight: '36px',\n textAlign: 'right',\n },\n responsesInfo: {\n marginBottom: theme.spacing(3),\n marginTop: theme.spacing(1),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n}));\n\nconst PollAnswerResponses = ({\n answer,\n}: PollAnswerResponsesProps) => {\n const classes = useStyles();\n\n return (\n <Grid\n container\n data-test-id='PollAnswerResponses'\n justifyContent=\"space-between\"\n className={classes.responsesInfo}\n >\n <Grid item>\n <AvatarGroup max={3} avatars={answer.responses} />\n </Grid>\n <Grid item>\n <Typography className={classes.responsesCount}>\n {answer.responsesCount} {pluralize('votes', answer.responsesCount)}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default PollAnswerResponses;\n","import React from \"react\";\nimport { Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\n\ntype RankingLabelProps = {\n ranking: number,\n};\n\nconst useStyles = makeStyles((theme) => ({\n choiceLabel: {\n background: '#6f42c1',\n position: 'absolute',\n color: '#fff',\n borderRadius: '3px',\n display: 'inline',\n fontSize: theme.spacing(2),\n fontWeight: 600,\n lineHeight: 0.75,\n padding: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n zIndex: 2,\n top: 18,\n },\n topChoice: {\n background: '#1ebe95',\n },\n crown: {\n paddingRight: theme.spacing(1),\n },\n}))\n\nexport const RankingLabel = ({\n ranking,\n}: RankingLabelProps ) => {\n const classes = useStyles();\n const isGroupFavorite = ranking === 1\n let labelText;\n\n switch (ranking) {\n case 1:\n labelText = \"Group favorite\"\n break;\n case 2:\n labelText = \"2nd place\"\n break;\n case 3:\n labelText = \"3rd place\"\n break\n default:\n labelText = null;\n }\n\n return (\n <Typography data-test-id=\"choiceLabel\">\n <span className={clsx(\n classes.choiceLabel,\n { [classes.topChoice]: ranking === 1 },\n )}>\n { isGroupFavorite && (<img className={classes.crown} src=\"/assets/illustrations/Crown.svg\"/>)}\n { labelText }\n </span>\n </Typography>\n );\n};\n\nexport default RankingLabel;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ntype SectionHeaderProps = {\n note: string | React.ReactNode,\n title: string,\n rightElement?: string | React.ReactNode,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n [theme.breakpoints.down(\"md\")]: {\n fontSize: 20,\n },\n },\n note: {\n fontSize: 16,\n paddingBottom: theme.spacing(2),\n },\n}));\n\nconst SectionHeader = ({ title, note, rightElement }: SectionHeaderProps) => {\n const classes = useStyles();\n\n return (\n <Grid container direction=\"column\" justifyContent=\"space-between\" className={classes.root} data-test-id=\"sectionHeader\">\n <Grid container item justifyContent=\"space-between\">\n <Grid item>\n <Typography className={classes.title}>\n {title}\n </Typography>\n </Grid>\n <Grid item>\n {rightElement}\n </Grid>\n </Grid>\n <Grid item className={classes.note}>{note}</Grid>\n </Grid>\n );\n};\n\nexport default SectionHeader;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport Hidden from \"@mui/material/Hidden\";\nimport Button from \"../../../../buttons/Chip\";\nimport RailsForm from \"../../../../shared/RailsForm\";\nimport Tooltip from \"../../../../shared/Tooltip\";\n\nexport type SentimentType = {\n icon?: string,\n iconExt?: string,\n hideOnVoting?: boolean,\n label: string,\n shortLabel?: string,\n showIconWithoutLabel?: boolean,\n value: number | string,\n};\n\ntype SentimentButtonsProps = {\n activityId?: string,\n currentUserSentiment: number | string,\n disabled?: boolean,\n formMethod?: string,\n sentimentParamName?: string,\n sentimentSettingPath: string,\n sentiments: SentimentType[],\n shouldRedirectTo?: string,\n testId?: string,\n page?: string,\n};\n\nexport const useStyles = makeStyles((theme) => ({\n gridItem: {\n marginLeft: theme.spacing(2),\n '&:first-child': {\n marginLeft: 0,\n },\n '&:last-child': {\n marginRight: 0,\n },\n [theme.breakpoints.down('sm')]: {\n marginLeft: theme.spacing(1),\n },\n },\n indexGridItem: {\n [theme.breakpoints.up(1450)]: {\n marginRight: '8px',\n marginLeft: '8px',\n },\n [theme.breakpoints.between('lg', 1450)]: {\n marginRight: ['auto', \"!important\"],\n marginLeft: ['auto', \"!important\"],\n },\n },\n emoji: {\n height: '26px',\n [theme.breakpoints.down('md')]: {\n fontSize: [24, '!important'],\n lineHeight: 1,\n verticalAlign: 'center',\n },\n },\n icon:{\n height: 'inherit',\n },\n disabledEmoji: {\n filter: 'grayscale(100%)',\n },\n button: {\n zIndex: 2,\n height: '32px !important',\n width: '64px',\n },\n sentimentButtonsContainer: {\n justifyContent: 'space-evenly',\n maxWidth: '100%',\n flexWrap: 'nowrap',\n },\n toolTip: {\n zIndex: 4,\n },\n}));\n\nconst SentimentButtons = ({\n activityId,\n currentUserSentiment,\n disabled,\n formMethod = 'post',\n sentimentParamName,\n sentimentSettingPath,\n sentiments,\n shouldRedirectTo,\n testId,\n page,\n}: SentimentButtonsProps) => {\n const classes = useStyles();\n const defaultIconExt = 'svg';\n\n const isVotedSentiment = (value, currentUserSentiment) => {\n return value === currentUserSentiment;\n };\n\n return (\n <Grid\n container\n justifyContent=\"center\"\n data-test-id={testId}\n className={classes.sentimentButtonsContainer}\n >\n {sentiments.map(({ icon, iconExt, hideOnVoting, label, shortLabel, showIconWithoutLabel, value }) => (\n (!hideOnVoting &&\n <Grid item className={clsx(classes.gridItem, {[classes.indexGridItem]: page !== 'index'})} key={label}>\n <RailsForm\n action={sentimentSettingPath}\n method={isVotedSentiment(value,currentUserSentiment) ? 'DELETE' : formMethod}\n withChangeDetection={false}\n >\n <input\n type=\"hidden\"\n name={sentimentParamName || \"sentiment\"}\n value={value}\n />\n {shouldRedirectTo &&\n <input\n type=\"hidden\"\n name=\"should_redirect_to\"\n value={shouldRedirectTo}\n />\n }\n <Tooltip\n title={label}\n className={classes.toolTip}\n data-test-id={`${label}-sentiment-tooltip`}\n >\n <div>\n <Button\n active={isVotedSentiment(value, currentUserSentiment)}\n className={classes.button}\n data-test-id={`${value}-button`}\n disabled={disabled}\n type=\"submit\"\n >\n <span className={clsx(\n classes.emoji,\n { [classes.disabledEmoji]: disabled },\n )}>\n {<img\n className={classes.icon}\n data-test-id={icon}\n src={`/assets/illustrations/${icon}.${iconExt || defaultIconExt}`}\n />}\n </span>\n {shortLabel && page === 'index' && (\n <Hidden only={['xl', 'lg', 'xs']}>\n {' '}{shortLabel}\n </Hidden>\n )}\n </Button>\n </div>\n </Tooltip>\n </RailsForm>\n </Grid>\n )\n ))}\n </Grid>\n );\n}\n\nexport default SentimentButtons;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport pluralize from \"pluralize\";\nimport Button from \"../../../../buttons/Button\";;\nimport ConfirmationDialog from \"../../../../shared/ConfirmationDialog\";\nimport { TypeTripObjectType } from \"../../../../shared/TripObjectTypes\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport SkipVotingButton from \"./SuggestingPhaseButtons/SkipVotingButton\"\nimport * as routes from '../../../../../routes';\n\nconst {\n newTripChosenDateOptionPath,\n newTripChosenDestinationPath,\n newTripChosenStayPath,\n} = routes;\n\ntype SuggestingPhaseButtonsProps = {\n hasSuggestions: boolean,\n isPlanner: boolean,\n transitionToVotingPath: string,\n tripId: string,\n tripObjectType: TypeTripObjectType,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n [theme.breakpoints.up('md')]: {\n width: 360,\n },\n },\n header: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n marginBottom: theme.spacing(1),\n },\n subheader:{\n paddingLeft: theme.spacing(2),\n },\n}));\n\nconst SuggestingPhaseButtons = ({\n hasSuggestions,\n isPlanner,\n transitionToVotingPath,\n tripId,\n tripObjectType,\n}: SuggestingPhaseButtonsProps) => {\n const classes = useStyles();\n const votingCopy = 'Start collecting votes from travelers you’ve invited to the trip.';\n const suggestionsCopy = `Suggest some ${tripObjectType} before opening up voting.`;\n const header = hasSuggestions ? \"open voting\" : `add ${tripObjectType}`;\n const subheader = hasSuggestions ? votingCopy : suggestionsCopy;\n const disabledSkipVotingButton = !hasSuggestions || !isPlanner;\n const finalizePath = {\n dates: newTripChosenDateOptionPath(tripId),\n destinations: newTripChosenDestinationPath(tripId),\n stays: newTripChosenStayPath(tripId),\n };\n\n const [dialogOpen, setDialogOpen] = useState(false);\n\n return (\n <Grid container className={classes.root} direction=\"column\" spacing={2}>\n <Grid item>\n <Typography className={classes.header}>\n Next step: {header}\n </Typography>\n </Grid>\n <Typography className={classes.subheader}>{subheader}</Typography>\n <Grid item>\n <ConfirmationDialog\n actionMethod=\"PATCH\"\n actionPath={transitionToVotingPath}\n actionText=\"Open voting\"\n disabled={!hasSuggestions}\n isOpen={dialogOpen}\n message={`Opening voting will notify your group it's time to vote on ${tripObjectType}. Ready to continue?`}\n onClose={() => setDialogOpen(false)}\n title=\"Open voting\"\n />\n <Tooltip data-test-id='open-voting-tooltip' title={isPlanner ? '' : `Only planners can open voting`}>\n <Grid item>\n <Button\n aria-label='open-voting-button'\n disabled={!hasSuggestions || !isPlanner}\n data-test-id='open-voting-button'\n fullWidth\n onClick={() => setDialogOpen(true)}\n >\n Open voting\n </Button>\n </Grid>\n </Tooltip>\n </Grid>\n <Grid item>\n <SkipVotingButton\n disabled={disabledSkipVotingButton}\n tripObjectType={pluralize.singular(tripObjectType)}\n finalizePath={finalizePath[tripObjectType]}\n isPlanner={isPlanner}\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default SuggestingPhaseButtons;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport Button from \"../../../../../buttons/Button\";\nimport Tooltip from \"../../../../../shared/Tooltip\";\n\ntype SkipVotingButtonProps = {\n disabled: boolean,\n finalizePath: string,\n isPlanner: boolean,\n tripObjectType: string,\n};\n\nconst SkipVotingButton = ({\n disabled,\n finalizePath,\n isPlanner,\n tripObjectType,\n}: SkipVotingButtonProps) => {\n\n const tooltipTitle = () => {\n if(disabled && isPlanner) return `Add a ${tripObjectType} before skipping voting`;\n if(disabled && !isPlanner) return `Only planners can skip voting`;\n\n return '';\n };\n\n const variant = disabled ? 'tertiary' : 'secondary';\n\n return (\n <Tooltip title={tooltipTitle()}>\n <Grid item>\n <Button\n aria-label='skip-voting-button'\n disabled={disabled}\n data-test-id='skip-voting-button'\n fullWidth\n href={`${finalizePath}?skip_voting=true`}\n variant={variant}\n >\n Skip voting\n </Button>\n </Grid>\n </Tooltip>\n );\n};\n\nexport default SkipVotingButton;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Truncate from 'react-truncate';\nimport {\n Grid,\n Hidden,\n Typography,\n} from \"@mui/material\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from \"@mui/styles\";\n\ntype TripNameProps = {\n name: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n namePositionMobile: {\n position: 'absolute',\n display: 'block',\n bottom: '5%',\n paddingBottom: theme.spacing(1),\n },\n namePositionDesktop: {\n position: 'relative',\n top: '75%',\n width: 'fill-available',\n },\n name: {\n fontSize: 24,\n fontWeight: 600,\n bottom: '10%',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n lineHeight: '1.4',\n position: 'relative',\n },\n nameShort: {\n color: \"white\",\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(2),\n },\n nameLong: {\n color: \"#243060\",\n marginRight: '20vw',\n marginLeft: '20vw',\n },\n}));\n\nconst TripName = ({ name }: TripNameProps) => {\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down(600));\n\n return (\n <Grid container justifyContent='center' className={clsx({\n [classes.namePositionDesktop]: !isMobile,\n [classes.namePositionMobile]: isMobile,\n })}>\n <Typography\n className={clsx(\n classes.name,\n {\n [classes.nameShort]: isMobile,\n [classes.nameLong]: !isMobile,\n }\n )}\n data-test-id=\"tripHeaderName\">\n <Hidden smUp><Truncate lines={3}>{name}</Truncate></Hidden>\n <Hidden smDown>{name}</Hidden>\n </Typography>\n </Grid>\n )\n};\n\nexport default TripName;\n","import React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n Button,\n ButtonGroup,\n} from \"@mui/material\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport DeleteResourceConfirmationDialog from \"../../../../shared/DeleteResourceConfirmationDialog\";\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n height: 30,\n padding: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n root: {\n position: 'relative',\n boxSizing: 'border-box',\n borderRadius: '5px',\n },\n}));\n\ntype DeleteButtonProps = {\n deletePath: string,\n resourceName: string,\n};\n\nconst TripObjectDelete = ({\n deletePath,\n resourceName,\n}: DeleteButtonProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n\n return (\n <Box className={classes.root}>\n <ButtonGroup\n classes={{\n groupedOutlined: classes.buttonGroup,\n }}\n disableElevation\n variant=\"outlined\"\n size=\"small\"\n >\n <Button\n data-test-id={`delete-${resourceName.replace(' ', '-')}-Button`}\n onClick={() => setDialogOpen(true)}\n className={classes.button}\n >\n <DeleteIcon fontSize=\"small\" />\n </Button>\n </ButtonGroup>\n <DeleteResourceConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={deletePath}\n resourceName={resourceName}\n />\n </Box>\n );\n};\n\nexport default TripObjectDelete;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport clsx from \"clsx\";\nimport pluralize from 'pluralize';\nimport { rankLabels } from '../../../../shared/rankLabels';\nimport { getTravelersRankingsForTripObject, TripObjectRankingProps } from \"../../../../../services/RankingSystem\";\nimport TextButton from \"../../../../buttons/TextButton\";\nimport textButtonColors from \"../../../../buttons/textButtonColors\";\n\nconst useStyles = makeStyles((theme) => ({\n activeSentiments: {\n display: 'flex',\n flexWrap: 'nowrap',\n },\n icon: {\n verticalAlign: \"bottom\",\n width: theme.spacing(3),\n marginRight: theme.spacing(-3),\n },\n votesCount: {\n marginLeft: theme.spacing(4),\n },\n totalVotes: {\n position: 'relative',\n '&:first-child': {\n zIndex: 3,\n },\n '&:nth-child(2)': {\n zIndex: 2,\n },\n '&:not(:last-child)': {\n paddingRight: theme.spacing(2),\n },\n },\n text: {\n color: textButtonColors.link.default.color,\n fontWeight: textButtonColors.link.default.fontWeight,\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n}));\n\nconst VoteResultsButton = ({\n className,\n objectId,\n onClick,\n rankingType,\n travelers,\n}: TripObjectRankingProps & {className?: string, onClick: () => void}) => {\n const classes = useStyles();\n const votes = getTravelersRankingsForTripObject({travelers: travelers, objectId: objectId, rankingType: rankingType });\n const rankLabelsWithVotes = rankLabels.filter((rank) =>\n votes.filter(({ ranking }) => ranking === rank.value).length > 0);\n\n return (\n <TextButton\n className={className}\n variant=\"tertiary\"\n data-test-id=\"see-votes-button\"\n onClick={onClick}\n >\n <span className={classes.activeSentiments}>\n {rankLabelsWithVotes.map(({icon}, index) => (\n <span className={classes.totalVotes} key={index}>\n <img\n className={classes.icon}\n data-test-id={`${icon}-medal`}\n src={`/assets/illustrations/${icon}.svg`}\n />\n </span>\n ))}\n </span>\n <span className={clsx(classes.text, {[classes.votesCount]: votes.length > 0})}>\n View {votes.length} {pluralize('vote', votes.length)}\n </span>\n </TextButton>\n );\n};\n\nexport default VoteResultsButton;\n","import React from \"react\";\nimport Button from \"../../../../buttons/Button\";;\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport Tooltip from \"../../../../shared/Tooltip\";\nimport pluralize from 'pluralize';\nimport BackToSuggestingButton from \"./BackToSuggestingButton\";\nimport { TypeTripObjectType } from \"../../../../shared/TripObjectTypes\";\n\ntype VotingTopSideBarContentProps = {\n className?: string,\n disabledActions: boolean,\n finalizePath: string,\n isCurrentUserPlanner?: boolean,\n transitionToSuggestingPath?: string,\n type: 'dates' | 'destination' | 'stay',\n};\n\nconst useStyles = makeStyles((theme) => ({\n backToSuggesting: {\n display: 'grid',\n marginTop: theme.spacing(2),\n },\n finalizeButton: {\n textAlign: 'center',\n },\n header: {\n fontSize: '20px',\n fontWeight: 600,\n lineHeight: '32px',\n marginBottom: theme.spacing(1),\n },\n root: {\n [theme.breakpoints.up('md')]: {\n width: 360,\n },\n },\n subheader: {\n marginBottom: theme.spacing(3),\n },\n withMarginLeft:{\n marginLeft: theme.spacing(1.5),\n },\n}));\n\nconst VotingTopSideBarContent = ({\n className,\n disabledActions,\n finalizePath,\n isCurrentUserPlanner,\n transitionToSuggestingPath,\n type,\n}: VotingTopSideBarContentProps) => {\n const classes = useStyles();\n const pluralizedType = pluralize(type, 2) as Exclude<TypeTripObjectType, \"activities\" | \"polls\">;\n\n const tooltipTitle = () => {\n if(type === 'dates' && disabledActions) return 'Votes cannot be changed for past dates.'\n if(isCurrentUserPlanner) return ''\n\n return `Only planners can finalize ${pluralizedType}.`\n };\n\n return <>\n <Grid container className={clsx(classes.root, className)} direction=\"column\">\n <Grid item>\n <Typography className={classes.header}>\n Finalize {type}\n </Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.subheader}>\n When voting is complete, finalize your {type} to notify the group.\n </Typography>\n </Grid>\n <Grid container direction=\"column\" justifyContent=\"center\">\n <Grid item>\n <Tooltip title={tooltipTitle()}>\n <Grid>\n <Button\n className={classes.finalizeButton}\n data-test-id=\"finalize-button\"\n disabled={disabledActions || !isCurrentUserPlanner}\n fullWidth\n href={finalizePath}\n >\n Finalize {type}\n </Button>\n </Grid>\n </Tooltip>\n </Grid>\n </Grid>\n {isCurrentUserPlanner &&\n <Grid container justifyContent='center' item className={classes.backToSuggesting}>\n <BackToSuggestingButton\n transitionToSuggestingPath={transitionToSuggestingPath}\n tripObjectType={pluralizedType}\n />\n </Grid>\n }\n </Grid>\n </>\n};\n\nexport default VotingTopSideBarContent;\n","import React, { useContext, useEffect } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport clsx from \"clsx\";\nimport reactStringReplace from \"react-string-replace\";\nimport flowRight from \"lodash/flowRight\";\nimport { Alert, AlertTitle, ButtonBase, Container } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { hocRailsAction, RoutesContext } from \"../../../Document\";\nimport RailsForm from \"../../../shared/RailsForm\";\nimport SiteHeader from \"../../../shared/SiteHeader\";\nimport NavigationBar, { NavItem } from \"../../../trip-page/NavigationBar\";\nimport SiteFooter from \"../../../shared/SiteFooter\";\nimport OverviewSubheader, { Invite } from \"./OverviewPage/OverviewSubheader\";\nimport { GlobalTrip } from \"../../../shared/TripTypes\";\nimport { group as analyticsGroup } from \"../../../../services/analytics\";\n\ntype StyleProps = {\n maxWidth: boolean;\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n },\n logInLinkForm: {\n display: 'inline',\n },\n logInLink: {\n display: 'inline',\n fontFamily: theme.typography.fontFamily,\n textDecoration: 'underline',\n },\n pageContainer: {\n flex: 1,\n maxWidth: ({maxWidth}) => maxWidth ? theme.spacing(96) : 'auto',\n \"& .anchor\": {\n position: \"relative\",\n \"& > a\": {\n position: \"absolute\",\n top: `-${theme.spacing(17)}`,\n left: 0,\n },\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n },\n },\n fluid: {\n [theme.breakpoints.up('md')]: {\n maxWidth: '100%',\n paddingLeft: theme.spacing(9),\n paddingRight: theme.spacing(9),\n },\n [theme.breakpoints.up('lg')]: {\n paddingLeft: theme.spacing(13.5),\n paddingRight: theme.spacing(13.5),\n },\n [theme.breakpoints.up(1440)]: {\n paddingLeft: theme.spacing(20),\n paddingRight: theme.spacing(20),\n },\n [theme.breakpoints.up('xl')]: {\n paddingLeft: theme.spacing(25),\n paddingRight: theme.spacing(25),\n },\n },\n alert: {\n marginTop: theme.spacing(3),\n },\n}));\n\ninterface WithLayoutProps {\n tripUpdatesNum: number,\n broadcastNum: number,\n currentUserAvatarUrl: string,\n currentUserId?: string,\n infoMessage?: string,\n isUserLoggedIn: boolean,\n hideCoverPhoto?: boolean,\n hideNavBar?: boolean,\n navItems: NavItem[],\n shouldRequestPhoneNumber?: boolean,\n invite: Invite,\n hideOverviewHeader: boolean,\n trip?: GlobalTrip,\n}\n\nexport const withLayout = (\n Page, { fluid, maxWidth }: { fluid?: boolean, maxWidth?: boolean } = { fluid: false, maxWidth: true },\n ) => (function withLayout(props: WithLayoutProps) {\n const classes = useStyles({ maxWidth });\n const { authPath } = useContext(RoutesContext);\n const { trip } = props;\n\n useEffect(() => {\n if (trip && trip.travelersCount) {\n analyticsGroup(trip.id, {\n tripId: trip.id,\n createdAt: trip.createdAt,\n name: trip.name,\n travelersCount: trip.travelersCount,\n tripTypes: trip.tripTypes,\n })\n }\n }, [trip])\n\n return (\n <div className={classes.root}>\n <SiteHeader\n tripUpdatesNum={props.tripUpdatesNum}\n broadcastNum={props.broadcastNum}\n currentUserAvatarUrl={props.currentUserAvatarUrl}\n currentUserId={props.currentUserId}\n isUserPlanner={props.trip?.isPlanner}\n isUserLoggedIn={props.isUserLoggedIn}\n showCoverPhoto={!props.hideCoverPhoto}\n trip={trip}\n />\n {!props.hideOverviewHeader && trip && (\n <span>\n <OverviewSubheader\n invite={props.invite}\n trip={trip}\n currentUserId={props.currentUserId}\n />\n </span>\n )}\n {!props.hideNavBar && (\n <NavigationBar items={props.navItems} />\n )}\n <Container className={clsx(\n classes.pageContainer,\n {\n [classes.fluid]: fluid,\n },\n )}>\n {props.infoMessage && (\n <Alert severity=\"info\" className={classes.alert}>\n <AlertTitle>Heads up</AlertTitle>\n {reactStringReplace(props.infoMessage, /(log in)/g, (match) => (\n <RailsForm action={authPath} className={classes.logInLinkForm} withChangeDetection={false}>\n <ButtonBase type=\"submit\" className={classes.logInLink}>{match}</ButtonBase>\n </RailsForm>\n ))}</Alert>\n )}\n <Page {...props} />\n </Container>\n <SiteFooter />\n </div>\n );\n});\n\nexport default flowRight(hocRailsAction, withLayout);\n","import React, { useCallback } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { makeStyles } from \"@mui/styles\";\nimport Errors from \"../../../shared/Errors\";\nimport { hocRailsAction } from \"../../../Document\";\nimport Button from \"../../../buttons/Button\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport { trackLink as trackAnalyticsEvent } from '../../../../services/analytics';\n\ntype DestroyConfirmationChosenTripObjectPageType = {\n chosenTripObjectId: string,\n chosenTripObjectPath: string,\n errors: string[],\n indexPath: string,\n isSkippedVotingFinalized: boolean,\n type: 'stay' | 'destination' | 'date_option',\n tripId: string,\n};\n\nconst usePageStyles = makeStyles(theme => ({\n errorsContainer: {\n marginTop: theme.spacing(2),\n },\n button: {\n marginTop: theme.spacing(4),\n },\n}));\n\nconst DestroyConfirmationChosenTripObjectPage : React.FC<DestroyConfirmationChosenTripObjectPageType> = ({\n chosenTripObjectId,\n chosenTripObjectPath,\n errors,\n indexPath,\n isSkippedVotingFinalized = false,\n type,\n tripId,\n}) => {\n const classes = usePageStyles();\n const objectType = type === 'date_option' ? 'dates' : type;\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Transitioned back to voting',\n {\n tripId: tripId,\n },\n );\n }\n }, []);\n\n const subtitle = isSkippedVotingFinalized ?\n `Your confirmed ${objectType} will be reset and travelers will be able to suggest new options to the group.` :\n `Your confirmed ${objectType} will be reset and travelers will be able to vote on the options originally suggested to the group.`;\n\n return (\n <ModalForm\n closePath={indexPath}\n formActionPath={chosenTripObjectPath}\n formMethod=\"DELETE\"\n subtitle={subtitle}\n title={`Are you sure you want to change your ${objectType}?`}\n useDefaultSaveButton={false}\n withChangeDetection={false}\n >\n <input type=\"hidden\" value={chosenTripObjectId} name=\"trip_object_id\" />\n <Errors className={classes.errorsContainer} errors={errors} />\n <Grid container justifyContent=\"center\" alignItems=\"center\">\n <Grid item xs={12} md={12}>\n <Button\n href={indexPath}\n className={classes.button}\n fullWidth\n variant=\"secondary\"\n >\n No, keep {objectType}\n </Button>\n </Grid>\n <Grid item xs={12} md={12}>\n <Button\n className={classes.button}\n type=\"submit\"\n fullWidth\n variant=\"primary\"\n data-test-id=\"confirmationButton\"\n ref={(element) => refs(element)}\n >\n Yes, change {objectType}\n </Button>\n </Grid>\n </Grid>\n </ModalForm>\n );\n};\n\nexport default hocRailsAction(DestroyConfirmationChosenTripObjectPage);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Box,\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport Errors from \"../../../shared/Errors\";\nimport Button from \"../../../buttons/Button\";\nimport ModalForm from \"../../../shared/ModalForm\";\nimport { FormContext } from \"../../../shared/RailsForm\";\nimport useStateWithPromise from \"../../../../services/useStateWithPromise\";\nimport { StayType, DateOptionType, DestinationType } from '../../../shared/TripObjectTypes';\n\ntype ChoosingTripObject = StayType | DateOptionType | DestinationType;\n\nexport enum ChoosingTypeTripObject {\n Dates = 'dates',\n Destination = 'destination',\n Stay = 'stay',\n};\n\ntype RenderTripObjectParams = {\n tripObject: | StayType | DateOptionType | DestinationType,\n isChosen: boolean,\n chooseFinalTripObject: (id: string) => void,\n};\n\ntype TripObjectChoosingModalFormProps = {\n errors: string[],\n newChosenTripObjectPath: string,\n renderTripObject: ({tripObject, isChosen, chooseFinalTripObject}: RenderTripObjectParams) => React.ReactNode,\n subtitle: string,\n title: string,\n tripObjects: ChoosingTripObject[],\n tripSitePath: string,\n type: ChoosingTypeTripObject,\n isSkipVoting?: boolean,\n};\n\nconst usePageStyles = makeStyles(theme => ({\n tripObjectInputs: {\n marginTop: theme.spacing(0),\n },\n tripObjectNoteContainer: {\n marginTop: theme.spacing(2),\n paddingTop: '0!important',\n },\n confirmTripObjectButton: {\n marginBottom: theme.spacing(1),\n backgroundColor: theme.palette.general.primary,\n color: 'white',\n fontSize: 16,\n },\n}));\n\nconst TripObjectChoosingModalForm = ({\n errors,\n newChosenTripObjectPath,\n renderTripObject,\n subtitle,\n title,\n tripObjects,\n tripSitePath,\n type,\n isSkipVoting = false,\n}: TripObjectChoosingModalFormProps) => {\n const classes = usePageStyles();\n const defaultChosenId = tripObjects.length === 1 && !(type === ChoosingTypeTripObject.Dates && (tripObjects[0] as DateOptionType).isPast) ? tripObjects[0].id : null;\n const [chosenTripObjectId, setChosenTripObjectId] = useStateWithPromise(defaultChosenId);\n\n const skipVotingField = (isSkipVoting) => {\n if (isSkipVoting) {\n return <>\n <input type=\"hidden\" value='true' name=\"skip_voting\" />\n </>;\n };\n };\n\n return (\n <ModalForm\n title={title}\n subtitle={subtitle}\n closePath={tripSitePath}\n formActionPath={newChosenTripObjectPath}\n useDefaultSaveButton={false}\n >\n <FormContext.Consumer>\n {({ onFormChange }) => (<>\n <input type=\"hidden\" value={chosenTripObjectId || ''} name=\"trip_object_id\" />\n {skipVotingField(isSkipVoting)}\n <Box>\n <Errors errors={errors} />\n <Grid container direction=\"column\">\n {tripObjects.map((tripObject, index) =>\n <React.Fragment key={index}>\n <Grid item>\n {chosenTripObjectId === tripObject.id && (\n <Grid container spacing={2} className={classes.tripObjectInputs}>\n <Grid item xs={12} className={classes.tripObjectNoteContainer}>\n <Typography variant='h3' mb={2}>Add a note</Typography>\n <TextField\n autoFocus\n label=\"Any additional info to share?\"\n variant=\"outlined\"\n name=\"note\"\n maxRows={10}\n fullWidth\n multiline\n data-test-id='note-field'\n />\n </Grid>\n </Grid>\n )}\n </Grid>\n <Grid item>\n {renderTripObject(\n {\n tripObject: tripObject,\n isChosen: chosenTripObjectId === tripObject.id,\n chooseFinalTripObject: (id) => setChosenTripObjectId(id).then(() => onFormChange()),\n }\n )}\n </Grid>\n <Grid item>\n {chosenTripObjectId === tripObject.id && (\n <Grid container spacing={2} className={classes.tripObjectInputs}>\n <Grid item xs={12}>\n <Button\n className={classes.confirmTripObjectButton}\n type=\"submit\"\n fullWidth\n data-test-id='finalize-confirmation-button'\n >\n Finalize {type}\n </Button>\n </Grid>\n </Grid>\n )}\n </Grid>\n </React.Fragment>,\n )}\n </Grid>\n </Box>\n </>)}\n </FormContext.Consumer>\n </ModalForm>\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default TripObjectChoosingModalForm;\n","import React, { useEffect, useRef } from \"react\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { hocRailsAction } from \"../../Document\";\nimport * as routes from '../../../routes';\nimport SiteHeader from '../../../components/shared/SiteHeader'\nimport RailsForm from \"../../shared/RailsForm\";\nimport Button from \"../../buttons/Button\";\nimport Errors from '../../shared/Errors';\n\nconst {\n authReauthenticatePath,\n usersPath,\n} = routes;\n\ntype NewUserFormProps = {\n errors?: string[],\n formType: 'name' | 'email',\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n minHeight: '100vh',\n },\n newUserFormImage: {\n maxWidth: theme.spacing(50),\n padding: theme.spacing(3),\n width: '100%',\n [theme.breakpoints.down('md')]: {\n width: '75%',\n },\n },\n subText: {\n fontSize: 16,\n fontWeight: 400,\n paddingTop: theme.spacing(1),\n textAlign: 'center',\n },\n nameFields: {\n paddingTop: theme.spacing(2),\n },\n fieldsContainer: {\n paddingTop: theme.spacing(3),\n [theme.breakpoints.up('xs')]: {\n minWidth: '270px',\n },\n },\n buttonOuter: {\n paddingBottom: theme.spacing(4),\n paddingTop: theme.spacing(3),\n },\n errors: {\n paddingTop: theme.spacing(1),\n },\n}));\n\nconst NewUserForm = ({\n errors,\n formType,\n}: NewUserFormProps) => {\n const classes = useStyles();\n const formTypeHumanized = formType === 'email' ? 'email address' : 'name';\n const focusedInputRef = useRef(null);\n\n const textFieldDetails = () => {\n if (formType === 'email') {\n return {\n id: \"user_email\",\n name: \"user[email_address]\",\n label: \"Email address\",\n dataTestId: \"user-email-field\",\n };\n } else {\n return {\n id: \"user_first_name\",\n name: \"user[first_name]\",\n label: \"First name\",\n dataTestId: \"user-first-name-field\",\n };\n }\n };\n\n useEffect(() => {\n focusedInputRef.current?.focus();\n }, [focusedInputRef]);\n\n return (\n <Grid\n container\n direction=\"column\"\n className={classes.root}\n >\n <SiteHeader logoPath={authReauthenticatePath()} />\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <img\n className={classes.newUserFormImage}\n alt=\"trips\"\n src={`/assets/trips.svg`}\n data-test-id=\"new-user-form-img\"\n />\n <Typography\n variant=\"h2\"\n data-test-id=\"header-text\"\n >\n Welcome to Troupe!\n </Typography>\n <Grid item>\n <Typography className={classes.subText}>\n To get started, what’s your {formTypeHumanized}?\n </Typography>\n </Grid>\n {errors && (\n <Grid item className={classes.errors}>\n <Errors errors={errors} />\n </Grid>\n )}\n <RailsForm\n action={usersPath()}\n >\n <Grid\n item\n className={classes.fieldsContainer}\n >\n <Grid item>\n <TextField\n id={textFieldDetails().id}\n name={textFieldDetails().name}\n label={textFieldDetails().label}\n variant=\"outlined\"\n required={true}\n inputRef={focusedInputRef}\n fullWidth\n data-test-id={textFieldDetails().dataTestId}\n />\n </Grid>\n {formType === 'name' && (\n <Grid item className={classes.nameFields}>\n <TextField\n id=\"user_last_name\"\n name=\"user[last_name]\"\n label=\"Last name\"\n variant=\"outlined\"\n fullWidth\n data-test-id=\"user-last-name-field\"\n />\n </Grid>\n )}\n </Grid>\n <Grid item className={classes.buttonOuter}>\n <Button\n fullWidth\n type=\"submit\"\n variant=\"primary\"\n data-test-id=\"new-user-form-save-button\"\n >\n Plan my first trip\n </Button>\n </Grid>\n </RailsForm>\n </Grid>\n </Grid>\n );\n};\n\n// noinspection JSUnusedGlobalSymbols\nexport default hocRailsAction(NewUserForm);\n","import React, { useState, useContext } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n MenuItem,\n Tooltip,\n} from \"@mui/material\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteResourceConfirmationDialog from \"./DeleteResourceConfirmationDialog\";\nimport BaseActionsMenu from \"./BaseActionsMenu\";\nimport BookingActionsMenuItems from \"./BookingActionsMenuItems\";\n\ntype ActionsButtonGroupProps = {\n deleteDialogAdditionalMessage?: string | React.ReactNode,\n deletePath: string,\n disableDeleteButton?: boolean,\n editPath: string,\n resourceName: 'stay' | 'destination' | 'activity' | 'activity group',\n testId?: string,\n onEditClick?: () => void | null,\n onMarkAsBookedClick?: () => void | null,\n newBookingPath?: string,\n updateBookingPath?: string,\n displayMarkAsBooked?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n zIndex: 3,\n },\n icon: {\n color: '#334351',\n },\n iconImage: {\n height: \"20px\",\n width: \"20px\",\n marginRight: \"5px\",\n },\n}));\n\nconst ActionsButtonGroup : React.FC<ActionsButtonGroupProps> = ({\n deleteDialogAdditionalMessage,\n deletePath,\n disableDeleteButton,\n editPath,\n resourceName,\n testId,\n onEditClick,\n onMarkAsBookedClick,\n newBookingPath,\n updateBookingPath,\n displayMarkAsBooked = false,\n}) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n const handleDeleteClick = () => {\n setDialogOpen(true);\n };\n\n const goToEditPath = () => {\n if(onEditClick) onEditClick();\n window.location.href = editPath;\n };\n\n return (\n <BaseActionsMenu\n testId={testId}\n dialogs={\n <DeleteResourceConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={deletePath}\n resourceName={resourceName}\n additionalMessage={deleteDialogAdditionalMessage}\n />\n }\n className={classes.root}\n >\n <BookingActionsMenuItems\n displayMarkAsBooked={displayMarkAsBooked}\n newBookingPath={newBookingPath}\n updateBookingPath={updateBookingPath}\n onMarkAsBookedClick={onMarkAsBookedClick}\n />\n <MenuItem data-test-id={`edit-${resourceName.replace(' ', '-')}-button`} onClick={goToEditPath} dense>\n <EditIcon fontSize=\"small\" sx={{marginRight: '5px'}}/>\n Edit\n </MenuItem>\n <Tooltip\n data-test-id=\"disabled-delete\"\n placement=\"bottom-start\"\n title={disableDeleteButton ? `You cannot delete a finalized ${resourceName}` : ''}\n >\n <MenuItem\n data-test-id={`delete-${resourceName.replace(' ', '-')}-button`}\n onClick={!disableDeleteButton ? () => handleDeleteClick() : null}\n dense\n >\n <DeleteIcon fontSize=\"small\" sx={{marginRight: '5px'}}/>\n Delete\n </MenuItem>\n </Tooltip>\n </BaseActionsMenu>\n );\n};\n\nexport default ActionsButtonGroup;\n","import React from \"react\";\nimport {\n MenuItem,\n} from \"@mui/material\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteResourceConfirmationDialog from \"./DeleteResourceConfirmationDialog\";\nimport ListItemText from '@mui/material/ListItemText';\nimport BaseActionsMenu from \"./BaseActionsMenu\";\nimport BookingActionsMenuItems from \"./BookingActionsMenuItems\";\n\ntype ActionsMenuProps = {\n deletePath: string,\n onDeleteClick?: () => void,\n onEditClick?: (value: any) => void,\n resourceName: string,\n dense?: boolean,\n displayMarkAsBooked?: boolean,\n newBookingPath?: string,\n updateBookingPath?: string,\n};\n\nconst ActionsMenu : React.FC<ActionsMenuProps> = ({\n deletePath,\n onDeleteClick = () => {},\n onEditClick,\n resourceName,\n dense = true,\n displayMarkAsBooked = false,\n newBookingPath = '',\n updateBookingPath = '',\n}) => {\n const [dialogOpen, setDialogOpen] = React.useState(false);\n const handleDeleteItemClick = () => {\n setDialogOpen(true);\n onDeleteClick();\n };\n\n return (\n <BaseActionsMenu\n dialogs={\n <DeleteResourceConfirmationDialog\n isOpen={dialogOpen}\n onClose={() => setDialogOpen(false)}\n path={deletePath}\n resourceName={resourceName}\n />\n }\n >\n <BookingActionsMenuItems\n displayMarkAsBooked={displayMarkAsBooked}\n newBookingPath={newBookingPath}\n updateBookingPath={updateBookingPath}\n />\n {onEditClick &&\n <MenuItem data-test-id={`edit-${resourceName}`} onClick={onEditClick} dense={dense}>\n <EditIcon fontSize=\"small\" sx={{ mr: 1 }}/>\n <ListItemText>{`Edit ${resourceName}`}</ListItemText>\n </MenuItem>\n }\n <MenuItem data-test-id={`delete-${resourceName}`} onClick={handleDeleteItemClick} dense={dense}>\n <DeleteIcon fontSize=\"small\" sx={{ mr: 1 }}/>\n <ListItemText>{`Delete ${resourceName}`}</ListItemText>\n </MenuItem>\n </BaseActionsMenu>\n );\n};\n\nexport default ActionsMenu;\n","import React from \"react\"\nimport { ButtonBase, Chip, Typography, Grid } from \"@mui/material\";\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\nimport { useAdClickedEvent } from \"../../services/segmentEvents/useAdsEvents\";\n\ntype AdImages = {\n regular: string,\n small: string,\n};\n\nexport type AdContent = {\n color: string,\n ctaCopy: string,\n images: AdImages,\n label: string,\n title: string,\n url: string,\n};\n\ntype ActivityAdProps = {\n content: AdContent,\n small?: boolean,\n vertical: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { image: string, small: boolean }>((theme) => ({\n root: {\n background: ({ image }) => `url(\"${image}\") no-repeat center/cover`,\n width: ({ small }) => small ? '100%' : '345px',\n height: ({ small }) => small ? 'auto' : '177px',\n position: 'relative',\n marginBottom: '12px',\n paddingLeft: ({ small }) => small ? '4px' : '8px',\n },\n ctaLink: {\n fontWeight: 600,\n fontSize: ({ small }) => small ? 12 : 14,\n color: '#FFFFFF',\n position: 'absolute',\n top: ({ small }) => small ? theme.spacing(1) : theme.spacing(2),\n right: ({ small }) => small ? theme.spacing(1) : theme.spacing(2),\n },\n chip: {\n color: '#FFFFFF',\n cursor: 'pointer',\n fontSize: 12,\n fontWeight: 600,\n height: '21px',\n lineHeight: '30px',\n '& .MuiChip-label': {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n },\n title: {\n color: '#FFFFFF',\n fontWeight: 600,\n fontSize: ({ small }) => small ? 18 : 20,\n lineHeight: '28px',\n textShadow: '0px 2px 13px rgba(0, 0, 0, 0.4)',\n },\n}));\n\nconst ActivityAd = ({\n content,\n small = false,\n vertical,\n}: ActivityAdProps) => {\n const { color, ctaCopy, label, title, url, images } = content;\n const image = small ? images.small : images.regular;\n const classes = useStyles({ image, small });\n const trackAdClicked = useAdClickedEvent(vertical, label, title);\n\n return (\n <ButtonBase\n className={classes.root}\n data-test-id=\"activity-ad\"\n href={url}\n ref={trackAdClicked}\n target=\"_blank\"\n >\n <Typography className={classes.ctaLink}>{ctaCopy}</Typography>\n <Grid container direction=\"column\" p={1} justifyContent=\"flex-end\" sx={{ height: '100%' }}>\n <Grid item>\n <Chip className={classes.chip} label={label} sx={{ backgroundColor: color }} />\n </Grid>\n <Grid item>\n <Typography className={classes.title}>{title}</Typography>\n </Grid>\n </Grid>\n </ButtonBase>\n );\n};\n\nexport default ActivityAd;\n","import React from 'react';\nimport useSegment from '../useSegment';\n\nexport const useAdClickedEvent = (vertical, label, title) => {\n const { trackLinkSegment } = useSegment();\n\n const ref = React.useCallback((element) => {\n if (element !== null) {\n trackLinkSegment(\n element,\n 'Ad Clicked',\n {\n vertical,\n adDestination: label,\n activityAdType: title,\n },\n );\n }\n }, []);\n\n return ref;\n};\n","import React from \"react\";\nimport {\n ActivityCategoryType,\n ActivityType,\n} from \"./TripObjectTypes\";\n\nexport type ActivityFilterContextType = {\n allowedCategories: ActivityCategoryType[],\n categories: ActivityCategoryType[],\n currentFilters: {\n categories: ActivityCategoryType[],\n withVotes: boolean,\n withoutVotes: boolean,\n },\n activitiesWithoutVotesCount: number,\n activitiesWithVotesCount: number,\n currentFiltersCount: number,\n};\n\nexport const ActivityFilterContext = React.createContext<ActivityFilterContextType>({\n allowedCategories: [],\n categories: [],\n currentFilters: { categories: [], withVotes: null, withoutVotes: null },\n currentFiltersCount: 0,\n activitiesWithoutVotesCount: 0,\n activitiesWithVotesCount: 0,\n});\n\ntype SortingType = {\n label: string,\n sortBy: string,\n};\n\nexport type ActivitySortingContextType = {\n currentSorting: string,\n currentSortingLabel: string,\n sortings?: SortingType[],\n};\n\nexport const ActivitySortingContext = React.createContext<ActivitySortingContextType>({\n currentSorting: '',\n currentSortingLabel: '',\n sortings: null,\n});\n","import React from 'react';\nimport clsx from 'clsx';\nimport Tooltip from './Tooltip';\nimport { AvatarGroup as MuiAvatarGroup } from '@mui/material';\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar from \"../avatars/Avatar\";\n\nexport type AvatarType = {\n displayName: string,\n avatarUrl: string,\n plusOneCount?: number,\n};\n\ntype OverflowItemType = {\n avatars: AvatarType[],\n};\n\ntype AvatarGroupType = {\n avatars: AvatarType[],\n disabled?: boolean,\n max?: number,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n overflowCount: {\n fontSize: 12,\n },\n overflowContainer: {\n color: theme.palette.general.primary,\n },\n root: {\n alignItems: \"center\",\n '& > div:not(:last-child)': {\n marginLeft: '-8px',\n },\n '& .MuiAvatar-root': {\n marginLeft: 0,\n },\n },\n avatar: {\n fontSize: 11,\n fontWeight: \"bold\",\n },\n overflowAvatar: {\n border: '1px solid #CACACA !important',\n background: theme.palette.background.default,\n boxSizing: 'border-box',\n },\n tooltip: {\n backgroundColor: '#272727',\n marginTop: [theme.spacing(1), '!important'],\n },\n tooltipArrow: {\n color: '#272727',\n },\n}));\n\nconst OverflowItem = ({ avatars }: OverflowItemType) => {\n const classes = useStyles();\n\n return (\n avatars.length > 0 &&\n <Tooltip\n key='overflow'\n arrow\n enterTouchDelay={0}\n classes={{\n tooltip: classes.tooltip,\n arrow: classes.tooltipArrow,\n }}\n title={\n <span>\n {avatars.map(value => <p key={value.avatarUrl}>{value.displayName}</p>)}\n </span>\n }\n >\n <div>\n <Avatar\n className={clsx(classes.overflowAvatar, classes.avatar)}\n data-test-id='overflow-avatar'\n size=\"sm\"\n >\n <span className={classes.overflowContainer}>\n {`+${avatars.length}`}\n </span>\n </Avatar>\n </div>\n </Tooltip>\n );\n};\n\nconst AvatarGroup = ({ avatars, max, disabled }: AvatarGroupType) => {\n const classes = useStyles();\n const maxAvatars = Array.from(avatars).splice(0, max);\n const lastAvatars = Array.from(avatars).splice(max);\n\n return (\n <>\n <MuiAvatarGroup\n max={20}\n className={classes.root}\n classes={{\n avatar: classes.avatar,\n }}\n >\n {maxAvatars.map(({ displayName, avatarUrl, plusOneCount }) => (\n <Tooltip\n key={avatarUrl}\n arrow\n data-test-id=\"avatar-display-name\"\n enterTouchDelay={0}\n title={displayName}\n classes={{\n tooltip: classes.tooltip,\n arrow: classes.tooltipArrow,\n }}\n >\n <div>\n <Avatar\n data-test-id=\"travelers-votes-avatar\"\n disabled={disabled}\n key={avatarUrl}\n size=\"sm\"\n src={avatarUrl}\n plusOnes={plusOneCount}\n />\n </div>\n </Tooltip>\n ))}\n <OverflowItem avatars={lastAvatars}/>\n </MuiAvatarGroup>\n </>\n );\n};\n\nexport default AvatarGroup;\n","import React from \"react\";\nimport {\n Box,\n Menu,\n} from \"@mui/material\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport HoverBorderIconButton from \"../buttons/HoverBorderIconButton\";\n\ntype BaseActionsMenuProps = {\n children: React.ReactNode,\n dialogs?: React.ReactNode,\n testId?: string,\n className?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(-0.625),\n marginBottom: theme.spacing(-0.625),\n },\n icon: {\n color: '#334351',\n },\n}));\n\nconst BaseActionsMenu : React.FC<BaseActionsMenuProps> = ({\n children,\n dialogs,\n testId,\n className,\n}) => {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const handleCloseMenu = () => setAnchorEl(null);\n\n return (\n <Box className={clsx(classes.root, className)} data-test-id={testId}>\n <HoverBorderIconButton\n onClick={(event) => setAnchorEl(event.target)}\n data-test-id='actionButton'\n >\n <MoreHorizIcon fontSize=\"large\" className={classes.icon}/>\n </HoverBorderIconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseMenu}\n autoFocus={false}\n >\n {children}\n </Menu>\n {dialogs}\n </Box>\n );\n};\n\nexport default BaseActionsMenu;\n","import React from \"react\";\nimport { MenuItem } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport { GlobalContext } from \"../Document\";\n\ntype BookingActionsMenuItemsProps = {\n displayMarkAsBooked?: boolean,\n newBookingPath?: string,\n updateBookingPath?: string,\n onMarkAsBookedClick?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n color: '#334351',\n height: \"20px\",\n width: \"20px\",\n marginRight: \"5px\",\n },\n}));\n\nconst BookingActionsMenuItems : React.FC<BookingActionsMenuItemsProps> = ({\n displayMarkAsBooked = false,\n newBookingPath = '',\n updateBookingPath = '',\n onMarkAsBookedClick = () => {},\n}) => {\n const classes = useStyles();\n\n const goToStayBookingPath = () => {\n onMarkAsBookedClick();\n window.location.href = newBookingPath;\n };\n\n const goToEditStayBookingPath = () => {\n window.location.href = updateBookingPath;\n };\n\n return (\n <>\n {displayMarkAsBooked && (\n <MenuItem data-test-id={`book-stay-button`} onClick={goToStayBookingPath} dense>\n <CheckCircleIcon fontSize=\"small\" sx={{marginRight: '5px'}}/>\n Mark as booked\n </MenuItem>\n )}\n {!displayMarkAsBooked && updateBookingPath && (\n <MenuItem data-test-id=\"update-stay-booking\" onClick={goToEditStayBookingPath} dense>\n <img src=\"/assets/edit_calendar.svg\" className={classes.icon} />\n Update booking\n </MenuItem>\n )}\n </>\n );\n};\n\nexport default BookingActionsMenuItems;\n","import React from \"react\";\nimport {\n Breadcrumbs as MuiBreadcrumbs,\n BreadcrumbsProps as MuiBreadcrumbsProps,\n Link,\n Typography,\n} from '@mui/material';\nimport { makeStyles } from \"@mui/styles\";\n\ntype Link = {\n label: string,\n href: string,\n};\n\nexport type BreadcrumbsProps = {\n active: string,\n links: Link[],\n} & MuiBreadcrumbsProps;\n\nconst useStyles = makeStyles((theme) => ({\n breadcrumbBox: {\n '& .MuiBreadcrumbs-ol': {\n flexWrap: 'nowrap',\n },\n '& .MuiBreadcrumbs-li:nth-child(3) ': {\n minWidth: theme.spacing(8),\n },\n '& .MuiBreadcrumbs-li ': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n boxOrient: 'vertical',\n lineClamp: 1,\n },\n },\n}));\n\nconst Breadcrumbs = ({\n active,\n links,\n ...breadcrumbsProps\n}: BreadcrumbsProps) => {\n const classes = useStyles();\n\n return (\n <div role=\"presentation\">\n <MuiBreadcrumbs aria-label=\"breadcrumb\" {...breadcrumbsProps} className={classes.breadcrumbBox}>\n {links.map((link, index) => (\n <Link\n key={`breadcrumb-link-${index}`}\n underline=\"hover\"\n color=\"inherit\"\n href={link.href}\n data-test-id={`breadcrumb-link-${index}`}\n >\n {link.label}\n </Link>\n ))}\n <Typography color=\"text.primary\" data-test-id=\"active\">\n {active}\n </Typography>\n </MuiBreadcrumbs>\n </div>\n );\n};\n\nexport default Breadcrumbs;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport CardGroupCarouselContext from \"./CardGroupCarousel/Context\";\n\nexport type Item = {\n card: any,\n renderCardFunc: (card) => React.ReactNode,\n};\n\nexport type CardGroupCarouselProps = {\n items: Item[],\n fullWidth?: boolean,\n};\n\ntype StyleProps = {\n cardsScrollContainerWidth: number,\n cardWidth: number,\n fullWidth: boolean,\n};\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n cardsContainerOuter: {\n position: \"relative\",\n overflow: \"hidden\",\n overflowX: \"scroll\",\n msOverflowStyle: \"none\",\n '&::-webkit-scrollbar': {\n width: [[0, '!important']],\n display: 'none',\n },\n scrollbarWidth: \"none\",\n scrollBehavior: \"smooth\",\n },\n cardsContainerInner: {\n position: \"relative\",\n width: ({ cardsScrollContainerWidth, fullWidth }) => fullWidth ? '100%' : cardsScrollContainerWidth,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n card: {\n float: \"left\",\n width: ({ cardWidth, fullWidth }) => fullWidth ? '100%' : cardWidth,\n \"&:last-child\": {\n marginRight: 0,\n },\n },\n cardSafeArea: {\n marginLeft: theme.spacing(2.5),\n marginRight: theme.spacing(2.5),\n marginTop: theme.spacing(3.75),\n marginBottom: theme.spacing(3.75),\n },\n}));\n\nconst CardGroupCarousel = ({\n items,\n fullWidth = false,\n}: CardGroupCarouselProps) => {\n const { currentStep, setCurrentStep, setMaxStep } = useContext(CardGroupCarouselContext);\n const cardsContainerWrapperEl = React.useRef<HTMLDivElement>();\n\n const [width, setWidth] = React.useState<number>(0);\n\n const minCardWidth = 320;\n const numCardsVisible = Math.floor(width / minCardWidth) || 1;\n const cardWidth = width / numCardsVisible;\n const totalCardsCount = items.length;\n\n setMaxStep(totalCardsCount - numCardsVisible);\n\n const classes = useStyles({\n cardWidth,\n cardsScrollContainerWidth: cardWidth * totalCardsCount,\n fullWidth: fullWidth,\n });\n\n if (cardsContainerWrapperEl && cardsContainerWrapperEl.current) {\n cardsContainerWrapperEl.current.scrollLeft = currentStep * (cardWidth);\n };\n\n const handleTouchStart = (event) => {\n const newIndex = Math.round(cardsContainerWrapperEl.current.scrollLeft / cardWidth);\n setCurrentStep(newIndex);\n cardsContainerWrapperEl.current.scrollLeft = currentStep * (cardWidth);\n };\n\n const handleTouchEnd = (event) => {\n const newIndex = Math.round(cardsContainerWrapperEl.current.scrollLeft / cardWidth);\n setCurrentStep(newIndex);\n };\n\n useEffect(() => {\n const refreshWindowDimensions = () => {\n if (cardsContainerWrapperEl.current) {\n setWidth(cardsContainerWrapperEl.current.offsetWidth);\n };\n };\n\n refreshWindowDimensions();\n window.addEventListener('resize', refreshWindowDimensions);\n return () => window.removeEventListener('resize', refreshWindowDimensions);\n });\n\n return (\n <Box className={classes.cardsContainerOuter} ref={cardsContainerWrapperEl}>\n <Box\n className={classes.cardsContainerInner}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n >\n {items.map((item, index) => (\n <Box\n className={classes.card}\n key={`carousel-item-${index}`}\n >\n <div className={classes.cardSafeArea}>\n {item.renderCardFunc(item.card)}\n </div>\n </Box>\n ))}\n </Box>\n </Box>\n );\n};\n\nexport default CardGroupCarousel;\n","import React, { useContext } from \"react\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport FlatButton from \"../../buttons/FlatButton\";\nimport CardGroupCarouselContext from '../CardGroupCarousel/Context';\n\nenum Direction {\n Previous = 'previous',\n Next = 'next',\n}\n\ntype CarouselStepButtonProps = {\n direction: Direction,\n dataTestId: string,\n};\n\nconst CarouselStepButton = ({\n direction,\n dataTestId,\n}: CarouselStepButtonProps) => {\n const { currentStep, setCurrentStep, maxStep } = useContext(CardGroupCarouselContext);\n\n const isPrevious = direction === Direction.Previous;\n const icon = isPrevious ? ChevronLeftIcon : ChevronRightIcon;\n const disabled = (isPrevious && currentStep === 0) || (!isPrevious && currentStep === maxStep) || (!isPrevious && maxStep === -1);\n const nextStep = isPrevious ? -1 : 1;\n\n const onStep = () => {\n let newIndex = currentStep + nextStep;\n if (newIndex > maxStep) newIndex = maxStep;\n if (newIndex < 0) newIndex = 0;\n\n setCurrentStep(newIndex);\n };\n\n return (\n <FlatButton\n onClick={onStep}\n disabled={disabled}\n data-test-id={dataTestId}\n >\n {React.createElement(icon)}\n </FlatButton>\n );\n};\n\nexport const PreviousStepButton = () => <CarouselStepButton direction={Direction.Previous} dataTestId=\"previous-step-button\" />;\nexport const NextStepButton = () => <CarouselStepButton direction={Direction.Next} dataTestId=\"next-step-button\" />;\n\nexport default CarouselStepButton;\n","import React from \"react\";\n\ntype CardGroupCarouselContextType = {\n currentStep?: number,\n maxStep?: number,\n onStep?: (step: number) => void,\n setCurrentStep?: (value: number) => void,\n setMaxStep?: (value: number) => void,\n};\n\nconst CardGroupCarouselContext = React.createContext<CardGroupCarouselContextType>({\n currentStep: 0,\n maxStep: 0,\n setCurrentStep: null,\n setMaxStep: null,\n});\n\nexport default CardGroupCarouselContext;\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from '@mui/styles';\nimport { Box, Grid, Typography } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport TextButton from \"../buttons/TextButton\";\n\ntype StrategyType = 'hide' | 'remove';\ntype CollapsibleBoxProps = {\n centeredHeader?: boolean,\n children?: React.ReactNode,\n className?: string,\n header: React.ReactNode,\n hideArrows?: boolean,\n note: React.ReactNode,\n startCollapsed?: boolean,\n strategy?: StrategyType,\n titleWhileCollapsed?: React.ReactNode,\n titleWhileExpanded?: React.ReactNode,\n};\n\nconst useStyles = makeStyles((theme) => ({\n centeredHeader: {\n textAlign: 'center',\n },\n header: {\n fontSize: 20,\n fontWeight: 600,\n marginBottom: theme.spacing(1.25),\n },\n note: {\n fontSize: 16,\n },\n arrowIcon: {\n color: '#272727',\n },\n expansionToggleButton: {\n padding: 0,\n '&:focus': {\n border: [['none'], '!important'],\n boxShadow: [['none'], '!important'],\n },\n },\n expandedContent: {\n marginTop: theme.spacing(2),\n },\n hiddenContent: {\n display: 'none',\n },\n}));\n\nconst CollapsibleBox = ({\n centeredHeader,\n children,\n className,\n header,\n hideArrows,\n note,\n startCollapsed,\n strategy = 'hide',\n titleWhileCollapsed,\n titleWhileExpanded,\n}: CollapsibleBoxProps) => {\n const classes = useStyles();\n const [expanded, setExpanded] = useState(!startCollapsed);\n const toggleExpansion = () => setExpanded(!expanded);\n\n const TitleLink = hideArrows ? TextButton : IconButton;\n\n return (\n <Grid container\n className={className}\n direction=\"column\"\n justifyContent=\"space-between\"\n >\n <Grid container item justifyContent=\"space-between\">\n <Grid container\n className={clsx(\n {\n [classes.centeredHeader]: centeredHeader,\n },\n )}\n direction=\"row\"\n alignItems=\"flex-start\"\n justifyContent=\"space-between\"\n >\n {header && (\n <Grid item xs={10}>\n <Typography className={classes.header} onClick={toggleExpansion}>\n {header}\n </Typography>\n </Grid>\n )}\n <Grid item xs={header ? 1 : 12}>\n <TitleLink\n data-test-id=\"toggleCollapsibleButton\"\n className={classes.expansionToggleButton}\n disableRipple={hideArrows}\n onClick={toggleExpansion}\n size=\"medium\"\n >\n {expanded ? titleWhileExpanded : titleWhileCollapsed}\n {!hideArrows && expanded && <KeyboardArrowUpIcon fontSize=\"large\" className={classes.arrowIcon} />}\n {!hideArrows && !expanded && <KeyboardArrowDownIcon fontSize=\"large\" className={classes.arrowIcon} />}\n </TitleLink>\n </Grid>\n </Grid>\n </Grid>\n {note && (\n <Grid item>\n <Typography className={classes.note}>\n {note}\n </Typography>\n </Grid>\n )}\n {(expanded || strategy === 'hide') && (\n <Grid item className={clsx(\n classes.expandedContent,\n {\n [classes.hiddenContent]: !expanded,\n },\n )}>\n {children}\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default CollapsibleBox;\n","import React from \"react\";\nimport pluralize from \"pluralize\";\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport Alert from \"@mui/material/Alert\";\nimport { makeStyles } from '@mui/styles';\nimport CommentBox from \"./Comments/CommentBox\";\nimport { SyncComment as Comment } from \"./TripObjectTypes\";\nimport CommentForm from \"./Comments/CommentForm\";\nimport Divider from \"./Divider\";\nimport { Commentable } from '../pages/comments/IndexPage';\n\ntype CommentsProps = {\n commentable: Commentable,\n comments: Comment[],\n commentCreationError?: string,\n isUserLoggedIn: boolean,\n headerText: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n paddingTop: theme.spacing(2),\n },\n headerCommentsCount: {\n fontSize: '1em',\n },\n instruction: {\n fontSize: '1em',\n },\n commentsList: {\n listStyleType: \"none\",\n padding: 0,\n '& li': {\n marginTop: theme.spacing(3),\n },\n '&:last-child': { paddingBottom: theme.spacing(1.25) },\n '&:empty': { paddingBottom: 0 },\n },\n}));\n\nconst Comments = ({\n commentable,\n comments,\n commentCreationError,\n isUserLoggedIn,\n headerText,\n}: CommentsProps) => {\n const classes = useStyles();\n\n return <>\n <Grid container className={classes.header} justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography variant='h2'>Comments</Typography>\n </Grid>\n <Grid item>\n <Typography className={classes.headerCommentsCount}>\n {comments.length} {pluralize('Comment', comments.length)}\n </Typography>\n </Grid>\n </Grid>\n <Typography className={classes.instruction}>{headerText}</Typography>\n {commentCreationError && (<Alert severity=\"error\">{commentCreationError}</Alert>)}\n <Box sx={{ my: 3 }}>\n <a id=\"new_comment_form\" />\n <CommentForm\n commentsPath={commentable.commentsPath}\n isUserLoggedIn={isUserLoggedIn}\n />\n </Box>\n <Divider />\n <ul className={classes.commentsList} data-test-id=\"comment-list\">\n {comments.map((comment) => (\n <CommentBox key={comment.id} comment={comment} />\n ))}\n </ul>\n </>;\n}\n\nexport default Comments;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar from \"../../avatars/Avatar\";\n\ntype AvatarGridItemProps = {\n avatarUrl: string,\n byCurrentUser?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: theme.spacing(5),\n position: \"relative\",\n paddingRight: theme.spacing(1),\n },\n currentUser: {\n paddingRight: 0,\n paddingLeft: theme.spacing(1),\n },\n avatar: {\n position: 'absolute',\n bottom: 0,\n height: theme.spacing(4),\n width: theme.spacing(4),\n },\n}));\n\nconst AvatarGridItem = ({ avatarUrl, byCurrentUser }: AvatarGridItemProps) => {\n const classes = useStyles();\n\n return (\n <Grid\n item\n className={clsx(\n classes.root,\n { [classes.currentUser]: byCurrentUser },\n )}\n >\n <Avatar src={avatarUrl} className={classes.avatar} />\n </Grid>\n );\n};\n\nexport default AvatarGridItem;\n","import React from \"react\";\nimport {\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { SyncComment } from \"../TripObjectTypes\";\nimport ContainerLink from \"../ContainerLink\";\nimport CardButton from \"../../buttons/CardButton\";\nimport Linkify from \"../../shared/Linkify\";\n\ntype CommentBodyProps = {\n comment: SyncComment,\n};\n\nconst useStyles = makeStyles((theme) => ({\n commentWrapper: {\n padding: theme.spacing(2),\n width: '100%',\n },\n commentBody: {\n fontStyle: 'italic',\n fontSize: '14px',\n lineHeight: 1.43,\n color: '#212121',\n },\n containerLink: {\n marginTop: theme.spacing(1),\n width: '100%',\n },\n editedText: {\n fontSize: '12px',\n color: 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\nconst CommentBody = ({\n comment,\n}: CommentBodyProps) => {\n const classes = useStyles();\n\n return <>\n <ContainerLink\n href={comment.commentsUrl}\n showLink\n disableTouchRipple\n className={classes.containerLink}\n >\n <CardButton className={classes.commentWrapper} disabled={false}>\n <Typography className={classes.commentBody}>\n <Linkify>{comment.body}</Linkify>\n {comment.editedAt && (\n <span className={classes.editedText}> (Edited)</span>\n )}\n </Typography>\n </CardButton>\n </ContainerLink>\n </>;\n};\n\nexport default CommentBody;\n","import React, { useCallback, useContext, useReducer } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport reactStringReplace from \"react-string-replace\";\nimport { makeStyles } from \"@mui/styles\";\nimport AvatarGridItem from \"./AvatarGridItem\";\nimport CommentEditForm from \"./CommentEditForm\";\nimport TimeStamp from \"../TimeStamp\";\nimport ActionsMenu from \"../ActionsMenu\";\nimport Linkify from \"../Linkify\";\nimport { SyncComment } from \"../TripObjectTypes\";\nimport Reactions, { ReactionCounts } from \"../Reactions/Reactions\";\nimport { TripSiteContext } from \"../../Document\";\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { getOperationName } from \"../../../graphql/utilities\";\nimport {\n GET_REACTIONS,\n ADD_REACTION,\n REMOVE_REACTION,\n} from \"../../../graphql/queries/reactions\";\nimport { GET_USER_DISPLAY_NAME } from \"../../../graphql/queries/users\";\n\ntype CommentBoxProps = {\n comment: SyncComment,\n};\n\nconst useStyles = makeStyles((theme) => ({\n commentAuthor: {\n color: '#3953e2',\n fontSize: 14,\n fontWeight: 'bold',\n marginBottom: parseInt(theme.spacing(1)) / 2,\n paddingRight: theme.spacing(1),\n },\n commentAuthorWhenCurrentUser: {\n color: '#272727',\n },\n commentBody: {\n backgroundColor: '#fbfbfb ',\n boxShadow: '0 0 2px 0 rgba(36, 48, 96, 0.3)',\n borderRadius: 5,\n lineHeight: 1.43,\n padding: theme.spacing(1),\n position: 'relative',\n width: `calc(100% - 54px)`,\n marginLeft: '14px',\n },\n commentBodyByCurrentUser: {\n background: '#F3FAFF',\n },\n commentEditFormWrapper: {\n width: `calc(100% - ${theme.spacing(5)})`,\n },\n commentTimestamp: {\n color: \"#697379\",\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 1.29,\n marginTop: theme.spacing(0.3),\n marginRight: theme.spacing(1),\n textAlign: 'center',\n },\n editedText: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '12px',\n marginLeft: theme.spacing(1),\n },\n textBody: {\n whiteSpace: 'pre-wrap',\n },\n}));\n\nconst CommentBox = ({ comment }: CommentBoxProps) => {\n const classes = useStyles();\n const initialState = {\n commentBody: comment.body,\n editionState: false,\n wasEdited: !!comment.editedAt,\n };\n\n const { tripGid, currentUserGid } = useContext(TripSiteContext);\n\n const commentReducer = (state, action) => {\n switch (action.type) {\n case 'changeComment':\n return {\n commentBody: action.commentBody,\n editionState: false,\n wasEdited: true,\n };\n case 'hideEditForm':\n return Object.assign({}, state, { editionState: false });\n case 'showEditForm':\n return Object.assign({}, state, { editionState: true });\n default:\n throw new Error();\n }\n }\n const [state, dispatch] = useReducer(commentReducer, initialState);\n const commentBody = reactStringReplace(state.commentBody, /(\\n)/g, (match, i) => <br key={i}/>).map((each, index) => (\n <Linkify key={`comment-link-${comment.id}-${index}`}>{each as string}</Linkify>\n ));\n\n const { loading, data } = useQuery(GET_REACTIONS, {\n variables: { reactableId: comment.gid },\n }) || {};\n\n const { data: userData } = useQuery(GET_USER_DISPLAY_NAME, {\n variables: { id: currentUserGid },\n }) || {};\n\n const refetchQueries = [getOperationName(GET_REACTIONS)];\n const [addReaction, { loading: addReactionLoading }] = useMutation(ADD_REACTION, { refetchQueries });\n const [removeReaction, { loading: removeReactionLoading }] = useMutation(REMOVE_REACTION, { refetchQueries });\n\n const onAddReaction = useCallback(({emoji, name}) => {\n addReaction({\n variables: {\n emoji,\n humanReadableName: name,\n reactableId: comment.gid,\n tripId: tripGid,\n },\n })\n }, [comment, tripGid]);\n const onRemoveReaction = useCallback(({emoji}) => {\n removeReaction({\n variables: {\n emoji,\n reactableId: comment.gid,\n tripId: tripGid,\n },\n })\n }, [comment, tripGid]);\n\n const reactions = data?.node?.reactions ?? [];\n const reactionCounts : ReactionCounts = reactions.reduce((acc, reaction) => ({\n ...acc,\n [reaction.emoji]: {\n ...reaction,\n users : reaction.users.map(user => user.displayName),\n name : reaction.humanReadableName,\n },\n }), {});\n\n const currentUserDisplayName = userData?.node?.displayName;\n\n return <li\n key={comment.id}\n data-test-id=\"comment\"\n data-test-state={\n comment.isAuthoredByCurrentUser\n ? \"comment-by-current-user\"\n : \"comment-by-other-user\"\n }\n >\n <a id={`comment_${comment.id}`}/>\n <Grid container>\n {!comment.isAuthoredByCurrentUser && <AvatarGridItem avatarUrl={comment.authorAvatarUrl} />}\n {!state.editionState && (\n <Grid\n item\n container\n direction=\"column\"\n className={clsx(\n classes.commentBody,\n { [classes.commentBodyByCurrentUser]: comment.isAuthoredByCurrentUser },\n )}\n >\n <Grid item container justifyContent=\"space-between\">\n <Grid item>\n <Typography className={clsx(\n classes.commentAuthor,\n { [classes.commentAuthorWhenCurrentUser]: comment.isAuthoredByCurrentUser },\n )}>\n {comment.authorName}\n </Typography>\n </Grid>\n <Grid item>\n <Grid container>\n <Grid item>\n <TimeStamp className={classes.commentTimestamp} date={comment.timestamp} />\n </Grid>\n <Grid item>\n {comment.isAuthoredByCurrentUser && (\n <ActionsMenu\n deletePath={comment.commentPath}\n onEditClick={() => dispatch({ type: 'showEditForm' })}\n resourceName=\"comment\"\n />\n )}\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Grid item>\n <span className={classes.textBody} data-test-id=\"comment-body\">\n {commentBody}\n </span>\n {state.wasEdited && (\n <span className={classes.editedText}> (Edited)</span>\n )}\n </Grid>\n {!loading && (\n <Reactions\n currentUserDisplayName={currentUserDisplayName}\n initialReactions={reactionCounts}\n onAddReaction={onAddReaction}\n onRemoveReaction={onRemoveReaction}\n disabled={addReactionLoading || removeReactionLoading}\n reactableId={comment.id}\n reactableType='Comment'\n isSelfReaction={comment.authorName === currentUserDisplayName}\n />\n )}\n </Grid>\n )}\n {state.editionState && (\n <Grid item className={classes.commentEditFormWrapper}>\n <CommentEditForm\n commentBody={state.commentBody}\n commentPath={comment.commentPath}\n onCancelClick={() => dispatch({ type: 'hideEditForm' })}\n onCommentChange={(commentBody) => dispatch({ type: 'changeComment', commentBody })}\n />\n </Grid>\n )}\n {comment.isAuthoredByCurrentUser && <AvatarGridItem byCurrentUser avatarUrl={comment.authorAvatarUrl} />}\n </Grid>\n </li>\n};\n\nexport default CommentBox;\n","import React, { useContext, useState } from \"react\";\nimport axios from 'axios';\nimport {\n Grid,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../../buttons/Button\";\nimport { FormsContext } from \"../../Document\";\nimport InputWithCharacterCounter from \"../InputWithCharacterCounter\";\n\ntype CommentEditFormProps = {\n commentBody: string,\n commentPath: string,\n onCancelClick: (value: any) => void,\n onCommentChange: (value: any) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n formButton: {\n height: '36px !important',\n },\n textField: {\n '& textarea': {\n lineHeight: '1.4em',\n },\n },\n}));\n\nconst CommentEditForm = ({\n commentBody,\n commentPath,\n onCancelClick,\n onCommentChange,\n}: CommentEditFormProps) => {\n const classes = useStyles();\n const [body, setBody] = useState(commentBody);\n const { csrfToken } = useContext(FormsContext);\n\n const handleSave = (event) => {\n axios.patch(\n commentPath,\n {\n authenticity_token: csrfToken,\n comment: { body: body },\n },\n ).then((response) => {\n onCommentChange(response.data.comment.body);\n });\n };\n\n return <>\n <Grid container direction=\"column\" spacing={1}>\n <Grid item>\n <InputWithCharacterCounter\n characterLimit={5000}\n className={classes.textField}\n id=\"comment_edit_form_body\"\n fullWidth\n multiline\n defaultValue={body}\n onChange={(event) => setBody(event.target.value)}\n withBorder\n />\n </Grid>\n <Grid item>\n <Grid container spacing={1} justifyContent=\"center\">\n <Grid item>\n <Button\n className={classes.formButton}\n variant=\"secondary\"\n onClick={onCancelClick}\n >\n Cancel\n </Button>\n </Grid>\n <Grid item>\n <Button\n className={classes.formButton}\n disabled={body === commentBody}\n onClick={handleSave}\n >\n Save\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </>;\n};\n\nexport default CommentEditForm;\n","import React, { useContext, useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport SendIcon from \"@mui/icons-material/Send\";\nimport { makeStyles } from \"@mui/styles\";\nimport RailsForm, { FormContext } from \"../RailsForm\";\nimport Button from \"../../buttons/TextButton\";\nimport { FormsContext } from \"../../Document\";\nimport InputWithCharacterCounter from \"../InputWithCharacterCounter\";\n\nexport type PageType = 'Vertical' | 'Permapage' | 'ActivityGroupPermapage';\n\ntype CommentFormProps = {\n commentsPath: string,\n isUserLoggedIn: boolean,\n page?: PageType,\n};\n\nconst useStyles: () => any = makeStyles((theme): {}=> ({\n commentFormBox: {\n border: '1px solid #69737a',\n borderRadius: 6,\n padding: theme.spacing(1),\n },\n commentFormBoxWithTextInputted: {\n borderColor: '#3953e2',\n boxShadow: '0px 0px 0px 1px #3953e2',\n },\n commentSendButton: {\n float: 'right',\n padding: 0,\n minWidth: 'auto',\n width: theme.spacing(2),\n },\n inputHover: {\n '& textarea': {\n cursor: [['pointer'], '!important'],\n },\n },\n}));\n\nconst CommentForm = ({\n commentsPath,\n isUserLoggedIn,\n page = 'Permapage',\n}: CommentFormProps) => {\n const classes = useStyles();\n const { triggerLogIn } = useContext(FormsContext);\n const placeholder = isUserLoggedIn ? 'Reply to the group...' : 'Log in to add a comment'\n const [commentFocus, setCommentFocus] = useState(false)\n\n const logInUser = () => {\n if (!isUserLoggedIn) {\n triggerLogIn()\n }\n };\n\n return <>\n <RailsForm\n action={commentsPath}\n data-test-id=\"comment-form\"\n >\n <FormContext.Consumer>\n {({ disabled }) => (\n <Grid container direction=\"row\"\n className={clsx(\n classes.commentFormBox,\n { [classes.commentFormBoxWithTextInputted]: !disabled || commentFocus },\n )}\n >\n <Grid item xs={11.5}>\n <input\n type=\"hidden\"\n value={page}\n name='page'\n />\n <InputWithCharacterCounter\n fullWidth\n characterLimit={5000}\n onClick={() => logInUser()}\n multiline\n className={clsx(classes.commentTextField,\n { [classes.inputHover]: !isUserLoggedIn },\n )}\n name=\"comment[body]\"\n id=\"comment_form_body\"\n placeholder={placeholder}\n onTextFieldFocus={() => {setCommentFocus(true)}}\n onTextFieldBlur={() => {setCommentFocus(false)}}\n />\n </Grid>\n <Grid item xs={0.5}>\n <Button\n type=\"submit\"\n className={classes.commentSendButton}\n data-test-id=\"comment-send-button\"\n disabled={disabled}\n >\n <SendIcon />\n </Button>\n </Grid>\n </Grid>\n )}\n </FormContext.Consumer>\n </RailsForm>\n </>;\n};\n\nexport default CommentForm;\n","import React from 'react';\nimport Button from \"../buttons/Button\";\nimport pluralize from \"pluralize\";\nimport { makeStyles } from '@mui/styles';\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\nimport CommentIcon from '@mui/icons-material/Comment';\n\ntype CommentsButtonProps = {\n commentsCount: number,\n commentsPath: string,\n tripId: string,\n vertical: string,\n};\n\nconst useCommentsButtonStyles = makeStyles((theme) => ({\n root: {\n color: '#061722 !important',\n borderColor: '#555e64 !important',\n whiteSpace: 'nowrap',\n fontSize: 14,\n boxShadow: 'none',\n '&:hover': {\n backgroundColor: '#353535',\n color: 'white',\n },\n },\n}));\n\nconst CommentsButton = ({\n commentsPath,\n commentsCount,\n tripId,\n vertical,\n}: CommentsButtonProps) => {\n const classes = useCommentsButtonStyles();\n const trackClickedComments = () => {\n trackAnalyticsEvent('Comments Viewed', {\n property: {\n tripObjectType: vertical,\n tripObjectId: tripId,\n },\n });\n };\n\n return (\n <Button\n href={commentsPath}\n onClick={() => trackClickedComments()}\n className={classes.root}\n data-test-id=\"tripCommentsButton\"\n variant=\"secondary\"\n >\n {commentsCount === 0 && \"Comments (0)\"}\n {commentsCount > 0 && `Comments (${commentsCount})`}\n </Button>\n );\n}\n\nexport default CommentsButton;\n","import React from \"react\";\nimport { default as ReactConfetti, ConfettiProps } from 'react-dom-confetti';\nimport { Box } from \"@mui/material\";\n\nexport type { ConfettiProps };\n\nconst styles = {\n wrapper: {\n position: \"fixed\",\n right: \"50%\",\n left: \"50%\",\n top: \"20%\",\n zIndex: 2147483647,\n },\n}\n\nconst Confetti : React.FC<ConfettiProps> = (props) => {\n\n return (\n <Box sx={styles.wrapper} >\n <ReactConfetti {...props} />\n </Box>\n )\n};\n\nexport const defaultColors = [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"];\nexport const defaultConfig = {\n angle: 90,\n colors: defaultColors,\n spread: 360,\n startVelocity: 40,\n elementCount: 70,\n width: \"10px\",\n height: \"10px\",\n duration: 2000,\n stagger: 3,\n dragFriction: 0.12,\n};\n\nConfetti.defaultProps = {\n config: defaultConfig,\n};\n\nexport default Confetti;\n\n","import React, { useContext, useEffect, useState } from \"react\";\nimport {\n Grid,\n Switch,\n Typography,\n} from \"@mui/material\"\nimport { GlobalContext } from \"../Document\";\nimport Button, { ButtonVariant } from \"../buttons/Button\";\nimport Dialog, { DialogProps } from \"./Dialog\";\nimport RailsForm from \"./RailsForm\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nexport type ConfirmationDialogProps = DialogProps & {\n actionMethod?: string,\n actionPath?: string,\n actionText?: string | React.ReactNode,\n additionalAction?: React.ReactNode,\n buttonVariant?: ButtonVariant,\n confirmationToggleText?: string | React.ReactNode,\n disableWith?: React.ReactNode,\n disabled?: boolean,\n fullWidthButtons?: boolean,\n hideCancelButton?: boolean,\n snackbarMessage?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n confirmationToggleText: {\n fontWeight: 500,\n },\n}));\n\nconst ConfirmationDialog = ({\n actionMethod,\n actionPath,\n actionText,\n additionalAction,\n buttonVariant,\n confirmationToggleText,\n disableWith,\n disabled,\n fullWidthButtons,\n hideCancelButton,\n isOpen,\n message,\n onClose,\n onConfirm,\n snackbarMessage,\n title,\n}: ConfirmationDialogProps) => {\n const [confirmed, setConfirmed] = useState(false);\n const [confirmable, setConfirmable] = useState(confirmationToggleText ? false : true);\n const { setSnackbar } = useContext(GlobalContext);\n\n useEffect(() => {\n if(snackbarMessage) setSnackbar(snackbarMessage);\n },[snackbarMessage])\n\n const classes = useStyles();\n\n let variant = buttonVariant;\n variant ||= actionMethod === \"DELETE\" ? \"danger\" : \"primary\";\n\n const closeDialog = () => {\n if (onClose) {\n onClose();\n }\n\n setConfirmed(false);\n };\n\n const confirmAction = () => {\n onConfirm();\n setConfirmed(true);\n };\n\n const mustDisplayActionButton = () => !confirmed || (confirmed && !disableWith);\n const mustDisableActionButton = () => confirmed && disableWith;\n\n return (\n <>\n <Dialog\n actions={(\n <Grid\n container\n direction={fullWidthButtons ? \"column\" : \"row\"}\n justifyContent=\"flex-end\"\n spacing={2}\n >\n {confirmationToggleText && (\n <Grid item container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography className={classes.confirmationToggleText}>\n {confirmationToggleText}\n </Typography>\n </Grid>\n <Grid item>\n <Switch\n color=\"primary\"\n data-test-id=\"enableConfirmButton\"\n onChange={(event) => setConfirmable(event.target.checked)}\n />\n </Grid>\n </Grid>\n )}\n {mustDisplayActionButton() && (\n <>\n {actionPath && (\n <Grid item>\n <RailsForm\n action={actionPath}\n method={actionMethod}\n withChangeDetection={false}\n >\n <Button\n data-test-id=\"submitConfirmationButton\"\n disabled={!confirmable || disabled}\n fullWidth={fullWidthButtons}\n type=\"submit\"\n variant={variant}\n >\n {actionText}\n </Button>\n </RailsForm>\n </Grid>\n )}\n {onConfirm && (\n <Grid item>\n <Button\n data-test-id=\"confirmationButton\"\n disabled={!confirmable || disabled}\n fullWidth={fullWidthButtons}\n onClick={() => confirmAction()}\n variant={variant}\n >\n {actionText}\n </Button>\n </Grid>\n )}\n </>\n )}\n {mustDisableActionButton() && (\n <Grid item>\n {disableWith}\n </Grid>\n )}\n {!hideCancelButton && (\n <Grid item>\n <Button onClick={closeDialog} variant=\"tertiary\" fullWidth={fullWidthButtons}>\n Cancel\n </Button>\n </Grid>\n )}\n {additionalAction}\n </Grid>\n )}\n data-test-id=\"confirmationDialog\"\n isOpen={isOpen}\n message={message}\n onClose={closeDialog}\n title={title}\n />\n </>\n );\n};\n\nexport default ConfirmationDialog;\n","import React from \"react\";\nimport ButtonBase, { ButtonBaseProps } from \"@mui/material/ButtonBase\";\n\ntype ContainerLinkProps = {\n showLink: boolean,\n children: React.ReactNode,\n href?: string,\n} & ButtonBaseProps;\n\nconst ContainerLink = ({\n showLink,\n children,\n ...linkProps\n}: ContainerLinkProps) => {\n const RootComponent = showLink ? ButtonBase : React.Fragment;\n const props = showLink ? linkProps : {};\n\n return (\n <RootComponent {...props}>\n {children}\n </RootComponent>\n );\n}\n\nexport default ContainerLink;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Grid,\n TextFieldProps,\n Typography,\n Theme,\n} from \"@mui/material\";\nimport TextField from '@mui/material/TextField';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n DateRangePicker,\n MobileDateRangePicker,\n LocalizationProvider,\n} from \"@mui/x-date-pickers-pro\";\nimport { makeStyles } from \"@mui/styles\";\nimport useStateWithPromise from \"../../services/useStateWithPromise\";\nimport { Dayjs } from \"dayjs\";\nimport { isSafari, isDesktop } from \"react-device-detect\";\n\nexport type CustomDateRangePickerProps = TextFieldProps & {\n autoComplete?: string,\n defaultEndValue?: string,\n defaultStartValue?: string,\n disabled?: boolean,\n hasError?: boolean,\n helperText?: boolean,\n nameEnd?: string,\n nameStart?: string,\n endValue?: string,\n startValue?: string,\n onChange?: (value: any) => void,\n useMobilePicker?: boolean,\n allowedMinDate?: string,\n allowedMaxDate?: string,\n shouldDisableDateEnabled?: boolean,\n disablePast?: boolean,\n isStayBookingForm?: boolean,\n defaultStayBookingCheckInTimeValue?: string,\n defaultStayBookingCheckOutTimeValue?: string,\n};\n\ntype StyleProps = {\n isSafariDesktop: boolean;\n}\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n datesOuter: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n picker: {\n \"& .Mui-disabled\": {\n color: theme.palette.general.background.disabled,\n },\n },\n label: {\n fontWeight: 600,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n timeInput: {\n width: 191,\n height: 56,\n [theme.breakpoints.down('sm')]: {\n width: 131,\n },\n '& input': {\n // ensure placeholder text is visible on Safari desktop and that we don't break styles on iOS and other devices\n backgroundColor: ({ isSafariDesktop }) => isSafariDesktop ? theme.palette.background.default : null,\n },\n },\n}));\n\nconst CustomDateRangePicker = ({\n defaultEndValue,\n defaultStartValue,\n disabled,\n hasError,\n nameEnd,\n nameStart,\n startValue,\n endValue,\n onChange,\n useMobilePicker,\n allowedMaxDate,\n allowedMinDate,\n shouldDisableDateEnabled = false,\n disablePast = true,\n isStayBookingForm = false,\n defaultStayBookingCheckInTimeValue,\n defaultStayBookingCheckOutTimeValue,\n ...dateRangePickerBaseInputProps\n}: CustomDateRangePickerProps) => {\n const classes = useStyles({ isSafariDesktop: isSafari && isDesktop });\n let [dateRange, setDateRange] = useStateWithPromise([defaultStartValue || null, defaultEndValue || null]);\n\n const [checkInTime, setCheckInTime] = React.useState(defaultStayBookingCheckInTimeValue);\n const [checkOutTime, setCheckOutTime] = React.useState(defaultStayBookingCheckOutTimeValue);\n\n // This was added to make the DateRangePicker automatically close after selecting a date range.\n // https://github.com/mui-org/material-ui/issues/24828\n const [open, setOpen] = useState(false);\n const [isAccept, setIsAccept] = useState(false);\n const [isTextField, setIsTextField] = useState(false);\n\n if (startValue !== undefined || endValue !== undefined ) {\n dateRange = [startValue, endValue];\n }\n\n const Picker = useMobilePicker ? MobileDateRangePicker : DateRangePicker;\n\n const handleOnChange = (newRange) => {\n onChange && onChange(newRange)\n };\n\n const shouldDisableDate = (date: Dayjs) => {\n return shouldDisableDateEnabled ? (date.isBefore(allowedMinDate) || date.isAfter(allowedMaxDate)) : false;\n };\n\n const defaultDateRangeInputs = (startProps, endProps) => (\n <Grid container className={classes.datesOuter}>\n <TextField\n {...startProps}\n name={nameStart}\n error={hasError}\n data-test-id=\"start-date\"\n onFocus={() => setIsTextField(true)}\n onBlur={() => setIsTextField(false)}\n onClick={() => setOpen(true)}\n {...dateRangePickerBaseInputProps}\n />\n <Box sx={{ mx: 1 }}> </Box>\n <TextField\n {...endProps}\n error={hasError}\n name={nameEnd}\n data-test-id=\"end-date\"\n onFocus={() => setIsTextField(true)}\n onBlur={() => setIsTextField(false)}\n onClick={() => setOpen(true)}\n {...dateRangePickerBaseInputProps}\n />\n </Grid>\n )\n\n const stayBookingRenderInputs = (startProps, endProps) => (\n <Grid container spacing='2'>\n <Grid container className={classes.datesOuter}>\n <Grid item mr={2}>\n <Typography className={classes.label}>\n Check in date*\n </Typography>\n <TextField\n {...startProps}\n name={nameStart}\n error={hasError}\n data-test-id=\"start-date\"\n onFocus={() => setIsTextField(true)}\n onBlur={() => setIsTextField(false)}\n onClick={() => setOpen(true)}\n {...dateRangePickerBaseInputProps}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Time\n </Typography>\n <TextField\n id=\"check_in_time\"\n label=\"check in time\"\n type=\"time\"\n defaultValue={checkInTime}\n onChange={e => setCheckInTime(e.target.value)}\n name=\"stay_booking[check_in_time]\"\n InputLabelProps={{\n shrink: true,\n }}\n className={classes.timeInput}\n />\n </Grid>\n </Grid>\n <Grid container my={1} className={classes.datesOuter}>\n <Grid item mr={2}>\n <Typography className={classes.label}>\n Check out date*\n </Typography>\n <TextField\n {...endProps}\n error={hasError}\n name={nameEnd}\n data-test-id=\"end-date\"\n onFocus={() => setIsTextField(true)}\n onBlur={() => setIsTextField(false)}\n onClick={() => setOpen(true)}\n {...dateRangePickerBaseInputProps}\n />\n </Grid>\n <Grid item>\n <Typography className={classes.label}>\n Time\n </Typography>\n <TextField\n id=\"check_out_time\"\n label=\"check out time\"\n type=\"time\"\n defaultValue={checkOutTime}\n onChange={e => setCheckOutTime(e.target.value)}\n name=\"stay_booking[check_out_time]\"\n InputLabelProps={{\n shrink: true,\n }}\n className={classes.timeInput}\n />\n </Grid>\n </Grid>\n </Grid>\n )\n\n const renderInputs = isStayBookingForm ? stayBookingRenderInputs : defaultDateRangeInputs;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} localeText={{ start: 'Start date', end: 'End date' }}>\n <Picker\n className={classes.picker}\n data-test-id=\"customDatePicker\"\n inputFormat=\"MM/DD/YYYY\"\n disablePast={disablePast}\n shouldDisableDate={shouldDisableDate}\n showToolbar={false}\n open={open}\n onAccept={(dateRange) => {\n handleOnChange(dateRange);\n }}\n onClose={() => {\n setIsAccept(false);\n if (!isTextField) {\n setOpen(false);\n setIsTextField(false);\n }\n }}\n onOpen={() => {\n if (!isAccept) setOpen(true);\n }}\n onChange={(dateRange) => {\n setDateRange(dateRange).then(() => handleOnChange(dateRange))\n }}\n value={dateRange}\n disabled={disabled}\n renderInput={renderInputs}\n />\n </LocalizationProvider>\n );\n};\n\nCustomDateRangePicker.defaultProps = {\n defaultStartValue: null,\n defaultEndValue: null,\n};\n\nexport default CustomDateRangePicker;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport ArrowForwardIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport {\n Box,\n Divider,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ContainerLink from \"./ContainerLink\";\nimport DateOptionActions from \"./DateOption/DateOptionActions\";\nimport MissingVoteAlert from \"./MissingVoteAlert\";\nimport VotesBreakdown from \"./DateOption/VotesBreakdown\";\nimport ExcludesPlusOnesMessage from \"./ExcludesPlusOnesMessage\";\nimport CardButton from \"../buttons/CardButton\";\nimport GroupFavoriteChip from \"./DateOption/GroupFavoriteChip\";\nimport pluralize from 'pluralize';\nimport { usePhasingContext } from \"../../services/phasing\";\nimport { DateOptionType } from './DateOption/DateOptionTypes';\nimport CommentIcon from '@mui/icons-material/Comment';\nimport Button from \"../buttons/Chip\";\nimport titleize from \"titleize\";\nimport CommentsLink from \"../pages/trips/microsite/shared/CommentsLink\";\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n cardButton: {\n width: '100%',\n marginTop: theme.spacing(2),\n },\n cardLink: {\n display: 'flex',\n flexDirection: 'column',\n },\n currentUserVoteIcon: {\n paddingLeft: theme.spacing(5),\n paddingRight: theme.spacing(5),\n verticalAlign: 'middle',\n height: 40,\n [theme.breakpoints.down('sm')]: {\n height: 32,\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n },\n dateOption: {\n position: 'relative',\n boxSizing: 'border-box',\n fontSize: 16,\n padding: theme.spacing(2),\n marginBottom: '0 !important',\n },\n headerGrid: {\n position: 'relative',\n },\n chosenDateOption: {\n border: `2px solid ${theme.palette.general.primary}!important`,\n },\n dateOptionGrid: {\n maxWidth: theme.spacing(31),\n [theme.breakpoints.down('sm')]: {\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n marginTop: '15px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n dateOptionWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n dateOptionSegment: {\n padding: theme.spacing(1),\n textAlign: 'center',\n width: `calc(50% - ${theme.spacing(2)})`,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n [theme.breakpoints.up('sm')]: {\n height: 'auto',\n width: theme.spacing(14),\n },\n },\n divider: {\n borderColor: '#e6e7e8',\n width:'100%',\n },\n votes: {\n marginLeft: theme.spacing(2)\n },\n optionTitle: {\n marginBottom: theme.spacing(1),\n },\n numberOfNights: {\n fontWeight: 500,\n },\n date: {\n fontSize: 24,\n fontWeight: 700,\n },\n weekday: {\n fontSize: 16,\n lineHeight: 1,\n },\n year: {\n fontSize: 16,\n },\n addPadding: {\n padding: theme.spacing(2),\n },\n disabled: {\n color: [\"#C0C0C0\", '!important'],\n filter: 'grayscale(100%)',\n },\n sentimentEmoji: {\n textAlign: 'center',\n },\n centerDates: {\n flexDirection: \"column\",\n },\n verticalActions: {\n marginTop: theme.spacing(1),\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(1),\n },\n },\n commentButton: {\n height: '32px !important',\n },\n commentButtonContainer: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n textAlign: 'right',\n maxWidth: '100%',\n },\n}));\n\nconst DateOption = ({\n className,\n commentsPath,\n commentsCount,\n currentUserVote = 'missing',\n dateOptionPath,\n displayCommentButton = false,\n endDate,\n endDateWeekday,\n endDateYear,\n highlightAsChosen,\n isClickable,\n isChosen,\n isMostPopular,\n isPast,\n linkPath,\n noVotesBreakdown,\n numNights,\n onDateOptionClick,\n setDateOptionComment,\n startDate,\n startDateWeekday,\n startDateYear,\n showActions,\n showLink,\n showMissingVoteAlert = false,\n travelersVotes,\n tripObjectId,\n tripId,\n}: DateOptionType) => {\n const classes = useStyles();\n const { areDatesInVotingPhase, areDatesFinalized } = usePhasingContext();\n const numOfNights = `${numNights} ${pluralize('Night', numNights)}`;\n const currentUserVoted = currentUserVote !== 'missing';\n const shouldDisplayVotes = !noVotesBreakdown && ((currentUserVoted && areDatesInVotingPhase()) || areDatesFinalized());\n const shouldDisplayGroupFavorite = shouldDisplayVotes && isMostPopular;\n const showCommentsNumber = commentsPath && !isNaN(commentsCount);\n\n const onContainerLinkClicked = (event) => {\n if (event.target.dataset['element'] === 'link' || event.target instanceof SVGPathElement) {\n event.preventDefault();\n };\n };\n\n const showPlusOnesMessage = shouldDisplayVotes && Object.values(travelersVotes).flat().filter(({ plusOneCount }) => plusOneCount > 0).length > 0;\n\n return (\n <>\n <CardButton\n className={clsx(\n classes.cardButton,\n {[classes.chosenDateOption]: highlightAsChosen},\n )}\n disabled={isPast || (!showLink && !isClickable)}\n >\n <Box\n data-test-id=\"date-option\"\n className={clsx(\n classes.dateOption,\n className,\n {[classes.addPadding]: !showLink && !isClickable},\n {[classes.disabled]: isPast},\n )}\n onClick={() => onDateOptionClick && onDateOptionClick()}\n >\n <ContainerLink\n showLink={!isPast && showLink}\n className={classes.cardLink}\n href={linkPath || commentsPath}\n onClick={onContainerLinkClicked}\n disableTouchRipple\n >\n <Grid container direction=\"row\" alignItems=\"center\" className={classes.headerGrid}>\n <Grid item className={classes.optionTitle}>\n <Typography className={classes.numberOfNights}>{numOfNights}</Typography>\n </Grid>\n {shouldDisplayGroupFavorite && (\n <GroupFavoriteChip />\n )}\n </Grid>\n <Divider className={classes.divider}/>\n <Grid container alignItems=\"center\" justifyContent={shouldDisplayVotes ? 'flex-start' : 'center'}>\n <Grid item className={classes.dateOptionWrapper}>\n {currentUserVoted && shouldDisplayVotes && (\n <img src={`/assets/illustrations/${titleize(currentUserVote)}.svg`} className={classes.currentUserVoteIcon} />\n )}\n <Grid item container justifyContent=\"space-between\" alignItems=\"center\" className={classes.dateOptionGrid}>\n <Grid item className={classes.dateOptionSegment}>\n <Typography className={classes.weekday}>{startDateWeekday}</Typography>\n <Typography className={classes.date}>{startDate}</Typography>\n <Typography className={classes.year}>{startDateYear}</Typography>\n </Grid>\n <Grid item>\n <ArrowForwardIcon color=\"primary\" />\n </Grid>\n <Grid item className={classes.dateOptionSegment}>\n <Typography className={classes.weekday}>{endDateWeekday}</Typography>\n <Typography className={classes.date}>{endDate}</Typography>\n <Typography className={classes.year}>{endDateYear}</Typography>\n </Grid>\n </Grid>\n </Grid>\n {shouldDisplayVotes && (\n <Grid item>\n <Grid className={classes.votes}>\n <Grid container item>\n <Grid item>\n <VotesBreakdown maxAvatarsLength={3} votes={travelersVotes} />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n )}\n </Grid>\n {showCommentsNumber && (\n <Grid container direction=\"row\">\n <Grid item xs={12} container justifyContent=\"flex-end\">\n <CommentsLink\n commentsLink={commentsPath}\n commentsCount={commentsCount}\n segment={{\n tripId: tripId,\n tripObjectId: tripObjectId,\n tripObjectType: 'dates',\n }}\n />\n </Grid>\n </Grid>)}\n {(showPlusOnesMessage || displayCommentButton) && (\n <Grid container justifyContent=\"space-between\" alignItems=\"center\" my={1}>\n <Grid item>\n {showPlusOnesMessage && <ExcludesPlusOnesMessage />}\n </Grid>\n <Grid item>\n {displayCommentButton && (\n <Button\n onClick={() => setDateOptionComment()}\n className={classes.commentButton}\n data-test-id='commentButton'\n data-element='link'\n segmentProps={{title: 'Comment Field Initiated', tripObjectId: tripObjectId}}\n >\n <CommentIcon\n data-element='link'\n />\n </Button>\n )}\n </Grid>\n </Grid>\n )}\n </ContainerLink>\n {showActions && dateOptionPath && (\n <DateOptionActions\n dateOptionPath={dateOptionPath}\n disableDeleteButton={isChosen}\n />\n )}\n </Box>\n {areDatesInVotingPhase() && showMissingVoteAlert && (\n <MissingVoteAlert />\n )}\n </CardButton>\n </>\n );\n};\n\nexport default DateOption;\n","import React, { useState } from \"react\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n Box,\n Button,\n ButtonGroup,\n Grid,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport DeleteResourceConfirmationDialog from \"../DeleteResourceConfirmationDialog\";\nimport Tooltip from \"../Tooltip\";\n\ntype DateOptionActionsProps = {\n dateOptionPath: string,\n disableDeleteButton?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'absolute',\n top: 12,\n right: 16,\n [theme.breakpoints.down('sm')]: {\n top: 8,\n },\n },\n button: {\n height: 30,\n [theme.breakpoints.down('sm')]: {\n height: 36,\n },\n '&:hover': {\n backgroundColor: '#F6F6F6',\n borderColor: '#545DFC',\n background: theme.palette.general.hover,\n },\n },\n buttonGroup: {\n backgroundColor: '#FFFFFF',\n border: '1px solid #B4B9BC',\n color: theme.palette.text.primary,\n },\n}));\n\nconst DateOptionActions = ({\n disableDeleteButton,\n dateOptionPath,\n}: DateOptionActionsProps) => {\n const classes = useStyles();\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const tooltipTitle = disableDeleteButton ? 'You cannot delete finalized dates' : '';\n\n return (\n <Box className={classes.root}>\n <ButtonGroup\n classes={{\n groupedOutlined: classes.buttonGroup,\n }}\n disableElevation\n variant=\"outlined\"\n size=\"small\"\n >\n <Tooltip\n data-test-id=\"disabled-delete\"\n placement=\"bottom-start\"\n title={tooltipTitle}\n >\n <Grid>\n <Button\n className={classes.button}\n data-test-id=\"deleteDateOptionButton\"\n disabled={disableDeleteButton}\n onClick={() => setDeleteDialogOpen(true)}\n >\n <DeleteIcon fontSize=\"small\" />\n </Button>\n </Grid>\n </Tooltip>\n </ButtonGroup>\n <DeleteResourceConfirmationDialog\n isOpen={deleteDialogOpen}\n onClose={() => setDeleteDialogOpen(false)}\n path={dateOptionPath}\n resourceName=\"dates\"\n />\n </Box>\n );\n}\n\nexport default DateOptionActions;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport { Grid, Chip } from '@mui/material';\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n marginBottom: theme.spacing(1),\n marginLeft: theme.spacing(1),\n },\n crown: {\n paddingRight: theme.spacing(1),\n },\n mostPopularDateOption: {\n backgroundColor: '#1ebe95',\n borderRadius: '3px',\n color: 'white',\n cursor: 'inherit',\n fontSize: 14,\n fontWeight: 600,\n height: 24,\n \"& span\": {\n padding: 6,\n },\n },\n}));\n\nconst GroupFavoriteChip = () => {\n const classes = useStyles();\n\n return (\n <Grid item className={classes.root}>\n <Chip\n data-test-id=\"most-popular\"\n label={\n <>\n <img className={classes.crown} src=\"/assets/illustrations/Crown.svg\"/>\n Group favorite\n </>\n }\n className={classes.mostPopularDateOption}/>\n </Grid>\n )\n};\n\nexport default GroupFavoriteChip;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport voteSentiments from \"../../pages/trips/microsite/SuggestedDatesPage/voteSentiments\";\nimport clsx from \"clsx\";\nimport AvatarGroup, { AvatarType } from \"../AvatarGroup\";\n\ntype VotesBreakdownType = {\n maxAvatarsLength?: number,\n votes: {\n maybe: AvatarType[],\n no: AvatarType[],\n yes: AvatarType[],\n },\n};\n\nconst useVotesBreakdownStyles = makeStyles((theme) => ({\n root: {\n borderLeft: '2px solid #D4D5D6',\n listStyleType: 'none',\n paddingLeft: theme.spacing(3),\n '& span': {\n float: 'left',\n },\n '& ul': {\n listStyleType: 'none',\n padding: 0,\n },\n marginBottom: 0,\n },\n sentiment: {\n display: \"flex\",\n marginBottom: theme.spacing(1),\n marginTop: theme.spacing(1),\n '&:first-child': {\n marginTop: 0,\n },\n '&:last-child': {\n marginTop: 0,\n },\n },\n sentimentLabel: {\n display: \"flex\",\n alignItems: \"center\",\n height: theme.spacing(4),\n width: theme.spacing(17),\n [theme.breakpoints.down(350)]: {\n width: '75%',\n },\n },\n sentimentLabelText: {\n display: \"flex-item\",\n fontSize: 16,\n fontWeight: 600,\n marginRight: theme.spacing(0.5),\n verticalAlign: \"middle\",\n lineHeight: '16px',\n },\n sentimentLabelEmoji: {\n fontSize: 22,\n marginRight: theme.spacing(2),\n verticalAlign: 'center',\n },\n sentimentLabelCount: {\n color: '#272727',\n display: \"flex-item\",\n fontSize: 14,\n verticalAlign: \"middle\",\n lineHeight: '16px',\n },\n disabledItem: {\n color: `${theme.palette.general.background.disabled}!important`,\n },\n}));\n\nconst VotesBreakdown = ({ votes, maxAvatarsLength }: VotesBreakdownType) => {\n const classes = useVotesBreakdownStyles();\n const isDisabled = (value, length) => { return value === 'missing' && length === 0};\n\n const renderVotesRow = (label, sentiment, icon) => {\n const sentimentVotes = votes[sentiment];\n const isSentimentDisabled = isDisabled(sentiment, sentimentVotes.length);\n\n const hasPlusOnes = sentimentVotes.filter(({ plusOneCount }) => plusOneCount > 0).length > 0;\n\n return (\n <li key={sentiment} data-test-id={`${sentiment}-votes`} className={classes.sentiment}>\n <span className={classes.sentimentLabel}>\n <span className={classes.sentimentLabelEmoji}>\n <img src={`/assets/illustrations/${icon}.svg`}/>\n </span>\n <section\n className={clsx({[classes.disabledItem]: isSentimentDisabled})}\n data-test-id={`${sentiment}-votes-row`}>\n <span className={classes.sentimentLabelText}>{label}{' '}</span>\n <span className={clsx(classes.sentimentLabelCount, {[classes.disabledItem]: isSentimentDisabled})}>\n ({sentimentVotes.length}){hasPlusOnes && '*'}\n </span>\n </section>\n </span>\n <AvatarGroup disabled={sentiment === 'missing'} max={maxAvatarsLength} avatars={sentimentVotes} />\n </li>\n );\n };\n\n return <>\n <ul data-test-id='votes-breakdown' className={classes.root}>\n {voteSentiments.map(({ label, value, icon }) => (\n renderVotesRow(label, value, icon)\n ))}\n </ul>\n </>;\n};\n\nexport default VotesBreakdown;\n","import React from \"react\";\nimport ConfirmationDialog, { ConfirmationDialogProps } from \"./ConfirmationDialog\";\n\nexport type DeleteConfirmationDialogProps = ConfirmationDialogProps & {\n path: string,\n title: string,\n message: React.ReactNode,\n};\n\nconst DeleteConfirmationDialog = ({\n path,\n title,\n message,\n ...confirmationDialogProps\n}: DeleteConfirmationDialogProps) => {\n return (\n <ConfirmationDialog\n actionPath={path}\n actionMethod=\"DELETE\"\n actionText=\"Delete\"\n buttonVariant=\"danger\"\n message={message}\n title={title}\n {...confirmationDialogProps}\n />\n );\n};\n\nexport default DeleteConfirmationDialog;\n","import React from \"react\";\nimport { Typography } from \"@mui/material\"\nimport DeleteConfirmationDialog, { DeleteConfirmationDialogProps } from \"./DeleteConfirmationDialog\";\nimport { makeStyles } from \"@mui/styles\";\nimport pluralize from 'pluralize';\n\ntype DeleteResourceConfirmationDialogProps = {\n additionalMessage?: string | React.ReactNode,\n resourceName: string,\n message?: React.ReactNode,\n} & Omit<DeleteConfirmationDialogProps, \"title\" | \"message\">;\n\nconst useStyles = makeStyles((theme) =>({\n bold: {\n fontWeight: 500,\n display: 'inline',\n },\n}));\n\nconst DeleteResourceConfirmationDialog = ({\n additionalMessage,\n resourceName,\n message,\n ...confirmationDialogProps\n}: DeleteResourceConfirmationDialogProps) => {\n const classes = useStyles();\n const pluralizedResourceName = pluralize(resourceName, 2);\n\n return (\n <DeleteConfirmationDialog\n message={ message || (\n <>\n <Typography>\n <span className={classes.bold}>Heads up!</span> Once {pluralizedResourceName} are deleted you can’t get them back.\n </Typography>\n {additionalMessage}\n </>\n )}\n title={`Delete ${resourceName}?`}\n {...confirmationDialogProps}\n />\n );\n};\n\nexport default DeleteResourceConfirmationDialog;\n","import React from \"react\";\nimport {\n Dialog as DialogBase,\n DialogContent,\n DialogTitle,\n DialogActions,\n DialogContentText,\n IconButton,\n Slide,\n useMediaQuery,\n SlideProps,\n Divider,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport clsx from \"clsx\";\n\nexport type DialogProps = {\n actions?: React.ReactNode,\n children?: React.ReactNode,\n fullWidth?: boolean,\n isOpen: boolean,\n keepMounted?: boolean,\n maxWidth?: false | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\",\n message: string | React.ReactNode,\n onClose?: () => void,\n onConfirm?: () => void,\n position?: 'center' | 'bottom',\n transition?: React.ForwardRefExoticComponent<SlideProps>,\n subtitle?: string,\n title?: string | React.ReactNode,\n backgroundClass?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n bottom: {\n [theme.breakpoints.down(\"md\")]: {\n position: \"absolute\",\n padding: 0,\n margin: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n },\n },\n closeIcon: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n zIndex: 1,\n },\n dialogActions: {\n [theme.breakpoints.up(\"sm\")]: {\n padding: theme.spacing(4),\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: theme.spacing(2),\n },\n paddingTop: [[theme.spacing(1)], '!important'],\n },\n message: {\n [theme.breakpoints.up(\"sm\")]: {\n padding: theme.spacing(4),\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: theme.spacing(2),\n },\n paddingBottom: [[theme.spacing(2)]],\n paddingTop: [[theme.spacing(2)]],\n },\n messageBody: {\n margin: 0,\n },\n title: {\n padding: theme.spacing(2),\n [theme.breakpoints.up(445)]: {\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n },\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props: SlideProps, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const DialogBottomOnMobile = ({children, ...props}: DialogProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down(445));\n const position = isMobile ? 'bottom' : 'center'\n const transition = position === 'bottom' ? Transition : undefined;\n\n return (\n <Dialog\n position={position}\n transition={transition}\n {...props}\n >\n {children}\n </Dialog>\n );\n};\n\nconst Dialog = ({\n actions,\n children,\n isOpen,\n message,\n onClose,\n position = 'center',\n subtitle,\n title,\n transition,\n backgroundClass,\n ...dialogBaseProps\n}: DialogProps) => {\n const classes = useStyles();\n\n const closeDialog = () => {\n if (onClose) {\n onClose();\n }\n };\n\n const CloseDialogButton = () => (\n <IconButton\n className={classes.closeIcon}\n data-test-id=\"closeDialogButton\"\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n );\n\n return (\n <DialogBase\n classes={{ paper: clsx(classes[position], backgroundClass ) }}\n open={isOpen}\n onClose={closeDialog}\n TransitionComponent={transition}\n {...dialogBaseProps}\n >\n <CloseDialogButton />\n <DialogTitle className={classes.title}>\n {title && (\n <div>\n {title}\n </div>\n )}\n {subtitle && (\n <Typography py={1}>\n {subtitle}\n </Typography>\n )}\n </DialogTitle>\n <Grid item xs={12} container justifyContent=\"center\">\n <Grid item xs={12}>\n {(title || subtitle) && <Divider/>}\n </Grid>\n </Grid>\n <DialogContent className={classes.message}>\n {typeof message === 'string' ? (\n <DialogContentText className={classes.messageBody}>\n {message}\n </DialogContentText>\n ) : (\n message\n )}\n </DialogContent>\n {actions && (\n <DialogActions className={classes.dialogActions}>\n {actions}\n </DialogActions>\n )}\n {children}\n </DialogBase>\n );\n};\n\nexport default Dialog;\n","import React, { useState } from 'react';\nimport clsx from \"clsx\";\nimport {\n Collapse,\n IconButton,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {\n Alert,\n AlertColor,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype DismissableAlertProps = {\n children: React.ReactNode,\n className?: string,\n severity?: AlertColor,\n icon?: React.ReactNode,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'flex-start',\n },\n closeButton: {\n paddingTop: theme.spacing(1),\n },\n}));\n\nconst DismissibleAlert = ({\n children,\n className,\n severity,\n icon,\n ...alertProps\n}: DismissableAlertProps) => {\n const classes = useStyles();\n const [open, setOpen] = useState(true);\n\n return (\n <Collapse in={open}>\n <Alert\n action={\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n color=\"inherit\"\n size=\"small\"\n onClick={() => setOpen(false)}\n >\n <CloseIcon fontSize=\"inherit\" data-test-id=\"closeAlertButton\" />\n </IconButton>\n }\n className={clsx(className, classes.root)}\n data-test-id=\"alert\"\n severity={severity}\n variant=\"outlined\"\n icon={icon}\n {...alertProps}\n >\n {children}\n </Alert>\n </Collapse>\n );\n};\n\nexport default DismissibleAlert;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype DividerProps = {\n className?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n border: 0,\n borderTop: '1px solid #C1C1C1',\n margin: 0,\n },\n}))\n\nconst Divider = ({\n className,\n}: DividerProps) => {\n const classes = useStyles();\n return <hr className={clsx(classes.root, className)} />;\n}\n\nexport default Divider;\n","import React from \"react\";\nimport DrawerBase, { DrawerProps } from '@mui/material/Drawer';\nimport { makeStyles } from \"@mui/styles\";\n\nconst useDrawerClasses = makeStyles((theme) => ({\n paper: {\n '@supports (padding-top: env(safe-area-inset-top))': {\n padding: 'env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)',\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: '100%',\n },\n [theme.breakpoints.up(\"sm\")]: {\n width: 'min(50%, 475px)',\n },\n },\n}));\n\nconst Drawer = ({\n children,\n anchor,\n open,\n onClose,\n ...otherProps\n}: DrawerProps) => {\n return (\n <DrawerBase\n anchor={anchor}\n classes={useDrawerClasses()}\n onClose={onClose}\n open={open}\n {...otherProps}\n >\n {children}\n </DrawerBase>\n );\n}\n\nexport default Drawer;\n","import React from 'react';\nimport {\n ClickAwayListener,\n Paper,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport DropdownBase from './DropdownButton/DropdownBase';\nimport MenuToggle, { MenuIconToggle } from './DropdownButton/MenuToggle';\nimport clsx from \"clsx\";\n\ntype DropdownProps = {\n className?: string,\n conciseLabel?: string,\n disabled?: boolean,\n icon?: string | object,\n label?: string | object,\n menuList: React.ReactElement,\n testId?: string,\n onClick?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n paddingTop: theme.spacing(0.5),\n },\n button: {\n textAlign: 'right',\n },\n}));\n\n\nconst DropdownButton = ({\n className,\n conciseLabel,\n disabled,\n icon,\n label,\n menuList,\n testId,\n onClick,\n}: DropdownProps) => {\n const classes = useStyles();\n icon = icon ? <img className={classes.icon} src={`/assets/illustrations/${icon}.svg`}/> : null\n return (\n <DropdownBase\n segmentEventOnDropdownClick={onClick}\n className={clsx(className, classes.button)}\n menuComponent={(open, anchorRef, handleToggle) =>\n <MenuToggle\n conciseLabel={conciseLabel}\n disabled={disabled}\n icon={icon}\n isOpen={open}\n label={label}\n onClick={handleToggle}\n ref={anchorRef}\n testId={testId}\n />\n }\n menuList={menuList}\n />\n );\n};\n\nexport const DropdownIconButton = ({\n className,\n disabled,\n icon,\n menuList,\n testId,\n}: DropdownProps) => {\n return (\n <DropdownBase\n className={className}\n customPaper={(handleClose) =>\n <Paper\n sx={{\n overflow: 'auto',\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\n mt: 0.5,\n ml: -14.5,\n '& .MuiAvatar-root': {\n width: 'inherit',\n height: 32,\n ml: -0.5,\n mr: 1,\n },\n '&:before': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: 0,\n right: 14,\n width: 10,\n height: 10,\n zIndex: 0,\n },\n }\n }>\n <ClickAwayListener onClickAway={handleClose}>\n {menuList}\n </ClickAwayListener>\n </Paper>\n }\n menuComponent={(open, anchorRef, handleToggle) =>\n <MenuIconToggle\n icon={icon}\n isOpen={open}\n onClick={handleToggle}\n ref={anchorRef}\n testId={testId}\n />\n }\n menuList={menuList}\n />\n );\n};\n\nexport default DropdownButton;\n","import React, { useState, useRef } from 'react';\nimport { makeStyles } from '@mui/styles';\nimport {\n Box,\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n} from '@mui/material';\n\ntype DropdownBaseProps = {\n className?: string,\n customPaper?: (handleClose) => React.ReactElement,\n menuComponent: (open: boolean, anchorRef, handleToggle) => React.ReactElement,\n menuList: React.ReactElement,\n segmentEventOnDropdownClick?: () => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n menuListWrapper: {\n zIndex: 5,\n },\n}));\n\nconst DropdownBase = ({\n className,\n customPaper,\n menuComponent,\n menuList,\n segmentEventOnDropdownClick,\n}: DropdownBaseProps) => {\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n const anchorRef = useRef<HTMLDivElement>(null);\n\n const handleClose = (event: Event | React.SyntheticEvent) => {\n if (anchorRef.current && anchorRef.current.contains(event.target as HTMLElement)) {\n return;\n };\n\n setOpen(false);\n };\n\n const handleToggle = () => {\n if(!open && segmentEventOnDropdownClick) { segmentEventOnDropdownClick() }\n\n setOpen((prevOpen) => !prevOpen);\n };\n\n return (\n <Box className={className}>\n {menuComponent(open, anchorRef, handleToggle)}\n <Popper\n anchorEl={anchorRef.current}\n className={classes.menuListWrapper}\n keepMounted\n open={open}\n role={undefined}\n transition\n >\n {({TransitionProps, placement}) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom',\n }}\n >\n {!!customPaper ?\n customPaper(handleClose)\n :\n <Paper>\n <ClickAwayListener onClickAway={handleClose}>\n {menuList}\n </ClickAwayListener>\n </Paper>\n }\n </Grow>\n )}\n </Popper>\n </Box>\n );\n};\n\nexport default DropdownBase;\n","import React, { Ref } from 'react';\nimport clsx from \"clsx\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { ButtonGroup } from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Button from \"../../buttons/Button\";\nimport IconButton from '../../buttons/IconButton';\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n buttonGroup: {\n width: '100%',\n },\n buttonGroupItem: {\n boxShadow: '0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n '&:not(:last-of-type)': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n '&:not(:first-of-type)': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n },\n expandButton: {\n padding: [[0], '!important'],\n },\n icon: {\n paddingRight: theme.spacing(1.5),\n },\n}));\n\ntype MenuToggleProps = {\n conciseLabel?: string,\n disabled?: boolean,\n icon?: any,\n isOpen: boolean,\n label?: string | object,\n onClick: () => void,\n testId?: string,\n};\n\nconst MenuButtonToggle = React.forwardRef((\n {\n conciseLabel,\n disabled,\n icon,\n isOpen,\n label,\n onClick,\n testId,\n }: MenuToggleProps,\n ref: Ref<HTMLDivElement>,\n) => {\n const classes = useStyles();\n const showConciseButton = !!conciseLabel && useMediaQuery(useTheme().breakpoints.down(470));\n\n return (\n <ButtonGroup\n aria-label=\"split button\"\n className={classes.buttonGroup}\n color=\"primary\"\n disabled={disabled}\n ref={ref}\n variant='contained'\n >\n <Button\n className={classes.buttonGroupItem}\n onClick={onClick}\n variant='primary'\n aria-controls={isOpen ? \"split-button-menu\" : undefined}\n aria-expanded={isOpen ? \"true\" : undefined}\n aria-haspopup=\"menu\"\n data-test-id={testId}\n >\n {icon && <span className={classes.icon}>{icon}</span>}\n {showConciseButton ? conciseLabel : label}\n </Button>\n {!showConciseButton && (\n <Button\n className={clsx(classes.expandButton, classes.buttonGroupItem)}\n onClick={onClick}\n >\n <ExpandMoreIcon fontSize={\"large\"}/>\n </Button>\n )}\n </ButtonGroup>\n );\n});\n\nexport const MenuIconToggle = React.forwardRef((\n {\n icon,\n isOpen,\n onClick,\n testId,\n }: MenuToggleProps,\n ref: Ref<HTMLButtonElement>,\n) => {\n const classes = useStyles();\n\n return (\n <IconButton\n className={classes.buttonGroupItem}\n aria-controls={isOpen ? \"split-button-menu\" : undefined}\n aria-expanded={isOpen ? \"true\" : undefined}\n aria-haspopup=\"menu\"\n data-test-id={testId}\n onClick={onClick}\n ref={ref}\n >\n {icon}\n </IconButton>\n );\n});\n\nexport default MenuButtonToggle;","import React, { useContext, useEffect, useReducer } from \"react\";\nimport { gql, useMutation } from \"@apollo/client\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport {\n CircularProgress,\n TextField,\n Typography,\n Grid,\n useMediaQuery,\n} from \"@mui/material\";\nimport Button from \"../buttons/Button\";\nimport { GlobalContext, SegmentContext } from \"../Document\";\nimport InputWithCharacterCounter from './InputWithCharacterCounter';\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\nimport pluralize from 'pluralize';\nimport * as Sentry from \"@sentry/browser\";\n\ntype EmailInviteFormProps = {\n tripId: string,\n tripGid: string,\n resendEmail?: string[],\n onClose?: () => void,\n onResend?: (hasCustomMessage: boolean) => void,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n spinner: {\n color: 'white',\n verticalAlign: 'middle',\n },\n title: {\n color: theme.palette.text.primary,\n },\n emailField: {\n width: '100%',\n '& p': {\n fontSize: 14,\n },\n },\n messageField: {\n '&:hover fieldset': {\n borderColor: 'grey',\n },\n },\n}));\n\nconst emailBlankErrorMessage = \"Email can't be blank\";\nconst genericErrorMessage = \"Something went wrong, please try again\";\n\ntype State = {\n customMessage?: string,\n disableActions: boolean,\n emailError: boolean,\n errorMessage: string | null,\n initialInviteesEmails: string[],\n inviteesEmails: string[],\n snackbarMessage: string | null,\n resendInvite: boolean,\n}\n\nconst initialReducerState: State = {\n customMessage: null,\n disableActions: false,\n emailError: false,\n errorMessage: null,\n initialInviteesEmails: [],\n inviteesEmails: [],\n snackbarMessage: null,\n resendInvite: false,\n};\n\nconst scrollToError = () => {\n document.getElementById('invite_emails')\n .scrollIntoView(\n { behavior: 'smooth', block: 'start' },\n );\n};\n\ntype Action =\n | { type: 'DEFAULT_STATE' }\n | {\n type: 'INVITE_SEND_SUCCESSFUL',\n message: string,\n }\n | { type: 'EMAIL_BLANK' }\n | {\n type: 'EMAIL_ERROR',\n message: string,\n invalidEmails: string[],\n disableActions: boolean,\n }\n | {\n type: 'CHANGED_INVITEE',\n emails: string,\n }\n | {\n type: 'SET_CUSTOM_MESSAGE',\n payload: string,\n }\n | {\n type: 'RESEND_INVITE',\n email: string[],\n }\n;\n\nconst inviteReducer = (state: State, action: Action) => {\n const setState = (props: Partial<State>) => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'DEFAULT_STATE':\n return setState(initialReducerState);\n case 'INVITE_SEND_SUCCESSFUL':\n return setState(Object.assign({}, initialReducerState, { snackbarMessage: action.message }));\n case 'EMAIL_BLANK':\n return setState({ emailError: true, errorMessage: emailBlankErrorMessage });\n case 'EMAIL_ERROR':\n return setState({ emailError: true, errorMessage: action.message, inviteesEmails: action.invalidEmails, initialInviteesEmails: action.invalidEmails, disableActions: action.disableActions });\n case 'CHANGED_INVITEE': {\n const emails = action.emails\n .split(/,|:|;/)\n .map(value => value.trim());\n\n const emailsWithoutDuplicates = emails\n .filter((value, index) => emails.indexOf(value) === index);\n\n return setState({ inviteesEmails: emailsWithoutDuplicates, snackbarMessage: null });\n }\n case 'SET_CUSTOM_MESSAGE': {\n return { ...state, customMessage: action.payload };\n }\n case 'RESEND_INVITE': {\n return setState({...state, inviteesEmails: action.email, snackbarMessage: null, resendInvite: true });\n }\n default:\n throw new Error(`Unknown action type: ${JSON.stringify(action)}`);\n }\n};\n\nconst emailRegexp = new RegExp(/\\S+@\\S+\\.\\S+/);\n\nexport const TRIP_INVITES_CREATE = gql`\n mutation TripInvitesCreate($tripId: ID!, $emailAddresses: [String!]!, $customMessage: String, $resendInvite: Boolean) {\n tripInvitesCreate(input: {\n tripId: $tripId,\n emailAddresses: $emailAddresses\n customMessage: $customMessage\n resendInvite: $resendInvite\n }) {\n tripInvites {\n email\n }\n errors\n invalidRecipientsEmails\n }\n }\n`\nconst EmailInviteForm = ({\n tripId,\n tripGid,\n resendEmail,\n onClose,\n onResend,\n}: EmailInviteFormProps) => {\n const [state, dispatch] = useReducer(inviteReducer, initialReducerState);\n const classes = useStyles();\n const { setSnackbar } = useContext(GlobalContext);\n const { currentUserId, isPlanner } = useContext(SegmentContext);\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const isResendInvite = !!resendEmail;\n\n const [\n sendInvitesMutation,\n { loading, error },\n ] = useMutation(TRIP_INVITES_CREATE)\n\n const inviteesEmailsCount = state.inviteesEmails.filter((value) => {\n return value.match(emailRegexp);\n }).length;\n\n const actualInviteesEmails = state.inviteesEmails.filter(email => email && email.length);\n const canSendInvites = !state.disableActions && actualInviteesEmails.length && !loading &&\n JSON.stringify(actualInviteesEmails) !== JSON.stringify(state.initialInviteesEmails);\n\n const trackInvitesEvent = (tripInvites) => {\n if(!isResendInvite) {\n return trackAnalyticsEvent('Invite Completed', {\n category: 'Invites',\n method: 'Email',\n emailList: tripInvites.map(invite => invite.email),\n tripId: tripId,\n emailCount: inviteesEmailsCount,\n message: !!state.customMessage,\n });\n }\n\n if(resendEmail.length > 1) {\n return trackAnalyticsEvent('All Invites Resent', {\n userId: currentUserId,\n tripId: tripId,\n planner: isPlanner,\n isMobileApp: isMobileApp,\n count: inviteesEmailsCount,\n message: !!state.customMessage,\n });\n }\n };\n\n const sendEmail = () => {\n if (inviteesEmailsCount === 0) {\n return dispatch({ type: 'EMAIL_BLANK' });\n }\n sendInvitesMutation({\n variables: {\n tripId: tripGid,\n emailAddresses: state.inviteesEmails,\n customMessage: state.customMessage,\n resendInvite: isResendInvite,\n },\n onCompleted: ({tripInvitesCreate: { tripInvites, errors, invalidRecipientsEmails }}) => {\n if (tripInvites && errors.length === 0) {\n trackInvitesEvent(tripInvites)\n }\n if (errors.length !== 0) {\n const invalidEmails = invalidRecipientsEmails ?? state.inviteesEmails\n dispatch({\n type: 'EMAIL_ERROR',\n message: errors.join(', '),\n invalidEmails,\n disableActions: errors.includes('You need to log in to do that.'),\n });\n } else if (tripInvites) {\n // NOTE: only trigger success toast in event of no errors.\n dispatch({\n type: 'INVITE_SEND_SUCCESSFUL',\n message: `Success! Your ${pluralize('invite', inviteesEmailsCount)} ${pluralize('was', inviteesEmailsCount)} sent.`,\n });\n if (onClose) onClose();\n\n if(isResendInvite) {\n const hasCustomMessage = !!state.customMessage\n onResend(hasCustomMessage);\n }\n } else {\n Sentry.captureException(\n new Error(`missing both errors and tripInvites: ${tripInvites}, ${errors}, ${invalidRecipientsEmails}}`),\n )\n }\n },\n onError: (error) => {\n dispatch({\n type: 'EMAIL_ERROR',\n message: genericErrorMessage,\n invalidEmails: state.inviteesEmails,\n disableActions: error.toString().includes('You need to log in to do that.'),\n });\n },\n })\n };\n\n const sendInviteButtonLabel = isResendInvite ? `Resend (${inviteesEmailsCount})` : `Send invites (${inviteesEmailsCount})`;\n const emailInputLabel = isResendInvite ? 'Email' : 'Add email addresses separated by commas';\n\n useEffect(() => {\n if (state.emailError || error) scrollToError();\n }, [state.emailError]);\n\n useEffect(() => {\n if (state.snackbarMessage) { setSnackbar(state.snackbarMessage, 3000) }\n }, [state.snackbarMessage]);\n\n useEffect(() => {\n if(isResendInvite) {\n dispatch({ type: 'RESEND_INVITE', email: resendEmail })\n }\n }, []);\n\n return (\n <Grid container direction=\"column\" spacing={2}>\n <Grid item>\n <Typography data-test-id='invite-modal-input' variant={isResendInvite ? 'h3' : 'body1'} className={classes.title}>\n {emailInputLabel}\n </Typography>\n </Grid>\n <Grid item>\n <TextField\n id=\"invite_emails\"\n data-test-id='invite-emails-field'\n error={state.emailError}\n value={state.inviteesEmails}\n onChange={(event) => dispatch({ type: 'CHANGED_INVITEE', emails: event.target.value })}\n helperText={state.errorMessage}\n className={classes.emailField}\n placeholder=\"Email addresses\"\n variant=\"outlined\"\n disabled={isResendInvite}\n />\n </Grid>\n <Grid item>\n <Typography variant='h3' py={1}>\n Include a message (optional)\n </Typography>\n <InputWithCharacterCounter\n className={classes.messageField}\n placeholder=\"Add a message that travelers will see in your email invitation.\"\n fullWidth\n withBorder\n multiline\n rows={5}\n characterLimit={250}\n onChange={(event) => dispatch({ type: 'SET_CUSTOM_MESSAGE', payload: event.target.value})}\n />\n </Grid>\n <Grid item>\n <Button\n data-test-id=\"submit\"\n disabled={!canSendInvites}\n fullWidth\n onClick={() => sendEmail()}\n >\n {loading ? (\n <CircularProgress className={classes.spinner} />\n ) : (\n sendInviteButtonLabel\n )}\n </Button>\n </Grid>\n </Grid>\n );\n};\n\nexport default EmailInviteForm;\n","import React, { useContext } from \"react\";\nimport {\n Box,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport Dialog from \"../shared/Dialog\";\nimport EmailInviteForm from \"../shared/EmailInviteForm\";\nimport { TripSiteContext } from '../Document';\n\ntype EmailInviteModalProps = {\n title: string,\n tripId: string,\n resendEmail: string[],\n onModalClose: () => void,\n onResend?: (hasCustomMessage: boolean) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n titleWrapper: {\n textAlign: 'center',\n flexDirection: 'row',\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n minWidth: 480,\n },\n },\n}));\n\nconst EmailInviteModal = ({\n title,\n tripId,\n resendEmail,\n onResend,\n onModalClose,\n}: EmailInviteModalProps) => {\n const classes = useStyles();\n const { tripGid } = useContext(TripSiteContext);\n\n return <>\n <Dialog\n fullWidth\n data-test-id=\"inviteModal\"\n isOpen\n message={\n <>\n <Box className={classes.titleWrapper} mb={1}>\n <Typography className={classes.title}>\n {title}\n </Typography>\n </Box>\n <EmailInviteForm\n tripId={tripId}\n tripGid={tripGid}\n resendEmail={resendEmail}\n onResend={onResend}\n />\n </>\n }\n onClose={onModalClose}\n />\n </>\n};\n\nexport default EmailInviteModal;\n","import React, { useCallback } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button from \"../buttons/Button\";\nimport { trackLink as trackAnalyticsEvent } from '../../services/analytics';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n textAlign: 'center',\n paddingTop: theme.spacing(3),\n },\n buttonContainer: {\n marginTop: theme.spacing(2),\n },\n upperGrid: {\n margin: '0 0 0 0',\n boxShadow: '0 1px 0 0 rgba(0,0,0,0.2)',\n textAlign: 'left',\n },\n body: {\n marginBottom: theme.spacing(3),\n },\n image: {\n width: '100%',\n maxWidth: '426px',\n },\n boldText: {\n margin: '0 0 8px',\n fontSize: '18px',\n fontWeight: '600',\n },\n}));\n\ntype EmptySectionContentWithCTAProps = {\n body: string,\n message1: string,\n message2: string,\n illustration: string,\n ctaHREF: string,\n ctaText: string,\n heading: string,\n ctaTrackingProps?: null | { eventName: string, properties: object }\n}\n\nconst EmptySectionContentWithCTA = ({\n body,\n message1,\n message2,\n illustration,\n ctaHREF,\n ctaText,\n ctaTrackingProps,\n}: EmptySectionContentWithCTAProps) => {\n const classes = useStyles();\n const ctaRef = useCallback((element) => {\n if (element !== null && !!ctaTrackingProps) {\n trackAnalyticsEvent(\n element,\n ctaTrackingProps?.eventName,\n {\n ...ctaTrackingProps?.properties,\n },\n );\n };\n }, []);\n\n return (\n <Grid container className={classes.root} direction=\"column\" spacing={1} justifyContent=\"center\" alignItems=\"center\">\n <Grid className={classes.upperGrid} item>\n <Typography className={classes.body}>{body}</Typography>\n </Grid>\n <img\n className={classes.image}\n alt=\"No suggestions\"\n src={`/assets/illustrations/${illustration}.svg`}\n />\n <Grid item>\n <Typography className={classes.boldText}>{message1}</Typography>\n <Typography>{message2}</Typography>\n </Grid>\n <Grid item className={classes.buttonContainer}>\n <Button\n data-test-id=\"ctaButton\"\n href={ctaHREF}\n ref={(el) => ctaRef(el)}\n >\n {ctaText}\n </Button>\n </Grid>\n </Grid>\n );\n};\n\nexport default EmptySectionContentWithCTA;\n","import React, { useContext } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport Modal from \"./Modal\";\nimport Button from \"../buttons/Button\";\nimport { makeStyles } from \"@mui/styles\";\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\nimport { SegmentContext } from \"../Document\";\n\nconst useStyles = makeStyles(() => ({\n img: {\n width: '100%',\n maxWidth: '215px',\n },\n emptyStateModalContainer: {\n height: '100%',\n },\n}));\n\ntype EmptyStateModalFormProps = {\n buttonHref: string,\n buttonText: string,\n closePath: string,\n imgSrc: string,\n subtitle: string,\n title: string,\n}\n\nconst EmptyStateModalForm = ({\n buttonHref,\n buttonText,\n closePath,\n imgSrc,\n subtitle,\n title,\n}: EmptyStateModalFormProps) => {\n const classes = useStyles();\n const { tripId, isPlanner } = useContext(SegmentContext);\n const handleOnClick = () => {\n trackAnalyticsEvent(`${buttonText} Clicked`, {\n isPlanner: isPlanner,\n tripId: tripId,\n })\n }\n\n return (\n <Grid container justifyContent='center' className={classes.emptyStateModalContainer}>\n <Modal\n title=''\n subtitle=''\n closePath={closePath}\n saveBar={false}\n withDivider={false}\n >\n <Grid\n container\n alignItems='center'\n justifyContent='center'\n pt={4}\n flexDirection='column'\n spacing={2}\n >\n <Grid item>\n <Typography variant=\"h2\">\n {title}\n </Typography>\n </Grid>\n <Grid item >\n <img alt='' data-test-id='empty-state-modal-form-src' src={imgSrc} className={classes.img}/>\n </Grid>\n <Grid item>\n <Typography textAlign='center'>\n {subtitle}\n </Typography>\n </Grid>\n <Grid item>\n <Button\n data-test-id=\"go-to-button\"\n href={buttonHref}\n onClick={() => handleOnClick()}\n >\n {buttonText}\n </Button>\n </Grid>\n </Grid>\n </Modal>\n </Grid>\n )\n};\n\nexport default EmptyStateModalForm;\n","import React, {\n Component,\n ReactNode,\n} from \"react\";\nimport ErrorBoundaryMessage from \"./ErrorBoundary/ErrorBoundaryMessage\";\nimport * as Sentry from \"@sentry/browser\";\n\ninterface Props {\n fallback?: ReactNode;\n children: ReactNode;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nexport default class ErrorBoundary extends Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { ...error, hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n Sentry.captureException(error);\n }\n\n render() {\n if (this.state.hasError === false) return this.props.children;\n if (this.props.fallback) return this.props.fallback;\n\n return <ErrorBoundaryMessage />;\n }\n}\n","import React from 'react';\nimport {\n Grid,\n Typography\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '100%',\n textAlign: 'center'\n },\n message: {\n marginTop: theme.spacing(1),\n }\n}));\n\nconst ErrorBoundaryMessage = ({\n\n}) => {\n const classes = useStyles();\n\n return <>\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n alignContent=\"center\"\n className={classes.root}\n >\n <img\n src={`/assets/chat_alert_icon.svg`}\n data-test-id=\"alert-icon\"\n />\n <div className={classes.message}>\n <Typography>\n Oops! Something went wrong.\n </Typography>\n <Typography>\n Try refreshing the page.\n </Typography>\n </div>\n </Grid>\n </>\n}\n\nexport default ErrorBoundaryMessage;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Alert } from \"@mui/material\";\n\nexport type ErrorsProps = {\n errors: string[],\n className?: string,\n};\n\nconst Errors = ({\n errors,\n className,\n}: ErrorsProps) => {\n return (\n <Grid className={className} container spacing={2} data-test-id=\"errors\" direction=\"column\">\n {errors.length > 0 && (\n <Grid item>\n {errors.length > 0 &&\n errors.map((error, index) => (\n <Alert severity=\"error\" key={error + index} data-test-id=\"displayed-error\">\n {error.replace('Validation failed: ', '')}\n </Alert>\n ))}\n </Grid>\n )}\n </Grid>\n );\n}\n\nexport default Errors;\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport makeStyles from \"@mui/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: '#5C7993',\n fontSize: 12,\n lineHeight: '24px',\n },\n}));\n\nconst ExcludesPlusOnesMessage = () => {\n const classes = useStyles();\n\n return (\n <Typography className={classes.root}>*Excludes plus ones</Typography>\n );\n};\n\nexport default ExcludesPlusOnesMessage;\n","import React from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { DestinationType } from \"./TripObjectTypes\";\nimport { usePhasingContext } from \"../../services/phasing\";\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\n\ntype ExploreStaysButtonProps = {\n destination: DestinationType,\n url: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: 2,\n marginRight: theme.spacing(2),\n marginBottom: theme.spacing(0.5),\n marginTop: theme.spacing(0.5),\n fontWeight: 600,\n lineHeight: '20px',\n fontSize: 15,\n height: '40px',\n color: theme.palette.primary.main,\n },\n openNewTabIcon: {\n fontSize: '16px',\n marginLeft: theme.spacing(0.5),\n },\n}));\n\nconst ExploreStaysButton = ({\n destination,\n url,\n}: ExploreStaysButtonProps) => {\n const classes = useStyles();\n const { destinationsState } = usePhasingContext();\n\n const onButtonClick = () => {\n trackAnalyticsEvent('Explore Stays Clicked',\n {\n verticalPhase: destinationsState,\n rank: destination.ranking ? destination.ranking : 'no rank',\n });\n\n window.location.replace(url)\n };\n\n return (\n <ButtonBase\n className={classes.root}\n onClick={()=> onButtonClick()}\n data-test-id='destinationLink'\n >\n Explore stays <ChevronRightIcon fontSize=\"medium\"/>\n </ButtonBase>\n );\n};\n\nexport default ExploreStaysButton;\n","import React from \"react\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\n\ntype ExternalPageLinkProps = {\n children?: React.ReactNode | null,\n component?: React.FC | null,\n href: string,\n className?: string,\n}\n\nconst ExternalPageLink = ({ href, component, children, ...otherProps }: ExternalPageLinkProps) => {\n const RootComponent = component || ButtonBase;\n\n return (\n <RootComponent href={href} target=\"_blank\" {...otherProps}>\n {children}\n </RootComponent>\n );\n};\n\nexport default ExternalPageLink;\n","import React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport Button, { ButtonProps, ButtonType, ButtonVariant } from \"../buttons/Button\";\nimport clsx from \"clsx\";\n\ntype FixedSaveBarProps = ButtonProps & {\n buttonContent: React.ReactNode,\n className?: string,\n extraButton?: React.ReactNode,\n onClick?: ((event: any) => void) | null,\n saveButtonVariant?: ButtonVariant,\n saveButtonType?: ButtonType,\n topContent?: React.ReactNode,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n background: 'white',\n padding: theme.spacing(2),\n [`@supports (padding-bottom: env(safe-area-inset-bottom)) and (padding-bottom: max(${theme.spacing(2)}))`]: {\n paddingBottom: `max(env(safe-area-inset-bottom), ${theme.spacing(2)})`,\n },\n position: 'sticky',\n bottom: 0,\n left: 0,\n right: 0,\n boxShadow: '0px -1px 5px 0px rgba(0, 0, 0, 0.2)',\n zIndex: 3,\n display: 'flex',\n },\n}));\n\nconst FixedSaveBar = ({\n buttonContent,\n className,\n extraButton,\n onClick,\n saveButtonVariant = \"primary\",\n saveButtonType = \"submit\",\n topContent,\n ...buttonProps\n}: FixedSaveBarProps) => {\n const classes = useStyles();\n\n return (\n <Box className={clsx(classes.root, className)}>\n <Grid container direction=\"column\" spacing={2}>\n {topContent && (\n <Grid item>\n {topContent}\n </Grid>\n )}\n <Grid item container spacing={2}>\n {extraButton && (\n <Grid item xs>\n {extraButton}\n </Grid>\n )}\n <Grid item xs>\n <Button\n fullWidth\n onClick={onClick ? onClick : null}\n variant={saveButtonVariant}\n type={saveButtonType}\n {...buttonProps}\n >\n {buttonContent}\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </Box>\n );\n};\n\nexport default FixedSaveBar;\n","import type { Place } from \"../components/shared/GooglePlacesAutocomplete\";\n\ntype GooglePlaceGeometry = {\n location?: {\n lat: () => number,\n lng: () => number,\n },\n};\n\ntype GooglePlacePhoto = {\n getUrl: () => string,\n height: number,\n html_attributions: string[],\n width: number,\n};\n\ntype GooglePlaceApiResponse = {\n name?: string,\n formatted_address?: string,\n geometry?: GooglePlaceGeometry,\n place_id?: string,\n url?: string,\n photos?: GooglePlacePhoto[],\n};\n\nconst getPlaceFromGooglePlacesApiResponse = (\n place: GooglePlaceApiResponse,\n formattedAddress: boolean,\n): Place => {\n const nameOrEmptyString = isSearchableInput(place) ? place.name : '';\n const formattedAddressOrEmptyString = place.formatted_address ?? '';\n\n const id = place.place_id ?? '';\n const latitude = place.geometry ? place.geometry.location.lat() : '';\n const longitude = place.geometry ? place.geometry.location.lng() : '';\n const name = formattedAddress ? formattedAddressOrEmptyString : nameOrEmptyString;\n const url = place.url ?? '';\n const image = place.photos ? place.photos[0].getUrl() : undefined;\n\n return {\n id,\n image,\n latitude,\n longitude,\n name,\n url,\n };\n};\n\nfunction isSearchableInput(place: GooglePlaceApiResponse): boolean {\n return place.name && Object.keys(place).length > 1;\n}\n\nexport default getPlaceFromGooglePlacesApiResponse;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { IconButton } from \"@mui/material\";\nimport TextField, { BaseTextFieldProps } from \"@mui/material/TextField\";\nimport { DefaultTheme, makeStyles } from \"@mui/styles\";\nimport CloseIcon from '@mui/icons-material/Close';\nimport mergeRefs from \"../../services/mergeRefs\";\nimport getPlaceFromGooglePlacesApiResponse from \"../../services/getPlaceFromGooglePlacesApiResponse\";\n\nexport type Place = {\n id: string,\n image: string | undefined,\n latitude: string | number,\n longitude: string | number,\n name: string,\n url: string,\n};\n\ntype GooglePlacesAutocompleteProps = BaseTextFieldProps & {\n onSelect: (value: Place | null) => void,\n defaultValue?: string,\n formattedAddress?: boolean,\n types?: string[],\n disabled?: boolean,\n onCloseIconClicked?: any;\n};\n\nconst useStyles = makeStyles<DefaultTheme, { disabled: boolean }>((theme) => ({\n root: {\n position: 'relative',\n },\n input: {\n '& .MuiInputBase-root': {\n backgroundColor: theme.palette.common.white,\n },\n '& input': {\n width: `calc(100% - ${theme.spacing(7.5)})`,\n },\n },\n closeButtonContainer: {\n position: 'absolute',\n right: theme.spacing(1),\n cursor: ({disabled}) => disabled ? 'default' : 'pointer',\n fontSize: 24,\n height: '100%',\n },\n closeButton: {\n top: '50%',\n transform: 'translateY(-50%)',\n },\n}));\n\nconst GooglePlacesAutocomplete = React.forwardRef(({\n defaultValue,\n onSelect,\n types = [],\n disabled = false,\n formattedAddress = false,\n onCloseIconClicked,\n ...inputProps\n}: GooglePlacesAutocompleteProps, externalInputRef) => {\n const [clearable, setClearable] = useState(!!defaultValue);\n\n const classes = useStyles({ disabled });\n const inputRef = useRef(null);\n let autocomplete: google.maps.places.Autocomplete;\n\n const unselectValue = () => {\n onCloseIconClicked && onCloseIconClicked()\n inputRef.current.value = '';\n onSelect(undefined);\n setClearable(false);\n };\n\n useEffect(() => {\n if (inputRef.current && defaultValue) {\n inputRef.current.value = defaultValue;\n }\n }, [inputRef.current, defaultValue])\n\n useEffect(() => {\n autocomplete = new google.maps.places.Autocomplete(\n inputRef.current,\n { types: types },\n );\n\n autocomplete.addListener('place_changed', onPlaceChange);\n\n inputRef.current.addEventListener('keydown', function(event) {\n const selectedItem = document.getElementsByClassName('pac-item-selected');\n if (event.key === 'Enter' && selectedItem.length !== 0) {\n event.preventDefault();\n }\n });\n }, []);\n\n const onPlaceChange = () => {\n const place = getPlaceFromGooglePlacesApiResponse(autocomplete.getPlace(), formattedAddress)\n onSelect(place);\n inputRef.current.value = place.name;\n setClearable(true);\n }\n\n return (\n <div\n id='googleplaceAutocompleteDiv'\n className={classes.root}\n >\n <TextField\n className={classes.input}\n defaultValue={defaultValue}\n disabled={disabled}\n id=\"googlePlacesSearchTextbox\"\n inputRef={mergeRefs(externalInputRef, inputRef)}\n name=\"google_places\"\n variant=\"outlined\"\n {...inputProps}\n />\n {clearable && (\n <span className={classes.closeButtonContainer}>\n <IconButton\n className={classes.closeButton}\n data-test-id=\"clearButton\"\n disabled={disabled}\n onClick={unselectValue}\n >\n <CloseIcon />\n </IconButton>\n </span>\n )}\n </div>\n );\n});\n\nGooglePlacesAutocomplete.displayName = 'GooglePlacesAutocomplete';\n\nexport default GooglePlacesAutocomplete;\n","import React from 'react';\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport {\n Box,\n Step,\n StepLabel,\n Stepper,\n useMediaQuery,\n} from '@mui/material';\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n active: {\n color: [['#243060'], '!important'],\n },\n completed: {\n color: [['#979797'], '!important'],\n },\n iconContainer: {\n '& svg': {\n border: '1px solid #CBCBCB',\n borderRadius: '50%',\n color: '#FFFFFF',\n '&.Mui-active': {\n border: '2px solid #D3D6FF',\n borderRadius: '50%',\n color: '#545DFC',\n '& .MuiStepIcon-text': {\n fill: '#FFFFFF',\n },\n },\n '&.Mui-completed': {\n border: '2px solid #94E4D0',\n borderRadius: '50%',\n color: '#1EBE95',\n },\n '& .MuiStepIcon-text': {\n fill: '#979797',\n fontFamily: theme.typography.fontFamily,\n fontSize: 12,\n fontWeight: 600,\n lineHeight: '16px',\n },\n },\n },\n label: {\n color: '#979797',\n fontFamily: [[theme.typography.fontFamily], '!important'],\n fontSize: [[14], '!important'],\n fontWeight: [[600], '!important'],\n lineHeight: [['18px'], '!important'],\n },\n root: {\n '& .MuiStepConnector-line': {\n borderTopWidth: '2px',\n borderColor: '#CBCBCB',\n },\n paddingLeft: 0,\n },\n}));\n\nexport type HorizontalStepperProps = {\n activeStep?: number,\n steps: string[],\n};\n\nconst HorizontalStepper = ({\n activeStep,\n steps,\n}: HorizontalStepperProps) => {\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down(700));\n\n return (\n <Box sx={{ width: '100%' }}>\n <Stepper activeStep={activeStep} alternativeLabel={isMobile}>\n {steps.map((label) => (\n <Step classes={{ root: classes.root }} key={label}>\n <StepLabel\n classes={{\n active: classes.active,\n completed: classes.completed,\n iconContainer: classes.iconContainer,\n label: classes.label,\n }}\n >\n {label}\n </StepLabel>\n </Step>\n ))}\n </Stepper>\n </Box>\n );\n};\n\nHorizontalStepper.defaultProps = {\n activeStep: 0,\n};\n\nexport default HorizontalStepper;\n","import React, { useContext, useEffect, useReducer } from \"react\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { FormContext } from \"./RailsForm\";\nimport clsx from \"clsx\";\nimport CameraDropdownButton from \"./ImageUploader/CameraDropdownButton\";\nimport ImagePicker from \"./ImageUploader/ImagePicker\";\n\nconst reducer = (state, action) => {\n const setState = (props) => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'changeImage':\n return setState({ currentImage: action.currentImage, pickerOpened: false, restoreDefault: false });\n case 'restoreDefault':\n return setState({ currentImage: action.currentImage, pickerOpened: false, restoreDefault: true });\n case 'togglePicker':\n return setState({ ...state, pickerOpened: action.pickerOpened });\n default:\n throw new Error();\n };\n};\n\ntype ImageUploaderProps = {\n defaultImage: string,\n inputName: string,\n forcedAspectRatio?: number,\n image?: string,\n isFullSize?: boolean,\n onImageUpload?: (string) => void,\n onImageRestoreDefault?: () => void,\n originalImages?: string[],\n};\n\nconst useStyles = makeStyles((theme) => ({\n cameraDropdownIcon: {\n zIndex: 1,\n position: 'absolute',\n padding: theme.spacing(2),\n width: theme.spacing(3),\n height: theme.spacing(3),\n right: '36px',\n },\n cameraIconWrapper: {\n position: 'relative',\n display: 'inline-block',\n },\n defaultImage: {\n height: '300px !important',\n width: '100%',\n size: '200px',\n },\n image: {\n objectFit: 'cover',\n border: \"1px solid #e6e7e8\",\n boxShadow: '0 1px 2px 0 rgba(60, 64, 67, 0.3)',\n height: 200,\n width: '100%',\n },\n instruction: {\n fontSize: 14,\n },\n fullSize: {\n height: '100%',\n width: '100%',\n },\n}));\n\nconst ImageUploader = ({\n defaultImage,\n forcedAspectRatio,\n image,\n inputName,\n isFullSize,\n onImageUpload,\n onImageRestoreDefault,\n originalImages = [],\n}: ImageUploaderProps) => {\n const classes = useStyles();\n\n const initialState = {\n currentImage: image || defaultImage,\n pickerOpened: false,\n restoreDefault: false,\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const { currentImage, restoreDefault, pickerOpened } = state;\n const { onFormChange } = useContext(FormContext);\n\n const onImageChange = (url) => {\n if (currentImage !== url) {\n dispatch({type: 'changeImage', currentImage: url});\n if (onImageUpload) onImageUpload(url);\n }\n };\n\n const onRestoreDefault = () => {\n dispatch({type: 'restoreDefault', currentImage: imageToRestore})\n if (onImageRestoreDefault) onImageRestoreDefault();\n }\n\n useEffect(() => {\n if (currentImage && currentImage !== image) onFormChange();\n }, [currentImage]);\n\n const imageToRestore = originalImages.length > 0 ? originalImages[0] : defaultImage;\n const canRestoreDefault = (!!imageToRestore) && (currentImage !== imageToRestore);\n\n return (\n <Grid item>\n <Grid item\n className={classes.cameraIconWrapper}\n container\n justifyContent=\"center\"\n onDragOver={() => dispatch({ type: 'togglePicker', pickerOpened: true })}\n >\n <CameraDropdownButton\n className={classes.cameraDropdownIcon}\n onChoosePhoto={() => dispatch({ type: 'togglePicker', pickerOpened: true })}\n onRestoreDefault={onRestoreDefault}\n canRestoreDefault={canRestoreDefault}\n />\n <img\n src={currentImage}\n className={clsx(\n classes.image,\n {[classes.fullSize]: isFullSize},\n {[classes.defaultImage]: ((imageToRestore === defaultImage) && (defaultImage === currentImage))},\n )}\n data-test-id=\"image-preview\"\n />\n </Grid>\n <Typography\n color=\"textSecondary\"\n className={classes.instruction}\n textAlign='center'\n >\n Click the camera icon to add a custom photo\n </Typography>\n <ImagePicker\n forcedAspectRatio={forcedAspectRatio}\n onClose={() => dispatch({ type: 'togglePicker', pickerOpened: false })}\n onSuccess={(url) => onImageChange(url)}\n opened={pickerOpened}\n />\n <input\n data-test-id='image-input'\n name={inputName}\n value={(currentImage === defaultImage || restoreDefault) ? '' : currentImage}\n type=\"hidden\"\n />\n </Grid>\n );\n};\n\nexport default ImageUploader;\n","import React from 'react';\nimport { DropdownIconButton } from '../DropdownButton';\nimport CameraAltIcon from '@mui/icons-material/CameraAlt';\nimport RestoreIcon from '@mui/icons-material/Restore';\nimport UploadFileIcon from '@mui/icons-material/UploadFile';\nimport { ListItemText, MenuItem, MenuList } from '@mui/material';\n\ntype CameraDropdownButtonProps = {\n canRestoreDefault: boolean,\n className?: string,\n onChoosePhoto: () => void,\n onRestoreDefault: () => void,\n};\n\nconst CameraDropdownButton = ({\n canRestoreDefault,\n className,\n onChoosePhoto,\n onRestoreDefault,\n}: CameraDropdownButtonProps) => {\n return (\n <DropdownIconButton\n testId='camera-dropdown'\n className={className}\n menuList={\n <MenuList>\n <MenuItem\n data-test-id='choose-photo-option'\n onClick={() => onChoosePhoto()}>\n <UploadFileIcon fontSize=\"small\" sx={{ mr: 1 }} />\n <ListItemText primary='Upload photo' />\n </MenuItem>\n <MenuItem\n data-test-id='restore-default-option'\n disabled={!canRestoreDefault}\n onClick={() => onRestoreDefault()}\n >\n <RestoreIcon fontSize=\"small\" sx={{ mr: 1 }} />\n <ListItemText primary='Restore default' />\n </MenuItem>\n </MenuList>\n }\n icon={<CameraAltIcon/>}\n />\n );\n};\n\nexport default CameraDropdownButton;\n","import React, { useContext, useEffect, useRef } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { makeStyles } from \"@mui/styles\";\nimport { PickerOverlay } from \"filestack-react\";\nimport { GlobalContext, ImageUploaderContext } from \"../../Document\";\n\ntype ImagePickerProps = {\n forcedAspectRatio?: number,\n onClose: () => void,\n onSuccess: (url: string) => void,\n opened: boolean,\n};\n\ntype PickerOptions = {\n accept: string,\n fromSources: string[],\n maxFiles: number,\n maxSize: number,\n onClose: () => void,\n transformations?: {},\n};\n\nconst useStyles = makeStyles((theme) => ({\n pickerWrapper: {\n '& .fsp-picker': {\n '@supports (-webkit-overflow-scrolling: touch)': {\n '& input': {\n fontSize: 16,\n },\n },\n '@supports (top: env(safe-area-inset-top))': {\n top: 'env(safe-area-inset-top)',\n },\n },\n '& .fsp-footer--appeared': {\n '@supports (bottom: env(safe-area-inset-bottom))': {\n bottom: 'env(safe-area-inset-bottom)',\n },\n },\n '& .fst-sidebar': {\n '@media screen and (max-width: 768px)': {\n '@supports (bottom: env(safe-area-inset-bottom))': {\n bottom: 'calc(54px + env(safe-area-inset-bottom))',\n },\n },\n },\n },\n}));\n\nconst ImagePicker = ({\n forcedAspectRatio,\n onClose,\n onSuccess,\n opened,\n}: ImagePickerProps) => {\n const basicOptions: PickerOptions = {\n accept: \"image/*\",\n fromSources: [\"local_file_system\", \"imagesearch\", \"unsplash\", \"url\"],\n maxFiles: 1,\n maxSize: 25 * 1024 * 1024,\n onClose: () => onClose(),\n };\n\n if (forcedAspectRatio) {\n basicOptions.transformations = {\n crop: {\n aspectRatio: forcedAspectRatio,\n force: true,\n },\n };\n };\n\n const classes = useStyles();\n const { fileStackAPIKey } = useContext(ImageUploaderContext);\n const { isTestEnv } = useContext(GlobalContext);\n const pickerWrapper = useRef(null);\n\n const handlePickerChanges = (mutations, _observer) => {\n for (const { target } of mutations) {\n if (!target['tagName']) continue; // ensure target is an Element\n\n const inputs = target.querySelectorAll('.fsp-picker form input');\n if (inputs.length === 0) continue;\n\n for (const el of inputs) {\n if (el.getAttribute('inputmode')) continue;\n\n el.setAttribute('inputmode', 'search');\n }\n }\n };\n\n useEffect(() => {\n if (!pickerWrapper.current || !opened) return;\n if (typeof MutationObserver === 'undefined') return;\n\n const observer = new MutationObserver(handlePickerChanges);\n observer.observe(\n pickerWrapper.current, {\n childList: true,\n subtree: true,\n },\n );\n return () => {\n observer?.disconnect()\n };\n }, [pickerWrapper.current, opened]);\n\n return <>\n {opened && (\n <>\n {isTestEnv ? (\n <input\n onClick={() => onSuccess(\"https://cdn.filestackcontent.com/lKRl0DgDSkeBgX43AXKI\")}\n value=\"Upload Test Image\"\n type=\"button\"\n data-test-id='picker-test'\n />\n ) : (\n <Grid container className={classes.pickerWrapper} ref={pickerWrapper}>\n <PickerOverlay\n apikey={fileStackAPIKey}\n pickerOptions={basicOptions}\n onUploadDone={({ filesUploaded }) => onSuccess(filesUploaded[0].url)}\n />\n </Grid>\n )}\n </>\n )}\n </>;\n};\n\nexport default ImagePicker;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport Carousel from \"nuka-carousel\";\nimport { Typography, ButtonBase } from '@mui/material';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& .slider-control-centerright, .slider-control-centerleft': {\n zIndex: 2,\n },\n },\n image: {\n display: 'block',\n width: \"100%\",\n height: \"100%\",\n [theme.breakpoints.down('md')]: {\n height: '200px',\n },\n objectFit: 'cover',\n objectPosition: 'center',\n background: '#b4b9bc',\n },\n controlButtons: {\n '& button': {\n margin: [\"20px\",\"!important\"],\n },\n '& div': {\n height: \"32px\",\n weight: \"32px\",\n },\n opacity: \"100%\",\n fontWeight: \"bold\",\n fontSize: \"large\",\n },\n searchPageImageSize: {\n [theme.breakpoints.up('sm')]: {\n height: theme.spacing(32),\n },\n },\n small: {\n maxHeight: 200,\n },\n nonSearchPageImageSize: {\n [theme.breakpoints.up('sm')]: {\n height: theme.spacing(60),\n },\n },\n imageText: {\n color: \"#FFFFFF\",\n fontSize: \"14px\",\n },\n}));\n\ntype ImagesCarouselProps = {\n changeImageSize: boolean,\n images: string[],\n linkHref?: string,\n small?: boolean,\n segmentRef?: (element) => void,\n};\n\nconst ImagesCarousel = ({\n linkHref,\n changeImageSize,\n images,\n segmentRef,\n small,\n}: ImagesCarouselProps) => {\n const classes = useStyles();\n\n const renderBottomCenterControls = ({slideCount, currentSlide}) => (\n <Typography className={classes.imageText}>\n {currentSlide + 1}/{slideCount}\n </Typography>\n );\n\n const renderImage = image => {\n const imageTag = (\n <img\n data-test-id=\"tripStayCarouselPhoto\"\n loading=\"lazy\"\n src={image}\n key={image}\n className={clsx(classes.image,\n {[classes.small]: small},\n {[classes.searchPageImageSize]: changeImageSize},\n {[classes.nonSearchPageImageSize]: !changeImageSize},\n )}\n />\n );\n\n if (!linkHref) return imageTag;\n\n return (\n <ButtonBase\n disableTouchRipple\n onClick={() => window.open(linkHref, '_blank')}\n key={`a-${image}`}\n ref={segmentRef}\n sx={{ width: '100%' }}\n >\n {imageTag}\n </ButtonBase>\n )\n };\n\n return (\n <Carousel\n className={classes.root}\n wrapAround\n renderBottomCenterControls={renderBottomCenterControls}\n defaultControlsConfig={{\n nextButtonText: \">\",\n prevButtonText: \"<\",\n prevButtonClassName: classes.controlButtons,\n nextButtonClassName: classes.controlButtons,\n }}\n >\n {images.map(image => (\n renderImage(image)\n ))}\n </Carousel>\n );\n};\n\nexport default ImagesCarousel;\n","import React, { useState } from \"react\";\nimport { TextField, Grid, InputBase, InputAdornment} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box } from \"@mui/material\";\nimport clsx from \"clsx\";\n\ntype InputWithCharacterCounterProps = {\n className?: string,\n characterLimit: number,\n defaultBlurValue?: string,\n defaultValue?: string,\n focused?: boolean,\n fullWidth?: boolean,\n id?: string,\n inputClassName?: string,\n label?: string,\n noLabel?: boolean,\n multiline?: boolean,\n name?: string,\n onChange?: (element) => void,\n onClick?: () => void,\n onTextFieldFocus?: (event: any) => void,\n onTextFieldBlur?: (event: any) => void,\n placeholder?: string,\n rows?: number,\n testId?: string,\n withBorder?: boolean,\n hasExtraHeight?: boolean,\n};\n\nconst useStyles = makeStyles(theme => ({\n characterCountContainer: {\n fontSize: '12px',\n fontWeight: '200',\n marginTop: theme.spacing(0.5),\n color: '#69737a',\n },\n inputActive: {\n border: '2px solid #545DFC',\n },\n inputInactive: {\n border: '2px solid #b4b9bc',\n },\n inputContainer: {\n padding: theme.spacing(1),\n borderRadius: 6,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n '&:hover': {\n border: '2px solid #69737a',\n },\n },\n}));\n\nconst InputWithCharacterCounter = ({\n className,\n characterLimit,\n defaultBlurValue,\n defaultValue = '',\n focused,\n fullWidth,\n inputClassName,\n label,\n noLabel = false,\n name,\n onTextFieldFocus,\n onTextFieldBlur,\n rows,\n testId = 'inputField',\n withBorder,\n hasExtraHeight = false,\n ...props\n}: InputWithCharacterCounterProps ) => {\n const classes = useStyles();\n const useTextField = !!label || noLabel;\n const { onChange, id, placeholder, ...textFieldProps } = props;\n const [value, setValue] = useState(defaultValue);\n const [isActive, setIsActive] = useState(focused);\n const labelText = noLabel ? \"\" : label\n const extraHeightProps = hasExtraHeight ? {multiline: true, rows: 5} : null;\n const counterComponentPosition = hasExtraHeight ? {alignSelf: 'flex-end', paddingBottom: '5px'} : null;\n\n const handleChange = event => {\n if (onChange) {\n onChange(event);\n };\n\n setValue(event.target.value);\n };\n\n const onBlur = event => {\n setIsActive(false);\n if (defaultBlurValue && event.currentTarget.value.trim() == '') setValue(defaultBlurValue);\n\n onTextFieldBlur(event.currentTarget);\n };\n\n const onFocus = event => {\n setIsActive(true)\n onTextFieldFocus(event.currentTarget)\n }\n\n const CounterComponent = () => {\n if(hasExtraHeight) return <></>\n\n return <InputAdornment\n data-test-id='textFieldCounter'\n sx={{ alignItems: \"start\", fontSize: '12px', ...counterComponentPosition }}\n position=\"end\"\n >\n {value?.length || 0}/{characterLimit}\n </InputAdornment>;\n }\n\n return (\n <Grid\n className={clsx(className,\n {[classes.inputContainer]: !useTextField && withBorder,\n [classes.inputActive]: !useTextField && withBorder && isActive,\n [classes.inputInactive]: !useTextField && withBorder && !isActive,\n })}\n item\n xs={12}\n >\n {useTextField ?\n <TextField\n {...textFieldProps}\n {...extraHeightProps}\n data-test-id={testId}\n autoFocus={focused}\n id={id}\n label={labelText}\n name={name}\n onChange={handleChange}\n onBlur={onTextFieldBlur && onBlur}\n fullWidth={fullWidth}\n defaultValue={defaultValue}\n placeholder={placeholder}\n inputProps={{\n maxLength: characterLimit,\n }}\n InputProps={{\n endAdornment: CounterComponent(),\n }}\n /> :\n <>\n <InputBase\n className={inputClassName}\n id={id}\n {...textFieldProps}\n data-test-id={testId}\n name={name}\n onChange={handleChange}\n onBlur={(event) => onTextFieldBlur ? onBlur(event) : setIsActive(false)}\n fullWidth={fullWidth}\n defaultValue={defaultValue}\n inputProps={{\n maxLength: characterLimit,\n }}\n placeholder={placeholder}\n rows={rows}\n onFocus={(event) => onTextFieldFocus ? onFocus(event) : setIsActive(true)}\n />\n <Grid data-test-id=\"custom-counter-adornment\" textAlign=\"end\">\n <Box className={classes.characterCountContainer}>\n {value.length}/{characterLimit}\n </Box>\n </Grid>\n </>\n }\n </Grid>\n );\n};\n\nexport default InputWithCharacterCounter;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\nimport { track as trackAnalyticsEvent } from '../../services/analytics';\n\ntype InviteDialogProps = {\n isInviteValid?: boolean,\n inviterName?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n color: theme.palette.text.primary,\n },\n bold: {\n fontWeight: 500,\n display: 'inline',\n },\n titleWrapper: {\n textAlign: 'center',\n },\n titleEmoji: {\n fontSize: 48,\n marginBottom: theme.spacing(2),\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n },\n confirmationDescription: {\n paddingBottom: theme.spacing(3),\n color: theme.palette.text.primary,\n maxWidth: '300px',\n margin: '0 auto',\n },\n confirmationButtonText: {\n marginLeft: theme.spacing(1),\n },\n copiedLinkButton: {\n background: [[theme.palette.general.dark], '!important'],\n },\n howThisWorks: {\n fontSize: 16,\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n color: '#244599',\n textTransform: 'uppercase',\n },\n bodyWrapper: {\n textAlign: 'left',\n marginLeft: theme.spacing(1),\n lineHeight: '24px',\n },\n bodyEmoji: {\n fontSize: 28,\n paddingRight: 16,\n [theme.breakpoints.up(\"sm\")]: {\n paddingLeft: 28,\n },\n [theme.breakpoints.down(\"md\")]: {\n paddingLeft: 20,\n },\n },\n invalidDescription: {\n marginTop: theme.spacing(3),\n },\n inviteDescription: {\n paddingBottom: theme.spacing(1),\n color: theme.palette.text.primary,\n fontSize: 16,\n },\n}));\n\nconst trackCloseButtonClickedEventInSegment = () => {\n trackAnalyticsEvent('Welcome Modal Closed', {\n category: 'Welcome Modal',\n label: 'Dismissed',\n });\n};\n\nconst trackConfirmButtonClickedEventInSegment = () => {\n trackAnalyticsEvent('Welcome Modal Closed', {\n category: 'Welcome Modal',\n label: '\"Got it\" button',\n });\n};\n\nconst InviteDialog = ({\n inviterName,\n isInviteValid,\n}: InviteDialogProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(true);\n\n const handleClose = () => {\n setDialogOpen(false);\n location.replace(location.pathname);\n };\n\n const handleCloseButtonClick = () => {\n trackCloseButtonClickedEventInSegment();\n handleClose();\n };\n\n const handleConfirmButtonClick = () => {\n trackConfirmButtonClickedEventInSegment();\n handleClose();\n };\n\n return (\n <ConfirmationDialog\n actionText=\"Got it\"\n fullWidthButtons\n hideCancelButton\n isOpen={dialogOpen}\n message={\n <>\n <div className={classes.titleWrapper}>\n {isInviteValid ? (\n <Box>\n <Typography className={classes.titleEmoji}>\n 👋\n </Typography>\n <Typography className={classes.title}>\n Welcome to Troupe!\n </Typography>\n <Typography className={classes.confirmationDescription}>\n {`${inviterName} invited you to join an upcoming trip`}\n </Typography>\n <Typography className={classes.howThisWorks}>\n * How This Works *\n </Typography>\n </Box>\n ) : (\n <Box>\n <Typography className={classes.titleEmoji}>\n 📭\n </Typography>\n <Typography className={classes.title}>\n Something is missing...\n </Typography>\n </Box>\n )}\n </div>\n <div className={classes.bodyWrapper}>\n {isInviteValid ? (\n <Box>\n <Typography className={classes.inviteDescription}>\n <span className={classes.bodyEmoji}>\n 🤓\n </span>\n Take a look around\n </Typography>\n <Typography className={classes.inviteDescription}>\n <span className={classes.bodyEmoji}>\n 🛏️\n </span>\n Explore the <b>Stays</b> tab\n </Typography>\n <Typography className={classes.inviteDescription}>\n <span className={classes.bodyEmoji}>\n 🎉\n </span>\n Hit the <b>Respond to invite</b> button\n </Typography>\n </Box>) : (\n <Box>\n <Typography className={classes.invalidDescription}>\n Looks like that invite link is no longer valid for some reason.\n </Typography>\n <Typography className={classes.invalidDescription}>\n Don’t worry, you can still join this trip by hitting “Join trip” on the Overview page.\n </Typography>\n </Box>\n )}\n </div>\n </>\n }\n onClose={handleCloseButtonClick}\n onConfirm={handleConfirmButtonClick}\n />\n );\n};\n\nexport default InviteDialog;\n","import React, { useCallback, useContext, useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport EmailInviteForm from \"./EmailInviteForm\";\nimport ShareLinkSection from \"./InviteModal/ShareLinkSection\";\nimport ManageInvitesLink from \"./InviteModal/ManageInvitesLink\";\nimport Dialog from \"./Dialog\";\nimport Button from \"../buttons/Button\";\nimport { trackLink as trackAnalyticsEvent } from '../../services/analytics';\nimport { SegmentContext } from \"../Document\";\n\ntype InviteModalProps = {\n inviterId: string,\n onClose: () => void,\n tripId: string,\n tripGid: string,\n tripName: string,\n shareLinkSource: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n subtitle: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n fontWeight: 400,\n lineHeight: '24px',\n fontSize: 16,\n color: theme.palette.text.primary,\n },\n title: {\n fontSize: 24,\n fontWeight: 600,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n minWidth: 480,\n },\n },\n titleWrapper: {\n textAlign: 'center',\n flexDirection: 'row',\n },\n imageWrapper: {\n textAlign: 'center',\n flexDirection: 'row',\n paddingBottom: theme.spacing(1),\n },\n imageWrapperAlt: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n height: '114px',\n textAlign: 'center',\n },\n}));\n\nconst InviteModal = ({\n inviterId,\n onClose,\n tripId,\n tripGid,\n tripName,\n shareLinkSource,\n}: InviteModalProps) => {\n const classes = useStyles();\n const [fullContent, setFullContent] = useState(true);\n const { currentUserId, isPlanner } = useContext(SegmentContext);\n\n const addEmailsRef = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Add Emails Clicked',\n {\n tripId,\n userId: currentUserId,\n planner: isPlanner,\n },\n );\n }\n }, []);\n\n const renderFullContent = () => (\n <>\n <section className={classes.titleWrapper}>\n <Typography className={classes.title}>\n Share this trip\n </Typography>\n <Typography className={classes.subtitle}>\n Invite friends to suggest, comment, and vote on trip details.\n </Typography>\n </section>\n <section className={classes.imageWrapper}>\n <img\n className={classes.imageWrapperAlt}\n alt=\"\"\n src={`/assets/illustrations/paper_airplane.svg`}\n data-test-id='invite-modal-image'\n />\n </section>\n <Typography variant='h3' pb={1}>\n Invite by text message or social\n </Typography>\n <ShareLinkSection\n inviterId={inviterId}\n tripName={tripName}\n tripId={tripId}\n source={shareLinkSource}\n />\n <Typography variant='h3' pt={2} pb={1}>\n Invite by email\n </Typography>\n <Button\n data-test-id=\"add-emails-button\"\n fullWidth\n variant=\"secondary\"\n onClick={() => {setFullContent(false)}}\n ref={(el) => addEmailsRef(el)}\n >\n Add emails\n </Button>\n <ManageInvitesLink tripId={tripId} />\n </>\n );\n\n const renderEmailInviteContent = () => (\n <>\n <Box className={classes.titleWrapper} mb={1}>\n <Typography className={classes.title}>\n Share this trip\n </Typography>\n </Box>\n <EmailInviteForm\n tripGid={tripGid}\n tripId={tripId}\n onClose={onClose}\n />\n </>\n );\n\n return (\n <Dialog\n data-test-id=\"inviteModal\"\n isOpen\n message={fullContent ? renderFullContent() : renderEmailInviteContent()}\n onClose={() => onClose()}\n />\n );\n};\n\nexport default InviteModal;\n","import React, { useCallback } from \"react\";\nimport { Link } from \"@mui/material\";\nimport SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount';\nimport { makeStyles } from \"@mui/styles\";\nimport { trackLink as trackAnalyticsEvent } from '../../../services/analytics';\nimport * as Routes from \"../../../routes\"\n\ntype ManageInvitesLinkProps = {\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: '0 auto',\n paddingBottom: theme.spacing(3),\n paddingTop: theme.spacing(2),\n },\n link: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n textDecoration: 'none',\n '&:hover': {\n color: theme.palette.general.dark,\n textDecoration: 'none',\n },\n marginLeft: 0,\n marginRight: 0,\n },\n text: {\n paddingLeft: theme.spacing(2),\n fontWeight: 600,\n fontSize: 16,\n },\n}));\n\nconst ManageInvitesLink = ({\n tripId,\n}: ManageInvitesLinkProps) => {\n const classes = useStyles();\n const { tripInvitesPath } = Routes;\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Manage Invites Opened',\n {\n category: 'Invites',\n tripId: tripId,\n },\n );\n }\n }, []);\n\n return (\n <section className={classes.root}>\n <Link\n data-test-id='manage-invites-link'\n className={classes.link}\n href={tripInvitesPath(tripId)}\n ref={(el) => refs(el)}\n >\n <SupervisorAccountIcon/>\n <span className={classes.text}>\n Manage invites\n </span>\n </Link>\n </section>\n );\n};\n\nexport default ManageInvitesLink;\n","const setUTMParams = (inviteUrl: string, medium: string) => {\n const url = new URL(inviteUrl);\n const urlParams = new URLSearchParams(url.search);\n\n const appendParams = () => {\n urlParams.append('utm_medium', medium);\n urlParams.append('utm_source', 'invite');\n url.search = urlParams.toString();\n\n return url.href\n }\n\n return appendParams();\n}\n\nexport default setUTMParams;\n","import React, { useContext, useReducer } from \"react\";\nimport clsx from \"clsx\";\nimport copyToClipboard from \"copy-to-clipboard\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport {\n Grid,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { InsertLink } from \"@mui/icons-material\";\nimport FileCopyOutlinedIcon from '@mui/icons-material/FileCopyOutlined';\nimport ShareSheetButton from \"./ShareSheetButton\";\nimport { FormsContext, GlobalContext } from \"../../Document\";\nimport Button from '../../buttons/Button';\nimport * as routes from '../../../routes';\nimport { track as trackAnalyticsEvent } from '../../../services/analytics';\nimport setUTMparams from '../../../services/setUTMParams';\nimport performAsyncRequestWithCancelToken from \"../../../services/performAsyncRequestWithCancelToken\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nconst {\n fetchShortLinkApiURLShortenerPath,\n tripURL,\n} = routes;\n\ntype ShareLinkSectionProps = {\n inviterId: string,\n source?: string,\n tripId: string,\n tripName: string,\n};\n\nconst initialState = {\n copiedLink: false,\n createLabel: 'Create share link',\n creatingLink: false,\n errorMessage: null,\n shareLink: null,\n};\n\nconst reducer = (state: any, action: any) => {\n const setState = (props: any): any => Object.assign({}, state, props);\n\n switch (action.type) {\n case 'initial':\n return initialState;\n case 'shortLinkCreated':\n return setState({ ...initialState, shareLink: action.shareLink, copyLink: action.copyLink })\n case 'creating':\n return setState({ createLabel: 'Creating share link...', creatingLink: true });\n case 'creationFailed':\n return setState({ ...initialState, errorMessage: action.message })\n case 'copiedLink':\n return setState({ copiedLink: true })\n default:\n throw new Error();\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n copiedLinkButton: {\n height: `${theme.spacing(7)} !important`,\n width: 'auto',\n },\n copyLinkButton: {\n height: `${theme.spacing(7)} !important`,\n width: 'auto',\n },\n copyField: {\n width: '100%',\n },\n copyInviteSection: {\n display: 'inline-flex',\n textAlign: 'center',\n },\n createLinkSection: {\n flexDirection: 'column',\n },\n error: {\n color: '#e44444',\n fontSize: 14,\n marginTop: theme.spacing(1),\n },\n gridItem: {\n display: 'grid',\n },\n insertLink: {\n transform: \"translate(-40%) rotate(-50deg)\",\n },\n shareActionButtons: {\n display: 'flex',\n justifyContent: 'center',\n },\n shareButton: {\n marginRight: theme.spacing(1),\n },\n title: {\n fontSize: 18,\n fontWeight: 600,\n },\n}));\n\nconst ShareLinkSection = ({\n inviterId,\n source,\n tripId,\n tripName,\n} : ShareLinkSectionProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const classes = useStyles();\n const [actionsState, dispatch] = useReducer(reducer, initialState);\n const { csrfToken } = useContext(FormsContext);\n const { setSnackbar } = useContext(GlobalContext);\n const genericError = 'Something went wrong, please try again.';\n const inviteUrl = `${tripURL(tripId)}?inviter=${inviterId}`;\n const shareUrlWithUTM = setUTMparams(inviteUrl, 'shared');\n const copyUrlWithUTM = setUTMparams(inviteUrl, 'copied');\n\n const fetchShortLink = () => {\n dispatch({ type: 'creating'});\n performAsyncRequestWithCancelToken({\n method: 'GET',\n url: fetchShortLinkApiURLShortenerPath({ shareUrl: shareUrlWithUTM, copyUrl: copyUrlWithUTM }),\n data: {\n authenticity_token: csrfToken,\n },\n onSuccess: (response) => {\n trackAnalyticsEvent('Invite Link Generated', {\n category: 'Invites',\n inviteLinkUrl: response.data.shareLink,\n tripId,\n source,\n });\n dispatch({ type: 'shortLinkCreated', shareLink: response.data.shareLink, copyLink: response.data.copyLink })\n },\n onError: (error) => dispatch({ type: 'creationFailed', message: error.response?.data?.errors ? error.response.data.errors : genericError }),\n });\n };\n\n const trackCopyInviteLinkEventInSegment = () => {\n trackAnalyticsEvent('Invite Completed', {\n category: 'Invites',\n method: 'Copy share link',\n tripId,\n source,\n });\n };\n\n const copyLink = () => {\n trackCopyInviteLinkEventInSegment();\n copyToClipboard(actionsState.copyLink);\n dispatch({ type: 'copiedLink' });\n setSnackbar && setSnackbar('Link copied to clipboard.', 3000, 'info');\n };\n\n return <>\n {!!actionsState.shareLink ? (\n <Grid>\n <Grid container spacing={2} className={classes.copyInviteSection}>\n <Grid sm={navigator['share'] ? 8 : 10} xs={12} item>\n <TextField\n data-test-id=\"copy-field\"\n className={classes.copyField}\n defaultValue={actionsState.copyLink}\n inputProps={{\n readOnly: true,\n }}\n variant=\"outlined\"\n />\n </Grid>\n <Grid item sm={navigator['share'] ? 4 : 1} xs={12} className={classes.shareActionButtons}>\n {navigator['share'] &&\n <Grid item className={classes.gridItem} xs={6}>\n <ShareSheetButton\n className={clsx(classes.copyLinkButton, classes.shareButton)}\n title={tripName}\n url={actionsState.shareLink}\n />\n </Grid>\n }\n <Grid item className={classes.gridItem} xs={6}>\n {!actionsState.copiedLink ? (\n <Button\n className={classes.copyLinkButton}\n data-test-id='copy-link-button'\n onClick={() => copyLink()} variant=\"secondary\"\n >\n <FileCopyOutlinedIcon/>\n {isMobile && (\n <Typography variant='h3' pl={1}>\n Copy\n </Typography>\n )}\n </Button>\n ) : (\n <Button\n className={classes.copiedLinkButton}\n data-test-id='copied-link-button'\n variant=\"secondary\"\n >\n <CheckCircleIcon />\n </Button>\n )}\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n ) : (\n <Grid\n className={classes.createLinkSection}\n container\n direction='row'\n justifyContent=\"center\"\n >\n <Button\n data-test-id=\"create-share-link-button\"\n onClick={() => fetchShortLink()}\n variant=\"secondary\"\n disabled={actionsState.creatingLink}\n >\n <InsertLink className={classes.insertLink}/>\n {actionsState.createLabel}\n </Button>\n {actionsState.errorMessage &&\n <Grid item className={classes.error}>\n {actionsState.errorMessage}\n </Grid>\n }\n </Grid>\n )}\n </>;\n};\n\nexport default ShareLinkSection;\n","import React, { useContext } from \"react\";\nimport { useTheme } from \"@mui/styles\";\nimport Button from \"../../buttons/Button\";\nimport { captureException } from \"@sentry/minimal\";\nimport { track as trackAnalyticsEvent } from '../../../services/analytics';\nimport { Typography } from \"@mui/material\";\nimport { SegmentContext } from \"../../Document\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\ntype ShareSheetButtonProps = {\n className?: string,\n title: string,\n url: string,\n};\n\nconst ShareSheetButton = ({\n className,\n url,\n title,\n}: ShareSheetButtonProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const { currentUserId, isPlanner, tripId } = useContext(SegmentContext);\n\n const trackSharesheetActivated = (success: boolean) => {\n trackAnalyticsEvent('Sharesheet Menu Activated', {\n planner: isPlanner,\n tripId,\n userId: currentUserId,\n success,\n });\n };\n\n const shareContent = () => {\n const text = `${url}\\n I'm using Troupe to plan our upcoming trip! Create an account and RSVP to help the group decide what we should do.`;\n navigator\n .share({title, text})\n .then(() => {\n trackSharesheetActivated(true);\n })\n .catch(error => {\n if (error.name === 'AbortError') {\n trackSharesheetActivated(false);\n console.log('Could not share', error);\n } else {\n captureException(error)\n }\n });\n };\n\n const trackShareSheetClickInSegment = () => {\n trackAnalyticsEvent('Invite Completed', {\n category: 'Invites',\n method: 'Sharesheet',\n tripId: tripId,\n });\n };\n\n const shareInviteLink = () => {\n trackShareSheetClickInSegment();\n shareContent();\n };\n\n return (\n <>\n { navigator['share'] &&\n <Button\n className={className}\n onClick={() => shareInviteLink()}\n data-test-id=\"share-sheet-button\"\n variant=\"secondary\"\n >\n <img\n height=\"30px\"\n src=\"/assets/share_icon.svg\"\n width=\"22px\"\n />\n { isMobile &&\n <Typography variant='h3' pl={1}>\n Send\n </Typography>\n }\n </Button>\n }\n </>\n )\n};\n\nexport default ShareSheetButton;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport { makeStyles } from \"@mui/styles\";\nimport Tooltip from \"./Tooltip\";\n\nexport type LabelProps = {\n label: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: '#EFF2F4',\n borderRadius: '4px',\n color: '#334351',\n fontSize: '14px',\n fontWeight: 500,\n height: '22px',\n lineHeight: '24px',\n maxWidth: 'fit-content',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n}));\n\nconst Label = ({\n label,\n}: LabelProps) => {\n const classes = useStyles();\n const ref = useRef(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const tooltipText = isTruncated ? label : '';\n\n React.useEffect(() => {\n const refreshWindowDimensions = () => {\n if (ref.current) {\n setIsTruncated(ref.current.offsetWidth < ref.current.scrollWidth);\n };\n };\n\n refreshWindowDimensions();\n window.addEventListener('resize', refreshWindowDimensions);\n return () => window.removeEventListener('resize', refreshWindowDimensions);\n });\n\n return (\n <Tooltip title={tooltipText}>\n <Box className={classes.root} px={1} ref={ref}>\n {label}\n </Box>\n </Tooltip>\n );\n};\n\nexport default Label;\n","import React, { useCallback } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Typography } from '@mui/material';\nimport TimeStamp from \"./TimeStamp\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport { trackLink as trackAnalyticsEvent } from '../../services/analytics';\nimport UpdateIcon from '@mui/icons-material/Update';\nimport * as routes from '../../routes';\n\nconst {\n tripUpdatesPath,\n} = routes;\n\ntype LastUpdateFilterLinkProps = {\n date: number,\n tripId: string,\n tripObjectType: string\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n updatedAtButton: {\n [theme.breakpoints.up(\"md\")]: {\n padding: '14px',\n },\n height: '40px',\n '&:hover': {\n backgroundColor: '#F6F6F6',\n },\n },\n updatedAtButtonText: {\n color: '#5F6368',\n display: 'inline',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: theme.spacing(2),\n lineHeight: '24px',\n fontWeight: 500,\n width: 'max-content',\n [theme.breakpoints.down(\"md\")]: {\n paddingBottom: '8px',\n },\n '& svg': {\n verticalAlign: 'sub',\n },\n },\n marginLeft: {\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst LastUpdateFilterLink = ({\n date,\n tripId,\n tripObjectType,\n}: LastUpdateFilterLinkProps) => {\n const classes = useStyles();\n const verticalFiltered = tripObjectType === 'TripDateOption' ? 'Dates' : tripObjectType;\n\n const refs = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Updated At Selected',\n {\n verticalFiltered: verticalFiltered,\n tripId: tripId,\n },\n );\n }\n }, []);\n\n return (\n <ButtonBase\n data-test-id='lastUpdateFilterLink'\n href={tripUpdatesPath(tripId, { 'trip_event_filter': { 'trip_object_type': tripObjectType } })}\n ref={(element) => refs(element)}\n className={classes.updatedAtButton}\n >\n <Typography className={classes.updatedAtButtonText}>\n <UpdateIcon/><span className={classes.marginLeft}>Updated </span>\n <TimeStamp\n className={classes.updatedAtButtonText}\n date={date}\n />\n </Typography>\n </ButtonBase>\n )\n};\n\nexport default LastUpdateFilterLink;\n","import React from \"react\";\nimport {\n Typography,\n} from \"@mui/material\"\nimport { makeStyles } from \"@mui/styles\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\n\ntype LeaveConfirmationDialogProps = {\n path: string,\n fullWidthButtons: boolean,\n isOpen: boolean,\n onClose: () => void,\n};\n\nconst useStyles = makeStyles((theme) =>({\n root: {\n color: theme.palette.text.primary,\n },\n bold: {\n fontWeight: 500,\n display: 'inline',\n },\n}));\n\nconst LeaveConfirmationDialog = ({\n path,\n ...confirmationDialogProps\n}: LeaveConfirmationDialogProps) => {\n const classes = useStyles();\n return (\n <ConfirmationDialog\n actionPath={path}\n actionMethod=\"DELETE\"\n actionText=\"Leave\"\n message={\n <Typography className={classes.root}>\n You’ll still be able to rejoin this trip if you change your mind.\n </Typography>\n }\n title={`Leave this trip?`}\n {...confirmationDialogProps}\n />\n );\n};\n\nexport default LeaveConfirmationDialog;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { ButtonBase } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport type LinkProps = {\n className?: string,\n disabled?: boolean,\n href?: string,\n onClick?: () => void,\n onMouseDown?: (event) => void,\n target?: string,\n text: React.ReactNode,\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n color: theme.palette.link.default,\n '&:hover': {\n color: theme.palette.link.hover,\n },\n '&:focus': {\n color: theme.palette.link.focused,\n },\n '&:active': {\n color: theme.palette.link.pressed,\n },\n },\n disabled: {\n color: theme.palette.link.disabled,\n },\n}));\n\nconst Link = ({\n className,\n disabled,\n text,\n onMouseDown,\n ...otherProps\n}: LinkProps) => {\n const classes = useStyles();\n\n return (\n <ButtonBase\n className={clsx(classes.root, className, { [classes.disabled]: disabled })}\n disableRipple\n onMouseDown={onMouseDown}\n {...otherProps}\n >\n {text}\n </ButtonBase>\n );\n};\n\nexport default Link;\n","import React from 'react'\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport LinkifyIt from 'linkify-it';\nimport tlds from 'tlds';\n\ntype linkifyProps = {\n children: string;\n};\n\nconst useStyles = makeStyles((theme) => ({\n linkify: {\n wordBreak: 'break-word',\n },\n}));\n\nconst Linkify = ({\n children,\n}: linkifyProps) => {\n const classes = useStyles();\n const linkify = new LinkifyIt();\n linkify.tlds(tlds);\n\n const replaceLink = (string, url, key) => {\n return (\n <a\n href={url}\n className={classes.linkify}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n key={key}\n data-test-id=\"replacedLink\"\n data-element='link'>\n {string}\n </a>\n )\n }\n\n const stringParser = () => {\n if(!children) return;\n\n const matches = linkify.match(children);\n if(!matches) return children\n\n const elements = [];\n let lastIndex = 0;\n\n matches.forEach((match, index) => {\n if (match.index > lastIndex) {\n elements.push(children.substring(lastIndex, match.index));\n }\n\n elements.push(replaceLink(match.text, match.url, index))\n lastIndex = match.lastIndex;\n })\n\n if (children.length > lastIndex) {\n elements.push(children.substring(lastIndex));\n }\n\n return (elements.length === 1) ? elements[0] : elements;\n }\n\n return <>{stringParser()}</>\n}\n\nexport default Linkify;\n","import React, { useEffect, useRef } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\n\ntype InfoWindowProps = {\n children?: React.ReactNode,\n onClickOut: () => void,\n position?: 'absolute' | 'relative',\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n bottom: 2,\n left: -134,\n width: theme.spacing(35),\n backgroundColor: '#FFFFFF',\n boxShadow: '-2px -2px 7px rgba(1, 1, 1, 0.15)',\n zIndex: 100,\n borderRadius: '10px',\n },\n}));\n\nconst InfoWindow = ({\n children,\n onClickOut,\n position = 'absolute',\n}: InfoWindowProps) => {\n const classes = useStyles();\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const handleClickOut = (event: MouseEvent | TouchEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {\n onClickOut();\n }\n };\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickOut);\n document.addEventListener('touchstart', handleClickOut);\n return () => {\n document.removeEventListener('mousedown', handleClickOut);\n document.removeEventListener('touchstart', handleClickOut);\n };\n }, []);\n\n return (\n <div className={classes.root} ref={wrapperRef} data-test-id=\"infoMarker\" style={{position: position}}>\n {children}\n </div>\n );\n};\n\nexport default InfoWindow;\n","import React, { useMemo, useState } from \"react\";\nimport GoogleMapReact from 'google-map-react';\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/material/styles\";\n\nexport type Marker = {\n latitude: number | null,\n longitude: number | null,\n};\n\ntype MapViewProps = {\n latitude?: number,\n longitude?: number,\n markers: Marker[],\n onDragEnd?: () => void,\n onMapLoaded?: (map) => void,\n onZoomChange?: () => void,\n radius?: number,\n renderMarker: (map, marker) => void,\n};\n\nconst MapView = ({\n latitude,\n longitude,\n markers,\n onDragEnd = () => {},\n onMapLoaded = () => {},\n onZoomChange = () => {},\n radius,\n renderMarker,\n}: MapViewProps) => {\n const [map, setMap] = useState(null);\n const [loaded, setLoaded] = useState(false);\n\n const defaultCenter = useMemo(() => {\n return (\n {\n lat: markers[0]?.latitude || Number(latitude),\n lng: markers[0]?.longitude || Number(longitude),\n }\n )\n }, []);\n\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const maxMapZoomLevel = isMobile ? 19 : 18;\n const defaultZoom = useMemo(() => Math.round(maxMapZoomLevel - Math.log2(Number(radius) / 500)) || 14, []);\n\n const apiIsLoaded = (map) => {\n setMap(map);\n onMapLoaded(map);\n };\n\n const handleDragEnd = () => {\n if (loaded && onDragEnd) onDragEnd();\n };\n\n const handleZoomChange = () => {\n if (loaded && onZoomChange) onZoomChange();\n };\n\n return (\n <GoogleMapReact\n defaultCenter={defaultCenter}\n defaultZoom={defaultZoom}\n yesIWantToUseGoogleMapApiInternals\n onGoogleApiLoaded={({map}) => apiIsLoaded(map)}\n onTilesLoaded={() => setLoaded(true)}\n options={{\n clickableIcons: false,\n fullscreenControl: false,\n panControl: false,\n scaleControl: false,\n maxZoom: maxMapZoomLevel,\n }}\n onDragEnd={() => handleDragEnd()}\n onZoomAnimationEnd={() => handleZoomChange()}\n >\n {map && markers.map((marker) => renderMarker(map, marker))}\n </GoogleMapReact>\n );\n};\n\nexport default MapView;\n","import React from 'react';\nimport { useTrackSERPEvent } from \"./useSERPEvents\";\n\nconst useListViewEventRef = (vertical) => {\n const { trackSERPLinkEvent } = useTrackSERPEvent();\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n trackSERPLinkEvent(\n element,\n 'List View Clicked',\n {\n vertical,\n },\n );\n }\n }, []);\n\n return buttonRef;\n};\n\nexport default useListViewEventRef;\n","import React from \"react\";\nimport { useTheme } from \"@mui/styles\";\nimport {\n Hidden,\n useMediaQuery,\n} from \"@mui/material\";\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ListIcon from '@mui/icons-material/List';\nimport FloatingButton from \"../../buttons/FloatingButton\";\nimport useListViewEventRef from \"../../../services/segmentEvents/useListViewEventRef\";\n\ntype MobileListButtonProps = {\n onClick: () => void,\n source: string,\n};\n\nconst MobileListButton = ({\n onClick,\n source,\n}: MobileListButtonProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const listButtonPlacement = isMobile ? 'bottom' : 'top-left';\n const listViewButtonRef = useListViewEventRef(source);\n\n return (\n <FloatingButton onClick={onClick} placement={listButtonPlacement} ref={listViewButtonRef}>\n <Hidden mdDown><ChevronLeftIcon /> Back to list</Hidden>\n <Hidden mdUp><ListIcon /> List</Hidden>\n </FloatingButton>\n );\n};\n\nexport default MobileListButton;\n","import React from \"react\";\nimport { Hidden } from \"@mui/material\";\nimport MapIcon from '@mui/icons-material/Map';\nimport FloatingButton from \"../../buttons/FloatingButton\";\nimport useExpandMapEventRef from \"../../../services/segmentEvents/useExpandMapEventRef\";\n\ntype MobileMapButtonProps = {\n onClick: () => void,\n source: string,\n};\n\nconst MobileMapButton = ({\n onClick,\n source,\n}: MobileMapButtonProps) => {\n const expandMapButtonRef = useExpandMapEventRef(source, 'map');\n\n return (\n <Hidden mdUp>\n <FloatingButton onClick={onClick} ref={expandMapButtonRef} >\n <MapIcon /> Map\n </FloatingButton>\n </Hidden>\n );\n};\n\nexport default MobileMapButton;\n","import React from 'react';\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ErrorIcon from '@mui/icons-material/Error';\n\nconst useStyles = makeStyles(theme => ({\n alertMessage: {\n fontSize: theme.spacing(2),\n fontWeight: 600,\n lineHeight: '24px',\n },\n missingVoteAlert: {\n backgroundColor: '#F4F5FF',\n height: '45px',\n },\n errorIcon: {\n color: '#7D94A9',\n marginRight: theme.spacing(1),\n verticalAlign: 'bottom',\n },\n}));\n\nconst MissingVoteAlert = () => {\n const classes = useStyles();\n\n return (\n <Grid\n container\n item\n className={classes.missingVoteAlert}\n data-test-id=\"missing-vote-alert\"\n alignItems=\"center\"\n justifyContent=\"center\">\n <Grid item >\n <ErrorIcon className={classes.errorIcon}/>\n </Grid>\n <Grid item>\n <Typography className={classes.alertMessage}>Missing your vote</Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default MissingVoteAlert;\n","import React from \"react\";\nimport {\n Box,\n Divider,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { isMobile, isIOS } from \"react-device-detect\";\n\nexport type ModalProps = {\n children?: React.ReactNode,\n closePath: string,\n saveBar?: React.ReactNode,\n subtitle?: React.ReactNode,\n title: React.ReactNode | string,\n withDivider: boolean,\n onClose?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n modal: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n minHeight: '100%',\n maxWidth: '720px',\n '@supports (padding-top: env(safe-area-inset-top))': {\n padding: 'env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)',\n },\n border: '2px solid #e6e7e8',\n [theme.breakpoints.down(\"md\")]: {\n borderTop: 'none',\n borderRadius: '20px',\n boxShadow: '0px -4px 4px rgba(0, 0, 0, 0.02)',\n },\n width: '100%',\n minWidth: '200px',\n backgroundColor: 'white',\n },\n modalContent: {\n flex: 1,\n position: 'relative',\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n top: '10px',\n },\n title: {\n marginBottom: theme.spacing(2),\n },\n subtitle: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n fontSize: 16,\n },\n}));\n\nconst Modal = ({\n children,\n closePath,\n saveBar,\n subtitle = <></>,\n title,\n withDivider,\n onClose=() => {},\n}: ModalProps) => {\n const classes = useStyles();\n\n const viewportHandler = () => {\n const saveBar = document.getElementById('save-bar');\n\n if (saveBar) {\n const bottom = window.innerHeight - window.visualViewport.height - window.visualViewport.offsetTop;\n saveBar.style.bottom = `${bottom}px`;\n }\n };\n\n if (isMobile && isIOS && window.visualViewport) {\n window.visualViewport.addEventListener('resize', viewportHandler);\n window.visualViewport.addEventListener('scroll', viewportHandler);\n }\n\n return (\n <>\n <Box className={classes.modal} data-test-id='modal'>\n <Box className={classes.modalContent}>\n <Box className={classes.closeButton}>\n <IconButton data-test-id=\"close-modal-button\" href={closePath} onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </Box>\n <Box px={2} pt={2} pb={1}>\n {title}\n { subtitle &&\n <div className={classes.subtitle} data-test-id='modal-subtitle'>\n {subtitle}\n </div>\n }\n </Box>\n {withDivider && <Divider />}\n <Box padding={2}>\n {children}\n </Box>\n </Box>\n {saveBar}\n </Box>\n </>\n );\n};\n\nModal.defaultProps = {\n withDivider: true,\n};\n\nexport default Modal;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport FixedSaveBar from \"./FixedSaveBar\";\nimport Modal from \"./Modal\";\nimport RailsForm from \"./RailsForm\";\nimport { Grid, Typography } from \"@mui/material\";\nimport { ButtonType, ButtonVariant } from '../buttons/Button';\nimport Tooltip from \"./Tooltip\";\nimport clsx from 'clsx';\n\nconst TOOLTIP_COLOR = '#343435';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n maxWidth: '720px',\n flex: 1,\n flexDirection: 'column',\n alignItems: 'center',\n },\n root: {\n alignItems: 'center',\n flexDirection: 'column',\n display: 'flex',\n minHeight: '100%',\n },\n title: {\n marginBottom: theme.spacing(2),\n },\n tooltip: {\n backgroundColor: TOOLTIP_COLOR,\n fontSize: '14px',\n lineHeight: '21px',\n fontWeight: '400',\n top: '24px',\n padding: theme.spacing(1),\n },\n arrow: {\n color: TOOLTIP_COLOR,\n },\n}));\n\ntype ModalFormProps = {\n children: Array<React.ReactElement> | React.ReactElement,\n closePath: string,\n formActionPath: string,\n title: string,\n disabledSubmit?: boolean,\n extraSaveBarButton?: React.ReactNode,\n formMethod?: string,\n onClick?: (event?: any) => void,\n saveBarTopContent?: React.ReactNode,\n saveButtonLabel?: string,\n saveButtonType?: ButtonType,\n saveButtonVariant?: ButtonVariant,\n subtitle?: React.ReactNode,\n useDefaultSaveButton?: boolean,\n withChangeDetection?: boolean,\n saveTooltipText?: string,\n onModalClose?: () => void,\n upperImage?: React.ReactNode,\n titleClassName?: string,\n};\n\nconst ModalForm = ({\n children,\n closePath,\n disabledSubmit,\n extraSaveBarButton,\n formActionPath,\n formMethod,\n onClick,\n saveBarTopContent,\n saveButtonLabel,\n saveButtonType = 'submit',\n saveButtonVariant,\n subtitle = <></>,\n title,\n useDefaultSaveButton,\n withChangeDetection,\n saveTooltipText = '',\n upperImage,\n onModalClose=()=>{},\n titleClassName,\n}: ModalFormProps) => {\n const classes = useStyles();\n\n const wrapWithTooltip = (children : React.ReactNode) => (\n <Tooltip\n title={saveTooltipText}\n arrow data-test-id=\"tooltip\"\n classes={{tooltip: classes.tooltip, arrow: classes.arrow}}\n placement=\"top\"\n >\n <Grid>\n {children}\n </Grid>\n </Tooltip>\n )\n\n const renderDefaultSaveButton = () => (\n <FixedSaveBar\n data-test-id=\"submit-button\"\n buttonContent={saveButtonLabel}\n disabled={disabledSubmit}\n onClick={saveButtonType !== 'submit' ? onClick : null}\n extraButton={extraSaveBarButton}\n saveButtonVariant={saveButtonVariant}\n saveButtonType={saveButtonType}\n topContent={saveBarTopContent}\n />\n )\n\n const renderSaveButton = () => (\n useDefaultSaveButton && (\n saveTooltipText ? wrapWithTooltip(renderDefaultSaveButton()) : renderDefaultSaveButton()\n )\n );\n\n return (\n <RailsForm\n action={formActionPath}\n className={classes.root}\n method={formMethod}\n onSubmit={saveButtonType === 'submit' ? onClick : null}\n withChangeDetection={withChangeDetection}\n >\n <Grid container className={classes.container} sx={{backgroundColor: upperImage ? '#FEF6E7' : 'white' }}>\n {upperImage}\n <Modal\n closePath={closePath}\n subtitle={subtitle}\n onClose={onModalClose}\n title={\n <Typography variant=\"h2\" className={clsx(classes.title, titleClassName)}>\n {title}\n </Typography>\n }\n saveBar={renderSaveButton()}\n withDivider={true}\n >\n {children}\n </Modal>\n </Grid>\n </RailsForm>\n );\n};\n\nModalForm.defaultProps = {\n useDefaultSaveButton: true,\n saveButtonLabel: \"Save\",\n withChangeDetection: false,\n};\n\nexport default ModalForm;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport Typography from \"@mui/material/Typography\";\n\ntype NoSuggestionsYetProps = {\n className?: string,\n heading?: string,\n illustration?: string,\n subheading?: string | React.ReactNode,\n listItems?: string[],\n};\n\nconst useNoSuggestionsStyles = makeStyles(theme => ({\n root: {\n margin: '0 auto',\n maxWidth: theme.spacing(52),\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(2),\n },\n },\n image: {\n [theme.breakpoints.up('sm')]: {\n marginTop: theme.spacing(2),\n },\n width: '100%',\n },\n title: {\n color: '#272727',\n fontSize: '18px',\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n textAlign: 'center',\n },\n message: {\n fontSize: 16,\n textAlign: 'center',\n [theme.breakpoints.up('sm')]: {\n '& br': {\n display: 'none',\n },\n },\n },\n listItems: {\n fontSize: 16,\n textAlign: 'center',\n padding: 0,\n '& li': {\n listStyleType: 'decimal',\n listStylePosition: 'inside',\n },\n },\n}))\n\nconst NoSuggestionsYet = ({\n className,\n heading,\n illustration,\n subheading,\n listItems,\n}: NoSuggestionsYetProps) => {\n const classes = useNoSuggestionsStyles();\n\n return (\n <div className={clsx(classes.root, className)}>\n {illustration && (\n <img\n className={classes.image}\n alt=\"No suggestions\"\n src={`/assets/illustrations/${illustration}.svg`}\n data-test-id='no-suggestions-yet-img'\n />\n )}\n <Typography className={classes.title}>\n {heading}\n </Typography>\n {subheading && (\n <Typography className={classes.message}>\n {subheading}\n </Typography>\n )}\n {listItems && (\n <ul className={classes.listItems}>\n {listItems.map((item, index) => (\n <li key={index}>{item}</li>\n ))}\n </ul>\n )}\n </div>\n );\n};\n\nexport default NoSuggestionsYet;\n","import React from \"react\";\nimport {\n Avatar,\n Box,\n Typography,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nexport type ObjectAuthorProps = {\n authorName: string,\n avatarUrl: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n authorName: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '32px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n avatar: {\n width: 32,\n height: 32,\n marginRight: theme.spacing(1),\n },\n root: {\n display: 'inline-flex',\n maxWidth: '100%',\n verticalAlign: 'middle',\n },\n}));\n\nconst ObjectAuthor = ({\n authorName,\n avatarUrl,\n}: ObjectAuthorProps) => {\n const classes = useStyles();\n\n return (\n <Box className={classes.root}>\n <Avatar src={avatarUrl} className={classes.avatar} />\n <Typography className={classes.authorName}>Added by {authorName}</Typography>\n </Box>\n );\n};\n\nexport default ObjectAuthor;\n","const compareArrays = (array1: any[], array2: any[]): boolean => {\n const first = [array1].flat().sort();\n const second = [array2].flat().sort();\n\n if (first.length !== second.length) {\n return false;\n }\n\n return first.every((value, index) => value === second[index]);\n};\n\nconst compareElements = (element1: any, element2: any): boolean => {\n if (Array.isArray(element1) || Array.isArray(element2)) {\n return compareArrays(element1, element2);\n }\n\n if (element1 !== element2) {\n return false;\n }\n\n return true;\n};\n\nconst compareObjects = (object1: {[k: string]: any}, object2: {[k: string]: any}): boolean => {\n const compareObjectProperty = (property: string): boolean => {\n return compareElements(object1[property], object2[property]);\n };\n\n for(let property in object1) {\n if (!compareObjectProperty(property)) {\n return false;\n }\n }\n\n for(let property in object2) {\n if (!compareObjectProperty(property)) {\n return false;\n }\n }\n\n return true;\n};\n\nexport default compareObjects;\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { FormsContext } from \"../Document\";\nimport compareObjects from \"../../services/compareObjects\";\nimport serializeForm from \"../../services/serializeForm\";\nimport mergeRefs from \"../../services/mergeRefs\";\nimport type { FormEvent } from \"react\";\n\ntype RailsFormProps = {\n action: string,\n children?: React.ReactNode,\n className?: string,\n method?: string,\n onSubmit?: ((event?: FormEvent<HTMLFormElement>) => void) | null,\n submitDisabled?: boolean,\n withChangeDetection?: boolean,\n};\n\ntype FormContextValue = {\n disabled: boolean,\n onFormChange?: (() => void) | null,\n submit?: ((event?: FormEvent<HTMLFormElement>) => void) | null,\n};\n\nexport const FormContext = React.createContext<FormContextValue>({\n disabled: false,\n onFormChange: null,\n submit: null,\n});\n\nconst RailsForm = React.forwardRef(({\n action,\n children,\n className,\n method,\n submitDisabled,\n onSubmit,\n withChangeDetection,\n ...formProps\n}: RailsFormProps, externalFormRef) => {\n const { csrfToken } = useContext(FormsContext);\n const [disabled, setDisabled] = useState(!!withChangeDetection);\n const [initialFormValues, setInitialFormValues] = useState({});\n const formRef = useRef<HTMLFormElement | undefined>(undefined);\n\n useEffect(() => {\n setInitialFormValues(serializeForm(formRef.current));\n }, []);\n\n const isGetMethod = () => {\n return method && method.toUpperCase() === 'GET';\n };\n\n const handleFormSubmit = (event: FormEvent<HTMLFormElement>) => {\n if (disabled || submitDisabled) {\n event.preventDefault();\n } else {\n !!onSubmit ? onSubmit(event) : setDisabled(true)\n }\n };\n\n const handleFormChange = () => {\n if (withChangeDetection) {\n const currentFormValues = serializeForm(formRef.current);\n\n const isUnchangedForm = compareObjects(\n initialFormValues,\n currentFormValues,\n );\n\n setDisabled(isUnchangedForm);\n }\n };\n\n const submitForm = () => {\n setDisabled(true);\n formRef.current?.submit();\n };\n\n return (\n <FormContext.Provider value={{\n disabled,\n onFormChange: handleFormChange,\n submit: submitForm,\n }}>\n <form\n action={action}\n className={className}\n method={isGetMethod() ? \"get\" : \"post\"}\n onChange={handleFormChange}\n onSubmit={handleFormSubmit}\n ref={mergeRefs(externalFormRef, formRef)}\n {...formProps}\n >\n {!isGetMethod() && (\n <>\n <input type=\"hidden\" name=\"_method\" value={method} />\n <input type=\"hidden\" name=\"authenticity_token\" value={csrfToken} />\n </>\n )}\n {children}\n </form>\n </FormContext.Provider>\n );\n});\n\nRailsForm.defaultProps = {\n method: 'POST',\n withChangeDetection: true,\n};\n\nexport default RailsForm;\n","import React, { useState } from \"react\";\nimport { ButtonBase, Grid, Stack, useMediaQuery } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport Tooltip from '../Tooltip';\nimport EmojiPicker, { PickerPosition, PickerHorizontalPosition, PickerVerticalPosition } from \"./EmojiPicker\";\nimport type { BaseEmoji } from 'emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index';\nimport { ClickAwayListener } from '@mui/base';\nimport clsx from \"clsx\";\n\ntype EmojiCounterType = {\n emoji: BaseEmoji['native'],\n count: number,\n hoverLabel: string,\n hasCurrentUserSelected?: boolean,\n name: BaseEmoji['name'],\n permapage?: boolean,\n};\n\ntype EmojiCountersProps = {\n reactions: EmojiCounterType[],\n onAdd: (event, emoji: BaseEmoji) => void,\n onSelect: (event, nativeEmoji: BaseEmoji['native']) => void,\n disabled: boolean,\n isUserLoggedIn: boolean,\n permapage?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n emojiBorder: {\n cursor: 'pointer',\n backgroundColor: '#FFFFFF',\n border: '1px solid #BEC9D4',\n borderRadius: '8px',\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n height: theme.spacing(4),\n alignItems: 'center',\n textAlign: 'center',\n minWidth: theme.spacing(4),\n },\n isSelected: {\n backgroundColor: '#DDEBFF',\n border: '1px solid #3689FF',\n },\n isDisabled: {\n '& img': {\n // use filter to take color to: '#BEC9D4' calculated with https://codepen.io/sosuke/pen/Pjoqqp\n filter: 'invert(84%) sepia(10%) saturate(272%) hue-rotate(169deg) brightness(96%) contrast(86%)',\n },\n },\n}));\n\nconst EmojiCounters : React.FC<EmojiCountersProps> = ({\n reactions = [],\n onAdd,\n onSelect,\n disabled,\n isUserLoggedIn,\n permapage = false,\n}) => {\n const classes = useStyles();\n const { spacing, breakpoints } = useTheme();\n const isMobile = useMediaQuery(breakpoints.down(470));\n\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [pickerPosition, setPickerPosition] = useState<PickerPosition>({\n horizontal: PickerHorizontalPosition.LEFT,\n vertical: PickerVerticalPosition.BOTTOM,\n });\n\n const updatePickerPosition: (point: { x: number, y: number }) => void = ({ x, y }) => {\n if(isMobile) return;\n const { width = 0, height = 0} = window.visualViewport ?? {};\n setPickerPosition({\n horizontal: x > width / 2 ? PickerHorizontalPosition.RIGHT : PickerHorizontalPosition.LEFT,\n vertical: y < height / 2 ? PickerVerticalPosition.BOTTOM : PickerVerticalPosition.TOP,\n })\n }\n\n return(\n <Grid container direction='row' spacing={1} mt={1} flexWrap='wrap' width='auto' onMouseDown={(event) => event.stopPropagation()}>\n {reactions.map((reaction) => (\n <Grid item key={reaction.emoji}>\n <Tooltip title={reaction.hoverLabel} placement=\"top\" data-test-id=\"emoji-tooltip\" enterTouchDelay={400} enterDelay={500} >\n <Stack\n direction='row'\n justifyContent='space-between'\n minWidth='50px'\n className={clsx(classes.emojiBorder, {[classes.isSelected] : reaction.hasCurrentUserSelected})}\n onClick={(event) => !disabled && onSelect(event, reaction.emoji)}\n data-test-id='emoji-box'\n >\n <Stack>{reaction.emoji}</Stack>\n <Stack justifyContent='flex-end' minWidth={spacing(1.5)}>{reaction.count}</Stack>\n </Stack>\n </Tooltip>\n </Grid>\n ))}\n <Grid item>\n <Tooltip title={!isUserLoggedIn ? 'Join the trip to add a reaction' : ''} placement=\"top\" data-test-id=\"picker-tooltip\" >\n <span>\n <ButtonBase\n className={clsx(classes.emojiBorder, {[classes.isDisabled] : disabled || !isUserLoggedIn})}\n onClick={(event) => {\n event.preventDefault()\n updatePickerPosition({ x: event.clientX, y: event.clientY })\n setIsPickerOpen(prevState => !prevState)\n }}\n data-test-id='emoji-picker'\n disabled={disabled || !isUserLoggedIn}\n >\n <img src=\"/assets/smiley_plus.svg\" alt=\"Add Emoji\" />\n </ButtonBase>\n </span>\n </Tooltip>\n { isPickerOpen && (\n <ClickAwayListener onClickAway={() => setIsPickerOpen(false)} onClick={(event) => event.preventDefault()}>\n <EmojiPicker\n onEmojiSelect={(emoji, event) => {\n if(disabled) return;\n onAdd(event, emoji);\n setIsPickerOpen(false);\n }}\n pickerPosition={pickerPosition}\n isFullWidth={isMobile}\n permapage={permapage}\n />\n </ ClickAwayListener>\n ) }\n </Grid>\n </Grid>\n )\n}\n\nexport default EmojiCounters;\n","import React from 'react';\nimport data from '@emoji-mart/data';\nimport Picker from '@emoji-mart/react';\nimport { Stack } from '@mui/material';\nimport type { BaseEmoji } from 'emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index';\nimport { makeStyles, DefaultTheme } from \"@mui/styles\";\n\nexport type PickerPosition = {\n horizontal: PickerHorizontalPosition,\n vertical: PickerVerticalPosition,\n}\ntype EmojiPickerProps = {\n onEmojiSelect: (emoji: BaseEmoji, event) => void,\n pickerPosition: PickerPosition,\n isFullWidth?: boolean,\n permapage?: boolean,\n}\n\nconst useStyles = makeStyles<DefaultTheme, {isTopHalf: boolean, isRightHalf: boolean}>((theme) => ({\n picker: {\n zIndex: 1002,\n [theme.breakpoints.up(470)]: {\n position: 'absolute',\n top: ({isTopHalf}) => isTopHalf ? '0' : 'auto',\n bottom: ({isTopHalf}) => isTopHalf ? 'auto' : '40px',\n left: 'auto',\n right: ({isRightHalf}) => isRightHalf ? theme.spacing(1) : 'auto',\n },\n [theme.breakpoints.down(470)]: {\n margin: '0 !important',\n bottom: 0,\n position: 'fixed',\n left: 0,\n right: 0,\n top: 'auto',\n '& em-emoji-picker' : {\n width: '100%',\n },\n },\n },\n}));\n\nexport enum PickerHorizontalPosition {\n LEFT = 'left',\n RIGHT = 'right',\n}\n\nexport enum PickerVerticalPosition {\n TOP = 'top',\n BOTTOM = 'bottom',\n}\n\nconst EmojiPicker = React.forwardRef(({\n onEmojiSelect,\n pickerPosition: { horizontal, vertical },\n isFullWidth = false,\n permapage = false,\n} : EmojiPickerProps, ref) => {\n if(!ref) return null;\n\n const classes = useStyles({\n isTopHalf: vertical !== PickerVerticalPosition.TOP && !permapage,\n isRightHalf: horizontal === PickerHorizontalPosition.RIGHT,\n });\n\n return (\n <Stack className={classes.picker} ref={ref} data-test-id='picker-wrapper' onClick={(event) => event.preventDefault()}>\n <Picker\n data={data}\n onEmojiSelect={onEmojiSelect}\n data-test-id='picker'\n dynamicWidth={isFullWidth}\n />\n </Stack>\n )\n})\n\nEmojiPicker.displayName = 'EmojiPicker';\n\nexport default EmojiPicker;\n","type ValueOf<T> = T[keyof T]\ntype KeyValuePair<T> = [keyof T, ValueOf<T>]\nconst filterObject: <O extends {[_: string]: any}>(\n obj: O,\n fn: <T>(kv: KeyValuePair<T>, index: number, array: KeyValuePair<T>[]) => boolean\n) => O = (obj, fn) => (\n Object.fromEntries(Object.entries(obj).filter(fn)) as typeof obj\n)\n\nexport default filterObject;\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport EmojiCounter from \"./EmojiCounters\";\nimport filterObject from \"../../../services/filterObject\";\nimport {\n useAddReactionEvent,\n useRemoveReactionEvent,\n} from \"../../../services/segmentEvents/useReactionsEvents\";\n\nexport type ReactionType = {\n emoji: string,\n count: number,\n users: string[],\n hasCurrentUserSelected?: boolean,\n name: string,\n};\n\nexport type ReactionCounts = {\n [emojiKey: ReactionType['emoji']]: ReactionType,\n}\n\nexport type ReactionsProps = {\n initialReactions?: ReactionCounts,\n currentUserDisplayName: string,\n onAddReaction?: (reaction: ReactionType) => void,\n onRemoveReaction?: (reaction: ReactionType) => void,\n disabled: boolean,\n reactableId: string,\n reactableType: string,\n isSelfReaction: boolean,\n permapage?: boolean,\n};\n\nconst hoverLabel = (reaction: ReactionType, currentUserDisplayName: ReactionsProps['currentUserDisplayName']) => {\n const { hasCurrentUserSelected, name, users } = reaction\n const userNames = hasCurrentUserSelected ? ['You', ...users.filter(user => user !== currentUserDisplayName)] : users;\n const usersString = userNames.length > 1\n ? `${userNames.slice(0, -1).join(', ')} and ${userNames.slice(-1)}`\n : userNames;\n return `${usersString} reacted with ‘${name}’`\n};\n\nconst Reactions: React.FC<ReactionsProps> = ({\n initialReactions = {},\n currentUserDisplayName,\n onAddReaction = () => {},\n onRemoveReaction = () => {},\n disabled,\n reactableId,\n reactableType,\n isSelfReaction,\n permapage = false,\n}) => {\n const [reactions, setReactions] = useState<ReactionCounts>(initialReactions);\n const trackAddReaction = useAddReactionEvent();\n const trackRemoveReaction = useRemoveReactionEvent();\n\n useEffect(() => {\n setReactions(initialReactions)\n }, [initialReactions]);\n\n const sortedReactions = useMemo(() => (\n Object.values(reactions).map(reaction => ({\n ...reaction,\n hoverLabel: hoverLabel(reaction, currentUserDisplayName),\n }))\n ), [reactions, currentUserDisplayName]);\n\n const handleReaction = useCallback((event: React.MouseEvent<HTMLButtonElement>, emoji: string, reactionName?: string) => {\n event?.preventDefault?.();\n const previousReaction = reactions[emoji];\n const isNewReaction = !previousReaction;\n const isAdd = isNewReaction || !previousReaction.hasCurrentUserSelected;\n\n const count = isAdd\n ? isNewReaction ? 1 : previousReaction.count + 1\n : previousReaction.count - 1;\n const users = isAdd\n ? [...(previousReaction?.users ?? []), currentUserDisplayName]\n : previousReaction.users.filter(user => user !== currentUserDisplayName);\n\n const updatedReaction = {\n emoji,\n count,\n users,\n hasCurrentUserSelected: isAdd,\n name: isNewReaction ? reactionName : previousReaction.name,\n };\n\n const newReactions = count > 0\n ? { ...reactions, [emoji]: updatedReaction }\n : filterObject(reactions, ([key]) => key !== emoji);\n\n setReactions(newReactions);\n\n if (isAdd) {\n trackAddReaction({\n isUnique: isNewReaction,\n source: reactionName ? 'Add Button' : 'Existing Reaction',\n objectType: reactableType,\n objectId: reactableId,\n reaction: emoji,\n selfReaction: isSelfReaction,\n });\n onAddReaction(updatedReaction);\n } else {\n trackRemoveReaction({\n objectType: reactableType,\n objectId: reactableId,\n reaction: emoji,\n selfReaction: isSelfReaction,\n });\n onRemoveReaction(updatedReaction);\n }\n }, [reactions, currentUserDisplayName, onAddReaction, onRemoveReaction]);\n\n return (\n <EmojiCounter\n reactions={sortedReactions}\n onSelect={(event, emoji) => handleReaction(event, emoji)}\n onAdd={(event,{ native: emoji, name }) => handleReaction(event, emoji, name)}\n disabled={disabled}\n isUserLoggedIn={!!currentUserDisplayName}\n permapage={permapage}\n />\n );\n};\n\nexport default Reactions;\n","import useSegment from '../useSegment';\n\nexport const useAddReactionEvent = () => {\n const { trackSegment } = useSegment();\n\n return( ({\n isUnique,\n source,\n objectType,\n objectId,\n reaction,\n selfReaction,\n }) => trackSegment(\n 'Reaction Added',\n {\n isUnique,\n source,\n objectType,\n objectId,\n reaction,\n selfReaction,\n },\n ))\n};\n\nexport const useRemoveReactionEvent = () => {\n const { trackSegment } = useSegment();\n\n return( ({\n objectType,\n objectId,\n reaction,\n selfReaction,\n }) => trackSegment(\n 'Reaction Removed',\n {\n objectType,\n objectId,\n reaction,\n selfReaction,\n },\n ))\n};\n","import React, { Component } from 'react';\nimport { withStyles } from \"@mui/styles\";\nimport Link from \"./Link\";\nimport clsx from \"clsx\";\nimport Linkify from \"./Linkify\";\n\ntype ReadMoreProps = {\n text: string,\n readMoreCharacterLimit: number,\n classes: {\n visibleText: string,\n hiddenText: string,\n readMoreButton: string,\n seeMoreLink: string,\n },\n showMoreText: string,\n showLessText: string,\n lineHeight: number,\n};\n\ntype ReadMoreState = {\n showingAll: boolean,\n};\n\nconst useStyles = (theme) => ({\n readMoreButton: {\n display: 'inline',\n backgroundColor: 'transparent',\n outline: 'none',\n border: 0,\n padding: 0,\n margin: 0,\n },\n hiddenText: {\n maxHeight: 0,\n fontSize: 0,\n opacity: 0,\n },\n visibleText: {\n maxHeight: '10em',\n opacity: 1,\n fontSize: 'inherit',\n },\n seeMoreLink: {\n bottom: '1.2px',\n fontWeight: 600,\n paddingLeft: theme.spacing(1),\n },\n});\n\nclass ReadMore extends Component<ReadMoreProps, ReadMoreState> {\n static defaultProps = {\n showMoreText: 'see more',\n showLessText: 'see less',\n lineHeight: 1,\n readMoreCharacterLimit: 100,\n }\n\n constructor(props) {\n super(props);\n\n let { text, readMoreCharacterLimit } = this.props;\n\n this.state = { showingAll: text.length <= readMoreCharacterLimit };\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n let { text, readMoreCharacterLimit } = this.props;\n\n if (readMoreCharacterLimit !== prevProps.readMoreCharacterLimit) {\n this.setState({\n showingAll: text.length <= readMoreCharacterLimit,\n });\n }\n }\n\n textExceedsLimit = () => {\n let { text, readMoreCharacterLimit } = this.props;\n\n return text.length > readMoreCharacterLimit;\n }\n\n toggleReadMore = () => {\n this.setState({\n showingAll: !this.state.showingAll,\n });\n }\n\n getReadMoreParts = ({text, readMoreCharacterLimit}) => {\n let teaserText;\n let remainingText;\n let remainingWordsArray = [];\n\n if (text) {\n const teaserWordsArray = text.split(' ');\n\n while (teaserWordsArray.join(' ').length > readMoreCharacterLimit) {\n remainingWordsArray.unshift(teaserWordsArray.pop());\n }\n\n teaserText = teaserWordsArray.join(' ');\n\n if (remainingWordsArray.length > 0) {\n remainingText = ' ' + remainingWordsArray.join(' ');\n }\n }\n\n return {\n teaserText,\n remainingText,\n };\n };\n\n getText = ({ showingAll, text, readMoreCharacterLimit }) => {\n const { classes } = this.props;\n let {\n teaserText,\n remainingText,\n } = this.getReadMoreParts({text, readMoreCharacterLimit});\n\n if (!showingAll && this.textExceedsLimit()) {\n return (\n <span>\n <Linkify>\n {teaserText.replace(/\\s*$/, \"… \")}\n </Linkify>\n <span className={classes.hiddenText}>\n <Linkify>\n {remainingText}\n </Linkify>\n </span>\n </span>\n );\n }\n\n return (\n <span>\n <Linkify>\n {teaserText}\n </Linkify>\n <span className={classes.visibleText}>\n <Linkify>\n {remainingText}\n </Linkify>\n </span>\n </span>\n );\n }\n\n getActionButton = ({ showingAll }) => {\n if (showingAll && !this.textExceedsLimit()) {\n return;\n }\n\n const { classes, showMoreText, showLessText } = this.props;\n\n const disableRippleEffectOnParent = (event) => {event.stopPropagation();}\n\n let linkText = showingAll ? showLessText : showMoreText;\n\n return <Link\n onClick={this.toggleReadMore}\n className={clsx(classes.readMoreButton, classes.seeMoreLink)}\n text={`${linkText}`}\n data-element=\"link\"\n onMouseDown={disableRippleEffectOnParent}\n />;\n }\n\n render() {\n let {\n text,\n readMoreCharacterLimit,\n lineHeight,\n } = this.props;\n\n let { showingAll } = this.state;\n\n let style = { lineHeight };\n\n let textToDisplay = this.getText({\n showingAll,\n text,\n readMoreCharacterLimit,\n });\n\n let actionButton = this.getActionButton({\n showingAll,\n });\n\n return (\n <span style={style}>\n {textToDisplay}{actionButton}\n </span>\n )\n }\n}\n\nexport default withStyles(useStyles)(ReadMore);\n","import React from \"react\";\nimport RichTextEditor from \"./RichTextEditor\";\n\ntype RichTextProps = {\n value: string,\n};\n\nconst RichText = ({\n value,\n}: RichTextProps) => {\n return (\n <div data-test-id=\"richText\">\n <RichTextEditor defaultValue={value} readOnly={true} disabled />\n </div>\n );\n};\n\nexport default RichText;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\nimport Autosave from \"@ckeditor/ckeditor5-autosave/src/autosave\";\nimport BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote';\nimport Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';\nimport ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';\nimport Heading from '@ckeditor/ckeditor5-heading/src/heading';\nimport CloudServicesConfig from '@ckeditor/ckeditor5-cloud-services/src/cloudservices';\nimport EasyImage from '@ckeditor/ckeditor5-easy-image/src/easyimage';\nimport Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';\nimport Font from '@ckeditor/ckeditor5-font/src/font';\nimport Image from '@ckeditor/ckeditor5-image/src/image';\nimport ImageUpload from '@ckeditor/ckeditor5-image/src/imageupload';\nimport Indent from '@ckeditor/ckeditor5-indent/src/indent';\nimport Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';\nimport Link from '@ckeditor/ckeditor5-link/src/link';\nimport List from '@ckeditor/ckeditor5-list/src/list';\nimport MediaEmbed from '@ckeditor/ckeditor5-media-embed/src/mediaembed';\nimport Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';\nimport PasteFromOffice from '@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice';\nimport PendingActions from '@ckeditor/ckeditor5-core/src/pendingactions';\nimport Strikethrough from '@ckeditor/ckeditor5-basic-styles/src/strikethrough';\nimport Table from '@ckeditor/ckeditor5-table/src/table';\nimport TableProperties from '@ckeditor/ckeditor5-table/src/tableproperties';\nimport TableCellProperties from '@ckeditor/ckeditor5-table/src/tablecellproperties';\nimport TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar';\nimport TextTransformation from '@ckeditor/ckeditor5-typing/src/texttransformation';\nimport TodoList from '@ckeditor/ckeditor5-list/src/todolist';\nimport Underline from '@ckeditor/ckeditor5-basic-styles/src/underline';\nimport * as Sentry from \"@sentry/browser\";\n\ntype RichTextEditorProps = {\n defaultValue?: string,\n disabled?: boolean,\n onChange?: (text: string) => void,\n onAutosave?: (text: string) => void,\n placeholder?: string,\n readOnly?: boolean,\n};\n\nconst useStyles = makeStyles((theme) => ({\n ckWidgetSelectionHandlerReadOnly: {\n '& div.ck-widget__selection-handle': {\n display: 'none',\n },\n '& figure.ck-widget_selected': {\n outline: 'initial !important',\n },\n },\n // NOTE: workaround via ckeditor issue about embedded media:\n // * https://github.com/ckeditor/ckeditor5/issues/2743#issuecomment-794520947\n embedMediaFix: {\n '& .ck-editor__editable:not(.ck-read-only) .ck-widget_selected .ck-media__wrapper>:not(.ck-media__placeholder)': {\n pointerEvents: 'initial !important',\n },\n },\n}));\n\nconst buildEditorConfiguration = ({\n disabled,\n onAutosave,\n placeholder,\n}) => {\n const toolbars = disabled ? {} : {\n items: [\n 'heading',\n 'bold',\n 'underline',\n 'link',\n '|',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'italic',\n 'strikethrough',\n '|',\n 'bulletedList',\n 'numberedList',\n 'todoList',\n 'insertTable',\n '|',\n 'indent',\n 'outdent',\n '|',\n 'blockQuote',\n 'mediaEmbed',\n 'uploadImage',\n '|',\n 'undo',\n 'redo',\n ],\n };\n\n return {\n autosave: onAutosave ? {\n save(editor) {\n onAutosave(editor.getData());\n },\n } : {},\n cloudServices: {\n tokenUrl: '/api/ck_editor_token',\n uploadUrl: 'https://80233.cke-cs.com/easyimage/upload/',\n },\n placeholder: placeholder,\n plugins: [\n Heading,\n Autosave,\n Table,\n TableToolbar,\n TableProperties,\n TableCellProperties,\n BlockQuote,\n Bold,\n CloudServicesConfig,\n EasyImage,\n Essentials,\n Font,\n Image,\n ImageUpload,\n Indent,\n Italic,\n Link,\n List,\n MediaEmbed,\n Paragraph,\n PasteFromOffice,\n PendingActions,\n Strikethrough,\n TextTransformation,\n TodoList,\n Underline,\n ],\n shouldNotGroupWhenFull: true,\n toolbar: toolbars,\n table: {\n contentToolbar: [\n 'tableColumn', 'tableRow', 'mergeTableCells',\n 'tableProperties', 'tableCellProperties'\n ],\n }\n };\n};\n\nconst RichTextEditor = ({\n defaultValue,\n disabled,\n onAutosave,\n onChange,\n placeholder,\n readOnly,\n}: RichTextEditorProps) => {\n const classes = useStyles();\n let editorInstance = null;\n\n const onEditorReady = (editor) => {\n editorInstance = editor;\n };\n\n const onEditorError = (error, { willEditorRestart }) => {\n if (error.message !== 'Abort') {\n Sentry.captureException(error);\n }\n\n // If the editor is restarted, the toolbar element will be created once again.\n // The `onReady` callback will be called again and the new toolbar will be added.\n // This is why you need to remove the older toolbar.\n if (willEditorRestart) {\n editorInstance.ui.view.toolbar.element.remove();\n };\n };\n\n return (\n <div\n className={clsx(\n \"ck-editor-wrapper\",\n classes.embedMediaFix,\n {\n [classes.ckWidgetSelectionHandlerReadOnly]: readOnly,\n [\"ck-disabled-editor\"]: disabled,\n },\n )\n }\n >\n <CKEditor\n editor={ClassicEditor}\n config={buildEditorConfiguration({ disabled, onAutosave, placeholder })}\n data={defaultValue}\n disabled={disabled}\n onChange={(event, editor) => {\n onChange && onChange(editor.getData());\n }}\n onReady={onEditorReady}\n onError={onEditorError}\n />\n </div>\n );\n};\n\nexport default RichTextEditor;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { makeStyles } from \"@mui/styles\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\nimport { track as trackAnalyticsEvent } from '../../services/analytics';\nimport ShareLinkSection from \"./InviteModal/ShareLinkSection\";\nimport AddPlusOneButton from \"../buttons/AddPlusOneButton\";\n\ntype RsvpModalProps = {\n tripId: string,\n tripName: string,\n inviterId: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n titleWrapper: {\n textAlign: 'center',\n },\n title: {\n marginTop: theme.spacing(3),\n fontSize: 24,\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n description: {\n paddingBottom: theme.spacing(3),\n color: theme.palette.text.primary,\n margin: '0 auto',\n },\n subtitle: {\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst RsvpModal = ({\n tripId,\n tripName,\n inviterId,\n}: RsvpModalProps) => {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(true);\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n\n const trackCloseButtonClickedEventInSegment = () => {\n trackAnalyticsEvent('Invite Success Modal Dismissed', {\n tripId,\n isMobileApp,\n label: 'Done Button',\n });\n };\n\n const handleClose = () => {\n setDialogOpen(false);\n location.replace(location.pathname);\n };\n\n const handleCloseButtonClick = () => {\n trackCloseButtonClickedEventInSegment();\n handleClose();\n };\n\n const displayRSVP = (new URLSearchParams(window.location.search).get('display_rsvp_modal') === 'true')\n\n return <>\n {displayRSVP && (\n <ConfirmationDialog\n actionText=\"Done\"\n fullWidthButtons\n hideCancelButton\n isOpen={dialogOpen}\n message={\n <Box className={classes.titleWrapper}>\n <Typography className={classes.title}>\n Success! 🍾\n </Typography>\n <Box textAlign=\"left\">\n <Typography className={classes.description}>\n We’ve let the group know you’ve officially joined this trip.\n </Typography>\n <Typography className={classes.subtitle}>\n Want to invite others to join?\n </Typography>\n <ShareLinkSection\n inviterId={inviterId}\n tripName={tripName}\n tripId={tripId}\n source=\"Success Modal\"\n />\n <AddPlusOneButton tripId={tripId} />\n </Box>\n </Box>\n }\n onClose={handleCloseButtonClick}\n onConfirm={handleCloseButtonClick}\n />\n )}\n </>;\n};\n\nexport default RsvpModal;\n","import React from 'react';\nimport Collapse from '@mui/material/Collapse';\nimport { Typography, Box } from '@mui/material';\nimport { makeStyles } from \"@mui/styles\";\nimport useSegment from \"../../services/useSegment\";\nimport {aiSearchType, CurrentAppliedFilters} from \"../pages/stays_search/Listings/Filters\";\n\ntype SeeMoreOrLessProps = {\n text: string,\n readMoreCharacterLimit?: number,\n showMoreText?: string,\n showLessText?: string,\n lineHeight?: number,\n aiSearchType: aiSearchType,\n currentAppliedFilters?: CurrentAppliedFilters,\n};\n\nconst useStyles = makeStyles(() => ({\n seeMoreOrLessButton: {\n color: 'blue',\n cursor: 'pointer',\n textDecoration: 'underline',\n },\n ellipsisText: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}));\n\nconst SeeMoreOrLess : React.FC<SeeMoreOrLessProps> = ({\n showMoreText = 'See more',\n showLessText = 'See less',\n readMoreCharacterLimit = 150,\n text,\n aiSearchType,\n currentAppliedFilters,\n}) => {\n const classes = useStyles();\n const truncateText = () => (\n text.slice(0, readMoreCharacterLimit) + (text.length > readMoreCharacterLimit ? '...' : '')\n );\n\n const [seeingMore, setSeeingMore] = React.useState(false);\n const [truncatedText, setTruncatedText] = React.useState(truncateText());\n const { trackSegment } = useSegment();\n const onSeeMoreOrLessClick = () => {\n const descriptionState = seeingMore ? 'Collapsed' : 'Expanded'\n setSeeingMore(!seeingMore)\n trackSegment(`Troupie Description ${descriptionState}`,\n {\n location: aiSearchType,\n destination: currentAppliedFilters?.locationName,\n latitude: currentAppliedFilters?.latitude,\n longitude: currentAppliedFilters?.longitude,\n },\n )\n }\n\n React.useEffect(() => {\n if(!seeingMore){\n setTimeout(() => {\n setTruncatedText(truncateText())\n }, 300)\n } else {\n setTruncatedText(text)\n }\n }, [seeingMore])\n\n return (\n <Box>\n <Collapse in={seeingMore} collapsedSize={50}>\n <Typography>\n {truncatedText}\n </Typography>\n </Collapse>\n <Typography\n onClick={() => onSeeMoreOrLessClick()}\n className={classes.seeMoreOrLessButton}\n data-test-id=\"see-more-or-less-button\"\n >\n {seeingMore ? showLessText : showMoreText}\n </Typography>\n </Box>\n );\n}\n\nexport default SeeMoreOrLess;\n","import React from \"react\";\nimport HoverBorderIconButton from \"../buttons/HoverBorderIconButton\";\nimport { GlobalContext } from \"../Document\";\nimport useSegment from \"../../services/useSegment\";\n\ntype ShareButtonProps = {\n className?: string,\n url: string,\n};\n\nconst ShareButton = ({\n className,\n url,\n}: ShareButtonProps) => {\n const { shareStay } = React.useContext(GlobalContext);\n const { trackSegment } = useSegment();\n\n const onButtonClick = () => {\n const text = `Check out this cool stay!\\n\\n${url}`;\n navigator\n .share({ text })\n .then(() => {\n trackSegment('Stay Share Activated', { listingUrl: url, page: window.location.pathname });\n })\n };\n\n if (!shareStay || !navigator['share']) return null;\n\n return (\n <HoverBorderIconButton\n onClick={onButtonClick}\n className={className}\n >\n <img src=\"/assets/share_icon.svg\" />\n </HoverBorderIconButton>\n );\n};\n\nexport default ShareButton;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Grid,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\n\ntype SideBarPageProps = {\n hideSideBarBorder?: boolean,\n mainContent: React.ReactNode,\n sideBarContent?: React.ReactNode,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n mainContent: {\n paddingTop: theme.spacing(3),\n [theme.breakpoints.up('md')]: {\n paddingTop: theme.spacing(4),\n borderRight: '1px solid rgba(0, 0, 0, 0.2)',\n paddingRight: theme.spacing(2.5),\n },\n paddingBottom: theme.spacing(4),\n },\n sideBarContent: {\n borderTop: '1px solid rgba(0, 0, 0, 0.2)',\n paddingBottom: theme.spacing(4),\n paddingTop: theme.spacing(3),\n [theme.breakpoints.up('md')]: {\n borderTop: 'none',\n paddingTop: theme.spacing(4),\n paddingLeft: theme.spacing(2.5),\n },\n },\n borderRight: {\n border: 'none',\n },\n}));\n\nconst SideBarPage = ({\n hideSideBarBorder,\n mainContent,\n sideBarContent,\n}: SideBarPageProps) => {\n const classes = useStyles();\n\n return (\n <Grid container>\n <Grid\n item\n xs={12}\n md={8}\n className={clsx(classes.mainContent, {\n [classes.borderRight]: hideSideBarBorder,\n })}\n >\n {mainContent}\n </Grid>\n {sideBarContent && (\n <Grid item xs={12} md={4} className={classes.sideBarContent}>\n {sideBarContent}\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default SideBarPage;\n","import React from 'react';\nimport {\n Box,\n Grid,\n Link,\n} from '@mui/material';\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n lowerDiv: {\n justifyContent: 'center',\n paddingTop: theme.spacing(2),\n },\n lowerFooter: {\n height: theme.spacing(6),\n backgroundColor: '#303742',\n textDecoration: 'none',\n color: '#ffffff',\n fontSize: '14px',\n\n '@supports (padding-bottom: env(safe-area-inset-bottom))': {\n height: `calc(env(safe-area-inset-bottom) + ${theme.spacing(6)})`,\n paddingBottom: 'env(safe-area-inset-bottom)',\n paddingRight: 'env(safe-area-inset-right)',\n paddingLeft: 'env(safe-area-inset-left)',\n },\n },\n linkTag: {\n color: '#ffffff',\n '&:hover': {\n color: '#A6C0FF',\n textDecoration: 'none',\n },\n },\n bottomText: {\n maxWidth: '262px',\n },\n}));\n\nconst SiteFooter = () => {\n const classes = useStyles();\n const currentYear = new Date().getFullYear().toString();\n\n return (\n <Box>\n <div className={classes.lowerFooter} >\n <Grid container direction=\"row\" className={classes.lowerDiv}>\n <Grid className={classes.bottomText} container justifyContent=\"space-between\">\n <Grid item >© {currentYear} Troupe</Grid>\n <Grid item>\n <Link className={classes.linkTag} href=\"https://troupe.com/privacy\" target=\"_blank\">Privacy Policy</Link>\n </Grid>\n <Grid item>\n <Link className={classes.linkTag} href=\"https://troupe.com/terms\" target=\"_blank\">Terms</Link>\n </Grid>\n </Grid>\n </Grid>\n </div>\n </Box>\n );\n};\n\nexport default SiteFooter;\n","import React, {useContext} from \"react\";\nimport clsx from \"clsx\";\nimport {\n Box,\n Divider,\n Grid,\n Hidden,\n IconButton,\n} from \"@mui/material\";\nimport EditIcon from '@mui/icons-material/Edit';\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Theme } from '@mui/material/styles';\nimport Tooltip from \"./Tooltip\";\nimport HeaderBar from \"./SiteHeader/HeaderBar\";\nimport TripName from \"../pages/trips/microsite/shared/TripName\";\nimport * as routes from '../../routes';\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { TripType, PublicTripType, TripCoverPhotos } from \"./TripTypes\";\nimport { useEditTripInitiated } from \"../../services/segmentEvents/tripEvents\";\n\nconst {\n editTripPath,\n} = routes;\n\nenum CoverPhotoHeight {\n Desktop = 416,\n Mobile = 320,\n}\nexport const HEADER_BAR_HEIGHT = 64;\nconst EDIT_ICON_TOP = 64;\n\ntype SiteHeaderProps = {\n tripUpdatesNum?: number,\n broadcastNum?: number,\n currentUserAvatarUrl?: string,\n currentUserId?: string,\n hideMyTripsButton?: boolean,\n isTripUpdatesHidden?: boolean,\n isUserPlanner?: boolean,\n isUserLoggedIn?: boolean,\n logoPath?: string,\n showCoverPhoto?: boolean,\n trip?: TripType | PublicTripType,\n}\n\ntype StyleProps = {\n tripCoverPhotos: TripCoverPhotos,\n showCoverPhoto: boolean,\n coverPhotoHeight: CoverPhotoHeight,\n}\n\nconst useStyles = makeStyles<Theme, StyleProps>((theme) => ({\n headerBox: {\n position: 'relative',\n paddingBottom: theme.spacing(5),\n '@supports (margin-top: env(safe-area-inset-top))': {\n marginTop: 'env(safe-area-inset-top)',\n },\n },\n withCoverPhotoOnly: {\n height: ({ coverPhotoHeight }) => coverPhotoHeight,\n },\n headerCover: {\n position: 'absolute',\n width: '100%',\n top: () => HEADER_BAR_HEIGHT,\n height: theme.spacing(44),\n [theme.breakpoints.down('sm')]: {\n backgroundImage: ({ tripCoverPhotos, showCoverPhoto }) =>\n showCoverPhoto && tripCoverPhotos?.small ? `url(${tripCoverPhotos.small})` : 'initial',\n height: theme.spacing(32),\n },\n borderBottom: ({ showCoverPhoto }) => showCoverPhoto ? '1px solid #E6E7E8' : 'none',\n },\n headerBackground: {\n width: '100%',\n height: '100%',\n },\n headerForeground: {\n position: 'absolute',\n top: 0,\n height: '100%',\n width: '100%',\n },\n headerWithBackgroundCoverPhoto: {\n backgroundImage: ({ tripCoverPhotos }) =>\n tripCoverPhotos?.big ? `url(${tripCoverPhotos.big})` : 'initial',\n backgroundSize: 'cover',\n backgroundPosition: 'center center',\n filter: 'brightness(0.25)',\n },\n headerWithCoverPhotoContainer: {\n overflow: 'hidden',\n },\n headerWithCoverPhoto: {\n backgroundImage: ({ tripCoverPhotos }) =>\n tripCoverPhotos?.original ?\n `linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.444) 59.25%, rgba(0, 0, 0, 0.6) 100%), url(${tripCoverPhotos.original})` : 'initial',\n backgroundSize: 'auto 100%',\n backgroundPosition: 'center center',\n backgroundRepeat: 'no-repeat',\n },\n buttonsOuterDiv: {\n float: 'right',\n paddingTop: theme.spacing(2),\n paddingRight: theme.spacing(3),\n },\n shareButton: {\n padding: theme.spacing(2),\n margin: theme.spacing(1),\n width: theme.spacing(3),\n height: theme.spacing(3),\n top: theme.spacing(8),\n transform: 'scale(-1, 1)',\n boxShadow: '0 2px 4px 0',\n },\n editIcon: {\n padding: theme.spacing(2),\n margin: theme.spacing(1),\n width: theme.spacing(3),\n height: theme.spacing(3),\n top: () => EDIT_ICON_TOP,\n color: '#505050',\n background: '#ffffff',\n boxShadow: '0 2px 4px 0',\n \"&:hover\": {\n color: '#353535',\n background: \"#ffffff\",\n },\n },\n}));\n\nconst SiteHeader = ({\n tripUpdatesNum,\n broadcastNum,\n currentUserAvatarUrl,\n currentUserId,\n hideMyTripsButton,\n isTripUpdatesHidden,\n isUserPlanner,\n isUserLoggedIn,\n logoPath,\n showCoverPhoto,\n trip,\n}: SiteHeaderProps) => {\n const tripCoverPhotos = trip?.coverPhotos\n const editTripInitiatedEvent = useEditTripInitiated();\n\n const isMobile = useMediaQuery(useTheme().breakpoints.down('sm'));\n const coverPhotoHeight = isMobile ? CoverPhotoHeight.Mobile : CoverPhotoHeight.Desktop\n\n const classes = useStyles({\n tripCoverPhotos,\n showCoverPhoto,\n coverPhotoHeight,\n });\n\n return (\n <>\n <HeaderBar\n tripUpdatesNum={tripUpdatesNum}\n broadcastNum={broadcastNum}\n currentUserAvatarUrl={currentUserAvatarUrl}\n currentUserId={currentUserId}\n hideMyTripsButton={hideMyTripsButton}\n isTripUpdatesHidden={isTripUpdatesHidden}\n isUserLoggedIn={isUserLoggedIn}\n logoPath={logoPath}\n tripId={trip?.id}\n />\n\n <Box data-test-id=\"siteHeader\"\n className={clsx(\n classes.headerBox,\n {[classes.withCoverPhotoOnly]: showCoverPhoto},\n )}\n >\n {trip && showCoverPhoto && (\n <div className={classes.headerCover}>\n <div\n data-test-id=\"headerCoverPhoto\"\n className={clsx(\n classes.headerBackground,\n { [classes.headerWithBackgroundCoverPhoto]: showCoverPhoto },\n )}\n />\n <div className={clsx(\n classes.headerForeground,\n { [classes.headerWithCoverPhoto]: showCoverPhoto },\n )}\n />\n <Hidden smUp><TripName name={trip.name}></TripName></Hidden>\n </div>\n )}\n <Grid className={classes.buttonsOuterDiv}>\n {trip && showCoverPhoto && isUserPlanner && (\n <IconButton\n href={editTripPath(trip.id)}\n className={classes.editIcon}\n data-test-id=\"editTripButton\"\n onClick={() => editTripInitiatedEvent()}\n >\n <Tooltip title=\"Edit\">\n <EditIcon />\n </Tooltip>\n </IconButton>\n )}\n </Grid>\n </Box>\n {trip && (\n <Hidden smDown>\n <TripName name={trip.name}/>\n <Divider/>\n </Hidden>\n )}\n </>\n );\n};\n\nexport default SiteHeader;\n","import React, { useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport CampaignIcon from '@mui/icons-material/Campaign';\nimport { DefaultTheme, makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport Button from \"../../buttons/Button\";\nimport { trackLink as trackAnalyticsEvent } from '../../../services/analytics';\nimport { tripBroadcastsPath } from '../../../routes';\n\ntype BroadcastButtonProps = {\n currentUserId: string,\n disabled: boolean,\n collapseOnMobile?: boolean,\n tripId: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { isFullWidthBtn: boolean }>((theme) => ({\n root: {\n height: '100%',\n maxHeight: '48px',\n },\n rootMobile: {\n height: '100%',\n },\n btnWidth: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '164px' : '52px',\n [theme.breakpoints.down(370)]: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '145px' : '32px',\n padding: ({ isFullWidthBtn }) => isFullWidthBtn ? '12px 24px' : '12px 20px',\n },\n },\n hidden: {\n display: 'none',\n },\n label: {\n marginLeft: theme.spacing(1),\n },\n icon: {\n fontSize: theme.spacing(4),\n },\n}));\n\nconst BroadcastButton = ({\n currentUserId,\n collapseOnMobile,\n disabled,\n tripId,\n}: BroadcastButtonProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const hideLabel = collapseOnMobile && isMobile;\n\n const classes = useStyles({isFullWidthBtn: !hideLabel});\n\n const broadcastRef = useCallback((element) => {\n if (element !== null) {\n trackAnalyticsEvent(\n element,\n 'Broadcasts Opened',\n {\n category: 'Broadcasts',\n source: 'secondary nav',\n tripId: tripId,\n userId: currentUserId,\n },\n );\n }\n }, []);\n\n return (\n <Button\n data-test-id='broadcast-button'\n href={tripBroadcastsPath(tripId)}\n variant='tertiary'\n ref={(element) => broadcastRef(element)}\n className={clsx(\n classes.root,\n {[classes.rootMobile]: isMobile},\n classes.btnWidth,\n )}>\n <CampaignIcon className={clsx({[classes.icon]: !disabled})} />\n <span className={clsx(\n classes.label,\n {[classes.hidden]: hideLabel},\n )}>\n Broadcasts\n </span>\n </Button>\n );\n};\n\nexport default BroadcastButton;\n","import React from \"react\";\nimport {\n Box,\n Grid,\n Link,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport TripUpdatesButton from \"./HeaderBar/TripUpdatesButton\";\nimport IntercomButton from \"./HeaderBar/IntercomButton\";\nimport LogInButtonForm from \"./LogInButtonForm\";\nimport NavBarMenu from \"./NavBarMenu\";\nimport BroadcastButton from \"./HeaderBar/BroadcastButton\";\n\ntype HeaderBarProps = {\n tripUpdatesNum?: number,\n broadcastNum?: number,\n currentUserAvatarUrl?: string,\n currentUserId?: string,\n hideMyTripsButton?: boolean,\n isTripUpdatesHidden?: boolean,\n isUserLoggedIn?: boolean,\n logoPath?: string,\n tripId?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n headerBar: {\n fontSize: 20,\n paddingTop: theme.spacing(2),\n paddingRight: theme.spacing(3),\n paddingBottom: theme.spacing(2),\n paddingLeft: theme.spacing(3),\n maxHeight: theme.spacing(8),\n '@supports (padding-top: env(safe-area-inset-top))': {\n paddingTop: `calc(env(safe-area-inset-top) + ${theme.spacing(2)})`,\n paddingRight: `calc(env(safe-area-inset-right) + ${theme.spacing(3)})`,\n paddingLeft: `calc(env(safe-area-inset-left) + ${theme.spacing(3)})`,\n maxHeight: `calc(env(safe-area-inset-top) + ${theme.spacing(8)})`,\n },\n backgroundColor: 'rgba(84, 93, 252, 0.97)',\n color: '#ffffff',\n boxShadow: '0 5px 15px 0 rgb(0 0 0 / 10%)',\n },\n logInButton: {\n background: '#545DFC',\n borderRadius: '6px',\n height: theme.spacing(6),\n paddingTop: parseInt(theme.spacing(1)) / 2,\n paddingBottom: parseInt(theme.spacing(1)) / 2,\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n fontSize: 16,\n verticalAlign: \"middle\",\n top: theme.spacing(-1),\n },\n logo: {\n background: 'url(\"/assets/logo_white.svg\") no-repeat center center',\n backgroundSize: 'contain',\n textIndent: '-100em',\n overflow: 'hidden',\n width: parseInt(theme.spacing(4)) * 5,\n height: theme.spacing(4),\n [theme.breakpoints.down(\"md\")]: {\n height: '20px',\n width: '125px',\n paddingTop: theme.spacing(4),\n marginLeft: theme.spacing(-1),\n },\n [theme.breakpoints.down(425)]: {\n backgroundImage: 'url(\"/assets/logo_octopus_white.svg\")',\n width: 32,\n },\n },\n root: {\n position: 'fixed',\n width: '100%',\n zIndex: '1001',\n },\n}));\n\nconst HeaderBar = ({\n tripUpdatesNum = 0,\n broadcastNum = 0,\n currentUserAvatarUrl,\n currentUserId,\n hideMyTripsButton = false,\n isTripUpdatesHidden = false,\n isUserLoggedIn,\n logoPath,\n tripId,\n}: HeaderBarProps) => {\n const classes = useStyles();\n\n return (\n <Box className={classes.root}>\n <Grid container justifyContent=\"space-between\" className={classes.headerBar}>\n <Grid item>\n <Link href={logoPath} data-test-id='logo-link'>\n <Typography\n variant=\"h1\"\n className={classes.logo}>\n Troupe\n </Typography>\n </Link>\n </Grid>\n <Grid item>\n {isUserLoggedIn ? (\n <>\n {tripId && (\n <BroadcastButton\n broadcastNum={broadcastNum}\n currentUserId={currentUserId as string}\n tripId={tripId}\n />\n )}\n {tripId && !isTripUpdatesHidden && (\n <TripUpdatesButton\n tripUpdatesNum={tripUpdatesNum}\n tripId={tripId}\n />\n )}\n <IntercomButton />\n <NavBarMenu\n currentUserAvatarUrl={currentUserAvatarUrl as string}\n hideMyTripsButton={hideMyTripsButton}\n />\n </>\n ) : (\n <LogInButtonForm className={classes.logInButton}/>\n )}\n </Grid>\n </Grid>\n </Box>\n );\n};\n\nHeaderBar.defaultProps = {\n logoPath: '/',\n};\n\nexport default HeaderBar;\n","import React, { useCallback, useContext } from \"react\";\nimport CampaignIcon from '@mui/icons-material/Campaign';\nimport { tripBroadcastsPath } from '../../../../routes';\nimport { trackLink as trackAnalyticsEvent } from \"../../../../services/analytics\";\nimport ButtonBase from \"./ButtonBase\";\nimport { makeStyles } from \"@mui/styles\";\nimport { FormsContext, TripSiteContext } from \"../../../Document\";\n\ntype BroadcastButtonProps = {\n broadcastNum: number,\n currentUserId: string,\n className?: string,\n tripId: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n fontSize: theme.spacing(4),\n },\n}));\n\nconst BroadcastButton = ({\n broadcastNum,\n currentUserId,\n tripId,\n}: BroadcastButtonProps) => {\n const classes = useStyles();\n\n const [ref, setRef] = React.useState(null);\n const broadcastRef = useCallback((element) => {\n if (element !== null) {\n setRef(element);\n\n trackAnalyticsEvent(\n element,\n 'Broadcasts Opened',\n {\n category: 'Broadcasts',\n source: 'main nav',\n tripId: tripId,\n userId: currentUserId,\n },\n );\n }\n }, []);\n\n return (\n <>\n <ButtonBase\n badgeContent={broadcastNum}\n href={tripBroadcastsPath(tripId)}\n testId='broadcast-icon'\n iconButtonRef={(element) => broadcastRef(element)}\n hoverState\n tooltipText={'Broadcasts'}\n >\n <CampaignIcon className={classes.icon}/>\n </ButtonBase>\n </>\n );\n};\n\nexport default BroadcastButton;\n","import React from \"react\";\nimport {\n Badge,\n IconButton,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport Tooltip from \"../../Tooltip\";\n\ntype RightButtonBaseProps = {\n badgeContent?: number,\n children?: React.ReactNode,\n href: string,\n iconButtonRef?: React.Ref<any>,\n id?: string,\n testId?: string,\n hoverState?: boolean,\n tooltipText?: string,\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n color: \"#ffffff\",\n padding: 0,\n marginRight: theme.spacing(0.5),\n },\n badge: {\n '& .MuiBadge-dot': {\n height: '6px',\n minWidth: '6px',\n backgroundColor: '#ab3e4a',\n },\n },\n button: {\n backgroundColor: 'transparent',\n width: theme.spacing(5),\n height: theme.spacing(5),\n '&:hover': {\n backgroundColor: \"rgba(0, 0, 0, 0.2)\",\n },\n },\n}));\n\nconst ButtonBase = ({\n badgeContent,\n href,\n children,\n iconButtonRef,\n id,\n testId,\n hoverState = false,\n tooltipText = \"\",\n}: RightButtonBaseProps) => {\n const classes = useStyles();\n const isMobile = window.matchMedia && window.matchMedia(\"(any-pointer: coarse)\").matches\n\n return (\n <Tooltip title={!isMobile ? tooltipText : \"\"}>\n <IconButton\n className={clsx(classes.icon, {[classes.button]: hoverState === true})}\n data-test-id={testId}\n href={href}\n id={id}\n ref={iconButtonRef}\n >\n <Badge\n badgeContent={badgeContent}\n className={classes.badge}\n color=\"error\"\n invisible={!badgeContent}\n max={9}\n overlap=\"circular\"\n >\n {children}\n </Badge>\n </IconButton>\n </Tooltip>\n );\n};\n\nexport default ButtonBase;\n","import React, { useContext } from \"react\";\nimport ButtonBase from \"./ButtonBase\";\nimport { GlobalContext } from \"../../../Document\";\n\ndeclare global {\n interface Window { intercomSettings: any; }\n}\n\nwindow.intercomSettings = {\n custom_launcher_selector:'#custom_intercom_icon',\n};\n\nconst IntercomButton = () => {\n const { isMobileApp } = useContext(GlobalContext);\n\n return (\n <ButtonBase\n href='mailto:help@troupe.com'\n id={isMobileApp ? 'trigger_email_icon' : 'custom_intercom_icon'}\n hoverState\n tooltipText={'Help'}\n >\n <img\n alt='intercom_icon'\n src=\"/assets/intercom_icon.svg\"\n width='24'\n />\n </ButtonBase>\n );\n};\n\nexport default IntercomButton;\n","import React from \"react\";\nimport NotificationsIcon from '@mui/icons-material/Notifications';\nimport { tripUpdatesPath } from '../../../../routes';\nimport ButtonBase from \"./ButtonBase\";\n\ntype ActivityButtonProps = {\n tripUpdatesNum: number,\n tripId: string,\n className?: string,\n};\n\nconst TripUpdatesButton = ({\n tripUpdatesNum,\n tripId,\n}: ActivityButtonProps) => {\n return (\n <ButtonBase\n href={tripUpdatesPath(tripId)}\n badgeContent={tripUpdatesNum}\n testId=\"notifications-icon\"\n hoverState\n tooltipText={'Trip Updates'}\n >\n <NotificationsIcon />\n </ButtonBase>\n );\n};\n\nexport default TripUpdatesButton;\n","import React, { useContext } from \"react\";\nimport RailsForm from \"../RailsForm\";\nimport Button from \"../../buttons/Button\";\nimport { RoutesContext } from \"../../Document\";\n\nconst LogInButtonForm = ({ className }: { className: string }) => {\n const { authPath } = useContext(RoutesContext);\n return <RailsForm action={authPath as string} withChangeDetection={false}>\n <Button\n type=\"submit\"\n className={className}\n data-test-id=\"headerLogInButton\"\n >\n Log in\n </Button>\n </RailsForm>;\n};\n\nexport default LogInButtonForm;\n","import React, { useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { DefaultTheme, makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { track as trackAnalyticsEvent } from '../../../services/analytics';\nimport Button from \"../../buttons/Button\";\nimport * as routes from \"../../../routes\"\n\nconst {\n tripTravelersPath,\n} = routes;\n\nexport type ButtonVariant = 'primary' | 'tertiary';\n\ntype ManageTripConfirmationButtonProps = {\n collapseOnMobile?: boolean,\n disabled: boolean,\n inviteBtnVariant?: ButtonVariant,\n inviterId?: string,\n isPlanner?: boolean,\n tripId: string,\n segmentMethod: string,\n className?: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { isFullWidthBtn: boolean, variant: ButtonVariant }>((theme) => ({\n root: {\n height: '100%',\n },\n btnWidth: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '164px' : '52px',\n [theme.breakpoints.down(360)]: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '134px' : '52px',\n },\n },\n hidden: {\n display: 'none',\n },\n}));\n\nconst ManageTripButton = ({\n collapseOnMobile = true,\n disabled,\n inviteBtnVariant,\n isPlanner = false,\n tripId,\n segmentMethod,\n className,\n}: ManageTripConfirmationButtonProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const hideLabel = collapseOnMobile && isMobile;\n const [dialogOpened, setDialogOpened] = useState(false);\n\n const isFullWidthBtnForTraveler = (!isPlanner && !isMobile) || !collapseOnMobile;\n const isFullWidthBtn = isPlanner || isFullWidthBtnForTraveler;\n const classes = useStyles({variant: inviteBtnVariant, isFullWidthBtn: isFullWidthBtn});\n\n useEffect(() => {\n if(dialogOpened) {\n trackAnalyticsEvent('Invite Modal Opened', {\n category: 'Invites',\n method: segmentMethod,\n tripId: tripId,\n });\n }\n }, [dialogOpened])\n\n return (\n <>\n <Button\n onClick={() => setDialogOpened(true)}\n data-test-id=\"manage-trip-button\"\n disabled={disabled}\n variant={inviteBtnVariant}\n href={tripTravelersPath(tripId)}\n className={clsx(\n classes.root,\n classes.btnWidth,\n className,\n )}>\n <span className={clsx(\n {[classes.hidden]: hideLabel},\n )}>\n Manage\n </span>\n </Button>\n </>\n );\n};\n\nexport default ManageTripButton;\n","import React, { useState } from \"react\";\nimport RailsForm from \"../RailsForm\";\nimport {\n Avatar,\n ButtonBase,\n Box,\n Menu,\n MenuItem,\n Typography,\n useMediaQuery,\n} from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport * as routes from '../../../routes';\n\nconst {\n accountPath,\n tripsPath,\n} = routes;\n\ntype NavBarMenuProps = {\n currentUserAvatarUrl: string,\n hideMyTripsButton: boolean,\n}\n\nconst useStyles = makeStyles((theme) => ({\n accountCopy: {\n fontWeight: 600,\n fontSize: 14,\n lineHeight: '21px',\n color: '#FFFFFF',\n },\n avatar: {\n width: '24px',\n height: '24px',\n marginRight: '4px',\n },\n avatarButton: {\n border: '1px solid #FFFFFF',\n borderRadius: '25px',\n padding: '8px',\n maxHeight: '34px',\n },\n}));\n\nconst NavBarMenu = ({\n currentUserAvatarUrl,\n hideMyTripsButton,\n}: NavBarMenuProps) => {\n const classes = useStyles();\n const [menuAnchorEl, setMenuAnchorEl] = useState<Element | null>(null);\n const openMenu = ({ currentTarget }: { currentTarget: Element }) => setMenuAnchorEl(currentTarget);\n const closeMenu = () => setMenuAnchorEl(null);\n const isLargerScreen = useMediaQuery(useTheme().breakpoints.up(420));\n\n return <>\n <ButtonBase onClick={openMenu} className={classes.avatarButton}>\n <Avatar\n className={classes.avatar}\n src={currentUserAvatarUrl}\n data-test-id=\"current-user-avatar\"\n />\n <Typography className={classes.accountCopy}>Account</Typography>\n </ButtonBase>\n <Menu\n disableScrollLock={isLargerScreen}\n aria-controls=\"navbar-menu\"\n open={Boolean(menuAnchorEl)}\n onClose={closeMenu}\n anchorEl={menuAnchorEl}\n keepMounted\n data-test-id=\"navBarMenu\"\n >\n {!hideMyTripsButton && (\n <Box>\n { /* NOTE: for some reason, the types don't think `href` can be used with `component` */ }\n { /* @ts-expect-error */ }\n <MenuItem\n component={ButtonBase}\n href={tripsPath()}\n data-test-id=\"myTripsButton\"\n >\n My trips\n </MenuItem>\n </Box>\n )}\n <Box>\n { /* NOTE: for some reason, the types don't think `href` can be used with `component` */ }\n { /* @ts-expect-error */ }\n <MenuItem\n component={ButtonBase}\n href={accountPath()}\n data-test-id=\"myAccountButton\"\n >\n Account\n </MenuItem>\n </Box>\n <Box>\n <RailsForm method=\"DELETE\" action=\"/auth\" withChangeDetection={false}>\n <MenuItem\n id=\"logout-menu\"\n component='button'\n type=\"submit\"\n data-test-id=\"logOutButton\"\n >\n Log out\n </MenuItem>\n </RailsForm>\n </Box>\n </Menu>\n </>;\n}\n\nexport default NavBarMenu;\n","import React, { useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport PersonAddSharpIcon from '@mui/icons-material/PersonAdd';\nimport { DefaultTheme, makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { track as trackAnalyticsEvent } from '../../../services/analytics';\nimport InviteModal from \"../InviteModal\";\nimport Button from \"../../buttons/Button\";\n\nexport type ButtonVariant = 'primary' | 'tertiary';\n\ntype ShareTripConfirmationButtonProps = {\n collapseOnMobile?: boolean,\n disabled: boolean,\n inviteBtnVariant?: ButtonVariant,\n inviterId?: string,\n isPlanner?: boolean,\n tripId: string,\n tripGid: string,\n tripName: string,\n segmentMethod: string,\n shareLinkSource: string,\n};\n\nconst useStyles = makeStyles<DefaultTheme, { isFullWidthBtn: boolean, variant: ButtonVariant }>((theme) => ({\n root: {\n height: '100%',\n maxHeight: '48px',\n },\n rootMobile: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n height: '100%',\n [theme.breakpoints.down(400)]: {\n margin: '0px 2px',\n },\n },\n btnWidth: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '164px' : '52px',\n [theme.breakpoints.down(370)]: {\n width: ({ isFullWidthBtn }) => isFullWidthBtn ? '134px' : '32px',\n padding: ({ isFullWidthBtn }) => isFullWidthBtn ? '12px 24px' : '12px 20px',\n },\n },\n hidden: {\n display: 'none',\n },\n label: {\n marginLeft: theme.spacing(1),\n },\n icon: {\n color: ({variant}) => variant === 'tertiary' ? 'black' : 'white',\n },\n}));\n\nconst ShareTripButton = ({\n collapseOnMobile = true,\n disabled,\n inviteBtnVariant,\n inviterId,\n isPlanner = false,\n tripId,\n tripGid,\n tripName,\n segmentMethod,\n shareLinkSource,\n}: ShareTripConfirmationButtonProps) => {\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n const hideLabel = collapseOnMobile && isMobile;\n const [dialogOpened, setDialogOpened] = useState(false);\n\n const isFullWidthBtnForTraveler = (!isPlanner && !isMobile) || !collapseOnMobile;\n const isFullWidthBtn = isPlanner || isFullWidthBtnForTraveler;\n const classes = useStyles({variant: inviteBtnVariant, isFullWidthBtn: isFullWidthBtn});\n\n useEffect(() => {\n if(dialogOpened) {\n trackAnalyticsEvent('Invite Modal Opened', {\n category: 'Invites',\n method: segmentMethod,\n tripId: tripId,\n });\n }\n }, [dialogOpened])\n\n return (\n <>\n <Button\n onClick={() => setDialogOpened(true)}\n data-test-id=\"shareTripButton\"\n disabled={disabled}\n variant={inviteBtnVariant}\n className={clsx(\n classes.root,\n {[classes.rootMobile]: isMobile},\n classes.btnWidth,\n )}>\n <PersonAddSharpIcon className={clsx({[classes.icon]: !disabled})} />\n <span className={clsx(\n classes.label,\n {[classes.hidden]: hideLabel},\n )}>\n Invite\n </span>\n </Button>\n {dialogOpened && (\n <InviteModal\n inviterId={inviterId}\n onClose={() => setDialogOpened(false)}\n tripId={tripId}\n tripGid={tripGid}\n tripName={tripName}\n shareLinkSource={shareLinkSource}\n />\n )}\n </>\n );\n};\n\nexport default ShareTripButton;\n","import React from \"react\";\nimport SideBarPage from \"./SideBarPage\";\nimport SkeletonList from './SkeletonPage/SkeletonList';\n\nconst SkeletonPage = ({}) => {\n const SkeletonItems = 3;\n\n return <>\n <SideBarPage\n data-test-id='skeleton-page'\n mainContent={<SkeletonList itemLength={SkeletonItems} />}\n />\n </>\n}\n\nexport default SkeletonPage;\n","import React from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport {\n Card,\n Grid,\n Theme,\n} from \"@mui/material\";\nimport Skeleton from '@mui/material/Skeleton';\n\nconst useStyles = makeStyles<Theme, { isMobile: boolean }>((theme) => ({\n skeletonCard: {\n width: ({ isMobile }) => isMobile ? '100%' : '84%',\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n marginLeft: theme.spacing(3),\n },\n textSkeleton: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n flex: '1 1 auto',\n },\n}));\n\nconst SkeletonCard = ({}) => {\n const classes = useStyles({ isMobile: false });\n const screenSize = useMediaQuery(useTheme().breakpoints.down('md')) ? 'mobile' : 'desktop';\n\n const imageSkeletonProps = {\n desktop: {\n width: 240,\n height:380,\n },\n mobile: {\n width: 335,\n height:235,\n },\n };\n\n return <>\n <Card className={classes.skeletonCard}>\n <Grid\n container\n direction=\"row\"\n justifyContent='space-between'\n >\n <Grid item>\n <Skeleton variant=\"rectangular\" {...imageSkeletonProps[screenSize]} animation={'wave'} />\n </Grid>\n <Grid item className={classes.textSkeleton}>\n <Skeleton width={132} height={24} animation={'wave'} />\n <Skeleton height={48} animation={'wave'} />\n <Skeleton height={48} animation={'wave'} />\n <Skeleton height={24} animation={'wave'} />\n </Grid>\n </Grid>\n </Card>\n </>\n}\n\nexport default SkeletonCard;\n","import React from \"react\";\nimport SkeletonCard from './SkeletonCard';\n\ntype SkeletonListProps = {\n itemLength: number,\n}\nconst SkeletonList = ({\n itemLength = 1,\n}: SkeletonListProps) => {\n\n return <>\n {Array.from({ length: itemLength }, (_, index) => {\n return <React.Fragment key={`skeleton-card-${index}`}>\n <SkeletonCard />\n </React.Fragment>\n })}\n </>\n}\n\nexport default SkeletonList;\n","import React from 'react';\nimport { makeStyles } from \"@mui/styles\";\nimport { Alert, AlertColor } from \"@mui/material\";\nimport { Snackbar, SnackbarOrigin } from '@mui/material';\nimport clsx from 'clsx';\nimport {\n ErrorIcon,\n InfoIcon,\n SuccessIcon,\n WarningIcon,\n} from \"./SnackbarNotificationIcons\";\n\nexport type SnackbarNotificationProp = {\n autoHideDuration?: number,\n message: string,\n onClose?: () => void,\n open: boolean,\n severity?: AlertColor,\n};\n\nconst useStyles = makeStyles(theme => ({\n message: {\n fontFamily: 'Poppins',\n fontSize: 16,\n lineHeight: '24px',\n color: '#FFFFFF',\n textAlign: 'center',\n },\n root: {\n '@supports (margin-top: env(safe-area-inset-top))': {\n marginTop: 'env(safe-area-inset-top)',\n },\n backgroundColor: '#323232',\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n },\n },\n standardInfo: {\n '& .MuiAlert-icon': {\n marginRight: 0,\n },\n },\n}));\n\nconst SnackbarNotification = ({\n autoHideDuration,\n message,\n onClose,\n open,\n severity,\n}: SnackbarNotificationProp) => {\n const classes = useStyles();\n const isPublicSearch = window.location.pathname === '/search'\n\n const renderIcon = {\n error: <ErrorIcon />,\n info: <InfoIcon />,\n success: <SuccessIcon />,\n warning: <WarningIcon />,\n };\n\n return (\n <Snackbar\n data-test-id='snackbar'\n anchorOrigin={{vertical: 'top', horizontal: 'center'}}\n autoHideDuration={autoHideDuration}\n onClose={onClose}\n open={open}\n >\n <Alert\n classes={{\n message: classes.message,\n root: classes.root,\n standardInfo: classes.standardInfo,\n }}\n data-test-id=\"snackbar-message\"\n severity={severity}\n icon={!isPublicSearch && renderIcon[severity]}\n >\n {message}\n </Alert>\n </Snackbar>\n );\n};\n\nSnackbarNotification.defaultProps = {\n autoHideDuration: 6000,\n severity: 'success',\n};\n\nexport default SnackbarNotification;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\n\nexport const ErrorIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\n <circle cx=\"12.0637\" cy=\"12\" r=\"12\" fill=\"white\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM17.6011 17.9853C18.1454 17.4518 18.1542 16.5781 17.6208 16.0338L14.1575 12.4999L17.6208 8.96597C18.1542 8.42163 18.1454 7.54791 17.6011 7.01446C17.0567 6.481 16.183 6.48983 15.6495 7.03417L12.2253 10.5282L8.80077 7.03379C8.26732 6.48945 7.39359 6.48062 6.84926 7.01407C6.30492 7.54753 6.29609 8.42125 6.82954 8.96559L10.2931 12.4999L6.82954 16.0342C6.29609 16.5785 6.30492 17.4522 6.84926 17.9857C7.39359 18.5191 8.26732 18.5103 8.80077 17.966L12.2253 14.4715L15.6495 17.9656C16.183 18.5099 17.0567 18.5188 17.6011 17.9853Z\" fill=\"#FB5D5D\"/>\n </SvgIcon>\n );\n};\n\nexport const InfoIcon = () => {\n return <></>\n};\n\nexport const SuccessIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\n <circle cx=\"12.0637\" cy=\"12\" r=\"12\" fill=\"#1EBE95\"/>\n <path d=\"M5.56372 14L9.56372 18L19.0637 8\" stroke=\"white\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <polygon points=\"6.65,13 9.5,15.9 15.6,9.4\" fill=\"#1EBE95\"></polygon>\n </SvgIcon>\n );\n};\n\nexport const WarningIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\n <path d=\"M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12Z\" fill=\"#FFCA0D\"/>\n <rect x=\"10.5\" y=\"4\" width=\"3\" height=\"11\" rx=\"1.5\" fill=\"white\"/>\n <circle cx=\"12\" cy=\"18.5\" r=\"1.5\" fill=\"white\"/>\n </SvgIcon>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport {\n Box,\n Grid,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"@mui/icons-material/Remove\";\nimport FlatButton from \"../buttons/FlatButton\";\n\nexport type StepperInputProps = {\n defaultValue?: number,\n hideSelect?: boolean,\n minValue?: number,\n maxValue?: number,\n onChange?: (value: number) => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n numberBox: {\n fontWeight: 600,\n padding: '10px',\n border: '1px solid #C0C0C0',\n backgroundColor: 'white',\n width: theme.spacing(8),\n height: '100%',\n borderRadius: theme.spacing(8),\n textAlign: 'center',\n },\n select: {\n fontWeight: 600,\n fontSize: 'inherit',\n '& .MuiSelect-select': {\n padding: '0 !important',\n '&:focus': {\n background: 'none',\n },\n },\n '& .MuiSelect-icon': {\n display: 'none',\n },\n },\n}));\n\nconst StepperInput = ({\n defaultValue,\n hideSelect,\n minValue,\n maxValue,\n onChange,\n}: StepperInputProps) => {\n const classes = useStyles();\n const [value, setValue] = useState(defaultValue || minValue || 0);\n const showSelect = !hideSelect && minValue !== undefined && maxValue !== undefined;\n\n const selectOptions = () => {\n const options = [];\n for (let i = minValue; i <= maxValue; i++) {\n options.push(<MenuItem value={i} key={i}>{i}</MenuItem>);\n }\n return options;\n};\n\n\n const onAdd = () => {\n if (!maxValue || value < maxValue) {\n setValue(value + 1);\n }\n };\n\n const onSubtract = () => {\n if (!minValue || value > minValue) {\n setValue(value - 1);\n }\n };\n\n const handleSelectChange = (event: SelectChangeEvent<number>) => {\n setValue(Number(event.target.value));\n };\n\n useEffect(() => {\n if (onChange) {\n onChange(value);\n }\n }, [value]);\n\n return (\n <Grid container spacing={1} data-test-id=\"stepperInput\">\n <Grid item>\n <FlatButton\n onClick={onSubtract}\n disabled={minValue === value}\n data-test-id=\"stepperSubtractButton\"\n >\n <RemoveIcon />\n </FlatButton>\n </Grid>\n <Grid item>\n <Box className={classes.numberBox}>\n {showSelect ? (\n <Select\n data-test-id='stepper-number-value'\n className={classes.select}\n value={value}\n onChange={handleSelectChange}\n variant='standard'\n >\n {selectOptions()}\n </Select>\n ) : (\n <>{value}</>\n )}\n </Box>\n </Grid>\n <Grid item>\n <FlatButton\n disabled={maxValue === value}\n onClick={onAdd}\n data-test-id=\"stepperAddButton\"\n >\n <AddIcon />\n </FlatButton>\n </Grid>\n </Grid>\n );\n};\n\nexport default StepperInput;\n","import React from \"react\";\nimport Checkbox, { CheckboxProps } from \"@mui/material/Checkbox\";\nimport { withStyles } from '@mui/styles';\n\nconst StyledCheckbox = withStyles({\n root: {\n color: \"#555e64\",\n '&$checked': {\n color: \"#545DFC\",\n },\n },\n checked: {},\n})((props: CheckboxProps) => <Checkbox {...props} />);\n\nexport default StyledCheckbox;\n","import React from \"react\";\nimport Switch, { SwitchClassKey, SwitchProps } from '@mui/material/Switch';\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n width: 52,\n height: 24,\n padding: 0,\n },\n switchBase: {\n padding: 1,\n '&$checked': {\n transform: 'translateX(28px)',\n color: theme.palette.common.white,\n '& + $track': {\n backgroundColor: theme.palette.primary.main,\n opacity: 1,\n border: 'none',\n },\n },\n '&$focusVisible $thumb': {\n color: theme.palette.primary.main,\n border: '6px solid #fff',\n },\n },\n thumb: {\n width: 22,\n height: 22,\n },\n track: {\n borderRadius: 24 / 2,\n border: `1px solid ${theme.palette.general.gray}`,\n backgroundColor: theme.palette.general.gray,\n opacity: 1,\n transition: theme.transitions.create(['background-color', 'border']),\n },\n checked: {},\n focusVisible: {},\n}));\n\nconst StyledSwitch = ({ ...props }: SwitchProps) => {\n const classes = useStyles();\n\n return (\n <Switch\n focusVisibleClassName={classes.focusVisible}\n disableRipple\n classes={{\n root: classes.root,\n switchBase: classes.switchBase,\n thumb: classes.thumb,\n track: classes.track,\n checked: classes.checked,\n }}\n {...props}\n />\n );\n};\n\nexport default StyledSwitch;\n","import * as React from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nexport function TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n {...other}\n >\n {value === index && (\n <Box sx={{ pt: 3, pl: 1 }}>\n {children}\n </Box>\n )}\n </div>\n );\n};\n\ntype TabNavigationProps = {\n activeTab: number,\n tabLabels: string[],\n children: React.ReactNode;\n onTabChange: (event: React.SyntheticEvent, value: number) => void,\n}\n\nconst TabNavigation = ({\n activeTab,\n tabLabels,\n children,\n onTabChange,\n}: TabNavigationProps) => {\n\n return (\n <Box sx={{ width: '100%' }} data-test-id='tab-navigation'>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs value={activeTab} onChange={onTabChange} data-test-id='tabs-list'>\n {tabLabels.map((tabLabel, index) => (\n <Tab\n data-test-id={`manage-${index}`}\n label={tabLabel}\n key={`tab-${index}`}\n sx={{fontSize: '1rem'}}\n />\n ))}\n </Tabs>\n </Box>\n {children}\n </Box>\n );\n}\n\nexport default TabNavigation;\n","import React from 'react';\nimport ReactTimeAgo from 'react-time-ago';\nimport TimeAgo from 'javascript-time-ago';\nimport en from 'javascript-time-ago/locale/en';\nimport { Typography } from '@mui/material';\nimport ErrorBoundary from \"./ErrorBoundary\"\nimport moment from 'moment';\nimport Tooltip from './Tooltip';\nimport { makeStyles } from \"@mui/styles\";\n\nconst customLabels: any = {\n now: {\n past: \"Just now\",\n },\n minute: {\n past: {\n one: \"{0}m\",\n other: \"{0}m\",\n },\n },\n day: {\n past: {\n one: \"Yesterday\",\n other: \"{0}d\",\n },\n },\n hour: {\n past: {\n one: \"{0}h\",\n other: \"{0}h\",\n },\n },\n week: {\n past: {\n other: \"{0}w\",\n },\n },\n month: {\n past: {\n other: \"{0}mo\",\n },\n },\n year: {\n past: {\n other: \"{0}y\",\n },\n },\n};\n\ntype TimeStampProps = {\n date: number,\n className?: string,\n};\n\nconst customType: any = 'custom'\nTimeAgo.addDefaultLocale(en);\nTimeAgo.addLabels('en', customType, customLabels);\n\nconst customStyle: any = {\n labels: customType,\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '&:hover': {\n color: '#3B41B0',\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n },\n}));\n\nconst CustomTooltip = ({ verboseDate, children, ...restOfProps }) => (\n <Tooltip {...restOfProps} title={verboseDate}>\n {children}\n </Tooltip>\n);\n\nconst TimeStamp = ({ className, date }: TimeStampProps) => {\n const classes = useStyles();\n const dateTime = new Date(date);\n const formatDate = moment(dateTime).local().format('llll');\n\n return (\n <Typography className={className}>\n <ErrorBoundary fallback={formatDate}>\n <ReactTimeAgo\n className={classes.root}\n data-test-id='react-time-ago'\n date={dateTime}\n locale=\"en-US\"\n timeStyle={customStyle}\n formatVerboseDate={() => dateTime.toLocaleString('en-US', { dateStyle: 'full', timeStyle: 'short', hour12: true })}\n wrapperComponent={CustomTooltip}\n />\n </ErrorBoundary>\n </Typography>\n );\n};\n\nexport default TimeStamp;\n","import React from 'react';\nimport {\n Box,\n Grid,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport ErrorIcon from '@mui/icons-material/Error';\n\ntype ToDoAlertProps = {\n message: string,\n};\n\nconst useStyles = makeStyles(theme => ({\n message: {\n fontSize: 16,\n lineHeight: '24px',\n },\n root: {\n backgroundColor: '#F4F5FF',\n border: '1px solid #545DFC',\n borderRadius: '4px',\n padding: theme.spacing(2),\n },\n errorIcon: {\n color: '#7D94A9',\n marginRight: theme.spacing(1),\n verticalAlign: 'middle',\n },\n todo: {\n color: theme.palette.text.primary,\n fontWeight: 600,\n },\n}));\n\nconst ToDoAlert = ({\n message,\n}: ToDoAlertProps) => {\n const classes = useStyles();\n\n return (\n <Grid\n container\n className={classes.root}\n wrap=\"nowrap\"\n alignItems=\"center\"\n >\n <Grid item>\n <ErrorIcon className={classes.errorIcon}/>\n </Grid>\n <Grid item xs>\n <Typography className={classes.message}>\n <Box component=\"span\" className={classes.todo}>{'To Do > '}</Box>\n {message}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default ToDoAlert;\n","import React from \"react\";\nimport TooltipBase, { TooltipProps } from \"@mui/material/Tooltip\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n arrow: {\n color: 'black',\n },\n tooltip: {\n backgroundColor: 'black',\n fontSize: 14,\n maxWidth: 330,\n [theme.breakpoints.down('sm')]: {\n maxWidth: 270,\n textAlign: 'center',\n },\n },\n}));\n\nconst Tooltip : React.FC<TooltipProps> = ({ children, title, ...otherProps }) => {\n const classes = useStyles();\n\n return (\n <TooltipBase enterTouchDelay={0} arrow classes={classes} title={title} {...otherProps}>\n {children}\n </TooltipBase>\n );\n}\n\nexport default Tooltip;\n","import React, { useState } from 'react';\nimport pluralize from \"pluralize\";\nimport clsx from \"clsx\";\nimport { sortBy } from 'lodash'\nimport {\n Grid,\n TablePagination,\n Typography,\n} from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from \"@mui/styles\";\nimport Link from \"./Link\";\nimport TablePaginationActions from \"./TravelersVotingBox/TablePaginationActions\";\nimport TravelerRow from \"./TravelersVotingBox/TravelerRow\";\nimport { track as trackAnalyticsEvent } from '../../services/analytics';\nimport { TypeTripObjectType } from './TripObjectTypes';\nimport titleize from 'titleize';\nimport { PlusOneType } from '../../types/PlusOneTypes';\n\nexport type TravelerProps = {\n id: string,\n avatarUrl: string,\n displayName: string,\n missingVotesCount?: number,\n name: string,\n status: string,\n destinationRankings?: string[],\n stayRankings?: string[],\n plusOneCount?: number,\n plusOnes: PlusOneType[],\n userId: string,\n stayMissingVotesCount?: number,\n destinationMissingVotesCount?: number,\n};\n\ntype TravelersVotingBoxProps = {\n isEmptyState?: boolean,\n travelers: TravelerProps[],\n tripId: string,\n verticalType: TypeTripObjectType,\n};\n\nconst TRAVELERS_PER_PAGE = 4;\nconst TRAVELER_ROW_HEIGHT = 64;\n\nconst useStyles = makeStyles(theme => ({\n button: {\n color: theme.palette.primary.main,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: '24px',\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: 20,\n fontWeight: 600,\n lineHeight: '32px',\n [theme.breakpoints.down('md')]: {\n fontSize: 20,\n },\n },\n travelersList: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n travelersListHeight: {\n height: TRAVELERS_PER_PAGE * TRAVELER_ROW_HEIGHT,\n },\n paginationCaption: {\n fontSize: 16,\n },\n paginationCount: {\n fontWeight: 600,\n },\n paginationSpacer: {\n display: 'none',\n },\n paginationToolbar: {\n padding: `0px ${theme.spacing(0.5)}`,\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nconst TravelersVotingBox = ({\n isEmptyState,\n travelers,\n tripId,\n verticalType,\n}: TravelersVotingBoxProps) => {\n const classes = useStyles();\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'), {noSsr: true});\n const [collapsed, setCollapsed] = useState(isMobile);\n const buttonText = collapsed ? 'Show' : 'Hide';\n\n const sortedTravelers = sortBy(travelers, 'missingVotesCount')\n\n const formattedVerticalType = titleize(verticalType);\n\n const onToggleButtonClick = () => {\n setCollapsed(!collapsed);\n\n trackAnalyticsEvent('Traveler List Visibility Toggled', {\n category: 'Traveler List',\n tripId: tripId,\n verticalViewed: formattedVerticalType,\n visibility: collapsed ? 'collapsed' : 'expanded',\n });\n };\n\n const [page, setPage] = useState(0);\n\n const paginatedTravelers = (page) => {\n const array = [];\n for(let i = 0; i < sortedTravelers.length; i += TRAVELERS_PER_PAGE) {\n array.push(sortedTravelers.slice(i, i+TRAVELERS_PER_PAGE));\n }\n return array[page];\n };\n\n const labelDisplayedRows = ({ from, to, count }) => {\n return <>\n <span className={classes.paginationCount}>{from}–{to}</span> of {pluralize('traveler', count, true)}\n </> ;\n };\n\n const adjustTravelersListHeight = travelers.length > TRAVELERS_PER_PAGE;\n\n return (\n <Grid\n container\n direction=\"column\"\n data-test-id=\"travelersVotingBox\"\n >\n <Grid item container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid item>\n <Typography className={classes.title}>Travelers ({travelers.length})</Typography>\n </Grid>\n <Grid item>\n <Link\n className={classes.button}\n onClick={() => onToggleButtonClick()}\n text={buttonText}\n />\n </Grid>\n </Grid>\n {!collapsed && <>\n <Grid\n item\n container\n direction=\"column\"\n className={clsx(\n classes.travelersList,\n {\n [classes.travelersListHeight]: adjustTravelersListHeight,\n },\n )}\n spacing={2}\n data-test-id='travelers-list'\n >\n {paginatedTravelers(page).map((traveler, index) => (\n <TravelerRow key={index} isEmptyState={isEmptyState} traveler={traveler} verticalType={verticalType}/>\n ))}\n </Grid>\n <TablePagination\n classes={{\n displayedRows: classes.paginationCaption,\n spacer: classes.paginationSpacer,\n toolbar: classes.paginationToolbar,\n }}\n component=\"div\"\n count={travelers.length}\n page={page}\n onPageChange={(event, newPage) => setPage(newPage)}\n rowsPerPage={TRAVELERS_PER_PAGE}\n rowsPerPageOptions={[]}\n labelDisplayedRows={labelDisplayedRows}\n ActionsComponent={TablePaginationActions}\n data-test-id=\"pagination\"\n />\n </>}\n </Grid>\n );\n};\n\nTravelersVotingBox.defaultProps = {\n isEmptyState: false,\n};\n\nexport default TravelersVotingBox;\n","// This component is a copy from the original TablePaginationActions component\n// but we changed the IconButton and the arrow icons.\n\nimport React from 'react';\nimport { makeStyles, useTheme, createStyles } from '@mui/styles';\nimport IconButton from \"../../buttons/IconButton\";\nimport NavigateBeforeIcon from '@mui/icons-material/NavigateBefore';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\n\ninterface TablePaginationActionsProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n flexShrink: 0,\n marginLeft: theme.spacing(2.5),\n },\n icon: {\n marginRight: theme.spacing(3),\n },\n }),\n);\n\nconst TablePaginationActions = (props: TablePaginationActionsProps) => {\n const classes = useStyles();\n const theme = useTheme();\n const { count, page, rowsPerPage, onPageChange } = props;\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1);\n };\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1);\n };\n\n const maxPageCount = Math.ceil(count / rowsPerPage) - 1;\n\n return (\n <div className={classes.root}>\n <IconButton\n aria-label=\"previous page\"\n className={classes.icon}\n data-test-id=\"previousPageButton\"\n disabled={page === 0}\n onClick={handleBackButtonClick}\n >\n {theme.direction === 'rtl' ? <NavigateNextIcon /> : <NavigateBeforeIcon />}\n </IconButton>\n <IconButton\n aria-label=\"next page\"\n data-test-id=\"nextPageButton\"\n disabled={page >= maxPageCount}\n onClick={handleNextButtonClick}\n >\n {theme.direction === 'rtl' ? <NavigateBeforeIcon /> : <NavigateNextIcon />}\n </IconButton>\n </div>\n );\n};\n\nexport default TablePaginationActions;\n","import React from 'react';\nimport clsx from \"clsx\";\nimport pluralize from \"pluralize\";\nimport {\n Grid,\n Typography,\n} from \"@mui/material\";\nimport titleize from 'titleize';\nimport { makeStyles } from \"@mui/styles\";\nimport Avatar, { statusToVariant } from '../../avatars/Avatar';\nimport { TravelerProps } from \"../TravelersVotingBox\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { TypeTripObjectType } from '../TripObjectTypes';\nimport ErrorIcon from '@mui/icons-material/Error';\n\ntype TravelerRowProps = {\n isEmptyState: boolean,\n traveler: TravelerProps,\n verticalType: TypeTripObjectType,\n};\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n height: 20,\n verticalAlign: 'text-bottom',\n marginRight: theme.spacing(0.5),\n },\n checkIcon: {\n color: '#20B163',\n },\n errorIcon: {\n color: '#7D94A9',\n },\n name: {\n color: '#303232',\n fontSize: 16,\n lineHeight: '24px',\n },\n missingVotes: {\n color: '#505050',\n fontSize: 14,\n lineHeight: '12px',\n marginTop: theme.spacing(0.5),\n },\n}));\n\nconst TravelerRow = ({\n isEmptyState,\n traveler,\n verticalType,\n}: TravelerRowProps) => {\n const classes = useStyles();\n const titleizedVerticalType = titleize(verticalType);\n\n const missingVotesText = () => {\n if (traveler.missingVotesCount === 0) {\n return (\n <>\n <CheckCircleIcon className={clsx(classes.icon, classes.checkIcon)} />\n {pluralize(titleizedVerticalType, 1, false)} voting complete\n </>\n );\n } else {\n return (\n <>\n <ErrorIcon className={clsx(classes.icon, classes.errorIcon)} />\n {traveler.missingVotesCount} {pluralize(verticalType, traveler.missingVotesCount, false)}\n {` missing ${pluralize('vote', traveler.missingVotesCount)}`}\n </>\n )\n };\n };\n\n return (\n <Grid item container spacing={2} alignItems=\"center\" data-test-id=\"travelerRow\">\n <Grid item>\n <Avatar\n borderVariant={statusToVariant[traveler.status]}\n src={traveler.avatarUrl}\n size=\"md\"\n />\n </Grid>\n <Grid item>\n <Typography className={classes.name}>\n {traveler.name}\n </Typography>\n <Typography className={classes.missingVotes}>\n {isEmptyState ? (\n `No ${verticalType} to vote on`\n ) : (\n missingVotesText()\n )}\n </Typography>\n </Grid>\n </Grid>\n );\n};\n\nexport default TravelerRow;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n Box,\n ButtonBase,\n Grid,\n} from \"@mui/material\";\nimport CardButton from \"../buttons/CardButton\";\n\nexport enum Variation {\n Horizontal = 'horizontal',\n Vertical = 'vertical'\n};\n\ntype TripObjectProps = {\n anchor?: string,\n className?: string,\n content: React.ReactNode,\n contentClassName?: string,\n footer?: React.ReactNode,\n header?: React.ReactNode,\n isClickable?: boolean,\n linkHref?: string,\n linkTargetBlank?: boolean,\n noMargin?: boolean,\n onTripObjectClick?: () => void,\n testId?: string,\n variation?: Variation,\n visual: React.ReactNode,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: \"relative\",\n width: '100%',\n },\n noMargin: {\n marginBottom: 0,\n },\n visual: {\n position: \"relative\",\n width: \"100%\",\n },\n content: {\n padding: theme.spacing(2),\n paddingBottom: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n footer: {\n paddingBottom: 0,\n display: 'flex',\n flexDirection: 'row',\n },\n clickArea: {\n height: '100%',\n position: \"absolute\",\n width: '100%',\n zIndex: 1,\n },\n addCursor: {\n cursor: 'pointer',\n },\n}));\n\ntype ClickAreaProps = {\n anchor?: string,\n linkHref?: string,\n linkTargetBlank?: boolean,\n onTripObjectClick?: () => void,\n};\n\nconst ClickArea = ({\n anchor,\n linkHref,\n linkTargetBlank,\n onTripObjectClick,\n }: ClickAreaProps) => {\n if (!linkHref && !onTripObjectClick) return null;\n\n const classes = useStyles();\n\n return (\n <ButtonBase\n className={classes.clickArea}\n href={linkHref}\n onClick={onTripObjectClick}\n target={linkTargetBlank ? '_blank' : ''}\n id={anchor}\n />\n );\n};\n\nconst TripObject = ({\n anchor,\n className,\n content,\n contentClassName,\n footer,\n header,\n isClickable,\n linkHref,\n linkTargetBlank,\n noMargin,\n onTripObjectClick,\n testId,\n variation,\n visual,\n}: TripObjectProps) => {\n const classes = useStyles();\n const isVertical = variation === Variation.Vertical;\n\n return (\n <CardButton\n className={clsx(\n classes.root,\n className,\n {\n [classes.noMargin]: noMargin,\n [classes.addCursor]: isClickable,\n },\n )}\n disabled={!isClickable}\n >\n <Box data-test-id={testId}>\n {isClickable && (\n <ClickArea\n anchor={anchor}\n linkTargetBlank={linkTargetBlank}\n linkHref={linkHref}\n onTripObjectClick={onTripObjectClick}\n />\n )}\n <Grid\n container\n direction={isVertical ? \"column\" : \"row\"}\n alignItems=\"stretch\"\n >\n {header}\n <Grid item xs={12} sm={isVertical ? undefined : 4} className={classes.visual}>\n {visual}\n </Grid>\n <Grid item xs={12} sm={isVertical ? undefined : 8} className={clsx(classes.content, contentClassName)}>\n {content}\n </Grid>\n {footer &&\n <Grid item xs={12} sm={isVertical ? undefined : 12} className={classes.footer}>\n {footer}\n </Grid>\n }\n </Grid>\n </Box>\n </CardButton>\n );\n};\n\nTripObject.defaultProps = {\n variation: Variation.Horizontal,\n};\n\nexport default TripObject;\n","import React, { useCallback } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport ButtonBase from \"@mui/material/ButtonBase\";\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport useSegment from \"../../services/useSegment\";\n\nexport type EventTrackerType = {\n category: 'Activity' | 'Stay',\n vertical: 'Itinerary' | 'Activities',\n};\n\nexport type ViewDetailsTrackerType = {\n category: 'Activity' | 'Stay',\n page: 'Itinerary' | 'Stays',\n objectId: string,\n link: string,\n};\n\nexport type TripObjectLinkProps = {\n url: string,\n linkText: string,\n eventTracker?: EventTrackerType,\n dataTestId?: string,\n viewDetailsTracker?: ViewDetailsTrackerType,\n onClick?: () => void,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: 2,\n marginRight: theme.spacing(2),\n marginBottom: theme.spacing(0.5),\n marginTop: theme.spacing(0.5),\n fontWeight: 600,\n lineHeight: '20px',\n fontSize: 15,\n height: '40px',\n color: theme.palette.primary.main,\n },\n openNewTabIcon: {\n fontSize: '16px',\n marginLeft: theme.spacing(0.5),\n },\n}));\n\nconst TripObjectLink = ({\n url,\n linkText,\n eventTracker,\n viewDetailsTracker,\n dataTestId,\n onClick = () => {},\n}: TripObjectLinkProps) => {\n const classes = useStyles();\n const { trackLinkSegment } = useSegment();\n\n const refs = useCallback((element) => {\n if(eventTracker) {\n trackLinkSegment(\n element,\n 'Details Viewed',\n {...eventTracker},\n );\n }\n\n if(viewDetailsTracker) {\n trackLinkSegment(\n element,\n 'View Details Clicked',\n {...viewDetailsTracker},\n );\n }\n }, []);\n\n const onButtonClick = () => {\n onClick();\n window.open(url, '_blank')\n };\n\n return (\n <ButtonBase\n className={classes.root}\n onClick={()=> onButtonClick()}\n data-test-id={dataTestId}\n ref={(element) => refs(element)}\n >\n {linkText} <OpenInNewIcon className={classes.openNewTabIcon}/>\n </ButtonBase>\n );\n};\n\nexport default TripObjectLink;\n","import React from 'react';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport FavoritesButton from '../buttons/FavoritesButton';\nimport { searchPath } from \"../../routes\";\nimport { DefaultTheme } from '@mui/styles';\n\ntype TroupeLogoWithFavoritesHeaderProps = {\n withMobilePadding?: boolean,\n viewingShared?: boolean,\n};\n\nconst useStyles = makeStyles<DefaultTheme, {withMobilePadding: boolean}>((theme) => ({\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: theme.spacing(2, 4),\n backgroundColor: '#262A71',\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n padding: ({withMobilePadding}) => withMobilePadding ? theme.spacing(2, 2) : 0,\n },\n },\n logoContainer: {\n display: 'flex',\n },\n logo: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n height: theme.spacing(3.5),\n marginLeft: '3%',\n cursor: 'pointer',\n [theme.breakpoints.down(701)]: {\n marginTop: 0,\n marginBottom: 0,\n height: theme.spacing(2),\n },\n },\n}));\n\nconst TroupeLogoWithFavoritesHeader : React.FC<TroupeLogoWithFavoritesHeaderProps> = ({\n withMobilePadding = false,\n viewingShared = false,\n}) => {\n const classes = useStyles({withMobilePadding});\n\n return(\n <div className={classes.header}>\n <div className={classes.logoContainer}>\n <img\n src=\"/assets/logo_white.svg\"\n alt=\"Troupe logo\"\n className={classes.logo}\n onClick={() => window.location.href = searchPath()}\n />\n </div>\n <div>\n <FavoritesButton viewingShared={viewingShared} />\n </div>\n </div>\n );\n}\n\nexport default TroupeLogoWithFavoritesHeader;\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport {\n makeStyles,\n Typography,\n} from \"@mui/material\";\n\ntype TruncatedTypographyProps = {\n text: string,\n className?: string,\n};\n\nconst useStyles: () => any = makeStyles((theme): {} => ({\n root: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}));\n\nconst TruncatedTypography = ({\n text,\n className,\n }: TruncatedTypographyProps) => {\n const classes = useStyles();\n\n return (\n <Typography className={clsx(classes.root, className)}>\n {text}\n </Typography>\n );\n};\n\nexport default TruncatedTypography;\n","import React from \"react\";\nimport {\n Badge,\n} from \"@mui/material\";\nimport { makeStyles, withStyles } from \"@mui/styles\";\nimport Avatar from \"../avatars/Avatar\";\n\ntype UserAvatarProps = {\n avatarSrc: string,\n avatarClassName?: string,\n badgeContent?: object,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n },\n}));\n\nconst SmallAvatar = withStyles((theme) => ({\n root: {\n width: theme.spacing(3),\n height: theme.spacing(3),\n border: `1px solid ${theme.palette.primary.main}`,\n backgroundColor: '#FFFFFF',\n fontSize: 12,\n },\n}))(Avatar);\n\nconst UserAvatar = ({\n avatarSrc,\n avatarClassName,\n badgeContent,\n}: UserAvatarProps) => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Badge\n overlap=\"circular\"\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n badgeContent={badgeContent && <SmallAvatar>{badgeContent}</SmallAvatar>}\n >\n <Avatar src={avatarSrc} className={avatarClassName}/>\n </Badge>\n </div>\n );\n};\n\nexport default UserAvatar;\n","import React from \"react\";\nimport {\n Grid,\n Typography,\n Theme,\n useMediaQuery,\n} from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { makeStyles, useTheme } from '@mui/styles';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked';\nimport pluralize from 'pluralize';\n\ntype VotingProgressBannerProps = {\n rankings: string[],\n suggestionsCount: number,\n};\n\nconst useStyles = makeStyles<Theme>((theme) => ({\n root: {\n background: '#F2F3FF',\n border: '1px solid #E6E7E8',\n borderRadius: '0px 0px 5px 5px',\n height: '44px',\n },\n icon: {\n height: '20px',\n width: '20px',\n },\n checkCircleIcon: {\n color: '#1EBE95',\n },\n votesLeft: {\n fontSize: theme.spacing(2),\n fontWeight: '500',\n lineHeight: '24px',\n letterSpacing: '0px',\n textAlign: 'left',\n },\n uncheckedIcon: {\n color: '#BEC9D4',\n },\n}));\n\nconst VotingProgressBanner = ({\n rankings = [],\n suggestionsCount,\n}: VotingProgressBannerProps) => {\n const classes = useStyles();\n\n const rankingsCopy = rankings.length === 0 ? Array(3).fill(null) : [...rankings];\n const rankingsSlice = rankingsCopy.sort().slice(0, suggestionsCount);\n const actualRankings = rankingsCopy.filter(vote => vote).length;\n const votesLeftCount = suggestionsCount < 3 ? rankingsSlice.length - actualRankings\n : rankingsCopy.length - actualRankings;\n\n const votesLeftText = `You have ${votesLeftCount} ${pluralize('vote', votesLeftCount)} left`\n const isMobile = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const checkIcon = (checked: boolean): React.ReactNode => {\n if(!checked) {\n return <RadioButtonUncheckedIcon\n className={clsx(classes.icon, classes.uncheckedIcon)}\n data-test-id=\"unchecked-icon\"\n />\n }\n\n return <CheckCircleIcon\n className={clsx(classes.icon, classes.checkCircleIcon)}\n data-test-id=\"check-circle-icon\"\n />\n }\n\n if(votesLeftCount === 0) {\n return null\n }\n\n return <>\n <Grid\n container\n className={classes.root}\n data-test-id='voting-progress-banner'\n justifyContent={isMobile ? 'space-around' : 'center' }\n alignContent='center'\n >\n <Grid item xs={'auto'} mr={4}>\n <Typography className={classes.votesLeft}>{votesLeftText}</Typography>\n </Grid>\n <Grid item container xs={'auto'} spacing={2}>\n {rankingsSlice.map((ranking, index) => (\n <Grid item key={`voting-progress-banner-${index}`} data-test-id={`banner-checkmark-${index}`}>\n {checkIcon(ranking !== null)}\n </Grid>\n ))}\n </Grid>\n </Grid>\n </>\n}\n\nexport default VotingProgressBanner;\n","import React, {useContext, useEffect} from \"react\";\nimport {\n Box,\n Typography,\n Stack,\n} from \"@mui/material\";\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { makeStyles } from \"@mui/styles\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\nimport pluralize from \"pluralize\";\nimport Button from \"../buttons/Button\";\nimport useSegment from \"../../services/useSegment\";\nimport { GlobalContext } from \"../Document\";\n\ntype VotingProgressDialogProps = {\n totalVotes: number,\n votedCount: number,\n isOpen: boolean,\n closeDialog: () => void,\n vertical: string,\n voteCompleted?: boolean,\n};\n\nconst useStyles = makeStyles( theme => ({\n dialogWrapper: {\n textAlign: 'center',\n maxWidth: 400,\n },\n title: {\n marginTop: theme.spacing(3),\n fontSize: 24,\n fontWeight: 600,\n marginBottom: theme.spacing(2),\n },\n description: {\n paddingBottom: theme.spacing(3),\n color: theme.palette.text.primary,\n margin: '0 auto',\n },\n circleHolder: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 43,\n width: 43,\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1),\n },\n incompleteCircle: {\n width: '85%',\n height: '85%',\n borderRadius: '50%',\n border: '3px solid #BEC9D4',\n backgroundColor: '#F2F3FF',\n },\n completeCircle: {\n width: '100%',\n height: '100%',\n color: '#1EBE95',\n },\n button: {\n width: '100%',\n marginTop: theme.spacing(3),\n },\n}));\n\nconst VotingProgressDialog = ({\n totalVotes,\n votedCount,\n isOpen,\n closeDialog,\n vertical,\n voteCompleted = false,\n}: VotingProgressDialogProps) => {\n const classes = useStyles();\n const totalCircles = totalVotes > 3 ? 3 : totalVotes;\n const completedCircles = votedCount;\n const incompletedCircles = totalCircles - completedCircles;\n const { trackSegment } = useSegment();\n const { activateConfetti } = useContext(GlobalContext);\n\n React.useEffect(() => {\n if (isOpen) {\n trackSegment(`Voting ${voteCompleted ? 'Complete' : 'Progress'} Modal Viewed`,\n {\n vertical,\n },\n );\n }\n }, [isOpen]);\n\n const handleClose = () => {\n trackSegment(`Voting ${voteCompleted ? 'Complete' : 'Progress'} Modal Dismissed`,\n {\n vertical,\n },\n );\n closeDialog();\n };\n\n const renderCompleteCircles = () => {\n const displayCircles : React.ReactNode[] = Array.from(Array(totalCircles).keys()).map( i => (\n <Box key={`circle-${i}`} className={classes.circleHolder}>\n {i < completedCircles ? (\n <CheckCircleIcon\n className={classes.completeCircle}\n data-test-id=\"complete-circle\"\n />\n ) : (\n <div\n className={classes.incompleteCircle}\n data-test-id=\"incomplete-circle\"\n />\n )}\n </Box>\n ) );\n\n return(\n <Stack flexDirection=\"row\" justifyContent=\"center\">\n {displayCircles}\n </Stack>\n )\n };\n\n const title = voteCompleted ? 'Congrats!' : 'Success! 🎉';\n\n const description = voteCompleted\n ? \"You've cast all your votes. Your group is one step closer to making a decision!\"\n : `${incompletedCircles} ${pluralize('vote', incompletedCircles)} remaining. Make it count!`;\n\n const renderButton = () => (\n !voteCompleted &&\n <Button className={classes.button} onClick={handleClose}>{\"Let's do it\"}</Button>\n )\n\n useEffect(() => {\n if (isOpen && voteCompleted) {\n activateConfetti()\n }\n }, [isOpen, voteCompleted])\n\n return(\n <ConfirmationDialog\n hideCancelButton\n isOpen={isOpen}\n message={\n <Box className={classes.dialogWrapper}>\n <Typography className={classes.title}>\n {title}\n </Typography>\n <Box textAlign={voteCompleted ? \"center\" : \"left\"}>\n <Typography className={classes.description}>\n {description}\n </Typography>\n {renderCompleteCircles()}\n {renderButton()}\n </Box>\n </Box>\n }\n onClose={handleClose}\n />\n )\n};\n\nexport default VotingProgressDialog;\n","import React from 'react';\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport AvatarGroup from '../AvatarGroup';\nimport { Grid, Typography } from '@mui/material';\nimport rankLabels from '../rankLabels'\nimport ExcludesPlusOnesMessage from \"../ExcludesPlusOnesMessage\";\nimport clsx from 'clsx';\nimport { getTravelersRankingsForTripObject, TripObjectRankingProps } from '../../../services/RankingSystem';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n marginLeft: theme.spacing(1.8),\n fontWeight: 600,\n },\n totalVotes: {\n '&:not(:last-child)': {\n paddingRight: theme.spacing(2),\n },\n },\n votesRow: {\n height: theme.spacing(6),\n marginBottom: theme.spacing(1),\n },\n votesCount: {\n fontSize: 16,\n marginTop: theme.spacing(1),\n marginRight: theme.spacing(0.6),\n },\n}));\n\nconst VotesTable = ({\n travelers,\n objectId,\n rankingType,\n}: TripObjectRankingProps) => {\n const classes = useStyles();\n const votes = getTravelersRankingsForTripObject({travelers: travelers, objectId: objectId, rankingType: rankingType });\n let showPlusOnesMessage = false;\n\n const renderVotesRow = (icon, value, shortLabel) => {\n const rankingVotes = votes.filter(({ ranking }) => ranking === value);\n const hasPlusOnes = rankingVotes.filter(({ plusOneCount }) => plusOneCount > 0).length > 0;\n\n showPlusOnesMessage = showPlusOnesMessage || hasPlusOnes;\n\n return <>\n <Grid item container direction=\"row\" xs={1} lg={1}>\n <img data-test-id={icon} src={`/assets/illustrations/${icon}.svg`}/>\n <Typography className={clsx(classes.label, classes.votesCount)}>\n {shortLabel}\n </Typography>\n <Typography data-test-id={`${shortLabel}-count`} className={classes.votesCount}>\n {`(${rankingVotes.length})`}{hasPlusOnes && '*'}\n </Typography>\n </Grid>\n <Grid data-test-id={`${shortLabel}-avatars`} item alignItems=\"flex-start\" xs={9} lg={9}>\n <AvatarGroup max={5} avatars={rankingVotes} />\n </Grid>\n </>;\n };\n\n return (\n <>\n <Grid container width=\"130px\">\n {rankLabels.map(({icon, value, shortLabel}, index) => (\n <Grid item container direction=\"column\" className={classes.votesRow} key={index}>\n {renderVotesRow(icon, value, shortLabel)}\n </Grid>\n ))}\n </Grid>\n {showPlusOnesMessage && <ExcludesPlusOnesMessage />}\n </>\n )\n};\n\nexport default VotesTable;\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { DialogBottomOnMobile } from './Dialog';\nimport VotesTable from \"./VotingResults/VotesTable\";\nimport { track as trackAnalyticsEvent } from \"../../services/analytics\";\nimport { TravelerProps } from \"./TravelersVotingBox\";\nimport { Grid } from \"@mui/material\";\nimport VoteResultsButton from \"../pages/trips/microsite/shared/VoteResultsButton\";\n\nconst useStyles = makeStyles((theme) => ({\n votesContainer: {\n zIndex: 2,\n },\n}));\n\ntype VotingSummaryDialogProps = {\n isPlanner: boolean,\n objectId: string,\n objectType: 'stays' | 'destinations',\n travelers: TravelerProps[],\n};\n\nconst VotingSummaryDialog = ({\n isPlanner,\n objectId,\n objectType,\n travelers,\n}: VotingSummaryDialogProps) => {\n const classes = useStyles();\n const [isDialogOpen, setIsDialogOpen ] = useState(false);\n\n const onButtonClick = () => {\n setIsDialogOpen(true);\n\n trackAnalyticsEvent('See All Votes Selected', {\n isPlanner: isPlanner,\n tripObjectId: objectId,\n vertical: objectType,\n });\n };\n\n const rankingType = objectType === 'stays' ? 'stayRankings' : 'destinationRankings';\n return (\n <>\n <DialogBottomOnMobile\n title=\"Voting results\"\n fullWidth\n maxWidth=\"xs\"\n message={\n <VotesTable\n rankingType={rankingType}\n objectId={objectId}\n travelers={travelers}\n />\n }\n isOpen={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n >\n </DialogBottomOnMobile>\n <Grid className={classes.votesContainer} item>\n <VoteResultsButton\n objectId={objectId}\n onClick={() => onButtonClick()}\n travelers={travelers}\n rankingType={rankingType}\n />\n </Grid>\n </>\n );\n};\n\nexport default VotingSummaryDialog;\n","type TrophyType = \"GoldTrophy\" | \"SilverTrophy\" | \"BronzeTrophy\";\ntype LabelType = \"1st Choice\" | \"2nd Choice\" | \"3rd Choice\";\ntype ShortLabel = \"1st\" | \"2nd\" | \"3rd\";\n\ntype RankLabel = {\n icon: TrophyType,\n label: LabelType,\n shortLabel: ShortLabel,\n value: number,\n}\n\nexport const rankLabels: RankLabel[] = [\n { icon: \"GoldTrophy\", label: \"1st Choice\", shortLabel: \"1st\", value: 0 },\n { icon: \"SilverTrophy\", label: \"2nd Choice\", shortLabel: \"2nd\", value: 1 },\n { icon: \"BronzeTrophy\", label: \"3rd Choice\", shortLabel: \"3rd\", value: 2 },\n];\n\nexport default rankLabels;\n","import { createTheme } from '@mui/material/styles';\nimport { Theme } from '@mui/material/styles';\n\ndeclare module '@mui/styles/defaultTheme' {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface (remove this line if you don't have the rule enabled)\n interface DefaultTheme extends Theme {}\n}\n\nconst primaryTextColor = '#272727';\nconst primaryColor = '#545DFC';\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: primaryColor,\n },\n success: {\n main: '#7dcab6',\n },\n general: {\n primary: primaryColor,\n danger: '#ab3e4a',\n dark: '#244599',\n gray: '#69737a',\n main: primaryColor,\n success: '#4fb494',\n background: {\n disabled: '#b4b9bc',\n },\n hover: '#F8F7FF',\n },\n background: {\n default: 'white',\n },\n link: {\n default: primaryColor,\n hover: '#3B41B0',\n main: primaryColor,\n pressed: '#244599',\n focused: '#395db2',\n disabled: '#b4b9bc',\n },\n text: {\n primary: primaryTextColor,\n secondary: '#555e64',\n disabled: '#b4b9bc',\n },\n },\n typography: {\n fontFamily: [\n 'Poppins',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n ].join(','),\n button: {\n textTransform: undefined,\n height: 40,\n fontWeight: 600,\n },\n h2: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 1.5,\n },\n h3: {\n fontSize: 16,\n fontWeight: 600,\n },\n h6: {\n fontWeight: 600,\n },\n },\n breakpoints: { // Keep MUI v4 breakpoint values\n values: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n button: {\n fontFamily: 'Poppins',\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n input: {\n '&:disabled': {\n WebkitTextFillColor: '#b4b9bc',\n WebkitOpacity: 1,\n color: '#b4b9bc',\n },\n },\n },\n },\n MuiTypography: {\n variants: [{\n props: {\n color: \"secondary\",\n },\n style: {\n color: primaryTextColor,\n },\n }],\n },\n },\n});\n\nexport default theme;\n","import React, { useRef, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport Grid from '@mui/material/Grid';\nimport clsx from 'clsx';\nimport { Divider, Theme, useMediaQuery } from '@mui/material';\nimport { makeStyles, useTheme } from '@mui/styles';\nimport { HEADER_BAR_HEIGHT } from \"../shared/SiteHeader\";\n\nexport const NAV_BAR_HEIGHT = 58;\n\ntype StyleProps = {\n stickyTop?: number,\n}\n\nconst useStyles = makeStyles<Theme, StyleProps>(theme => ({\n root: {\n height: NAV_BAR_HEIGHT,\n backgroundColor: '#ffffff',\n },\n grid: {\n overflowX: 'auto',\n flexWrap: 'nowrap',\n },\n navItem: {\n position: 'relative',\n },\n navButton: {\n color: '#555e64',\n display: 'block',\n height: '100%',\n fontFamily: theme.typography.fontFamily,\n fontSize: 16,\n fontWeight: 600,\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n margin: 0,\n paddingLeft: theme.spacing(2.5),\n paddingRight: theme.spacing(2.5),\n },\n },\n navButtonCurrent: {\n color: '#243060',\n '&::after': {\n content: \"' '\",\n display: 'block',\n background: theme.palette.primary.main,\n borderRadius: 2,\n height: 6,\n width: '100%',\n position: 'absolute',\n bottom: 0,\n left: 0,\n },\n },\n navButtonDisabled: {\n cursor: 'not-allowed',\n color: '#c0c0c0',\n },\n sticky: {\n position: 'sticky',\n top: ({ stickyTop }) => (\n `${stickyTop}px`\n ),\n '@supports (top: env(safe-area-inset-top))': {\n top: ({ stickyTop }) => `calc(env(safe-area-inset-top) + ${stickyTop}px)`,\n },\n zIndex: '4',\n },\n}))\n\ntype ItemProps = {\n activeItemRef?: React.MutableRefObject<HTMLDivElement>,\n current: boolean,\n disabled: boolean,\n path: string,\n}\n\nconst Item: React.FC<ItemProps> = ({\n activeItemRef,\n children,\n current,\n disabled,\n path,\n}) => {\n const classes = useStyles({});\n return (\n <Grid item className={classes.navItem} ref={activeItemRef}>\n <ButtonBase\n className={clsx(classes.navButton,\n { [classes.navButtonCurrent]: current,\n [classes.navButtonDisabled]: !current && disabled })}\n data-test-id={current ? \"activeNavItem\" : `navItem-${children}`}\n href={path}\n disabled={disabled}\n >\n {children}\n </ButtonBase>\n </Grid>\n );\n}\n\nexport type NavItem = {\n title: string,\n id: string,\n path: string,\n active: boolean,\n}\n\ntype NavBarProps = {\n disabled?: boolean,\n items: NavItem[],\n}\n\nconst NavigationBar = ({ disabled, items }: NavBarProps) => {\n const stickyTop = HEADER_BAR_HEIGHT\n\n const classes = useStyles({ stickyTop: stickyTop });\n const activeItemRef = useRef(null);\n const navBarRef = useRef(null);\n // Horizontal scrolling to active item\n useEffect(() => {\n if(activeItemRef.current && typeof activeItemRef.current.scrollIntoView === 'function') {\n activeItemRef.current.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n });\n\n const contentPosition = useMediaQuery(useTheme().breakpoints.down('md')) ? 'left' : 'center';\n\n return (\n <Box\n className={clsx(classes.root, classes.sticky)}\n >\n <Divider/>\n <Grid\n container\n justifyContent={contentPosition}\n className={clsx(classes.grid, classes.sticky)}\n ref={navBarRef}\n data-test-id='sub-nav-bar'\n >\n {items.map(({ active, path, title }) => (\n <Item\n activeItemRef={active ? activeItemRef : undefined}\n key={path}\n current={active}\n path={path}\n disabled={!!disabled}\n >\n {title}\n </Item>\n ))}\n </Grid>\n <Divider/>\n </Box>\n )\n};\n\nexport default NavigationBar;\n","export const POPULAR_FILTERS = {\n AC: 'Air Conditioning',\n BREAKFAST_INCLUDED: 'Breakfast included',\n DRYER: 'Dryer',\n EVENTS_ALLOWED: 'Events allowed',\n FRONTDESK_24_HOUR: '24-hour front desk',\n INTERNET: 'Wifi',\n MICROWAVE: 'Microwave',\n POOL: 'Pool',\n TV: 'TV',\n WASHER: 'Washer',\n};\n\nexport const FEATURES_FILTERS = {\n AIRPORT_TRANSPORTATION: 'Airport transportation',\n ARCADE: 'Arcade',\n BAR: 'Bar',\n BARBECUE: 'BBQ Grill',\n CHILDREN_WELCOME: 'Children Welcome',\n CRIB: 'Crib',\n EXTRA_BED: 'Extra bed',\n FIREPLACE: 'Fireplace',\n FITNESS_EQUIPMENT: 'Gym',\n FREE_PARKING: 'Free parking',\n HOT_TUB: 'Hot tub',\n HOUSEKEEPING: 'Housekeeping',\n KITCHEN: 'Kitchen',\n LIVING_AREA: 'Living area',\n OUTDOOR_SPACE: 'Outdoor space',\n PARKING_AVAILABLE: 'Parking available',\n PETS_ALLOWED: 'Pets allowed',\n RESTAURANT: 'Restaurant',\n ROOM_SERVICE: 'Room service',\n SMOKING_ALLOWED: 'Smoking allowed',\n SPA: 'Spa',\n};\n\nexport const ACCESSIBILITY_AND_SAFETY_FILTERS = {\n CARBON_MONOXIDE_DETECTOR: 'Carbon-monoxide detector',\n ELEVATOR: 'Elevator',\n SMOKE_DETECTOR: 'Smoke detector',\n WHEELCHAIR_ACCESSIBLE: 'Wheelchair accessible',\n};\n\nconst POPULAR_FILTERS_KEYS = Object.keys(POPULAR_FILTERS)\nconst FEATURES_FILTERS_KEYS = Object.keys(FEATURES_FILTERS)\nconst ACCESSIBILITY_AND_SAFETY_FILTERS_KEYS = Object.keys(ACCESSIBILITY_AND_SAFETY_FILTERS)\n\nexport const ALL_FILTERS_OBJECT = {\n ...POPULAR_FILTERS,\n ...FEATURES_FILTERS,\n ...ACCESSIBILITY_AND_SAFETY_FILTERS,\n}\n\nexport const ALL_AMENITIES_FILTERS = [\n ...POPULAR_FILTERS_KEYS,\n ...FEATURES_FILTERS_KEYS,\n ...ACCESSIBILITY_AND_SAFETY_FILTERS_KEYS] as AmenitiesFiltersType[];\n\nexport type AmenitiesObjectFiltersType = typeof POPULAR_FILTERS | typeof FEATURES_FILTERS | typeof ACCESSIBILITY_AND_SAFETY_FILTERS;\n\nexport type AmenitiesFiltersType = keyof typeof POPULAR_FILTERS | keyof typeof FEATURES_FILTERS | keyof typeof ACCESSIBILITY_AND_SAFETY_FILTERS;\n","export const CREATE_PLUS_ONE = 'create_plus_one';\nexport const ENABLED_ALL_PUSH = 'enabled_all_push';\n","import ReactRailsUJS from 'react_ujs';\nimport 'core-js';\nimport 'regenerator-runtime/runtime';\nimport { elementScrollIntoViewPolyfill } from \"seamless-scroll-polyfill\";\n\nelementScrollIntoViewPolyfill()\n\nconst requireFromComponentsFolder = require.context(\"components\", true);\nReactRailsUJS.getConstructor = (className) => { // based on https://github.com/reactjs/react-rails/blob/master/react_ujs/src/getConstructor/fromRequireContext.js\n const parts = className.split(\".\");\n const filename = parts.shift();\n let component = requireFromComponentsFolder(\"./\" + filename)\n parts.forEach(function (k) { component = component[k] })\n if (component.__esModule) component = component[\"default\"];\n return component;\n};\n","import { gql } from '@apollo/client'\n\nexport const AI_SEARCH_FEEDBACK_CREATE = gql`\n mutation AiSearchFeedbackCreate($tripId: ID, $userId: ID, $response: String!, $modelRequestId: String!) {\n aiSearchFeedbackCreate(input: {\n tripId: $tripId,\n userId: $userId,\n response: $response,\n modelRequestId: $modelRequestId,\n }) {\n aiSearchFeedback {\n id\n }\n errors\n }\n }\n`\n\nexport const AI_SEARCH_FEEDBACK_ADD_MESSAGE = gql`\n mutation AiSearchFeedbackAddMessage($aiSearchFeedbackId: ID!, $message: String!) {\n aiSearchFeedbackAddMessage(input: {\n aiSearchFeedbackId: $aiSearchFeedbackId,\n message: $message,\n }) {\n errors\n }\n }\n`\n","import { gql } from \"@apollo/client\";\nimport { DESTINATION_PAGE_FIELDS } from \"../fragments/destinations\";\n\nexport const DESTINATIONS_LIST_QUERY = gql`\n ${DESTINATION_PAGE_FIELDS}\n query DestinationsList($tripId: ID!, $sortBy: DestinationSorting) {\n destinations(tripId: $tripId, sortBy: $sortBy) {\n id\n ...DestinationPageFields\n }\n travelers(tripId: $tripId) {\n id\n avatarUrl\n displayName\n status\n destinationRankings\n destinationMissingVotesCount\n userId\n }\n }\n`;\n","export const DESTINATION_PAGE_FIELDS = `\n fragment DestinationPageFields on Destination {\n uuid\n currentUserRanking\n ranking\n googlePlaceId\n commentsCount\n googlePlaceUrl\n image\n isChosen\n name\n originalImage\n longitude\n latitude\n mostRecentComment {\n id\n body\n editedAt\n isAuthoredByCurrentUser\n timestamp\n uuid\n author {\n displayName\n avatarUrl\n id\n }\n }\n suggester {\n id\n displayName\n avatarUrl\n }\n trip {\n uuid\n }\n }\n`\n","import { gql } from \"@apollo/client\";\n\nexport const GET_FAVORITES_LISTINGS = gql`\n query GetFavorites($favoriteId: ID!) {\n node(id: $favoriteId) {\n id\n ... on Favorite {\n link\n listings {\n id\n arrival\n departure\n externalListing {\n id\n available\n externalId\n name\n bedrooms\n bathrooms\n starRating\n maxGuests\n reviewsCount\n images\n publicUrl\n propertyType\n pricing {\n currency\n nights\n price\n pricePerNight\n type\n }\n }\n }\n }\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\n\nexport const GUESTS_QUERY = gql`\n query fetchGuestsByTripId($tripId: ID!) {\n guests(tripId: $tripId) {\n id\n displayName\n uuid\n }\n }\n`;\n\nexport const TRIP_GUEST_DELETE = gql`\n mutation TripGuestDelete($additionalTravelerId: ID!) {\n tripGuestDelete(input: {\n tripGuestId: $additionalTravelerId,\n }) {\n errors\n }\n }\n`","import { gql } from \"@apollo/client\";\n\nexport const GET_REACTIONS = gql`\n query GetReactions($reactableId: ID!) {\n node(id: $reactableId) {\n id\n ... on Comment {\n reactions {\n count\n emoji\n humanReadableName\n hasCurrentUserSelected\n reactable {\n ... on Node {\n id\n }\n }\n users {\n id\n displayName\n }\n }\n }\n ... on Broadcast {\n reactions {\n count\n emoji\n humanReadableName\n hasCurrentUserSelected\n reactable {\n ... on Node {\n id\n }\n }\n users {\n id\n displayName\n }\n }\n }\n }\n }\n`;\n\nexport const ADD_REACTION = gql`\n mutation AddReaction($reactableId: ID!, $tripId: ID!, $emoji: String!, $humanReadableName: String!) {\n reactionAdd(input: { reactableId: $reactableId, emoji: $emoji, tripId: $tripId, humanReadableName: $humanReadableName }) {\n errors\n reaction {\n users {\n displayName\n id\n }\n count\n emoji\n hasCurrentUserSelected\n humanReadableName\n reactable {\n ... on Node {\n id\n }\n }\n }\n }\n }\n`;\n\nexport const REMOVE_REACTION = gql`\n mutation RemoveReaction($reactableId: ID!, $tripId: ID!, $emoji: String!) {\n reactionRemove(input: { reactableId: $reactableId, emoji: $emoji, tripId: $tripId }) {\n errors\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\nimport { STAY_PAGE_FIELDS, STAY_PERMAPAGE_FIELDS } from \"../fragments/stays\";\n\nexport const STAYS_LIST_QUERY = gql`\n ${STAY_PAGE_FIELDS}\n query StaysList($tripId: ID!, $sortBy: StaySorting, $dateOptionIds: [Uuid!]!) {\n stays(tripId: $tripId, sortBy: $sortBy, dateOptionIds: $dateOptionIds) {\n id\n ...StayPageFields\n }\n travelers(tripId: $tripId) {\n id\n avatarUrl\n displayName\n plusOneCount\n status\n stayRankings\n stayMissingVotesCount\n userId\n }\n }\n`\n\nexport const STAY_QUERY = gql`\n ${STAY_PERMAPAGE_FIELDS}\n query fetchStay($stayId: ID!) {\n node(id: $stayId) {\n id\n ...StayPermapageFields\n }\n }\n`;\n","export const STAY_PAGE_FIELDS = `\n fragment StayPageFields on Stay {\n uuid\n address\n available\n bedroomsCount\n bookable\n commentsCount\n currency\n currentUserRanking\n googlePlaceId\n googlePlaceUrl\n hasAutomaticAvailability\n images\n isChosen\n isDisabled\n latitude\n longitude\n maxGuests\n name\n originalImages\n originalName\n ranking\n price {\n ... on Price {\n price\n }\n ... on PriceRange {\n prices\n }\n }\n pricePerNight\n pricingType\n propertyType\n provider\n publicUrl\n reviewsCount\n starRating\n dateOptions {\n id\n isChosenDate\n available\n availabilityDateId\n price\n estimatedPrice\n commentsCount\n numNights\n startDate\n startDateWeekday\n startDateYear\n endDate\n endDateWeekday\n endDateYear\n uuid\n }\n mostRecentComment {\n id\n body\n editedAt\n isAuthoredByCurrentUser\n timestamp\n uuid\n author {\n displayName\n avatarUrl\n id\n }\n }\n suggester {\n id\n displayName\n avatarUrl\n }\n trip {\n uuid\n }\n stayBookings {\n id\n uuid\n author {\n id\n displayName\n avatarUrl\n }\n confirmationCode\n checkInDate\n checkOutDate\n totalCost\n checkInTime\n checkOutTime\n refundability\n refundableUntil\n notes\n uuid\n }\n }\n`\n\nexport const STAY_PERMAPAGE_FIELDS = `\n fragment StayPermapageFields on Stay {\n uuid\n address\n available\n bedroomsCount\n bookable\n commentsCount\n currency\n currentUserRanking\n googlePlaceId\n googlePlaceUrl\n hasAutomaticAvailability\n images\n isChosen\n isDisabled\n latitude\n longitude\n maxGuests\n name\n originalImages\n originalName\n ranking\n price {\n ... on Price {\n price\n }\n ... on PriceRange {\n prices\n }\n }\n pricePerNight\n pricingType\n propertyType\n provider\n publicUrl\n reviewsCount\n starRating\n dateOptions {\n id\n isChosenDate\n available\n availabilityDateId\n price\n estimatedPrice\n commentsCount\n numNights\n startDate\n startDateWeekday\n startDateYear\n endDate\n endDateWeekday\n endDateYear\n uuid\n }\n stayBookings {\n id\n uuid\n author {\n id\n displayName\n avatarUrl\n }\n confirmationCode\n checkInDate\n checkOutDate\n totalCost\n checkInTime\n checkOutTime\n refundability\n refundableUntil\n notes\n uuid\n }\n }\n`\n","import { gql } from \"@apollo/client\";\n\nexport const TRAVELERS_QUERY = gql`\n query fetchTravelerPlusOnesByTripId($tripId: ID!) {\n travelers(tripId: $tripId) {\n avatarUrl\n displayName\n joinedAt\n plusOneCount\n status\n isPlanner\n uuid\n user {\n uuid\n }\n plusOnes {\n id\n uuid\n displayName\n }\n id\n }\n }\n`;\n\n","import { gql } from \"@apollo/client\";\n\nexport const USER_QUERY = gql`\n query GetUserNotificationCallout($ID: ID!) {\n node (id: $ID){\n id\n ... on User {\n dateSawNotificationCallout\n }\n }\n }\n`;\n\nexport const GET_USER_DISPLAY_NAME = gql`\n query GetUser($id: ID!) {\n node(id: $id) {\n id\n ... on User {\n displayName\n }\n }\n }\n`;\n","import { find } from 'lodash';\nimport { DocumentNode, OperationDefinitionNode } from 'graphql';\n\nexport const getOperationName = (queryDocument: DocumentNode): string | undefined => {\n const query = find(queryDocument.definitions, ['kind', 'OperationDefinition']) as OperationDefinitionNode\n return query.name?.value\n}\n","export const humanizedStatus = ( status : string) : string => {\n return statusToHuman[ status ];\n};\n\nconst statusToHuman = {\n going: 'Going',\n interested: 'Interested',\n cannot_go: 'Not going',\n}\n","/**\n * File generated by js-routes 2.2.4\n * Based on Rails 6.1.7.3 routes of Troupe::Application\n */\nconst __jsr = (() => {\n const hasProp = (value, key) => Object.prototype.hasOwnProperty.call(value, key);\n let NodeTypes;\n (function (NodeTypes) {\n NodeTypes[NodeTypes[\"GROUP\"] = 1] = \"GROUP\";\n NodeTypes[NodeTypes[\"CAT\"] = 2] = \"CAT\";\n NodeTypes[NodeTypes[\"SYMBOL\"] = 3] = \"SYMBOL\";\n NodeTypes[NodeTypes[\"OR\"] = 4] = \"OR\";\n NodeTypes[NodeTypes[\"STAR\"] = 5] = \"STAR\";\n NodeTypes[NodeTypes[\"LITERAL\"] = 6] = \"LITERAL\";\n NodeTypes[NodeTypes[\"SLASH\"] = 7] = \"SLASH\";\n NodeTypes[NodeTypes[\"DOT\"] = 8] = \"DOT\";\n })(NodeTypes || (NodeTypes = {}));\n const isBrowser = typeof window !== \"undefined\";\n const ModuleReferences = {\n CJS: {\n define(routes) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n module.exports = routes;\n },\n isSupported() {\n return typeof module === \"object\";\n },\n },\n AMD: {\n define(routes) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n define([], function () {\n return routes;\n });\n },\n isSupported() {\n return typeof define === \"function\" && !!define.amd;\n },\n },\n UMD: {\n define(routes) {\n if (ModuleReferences.AMD.isSupported()) {\n ModuleReferences.AMD.define(routes);\n }\n else {\n if (ModuleReferences.CJS.isSupported()) {\n try {\n ModuleReferences.CJS.define(routes);\n }\n catch (error) {\n if (error.name !== \"TypeError\")\n throw error;\n }\n }\n }\n },\n isSupported() {\n return (ModuleReferences.AMD.isSupported() ||\n ModuleReferences.CJS.isSupported());\n },\n },\n ESM: {\n define() {\n // Module can only be defined using ruby code generation\n },\n isSupported() {\n // Its impossible to check if \"export\" keyword is supported\n return true;\n },\n },\n NIL: {\n define() {\n // Defined using const __jsr = \n },\n isSupported() {\n return true;\n },\n },\n DTS: {\n // Acts the same as ESM\n define(routes) {\n ModuleReferences.ESM.define(routes);\n },\n isSupported() {\n return ModuleReferences.ESM.isSupported();\n },\n },\n };\n class ParametersMissing extends Error {\n constructor(...keys) {\n super(`Route missing required keys: ${keys.join(\", \")}`);\n this.keys = keys;\n Object.setPrototypeOf(this, Object.getPrototypeOf(this));\n this.name = ParametersMissing.name;\n }\n }\n const UriEncoderSegmentRegex = /[^a-zA-Z0-9\\-._~!$&'()*+,;=:@]/g;\n const ReservedOptions = [\n \"anchor\",\n \"trailing_slash\",\n \"subdomain\",\n \"host\",\n \"port\",\n \"protocol\",\n ];\n class UtilsClass {\n constructor() {\n this.configuration = {\n prefix: \"\",\n default_url_options: {},\n special_options_key: \"_options\",\n serializer: null || this.default_serializer.bind(this),\n };\n }\n default_serializer(value, prefix) {\n if (this.is_nullable(value)) {\n return \"\";\n }\n if (!prefix && !this.is_object(value)) {\n throw new Error(\"Url parameters should be a javascript hash\");\n }\n prefix = prefix || \"\";\n const result = [];\n if (this.is_array(value)) {\n for (const element of value) {\n result.push(this.default_serializer(element, prefix + \"[]\"));\n }\n }\n else if (this.is_object(value)) {\n for (let key in value) {\n if (!hasProp(value, key))\n continue;\n let prop = value[key];\n if (this.is_nullable(prop) && prefix) {\n prop = \"\";\n }\n if (this.is_not_nullable(prop)) {\n if (prefix) {\n key = prefix + \"[\" + key + \"]\";\n }\n result.push(this.default_serializer(prop, key));\n }\n }\n }\n else {\n if (this.is_not_nullable(value)) {\n result.push(encodeURIComponent(prefix) + \"=\" + encodeURIComponent(\"\" + value));\n }\n }\n return result.join(\"&\");\n }\n serialize(object) {\n return this.configuration.serializer(object);\n }\n extract_options(number_of_params, args) {\n const last_el = args[args.length - 1];\n if ((args.length > number_of_params && last_el === 0) ||\n (this.is_object(last_el) &&\n !this.looks_like_serialized_model(last_el))) {\n if (this.is_object(last_el)) {\n delete last_el[this.configuration.special_options_key];\n }\n return {\n args: args.slice(0, args.length - 1),\n options: last_el,\n };\n }\n else {\n return { args, options: {} };\n }\n }\n looks_like_serialized_model(object) {\n return (this.is_object(object) &&\n !(this.configuration.special_options_key in object) &&\n (\"id\" in object || \"to_param\" in object || \"toParam\" in object));\n }\n path_identifier(object) {\n const result = this.unwrap_path_identifier(object);\n return this.is_nullable(result) || result === false ? \"\" : \"\" + result;\n }\n unwrap_path_identifier(object) {\n let result = object;\n if (!this.is_object(object)) {\n return object;\n }\n if (\"to_param\" in object) {\n result = object.to_param;\n }\n else if (\"toParam\" in object) {\n result = object.toParam;\n }\n else if (\"id\" in object) {\n result = object.id;\n }\n else {\n result = object;\n }\n return this.is_callable(result) ? result.call(object) : result;\n }\n partition_parameters(parts, required_params, default_options, call_arguments) {\n // eslint-disable-next-line prefer-const\n let { args, options } = this.extract_options(parts.length, call_arguments);\n if (args.length > parts.length) {\n throw new Error(\"Too many parameters provided for path\");\n }\n let use_all_parts = args.length > required_params.length;\n const parts_options = {\n ...this.configuration.default_url_options,\n };\n for (const key in options) {\n const value = options[key];\n if (!hasProp(options, key))\n continue;\n use_all_parts = true;\n if (parts.includes(key)) {\n parts_options[key] = value;\n }\n }\n options = {\n ...this.configuration.default_url_options,\n ...default_options,\n ...options,\n };\n const keyword_parameters = {};\n let query_parameters = {};\n for (const key in options) {\n if (!hasProp(options, key))\n continue;\n const value = options[key];\n if (key === \"params\") {\n if (this.is_object(value)) {\n query_parameters = {\n ...query_parameters,\n ...value,\n };\n }\n else {\n throw new Error(\"params value should always be an object\");\n }\n }\n else if (this.is_reserved_option(key)) {\n keyword_parameters[key] = value;\n }\n else {\n if (!this.is_nullable(value) &&\n (value !== default_options[key] || required_params.includes(key))) {\n query_parameters[key] = value;\n }\n }\n }\n const route_parts = use_all_parts ? parts : required_params;\n let i = 0;\n for (const part of route_parts) {\n if (i < args.length) {\n const value = args[i];\n if (!hasProp(parts_options, part)) {\n query_parameters[part] = value;\n ++i;\n }\n }\n }\n return { keyword_parameters, query_parameters };\n }\n build_route(parts, required_params, default_options, route, absolute, args) {\n const { keyword_parameters, query_parameters, } = this.partition_parameters(parts, required_params, default_options, args);\n const missing_params = required_params.filter((param) => !hasProp(query_parameters, param) ||\n this.is_nullable(query_parameters[param]));\n if (missing_params.length) {\n throw new ParametersMissing(...missing_params);\n }\n let result = this.get_prefix() + this.visit(route, query_parameters);\n if (keyword_parameters.trailing_slash) {\n result = result.replace(/(.*?)[/]?$/, \"$1/\");\n }\n const url_params = this.serialize(query_parameters);\n if (url_params.length) {\n result += \"?\" + url_params;\n }\n result += keyword_parameters.anchor\n ? \"#\" + keyword_parameters.anchor\n : \"\";\n if (absolute) {\n result = this.route_url(keyword_parameters) + result;\n }\n return result;\n }\n visit(route, parameters, optional = false) {\n switch (route[0]) {\n case NodeTypes.GROUP:\n return this.visit(route[1], parameters, true);\n case NodeTypes.CAT:\n return this.visit_cat(route, parameters, optional);\n case NodeTypes.SYMBOL:\n return this.visit_symbol(route, parameters, optional);\n case NodeTypes.STAR:\n return this.visit_globbing(route[1], parameters, true);\n case NodeTypes.LITERAL:\n case NodeTypes.SLASH:\n case NodeTypes.DOT:\n return route[1];\n default:\n throw new Error(\"Unknown Rails node type\");\n }\n }\n is_not_nullable(object) {\n return !this.is_nullable(object);\n }\n is_nullable(object) {\n return object === undefined || object === null;\n }\n visit_cat(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [_type, left, right], parameters, optional) {\n const left_part = this.visit(left, parameters, optional);\n let right_part = this.visit(right, parameters, optional);\n if (optional &&\n ((this.is_optional_node(left[0]) && !left_part) ||\n (this.is_optional_node(right[0]) && !right_part))) {\n return \"\";\n }\n // if left_part ends on '/' and right_part starts on '/'\n if (left_part[left_part.length - 1] === \"/\" && right_part[0] === \"/\") {\n // strip slash from right_part\n // to prevent double slash\n right_part = right_part.substring(1);\n }\n return left_part + right_part;\n }\n visit_symbol(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [_type, key], parameters, optional) {\n const value = this.path_identifier(parameters[key]);\n delete parameters[key];\n if (value.length) {\n return this.encode_segment(value);\n }\n if (optional) {\n return \"\";\n }\n else {\n throw new ParametersMissing(key);\n }\n }\n encode_segment(segment) {\n return segment.replace(UriEncoderSegmentRegex, (str) => encodeURIComponent(str));\n }\n is_optional_node(node) {\n return [NodeTypes.STAR, NodeTypes.SYMBOL, NodeTypes.CAT].includes(node);\n }\n build_path_spec(route, wildcard = false) {\n let key;\n switch (route[0]) {\n case NodeTypes.GROUP:\n return \"(\" + this.build_path_spec(route[1]) + \")\";\n case NodeTypes.CAT:\n return (this.build_path_spec(route[1]) + this.build_path_spec(route[2]));\n case NodeTypes.STAR:\n return this.build_path_spec(route[1], true);\n case NodeTypes.SYMBOL:\n key = route[1];\n if (wildcard) {\n return (key.startsWith(\"*\") ? \"\" : \"*\") + key;\n }\n else {\n return \":\" + key;\n }\n break;\n case NodeTypes.SLASH:\n case NodeTypes.DOT:\n case NodeTypes.LITERAL:\n return route[1];\n default:\n throw new Error(\"Unknown Rails node type\");\n }\n }\n visit_globbing(route, parameters, optional) {\n const key = route[1];\n let value = parameters[key];\n delete parameters[key];\n if (this.is_nullable(value)) {\n return this.visit(route, parameters, optional);\n }\n if (this.is_array(value)) {\n value = value.join(\"/\");\n }\n const result = this.path_identifier(value);\n return false\n ? result\n : encodeURI(result);\n }\n get_prefix() {\n const prefix = this.configuration.prefix;\n return prefix.match(\"/$\")\n ? prefix.substring(0, prefix.length - 1)\n : prefix;\n }\n route(parts_table, route_spec, absolute = false) {\n const required_params = [];\n const parts = [];\n const default_options = {};\n for (const [part, { r: required, d: value }] of Object.entries(parts_table)) {\n parts.push(part);\n if (required) {\n required_params.push(part);\n }\n if (this.is_not_nullable(value)) {\n default_options[part] = value;\n }\n }\n const result = (...args) => {\n return this.build_route(parts, required_params, default_options, route_spec, absolute, args);\n };\n result.requiredParams = () => required_params;\n result.toString = () => {\n return this.build_path_spec(route_spec);\n };\n return result;\n }\n route_url(route_defaults) {\n const hostname = route_defaults.host || this.current_host();\n if (!hostname) {\n return \"\";\n }\n const subdomain = route_defaults.subdomain\n ? route_defaults.subdomain + \".\"\n : \"\";\n const protocol = route_defaults.protocol || this.current_protocol();\n let port = route_defaults.port ||\n (!route_defaults.host ? this.current_port() : undefined);\n port = port ? \":\" + port : \"\";\n return protocol + \"://\" + subdomain + hostname + port;\n }\n current_host() {\n var _a;\n return (isBrowser && ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname)) || \"\";\n }\n current_protocol() {\n var _a, _b;\n return ((isBrowser && ((_b = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.protocol) === null || _b === void 0 ? void 0 : _b.replace(/:$/, \"\"))) || \"http\");\n }\n current_port() {\n var _a;\n return (isBrowser && ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.port)) || \"\";\n }\n is_object(value) {\n return (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Object]\");\n }\n is_array(object) {\n return object instanceof Array;\n }\n is_callable(object) {\n return typeof object === \"function\" && !!object.call;\n }\n is_reserved_option(key) {\n return ReservedOptions.includes(key);\n }\n configure(new_config) {\n this.configuration = { ...this.configuration, ...new_config };\n return this.configuration;\n }\n config() {\n return { ...this.configuration };\n }\n is_module_supported(name) {\n return ModuleReferences[name].isSupported();\n }\n ensure_module_supported(name) {\n if (!this.is_module_supported(name)) {\n throw new Error(`${name} is not supported by runtime`);\n }\n }\n define_module(name, module) {\n this.ensure_module_supported(name);\n ModuleReferences[name].define(module);\n }\n }\n const Utils = new UtilsClass();\n // We want this helper name to be short\n const __jsr = {\n r(parts_table, route_spec, absolute) {\n return Utils.route(parts_table, route_spec, absolute);\n },\n };\n const result = {\n ...__jsr,\n configure: (config) => {\n return Utils.configure(config);\n },\n config: () => {\n return Utils.config();\n },\n serialize: (object) => {\n return Utils.serialize(object);\n },\n ...{},\n };\n Utils.define_module(\"ESM\", result);\n return result;\n})();\nexport const configure = __jsr.configure;\n\nexport const config = __jsr.config;\n\nexport const serialize = __jsr.serialize;\n\n/**\n * Generates rails route to\n * /account(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const accountURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"account\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /account(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const accountPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"account\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_google_maps(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addByGoogleMapsTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_google_maps\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_google_maps(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addByGoogleMapsTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_google_maps\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_search(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addBySearchTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_search(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addBySearchTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_smart_search(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addBySmartSearchTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_smart_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_smart_search(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addBySmartSearchTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_smart_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_url(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addByURLTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_url\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/add_by_url(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const addByURLTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"add_by_url\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /ai_search(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const aiSearchURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"ai_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /ai_search(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const aiSearchPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"ai_search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /api/search/ai_listings(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiSearchAiListingsURL = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"ai_listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/search/ai_listings(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiSearchAiListingsPath = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"ai_listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/search/listings(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiSearchListingsURL = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/search/listings(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiSearchListingsPath = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripInviteURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripInvitePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripInvitesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripInvitesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/search/listings(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripSearchListingsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/search/listings(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripSearchListingsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"search\"],[2,[7,\"/\"],[2,[6,\"listings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/travelers/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripTravelerURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/travelers/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const apiTripTravelerPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /auth/reauthenticate(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const authReauthenticateURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"auth\"],[2,[7,\"/\"],[2,[6,\"reauthenticate\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]], true);\n\n/**\n * Generates rails route to\n * /auth/reauthenticate(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const authReauthenticatePath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"auth\"],[2,[7,\"/\"],[2,[6,\"reauthenticate\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:id/close(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const closeTripPollURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"close\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:id/close(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const closeTripPollPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"close\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/invites/:id/decline(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const declineTripInviteURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"decline\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/invites/:id/decline(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const declineTripInvitePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"decline\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenDateOptionURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenDateOptionPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenStayURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/destroy_confirmation(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const destroyConfirmationTripChosenStayPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"destroy_confirmation\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:id/edit(.:format)\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripURL = __jsr.r({\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:id/edit(.:format)\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripPath = __jsr.r({\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityGroupURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripActivityGroupPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary/edit(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripItineraryURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary/edit(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripItineraryPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripItineraryDateURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripItineraryDatePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayBookingURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayBookingPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/:id/edit(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const editTripStayEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"edit\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /favorites(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const favoritesURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"favorites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /favorites(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const favoritesPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"favorites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /api/url_shortener/fetch_short_link(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const fetchShortLinkApiURLShortenerURL = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"url_shortener\"],[2,[7,\"/\"],[2,[6,\"fetch_short_link\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/url_shortener/fetch_short_link(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const fetchShortLinkApiURLShortenerPath = __jsr.r({\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"url_shortener\"],[2,[7,\"/\"],[2,[6,\"fetch_short_link\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /graphql(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const graphqlURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"graphql\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /graphql(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const graphqlPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"graphql\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /trips/new(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/new(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripActivityEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripActivityEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/batch_stays/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripBatchStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"batch_stays\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/batch_stays/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripBatchStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"batch_stays\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripBroadcastURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripBroadcastPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenDateOptionURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenDateOptionPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenStayURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripChosenStayPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/date_options/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripDateOptionURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"date_options\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/date_options/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripDateOptionPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"date_options\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripItineraryURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripItineraryPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripPollURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripPollPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/new(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripStayBookingURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/new(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripStayBookingPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripStayEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripStayEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/voting/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripVotingURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"voting\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/voting/new(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newTripVotingPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"voting\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /users/new(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newUserURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"users\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]], true);\n\n/**\n * Generates rails route to\n * /users/new(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const newUserPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"users\"],[2,[7,\"/\"],[2,[6,\"new\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites/:id/resend(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const resendApiTripInviteURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"resend\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /api/trips/:trip_id/invites/:id/resend(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const resendApiTripInvitePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{\"d\":\"json\"}}, [2,[7,\"/\"],[2,[6,\"api\"],[2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"resend\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /search(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const searchURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /search(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const searchPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"search\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripDatesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripDatesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripDestinationsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripDestinationsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/set_suggesting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setSuggestingPhaseTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"set_suggesting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripDatesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripDatesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripDestinationsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripDestinationsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/set_voting_phase(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const setVotingPhaseTripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[6,\"set_voting_phase\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:id(.:format)\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripURL = __jsr.r({\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:id(.:format)\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPath = __jsr.r({\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivitiesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivitiesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityEventsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_events(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityEventsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_events\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityGroupURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityGroupPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityGroupsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityGroupsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:activity_id/votes(.:format)\n * @param {any} tripId\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityVotesURL = __jsr.r({\"trip_id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[2,[7,\"/\"],[2,[6,\"votes\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:activity_id/votes(.:format)\n * @param {any} tripId\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripActivityVotesPath = __jsr.r({\"trip_id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[2,[7,\"/\"],[2,[6,\"votes\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/add_activities(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripAddActivitiesURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"add_activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/add_activities(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripAddActivitiesPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"add_activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/add_activities(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripAddActivitiesUpdateURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"add_activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/add_activities(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripAddActivitiesUpdatePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"add_activities\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/batch_stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBatchStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"batch_stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/batch_stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBatchStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"batch_stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBroadcastURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBroadcastPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBroadcastsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/broadcasts(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripBroadcastsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"broadcasts\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDateOptionURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDateOptionPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDateOptionNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_date_option/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDateOptionNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_date_option\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDestinationNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_destination/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenDestinationNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_destination\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenStayURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenStayPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenStayNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/chosen_stay/note(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripChosenStayNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"chosen_stay\"],[2,[7,\"/\"],[2,[6,\"note\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/:date_option_id(.:format)\n * @param {any} tripId\n * @param {any} dateOptionId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDateURL = __jsr.r({\"trip_id\":{\"r\":true},\"date_option_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[3,\"date_option_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates/:date_option_id(.:format)\n * @param {any} tripId\n * @param {any} dateOptionId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDatePath = __jsr.r({\"trip_id\":{\"r\":true},\"date_option_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[2,[7,\"/\"],[2,[3,\"date_option_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/date_options(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDateOptionsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"date_options\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/date_options(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDateOptionsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"date_options\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDatesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/dates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDatesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"dates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDeleteActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDeleteActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/comments/:id(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationCommentURL = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/comments/:id(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationCommentPath = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/comments(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationCommentsURL = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/comments(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationCommentsPath = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/rankings(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationRankingsURL = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"rankings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations/:destination_id/rankings(.:format)\n * @param {any} tripId\n * @param {any} destinationId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationRankingsPath = __jsr.r({\"trip_id\":{\"r\":true},\"destination_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[2,[7,\"/\"],[2,[3,\"destination_id\"],[2,[7,\"/\"],[2,[6,\"rankings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/destinations(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripDestinationsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"destinations\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:activity_id(.:format)\n * @param {any} tripId\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripGetActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:activity_id(.:format)\n * @param {any} tripId\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripGetActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/invites(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripInvitesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/invites(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripInvitesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"invites\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryDateURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryDatePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryDatesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_dates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryDatesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_dates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/itinerary_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripItineraryEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"itinerary_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripNoteURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripNotePath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripNotesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/notes(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripNotesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"notes\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:poll_id/comments(.:format)\n * @param {any} tripId\n * @param {any} pollId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollCommentsURL = __jsr.r({\"trip_id\":{\"r\":true},\"poll_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"poll_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:poll_id/comments(.:format)\n * @param {any} tripId\n * @param {any} pollId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollCommentsPath = __jsr.r({\"trip_id\":{\"r\":true},\"poll_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"poll_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:poll_id/responses(.:format)\n * @param {any} tripId\n * @param {any} pollId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollResponsesURL = __jsr.r({\"trip_id\":{\"r\":true},\"poll_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"poll_id\"],[2,[7,\"/\"],[2,[6,\"responses\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls/:poll_id/responses(.:format)\n * @param {any} tripId\n * @param {any} pollId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollResponsesPath = __jsr.r({\"trip_id\":{\"r\":true},\"poll_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[2,[7,\"/\"],[2,[3,\"poll_id\"],[2,[7,\"/\"],[2,[6,\"responses\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/polls(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripPollsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"polls\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/remove_activity/:activity_id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripRemoveActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"remove_activity\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activity_groups/:id/remove_activity/:activity_id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {any} activityId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripRemoveActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"activity_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activity_groups\"],[2,[7,\"/\"],[2,[3,\"id\"],[2,[7,\"/\"],[2,[6,\"remove_activity\"],[2,[7,\"/\"],[2,[3,\"activity_id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/:id(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayBookingURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings/:id(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayBookingPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayBookingsURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/bookings(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayBookingsPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"bookings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/comments/:id(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayCommentURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/comments/:id(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayCommentPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/comments(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayCommentsURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/comments(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayCommentsPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"comments\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayEventURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayEventPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayEventsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stay_events(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayEventsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stay_events\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/rankings(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayRankingsURL = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"rankings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays/:stay_id/rankings(.:format)\n * @param {any} tripId\n * @param {any} stayId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStayRankingsPath = __jsr.r({\"trip_id\":{\"r\":true},\"stay_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[2,[7,\"/\"],[2,[3,\"stay_id\"],[2,[7,\"/\"],[2,[6,\"rankings\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStaysURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/stays(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripStaysPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"stays\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/travelers/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripTravelerURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/travelers/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripTravelerPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/travelers(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripTravelersURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/travelers(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripTravelersPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"travelers\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdateActivityURL = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/activities/:id(.:format)\n * @param {any} tripId\n * @param {any} id\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdateActivityPath = __jsr.r({\"trip_id\":{\"r\":true},\"id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"activities\"],[2,[7,\"/\"],[2,[3,\"id\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/updates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdatesURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"updates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/updates(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdatesPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"updates\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/updates_view_logs(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdatesViewLogsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"updates_view_logs\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/updates_view_logs(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUpdatesViewLogsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"updates_view_logs\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/user_broadcast_view_logs(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUserBroadcastViewLogsURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"user_broadcast_view_logs\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/user_broadcast_view_logs(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripUserBroadcastViewLogsPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"user_broadcast_view_logs\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/voting(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripVotingURL = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"voting\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]], true);\n\n/**\n * Generates rails route to\n * /trips/:trip_id/voting(.:format)\n * @param {any} tripId\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripVotingPath = __jsr.r({\"trip_id\":{\"r\":true},\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[2,[7,\"/\"],[2,[3,\"trip_id\"],[2,[7,\"/\"],[2,[6,\"voting\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]]]]]);\n\n/**\n * Generates rails route to\n * /trips(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripsURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /trips(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const tripsPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"trips\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n/**\n * Generates rails route to\n * /users(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const usersURL = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"users\"],[1,[2,[8,\".\"],[3,\"format\"]]]]], true);\n\n/**\n * Generates rails route to\n * /users(.:format)\n * @param {object | undefined} options\n * @returns {string} route path\n */\nexport const usersPath = __jsr.r({\"format\":{}}, [2,[7,\"/\"],[2,[6,\"users\"],[1,[2,[8,\".\"],[3,\"format\"]]]]]);\n\n","import { TravelerProps } from \"../components/shared/TravelersVotingBox\";\nimport { StayType } from \"../components/shared/TripObjectTypes\"\n\ntype TripObjectRanking = 'stayRankings' | 'destinationRankings';\n\nexport type TripObjectRankingProps = {\n travelers: TravelerProps[],\n rankingType: TripObjectRanking,\n objectId: string,\n};\n\nexport const RANKING_SIZE = 3;\n\nexport const getTravelersRankingsForTripObject = ({\n travelers, rankingType, objectId,\n}: TripObjectRankingProps) => (\n travelers\n .map((traveler) => ({ ranking: traveler[rankingType].indexOf(objectId), ...traveler }))\n .filter((traveler) => traveler[rankingType].indexOf(objectId) !== -1)\n .sort(({ ranking: a }, { ranking: b }) => a - b)\n);\n\nexport const getSortedStaysFirstByFinalizedThenByRankings = (stays : StayType[]) => {\n return stays?.slice(0)\n .sort((accA, accB) => {\n if (accA.ranking === undefined) return 1;\n if (accB.ranking === undefined) return -1;\n if (accA.ranking < accB.ranking) return -1;\n if (accA.ranking > accB.ranking) return 1;\n\n return 0;\n })\n .sort((accA, accB) => {\n if (accA.isChosen) return -1;\n if (accB.isChosen) return 1;\n\n return 0;\n })\n .sort((accA, accB) => {\n if ((accA.stayBookings?.length || 0) > 0) return -1;\n if ((accB.stayBookings?.length || 0) > 0) return 1;\n\n return 0;\n });\n};\n","import React from 'react';\nimport { useTrackSERPEvent } from \"./useSERPEvents\";\n\nconst useSERPMapClickEventRef = (button) => {\n const { trackSERPLinkEvent } = useTrackSERPEvent();\n\n const buttonRef = React.useCallback((element, destination) => {\n if (element !== null) {\n trackSERPLinkEvent(\n element,\n 'SERP Map Clicked',\n {\n button,\n destination,\n },\n );\n }\n }, []);\n\n return buttonRef;\n};\n\nexport default useSERPMapClickEventRef;\n","import * as React from 'react';\nimport SideBarPage from \"../components/shared/SideBarPage\";\nimport { Grid, Hidden, useMediaQuery, Box } from \"@mui/material\";\nimport FloatingButton from \"../components/buttons/FloatingButton\";\nimport MapIcon from \"@mui/icons-material/Map\";\nimport ListingsMapView from \"../components/pages/stays_search/Listings/ListingsMapView\";\nimport useSERPMapClickEventRef from \"./segmentEvents/useSERPMapClickEventRef\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { ExternalListingProps } from \"../components/shared/TripObjectTypes\";\nimport { Theme } from \"@mui/material/styles\";\nimport { isCurrentlyInPublicSearch } from './windowLocation';\nimport SearchFeedbackBox from \"../components/pages/stays_search/SearchFeedbackBox\";\nimport { ModelOutputs } from \"../components/pages/stays_search/Listings/ListingsBox\";\nimport {aiSearchType, CurrentAppliedFilters} from \"../components/pages/stays_search/Listings/Filters\";\n\ntype RenderWithOrWithoutSidebarPropTypes = {\n radius: number,\n component: React.ReactNode,\n listings: ExternalListingProps[],\n locationName: string | null,\n onClick: () => void,\n showWithSidebar: boolean,\n hasSearched: boolean,\n aiSearchType: aiSearchType,\n modelOutputs: ModelOutputs,\n currentAppliedFilters?: CurrentAppliedFilters,\n}\n\ntype HoveredListing = {\n id: string,\n latitude: number,\n longitude: number,\n};\n\nexport const ListingsMapContext = React.createContext({\n hoveredListing: null,\n setHoveredListing: (listing: HoveredListing | null) => {},\n});\n\nconst useStyles = makeStyles<Theme, { inPublicSearch: boolean, hasSearched: boolean }>((theme): {} => ({\n buttonText: {\n marginLeft: theme.spacing(1),\n },\n sidebarMapWrapper: {\n width: '100%',\n height: ({ inPublicSearch }) => inPublicSearch ? '66vh' : '85vh',\n left: 0,\n position: 'sticky',\n top: ({ inPublicSearch }) => inPublicSearch ? '140px' : '48px',\n marginTop: ({ inPublicSearch }) => inPublicSearch && '116px',\n paddingTop: ({ inPublicSearch }) => !inPublicSearch && '99px',\n },\n wrapper: {\n marginTop: ({ inPublicSearch }) => inPublicSearch && '110px',\n [theme.breakpoints.down(1078)]: {\n marginTop: ({ inPublicSearch, hasSearched }) => inPublicSearch && hasSearched ? '200px' : '100px',\n },\n [theme.breakpoints.down(701)]: {\n marginTop: ({ inPublicSearch }) => inPublicSearch && '174px',\n },\n [theme.breakpoints.down(451)]: {\n marginTop: ({ inPublicSearch, hasSearched }) => inPublicSearch && hasSearched ? '200px' : '16px',\n },\n },\n}));\n\nconst useAiSearchStyles = makeStyles<Theme, { aiSearchType: aiSearchType }>((theme): {} => ({\n buttonText: {\n marginLeft: theme.spacing(1),\n },\n sidebarMapWrapper: {\n width: '100%',\n height: '85vh',\n left: 0,\n position: 'sticky',\n top: '48px',\n paddingTop: '99px',\n },\n wrapper: {\n marginTop: ({ aiSearchType }) => (aiSearchType === 'aiPublicSearch') && '20px',\n [theme.breakpoints.down(1078)]: {\n marginTop: ({ aiSearchType }) => (aiSearchType === 'aiTripSearch') && '20px',\n },\n [theme.breakpoints.down(451)]: {\n marginTop: ({ aiSearchType }) => (aiSearchType === 'aiTripSearch') && '16px',\n },\n },\n background: {\n background: '#FFF',\n zIndex: -1,\n position: 'absolute',\n left: 0,\n width: '100%',\n height: '-webkit-fill-available',\n },\n}));\n\nconst RenderWithOrWithoutSidebar = ({\n radius,\n component,\n listings,\n locationName,\n onClick,\n showWithSidebar,\n hasSearched = false,\n aiSearchType,\n modelOutputs,\n currentAppliedFilters,\n}: RenderWithOrWithoutSidebarPropTypes) => {\n const inPublicSearch = isCurrentlyInPublicSearch();\n const showSidebarMap = useMediaQuery(useTheme().breakpoints.up('md'));\n const floatingMapButtonRef = useSERPMapClickEventRef('floating map');\n\n const [hoveredListing, setHoveredListing] = React.useState<HoveredListing | null>(null);\n\n const classes = aiSearchType ? useAiSearchStyles({ aiSearchType }) : useStyles({ inPublicSearch, hasSearched });\n\n return (\n <ListingsMapContext.Provider value={{ hoveredListing, setHoveredListing }}>\n <Box className={classes.wrapper}>\n <div className={classes.background} />\n {(showWithSidebar && <SideBarPage\n hideSideBarBorder\n mainContent={\n <>\n {component}\n <Hidden mdUp>\n <FloatingButton\n onClick={onClick}\n ref={element => floatingMapButtonRef(element, locationName)}\n >\n <MapIcon/>\n <span className={classes.buttonText}>Map</span>\n </FloatingButton>\n </Hidden>\n </>\n }\n sideBarContent={showSidebarMap && <>\n {modelOutputs?.requestId &&\n <SearchFeedbackBox\n modelRequestId={modelOutputs?.requestId}\n aiSearchType={aiSearchType}\n filters={currentAppliedFilters}\n resultCount={listings.length}\n />}\n <Grid className={classes.sidebarMapWrapper}>\n <ListingsMapView\n radius={radius}\n listView\n listings={listings}\n onExpandMapClick={onClick}\n sidebar\n aiSearchType={aiSearchType}\n />\n </Grid>\n </>}\n />)}\n {!showWithSidebar && component}\n </Box>\n </ListingsMapContext.Provider>\n )\n};\n\nexport default RenderWithOrWithoutSidebar;\n","type TroupeAppType = {\n Notification: NotificationType | undefined,\n User: UserType | undefined,\n};\n\ntype UserType = {\n // eslint-disable-next-line no-unused-vars\n identify: (id: string, oneSignalAuthHash: string) => {}\n}\ntype NotificationType = {\n permission: 'notDetermined' | 'denied' | 'authorized',\n requestPermission: () => {},\n};\n\nexport default {\n Notification: window['TroupeApp' as keyof Window]?.Notification,\n User: window['TroupeApp' as keyof Window]?.User,\n} as TroupeAppType;\n","export const track = (event: string, props: object): void => {\n window.analytics.track(event, props);\n};\n\nexport const trackLink = (element: HTMLElement, event: string, props: object): void => {\n window.analytics.trackLink(element, event, props);\n};\n\nexport const group = (id: string, traits: object): void => {\n window.analytics.group(id, traits);\n};\n\nconst analytics = {\n track,\n trackLink,\n group,\n};\n\nexport default analytics;\n","import { snakeCase } from \"lodash\";\n\nexport const createFormDataForFiltering = (filters: object, formData = new FormData()): FormData => {\n Object.keys(filters).forEach((key) => {\n const value = filters[key]\n if (value) {\n if(key === 'amenities') {\n formData.append(snakeCase(key), value.join());\n } else if (key === 'propertyTypes') {\n formData.append(snakeCase(key), value.filter((type) => type.checked).map((type) => type.name).join());\n } else if (key === 'instantBook' || key === 'freeCancellation') {\n formData.append(snakeCase(key), value ? 'TRUE' : '');\n } else {\n formData.append(snakeCase(key), value);\n }\n }\n });\n\n return formData\n};\n\n","import { RANKING_SIZE } from \"./RankingSystem\";\nimport { usePhasingContext } from \"./phasing\";\n\nexport const shouldDisplayRankingLabel = (ranking: number | undefined) => {\n const { areDestinationsInVotingPhase } = usePhasingContext();\n\n return !!(ranking && ranking <= RANKING_SIZE && areDestinationsInVotingPhase())\n};\n","const favoritesStorage = () => {\n const getFavoriteId = () => {\n return localStorage.getItem('favorite_id');\n };\n\n const setFavoriteId = (favoriteId) => {\n return localStorage.setItem('favorite_id', favoriteId);\n }\n\n return {\n getFavoriteId,\n setFavoriteId,\n }\n};\n\nexport default favoritesStorage;\n","type DateOptionSentimentForDecidingPopularity = 'yes' | 'maybe';\n\ntype DateOptionForDecidingPopularity = {\n travelersVotes: {\n yes: object[],\n maybe: object[],\n },\n id: any,\n};\n\nconst getMaximumVotesByKind = (\n collection: DateOptionForDecidingPopularity[],\n kind: DateOptionSentimentForDecidingPopularity,\n) => {\n return Math.max.apply(\n Math,\n collection.map(option => option.travelersVotes[kind].length),\n );\n};\n\nconst getMostVotedWithKind = (\n collection: DateOptionForDecidingPopularity[],\n kind: DateOptionSentimentForDecidingPopularity,\n) => {\n let maximum = getMaximumVotesByKind(collection, kind);\n\n if (maximum === 0) return [];\n\n return collection.filter(option => {\n return option.travelersVotes[kind].length === maximum;\n });\n};\n\nconst getMostPopularDateOptions = (dateOptions: DateOptionForDecidingPopularity[]) => {\n let mostPopular = getMostVotedWithKind(dateOptions, 'yes');\n\n if (mostPopular.length > 1) {\n return getMostVotedWithKind(mostPopular, 'maybe');\n } else {\n return mostPopular;\n }\n};\n\nexport default getMostPopularDateOptions;\n","export const updatePosition = (lat, lng, map) => {\n map.panTo({lat: lat, lng: lng});\n map.panBy(0, -200);\n};\n","// copied from https://www.davedrinks.coffee/how-do-i-use-two-react-refs/\n\nimport { ForwardedRef } from \"react\";\n\nconst mergeRefs = (...refs: ForwardedRef<any>[]) => {\n const filteredRefs = refs.filter(Boolean);\n if (!filteredRefs.length) return null;\n if (filteredRefs.length === 0) return filteredRefs[0];\n return (inst: unknown) => {\n for (const ref of filteredRefs) {\n if (typeof ref === 'function') {\n ref(inst);\n } else if (ref) {\n ref.current = inst;\n }\n }\n };\n};\n\nexport default mergeRefs;\n","import axios, { AxiosError, AxiosResponse, Method } from 'axios';\n\ntype performAsyncRequestWithCancelTokenTypes = {\n method: Method,\n url: string,\n data: object,\n onSuccess: (response: AxiosResponse<any, any>) => void,\n onError: (response: AxiosError<any, any>) => void,\n};\n\nconst performAsyncRequestWithCancelToken = ({\n method,\n url,\n data,\n onSuccess,\n onError,\n}: performAsyncRequestWithCancelTokenTypes) => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n setTimeout(() => {\n source.cancel();\n }, 8000);\n axios.request({\n method: method,\n cancelToken: source.token,\n url: url,\n data: data,\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n onSuccess(response);\n }).catch((response) => {\n onError(response);\n });\n};\n\nexport default performAsyncRequestWithCancelToken;\n","import React, { useContext } from 'react';\nimport { TripSiteContext, TripObjectState } from '../components/Document';\n\nexport const usePhasingContext = () => {\n const { datesState, destinationsState, staysState } = useContext(TripSiteContext);\n\n const areDatesInSuggestingPhase = () => {\n return datesState === TripObjectState.Suggesting;\n };\n\n const areDatesInVotingPhase = () => {\n return datesState === TripObjectState.Voting;\n };\n\n const areDatesFinalized = () => {\n return datesState === TripObjectState.Finalized;\n };\n\n const areDestinationsInSuggestingPhase = () => {\n return destinationsState === TripObjectState.Suggesting;\n };\n\n const areDestinationsInVotingPhase = () => {\n return destinationsState === TripObjectState.Voting;\n };\n\n const areDestinationsFinalized = () => {\n return destinationsState === TripObjectState.Finalized;\n };\n\n const areStaysInSuggestingPhase = () => {\n return staysState === TripObjectState.Suggesting;\n };\n\n const areStaysInVotingPhase = () => {\n return staysState === TripObjectState.Voting;\n };\n\n const areStaysFinalized = () => {\n return staysState === TripObjectState.Finalized;\n };\n\n return {\n areDatesInSuggestingPhase,\n areDatesInVotingPhase,\n areDatesFinalized,\n areDestinationsInSuggestingPhase,\n areDestinationsInVotingPhase,\n areDestinationsFinalized,\n areStaysInSuggestingPhase,\n areStaysInVotingPhase,\n areStaysFinalized,\n datesState,\n destinationsState,\n staysState,\n };\n};\n\n","import useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useTheme } from \"@mui/styles\";\n\nconst responsiveText = (mobileText, desktopText) => {\n return useMediaQuery(useTheme().breakpoints.down(470)) ? mobileText : desktopText;\n};\n\nexport default responsiveText;\n","import useSegment from '../useSegment';\n\nexport const useClickedFavoritesEvent = () => {\n const { trackSegment } = useSegment();\n const isFavoritesPage = window.location.pathname === '/favorites';\n const isSearchResultPage = window.location.href.includes('/search?');\n\n return(() =>\n trackSegment(\n 'Favorites Clicked',\n {\n page: isFavoritesPage ? 'favorites' : isSearchResultPage ? 'listing results' : 'search',\n },\n )\n )\n};\n\nexport const useListingFavoriteEvent = (listingURL) => {\n const { trackSegment } = useSegment();\n\n return(() =>\n trackSegment(\n 'Listing Favorited',\n {\n listingURL: listingURL,\n },\n )\n )\n};\n\nexport const useListingFavoriteRemovedEvent = (stayURL) => {\n const { trackSegment } = useSegment();\n const isFavoritesPage = window.location.pathname === '/favorites';\n\n return(() =>\n trackSegment(\n 'Listing Favorite Removed',\n {\n listingURL: stayURL,\n page: isFavoritesPage ? 'favorites' : 'listing results',\n },\n )\n )\n};\n\nexport const useShareFavoritesInitiatedEvent = (favoritesCount) => {\n const { trackSegment } = useSegment();\n const isSharedFavorites = window.location.href.includes('/favorites/');\n\n return(() =>\n trackSegment(\n 'Share Favorites Initiated',\n {\n page: isSharedFavorites ? 'shared favorites' : 'favorites',\n listingCount: favoritesCount,\n },\n )\n )\n};\n\nexport const useFavoriteShareLinkCopiedEvent = (favoritesCount) => {\n const { trackSegment } = useSegment();\n const isSharedFavorites = window.location.href.includes('/favorites/');\n\n return(() =>\n trackSegment(\n 'Favorite Share Link Copied',\n {\n page: isSharedFavorites ? 'shared favorites' : 'favorites',\n listingCount: favoritesCount,\n },\n )\n )\n};\n\nexport const useFavoriteShareSheetEvent = (favoritesCount) => {\n const { trackSegment } = useSegment();\n const isSharedFavorites = window.location.href.includes('/favorites/');\n\n return(() =>\n trackSegment(\n 'Favorite Share Sheet Menu Activated',\n {\n page: isSharedFavorites ? 'shared favorites' : 'favorites',\n listingCount: favoritesCount,\n },\n )\n )\n};\n","export const getStaysSearchFilteredEventProps = (filters, method) => {\n const keyValuePairIfHasValue = (key : string, value) => (value ? { [key]: value } : {} );\n const propertyTypes = filters?.propertyTypes.reduce((t, e) => {\n return e.checked ? {...t, [e.label]: e.checked} : t;\n }, {});\n const propertyTypeCount = Object.values(propertyTypes).filter(Boolean).length;\n const isPriceFilterApplied = !!filters?.minPrice || !!filters?.maxPrice;\n const amenitiesSegmentProperties = filters?.amenities?.reduce((total, elem) => ({...total, [elem]: true}), {});\n\n return ({\n ...propertyTypes,\n ...keyValuePairIfHasValue('propertyTypeCount', propertyTypeCount),\n ...keyValuePairIfHasValue('bathroomCount', filters?.bathroomCount),\n ...keyValuePairIfHasValue('bedroomCount', filters?.bedroomCount),\n ...keyValuePairIfHasValue('rating', filters?.rating),\n ...keyValuePairIfHasValue('addPrice', isPriceFilterApplied),\n ...keyValuePairIfHasValue('minPrice', filters?.minPrice),\n ...keyValuePairIfHasValue('maxPrice', filters?.maxPrice),\n ...amenitiesSegmentProperties,\n ...keyValuePairIfHasValue('instantBook', filters?.instantBook),\n ...keyValuePairIfHasValue('freeCancellation', filters?.freeCancellation),\n ...keyValuePairIfHasValue('hotelRoomCount', filters?.hotelRoomCount),\n method: method,\n })\n};\n","import useSegment from '../useSegment';\nimport { useMediaQuery } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\n\nexport const useGuestDismissed = () => {\n const { trackSegment } = useSegment();\n\n return(() =>\n trackSegment(\n 'Add Guest Dismissed',\n {},\n )\n )\n};\n\nexport const useAddGuestInitiated = () => {\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const { trackSegment } = useSegment();\n\n return(() =>\n trackSegment('Add Guest Traveler Initiated',\n {\n isMobileApp,\n },\n )\n )\n};\n\nexport const useGuestTravelerToolTipClick = () => {\n const isMobileApp = useMediaQuery(useTheme().breakpoints.down('sm'));\n const { trackSegment } = useSegment();\n\n return(() =>\n trackSegment('Guest Traveler Tooltip Activated',\n {\n isMobileApp,\n },\n )\n )\n};\n","import useSegment from '../useSegment';\n\nexport const useEditTripInitiated = () => {\n const { trackSegment } = useSegment();\n\n return(() =>\n trackSegment(\n 'Edit Trip Initiated',\n {},\n )\n )\n};\n","import React from 'react';\nimport { SegmentContext } from \"../../components/Document\";\nimport { trackLink } from '../analytics';\n\nconst useExpandMapEventRef = (vertical: string, buttonName: string, searchLocation: string | null = null, aiSearchType: string | null = null) => {\n const { tripId, currentUserId, isPlanner } = React.useContext(SegmentContext);\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n trackLink(\n element,\n 'Map Expanded',\n {\n tripId,\n userId: currentUserId,\n planner: isPlanner,\n vertical,\n button: buttonName,\n searchLocation,\n location: aiSearchType,\n },\n );\n }\n }, []);\n\n return buttonRef;\n};\n\nexport default useExpandMapEventRef;\n","import useSegment from '../useSegment';\n\nexport const useTrackDeletionInitiated = () => {\n const { trackSegment } = useSegment();\n return (objectType : string, objectId : string, page : string) => {\n trackSegment('Itinerary Event Deletion Initiated',\n {\n objectId,\n objectType,\n page,\n },\n )\n }\n};\n\nexport const useTrackEventCardClicked = () => {\n const { trackSegment } = useSegment();\n return (objectType : string, objectId : string, page : string) => {\n trackSegment('Itinerary Event Card Clicked',\n {\n objectId,\n objectType,\n page,\n },\n )\n }\n};\n\nexport const useTrackItineraryEventEditInitiated = () => {\n const { trackSegment } = useSegment();\n return ( method: string, objectType : string, objectId : string, page : string) => {\n trackSegment(\n 'Itinerary Event Edit Initiated',\n {\n method,\n objectId,\n objectType,\n page,\n },\n );\n }\n};\n","import React from 'react';\nimport { SegmentContext } from \"../../components/Document\";\nimport { trackLink } from '../analytics';\n\nconst useMapClickEventRef = (vertical, objectId, aiSearchType: string | null = null) => {\n const { tripId, currentUserId, isPlanner } = React.useContext(SegmentContext);\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n trackLink(\n element,\n 'Map Object Clicked',\n {\n tripId,\n userId: currentUserId,\n planner: isPlanner,\n vertical,\n objectId,\n location: aiSearchType,\n },\n );\n }\n }, []);\n\n return buttonRef;\n};\n\nexport default useMapClickEventRef;\n","import useSegment from '../useSegment';\nimport { CustomFiltersAppliedType } from '../../components/pages/stays_search/StaysSearch';\nimport { inventoryBannerSegmentTextType } from '../../components/pages/stays_search/Listings/InventoryBanner';\nimport moment from \"moment\";\nimport { ModelOutputs } from \"../../components/pages/stays_search/Listings/ListingsBox\";\nimport { searchLocation } from \"../windowLocation\";\n\nexport const useTrackSERPEvent = () => {\n const { trackSegment, trackLinkSegment } = useSegment();\n\n const location = searchLocation()\n\n return {\n trackSERPEvent: (title: string, props: {}) => {\n trackSegment(title, { ...props, location })\n },\n trackSERPLinkEvent: (element: HTMLElement, title: string, props: {}) => {\n trackLinkSegment(element, title, { ...props, location })\n },\n };\n};\n\ntype SearchPerformedEvent = {\n arrival?: string,\n filtersApplied: CustomFiltersAppliedType,\n datesBanner: inventoryBannerSegmentTextType,\n departure?: string,\n destinationSearched: string,\n destinationLatLong: [number, number],\n guestsCount?: string,\n inventorySelected: string,\n resultCountPage: number,\n searchMethod?: string,\n totalResultCount: number,\n url: string,\n bedroomCount?: string,\n hotelRoomCount?: string,\n prompt?: string,\n modelOutputs?: ModelOutputs,\n};\n\nexport const useTrackSearchPerformed = () => {\n const { trackSERPEvent } = useTrackSERPEvent();\n\n return (data: SearchPerformedEvent) => {\n const { arrival, departure, ...otherData } = data;\n\n const hasDates = !!arrival && !!departure;\n const nightCount = hasDates ? moment(departure).diff(moment(arrival), 'days') : 0;\n\n trackSERPEvent('Stays Search Performed', {\n ...(hasDates && { datesSelected: `${arrival} - ${departure}` }),\n nightCount,\n ...otherData,\n });\n };\n};\n","import React from 'react';\nimport useSegment from '../../services/useSegment';\nimport { isCurrentlyNormalSearch, isCurrentlyInPublicSearch, isCurrentlySmartSearch } from '../windowLocation';\n\ntype StayAffiliateClickEventType = {\n listingUrl: string,\n targetClicked: 'card' | 'image',\n};\n\nexport const useStayAffiliateClickEventRef = ({\n listingUrl,\n targetClicked,\n}: StayAffiliateClickEventType) => {\n const { trackLinkSegment } = useSegment();\n const inPublicSearch = isCurrentlyInPublicSearch();\n\n const buttonRef = React.useCallback((element) => {\n if (element !== null) {\n const url = new URL(listingUrl);\n const values = url.href.includes('expedia') ? expediaValues({url}) : vrboValues({url})\n\n trackLinkSegment(\n element,\n 'Stay Affiliate Link Clicked',\n {\n location: isCurrentlySmartSearch() ? 'aiTripSearch' : inPublicSearch ? 'Public Search' : isCurrentlyNormalSearch? 'SERP' : 'aiPublicSearch',\n listingUrl,\n targetClicked,\n method: window.location.href.includes('viewMode=map') ? 'expanded map' : 'list view',\n ...values,\n },\n );\n }\n }, []);\n\n return buttonRef;\n};\n\nconst vrboValues = ({url}) => {\n const urlParams = url.searchParams;\n const hasDates = urlParams.has('arrival') && urlParams.has('departure');\n\n return {\n listingSource: 'VRBO',\n adultsCount: urlParams.get('adultsCount') || 1,\n dates: hasDates ? `${urlParams.get('arrival')} / ${urlParams.get('departure')}` : null,\n bedroomCount: urlParams.get('bedroomCount'),\n\n }\n}\n\nconst expediaValues = ({url}) => {\n const regexDates = /(\\d{4}-\\d{2}-\\d{2})\\/(\\d{4}-\\d{2}-\\d{2})/;\n const datesMatches = url.href.match(regexDates);\n const hasDates = datesMatches?.length === 3;\n\n const regexAdultsCount = /NumAdult-Room\\d+=(\\d+)/g;\n const adults = url.href.matchAll(regexAdultsCount);\n let adultsCount = 0;\n for(let match of adults) {\n adultsCount += Number(match[1])\n }\n\n return {\n listingSource: 'Expedia',\n adultsCount: adultsCount || 1,\n dates: hasDates ? `${datesMatches[1]} / ${datesMatches[2]}` : null,\n hotelRoomCount: url.searchParams.get('NumRooms'),\n }\n}\n","import React from 'react';\nimport { TripSiteContext } from '../../components/Document';\nimport useSegment from '../useSegment';\n\nexport const useTrackEditStayClick = (stayId : string) => {\n const { trackSegment } = useSegment();\n return () => {\n trackSegment('Stay Edit Opened',\n {\n category: 'Stays Pricing',\n property: 'buttonClicked',\n objectId: stayId,\n method: 'overflow',\n },\n )\n }\n};\n\nexport const useHandleMarkAsBookedClick = (method : string) => {\n const { trackSegment } = useSegment();\n const { staysState } = React.useContext(TripSiteContext);\n return () => {\n trackSegment('Mark as booked Initiated',\n {\n method,\n verticalStatus: staysState,\n },\n )\n }\n};\n","import React from 'react';\nimport { SegmentContext } from \"../../components/Document\";\nimport { TravelerProps } from '../../components/shared/TravelersVotingBox';\nimport useSegment from '../useSegment';\n\nexport const useTravelerClickEvent = () => {\n const { currentUserId } = React.useContext(SegmentContext);\n const { trackSegment } = useSegment();\n\n return( (traveler: TravelerProps) =>\n trackSegment(\n 'Traveler Avatar Clicked',\n {\n plusOneCount: traveler?.plusOnes.length || 0,\n creator: traveler?.userId === currentUserId,\n },\n )\n )\n};\n\nexport const useDismissDialogEvent = () => {\n const { currentUserId } = React.useContext(SegmentContext);\n const { trackSegment } = useSegment();\n\n return( (traveler: TravelerProps) =>\n trackSegment(\n 'Traveler Avatar Modal Dismissed',\n {\n plusOneCount: traveler?.plusOnes.length || 0,\n creator: traveler?.userId === currentUserId,\n },\n )\n )\n};\n","const serializeForm = (form: HTMLFormElement | undefined) => {\n let object: { [key: string]: any } = {};\n\n const formData = new FormData(form);\n\n for (let [key, value] of formData.entries()) {\n if (object[key]) {\n object[key] = [object[key]].flat().concat([value]);\n } else {\n object[key] = value;\n }\n }\n\n return object;\n};\n\nexport default serializeForm;\n","export const setScrollBarHorizontalPosition = (element: null | HTMLElement, widthOfElement: number, index: number): void => {\n if (!element) return\n\n const positionOfX = widthOfElement * index\n element.scrollTo(positionOfX, 0)\n};\n","const isSkipVoting = () => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get('skip_voting') === 'true';\n};\n\nexport default isSkipVoting;\n","import { useContext } from 'react';\nimport { SegmentContext } from '../components/Document';\nimport { trackLink, track } from '../services/analytics';\n\nconst useSegment = () => {\n const segmentProps = useContext(SegmentContext);\n\n return {\n trackSegment: (eventTitle: string, customProps: {}) => {\n track(eventTitle, Object.assign({}, segmentProps, customProps))\n },\n trackLinkSegment: (element: HTMLElement, eventTitle: string, customProps: {}) => {\n trackLink(element, eventTitle, Object.assign({}, segmentProps, customProps))\n },\n }\n};\n\nexport default useSegment;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nconst useStateWithPromise = (initialState: any) => {\n const [state, setState] = useState(initialState);\n const resolverRef = useRef(null);\n\n useEffect(() => {\n if (resolverRef.current) {\n resolverRef.current(state);\n resolverRef.current = null;\n }\n }, [resolverRef.current, state]);\n\n const handleSetState = useCallback((stateAction) => {\n setState(stateAction);\n return new Promise((resolve) => {\n resolverRef.current = resolve;\n });\n }, [setState]);\n\n return [state, handleSetState];\n};\n\nexport default useStateWithPromise;\n","import { useReducer } from 'react';\n\nexport const OPEN_PROGRESS_DIALOG = 'openProgressDialog';\nexport const CLOSE_PROGRESS_DIALOG = 'closeProgressDialog';\ntype ActionType = {\n type: typeof OPEN_PROGRESS_DIALOG | typeof CLOSE_PROGRESS_DIALOG,\n voteCompleted?: boolean,\n displayDialog?: boolean,\n};\n\nconst reducer = (state, action: ActionType) => {\n switch (action.type) {\n case OPEN_PROGRESS_DIALOG:\n return { displayDialog: true, voteCompleted: action.voteCompleted };\n case CLOSE_PROGRESS_DIALOG:\n return { ...state, displayDialog: false };\n default:\n throw new Error();\n };\n};\n\nexport const useVotingProgressReducer = () => {\n const initialState = { displayDialog: false, voteCompleted: false }\n const [{ displayDialog, voteCompleted }, dispatch] = useReducer(reducer, initialState);\n\n return { displayDialog, voteCompleted, dispatch};\n};\n","export const isCurrentlyInPublicSearch = () => window.location.pathname === '/search';\nexport const isCurrentlySmartSearch = () => window.location.href.includes('/add_by_smart_search');\nexport const isCurrentlyNormalSearch = () => window.location.href.includes('/add_by_search');\nexport const isCurrentlyAiSearch = () => window.location.href.includes('/ai_search');\n\nexport const searchLocation = () => {\n return isCurrentlyNormalSearch() ? 'SERP' :\n isCurrentlyAiSearch() ? 'Public Search Troupie' :\n isCurrentlySmartSearch() ? 'Smart Search' : 'Public Search';\n}\n\n","export const capitalize = (text : string) : string => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 37930,\n\t\"./se.js\": 37930,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 95606,\n\t\"./ss.js\": 95606,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","TripObjectState","GlobalContext","React","MaxPrice","TripSiteContext","FormsContext","csrfToken","triggerLogIn","SegmentContext","isPlanner","currentUserId","undefined","tripId","RoutesContext","ImageUploaderContext","fileStackAPIKey","TriggerableLogInForm","_props","ref","authPath","useContext","RailsForm","action","withChangeDetection","_document$querySelect","document","querySelector","getAttribute","client","_ref","graphqlPath","link","BatchHttpLink","uri","headers","batchInterval","batchMax","cache","InMemoryCache","typePolicies","DateOptionWithAvailability","keyFields","ExternalListing","Reaction","ApolloClient","name","connectToDevTools","createApolloClient","routes","hocRailsAction","Page","props","globalContextProps","imageUploaderProps","routesFromRails","snackbarNotification","datesState","destinationsState","staysState","tripGid","currentUserGid","travelerId","restOfProps","_objectWithoutPropertiesLoose","_excluded","useEffect","_TroupeApp$User","TroupeApp","User","identify","currentUserIdOneSignalAuthHash","Sentry","ENABLE_ALL_PUSH","gql","_templateObject","enableAllPushNotifications","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","mutate","mutation","abrupt","sent","stop","apply","arguments","handleMessageEvent","_ref2","_callee2","event","jsonData","_yield$enableAllPushN","urlSearchParams","_context2","data","JSON","parse","status","userAllPushNotificationEnable","errors","length","URLSearchParams","window","location","search","set","ENABLED_ALL_PUSH","toString","setSnackbar","message","duration","severity","reload","t0","_x","addEventListener","removeEventListener","triggerableLogInFormRef","formsContextValue","_triggerableLogInForm","current","submit","snackbarInitialState","_useState","useState","snackbar","_useState2","confettiActive","setConfettiActive","globalContextValue","assign","activateConfetti","setTimeout","tripSiteContextValue","segmentContextValue","pageProps","StyledEngineProvider","injectFirst","ApolloProvider","ThemeProvider","theme","CssBaseline","Provider","value","SnackbarNotification","autoHideDuration","onClose","open","Confetti","active","isTestEnv","featureFlag","context","children","useStyles","makeStyles","avatar","backgroundColor","palette","general","background","disabled","border","color","height","size","avatarSizes","width","opacity","plusOnes","borderRadius","_ref3","_ref4","fontSize","_ref5","fontWeight","display","alignItems","justifyContent","position","top","_ref6","right","mobilePlusOnes","left","wrapper","_ref7","borderVariant","borderColors","_ref8","borderHeight","verticalAlign","_ref9","borderWidth","statusToVariant","going","cannot_go","interested","_ref10","_clsx2","_clsx","className","_ref10$disabled","_ref10$plusOnes","_ref10$size","src","classes","fallbackIcon","PersonIcon","isMobile","useMediaQuery","useTheme","breakpoints","down","MuiAvatar","clsx","xs","sm","md","lg","xl","danger","primary","success","warning","buttonProps","IconButton","AddIcon","addPlusOne","marginTop","spacing","addPlusOneText","marginLeft","_ref$tripId","trackSegment","useSegment","Button","href","tripTravelersPath","onClick","page","PersonAddAlt1Icon","Typography","root","fontFamily","typography","paddingLeft","paddingRight","paddingTop","paddingBottom","borderColor","variant","buttonColors","fill","hover","focused","boxShadow","pressed","_ref11","_ref12","_ref13","_ref14","_ref15","fullWidth","_ref16","detachedFromForm","disableFocusRipple","disableElevation","_excluded2","disabledForm","FormContext","type","pathname","ButtonBase","defaultProps","outline","enabled","_ref$disabled","testId","tabIndexProp","tabIndex","Box","Chip","segmentProps","nonActive","chipColors","activeHover","formContext","isDisabled","refs","useCallback","element","trackAnalyticsEvent","title","tripObjectId","main","whiteSpace","_ref$active","eventName","eventProperties","_ref$trackEventDisabl","trackEventDisabled","colors","white","blue","favoritesButton","lineHeight","padding","favoritesText","minWidth","textAlign","_favoriteListings$dat","_favoriteListings$dat2","_ref7$color","_ref7$viewingShared","viewingShared","getFavoriteId","favoritesStorage","favoritesCount","useQuery","GET_FAVORITES_LISTINGS","variables","favoriteId","skip","node","listings","trackClickedFavoriteEvent","useClickedFavoritesEvent","favoritesPath","FavoriteIcon","buttonPlacements","bottom","transform","FloatingButton","_ref$placement","placement","zIndex","displayName","useLoadMoreCommentsButtonStyles","_loadCommentsButton","loadCommentsButton","up","commentsPath","Grid","item","property","selected","_ref4$isSelected","isSelected","_ref4$onClick","setSelected","onButtonClick","_ref8$variant","default","secondary","tertiary","successLighter","text","accountPath","tripsPath","flexDirection","headerTitle","eventAvatar","fieldFocus","isPushNotificationsEnabled","isTemporaryUser","isUserLoggedIn","successNotification","updateToken","user","avatarUrl","fullName","SiteHeader","currentUserAvatarUrl","isTripUpdatesHidden","pt","pl","BackToButton","path","container","sx","ProfileFormPage","updatePath","token","formDivider","marginBottom","formContent","_ref$isPushNotificati","_ref$isTemporaryUser","phoneNumber","disabledSmsSettings","setSmsSettingsState","deleteAccountDialogOpen","setDeleteAccountDialogOpen","method","AvatarSection","direction","DismissibleAlert","Errors","Divider","ProfileFormSectionGrid","BasicInfoFields","subtitle","NotificationsFields","FixedSaveBar","buttonContent","saveButtonType","DeleteConfirmationDialog","confirmationToggleText","fullWidthButtons","isOpen","defaultAvatarUrl","AvatarUploader","currentAvatarUrl","icon","reducer","state","pickerOpened","initialState","_useReducer","useReducer","_useReducer$","dispatch","Avatar","CameraDropdownButton","onRestoreDefault","onChoosePhoto","canRestoreDefault","ImagePicker","onSuccess","url","onImageChange","opened","email","phoneNumberInstructions","borderSpacing","gray","providerText","provider","TextField","label","defaultValue","firstName","required","lastName","InputMask","mask","onChange","_value$match","target","match","join","autoFocus","placeholder","checkbox","notificationsSwitchContainer","notificationsSwitchLabel","tableBody","tableHead","borderTop","pushNotificationsCallout","enablePushNotificationsButton","tripNotificationsEnabled","notificationsSettingId","notification","Notification","shouldShowPushNotifications","_useStateWithPromise","useStateWithPromise","tripNotifications","setTripNotifications","_useStateWithPromise2","notificationsSetting","setNotificationsSetting","CheckboxCell","propName","inputName","_ref2$disabled","_ref2$tooltip","tooltip","StyledCheckbox","checked","_Object$assign","then","onFormChange","Tooltip","StyledSwitch","permission","Stack","requestPermission","disableRipple","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","notificationsMap","index","emailProp","smsProp","emailName","smsName","pushProp","pushName","key","_ref$spacing","gridProps","categoryList","tripUpdateActivityPath","tripActivitiesPath","activityImage","objectFit","categorySelect","activity","_ref2$shouldFocusPric","shouldFocusPrice","_ref2$showCommentFiel","showCommentField","image","setImageUrl","setObjectFit","setLocation","fallbackSource","_useState3","category","selectedCategory","setSelectedCategory","ModalForm","closePath","formActionPath","formMethod","InputWithCharacterCounter","characterLimit","ImageUploader","defaultImage","onImageUpload","onImageRestoreDefault","originalImages","originalImage","ActivityLocationField","currentGooglePlaceId","googlePlaceId","currentGooglePlaceUrl","googlePlaceUrl","currentLocationName","locationName","currentLatitude","latitude","currentLongitude","longitude","place","location_name","google_place_id","google_place_url","Select","displayEmpty","textContent","input","OutlinedInput","inputProps","renderValue","CategoryLabel","selectBar","MenuItem","ActivityPriceField","price","CommentField","fieldName","skeletonCard","activityReducer","loading","fetched","Skeleton","withStyles","BaseSkeleton","onError","onFetch","onLoading","onRemove","address","isParamsPresent","entries","debouncedFetchActivity","debounce","parameters","axios","get","params","trip_id","response","fetchActivity","missingActivity","activityIsLoaded","activityCannotBeFetched","newUrl","startsWith","concat","Array","Activity","showSentiments","priceText","parseFloat","toFixed","activityPrice","setActivityPrice","getElementById","scrollIntoView","behavior","block","checkMaxPrice","min","step","max","inputMode","addressTypeWrapper","centeredSection","noActivityImage","maxWidth","emptyStateImage","multipleLinksButton","RadioButton","FormControlLabel","control","Radio","activityPreviewParams","addActivityByOption","setValue","byAddressState","setByAddressState","_useStateWithPromise3","addDetails","setAddDetails","inputRef","useRef","showFetchErrorMessage","showActions","showEmptyState","focus","pick","handleCategoryChange","handleCategoryClick","handleLinkChange","trim","selectUrlOrAddress","newMethod","saveButtonLabel","saveButtonVariant","Consumer","RadioGroup","currentImage","googlePlaceImage","google_place_image","handleAddressChange","InputProps","endAdornment","CloseIcon","ActivityPreview","resourcePath","alt","noStayImage","externalInputRef","activityLocation","setActivityLocation","activityLocationName","googlePlaceLocation","GooglePlacesAutocomplete","onSelect","handleActivityChange","imageUploaderWrapper","imageUrl","methodValue","handleLocationChange","handleImageUpload","tripBroadcastsPath","tripDatesPath","tripStaysPath","tripDestinationsPath","tripPollsPath","tripActivityGroupPath","tripItineraryDatePath","tripItineraryDatesPath","groupBackLink","divider","subHeader","withLayout","breadcrumbs","commentable","comments","commentCreationError","isUserPlanner","activityGroup","itineraryDateId","suggestionsCount","source","_commentableType$comm","Stay","backLinkText","tripPath","commentHeaderText","DateOption","Destination","Poll","Broadcast","substring","Breadcrumbs","links","py","StayPage","stay","DateOptionPage","dateOption","DestinationPage","destination","PollView","poll","wrapWithLink","isExpanded","BroadcastView","broadcast","showLink","ActivityPage","Comments","headerText","showGroupsTitles","mostPopularOptionsIds","getMostPopularDateOptions","option","currentUserVote","dateOptionPath","endDate","endDateWeekday","endDateYear","isChosen","isChosenDate","isMostPopular","includes","isPast","numNights","startDate","startDateWeekday","startDateYear","travelersVotes","showMissingVoteAlert","isCurrentUserVoteRequired","Snackbar","_props$autoHideDurati","gid","_useQuery","DESTINATIONS_LIST_QUERY","error","_React$useState","displayDialog","setDisplayDialog","SkeletonList","itemLength","destinations","votedCount","reduce","count","currentUserRanking","voteCompleted","RANKING_SIZE","find","travelers","traveler","missingVotesCount","destinationMissingVotesCount","displayActions","hideVotes","isClickable","openVotingProgress","showVotingProgressBanner","VotingProgressDialog","closeDialog","totalVotes","vertical","_title","note","confirmationCode","textTransform","confirmationCodeText","fontStyle","blueTitle","subText","bookText","margin","greenCheck","marginRight","booking","stayId","formatDate","date","moment","format","formatTime","time","showRefundable","refundability","showCostandRefundable","totalCost","refundableUntil","mb","CheckCircleIcon","minHeight","StayBookingActions","stayBooking","pb","checkInDate","checkInTime","orientation","checkOutDate","checkOutTime","NumericFormat","displayType","decimalScale","fixedDecimalScale","thousandSeparator","prefix","notes","RichText","pr","author","style","_stay$stayBookings","STAY_QUERY","StayPermapageCard","stayBookings","StayBookingDetails","uuid","header","sentimentButtons","tripVotingPath","datesArray","from","datesComments","votes","yes","maybe","no","missing","dateOptions","votesCount","previousVotes","commentDisabled","body","newVotes","oldSentiment","newSentiment","arrow","commentField","dateOptionGrid","dateOptionSegment","votingCount","votingGridContainer","weekday","initialArray","trip","initialVotesState","sameAsPreviousVotes","stringify","previouslyVoted","pluralize","disabledSubmit","some","saveBarTopContent","VotingProgressBar","currentVotes","VotingCount","ArrowForwardIcon","VotingDatesButtons","dateOptionId","isCommentDisabled","onCommentButtonClick","onVoteChange","updateSentimentCount","multiline","withBorder","_count","yourVotes","VotesCount","sentiment","commentsButton","commentsIcon","illustrationsContainer","img","voteValue","setVoteValue","sentimentButton","capitalizedSentiment","charAt","toUpperCase","slice","setSentiment","commentsDisabled","ChatBubbleOutline","bar","colorPrimary","deadline","voted","LinearProgress","DestinationField","currentDestination","setDestination","destinationName","formattedAddress","handleDestinationChange","tripDestinationPath","destinationImage","destinationPreview","_destination$image","debouncedFetchDestination","fetchDestination","missingDestination","destinationIsLoaded","destinationCannotBeFetched","MyTripsLink","Link","underline","errorMessages","invalidAuthenticityToken","messageContainerBox","flex","errorKey","errorMessage","showCoverPhoto","SiteFooter","_pageContainer","pageContainer","favoritesTitle","imageContainer","imageText","viewButton","viewingSharedFavorites","viewingSharedFavoritesText","_data$node","dialogOpened","setDialogOpened","favoritesData","favoritesListings","listingCount","trackShareFavoritesInitiatedEvent","useShareFavoritesInitiatedEvent","renderFavoriteDates","listing","arrival","departure","dayjs","TroupeLogoWithFavoritesHeader","withMobilePadding","Container","searchPath","mt","flexWrap","IosShareIcon","ShareFavoriteDialog","shareUrl","ExternalListingCard","externalListing","favoriteListingId","renderCtaButton","publicUrl","footer","displayToggleFavoriteButton","NoSuggestionsYet","illustration","copyField","buttonsContainer","flexGrow","copied","setCopied","showSendButton","navigator","trackShareLinkCopiedEvent","useFavoriteShareLinkCopiedEvent","trackShareSheetEvent","useFavoriteShareSheetEvent","copyLink","copyToClipboard","sendLink","share","readOnly","component","FileCopyOutlinedIcon","_shareFavoriteDialog","shareFavoriteDialog","gap","Dialog","ShareFavoriteActions","messageBox","innerBox","steps","imageSrc","copy","pageNameToContent","alreadyHaveAccountWithDifferentProvider","capitalizedProvider","assistanceText","Email","accountWithDifferentProviderBody","justLoggedOut","justRequestedAccountDeletion","justDeletedAccount","authFailure","heroImage","List","ListItem","disablePadding","ListItemIcon","ListItemText","stepRow","LogInButtonForm","propToPageNameMappings","alreadyHaveAccountWithDifferentProviderError","isUserLoggingOut","isUserRequestingAccountDeletion","isUserAccountDeleted","authFailureMessage","pageContent","getPageName","pageContentProps","aiFiltersBackgroundContainer","overflow","backgroundImage","logo","cursor","logoFavorites","_ref$logoPath","logoPath","hasPrompt","currentAppliedFilters","customFiltersApplied","encryptedUserEmail","userEmail","atob","analytics","waitlistEmail","handlePopstate","basePath","aiSearchPath","apiSearchPath","apiSearchAiListingsPath","StaysSearch","topSuggestedDestinations","ExternalListingCTA","SearchBackground","AiFilterBackground","aiSearch","aiSearchType","_background","_backgroundImage","FilterBackground","common","alignSelf","backgroundSize","FavoritesButton","_backgroundColor","_logo","_favoritesButton","FilterSearchedBackground","logoContainer","mobileHeader","hasSearched","setHasSearched","apiSearchListingsPath","showShortBackground","inviteSubText","inviteStatusSection","invitesWrapper","outerContainer","_travelers_data$trave","_travelers_data$trave2","acceptedInvites","activeTab","declinedInvites","_ref$isCurrentUserPla","isCurrentUserPlanner","pendingInvites","tripName","setTravelersList","travelers_data","TRAVELERS_QUERY","guests_data","GUESTS_QUERY","totalPlusOnesCount","total","plusOneCount","totalGuestsCount","guests","tabLabels","Modal","withDivider","ShareLinkSection","inviterId","TabNavigation","onTabChange","newValue","TabPanel","IndexPage","ManageTravelers","onRemoveTraveler","interestedSection","travelerSubText","travelerStatusSection","travelersWrapper","travelersGoingList","filter","travelersInterestedList","travelersNotGoingList","totalGoingPlusOnes","totalInterestedPlusOnes","totalNotGoingPlusOnes","TravelerInfo","TravelersSkeleton","GuestsSection","subheading","hidePlusOneAddButton","additionalTraveler","resourceName","refetchOperation","dialogOpen","setDialogOpen","_React$useState2","snackbarMessage","setSnackbarMessage","_React$useState3","setErrors","deleteAdditionalTravelerMutation","useMutation","refetchQueries","getOperationName","deleteMessageBody","EditDeleteButtonGroup","disableDeleteButton","handleOpenDialog","additionalTravelerId","onConfirmClick","onCompleted","_result$errors","entry","tooltipText","GUEST_CREATE","mobileInput","doneButton","cancelButton","_ref$autoFocus","onGuestFormClose","textRef","setFirstName","setLastName","GuestDismissedEvent","useGuestDismissed","_useMutation","createGuestMutation","onSubmit","preventDefault","_ref2$tripGuestCreate","tripGuestCreate","tripGuest","Done","Close","PLUS_ONE_CREATE","onPlusOneFormClose","createPlusOneMutation","_ref2$travelerPlusOne","travelerPlusOneCreate","travelerPlusOne","parentStatus","onPlusOneSave","_button","button","borderRightColor","buttonGroup","buttonDisabled","ButtonGroup","groupedOutlined","EditIcon","DeleteIcon","DeleteResourceConfirmationDialog","onConfirm","actions","guestTravelersSection","helpIcon","addGuestButton","addGuestLink","addGuestInitiatedEvent","useAddGuestInitiated","guestTravelerTooltipEvent","useGuestTravelerToolTipClick","onAddGuestClick","setDisplayGuestLink","totalGuests","displayGuestLink","ml","HelpIcon","guest","AdditionalTravelerActions","TRIP_GUEST_DELETE","CreateGuestForm","_ref$disableDeleteBut","onRemoveTravelerError","performAsyncRequestWithCancelToken","apiTripTravelerPath","authenticity_token","travelersList","removedTravelerId","removedUserId","userId","plusOneRemove","replace","_error$response","PLUS_ONE_DELETE","_treeViewButton","_avatarContainer","info","joinedTrip","treeViewButton","avatarContainer","_traveler$user","_traveler$plusOnes","_traveler$plusOnes6","_ref$hidePlusOneAddBu","isMobileApp","displayWhenQueryParam","CREATE_PLUS_ONE","currentTravelerOrPlanner","displayFormInitialValue","removeTravelerError","setRemoveTravelerError","plusOneFormAutoFocus","setPlusOneFormAutoFocus","displayPlusOnes","setDisplayPlusOnes","_useState4","setPlusOneCount","_useState5","addPlusOneEnabled","setAddPlusOneEnabled","_useState6","displayPlusOnesLink","setDisplayPlusOnesLink","_useState7","isMounted","setIsMounted","_traveler$plusOnes2","_traveler$plusOnes3","_traveler$plusOnes4","_traveler$plusOnes5","plusOne","renderPlusOneActions","KeyboardArrowDownIcon","KeyboardArrowRightIcon","joinedAt","TravelerActionsButtonGroup","CreatePlusOneForm","mx","my","_objectDestructuringEmpty","_","addDetailsButton","GoogleMapsForm","stayPreviewParams","hasAutomaticAvailability","AddressField","currentAddress","StayPreview","withAddStayPageLayout","addBySearchTripStaysPath","apiTripSearchListingsPath","ExternalListingForm","staysPath","canAddToTrip","alreadyOnTrip","originalUrl","SmartSearchForm","addBySmartSearchTripStaysPath","UrlForm","helperText","newTripBatchStaysPath","_label","backButton","borderBottom","tabsContainer","overflowX","scrollbarWidth","nonSelectedHover","selectedHover","badge","tabs","addByURLTripStaysPath","addByGoogleMapsTripStaysPath","smartSearchTab","unshift","isActiveTab","tab","activeValue","findIndex","ArrowBackIosIcon","Tabs","flexContainer","textColor","Tab","flowRight","tripBatchStaysPath","addButtonContainer","removeUrlButton","urls","splice","RemoveCircleIcon","TextButton","STAY_BOOKING_DELETE","deleteBookingMutation","STAYS_LIST_QUERY","editTripStayBookingPath","objectId","bookingId","textDecoration","stayBookingId","result","tripStayPath","hidden","addressLabel","onlyComments","maxSteps","setStep","hideDetailsStep","canGoBack","onFormSubmit","extraSaveBarButton","images","DetailsFields","AvailabilityAndPricingSection","fieldId","addressOnly","collectUrl","originalName","shouldDisplayNameInput","setAddress","addressValue","noSuggestedDateOptions","chosenDateOption","dateOptionsList","mustDisplayAvailabilityTitle","DateOptionsAvailability","hasChosenDate","manual","DateOptionsAvailabilityFields","withTotalPriceField","_dateOptionsContainer","dateOptionName","availableButtonText","chipsContainer","unavailableChip","dateOptionsContainer","values","dateOptionIcon","availableIcon","unavailableIcon","totalPrice","available","dateOptionsStates","setDateOptionsStates","every","allDatesAvailable","setAllDatesAvailable","updateDateOptionState","newDateOptionsStates","newState","isAvailable","isUnavailable","Checkbox","currentTarget","availabilityDateId","linkPath","anchor","noVotesBreakdown","CancelIcon","pricePerNight","setPrice","maxGuests","setMaxGuests","bedroomsCount","setBedroomsCount","StepperInput","minValue","maxValue","stayReducer","debouncedFetchStay","fetchStay","missingStay","stayIsLoaded","stayCannotBeFetched","hideDateOptionsAvailability","float","trackLinkSegment","buttonRef","ctaName","added","addedText","spinner","setLoading","onExternalListingAdd","ListingsContext","_useContext2","trackStayAddedEvent","tripStayURL","isCurrentlySmartSearch","request","after_create_redirect_path","Accept","CircularProgress","CheckIcon","searchFilterChips","filtersContainer","onHandleAiSearchFilterChange","onFilter","triggerFilterDialog","pagination","minGuests","AiSearchPaginationText","FiltersButton","filters","SearchFilterChips","appliedFilters","_headerText","examplePrompts","listTitle","listItem","prompts","prompt","thingsToKnow","ExamplePrompt","borderStyle","onPromptExampleClick","alternativesLink","objEntries","obj","modelRequestId","hideRationaleAndAlternatives","amenities","troupieAlternatives","trackSERPLinkEvent","useTrackSERPEvent","rationaleTroupieApi","isArray","acc","snakeKey","toLowerCase","split","word","rationale","setRationale","alternativesOpen","setAlternativesOpen","alternatives","setAlternatives","requestFilters","requestRationale","query","search_id","console","log","model_outputs","viewAlternativesRef","originalDestination","resultCount","TooltipBase","enterTouchDelay","InfoIcon","SeeMoreOrLess","AlternativesDialog","SearchFeedbackBox","AiFilters","locationFilled","enableClearDates","clearDatesButton","defaultArrival","defaultLocationName","defaultDeparture","isDialogOpen","defaultLatitude","defaultLongitude","defaultMinGuests","trackSERPEvent","enableSubmit","searchMethod","destinationChanged","guestCountChanged","datesChanged","onClearDatesClick","DialogBottomOnMobile","handleGPChange","onCloseIconClicked","DateRangePicker","autoComplete","startValue","endValue","dateRange","isAfter","handleDatesChange","useMobilePicker","Number","handleGuestChange","onFilterClick","renderWithDialogClick","tracker","guestsText","to","arrivalDate","departureDate","datesText","month","renderDates","_aiPublicSearchSubtit","aiTripSearchTitle","aiPublicSearchTitle","aiPublicSearchSubtitle","searchBox","aiTripSearch","poweredByText","filtersBtn","initialPrompt","_inputRef$current","_inputRef$current$que","setPrompt","handleSubmit","Title","onKeyDown","shiftKey","maxLength","promptPreview","promptPreviewText","textOverflow","dialogBackground","askTroupie","setOpen","handleEnterKey","backgroundClass","question","answer","promptExample","wordWrap","between","muiIcon","handlePromptSubmit","isLoading","PromptExample","baseColor","InfoTile","AiSearchPromptDialog","AiSearchPrompt","flexItem","alternativeBox","onAlternativeTileClick","AlternativeBox","alternative","content","shareButton","displayFavoriteButton","_stay$provider","_ref2$displayToggleFa","isCurrentlyInPublicSearch","ctaButton","pricing","ListingPricing","isHotel","contentForListView","ExternalListingContent","nameLink","stayImages","ImagesCarousel","linkHref","TripObject","contentClassName","variation","Variation","Vertical","visual","ShareButton","FavoriteToggleButton","properties","boxOrient","lineClamp","wordBreak","clickArea","isPublicSearch","useStayAffiliateClickEventRef","listingUrl","targetClicked","StayRating","wrap","StayProperties","favTest","FAVORITE_ADD","_taggedTemplateLiteralLoose","FAVORITE_REMOVE","_templateObject2","_favoritesStorage","setFavoriteId","isFavorited","externalId","trackFavoriteEvent","useListingFavoriteEvent","trackFavoriteRemoveEvent","useListingFavoriteRemovedEvent","favoriteImgSrc","favoriteAdd","favoriteList","addFavorite","addFavoriteLoading","_useMutation2","favoriteRemove","removeFavoriteLoading","favoriteToggle","listingId","bedroomCount","HoverBorderIconButton","_image","objectPosition","maxHeight","slider","segmentRef","settings","arrows","infinite","speed","slidesToShow","slidesToScroll","lazyLoad","Slider","imageTag","disableTouchRipple","renderImage","addDatesText","nightlyPrice","_ref$pricing","currency","hotelRoomCount","isTotalPrice","openSearchCriteriaDrawer","Price","renderNumRooms","renderNightlyPrice","Math","round","renderTotalPrice","_poweredByText","_inventoryWrapper","FiltersComponent","googleAutoComplete","inPublicSearch","searchCriteria","filtersButton","inventoryWrapper","Filters","_ref6$currentAppliedF","filterFormPath","_ref6$showFiltersButt","showFiltersButton","_ref6$isLoading","_ref6$aiSearch","_ref6$isDialogOpen","onDialogClose","formRef","setFilters","prevState","_currentAppliedFilter","a","onFilterChange","formData","createFormDataForFiltering","FormData","renderGoogleAutocompleteSearch","types","submitDisabled","AiSearchPromptSection","SearchCriteria","inventory","InventoryRadioGroup","AiSearchCriteriaDialog","_ref2$value","FormControl","row","selectedCount","amenityFilters","selectAllText","amenitiesFilters","updateAmenitiesFilters","allSelected","ALL_AMENITIES_FILTERS","setChecked","collapseText","FEATURES_FILTERS","ACCESSIBILITY_AND_SAFETY_FILTERS","renderAmenities","definedAmenitiesFilters","f","newAmenitiesFilters","amenity","updateFilter","renderSelectedFilters","t","v","selectedFilters","renderSection","rowGap","POPULAR_FILTERS","Collapse","in","selectionsHidden","bookingOptionsFiltersTexts","filterSection","instantBookFilter","freeCancellationFilter","updateFreeCancellationFilter","updateInstantBookFilter","isChecked","Switch","MIN_PRICE_EMPTY_VALUE","MAX_PRICE_EMPTY_VALUE","NumericFormatCustom","onBlur","emptyValue","emptyValueSuffix","other","getInputRef","onValueChange","valueIsNumericString","allowNegative","suffix","updateMinPrice","updateMaxPrice","minPrice","maxPrice","sliderValue","setSliderValue","validMinPrice","parseInt","inputComponent","validMaxPrice","valueLabelDisplay","disableSwap","activeThumb","onChangeCommitted","onPropertyTypeCheck","propertyTypes","areAllSelected","propertyType","setAllSelected","propertyTypesLength","firstColumnLimit","ceil","propertyTypesFirstColumn","propertyTypesSecondColumn","checkBoxes","replaceAll","i","onCheck","mr","activeButton","star","activeStar","ratingRow","rating","updateRatingFilter","isButtonActive","ratingLabel","StarIcon","chip","activeChip","chipsRow","infoIcon","RoomFilter","onOptionClick","options","isChipActive","countLabel","bathroomCount","updateBathroomCount","updateBedroomCount","updateHotelRoomCount","drawerContent","_temporalFilters$amen","temporalFilters","setTemporalFilters","canSubmitForm","originalPropertyTypes","currentPropertyTypes","object","currentPropertyType","originalPropertyType","instantBook","freeCancellation","updateTemporalFilter","Drawer","PriceFilter","RatingFilter","RoomFilters","AmenitiesFilters","BookingOptions","PropertyTypes","extraButton","_temporalFilters$prop","priceRangeReset","propertyTypeReset","ratingReset","roomsReset","amenitiesReset","instantBookReset","freeCancellationReset","hotelRoomReset","getStaysSearchFilteredEventProps","aiSearchFilter","currentFiltersCounter","_filters$propertyType","_filters$propertyType2","_ref2$aiSearch","_React$useContext","openFiltersDrawer","closeFiltersDrawer","isFiltersDrawerOpen","isBedroomFilterApplied","isBathroomFilterApplied","isRatingFilterApplied","isPriceFilterApplied","isAmenitiesFilterApplied","isHotelRoomFilterApplied","appliedFiltersCount","numOfFilterChipLabel","isFilterApplied","Badge","badgeContent","overlap","invisible","TuneIcon","SortAndFilterDrawer","newFilters","unavailableCase","availableCase","typeThresholds","availability","inventoryBannerSegmentText","typeValues","class","_listingCard","borderRight","borderLeft","borderTopColor","dark","listingCard","onInfoWindowClickOut","sidebar","sidebarOrMobileView","searchLocation","mapClickEventRef","useMapClickEventRef","hoveredListing","ListingsMapContext","highlighted","renderListingCard","MapCard","isSERP","InfoWindow","onClickOut","costDisclaimer","listingsContainer","pageListingsDescription","fetchListings","initialLoad","_ref$error","_ref$aiSearch","modelOutputs","setHoveredListing","showResults","isSinglePage","totalListingsCountLabel","LoadingState","texts","interval","Loading","AiResults","requestId","InventoryBanner","onMouseEnter","onMouseLeave","pageUrl","prev_url","NavigateBeforeIcon","next_url","NavigateNextIcon","ListingsEmptyState","ListingsErrorState","emptyStateText","emptyStateHeader","_ref$topSuggestedDest","showTopSuggestedDestinations","showEnterDestinationCopy","TripTypeDestinations","TopSuggestedDestinationsTileList","AiPublicSearchEmptyState","retryButton","emptyState","selectedDetail","isAiSearch","emptyStateKey","searchError","aISearchError","defaultError","skipCache","retrySameSearch","setState","activeMarker","isLoadingListings","searchMovingMap","radius","listView","onExpandMapClick","_ref$sidebar","_useContext","onMapPositionChange","expandMapButtonRef","useExpandMapEventRef","debouncedFetchListings","center","getCenter","bounds","getBounds","visibleDistances","getNorthEast","getSouthWest","google","maps","LatLng","lat","lng","point","geometry","spherical","computeDistanceBetween","handleMarkerClick","updatePosition","setOptions","disableDoubleClickZoom","handleMarkerClickOut","handleMapChange","listingLabel","newLatlng","panTo","markers","SearchCheckBox","hideSearch","handleSearchCheckBoxChange","MapView","renderMarker","ListingMarker","onMapLoaded","onDragEnd","onZoomChange","_loadingGif","loadTextItem","loadingGif","currentIndex","setCurrentIndex","maxIndex","intervalId","setInterval","prevIndex","clearInterval","recentlySearched","destinationCard","flexShrink","cardsContainer","RecentlySearchedCard","recentlySearchedDestination","dates","_ref2$recentlySearche","recentlySearchedDestinations","boxWrapper","box","searchCheckBox","searchLabel","backButtonWrapper","_ref$hideSearch","toggleView","ChevronLeftIcon","DisappearedLoading","searchCriteriaBar","selectedValue","noValueSelected","_ref$arrival","_ref$departure","_ref$minGuests","_ref$bedroomCount","_ref$hotelRoomCount","closeSearchCriteriaDrawer","isSearchCriteriaDrawerOpen","roomCount","hotels","vacation_rentals","renderRoomCriteria","SearchCriteriaBar","areDatesSelected","CalendarMonthIcon","SupervisorAccountIcon","SearchCriteriaDrawer","selectedDates","setSelectedDates","selectedMinGuests","setSelectedMinGuests","selectedBedrooms","setSelectedBedrooms","selectedHotelRooms","setSelectedHotelRooms","p","DatesSection","onGuestsSelected","nightCount","diff","sectionText","customDatesContainer","selectedDatesInDateOptions","customSelection","setCustomSelection","clearDatesLink","currentRadioValue","chosenDate","DateOptionRadio","formattedStartDate","formattedEndDate","onDateRangePickerChange","mapPriceAndRatingFilter","mapRoomFilterValue","mapBookingOptionValue","filterChipContainer","_appliedFilters$ameni","_appliedFilters$prope","renderChip","filterName","filterPair","deleteIcon","onDelete","handleOnDelete","priceFilter","roomFilter","_appliedFilters$ameni2","newAppliedAmenities","am","ALL_FILTERS_OBJECT","capitalize","_appliedFilters$prope2","newAppliedPropertyTypes","_tile","tile","tileImage","tileText","tileFilter","tileGrid","choiceLabel","borderBottomLeftRadius","borderBottomRightRadius","topChoice","crown","RankingLabel","labelText","ranking","isGroupFavorite","SuggestedDestinationTile","str","num","suggestedDestination","onDestinationTileClick","destinationTile","tilePosition","shouldDisplayRankingLabel","searchFeedbackBox","closeButton","shareLink","responseId","setResponseId","createAiSearchFeedback","AI_SEARCH_FEEDBACK_CREATE","responseButton","ctaClicked","customDatesFilterApplied","guestCount","filtersApplied","_ref2$aiSearchFeedbac","aiSearchFeedbackCreate","aiSearchFeedback","onResponseButtonClick","SearchFeedbackDialog","setMessage","addMessageAiSearchFeedback","AI_SEARCH_FEEDBACK_ADD_MESSAGE","DialogContent","rows","aiSearchFeedbackId","aiSearchFeedbackAddMessage","comment","onPromptTileClick","viewMode","_action$filterData$ge","_action$filterData$ge2","filtering","filterData","_action$params","min_guests","buttonText","mapWrapper","overflowY","sidebarMapWrapper","_state$filters2","_state$filters3","_ref$showShortBackgro","_ref$hasSearched","trackSearchPerformed","useTrackSearchPerformed","searchParams","_Object$fromEntries","fromEntries","_Object$fromEntries$v","initialFilterData","locationNameState","setLocationNameState","setModelOutputs","setIsDialogOpen","currentPrompt","historyMethod","dispatchEmptyState","_ref2$pagination","_ref2$viewMode","filterParams","buildUrl","pathParams","history","pushState","newParams","_temp","_ref3$historyMethod","_ref3$pageUrl","_ref3$retrySameSearch","_ref3$skipCache","queryString","URL","origin","pagy","search_method","_data$modelOutputs","datesBanner","destinationSearched","destinationLatLong","guestsCount","inventorySelected","resultCountPage","totalResultCount","_data$listings","_state$pagination$pag","_state$pagination","scrollTo","_state$filters","_filterParams$locatio","_filterParams$prompt","withResults","listingsContextValue","suggestion","promptTile","updatedListings","ListingsMapView","RecentlySearched","RenderWithOrWithoutSidebar","showWithSidebar","ListingsBox","scroll","destinationsContainer","DestinationCard","tripType","preFilteredTripType","preFilteredTripTypeIndex","destinationsByTripType","selectedTripType","scrollRef","scrollLeft","CustomChip","onChipClick","description","ScrollContainer","titleWrapper","resendModalOpened","isResendAllButtonDisabled","pendingInvitesList","setPendingInvitesList","planner","pendingEmailInvites","pendingInvite","invite","PendingInvite","onInviteDelete","disableResendButton","AcceptedInvite","DeclinedInvite","EmailInviteModal","resendEmail","onResend","onModalClose","respondedAtText","_invite$invitee","invitee","respondedAt","apiTripInvitePath","actionItem","createdAtText","resendLabel","deleteLabel","resendEnabled","actionError","_ref$disableResendBut","actionsState","timeoutError","lastResendAttemptedAt","setLastResendAttemptedAt","openResendInviteModal","createdAt","emailAddress","_error$response$data","deleteInvite","hasCustomMessage","Date","toLocaleDateString","day","year","navItems","homePageStyles","NavigationBar","items","plannerChip","travelerChip","tripBox","tripBoxInnerGrid","tripTitleSection","tripTitle","sectionHeaderGridItem","sectionHeaderItemButton","sectionContainer","myTripsHeader","topContainer","TravelerChip","errorNotification","trips","addTripButtonRef","buttonClicked","hideMyTripsButton","newTripPath","el","CardButton","TripActions","deletable","coverPhotos","small","TravelersAvatars","EmptySectionContentWithCTA","heading","message1","message2","ctaText","ctaHREF","ctaTrackingProps","tripTravelerPath","iconButton","exitToAppIcon","anchorEl","setAnchorEl","deleteDialogOpen","setDeleteDialogOpen","leaveDialogOpen","setLeaveDialogOpen","handleCloseMenu","MoreHorizIcon","Menu","Boolean","anchorOrigin","horizontal","transformOrigin","dense","ExitToAppIcon","LeaveConfirmationDialog","tripChosenDateOptionPath","tripObjects","mostPopularOptions","TripObjectChoosingModalForm","tripSitePath","newChosenTripObjectPath","ChoosingTypeTripObject","Dates","isSkipVoting","renderTripObject","tripObject","chooseFinalTripObject","highlightAsChosen","onDateOptionClick","tripChosenDestinationPath","usePageStyles","onDestinationClick","tripChosenStayPath","chosenStay","onStayClick","cardButton","cardLabel","selectedVertical","UpperImage","VerticalBox","_ref3$selectedVertica","selectedVerticals","setOptionalData","optionalData","verticals","alignContent","nothing","stays","_Object$assign2","subTitle","_optionalData$locatio","_optionalData$locatio2","_optionalData$locatio3","_optionalData$locatio4","_optionalData$locatio5","_optionalData$locatio6","currentStep","setCurrentStep","stepToScreen","Body","FirstStepTripForm","FirstStepTripImage","buttonType","buttonLabel","SecondStepTripForm","stepSubmittedEvent","SecondStepUpperImage","ThirdStepTripForm","ThirdStepUpperImage","track","decidedSelection","prevStep","titleClassName","useDefaultSaveButton","upperImage","start_date","end_date","verticalTitle","_optionalData$vertica","_optionalData$vertica2","_optionalData$vertica3","isVerticalPresentOrFilled","isVerticalSelected","handleDisabledSubmit","optionalDataPrevState","disabledSubmitOnFirstRender","_optionalData$locatio7","_dates$","_dates$2","defaultStartValue","defaultEndValue","_inputRef$current2","renderStayField","headLine","blurbWrapper","uploaderContainer","travelerCount","tripNameInput","EstimatedTravelerCount","estimatedTraveler","setDescription","defaultTripName","onTextFieldBlur","field","defaultBlurValue","noLabel","RichTextEditor","TripTypesSelection","forcedAspectRatio","isFullSize","TRIP_TYPES","bachelorette_bachelor","cruise","friends","outdoors_ski","birthday_milestone","family","girls_trip","useChipStyles","filled","outlined","_ref$tripTypes","tripTypes","chipClasses","selectedTypes","setSelectedTypes","prevSelectedTypes","selectedType","handleSelectType","m","tripDateOptionsPath","addMoreDatesButton","removeButton","NewDateOptionPage","existingDateOptions","setDates","canAddMoreDates","canRemoveDates","addDate","alreadySuggested","setAlreadySuggested","indexes","forEach","selectedDate","existingDate","isDateAlreadySuggested","validDates","hasError","nameEnd","nameStart","range","selectedRange","_selectedRange$","_selectedRange$2","newArray","removeDate","DeleteOutlineIcon","noImage","DestinationPreview","_trip$coverPhotos","_ref$errors","blurb","estimatedTravelers","original","travelerGroup","tripDisplayedAvatars","previewTravelers","renderGuestAvatars","travelersCount","tripDeleteActivityPath","editTripActivityPath","tripRemoveActivityPath","tripActivityVotesPath","_activityCardImage","_infoContainer","_nonSearchPageImageSi","_root","_fullHeight","_tripActivity","activityCardImage","activityLink","bottomInfoContainer","googleLink","infoContainer","fallbackImageObjectFit","nonFallbackImageObjectFit","commentButton","nonSearchPageImageSize","isCarouselItem","cardVariationImage","fullHeight","commentsContainer","voteBox","commentBox","tripActivity","externalButtons","selectButtonWrapper","verticalActions","commentButtonContainer","_clsx3","activityGroupId","activityTracker","setActivityComment","_ref4$displayCommentB","displayCommentButton","_ref4$displaySelectBu","displaySelectButton","_ref4$displayActivity","displayActivityLinks","_ref4$isCarouselItem","_ref4$isSelectedActiv","isSelectedActivity","onActivityClick","_ref4$showActions","linkToComment","_ref4$groupPermapage","groupPermapage","_ref4$variation","_ref4$showSentiments","_ref4$showGroupsTitle","imageSource","setImageSource","noMargin","onTripObjectClick","prop","RemoveActivityFromGroupButton","actionPath","groupsTitles","hasItineraryEvent","ActionsButtonGroup","deleteDialogAdditionalMessage","ActivityGroupsTitles","expanded","titles","deletePath","editPath","tripObjectHeader","imageLabel","Header","TripObjectLink","linkText","dataTestId","eventTracker","SelectButton","ActivityVotingSummaryDialog","activityVotes","activityId","CommentsLink","commentsLink","commentsCount","segment","tripObjectType","SentimentButtons","currentUserSentiment","sentimentParamName","sentimentSettingPath","sentiments","iconExt","shortLabel","CommentIcon","linkWrapper","TitlesRow","Label","collapsed","setCollapsed","activityNameLink","activityName","_ref$showLink","TitleLink","Linkify","borderTopRightRadius","activeSentiments","activityHasNoVotes","textButtonColors","votesContainer","flat","activitySentiments","SentimentIcon","votesRow","sentimentIcon","showPlusOnesMessage","sentimentVotes","hasPlusOnes","AvatarGroup","avatars","renderVotesRow","ExcludesPlusOnesMessage","VotesTable","VoteResultsButton","addPriceText","editIcon","_activity$groupsTitle","ActivityName","ConfirmationDialog","actionMethod","actionText","tripActivityGroupsPath","withMicrositeLayout","filterContextProps","sortingContextProps","fullscreenMap","setFullscreenMap","activitiesWithCoords","activitiesSelected","ActivityFilterContext","ActivitySortingContext","FullscreenMapView","activities","onListButtonClick","SideBarPage","mainContent","MainContent","sideBarContent","SideBarContent","onExpandMap","MobileMapButton","fluid","tripAddActivitiesPath","editTripActivityGroupPath","activityGroupTitle","activityGroupSubheader","noSuggestions","addActivityToActivityGroupText","responsiveText","activitiesAvailableEmpty","activitiesAvailable","currentSortingLabel","ActivityGroupActionsButtonGroup","ActivitiesFilteringAndSortingBar","formPath","CurrentSortingAndCount","sorting","ActivitiesList","ActivitiesMapSection","refererPage","ActivityChoosingModalForm","tripAddActivitiesUpdatePath","_container","selectedActivity","ActivityIdsInput","selectedActivityIds","activitId","activityIds","setActivityIds","activeCategory","setActiveCategory","activityList","setActivityList","indexOf","pathTo","permapage","groupsTab","availableCategories","categories","All","categoryCount","filterGroup","filterActivities","sort","tripUserBroadcastViewLogsPath","sortText","broadcasts","currentSorting","sortings","initialValue","showCommentForm","setShowCommentForm","newBroadcastRef","newBroadcastLabel","post","SectionHeader","FilteringAndSortingBar","sortByRadioGroupName","isTraveler","newTripBroadcastPath","setComment","toggleCommentFormVisibility","mostRecentComment","MostRecentCommentBox","commentFormPath","showLoadMoreCommentsButton","containerLink","messageContainer","reactions","indexPageReactions","_data$node$reactions","_userData$node","_ref$displayCommentBu","_ref$setComment","_ref$showReactions","showReactions","GET_REACTIONS","reactableId","userData","GET_USER_DISPLAY_NAME","ADD_REACTION","addReaction","addReactionLoading","REMOVE_REACTION","removeReaction","removeReactionLoading","onAddReaction","emoji","humanReadableName","onRemoveReaction","reactionCounts","reaction","users","currentUserDisplayName","ContainerLink","tripBroadcastPath","dataset","SVGPathElement","ReadMore","readMoreCharacterLimit","showLessButton","Reactions","initialReactions","reactableType","isSelfReaction","px","onMouseDown","stopPropagation","authorName","bold","descriptionContainer","timestamp","timeStamp","isUnviewed","UserAvatar","avatarSrc","TimeStamp","isCurrentUserAuthor","ActionsMenu","NewTripUpdatesDot","BroadcastBody","_destinationCardImage","_destinationName","chosenDestination","destinationCardImage","destinationLink","openNewTabIcon","viewOnMap","_destination$uuid","_destination$gid","_travelers$find","_ref$hideVotes","_ref$displayActions","_ref$showVotingProgre","_ref$showCommentButto","showCommentButton","setDestinationComment","destinationId","destinationGid","_usePhasingContext","usePhasingContext","areDestinationsInVotingPhase","areDestinationsFinalized","shouldDisplayVotes","destinationRankings","queryParams","exploreStaysButtonUrl","displayVotingProgressBanner","editTripDestinationPath","ExploreStaysButton","VotingSummaryDialog","objectType","AsyncSentimentButtons","rankLabels","tripObjectGid","tripDestinationRankingsPath","VotingProgressBanner","rankings","dayNumber","backTo","itineraryDate","itineraryDatesList","itineraryDatePermapage","formattedDate","referrer","_timeInput","timeInput","isSafariDesktop","itineraryEvent","_ref2$withChangeDetec","isSafari","isDesktop","startTime","setStartTime","endTime","setEndTime","errorsState","tripActivityEventPath","ItineraryActivityEvent","activityEvent","isClickeable","InputLabelProps","shrink","itinerary","returnPath","tripStayEventPath","ItineraryStayEvent","stayEvent","isInModal","allowedMinDate","allowedMaxDate","shouldDisableDateEnabled","disablePast","destroyConfirmationTripChosenDateOptionPath","destroyConfirmationTripChosenDestinationPath","destroyConfirmationTripChosenStayPath","tripChosenDateOptionNotePath","tripChosenDestinationNotePath","tripChosenStayNotePath","chooseFinalDifferentTripObjectButton","chosenDateOptionActions","chosenTripObject","headerSeparator","votingResultsButton","destroyConfirmationTripChosenObjectPath","tripChosenObjectNotePath","activityAd","hasChosenTripObject","typeTripObject","_ref$trip","showSerpButtons","destinationSubheading","FinalizedPageContentHeader","showButtons","ActivityAd","ChosenTripObjectHeader","chooserAvatarUrl","chosenByName","chooserName","chosenAt","objectPath","imgPath","linkNameToProvider","displayBookButton","tripObjectPath","VotingResultsButton","addPadding","showDateOptions","setShowDateOptions","bookedBorder","bookedText","bookedHeader","bookingDetails","booked","linkUrl","ChevronRightIcon","shouldRenderCarousel","providerButton","ProviderName","cardContent","StayName","StayImages","isExternalListing","onMarkerClickOut","onMarkerClick","mapClickRef","InfoWindowContent","StayNanoView","stayPath","stayUrl","StayMiniView","dataContainer","_stay$price","_stay$price2","chosenDatePrice","StayNameWithLink","StayPricing","averagePricing","prices","pricingType","providerName","_ref$fullscreen","fullscreen","setActiveMarker","StayMarker","handleClickOut","imgLink","_stay$uuid","withLink","cardGoesToProvider","_ref2$displayBookButt","_ref2$displaySelectBu","_ref2$hideButtons","hideButtons","_ref2$hideCommentsLin","hideCommentsLink","hideDetails","_ref2$hideVotes","_ref2$showVotingProgr","_ref2$isNameClickable","isNameClickable","_ref2$isSelected","noCarousel","_ref2$onSelect","_ref2$displayActions","_ref2$showCommentButt","setStayComment","_ref2$hideAddPricingL","hideAddPricingLink","stayMethod","areStaysInVotingPhase","areStaysFinalized","dateOptionsAvailability","providerLink","stayNameLink","firstStayBooking","at","stayRankings","onEditStayClick","useTrackEditStayClick","handleMarkAsBookedClick","useHandleMarkAsBookedClick","linkTargetBlank","editTripStayPath","onEditClick","onMarkAsBookedClick","displayMarkAsBooked","newBookingPath","newTripStayBookingPath","updateBookingPath","StayContent","nameTargetLink","stayPricing","StayDetails","StayAddress","bookable","BookButton","VotingSection","_ref$fullWidth","trackButtonClicked","VRBO","stayVerticalStatus","Expedia","buttonName","useBookButtonClickedEvent","listingURL","changeImageSize","StayImage","disabledGradient","unavailable","fontStretch","letterSpacing","applyHover","priceDetailsText","priceRange","toBeDetermined","openDialog","setOpenDialog","pricingTypeText","isRangePrice","isChosenDateZero","isPriceZero","DateOptionsIcon","DateOptionsPricing","stayHasAutomaticAvailability","isFinite","stayProperties","h3","dividerMargin","guestFontSize","bedrooms","attribute","reviewsCount","starRating","showRating","reviewWord","_stay$gid","stayGid","tripStayRankingsPath","_editButton","editButton","estimatedPriceText","DateOptionPrice","availableDateOption","unavailableDateOption","unknownDateOption","ErrorIcon","_priceContainer","_rightItem","priceContainer","rightItem","DateFormatted","isCurrentYear","getFullYear","AvailabilityIcon","estimatedPrice","isEstimated","_hideDetails","ratingAndReviews","stayInfoContainer","liveStayIconWrapper","LiveStayIcon","MostRecentComment","showForm","pathProps","commentPath","tripStayCommentPath","commentsUrl","tripStayCommentsURL","authorAvatarUrl","tripStayCommentsPath","_useVotingProgressRed","useVotingProgressReducer","staysWithRankings","b","votingProgress","OPEN_PROGRESS_DIALOG","BookedWrapper","CLOSE_PROGRESS_DIALOG","_currentStayFilters$d","thisTraveler","staySortings","currentStayFilters","currentStaySorting","lastEventUpdatedAt","onSortAndFilterChange","areStaysInSuggestingPhase","activeFilterCount","dateOptionIds","areFiltersActive","noFilteredSuggestions","sortingName","sortBy","addStayText","isSuggestingEnabled","rightElement","LastUpdateFilterLink","PhasingStepper","currentPhase","stayMissingVotesCount","ActionCallout","rowSpacing","SearchStaysButton","HousingFilteringAndSortingBar","currentFiltersCount","currentFilters","AddStayButton","StaysList","listItems","addButtonRefs","setAppliedFiltersCount","handleDateOptionCheck","serializeForm","castArray","InputLabel","defaultChecked","SearchIcon","StaysMapView","tooltipTitle","tooltipDescription","renderVerifiedIcon","availableActivitiesCount","ItineraryMainContent","itineraryDates","newTripActivityEventPath","newTripStayEventPath","AddLink","DropdownButton","menuList","MenuList","HotelIcon","CalendarTodayOutlinedIcon","FloatingActionButton","keepMounted","tripItineraryEventPath","tripGetActivityPath","editTripActivityEventPath","_ref$itineraryDateId","_ref$showAddTimeLink","showAddTimeLink","_ref$showActionsMenu","showActionsMenu","_ref$isClickeable","startDialogOpen","schedulableId","itinerary_date_id","trackEventCardClicked","useTrackEventCardClicked","trackItineraryEventEditInitiated","useTrackItineraryEventEditInitiated","trackDeletionInitiated","useTrackDeletionInitiated","onEditTimeClick","schedulableType","renderTimeText","formattedStartTime","formattedEndTime","activityTimeText","ItineraryEvent","actionsMenu","onDeleteClick","itineraryDialog","ItineraryDialogModal","imgUrl","eventObjectPath","ItineraryActivityEventDialog","ClickArea","eventId","imageWrapper","clickableTime","addTimeLink","MoreTimeIcon","dateIcon","dateTimeBox","addTimeText","timeIcon","metadata","dialog","trackEditTimeInitiated","ItineraryEventDialog","DateRange","AccessTimeIcon","renderButtons","ITINERARY_DATE_CHIP_WIDTH","chipDate","_dialogActions","_message","modalFooter","closeIcon","dialogActions","messageBody","forward","footerMessage","Transition","Slide","transition","_ref2$position","dialogBaseProps","footerText","CloseDialogButton","DialogBase","paper","TransitionComponent","DialogContentText","DialogActions","ArrowForwardIosIcon","stayImageWrapper","clickableArea","checkIcon","bookedImage","_ref2$showActionsMenu","_name","_externalButtons","_itineraryEvent$provi","viewDetailsTracker","itineraryEvents","unscheduledEvents","scheduled","scheduledEvents","stayItineraryEvents","renderActivityEvents","renderStayEvents","editTripItineraryDatePath","filterContainer","itineraryDateTitle","itineraryDateSubtitle","itineraryDaySubheader","itineraryHeader","dayAndEditSection","chevronRight","_ref$scheduleListView","scheduleListView","ele","setScrollBarHorizontalPosition","ItineraryDatesChipBar","AddEventDropdown","AddDescriptionLink","ItineraryEventsList","AddEventFloatingButton","editTripStayEventPath","_stayEvent$stayBookin","_stayEvent$stayBookin2","_ref$isInModal","cardHeight","showBookedIcon","isBooked","ItineraryStayEventDialog","boldText","refundable","checkinText","BookingDetails","formatDateTime","checkIn","checkOut","_itineraryEvent$stayB","ItineraryDatesChangeExplanation","toggleButton","isShowing","setIsShowing","addDescriptionLink","pointerEvents","dayBlock","descriptionWrapper","h2","chevronRightWrapper","dateBox","trackLinkAnalyticsEvent","ItineraryDate","tripItineraryPath","editTripItineraryPath","ItineraryDatesList","ItineraryDatesReduction","confirmSubtitle","switchChecked","onSwitchClick","durationInDays","_dayjs","initialTotalDays","setSwitchChecked","areLessDays","_React$useReducer","payload","itineraryFormOptions","disableSubmit","saveTooltipText","onDatesChange","newTripItineraryPath","messageInput","inputClassName","ItineraryActivitiesChoosingForm","tripActivityEventsPath","EmptyStateModalForm","buttonHref","imgSrc","staysAvailable","selectedIds","setSelectedIds","lastStep","setLastStep","setErrorMessages","sortedStays","getSortedStaysFirstByFinalizedThenByRankings","bookedStays","stayAvailable","bookedStayCount","onBackButtonClick","stayCount","formTitle","formSubtitle","HorizontalStepper","activeStep","tripStayEventsPath","FirstStep","onStaySelect","LastStep","defaultStartDate","defaultEndDate","itineraryEndDate","itineraryStartDate","selectedStays","SelectedWrapper","StayForm","addMoreAnswerButton","answerInput","preview","stepper","answersContainer","maxAnswers","previewStep","setPreviewStep","answers","setAnswers","setAnswer","newAnswers","setQuestion","validAnswers","canAddMoreAnswers","ClearIcon","responsesPercentage","PollPreview","PollAnswerButton","imageCopy","tripNote","tripNotePath","tripNotesPath","addButtonCopy","addNewNote","authorId","formProps","sortType","newTripNotePath","NoteRow","updatedAt","editor","fullHeaderHeight","indicatorImage","indicatorIcon","savingIndicationWrapper","showDeleteButton","HEADER_BAR_HEIGHT","NAV_BAR_HEIGHT","saveIndicatorLabel","setSaveIndicatorLabel","savingIndicatorIcon","ActionButtons","savingContainer","onAutosave","put","trip_note","editTripNotePath","blurbContainer","noMarginTop","BlurbSection","editTripInitiatedEvent","useEditTripInitiated","editTripPath","inviterName","isInviteValid","utmMedium","withInvite","attendeesAvatarsExpanded","setAttendeesAvatarsExpanded","shareMediums","shared","firstTimeNew","inviteModalFormOpen","setInviteModalFormOpen","InviteModal","shareLinkSource","InviteDialog","FinalizedDatesAndDestination","SectionDivider","TripStatus","AttendeesAvatars","onToggleClick","ShareTripButton","collapseOnMobile","inviteBtnVariant","segmentMethod","ManageTripButton","useStyle","borderTopLeftRadius","travelerContainer","travelerName","travelerStatus","avatarsToggle","travelerContainerPointer","TravelersRow","onTravelerClick","travelerHasPlusOnes","humanizedStatus","renderUserTraveler","renderGuestTraveler","seeLessMoreText","clickedTraveler","setClickedTraveler","travelerClickEvent","useTravelerClickEvent","avatarsPerLine","rowTravelers","push","collapsedTravelersRows","TravelerDetailsDialog","maxStep","setMaxStep","showStepButtons","CardGroupCarouselContext","PreviousStepButton","CardGroupCarousel","NextStepButton","renderDestination","_userAvatarContainer","_shareTripButtonConta","plannerStatus","userAvatarContainer","userName","shareTripButtonContainer","plannerName","showRsvpButtons","inviterInfo","inviterStatus","inviterAvatarUrl","plannerAvatarUrl","shareTripButtonWithTooltip","RespondToInviteOptions","inviteId","BroadcastButton","RsvpModal","listItemIcon","_formFirstOfType","goingButton","interestedButton","renderButton","stylesClass","declineTripInvitePath","listDivider","CustomRadio","currentStatus","tripInviteId","formAction","labels","shouldDisplay","buttonIcon","DeclineInviteMenuItem","currentTravelerStatus","RespondToInviteDropdownButton","RespondToInviteButtons","SectionCtaButton","rule","_heading","_subheading","_ref$hasNoMarginBotto","hasNoMarginBottom","travelersGroup","travelersPlusOnes","travelersNote","plusOneName","manageButton","plusOnesContainer","chipBackgroundColors","getFirstName","dismissDialogEvent","useDismissDialogEvent","isTravelerCurrentUser","plusOneText","currentUserTitle","anotherUserTitle","titleText","ctaPath","renderCard","cardsOverviewItems","card","renderCardFunc","CardsOverview","TRIP_QUERY","TripStatusSkeletonCards","staysSuggestingPath","finalizedDates","VerticalStatusCard","finalizedDetails","suggestingLabelByVertical","Activities","Stays","Destinations","chipLabel","suggesting","voting","finalized","skipped_voting_finalized","chipColor","isFinalized","subtitleCopy","verticalImages","assetPath","verticalCardClicked","verticalStatus","polls","travelersVoting","openedPolls","PollState","Open","closedPolls","Closed","hasOpenedPoll","travelersVotingBox","TravelersVotingBox","isEmptyState","verticalType","OpenedPollsSection","maxOpenPollCount","ClosedPollsSection","hasMoreThanThreeOpenedPolls","createPollRef","newTripPollPath","disableButton","closeTripPollPath","buttonVariant","pollsCount","hasClosedPolls","PollsList","hasNoPolls","AddPollButton","_verticalActions","clickable","pollAnswers","pollQuestion","boxSizing","objectAuthorWrapper","commentFormToggle","displayFormToggle","_ref$displayDeleteBut","displayDeleteButton","_ref$hideAnswers","hideAnswers","shouldRedirectTo","_ref$wrapWithLink","_ref$isExpanded","isOpenForResponses","disableClosedButton","isAuthoredByCurrentUser","ObjectAuthor","DeleteButton","tripPollCommentsPath","PollVotes","responsesCountTotal","PollAnswersForm","currentUserChoice","tripPollResponsesPath","_poll$currentUserChoi","PollAnswerResponses","CloseButton","tripPollPath","lineHeigth","selectedAnswerId","setSelectedAnswerId","setFormMethod","answerId","showProgressBar","list","tripStayBookingsPath","datePicker","refundabilityList","verticalPageMethod","_ref$source","refundabilityInitialValue","confirmationText","setConfirmationText","setCheckInDate","setCheckOutDate","_useStateWithPromise4","refundabilityValue","setRefundabilityValue","refundDeadLineValue","setRefundDeadLineValue","isRefundabable","actionRoute","tripStayBookingPath","refundabilityText","formatNumber","_stayBooking$totalCos","defaultStayBookingCheckInTimeValue","defaultStayBookingCheckOutTimeValue","isStayBookingForm","LocalizationProvider","dateAdapter","AdapterDayjs","DatePicker","inputFormat","showToolbar","renderInput","hasExtraHeight","tabsCounter","showVotingBoxOnSidebar","showVotingBoxOnMainContent","votingBox","isSidebar","allowedCategories","activitiesWithoutVotesCount","activitiesWithVotesCount","selectedCategories","setSelectedCategories","withVotes","selectedWithVotes","setSelectedWithVotes","withoutVotes","selectedWithoutVotes","setSelectedWithoutVotes","allCategoriesSelected","disableWithVotesCheckbox","disableWithoutVotesCheckbox","isInterestSort","selectedInterestLevel","setSelectedInterestLevel","selectOrDeselectAll","handleCategoryCheck","_ref$groupPermapage","groupId","addActivityText","ActivitiesSectionNavigation","counter","AddActivityButton","SortingContext","activityGroupList","_groupTitle","groupTitle","customLink","overflowWrap","hideActionButtons","hideActivityCards","ActivityGroupCarousel","stepButtonMargin","marginRigth","bottomCardRow","activitiesSelectedCount","activitiesSelectedText","carouselItems","AddActivityButtonCard","noActivitiesAvailable","buttonEnabled","letterSppacing","addActivitybutton","_ref3$noActivitiesAva","AddRoundedIcon","ActivityGroup","addGroupsText","ActivityGroupList","newTripDateOptionPath","newTripChosenDateOptionPath","newTripVotingPath","setSuggestingPhaseTripDatesPath","setVotingPhaseTripDatesPath","datesCtaButton","dateOptionsTitle","subheader","saveBar","currentDateOptionSorting","currentUserFirstName","dateOptionsSortings","plannerCanSkipVotingEnabled","shouldDisplayTravelersList","areDatesInSuggestingPhase","areDatesInVotingPhase","validDateOptions","canUserStillVoteOnDates","currentUserMissingVotesCount","hasUserStartedVoting","focusedVotingText","suggestDateRef","displayVotingBtn","toolTipText","showActionCallout","focusedVotingButtonClicked","titleize","DatesList","VotingTopSideBarContent","disabledActions","finalizePath","transitionToSuggestingPath","SuggestingPhaseButtons","hasSuggestions","transitionToVotingPath","actionCalloutTitle","actionCalloutTitleWrapper","actionCalloutWrapper","dateOptionCard","setDateOptionComment","showIconWithoutLabel","hideOnVoting","newTripChosenDestinationPath","setSuggestingPhaseTripDestinationsPath","setVotingPhaseTripDestinationsPath","userHasCompletedVotingOnDestinations","areDestinationsInSuggestingPhase","initialSortAndFilter","activeSortAndFilter","SkeletonPage","userHasCompletedVoting","tripDestinationCommentPath","tripDestinationCommentsURL","tripDestinationCommentsPath","sortedDestinationsByRanking","hash","elementToScroll","getBoundingClientRect","newTripDestinationPath","addDestinationText","addDestinationRef","DestinationsList","newTripChosenStayPath","setSuggestingPhaseTripStaysPath","setVotingPhaseTripStaysPath","mapContainer","fullScreenMapTop","setSortAndFilter","shouldShowMapView","MobileListButton","StaysSection","newSortAndFilter","StaysMapSection","newTripActivityPath","dataTestID","CategoryIcon","LinkIcon","RoomOutlinedIcon","conciseLabel","TransitionEvent","PollEvent","FinalizedEvent","CommentEvent","VotedEvent","CreatedEvent","tripUpdatesViewLogsPath","DISMISS_CALLOUT","headerSubtitle","noDataText","checkBackText","currentFilter","countByCategory","tripEvents","USER_QUERY","ID","timer","clearTimeout","dateSawNotificationCallout","ManageNotificationsCallout","FilteringBar","tripEvent","TripUpdateEntry","filterPathFor","tripUpdatesPath","filteringOptions","sum","verticalFiltered","manageNotificationsCallout","useOnClickEvent","useDismissEvent","useCalloutDismissed","dismissCalloutMutation","handleOnClick","userNotificationCalloutDismiss","_outerDot","outerDot","innerDot","eventDescriptionContainer","eventDescription","eventDivider","eventTripObject","goToNotes","isFinishedVotedEvent","eventType","avatarClassName","TripUpdateEntryAction","isUnviewedEvent","eventObjectType","eventObject","CommentBody","tripDatePath","reactable","commentableUrl","FinishedVotedTripEventLink","showTransitionLink","TransitionedTripEventLink","goToButton","buttonAttrs","finished_voted_date_options","tripObjectListPath","finished_voted_destination","finished_voted_stay","linkButtonText","destination_transitioned_to_suggesting","destination_transitioned_to_voting","stay_transitioned_to_suggesting","stay_transitioned_to_voting","dates_transitioned_to_suggesting","dates_transitioned_to_voting","ordinalize","number","rank","commentableType","humanize","_ref6$eventObject","edits","categoriesArray","editedCategories","start_time","end_time","Set","eventTimestamp","eventTitle","username","actionsMap","ActivitiesMapView","ActivityMarker","ActivityNanoView","activityPath","_activityName","ActivityImage","groups","tripObjectRank","tripObjectUnrank","onIndexPage","prevCurrentUserSentiment","setPrevCurrentUserSentiment","trackRankingChangeEvent","networkError","graphQLErrors","rankMutationFn","rankLoading","unrankMutationFn","unrankLoading","optimisticRankResponse","__typename","AsyncSentimentButton","isActiveRank","handleRankSubmit","_variables","_optimisticResponse","_variables2","_optimisticResponse2","optimisticResponse","gridItem","indexGridItem","disabledEmoji","sentimentButtonsContainer","sentimentProps","nonImageLabel","Arts","Classes","Cruises","Entertainment","Food","Landmarks","Nightlife","Outdoors","Recreation","Shopping","Tours","Wellness","useChosenTripObjectNoteActionsStyles","ChosenTripObjectNoteActions","useChosenTripObjectHeaderStyles","chosenByTitle","NoteForm","maxRows","InputAdornment","SendIcon","commentsText","CustomLink","form","sortByFormControl","_sortings$find","_ref$currentFiltersCo","openDrawer","CollapsibleBox","FormLabel","sectionHeading","exploreStaysButton","_ref$showButtons","disabledButton","addIcon","disabledAddIcon","addButton","_ref$toolTipText","listStyleType","_ref$page","inline","getElementsByTagName","preventScroll","LoadMoreCommentsButton","CommentBox","CommentForm","checkmark","unclickable","answerBody","_ref3$disabled","_ref3$isClickable","_ref3$selected","_ref3$showProgressBar","responsesCount","responsesInfo","responses","_gridItem","_indexGridItem","_emoji","toolTip","_ref$formMethod","isVotedSentiment","Hidden","only","disabledSkipVotingButton","SkipVotingButton","namePositionMobile","namePositionDesktop","nameShort","nameLong","smUp","Truncate","lines","smDown","rankingType","getTravelersRankingsForTripObject","rankLabelsWithVotes","backToSuggesting","finalizeButton","withMarginLeft","pluralizedType","BackToSuggestingButton","_fluid","logInLinkForm","logInLink","alert","_props$trip","analyticsGroup","tripUpdatesNum","broadcastNum","hideCoverPhoto","hideOverviewHeader","OverviewSubheader","hideNavBar","infoMessage","Alert","AlertTitle","reactStringReplace","errorsContainer","chosenTripObjectId","chosenTripObjectPath","indexPath","_ref$isSkippedVotingF","isSkippedVotingFinalized","tripObjectInputs","tripObjectNoteContainer","confirmTripObjectButton","_ref$isSkipVoting","defaultChosenId","setChosenTripObjectId","skipVotingField","authReauthenticatePath","usersPath","_newUserFormImage","_fieldsContainer","newUserFormImage","nameFields","fieldsContainer","buttonOuter","formType","formTypeHumanized","focusedInputRef","textFieldDetails","_focusedInputRef$curr","iconImage","_ref$displayMarkAsBoo","BaseActionsMenu","dialogs","additionalMessage","BookingActionsMenuItems","_ref$onDeleteClick","_ref$dense","_ref$newBookingPath","_ref$updateBookingPat","ctaLink","textShadow","_ref9$small","ctaCopy","regular","trackAdClicked","adDestination","activityAdType","useAdClickedEvent","overflowCount","overflowContainer","overflowAvatar","tooltipArrow","OverflowItem","maxAvatars","lastAvatars","MuiAvatarGroup","_ref$onMarkAsBookedCl","breadcrumbBox","breadcrumbsProps","role","MuiBreadcrumbs","cardsContainerOuter","msOverflowStyle","scrollBehavior","cardsContainerInner","cardsScrollContainerWidth","cardWidth","cardSafeArea","_ref3$fullWidth","cardsContainerWrapperEl","setWidth","numCardsVisible","floor","totalCardsCount","refreshWindowDimensions","offsetWidth","onTouchStart","newIndex","onTouchEnd","Direction","CarouselStepButton","isPrevious","Previous","nextStep","FlatButton","Next","centeredHeader","arrowIcon","expansionToggleButton","expandedContent","hiddenContent","hideArrows","startCollapsed","_ref$strategy","strategy","titleWhileCollapsed","titleWhileExpanded","setExpanded","toggleExpansion","KeyboardArrowUpIcon","headerCommentsCount","instruction","commentsList","currentUser","byCurrentUser","commentWrapper","commentBody","editedText","editedAt","commentAuthor","commentAuthorWhenCurrentUser","commentBodyByCurrentUser","commentEditFormWrapper","commentTimestamp","textBody","editionState","wasEdited","each","AvatarGridItem","CommentEditForm","onCancelClick","onCommentChange","formButton","textField","setBody","patch","commentFormBox","commentFormBoxWithTextInputted","commentSendButton","inputHover","commentFocus","setCommentFocus","commentTextField","onTextFieldFocus","useCommentsButtonStyles","styles","ReactConfetti","defaultColors","defaultConfig","angle","spread","startVelocity","elementCount","stagger","dragFriction","config","additionalAction","disableWith","hideCancelButton","confirmed","setConfirmed","confirmable","setConfirmable","linkProps","RootComponent","datesOuter","picker","CustomDateRangePicker","_ref2$shouldDisableDa","_ref2$disablePast","_ref2$isStayBookingFo","dateRangePickerBaseInputProps","setDateRange","setCheckInTime","setCheckOutTime","isAccept","setIsAccept","isTextField","setIsTextField","Picker","MobileDateRangePicker","handleOnChange","newRange","renderInputs","startProps","endProps","onFocus","localeText","start","end","shouldDisableDate","isBefore","onAccept","onOpen","_currentUserVoteIcon","_dateOptionGrid","_dateOptionSegment","cardLink","currentUserVoteIcon","headerGrid","dateOptionWrapper","optionTitle","numberOfNights","sentimentEmoji","centerDates","_ref$currentUserVote","_ref$showMissingVoteA","areDatesFinalized","numOfNights","currentUserVoted","shouldDisplayGroupFavorite","showCommentsNumber","isNaN","GroupFavoriteChip","VotesBreakdown","maxAvatarsLength","DateOptionActions","MissingVoteAlert","mostPopularDateOption","useVotesBreakdownStyles","_sentimentLabel","sentimentLabel","sentimentLabelText","sentimentLabelEmoji","sentimentLabelCount","disabledItem","voteSentiments","isSentimentDisabled","confirmationDialogProps","pluralizedResourceName","_bottom","DialogTitle","alertProps","useDrawerClasses","_paper","otherProps","DrawerBase","DropdownIconButton","DropdownBase","customPaper","handleClose","Paper","ClickAwayListener","onClickAway","menuComponent","anchorRef","handleToggle","MenuIconToggle","segmentEventOnDropdownClick","MenuToggle","menuListWrapper","contains","prevOpen","Popper","TransitionProps","Grow","buttonGroupItem","expandButton","MenuButtonToggle","showConciseButton","ExpandMoreIcon","emailField","messageField","initialReducerState","customMessage","disableActions","emailError","initialInviteesEmails","inviteesEmails","resendInvite","inviteReducer","invalidEmails","emails","emailRegexp","RegExp","TRIP_INVITES_CREATE","isResendInvite","sendInvitesMutation","_useMutation$","inviteesEmailsCount","actualInviteesEmails","canSendInvites","sendEmail","emailAddresses","_ref2$tripInvitesCrea","tripInvitesCreate","tripInvites","invalidRecipientsEmails","emailList","emailCount","trackInvitesEvent","sendInviteButtonLabel","emailInputLabel","EmailInviteForm","buttonContainer","upperGrid","ctaRef","emptyStateModalContainer","ErrorBoundary","_Component","_this","call","getDerivedStateFromError","_proto","prototype","componentDidCatch","errorInfo","render","this","fallback","ErrorBoundaryMessage","Component","verticalPhase","_ref$saveButtonVarian","_ref$saveButtonType","topContent","_place$formatted_addr","_place$place_id","_place$url","nameOrEmptyString","isSearchableInput","formattedAddressOrEmptyString","formatted_address","place_id","photos","getUrl","closeButtonContainer","autocomplete","_ref2$types","_ref2$formattedAddres","clearable","setClearable","places","Autocomplete","addListener","onPlaceChange","selectedItem","getElementsByClassName","getPlaceFromGooglePlacesApiResponse","getPlace","mergeRefs","completed","iconContainer","borderTopWidth","Stepper","alternativeLabel","Step","StepLabel","restoreDefault","cameraDropdownIcon","cameraIconWrapper","fullSize","_ref$originalImages","imageToRestore","onDragOver","UploadFileIcon","RestoreIcon","CameraAltIcon","pickerWrapper","basicOptions","accept","fromSources","maxFiles","maxSize","transformations","crop","aspectRatio","force","handlePickerChanges","mutations","_observer","_step","_iterator","_createForOfIteratorHelperLoose","done","inputs","querySelectorAll","_step2","_iterator2","setAttribute","MutationObserver","observer","observe","childList","subtree","disconnect","PickerOverlay","apikey","pickerOptions","onUploadDone","filesUploaded","_searchPageImageSize","controlButtons","weight","searchPageImageSize","Carousel","wrapAround","renderBottomCenterControls","slideCount","currentSlide","defaultControlsConfig","nextButtonText","prevButtonText","prevButtonClassName","nextButtonClassName","characterCountContainer","inputActive","inputInactive","inputContainer","_ref$defaultValue","_ref$noLabel","_ref$testId","_ref$hasExtraHeight","useTextField","textFieldProps","isActive","setIsActive","extraHeightProps","counterComponentPosition","handleChange","InputBase","_bodyEmoji","titleEmoji","confirmationDescription","confirmationButtonText","copiedLinkButton","howThisWorks","bodyWrapper","bodyEmoji","invalidDescription","inviteDescription","imageWrapperAlt","fullContent","setFullContent","addEmailsRef","ManageInvitesLink","tripInvitesPath","Routes","inviteUrl","medium","urlParams","append","fetchShortLinkApiURLShortenerPath","tripURL","copiedLink","createLabel","creatingLink","copyLinkButton","copyInviteSection","createLinkSection","insertLink","shareActionButtons","shareUrlWithUTM","setUTMparams","copyUrlWithUTM","ShareSheetButton","copyUrl","inviteLinkUrl","InsertLink","trackSharesheetActivated","shareInviteLink","captureException","isTruncated","setIsTruncated","scrollWidth","_updatedAtButton","_updatedAtButtonText","updatedAtButton","updatedAtButtonText","UpdateIcon","linkify","LinkifyIt","tlds","matches","elements","lastIndex","string","rel","stringParser","_ref$position","wrapperRef","_ref$onDragEnd","_ref$onMapLoaded","_ref$onZoomChange","setMap","loaded","setLoaded","defaultCenter","useMemo","_markers$","_markers$2","maxMapZoomLevel","defaultZoom","log2","handleDragEnd","GoogleMapReact","yesIWantToUseGoogleMapApiInternals","onGoogleApiLoaded","apiIsLoaded","onTilesLoaded","clickableIcons","fullscreenControl","panControl","scaleControl","maxZoom","onZoomAnimationEnd","marker","listButtonPlacement","listViewButtonRef","useListViewEventRef","mdDown","mdUp","ListIcon","MapIcon","alertMessage","missingVoteAlert","errorIcon","_modal","modal","modalContent","_ref$subtitle","_ref$onClose","viewportHandler","innerHeight","visualViewport","offsetTop","isIOS","TOOLTIP_COLOR","_ref$saveTooltipText","_ref$onModalClose","renderDefaultSaveButton","wrapWithTooltip","useNoSuggestionsStyles","listStylePosition","object1","object2","compareObjectProperty","element1","element2","array2","first","second","externalFormRef","setDisabled","initialFormValues","setInitialFormValues","isGetMethod","handleFormChange","currentFormValues","isUnchangedForm","compareObjects","_formRef$current","emojiBorder","_ref$reactions","onAdd","_ref$permapage","_useTheme","isPickerOpen","setIsPickerOpen","PickerHorizontalPosition","LEFT","PickerVerticalPosition","BOTTOM","pickerPosition","setPickerPosition","hoverLabel","enterDelay","hasCurrentUserSelected","_window$visualViewpor","x","y","_ref3$width","_ref3$height","RIGHT","TOP","updatePickerPosition","clientX","clientY","EmojiPicker","onEmojiSelect","isFullWidth","_picker","isTopHalf","isRightHalf","_ref4$pickerPosition","_ref4$isFullWidth","_ref4$permapage","dynamicWidth","fn","userNames","_ref$initialReactions","_ref$onAddReaction","_ref$onRemoveReaction","setReactions","trackAddReaction","isUnique","selfReaction","trackRemoveReaction","useRemoveReactionEvent","sortedReactions","handleReaction","reactionName","_previousReaction$use","previousReaction","isNewReaction","isAdd","updatedReaction","newReactions","filterObject","EmojiCounter","textExceedsLimit","_this$props","toggleReadMore","showingAll","getReadMoreParts","teaserText","remainingText","remainingWordsArray","teaserWordsArray","pop","getText","_this$getReadMorePart","hiddenText","visibleText","getActionButton","_this$props2","showMoreText","showLessText","readMoreButton","seeMoreLink","_this$props3","componentDidUpdate","prevProps","snapshot","_this$props4","_this$props5","textToDisplay","actionButton","ckWidgetSelectionHandlerReadOnly","embedMediaFix","buildEditorConfiguration","toolbars","autosave","save","getData","cloudServices","tokenUrl","uploadUrl","plugins","Heading","Autosave","TableToolbar","TableProperties","TableCellProperties","BlockQuote","Bold","CloudServicesConfig","EasyImage","Essentials","Font","Image","ImageUpload","Indent","Italic","MediaEmbed","Paragraph","PasteFromOffice","PendingActions","Strikethrough","TextTransformation","TodoList","Underline","shouldNotGroupWhenFull","toolbar","table","contentToolbar","editorInstance","CKEditor","ClassicEditor","onReady","willEditorRestart","ui","view","remove","handleCloseButtonClick","displayRSVP","AddPlusOneButton","seeMoreOrLessButton","ellipsisText","_ref$showMoreText","_ref$showLessText","_ref$readMoreCharacte","truncateText","seeingMore","setSeeingMore","truncatedText","setTruncatedText","collapsedSize","descriptionState","shareStay","_mainContent","_sideBarContent","hideSideBarBorder","lowerDiv","lowerFooter","linkTag","bottomText","currentYear","CoverPhotoHeight","_headerCover","headerBox","withCoverPhotoOnly","coverPhotoHeight","headerCover","tripCoverPhotos","headerBackground","headerForeground","headerWithBackgroundCoverPhoto","big","backgroundPosition","headerWithCoverPhotoContainer","headerWithCoverPhoto","backgroundRepeat","buttonsOuterDiv","Mobile","Desktop","HeaderBar","TripName","_btnWidth","rootMobile","btnWidth","isFullWidthBtn","hideLabel","broadcastRef","CampaignIcon","headerBar","logInButton","textIndent","_ref$tripUpdatesNum","_ref$broadcastNum","_ref$hideMyTripsButto","_ref$isTripUpdatesHid","TripUpdatesButton","IntercomButton","NavBarMenu","setRef","iconButtonRef","hoverState","_ref$hoverState","_ref$tooltipText","matchMedia","intercomSettings","custom_launcher_selector","NotificationsIcon","_ref3$collapseOnMobil","_ref3$isPlanner","accountCopy","avatarButton","menuAnchorEl","setMenuAnchorEl","isLargerScreen","disableScrollLock","_rootMobile","_ref5$collapseOnMobil","_ref5$isPlanner","PersonAddSharpIcon","textSkeleton","screenSize","Card","desktop","mobile","animation","_ref$itemLength","SkeletonCard","standardInfo","renderIcon","SuccessIcon","WarningIcon","SvgIcon","viewBox","cx","cy","r","fillRule","clipRule","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","points","rx","numberBox","select","hideSelect","showSelect","RemoveIcon","selectOptions","switchBase","thumb","transitions","create","focusVisible","focusVisibleClassName","tabLabel","customType","TimeAgo","addDefaultLocale","en","addLabels","now","past","minute","one","hour","week","customStyle","CustomTooltip","verboseDate","dateTime","local","ReactTimeAgo","locale","timeStyle","formatVerboseDate","toLocaleString","dateStyle","hour12","wrapperComponent","todo","_tooltip","travelersListHeight","TRAVELERS_PER_PAGE","paginationCaption","paginationCount","paginationSpacer","paginationToolbar","noSsr","sortedTravelers","formattedVerticalType","setPage","adjustTravelersListHeight","verticalViewed","visibility","array","paginatedTravelers","TravelerRow","TablePagination","displayedRows","spacer","onPageChange","newPage","rowsPerPage","rowsPerPageOptions","labelDisplayedRows","ActionsComponent","TablePaginationActions","createStyles","maxPageCount","missingVotes","titleizedVerticalType","addCursor","isVertical","Horizontal","_ref$onClick","OpenInNewIcon","_header","_ref2$withMobilePaddi","_ref2$viewingShared","SmallAvatar","checkCircleIcon","votesLeft","uncheckedIcon","_ref$rankings","rankingsCopy","rankingsSlice","actualRankings","vote","votesLeftCount","votesLeftText","RadioButtonUncheckedIcon","dialogWrapper","circleHolder","incompleteCircle","completeCircle","_ref$voteCompleted","totalCircles","completedCircles","incompletedCircles","displayCircles","rankingVotes","primaryTextColor","primaryColor","createTheme","h6","components","MuiCssBaseline","styleOverrides","MuiInputBase","WebkitTextFillColor","WebkitOpacity","MuiTypography","variants","_navButton","grid","navItem","navButton","navButtonCurrent","navButtonDisabled","sticky","stickyTop","Item","activeItemRef","navBarRef","contentPosition","AC","BREAKFAST_INCLUDED","DRYER","EVENTS_ALLOWED","FRONTDESK_24_HOUR","INTERNET","MICROWAVE","POOL","TV","WASHER","AIRPORT_TRANSPORTATION","ARCADE","BAR","BARBECUE","CHILDREN_WELCOME","CRIB","EXTRA_BED","FIREPLACE","FITNESS_EQUIPMENT","FREE_PARKING","HOT_TUB","HOUSEKEEPING","KITCHEN","LIVING_AREA","OUTDOOR_SPACE","PARKING_AVAILABLE","PETS_ALLOWED","RESTAURANT","ROOM_SERVICE","SMOKING_ALLOWED","SPA","CARBON_MONOXIDE_DETECTOR","ELEVATOR","SMOKE_DETECTOR","WHEELCHAIR_ACCESSIBLE","POPULAR_FILTERS_KEYS","FEATURES_FILTERS_KEYS","ACCESSIBILITY_AND_SAFETY_FILTERS_KEYS","elementScrollIntoViewPolyfill","requireFromComponentsFolder","require","ReactRailsUJS","parts","filename","shift","k","__esModule","_templateObject3","queryDocument","_query$name","definitions","statusToHuman","__jsr","NodeTypes","hasProp","hasOwnProperty","isBrowser","ModuleReferences","CJS","define","isSupported","AMD","_define","UMD","ESM","NIL","DTS","ParametersMissing","_Error","_len","_key","setPrototypeOf","_assertThisInitialized","getPrototypeOf","_wrapNativeSuper","UriEncoderSegmentRegex","ReservedOptions","UtilsClass","configuration","default_url_options","special_options_key","serializer","default_serializer","bind","is_nullable","is_object","is_array","is_not_nullable","encodeURIComponent","serialize","extract_options","number_of_params","args","last_el","looks_like_serialized_model","path_identifier","unwrap_path_identifier","to_param","toParam","is_callable","partition_parameters","required_params","default_options","call_arguments","_this$extract_options","use_all_parts","parts_options","keyword_parameters","query_parameters","is_reserved_option","part","build_route","route","absolute","_this2","_this$partition_param","missing_params","param","_construct","get_prefix","visit","trailing_slash","url_params","route_url","optional","GROUP","CAT","visit_cat","SYMBOL","visit_symbol","STAR","visit_globbing","LITERAL","SLASH","DOT","left_part","right_part","is_optional_node","encode_segment","build_path_spec","wildcard","encodeURI","parts_table","route_spec","_this3","_i","_Object$entries","_Object$entries$_i","_Object$entries$_i$","_len2","_key3","requiredParams","route_defaults","hostname","host","current_host","subdomain","protocol","current_protocol","port","current_port","_a","_b","configure","new_config","is_module_supported","ensure_module_supported","define_module","Utils","resendApiTripInvitePath","accA","accB","_accA$stayBookings","_accB$stayBookings","_wrapper","useAiSearchStyles","_wrapper2","_ref12$hasSearched","showSidebarMap","floatingMapButtonRef","useSERPMapClickEventRef","_window","_window2","trackLink","group","traits","snakeCase","localStorage","getItem","setItem","getMostVotedWithKind","collection","kind","maximum","getMaximumVotesByKind","mostPopular","panBy","filteredRefs","inst","CancelToken","cancel","cancelToken","Suggesting","Voting","Finalized","mobileText","desktopText","isFavoritesPage","isSearchResultPage","stayURL","isSharedFavorites","_filters$amenities","keyValuePairIfHasValue","propertyTypeCount","amenitiesSegmentProperties","elem","_useSegment","otherData","hasDates","datesSelected","expediaValues","vrboValues","isCurrentlyNormalSearch","has","listingSource","adultsCount","datesMatches","matchAll","creator","_step$value","widthOfElement","positionOfX","customProps","resolverRef","handleSetState","stateAction","Promise"],"sourceRoot":""}