{"version":3,"sources":["configs/pseudoEnums.js","utility/TranslatableText.js","assets/images/icons/event-type-icons/banquet.svg","assets/images/icons/event-type-icons/boardroom.svg","assets/images/icons/event-type-icons/reception.svg","assets/images/icons/event-type-icons/school-room.svg","assets/images/icons/event-type-icons/theatre.svg","assets/images/icons/event-type-icons/u-shaped.svg","configs/profileConfig.js","views/components/spinner/fallback-spinner.js","assets/images/logo/logo.svg","utility/Utils.js","redux/reducers/auth/index.js","redux/reducers/navbar/index.js","redux/reducers/layout/index.js","redux/reducers/profile/index.js","redux/reducers/pub/index.js","redux/reducers/directions/index.js","redux/reducers/toaster/index.js","redux/reducers/scheduledDepartures/index.js","redux/reducers/rootReducer.js","redux/storeConfig/store.js","utility/context/ThemeColors.js","@core/components/ripple-button/index.js","serviceWorker.js","index.js","configs/themeConfig.js","assets/images/icons/profile-type-pin-icons/icon_things-to-do.svg","assets/images/icons/profile-type-pin-icons/icon_food-and-beverage.svg","assets/images/icons/profile-type-pin-icons/icon_accommodation.svg","assets/images/icons/profile-type-pin-icons/icon_attractions.svg","assets/images/icons/profile-type-pin-icons/icon_infrastructure.svg","assets/images/icons/profile-type-pin-icons/icon_destination.svg","assets/images/icons/profile-type-pin-icons/icon_venues_bw.svg","assets/images/icons/profile-marker.svg","configs/profileTypeConfig.js","redux/reducers/media/index.js","redux/reducers/profileItem/index.js","redux/reducers/rates/index.js"],"names":["useFileUploader_PEnums","INIT","PENDING","FILE_UPLOADING","FILE_UPLOADED","DONE","ContactType_PEnum","Object","freeze","default","accounts","marketing","sales","content","contact","booking","frontDesk","socialMedia","ContactFieldType_PEnum","name","telephone","email","skype","link","twitter","website","youtube","facebook","instagram","pinterest","flickr","cellphone","alternativeTelephone","mobileBookingLink","frontDeskPhone","linkToSite","onlineReservationUrl","reservationTelephone","EntityType_PEnum","none","profile","profileItem","media","translationItem","directions","ProfileItemUnitOfArea_PEnum","squareMetres","squareFeet","ProfileItemUnitOfDistance_PEnum","metres","feet","FeatureType_PEnum","language","facility","ProfileItemType_PEnum","activity","apartment","cabana","cabin","carriage","dome","feature","unit","villa","restaurant","room","sleepingArrangement","suite","tent","attraction","spaces","option","itineraries","amenity","venue","stays","destinations","package","lodge","sleepingArrangementTypes","getSleepingArrTypeLabel","type","count","toLowerCase","concat","MediaType_PEnum","_MediaType_PEnum","image","video","embedVideo","virtualTour","panorama","documentation","splashImage","photosCoverImage","roomsCoverImage","videosCoverImage","activitiesCoverImage","panoramasCoverImage","destinationsCoverImage","accommodationsCoverImage","amenitiesCoverImage","attractionsCoverImage","documentsCoverImage","facilitiesCoverImage","spacesCoverImage","libraryCoverImage","mapCoverImage","restaurantsCoverImage","sliderImages","specialsCoverImage","travelGuidesCoverImage","capacityAndDimensions","whyStayHereCoverImage","whyVisitHereCoverImage","whyDoThisCoverImage","whyEatHereCoverImage","whyConferenceHereCoverImage","apartmentsCoverImage","cabanasCoverImage","cabinsCoverImage","carriagesCoverImage","domesCoverImage","unitsCoverImage","villasCoverImage","sleepingArrangementsCoverImage","suitesCoverImage","tentsCoverImage","_defineProperty","imageMediaTypes","videoMediaTypes","DocumentType_PEnum","covidNotice","factSheet","rates","specials","foodAndBeverage","brochure","conferencing","faqs","menu","activities","spa","weddings","otherGeneral","ProfileStatus_PEnum","InProgress","InReview","Disabled","Active","Declined","SSEProfileStatus_PEnum","ActivePublished","Enabled","Deleted","Upgrade","Downgrade","AddRemoveAccounts","ProfileTier_DB_PEnum","Core","Lite","Professional","ProfileTier_UI_PEnum","DocumentTypes_DB_PEnum","ProfileItemVisibility_DB_PEnum","publicAndTrade","tradeOnly","private","getVisibilityUiLabel","enumValue","AssociationType_DB_Enum","airport","campSite","destination","stay","dmoLink","component","DirectionType_PEnum","directionTo","directionFrom","ProfileType_PEnum","accommodation","venues","information","infrastructure","other","ProfileCategory_PEnum","mobileSafari","hotel","guestHouse","shortTermRental","motel","rail","boat","camp","vehicle","adventure","leisure","outdoor","sport","waterSport","african","asian","contemporary","deli","fastFoods","fineDining","fusion","grill","indian","local","portuguese","seafood","sushi","entertainment","historyCulture","nature","shopping","wildlife","meetAndGreet","person","internationalAirport","airField","harbour","trainStation","bedBreakfast","corporateFacility","expoCentre","guestHousesLodges","tentedOutdoorCamp","area","dmo","variant","country","getAllCategoriesExcept","enumList","arguments","length","undefined","ProfileCategoryList","values","forEach","indexOfEnum","findIndex","enn","splice","accommodationCategoryList","activityCategoryList","foodAndBeverageCategoryList","attractionAndLandMarksCategoryList","informationAndServicesCategoryList","infrastructureCategoryList","venueCategoryList","Selector_PEnum","_Selector_PEnum","qualityAssurance","numberOfRooms","maxGroupSize","numberOfSeats","numberOfTents","numberOfCabins","minChildAge","checkInTime","operatingHours","airportCode","requirements","skills","friendly","restaurantStyle","specialInterests","tourGuidance","participation","inclusion","facilities","roomPlan","tags","InclusionType_PEnum","optional","included","extra","PricingConfigType_PEnum","single","perPerson","perPersonSharing","perPersonPerNightSharing","perRoomSuite","perUnitVilla","age","pax","EmailSuggestionType_PEnum","pps","pp","AffiliateSuggestionEmails","CategorySuggestionEmails","TypeSuggestionEmails","DmoSuggestionEmails","StatusNotification_PEnum","None","Approved","Affiliate_PEnum","Nightsbridge","ResRequest","MtStatus_PEnum","Pending","SomeSucceeded","NoneSucceeded","AllSucceeded","ServiceDisabled","TranslationFieldType_PEnum","Name","Label","Description","ShortDescription","RichDescription","Text","Included","Direction","TravelInformationHealthAndMedicalInformation","TravelInformationSafetyNotices","TravelInformationElectricityStandardsAndPlugInformation","TravelInformationBankingAndCurrencyInformation","TravelInformationEntryRequirements","TravelInformationFoodDrinkAndCuisineAdvice","TravelInformationClimateAndWeather","TravelInformationInternetAvailability","TravelInformationTravelTransportAndGettingAround","TravelInformationClothingAndDressRecommendations","TranslatableText","getNewTranslatableTextItem","isNewId","langCode","existsInDb","stringValue","languageCode","fieldType","getNew","enText","this","parentObject","translations","machineTranslations","getStringValue","translatableText","isMachineTranslationsEnabled","_translatableText$tra","_translatableText$mac","manualTranslation","find","x","machineTranslation","isShowMachineTranslation","_translatableText$tra2","manual","hasTranslation","_translatableText$enT","_translatableText$enT2","trim","_x$stringValue","hasAnyTranslation","_translatableText$tra3","item","get","_translatableText$tra4","_translatableText$mac2","machine","getDefaultStringValue","update","setIsChanged","id","isChanged","translation","push","updateItem","translatableTextItem","setEnIsChanged","updateExistsInDb","getIds","_translatableText$enT3","ids","setAllExistsInDb","isExists","deleteTranslatableTextItem","isEmpty","_translatableText$enT4","_translatableText$tra5","isEnEmpty","_translatableText$enT5","clearStringValues","_translatableText$tra6","_translatableText$mac3","repair","_translatableText$tra7","removeBlankItems","filter","translatableTextHaveChanges","initialText","newText","translationIndex","isMtPending","isMtEnabled","isAlreadyPending","_translatableText$enT6","_translatableText$enT7","isMarkedForDeletion","toTranslatableTextItem","text","isMachineTranslation","profileId","profileItemId","mediaItemId","directionId","rateConditionId","rateSeasonId","toTranslationItem","toTranslatableText","translationItems","_this","enItem","map","toTranslationItems","_translatableText$enT8","_translatableText$enT9","_translatableText$tra8","_translatableText$mac4","_this2","init","Init","tierArray","description","price","tagsArray","label","value","profileCategoryType","_toConsumableArray","profileTypes","typesArray","cardId","profileEditorMenuItems","route","children","profileTypeRestrictedFrom","profileCategoryRestrictedFrom","restricted","profileType","otherCategory","icon","accommodationCategoryArray","_objectSpread","activityCategoryArray","restaurantCategoryArray","attractionsCategoryArray","informationServicesCategoryArray","infrastructureCategoryArray","destinationCategoryArray","venuesCategoryArray","otherCategoryArray","iBrochureLanguagesMap","code","isMachine","RoomConfiguration","MIN_IMAGES","MIN_IMAGE_MEGA_PIXELS","getMaxImages","profileTier","FACEBOOK","TWITTER","INSTAGRAM","PINTEREST","contactDetails","MARKETING","SALES","ACCOUNTS","inclusionTypes","select","getDefaultProfileItemType","profileItemTypes","GDSCodes","AMADEUS","GALILEO","PEGASUS","SABRE","TRAVELPORT","WORLDSPAN","gdsCodesProperties","amadeus","galileo","pegasus","sabre","travelport","worldspan","eventTypes","eventName","eventTypeIcon","banquetEventIcon","propertyName","boardroomEventIcon","resceptionEventIcon","schoolRoomEventIcon","theatreEventIcon","uShapedEventIcon","currencies","pricingStructures","key","ratePricingOptionGridSequences","sequence","conditionsOptions","title","CONFIG","CONSTS","LATITUDE","MIN","MAX","LONGITUDE","CHECK_MACHINE_TRANS_COMPLETE_MILLIS","coverImageLookupMap","mediaType","apartmentsCoverImag","optionCoverImage","staysCoverImage","venuesCoverImage","wizardStepId","AFFILIATE_STEP_NUMBER","TYPE_STEP_NUMBER","DESCRIPTION_STEP_NUMBER","LOCATION_STEP_NUMBER","DESTINATION_LINKING_STEP_NUMBER","FACILITIES_STEP_NUMBER","LANGUAGE_STEP_NUMBER","INFORMATION_STEP_NUMBER","IMAGE_STEP_NUMBER","FINALISE_STEP_NUMBER","filterFeaturesData","data","filterType","Array","isArray","restrictedTo","some","y","sort","a","b","localeCompare","i","setRateGridDisplaySettings","configItem","structureItem","configType","sequenceItem","fromValue","toValue","isPP","isPPS","gridSequence","isAnyMtLanguages","iBrochureLanguages","arr","z","SpinnerComponent","_jsx","className","_jsxs","isObjEmpty","obj","keys","formatDateUTCShort","date","Date","Intl","DateTimeFormat","year","month","day","hour","minute","second","format","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","formatDateYearShort","toLocaleString","minimumIntegerDigits","useGrouping","yy","toString","substr","GetProfileGridDate","dateString","currentDate","toDateString","days","getTime","message","isUserLoggedIn","localStorage","getItem","selectThemeColors","theme","colors","primary25","primary50","primary","neutral10","neutral20","neutral30","updateOrAddItem","existingItems","comparisonField","found","existingItem","sortObjectArray","array","sortBy","groupBy","sortObjectArrayDesc","firstLetterUpper","word","substring","toUpperCase","getWordCount","split","addPlural","pluralSuffix","slice","pluralise","checker","replaceAll","findString","replaceString","join","getWordCountMsg","inputText","maxWords","errorObject","diff","wordLabel","Math","abs","isError","logError","err","_err$response","console","error","response","getDefaultLandingRowsArray","rows","classColours","row","statusColour","floor","random","ratingColour","getSanitisedFullTextInput","searchText","terms","replace","getQueryStringId","loc","window","location","search","questionMarkPos","indexOf","equalsPos","cleanDraftToHtml","html","_html","sortObject","reduce","result","DegreeToRadian","angle","PI","haversineCalculation","lat1","lng1","lat2","lng2","dLat","dLng","sin","cos","atan2","sqrt","toTitleCase","sentence","txt","charAt","toPascalCase","toSentenceCase","c","getFileExtension","url","_url$split$0$split","_url$split$0$split$po","_url$split$0$split$po2","fileExtension","pop","openLink","_x","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","contentType","fileBytes","wrap","_context","prev","next","responseType","fileExtensionLower","axios","sent","Blob","URL","createObjectURL","open","t0","stop","apply","getMediaTypeDescriptor","isTitleCase","isPlural","descriptor","getMissingArrayElements","testArray","elementsArray","parseDirectionObject","direction","parsedInstructions","points","wayPoints","wayPointCount","leg","steps","step","instructions","path","wayPoint","wayPointString","lat","lng","parseWayPointObject","via_waypoints","getLanguageCodes","languages","removeObjectArrayElements","objectArray","removeElements","formatFileSize","fileSizeKb","toFixed","removeArrayElement","element","getNewSequenceNumber","collection","min","isValidUrl","e","convertDraftJsToHtml","draftJsData","getCurrentContent","draftToHtml","convertToRaw","getMegaPixels","mediaItem","width","height","getSelectedItemsFromList","listOfItems","previous","current","getTypeAndCategoryMapConfig","profileCategory","profileTypeMap","categoryOverride","getFeatureCategory","featuresSection","Set","category","getFeatureSubCategory","subCategory","updateAllArrayElements","fieldName","newValue","getSliderImages","mediaItems","nonDeletedMediaItems","mediaItemsImages","sliderMediaImages","getProfileCategoryDisplayName","categoryType","EMAIL_REGEX","checkEmailValid","test","firstLetterLower","getLanguageCodeList","profileLanguageList","languageCodeList","iBrochure","createAssociatedItem","associatedItem","associatedItems","isRequired","newAssociatedItem","associatedProfileId","latitude","pin","longitude","isPreferred","isPrivate","replaceAssociatedItem","associatedReplacing","getDocumentsEnumUiLabel","documentsEnum","getDestinationProfile","profileIds","toFloat","inputString","isOnChange","numDecimalPlaces","newVal","parseFloat","processDoneUpload","status","actionToTake","filesDone","uploadedMediaItem","blobRelativePath","blobUrl","updateUploadMedia","getDmoLinkProfile","_profile$associatedIt","associated","getDmoLinkProfileId","_getDmoLinkProfile","getNotMarkedForDeletion","items","concatArraysIfNotNull","_ref2","_len","arrays","_key","getTrackingMediaId","documentType","stringIsNullUndefinedOrEmpty","str","isWetuOwned","_row$profileAccounts","_row$profileAccounts2","profileAccounts","operatorId","groupByFieldName","accumulator","currentValue","initialState","userData","authReducer","_objectSpread2","state","action","storageTokenKeyName","storageRefreshTokenKeyName","suggestions","bookmarks","query","navbarReducer","val","objectToUpdate","isBookmarked","bookmarkIndex","isRTL","themeConfig","layout","menuCollapsed","JSON","parse","isCollapsed","initialMenuCollapsed","menuHidden","isHidden","contentWidth","layoutReducer","setItem","isWetuUser","isUserAuthenticated","adminUpdatedProfile","associations","airports","suggestedDestinations","profilesInReview","profileSummaries","features","featuresData","property","rooms","services","tourOperatorTourAgentGuidance","suitableFor","weatherRequirement","cuisine","ambiance","venueEquipment","_profile","accountIds","isDistributed","isEnabled","shortDescription","richDescription","travelInformation","languageGuide","drivingLatitude","drivingLongitude","streetAddress","postalCode","city","province","suburb","contacts","checkinTimeFrom","checkinTimeTo","checkoutTimeFrom","roomCount","tentCount","cabinCount","seatCount","accommodationsCount","restaurantsCount","loungesCount","terminalsCount","shopsCount","isOpenPublicHolidays","isByAppointment","polygon","tier","includeToolbarWithBreadcrumb","profileGrid","currentPage","rowsPerPage","sortColumn","sortColumnName","sortDirection","totalPage","tierFilter","typeFilter","statusFilter","recordCount","noRecords","currentOperatorId","currentUserName","preventReload","profileEditor","profileEditorImage","profileSliderImages","publishedProfile","deletedProfile","deletedProfileId","linkedScheduledDepartures","operators","statusNotification","isSavingButtonId","isSaving","hasUpgraded","profileReducer","_action$data$profileS","isCreated","isValidated","isPublished","dateCreated","copyProfileSummaries","_","cloneDeep","unshift","gridChanges","userName","newProfileGrid","copyExistingItems","responseProfile","contentRating","contactsCopy","assign","field","minimumChildAge","availableAccommodationOnsite","availableAccommodationOffsite","starRating","qualityAssuranceBody","alternativeRating","capacity","dimensions","iataCode","icaoCode","infrastructureSize","resetObject","isPublishing","wizardSavePageNum","saveTrigger","loadTrigger","isLoading","redirectUrl","officialLanguages","population","destinationSize","destinationCurrency","aliases","links","affiliate","operatingHoursByDay","availableLanguages","suggestionsFor","suggestionsToClear","enabledDisabledProfile","_action$data","list","upgradedDowngradedProfile","summaries","profileSummary","p","summary","existsInCache","profileList","matchingProfile","profileSummariesCopy","errorsCopy","profileEditorErrors","hasOwnProperty","maximumZoom","minimumZoom","zoomTo","showZoom","affiliateCode","principalId","summariesCopy","remove","operatorProfileSummary","profileEditorUrl","isNightsbridgeData","hasErrorGettingNightsbridgeData","profileSummaryCopy","profileToUpdate","_profileToUpdate$prof","accountsToAdd","accountsToRemove","profileSummaryItemsCopy","profileItemToUpdate","profileRelationship","isTrustedRelationship","profileRating","numItineraries","relationshipContacts","isReviewRequired","validationSucceeded","isInReview","pubReducer","newData","existingContacts","itemIndex","existingContactArray","includes","isSubmitting","currentEditorLanguageCodes","directionReducer","show","showSuccessTick","showError","autoHide","autoHideDelay","customCss","customHeader","timeoutId","toasterReducer","clearTimeout","scheduledDepartures","departuresItineraries","departIndex","at","linked","rootReducer","combineReducers","auth","navbar","profileItemReducer","mediaReducer","ratesReducer","middleware","thunk","createDebounce","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","ThemeColors","createContext","ThemeContext","_useState","useState","_useState2","_slicedToArray","setColors","useEffect","getHex","color","getComputedStyle","document","body","getPropertyValue","light","main","secondary","success","danger","warning","info","dark","Provider","Button","Ripple","onClick","rest","_objectWithoutProperties","_excluded","mounted","setMounted","_useState3","_useState4","isRippling","setIsRippling","_useState5","_useState6","coords","setCoords","setTimeout","classnames","rect","target","getBoundingClientRect","clientX","left","clientY","top","style","Boolean","hostname","match","LazyApp","lazy","ReactDOM","render","Suspense","fallback","Spinner","ToastContainer","newestOnTop","getElementById","navigator","serviceWorker","ready","then","registration","unregister","app","appName","appLogoImage","require","skin","routerTransition","backgroundColor","footer","customizer","scrollTop","_profileTypeMap","descHeaderType","imageHeaderType","profileTypeCategories","profileLocationIcon","accommodationPin","descriptionExample","profileItems","navText","navId","typeLabelLower","titleOverlay","showSelectors","languageSpoken","coverImageName","coverImageMediaType","_categoryOverride","informationHeader","informationHeadingSubText","imageHeaderSubText","phoneLabel","phoneErrorMessage","locationMap","_Fragment","excludePinAndAddress","facilityLabel","accommodationFacilityLabel","languageHeadingStep","activityPin","profileItemHeader","restaurantPin","titleDescription","_ProfileType_PEnum$at","attractionsPin","_ProfileType_PEnum$in","descSubText","infrastructurePin","typeLabelButton","numberOfAccommodations","numberOfRestaurants","numberOfLounges","numberOfTerminals","numberOfShops","altPhoneLabel","destinationPin","demographic","_categoryOverride2","header","venuePin","sleepingArrangements","venueDetails","profileMarker","typeLabelPlural","mediaItemSummary","documentSummaries","currentIndex","isMediaLoaded","bannerDestinationImages","showEditImageOverlaySaveToast","fileUploadProgress","sasToken","getDefaultMediaItem","blobId","now","parentId","parentEntityType","localUrl","embedUrl","azureContainerName","credit","fileName","fileType","hasFileSizeWarning","originalFileName","hasAcceptedUsagePolicy","visibility","uploadErrorMessage","lastModified","isRoomPlanImage","autoTags","manualTags","thumbnailUrl","thumbnailBlobRelativePath","cloneAddMediaItems","existingMediaItems","newMediaItems","updateMediaIndex","cloneUpdateMediaItems","deletedItem","mediaIndex","mediaItemsSummary","remaining","oldList","listChanges","newList","changeItem","getUpdatedListAfterDb","mediaId","filePercent","fullProfileItems","profileItemOverviews","getDefaultProfileItem","profileItemType","configuration","entityType","isEditing","size","units","inclusionType","deleteIndex","copy","selectedProfileItem","rateConditions","ratePricings","rateSeasons","currencyCode","ratePricingConfigurations","hideNettRate","nettRate","rateExtraFeeItems","onlineRatesUrls","conditionsDraftJS","getNewRatePricingConfig","parentProfileItemId","profileRateId","discountedValue","isPricingFrom","isSelected","isDummyElement","getNewRateExtraFeeItem","itemName","getNewRatePricing","ratePricingConfigurationId","currentConditions","condition","conditionInCurrentList","conditionsPayload","stateConditionsCopy","season","dateRanges","seasonsClone","ratePricingsClone","rate","RateSeasonId","pricingOptions","currentConditionsDraftJS","defaultConditions"],"mappings":"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","file":"static/js/main.453263f2.chunk.js","sourcesContent":["export const useFileUploader_PEnums = {\n INIT:'INIT',\n PENDING:'PENDING',\n FILE_UPLOADING: 'FILE_UPLOADING',\n FILE_UPLOADED: 'FILE_UPLOADED',\n DONE: 'DONE'\n }\n\nexport const ContactType_PEnum = Object.freeze({\n default: 1,\n accounts: 2,\n marketing: 3,\n sales: 4,\n content: 5,\n contact: 6,\n booking: 7,\n frontDesk: 8,\n socialMedia: 9\n})\n\nexport const ContactFieldType_PEnum = Object.freeze({\n name: 1,\n telephone: 2,\n email: 3,\n skype: 4,\n link: 5,\n twitter: 6,\n website: 7,\n youtube: 8,\n facebook: 9,\n instagram: 10,\n pinterest: 11,\n flickr: 12,\n cellphone: 13,\n alternativeTelephone: 14,\n mobileBookingLink: 15,\n frontDeskPhone: 16,\n linkToSite: 17,\n onlineReservationUrl: 18,\n reservationTelephone: 19\n})\n\nexport const EntityType_PEnum = {\n //These need to be upper-case to match the casing on the API/DB.\n none: 'None',\n profile: 'Profile',\n profileItem: 'ProfileItem',\n media: 'Media',\n translationItem: 'TranslationItem',\n directions: 'Directions'\n}\nexport const ProfileItemUnitOfArea_PEnum = {\n squareMetres: 'SquareMetres',\n squareFeet: 'SquareFeet'\n}\n\nexport const ProfileItemUnitOfDistance_PEnum = {\n metres: 'Metres',\n feet: 'Feet'\n}\n\nexport const FeatureType_PEnum = {\n none: \"None\",\n language: \"Language\",\n facility: \"Facility\"\n}\n\nexport const ProfileFormPage_PEnum = {\n none: \"\",\n basicInfo: \"basicInfo\",\n fastFacts: \"fastFacts\",\n media: \"media\",\n sleepingArrangements: \"sleepingArrangements\",\n facilities: \"facilities\",\n contactDetails: \"contactDetails\",\n location: \"location\",\n addedServices: \"addedServices\",\n rates: \"rates\",\n documents: \"documents\",\n integrations: \"integrations\"\n}\n\nexport const ProfileItemType_PEnum = {\n none: 'None',\n activity: 'Activity',\n apartment: 'Apartment',\n cabana: 'Cabana',\n cabin: 'Cabin',\n carriage: 'Carriage',\n dome: 'Dome',\n feature: 'Feature',\n unit: 'Unit',\n villa: 'Villa',\n restaurant: 'Restaurant',\n room: 'Room',\n sleepingArrangement: 'SleepingArrangement',\n suite: 'Suite',\n tent: 'Tent',\n attraction: 'Attraction',\n spaces: 'Spaces',\n option: 'Option',\n itineraries: 'Itineraries',\n amenity:'Amenity',\n venue: 'Venue',\n stays: 'Stays',\n destinations: 'Destinations',\n package: 'Package',\n lodge: 'Lodge'\n}\n\n export const sleepingArrangementTypes = [\n ProfileItemType_PEnum.room, ProfileItemType_PEnum.sleepingArrangement, ProfileItemType_PEnum.suite, ProfileItemType_PEnum.tent, \n ProfileItemType_PEnum.unit, ProfileItemType_PEnum.villa, ProfileItemType_PEnum.lodge, ProfileItemType_PEnum.dome, ProfileItemType_PEnum.carriage, \n ProfileItemType_PEnum.cabin, ProfileItemType_PEnum.cabana, ProfileItemType_PEnum.apartment\n ]\n\n export const getSleepingArrTypeLabel = (type, count) => {\n return type === ProfileItemType_PEnum.sleepingArrangement ? count === 1 ? 'sleeping arrangement' : 'sleeping arrangements' :\n type === ProfileItemType_PEnum.activity ? count === 1 ? 'activity' : 'activities' :\n type === ProfileItemType_PEnum.spaces ? count === 1 ? 'spaces' : 'spaces' :\n type === ProfileItemType_PEnum.spaces ? count === 1 ? 'space' : 'spaces' :\n type === ProfileItemType_PEnum.itineraries ? count === 1 ? 'itinerary' : 'itineraries' :\n type === ProfileItemType_PEnum.amenity ? count === 1 ? 'amenity' : 'amenities' :\n type === ProfileItemType_PEnum.stays ? count === 1 ? 'stay' : 'stays' :\n type === ProfileItemType_PEnum.destinations ? count === 1 ? 'destination' : 'destinations' :\n type === ProfileItemType_PEnum.destinations ? count === 1 ? 'destination' : 'destinations' :\n count === 1 ? type.toLowerCase() : `${type.toLowerCase()}s`\n }\n \n export const MediaType_PEnum = {\n none: 'None',\n image: 'Image',\n video: 'Video',\n embedVideo: 'EmbedVideo',\n virtualTour: 'VirtualTour',\n panorama: 'Panorama',\n documentation: 'Documentation',\n splashImage: 'SplashImage',\n photosCoverImage: 'PhotosCoverImage',\n roomsCoverImage: 'RoomsCoverImage',\n videosCoverImage: 'VideosCoverImage',\n activitiesCoverImage: 'ActivitiesCoverImage',\n panoramasCoverImage: 'PanoramasCoverImage',\n destinationsCoverImage: 'DestinationsCoverImage',\n accommodationsCoverImage: 'AccommodationsCoverImage',\n amenitiesCoverImage: 'AmenitiesCoverImage',\n attractionsCoverImage: 'AttractionsCoverImage',\n documentsCoverImage: 'DocumentsCoverImage',\n facilitiesCoverImage: 'FacilitiesCoverImage',\n spacesCoverImage: 'SpacesCoverImage',\n libraryCoverImage: 'LibraryCoverImage',\n mapCoverImage: 'MapCoverImage',\n restaurantsCoverImage: 'RestaurantsCoverImage',\n sliderImages: 'SliderImages',\n specialsCoverImage: 'SpecialsCoverImage',\n travelGuidesCoverImage: 'TravelGuidesCoverImage',\n capacityAndDimensions: 'CapacityAndDimensions',\n whyStayHereCoverImage: 'WhyStayHereCoverImage',\n whyVisitHereCoverImage: 'WhyVisitHereCoverImage',\n whyDoThisCoverImage: 'WhyDoThisCoverImage',\n whyEatHereCoverImage: 'WhyEatHereCoverImage',\n whyConferenceHereCoverImage: 'WhyConferenceHereCoverImage',\n apartmentsCoverImage: 'ApartmentsCoverImage',\n cabanasCoverImage: 'CabanasCoverImage',\n cabinsCoverImage: 'CabinsCoverImage',\n carriagesCoverImage: 'CarriagesCoverImage',\n domesCoverImage: 'DomesCoverImage',\n unitsCoverImage: 'UnitsCoverImage',\n villasCoverImage: 'VillasCoverImage',\n sleepingArrangementsCoverImage: 'SleepingArrangementsCoverImage',\n suitesCoverImage: 'SuitesCoverImage',\n tentsCoverImage: 'TentsCoverImage',\n amenitiesCoverImage: 'AmenitiesCoverImage',\n venuesCoverImage: 'VenuesCoverImage',\n optionCoverImage: 'OptionCoverImage',\n staysCoverImage: \"StaysCoverImage\",\n bannerImage: \"BannerImage\"\n}\n\nexport const imageMediaTypes = [\n MediaType_PEnum.image,\n MediaType_PEnum.splashImage,\n MediaType_PEnum.photosCoverImage,\n MediaType_PEnum.roomsCoverImage,\n MediaType_PEnum.videosCoverImage,\n MediaType_PEnum.activitiesCoverImage,\n MediaType_PEnum.panoramasCoverImage,\n MediaType_PEnum.destinationsCoverImage,\n MediaType_PEnum.accommodationsCoverImage,\n MediaType_PEnum.amenitiesCoverImage,\n MediaType_PEnum.attractionsCoverImage,\n MediaType_PEnum.documentsCoverImage,\n MediaType_PEnum.facilitiesCoverImage,\n MediaType_PEnum.libraryCoverImage,\n MediaType_PEnum.mapCoverImage,\n MediaType_PEnum.restaurantsCoverImage,\n MediaType_PEnum.sliderImages,\n MediaType_PEnum.specialsCoverImage,\n MediaType_PEnum.travelGuidesCoverImage,\n MediaType_PEnum.whyStayHereCoverImage,\n MediaType_PEnum.apartmentsCoverImage,\n MediaType_PEnum.cabanasCoverImage,\n MediaType_PEnum.cabinsCoverImage,\n MediaType_PEnum.carriagesCoverImage,\n MediaType_PEnum.domesCoverImage,\n MediaType_PEnum.unitsCoverImage,\n MediaType_PEnum.villasCoverImage,\n MediaType_PEnum.sleepingArrangementsCoverImage,\n MediaType_PEnum.suitesCoverImage,\n MediaType_PEnum.tentsCoverImage\n]\n\nexport const videoMediaTypes = [\n MediaType_PEnum.video,\n MediaType_PEnum.embedVideo\n]\n\nexport const DocumentType_PEnum = {\n none: 'None',\n covidNotice: 'CovidNotice',\n factSheet: 'FactSheet',\n rates: 'Rates',\n specials: 'Specials',\n foodAndBeverage: 'FoodAndBeverage',\n brochure: 'Brochure',\n conferencing: 'Conferencing',\n directions: 'Directions',\n faqs: 'Faqs',\n menu: 'Menu',\n activities: 'Activities',\n spa: 'Spa',\n weddings: 'Weddings',\n otherGeneral: 'OtherGeneral'\n}\n\nexport const ProfileStatus_PEnum = Object.freeze({\n //This must match Core\\Enums\\ProfileStatusEnum in the API.\n InProgress: 'InProgress',\n InReview: 'InReview',\n Disabled: 'Disabled',\n Active: 'Active',\n Declined: 'Declined'\n})\n\nexport const SSEProfileStatus_PEnum = Object.freeze({\n //This must match Core\\Enums\\ProfileEventUpdateStatusEnum in the API.\n ActivePublished: 'ActivePublished',\n Disabled: 'Disabled',\n Enabled: 'Enabled',\n Declined: 'Declined',\n Deleted: 'Delete',\n Upgrade: 'Upgrade',\n Downgrade: 'Downgrade',\n AddRemoveAccounts: 'AddRemoveAccounts'\n})\n\nexport const ProfileTier_DB_PEnum = {\n //Enum for profile tier setting in DB. NOT to be used for UI labels.\n Core: 'Core',\n Lite: 'Lite',\n Professional: 'Professional'\n}\n\nexport const ProfileTier_UI_PEnum = {\n //Enum for profile tier UI labels. NOT to be used for data saving/retrieval.\n //Seperate enum to because we may want to make aesthetic tweaks to the UI label without it affecting data retrieval.\n Core: 'Core',\n Professional: 'Professional'\n}\n\nexport const DocumentTypes_DB_PEnum = {\n covidNotice: 'CovidNotice',\n factSheet: 'FactSheet',\n rates: 'Rates',\n specials: 'Specials',\n foodAndBeverage: 'FoodAndBeverage',\n brochure: 'Brochure',\n conferencing: 'Conferencing',\n directions: 'Directions',\n faqs: 'Faqs',\n menu: 'Menu',\n activities: 'Activities',\n spa: 'Spa',\n weddings: 'Weddings',\n otherGeneral: 'OtherGeneral'\n}\n\nexport const ProfileItemVisibility_DB_PEnum = {\n publicAndTrade: 'PublicAndTrade',\n tradeOnly: 'TradeOnly',\n private: 'Private'\n}\n\nexport const getVisibilityUiLabel = (enumValue) => {\n return enumValue === ProfileItemVisibility_DB_PEnum.publicAndTrade ?\n 'Public and trade' :\n enumValue === ProfileItemVisibility_DB_PEnum.tradeOnly ?\n 'Trade only' :\n 'Private'\n}\n\nexport const AssociationType_DB_Enum = {\n none: 'None',\n airport: 'Airport',\n campSite: 'CampSite',\n destination: 'Destination',\n activity: 'Activity',\n stay: 'Stay',\n dmoLink: 'DmoLink',\n component: 'Component'\n}\n\nexport const DirectionType_PEnum = {\n //Enum to differentiate between directions to property and from property.\n directionTo: 'directionTo',\n directionFrom: 'directionFrom'\n}\n\nexport const ProfileType_PEnum = {\n accommodation: 'Accommodation',\n activity: 'Activity',\n venues: 'Venues',\n restaurant: 'Restaurant',\n destination: 'Destination',\n attraction: 'Attraction',\n information: 'Information',\n infrastructure: 'Infrastructure',\n other:'Other'\n}\n\nexport const ProfileCategory_PEnum = {\n mobileSafari: \"MobileSafari\",\n hotel: \"Hotel\",\n guestHouse: \"GuestHouse\",\n shortTermRental: \"ShortTermRental\",\n villa: \"Villa\",\n lodge: \"Lodge\",\n motel: \"Motel\",\n rail: \"Rail\",\n boat: \"Boat\",\n camp: \"Camp\",\n vehicle: \"Vehicle\",\n adventure: \"Adventure\",\n leisure: \"Leisure\",\n outdoor: \"Outdoor\",\n sport: \"Sport\",\n waterSport: \"Watersport\",\n african: \"African\",\n asian: \"Asian\",\n contemporary: \"Contemporary\",\n deli: \"Deli\",\n fastFoods: \"FastFoods\",\n fineDining: \"FineDining\",\n fusion: \"Fusion\",\n grill: \"Grill\",\n indian: \"Indian\",\n local: \"Local\",\n portuguese: \"Portuguese\",\n seafood: \"Seafood\",\n sushi: \"Sushi\",\n entertainment: \"Entertainment\",\n historyCulture: \"HistoryCulture\",\n nature: \"Nature\",\n shopping: \"Shopping\",\n wildlife: \"Wildlife\",\n information: \"Information\",\n meetAndGreet: \"MeetAndGreet\",\n person: \"Person\",\n internationalAirport: \"InternationalAirport\",\n airField: \"Airfield\",\n airport: \"Airport\",\n harbour: \"Harbour\",\n trainStation: \"TrainStation\",\n bedBreakfast: \"BedBreakfast\",\n corporateFacility: \"CorporateFacility\",\n expoCentre: \"ExpoCentre\",\n guestHousesLodges: \"GuestHousesLodges\",\n tentedOutdoorCamp: \"TentedOutdoorCamp\",\n area: \"Area\",\n dmo: \"DMO\",\n other: \"Other\",\n variant: \"Variant\",\n country: \"Country\"\n}\n\nexport const getAllCategoriesExcept = (enumList = []) => {\n const ProfileCategoryList = Object.values(ProfileCategory_PEnum)\n enumList.forEach(enumValue => {\n const indexOfEnum = ProfileCategoryList.findIndex((enn) => enn === enumValue)\n ProfileCategoryList.splice(indexOfEnum, 1)\n })\n return ProfileCategoryList\n}\n\nexport const accommodationCategoryList = [\n ProfileCategory_PEnum.hotel, ProfileCategory_PEnum.guestHouse, ProfileCategory_PEnum.shortTermRental, ProfileCategory_PEnum.villa,\n ProfileCategory_PEnum.lodge, ProfileCategory_PEnum.motel, ProfileCategory_PEnum.camp\n]\n\nexport const activityCategoryList = [\n ProfileCategory_PEnum.adventure, ProfileCategory_PEnum.leisure, ProfileCategory_PEnum.outdoor,\n ProfileCategory_PEnum.sport, ProfileCategory_PEnum.waterSport\n]\n\nexport const foodAndBeverageCategoryList = [\n ProfileCategory_PEnum.african, ProfileCategory_PEnum.asian, ProfileCategory_PEnum.contemporary, ProfileCategory_PEnum.deli, ProfileCategory_PEnum.fastFoods,\n ProfileCategory_PEnum.fineDining, ProfileCategory_PEnum.fusion, ProfileCategory_PEnum.grill, ProfileCategory_PEnum.indian, ProfileCategory_PEnum.local,\n ProfileCategory_PEnum.portuguese, ProfileCategory_PEnum.seafood, ProfileCategory_PEnum.sushi\n]\n\nexport const attractionAndLandMarksCategoryList = [\n ProfileCategory_PEnum.entertainment, ProfileCategory_PEnum.historyCulture, ProfileCategory_PEnum.leisure, ProfileCategory_PEnum.nature,\n ProfileCategory_PEnum.shopping, ProfileCategory_PEnum.wildlife \n]\n\nexport const informationAndServicesCategoryList = [ProfileCategory_PEnum.information, ProfileCategory_PEnum.person, ProfileCategory_PEnum.meetAndGreet]\n\nexport const infrastructureCategoryList = [\n ProfileCategory_PEnum.internationalAirport, ProfileCategory_PEnum.airField, ProfileCategory_PEnum.airport,\n ProfileCategory_PEnum.harbour, ProfileCategory_PEnum.trainStation\n]\n\nexport const venueCategoryList = [\n ProfileCategory_PEnum.bedBreakfast, ProfileCategory_PEnum.corporateFacility, ProfileCategory_PEnum.expoCentre,\n ProfileCategory_PEnum.guestHousesLodges, ProfileCategory_PEnum.tentedOutdoorCamp\n]\n \nexport const Selector_PEnum = {\n qualityAssurance: 'qualityAssurance',\n numberOfRooms: 'numberOfRooms',\n maxGroupSize: 'maxGroupSize',\n numberOfSeats: 'numberOfSeats',\n numberOfTents: 'numberOfTents',\n numberOfCabins:'numberOfCabins',\n minChildAge: 'minChildAge',\n checkInTime: 'checkInTime',\n operatingHours: 'operatingHours',\n airportCode: 'airportCode',\n requirements: 'requirements',\n skills: 'skills',\n friendly: 'friendly',\n restaurantStyle: 'restaurantStyle',\n specialInterests: 'specialInterests',\n tourGuidance: 'tourGuidance',\n participation: 'participation',\n sleepingArrangement: 'sleepingArrangement',\n inclusion: 'inclusion',\n facilities: 'facilities',\n roomPlan:'roomPlan',\n tags: 'tags',\n capacityAndDimensions:'capacityAndDimensions',\n qualityAssurance: 'qualityAssurance',\n numberOfAccommodations: 'numberOfAccommodations',\n numberOfRestaurants: 'numberOfRestaurants',\n numberOfLounges: 'numberOfLounges',\n numberOfTerminals: 'numberOfTerminals',\n numberOfShops: 'numberOfShops',\n languageSpoken: 'languageSpoken',\n languageGuide: 'languageGuide',\n demographic: 'demographic',\n venueDetails: 'venueDetails',\n venueEquipment: 'venueEquipment',\n availableAccommodationOnsite: 'availableAccommodationOnsite',\n availableAccommodationOffsite: 'availableAccommodationOffsite'\n}\n\nexport const InclusionType_PEnum = Object.freeze({\n none: 'None',\n optional: 'Optional',\n included: 'Included', \n extra: 'Extra'\n})\n\nexport const PricingConfigType_PEnum = Object.freeze({\n //Corresponds to API enum PricingConfigType.\n none: 'None',\n single: 'Single',\n perPerson: 'PerPerson',\n perPersonSharing: 'PerPersonSharing',\n perPersonPerNightSharing: 'PerPersonPerNightSharing',\n perRoomSuite: 'PerRoomSuite',\n perUnitVilla: 'PerUnitVilla',\n age: 'Age',\n pax: 'Pax'\n})\n\nexport const PricingPax_PEnum = Object.freeze({\n pps: 'PPS',\n pp: 'PP'\n})\n\nexport const EmailSuggestionType_PEnum = Object.freeze({\n AffiliateSuggestionEmails: 'AffiliateSuggestionEmails',\n CategorySuggestionEmails: 'CategorySuggestionEmails',\n TypeSuggestionEmails: 'TypeSuggestionEmails',\n DmoSuggestionEmails: 'DmoSuggestionEmails'\n})\n\nexport const StatusNotification_PEnum = Object.freeze({\n //This must match Core\\Enums\\StatusNotification in the API.\n None: 'None',\n Approved: 'Approved',\n Declined: 'Declined'\n})\n\nexport const Affiliate_PEnum = Object.freeze({\n //This must match Core\\Enums\\BookingAffiliateEnum in the API.\n None: 'None',\n Nightsbridge: 'Nightsbridge',\n ResRequest: 'ResRequest'\n})\n\nexport const MtStatus_PEnum = Object.freeze({\n //This must match Core\\Enums\\TranslationsInProgressStatusEnum in the API.\n Pending: 'Pending',\n SomeSucceeded: 'SomeSucceeded',\n NoneSucceeded: 'NoneSucceeded',\n AllSucceeded: 'AllSucceeded',\n ServiceDisabled: 'ServiceDisabled' //Service can be disabled via EnableMachineTranslations in API appsettings.json - in case of serious error or malicious use.\n})\n\nexport const TranslationFieldType_PEnum = Object.freeze({\n //This must match Core\\Enums\\TranslationItemTypeEnum in the API.\n None: 'None',\n Name: 'Name',\n Label: 'Label',\n Description: 'Description',\n ShortDescription: 'ShortDescription',\n RichDescription: 'RichDescription',\n Text: 'Text',\n Included: 'Included',\n Direction : 'Direction',\n TravelInformationHealthAndMedicalInformation: 'TravelInformationHealthAndMedicalInformation',\n TravelInformationSafetyNotices: 'TravelInformationSafetyNotices',\n TravelInformationElectricityStandardsAndPlugInformation: 'TravelInformationElectricityStandardsAndPlugInformation',\n TravelInformationBankingAndCurrencyInformation: 'TravelInformationBankingAndCurrencyInformation',\n TravelInformationEntryRequirements: 'TravelInformationEntryRequirements',\n TravelInformationFoodDrinkAndCuisineAdvice: 'TravelInformationFoodDrinkAndCuisineAdvice',\n TravelInformationClimateAndWeather: 'TravelInformationClimateAndWeather',\n TravelInformationInternetAvailability: 'TravelInformationInternetAvailability',\n TravelInformationTravelTransportAndGettingAround: 'TravelInformationTravelTransportAndGettingAround',\n TravelInformationClothingAndDressRecommendations: 'TravelInformationClothingAndDressRecommendations'\n})\n","export const TranslatableText = {\n getNewTranslatableTextItem(isNewId, stringValue = '', langCode = '', fieldType) {\n //A TranslatableTextItem is a sub-component of a TranslatableText object.\n return {\n existsInDb: false,\n stringValue,\n languageCode: langCode ? langCode : 'en',\n fieldType\n }\n },\n \n getNew(isNewId, stringValue = '', fieldType) {\n //Get a new TranslatableText object with optional new ID and stringValue.\n return {\n enText: this.parentObject.getNewTranslatableTextItem(true, stringValue, 'en', fieldType),\n translations: [],\n machineTranslations: []\n }\n },\n \n getStringValue(translatableText, langCode = 'en', isMachineTranslationsEnabled = true) {\n //Return the string value for the specified language code.\n if (langCode === 'en' && translatableText?.enText) {\n return translatableText?.enText.stringValue\n } else if (langCode !== 'en') {\n //The Wetu logic is: Show manual translation if available else display machine translation.\n const manualTranslation = translatableText?.translations?.find(x => x.languageCode === langCode)\n const machineTranslation = translatableText?.machineTranslations?.find(x => x.languageCode === langCode)\n //An empty manualTranslation.stringValue is allowed because if they delete the machine translation an empty manual translation should be sent to the TranslatableTextEditor.\n return manualTranslation ? manualTranslation.stringValue : isMachineTranslationsEnabled && machineTranslation?.stringValue ? machineTranslation.stringValue : ''\n }\n return '' \n },\n\n isShowMachineTranslation(translatableText, langCode = 'en') {\n //The Wetu logic is: Show manual translation if available else display machine translation.\n const manual = translatableText?.translations?.find(x => x?.languageCode === langCode)\n if (langCode === 'en' || typeof manual?.stringValue === 'string') { //The TranslatableTextEditor uses this object differently and stores the DraftJs object in the stringValue when it initializes. So we must check if this is a valid string value.\n return false\n } else if (!!translatableText?.machineTranslations.find(x => x.languageCode === langCode)) {\n return true\n }\n },\n \n hasTranslation(translatableText, langCode = 'en') {\n //Returns a boolean to indicate if TranslatableText has a translation for the specified language.\n if (langCode === 'en' && translatableText?.enText?.stringValue?.trim()) {\n return true\n } else if (langCode !== 'en' && translatableText?.translations) {\n return !!translatableText.translations.find(x => x?.languageCode === langCode && (x?.stringValue || x?.stringValue?.trim()))\n }\n return false\n },\n\n hasAnyTranslation(translatableText) {\n //Returns a boolean to indicate if translatableText has any translations.\n if (translatableText.translations?.length) {\n translatableText.translations.forEach(item => {\n if (item.stringValue) {\n return true\n }\n })\n }\n return false\n },\n\n get(translatableText, langCode, isMachineTranslationsEnabled = true) {\n //Returns the TranslatableTextItem for specified langCode (A TranslatableTextItem is a sub-component of a TranslatableText object).\n if (langCode === 'en') {\n return translatableText.enText\n } else {\n const manual = translatableText?.translations?.find(x => x.languageCode === langCode)\n const machine = translatableText?.machineTranslations?.find(x => x.languageCode === langCode)\n return manual ? manual : isMachineTranslationsEnabled ? machine : null\n } \n },\n\n getDefaultStringValue(translatableText) {\n //Return the default string for a translatableText object. Assume enText first, then if no enText pick the first translation available.\n if (translatableText?.enText) {\n return translatableText.enText.stringValue\n }\n if (translatableText?.translations) {\n //Return the first translation\n translatableText.translations.forEach(item => {\n if (item.stringValue) {\n return item.stringValue\n }\n })\n }\n if (translatableText?.machineTranslations) {\n translatableText.machineTranslations.forEach(item => {\n if (item.stringValue) {\n return item.stringValue\n }\n })\n }\n return ''\n },\n \n update(translatableText, langCode, stringValue, setIsChanged = false, fieldType = null) {\n //Updates a translatableText object with inputString, for the specified language code.\n if (langCode === 'en') {\n if (!translatableText.enText.id) {\n translatableText.enText.existsInDb = false\n translatableText.enText.id = 0\n }\n translatableText.enText.stringValue = stringValue\n if (fieldType !== null) {\n translatableText.enText.fieldType = fieldType\n }\n \n if (setIsChanged) {\n translatableText.enText.isChanged = true\n }\n } else {\n let translation = translatableText.translations.find(x => x.languageCode === langCode)\n if (translation) {\n translation.stringValue = stringValue\n } else {\n translation = this.parentObject.getNewTranslatableTextItem(true, stringValue, langCode)\n translatableText.translations.push(translation)\n }\n if (fieldType !== null) {\n translation.fieldType = fieldType\n }\n if (setIsChanged) {\n translation.isChanged = true\n }\n }\n },\n\n updateItem(translatableText, langCode, translatableTextItem) {\n //Updates a translatableText object with inputString, for the specified language code.\n //Called on load (initialisation) of TranslatableTextEditor, hence writing to the machineTranslations array.\n if (langCode === 'en') {\n translatableText.enText = translatableTextItem\n } else {\n let manual = translatableText.translations.find(x => x.languageCode === langCode)\n let machine = translatableText.machineTranslations.find(x => x.languageCode === langCode)\n if (manual) { \n manual = translatableTextItem //By-ref object update.\n } else if (machine) {\n machine = translatableTextItem\n }\n }\n },\n\n setEnIsChanged(translatableText, isChanged) {\n //If en text changes we need to create new machine translations, so mark isChanged=true.\n if (translatableText?.enText) {\n translatableText.enText.isChanged = isChanged\n }\n },\n \n updateExistsInDb(translatableText, langCode, existsInDb) {\n //Updates a translatableText object with inputString, for the specified language code.\n if (langCode === 'en') {\n translatableText.enText.existsInDb = existsInDb\n } else {\n let translation = translatableText.translations.find(x => x.languageCode === langCode)\n if (translation) {\n translation.existsInDb = existsInDb\n } else {\n translation = this.parentObject.getNewTranslatableTextItem(true, '', langCode)\n translation.existsInDb = existsInDb\n translatableText.translations.push(translation)\n }\n }\n },\n \n getIds(translatableText) {\n //Returns a list of all IDs in translatableText.\n const ids = []\n if (translatableText) {\n if (translatableText.enText?.id) {\n ids.push(translatableText.enText.id)\n }\n if (translatableText?.translations) {\n translatableText.translations.forEach(item => {\n ids.push(item.id)\n })\n }\n if (translatableText?.machineTranslations) {\n translatableText.machineTranslations.forEach(item => {\n ids.push(item.id)\n })\n }\n }\n return ids\n },\n \n setAllExistsInDb(translatableText, isExists) {\n //Sets existsInDb flags for all items to isExists.\n if (translatableText?.enText) {\n translatableText.enText.existsInDb = isExists\n }\n if (translatableText?.translations) {\n translatableText.translations.forEach(item => {\n item.existsInDb = isExists\n })\n }\n if (translatableText?.machineTranslations) {\n translatableText.machineTranslations.forEach(item => {\n item.existsInDb = isExists\n })\n }\n },\n\n deleteTranslatableTextItem(translatableText, langCode) {\n //Deletes a translatableTextItem from a translations[] array (or resets enText) based on langCode.\n if (langCode === 'en') {\n translatableText.enText = this.parentObject.getNewTranslatableTextItem(true, '')\n } else if (translatableText?.translations) {\n const findIndex = translatableText?.translations.findIndex(x => x.languageCode === langCode)\n if (findIndex >= 0) {\n translatableText.translations.splice(findIndex, 1)\n }\n }\n },\n\n isEmpty(translatableText) {\n // Check if the TranslatableText has a value\n return translatableText?.enText?.stringValue || translatableText?.translations?.length\n },\n\n isEnEmpty(translatableText) {\n // Check if the EN TranslatableText has a value\n return !translatableText?.enText?.stringValue\n },\n\n clearStringValues(translatableText) {\n //Sets the stringValue to '' for all items.\n if (translatableText) {\n if (translatableText.enText) {\n translatableText.enText.stringValue = ''\n }\n translatableText?.translations?.forEach(item => { item.stringValue = '' })\n translatableText?.machineTranslations?.forEach(item => { item.stringValue = '' })\n }\n },\n\n repair(translatableText) {\n //API removes object properties (leading to undefined errors) if they have a null or empty value.\n if (!translatableText) {\n translatableText = this.getNew()\n }\n if (!translatableText.enText) {\n translatableText.enText = this.parentObject.getNewTranslatableTextItem(true, stringValue, 'en')\n }\n if (!translatableText.enText.stringValue) {\n translatableText.enText.stringValue = ''\n }\n if (!translatableText.translations || (translatableText.translations?.length === 1 && !translatableText.translations[0])) {\n translatableText.translations = []\n }\n if (!translatableText.machineTranslations) {\n translatableText.machineTranslations = []\n }\n },\n\n removeBlankItems(translatableText) {\n //The TranslatableTextEditor creates empty translation items that do not exist in DB (if you delete a MT and hit Save it creates one).\n if (translatableText?.translations) {\n translatableText.translations = translatableText.translations.filter(x => !(!x.stringValue && !x.existsInDb))\n }\n },\n\n translatableTextHaveChanges(initialText, newText) {\n if (initialText && newText) {\n if (initialText.enText.stringValue !== newText.enText.stringValue) {\n return true\n }\n if (initialText.translations.length !== newText.translations.length) {\n return true\n } else {\n for (let translationIndex = 0; translationIndex < initialText.translations.length; translationIndex++) {\n if (initialText.translations[translationIndex].stringValue !== newText.translations[translationIndex].stringValue) {\n return true\n }\n }\n }\n }\n return false \n },\n\n isMtPending(translatableText, machineTranslations, isMtEnabled, isAlreadyPending) {\n return isMtEnabled && \n !!translatableText?.enText?.stringValue?.trim() &&\n !translatableText?.enText.isMarkedForDeletion && (\n translatableText?.enText.isChanged || machineTranslations?.length < 1 || isAlreadyPending\n )\n },\n\n toTranslatableTextItem(translationItem) {\n //Converts a translationItem into a TranslatableTextItem (ie. a enText or translations[i] or machineTranslations[i]).\n return {\n id: translationItem.id,\n existsInDb: translationItem.existsInDb,\n languageCode: translationItem.languageCode,\n stringValue: translationItem.text,\n fieldType: translationItem.fieldType,\n isMachineTranslation: translationItem.isMachineTranslation,\n profileId: translationItem.profileId,\n profileItemId: translationItem.profileItemId ? translationItem.profileItemId : null,\n mediaItemId: translationItem.mediaItemId ? translationItem.mediaItemId : null,\n directionId: translationItem.directionId ? translationItem.directionId : null,\n rateConditionId: translationItem.rateConditionId ? translationItem.rateConditionId : null,\n rateSeasonId: translationItem.rateSeasonId ? translationItem.rateSeasonId : null\n }\n },\n\n toTranslationItem(translatableTextItem, isMachineTranslation, profileId, profileItemId, mediaItemId, directionId, rateConditionId, rateSeasonId) {\n //Converts a translatableTextItem (ie. enText or translations[i] or machineTranslations[i]) into a translationItem (needed by the API)\n return {\n id: translatableTextItem.id,\n existsInDb: translatableTextItem.existsInDb,\n languageCode: translatableTextItem.languageCode,\n text: translatableTextItem.stringValue,\n fieldType: translatableTextItem.fieldType,\n isMachineTranslation,\n profileId,\n profileItemId,\n mediaItemId,\n directionId,\n rateConditionId,\n rateSeasonId\n }\n },\n\n toTranslatableText(translationItems) {\n //Converts a translationItem[] into a translatableText object (assumes translationItems only contains translationItems for a single TranslatableText object).\n const translatableText = this.getNew()\n if (translationItems?.length > 0) {\n const enItem = translationItems.filter(x => x.languageCode === 'en')[0]\n const translations = translationItems.filter(x => x.languageCode !== 'en' && !x.isMachineTranslation)\n const machineTranslations = translationItems.filter(x => x.languageCode !== 'en' && x.isMachineTranslation)\n translatableText.enText = this.toTranslatableTextItem(enItem)\n if (translations.length > 0) {\n translatableText.translations = translations.map(x => this.toTranslatableTextItem(x))\n }\n if (machineTranslations.length > 0) {\n translatableText.machineTranslations = machineTranslations.map(x => this.toTranslatableTextItem(x))\n }\n }\n \n return translatableText\n },\n\n toTranslationItems(translatableText, profileId, profileItemId = null, mediaItemId = null, directionId = null, rateConditionId = null, rateSeasonId = null) {\n //Convert a translatableText object to translationItem[].\n const translationItems = []\n if (!!translatableText?.enText?.stringValue || translatableText?.enText?.existsInDb) {\n translationItems.push(this.toTranslationItem(translatableText.enText, false, profileId, profileItemId, mediaItemId, directionId, rateConditionId, rateSeasonId))\n if (translatableText.translations?.length > 0) {\n translatableText.translations.map(x => {\n translationItems.push(this.toTranslationItem(x, false, profileId, profileItemId, mediaItemId, directionId, rateConditionId, rateSeasonId))\n })\n }\n if (translatableText.machineTranslations?.length > 0) {\n translatableText.machineTranslations.map(x => {\n translationItems.push(this.toTranslationItem(x, true, profileId, profileItemId, mediaItemId, directionId, rateConditionId, rateSeasonId))\n })\n }\n }\n return translationItems\n },\n\n init() {\n this.parentObject = this //Assign parentObject. Function syntax (rather than arrow syntax) is needed in this file for 'this' to work.\n delete this.Init //Only allow init to run once.\n return this //Gives back the object itself if instantiation is needed.\n }\n}.init()","export default __webpack_public_path__ + \"static/media/banquet.a70ede30.svg\";","export default __webpack_public_path__ + \"static/media/boardroom.a263c4a3.svg\";","export default __webpack_public_path__ + \"static/media/reception.57626197.svg\";","export default __webpack_public_path__ + \"static/media/school-room.0285204e.svg\";","export default __webpack_public_path__ + \"static/media/theatre.26f794d6.svg\";","export default __webpack_public_path__ + \"static/media/u-shaped.68c8402d.svg\";","import banquetEventIcon from '../assets/images/icons/event-type-icons/banquet.svg'\nimport boardroomEventIcon from '../assets/images/icons/event-type-icons/boardroom.svg'\nimport resceptionEventIcon from '../assets/images/icons/event-type-icons/reception.svg'\nimport schoolRoomEventIcon from '../assets/images/icons/event-type-icons/school-room.svg'\nimport theatreEventIcon from '../assets/images/icons/event-type-icons/theatre.svg'\nimport uShapedEventIcon from '../assets/images/icons/event-type-icons/u-shaped.svg'\nimport {\n FeatureType_PEnum,\n MediaType_PEnum,\n PricingConfigType_PEnum,\n ProfileCategory_PEnum,\n ProfileItemType_PEnum,\n ProfileTier_DB_PEnum,\n ProfileTier_UI_PEnum,\n ProfileType_PEnum,\n accommodationCategoryList, activityCategoryList,\n attractionAndLandMarksCategoryList, foodAndBeverageCategoryList,\n getAllCategoriesExcept,\n informationAndServicesCategoryList,\n infrastructureCategoryList,\n venueCategoryList\n} from '../configs/pseudoEnums'\n\nexport const tierArray = [\n {name: ProfileTier_UI_PEnum.Core, description: \"Limited content options, functionality, and distribution options. This offers everything you need to quickly start building your online presence.\", price: \"0\"},\n {name: ProfileTier_UI_PEnum.Professional, description: \"This offers a wide set of customisation, branding, content, functionality, and distribution options.\", price: \"XX\"}\n //{name: \"Premium\", description: \"This offers a wide set of customisation options, branding, content, functionality, and distribution options.\", price: \"XXX\"}\n]\n\nexport const tagsArray = [ \n {label: \"Apartment\", value: \"apartment\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]}, \n {label: \"Backpacker\", value: \"backpacker\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"BnB\", value: \"bnb\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Boat\", value: \"boat\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Boutique\", value: \"boutique\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Bungalow\", value: \"bungalow\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Camper\", value: \"camper\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Camps\", value: \"camps\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Campsite\", value: \"campsite\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Capsule\", value: \"capsule\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Casino\", value: \"casino\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Chalet\", value: \"chalet\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Caravan Park\", value: \"caravan park\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Condo\", value: \"condo\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Country House\", value: \"country house\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Cruise Ship\", value: \"cruise ship\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Eco Camps\", value: \"eco camps\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Flight\", value: \"flight\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Guest House\", value: \"guest house\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Holiday Village\", value: \"holiday village\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Homestay\", value: \"homestay\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Horseback\", value: \"horseback\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Hostel\", value: \"hostel\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Hotel\", value: \"hotel\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Houseboat\", value: \"houseboat\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Inn\", value: \"inn\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Lodge\", value: \"lodge\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Luxury\", value: \"luxury\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Luxury Tented Camp\", value: \"luxury tented camp\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Luxury Yacht\", value: \"luxury yacht\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Mobile Safari\", value: \"mobile safari\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Motel\", value: \"motel\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Permanent Tented\", value: \"permanent tented\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Rail\", value: \"rail\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Resort\", value: \"resort\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Rest Camps\", value: \"rest camps\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"River Cruise\", value: \"river cruise\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Riverboat\", value: \"riverboat\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"RV\", value: \"rv\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.vehicle, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Safari\", value: \"safari\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Serviced Apartment\", value: \"serviced apartment\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Short Term Rental\", value: \"short term rental\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Spa\", value: \"spa\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Suite\", value: \"suite\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Tented Camps\", value: \"tented camps\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Train\", value: \"train\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Vehicle\", value: \"vehicle\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.vehicle, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Villa\", value: \"villa\", profileCategoryType:[...accommodationCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n\n {label: \"Apartment / Villa\", value:\"apartmentVilla\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Bed & breakfast\", value:\"bedAndBreakfast\", profileCategoryType:[ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat, ...venueCategoryList], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Boutique hotel\", value:\"boutiqueHotel\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Mobile camp\", value:\"mobileCamp\", profileCategoryType:[ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Nature\", value:\"nature\", profileCategoryType:[ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Safari lodge\", value:\"safariLodge\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Private Safari Lodge\", value:\"privateSafariLodge\", profileCategoryType:[...accommodationCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n {label: \"Self-catering\", value:\"selfCatering\", profileCategoryType:[ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n\n {label: \"Abseiling\", value: \"abseiling\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Adventure\", value: \"adventure\", profileCategoryType:[...activityCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Beach\", value: \"beach\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Boat Cruise\", value: \"boat cruise\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Bowling\", value: \"bowling\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Bungi Jumping\", value: \"bungi jumping\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Canoe Trips\", value: \"canoe trips\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Deep Sea Fishing\", value: \"deep sea fishing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Fitness Centre\", value: \"fitness centre\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Fighter Jets\", value: \"fighter jets\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Fly Fishing\", value: \"fly fishing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Four Wheel Drive\", value: \"Four Wheel Drive\", profileCategoryType:[ProfileCategory_PEnum.vehicle], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Game Drive\", value: \"game drive\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Golf\", value: \"golf\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Health Spa\", value: \"health spa\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Horse riding\", value: \"horse riding\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Hot Air Balloon\", value: \"hot air balloon\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Ice Skating\", value: \"ice skating\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Jet Skiing\", value: \"jet skiing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Kayaking\", value: \"kayaking\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Kite Boarding\", value: \"kite boarding\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Kloofing\", value: \"kloofing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Learning to Surf\", value: \"learning to surf\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Leisure\", value: \"leisure\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Mountain Bike\", value: \"mountain bike\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Outdoor\", value: \"outdoor\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Paragliding\", value: \"paragliding\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Parasailing\", value: \"parasailing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Photo Opportunity\", value: \"photo opportunity\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Picnic\", value: \"picnic\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Polo\", value: \"polo\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Power Boating\", value: \"power boating\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Quad Biking\", value: \"quad biking\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Rock Climbing\", value: \"rock climbing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Running\", value: \"running\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Hot Air Ballooning\", value: \"hot air ballooning\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Sailing\", value: \"sailing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Sandboarding\", value: \"sandboarding\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Scenic Walk\", value: \"scenic walk\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Scuba Diving\", value: \"scuba diving\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Shark Diving\", value: \"shark diving\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Sightseeing\", value: \"sightseeing\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Sky Diving\", value: \"sky diving\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Snorkeling\", value: \"snorkeling\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Sport\", value: \"sport\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Squash\", value: \"squash\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Stadium\", value: \"stadium\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Stand Up Paddleboarding\", value: \"stand up paddleboarding\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Sundowner\", value: \"sundowner\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Surfing\", value: \"surfing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Swimming\", value: \"swimming\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Tennis\", value: \"tennis\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Tourist Information\", value: \"tourist information\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Tree-top Tours\", value: \"tree-top tours\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Walk / Hike\", value: \"walk / hike\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Water Skiing\", value: \"water skiing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Watersport\", value: \"watersport\", profileCategoryType:[...activityCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"White Water Rafting\", value: \"white water rafting\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Windsurfing\", value: \"windsurfing\", profileCategoryType:[...activityCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Wine Estate\", value: \"wine estate\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Wine Tasting\", value: \"wine tasting\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Other\", value: \"other\", profileCategoryType:[...activityCategoryList, ...attractionAndLandMarksCategoryList, ...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n\n {label: \"African\", value: \"african\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Asian\", value: \"asian\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Contemporary\", value: \"contemporary\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Deli\", value: \"deli\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Fast foods\", value: \"fast foods\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Italian\", value: \"italian\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Fine dining\", value: \"fine dining\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Fusion\", value: \"fusion\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Grill\", value: \"grill\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Indian\", value: \"indian\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Local\", value: \"local\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Portuguese\", value: \"portuguese\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Seafood\", value: \"seafood\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n {label: \"Sushi\", value: \"sushi\", profileCategoryType:[...foodAndBeverageCategoryList], profileTypes: [ProfileType_PEnum.restaurant, ProfileType_PEnum.other]},\n \n {label: \"Amusement Park\", value: \"amusement park\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Aquarium / Oceanarium\", value: \"aquarium / oceanarium\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Art\", value: \"art\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Jewellery\", value: \"jewellery\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Arts & Crafts\", value: \"arts & crafts\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Baboon Interaction\", value: \"baboon interaction\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Bar\", value: \"bar\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Theatre\", value: \"theatre\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Battlefield\", value: \"battlefield\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n \n {label: \"Big 5 Game Reserve\", value: \"big 5 game reserve\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Game Reserve\", value: \"game reserve\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...accommodationCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.accommodation, ProfileType_PEnum.other]},\n \n {label: \"Birding Hot Spot\", value: \"birding hot spot\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Birding\", value: \"birding\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Boat Cruise\", value: \"boat cruise\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Botanical Garden\", value: \"botanical garden\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Caves\", value: \"caves\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Clothing\", value: \"clothing\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Dolphin Watching\", value: \"dolphin watching\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Elephant Interaction\", value: \"elephant interaction\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Estate Agent\", value: \"estate agent\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Farm / Safari Park\", value: \"farm / safari park\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Gambling\", value: \"gambling\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n \n {label: \"Guided Tour\", value: \"guided tour\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Guided Walk\", value: \"guided walk\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Hstorical Site\", value: \"hstorical site\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Jewelery\", value: \"jewelery\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Live Music\", value: \"live music\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Monument / Memorial\", value: \"monument / memorial\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Movies\", value: \"movies\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Museum\", value: \"museum\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...venueCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Historical Site\", value: \"historical site\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...venueCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Cultural Site\", value: \"cultural site\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...venueCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Natural Beauty\", value: \"natural beauty\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Nature Reserve\", value: \"nature reserve\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Nightclub\", value: \"nightclub\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Outdoor Market\", value: \"outdoor market\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Place of Interest\", value: \"place of interest\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.information, ProfileType_PEnum.other]},\n {label: \"Place of Worship\", value: \"place of worship\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other] },\n {label: \"Pub\", value: \"pub\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Rock Art\", value: \"rock art\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Shopping Hot Spot\", value: \"shopping hot spot\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Shopping Mall\", value: \"shopping mall\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Star Gazing\", value: \"star gazing\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Theater\", value: \"theater\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Township Tour\", value: \"township tour\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Viewing Area\", value: \"viewing area\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Whale Watching\", value: \"whale watching\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Wildlife Interaction\", value: \"wildlife interaction\", profileCategoryType:[...attractionAndLandMarksCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.other]},\n {label: \"Wildlife Sanctuary\", value: \"wildlife sanctuary\", profileCategoryType:[...attractionAndLandMarksCategoryList, ...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.attraction, ProfileType_PEnum.information, ProfileType_PEnum.other]},\n\n {label: \"Art Gallery and Picture Framing\", value:\"art gallery and picture framing\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Company\", value:\"company\", profileCategoryType:[...informationAndServicesCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Day tour\", value:\"day tour\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Tailor Made Tour\", value:\"tailor made tour\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Greeting\", value:\"greeting\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Guide\", value:\"guide\", profileCategoryType:[...informationAndServicesCategoryList, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Hike/Walking\", value:\"hike/walking\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Monument/Memorial\", value:\"monument/memorial\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Property\", value:\"property\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Car Rental\", value:\"car rental\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Charter Flight\", value:\"charter flight\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Tour\", value:\"tour\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n {label: \"Tourist Activity\", value:\"tourist activity\", profileCategoryType:[...informationAndServicesCategoryList], profileTypes: [ProfileType_PEnum.information, ProfileType_PEnum.other] },\n\n {label: \"International airport\", value: \"International airport\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Airport\", value: \"Airport\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Airfield\", value: \"Airfield\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Harbour\", value: \"Harbour\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Train station\", value: \"Train station\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Dummy point\", value: \"Dummy point\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Gate\", value: \"Gate\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Route point\", value: \"Route point\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Bus station\", value: \"Bus station\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Bridge\", value: \"Bridge\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Helipad\", value: \"Helipad\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Petrol station\", value: \"Petrol station\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Embassy\", value: \"Embassy\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Polygon\", value: \"Polygon\", profileCategoryType: [...infrastructureCategoryList], profileTypes: [ProfileType_PEnum.infrastructure, ProfileType_PEnum.other] },\n {label: \"Arena auditorium\", value: \"Arena auditorium\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Airport hotel\", value: \"Airport hotel\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other, ProfileType_PEnum.venues]},\n {label: \"Boats / Cruser\", value: \"Boats / Cruser\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Bush venue\", value: \"Bush venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Church / Chapel\", value: \"Church / Chapel\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other, ProfileType_PEnum.venues]},\n {label: \"City conference venue\", value: \"City conference venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"City hotel\", value: \"City hotel\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Civic centre\", value: \"Civic centre\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Coastal venue\", value: \"Coastal venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Computer training facility\", value: \"Computer training facility\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Corporate facility\", value: \"Corporate facility\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Country club\", value: \"Country club\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Cultural village\", value: \"Cultural village\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Day conference venue\", value: \"Day conference venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Educational establishment\", value: \"Educational establishment\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Expo centre\", value: \"Expo centre\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Boats / Cruiser\", value: \"boats / cruiser\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues]},\n\n {label: \"Farm venue\", value: \"Farm venue\", profileCategoryType:[...venueCategoryList, ProfileCategory_PEnum.other], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Game lodge\", value: \"Game lodge\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Guest houses & lodges\", value: \"Guest houses and lodges\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Multi-purpose function\", value: \"Multi-purpose function\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"National park\", value: \"National park\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Resort hotel\", value: \"Resort hotel\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Restaurant\", value: \"Restaurant\", profileCategoryType:[...venueCategoryList, ProfileCategory_PEnum.leisure], profileTypes: [ProfileType_PEnum.activity, ProfileType_PEnum.other]},\n {label: \"Self catering sports club\", value: \"Self catering sports club\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Stadium\", value: \"stadium\", profileCategoryType:[...venueCategoryList, ProfileCategory_PEnum.other], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Team building venue\", value: \"Team building venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Tented or outdoor camp\", value: \"Tented or outdoor camp\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Theatre training facility\", value: \"Theatre training facility\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Venue municipal hall\", value: \"Venue municipal hall\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.other]},\n {label: \"Wedding venue\", value: \"Wedding venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]},\n {label: \"Country venue\", value: \"country venue\", profileCategoryType:[...venueCategoryList], profileTypes: [ProfileType_PEnum.venues, ProfileType_PEnum.other]}\n\n // For Destination/area tags (we don't currently show these in the front end)\n // {label: \"area\", value: \"area\", profileCategoryType:[], profileTypes:[] },\n // {label: \"country\", value: \"country\", profileCategoryType:[], profileTypes:[] },\n // {label: \"province / state / department\", value: \"province / state / department\", profileCategoryType:[], profileTypes:[] },\n // {label: \"reserve / conservation\", value: \"reserve / conservation\", profileCategoryType:[], profileTypes:[] },\n // {label: \"town / city\", value: \"town / city\", profileCategoryType:[], profileTypes:[] },\n\n \n]\n\nexport const typesArray = [\n {name: \"Stays\", description: \"Hotel, B&B, Boat, Lodge\", value: ProfileType_PEnum.accommodation, cardId:\"typeStaysChoiceCard\"},\n {name: \"Things to do\", description: \"Activities, Guides, Excursions\", value: ProfileType_PEnum.activity, cardId:\"typeThingToDoChoiceCard\"},\n {name: \"Venues\", description: \"Conference venues, Expo centres, Stadiums\", value: ProfileType_PEnum.venues, cardId:\"typeVenuesChoiceCard\"},\n {name: \"Food & Beverage\", description: \"Dining, Cafe, Bakery, Food market\", value: ProfileType_PEnum.restaurant, cardId:\"typeFoodBeverageChoiceCard\"},\n {name: \"Destination\", description: \"DMO, TFCA, Reserve, Conservation\", value: ProfileType_PEnum.destination, cardId:\"typeDestinationsChoiceCard\"},\n {name: \"Attractions & Landmarks\", description: \"Museums, Landmarks, Attractions\", value: ProfileType_PEnum.attraction, cardId:\"typeAttractionsLandmarksChoiceCard\"},\n { name: \"Information / Services\", description: \"Meet and Greet, Information, Person\", value: ProfileType_PEnum.information, cardId: \"typeServicesChoiceCard\" },\n { name: \"Infrastructure\", description: \"Harbours, Airports, Train Stations\", value: ProfileType_PEnum.infrastructure, cardId: \"typeInfrastructureChoiceCard\" },\n { name: \"Other\", description: \"Profiles that are not included in the types listed above\", value: ProfileType_PEnum.other, cardId: \"typeOtherChoiceCard\" }\n]\n\nexport const profileEditorMenuItems = [ \n {\n name: \"General\", \n route: \"general\",\n id: \"generalTab\", \n children: [\n {\n name: \"Details\", \n route: \"details\",\n id: \"generalDetailsButton\"\n }, \n {\n name: \"Fast facts\", \n route:\"fastfacts\",\n id: \"generalFastFactsButton\"\n }, \n {\n name: \"Travel information\", \n route: \"travelinformation\",\n id: \"generalTravelInformationButton\",\n profileTypeRestrictedFrom: [\n ProfileType_PEnum.information, ProfileType_PEnum.infrastructure, ProfileType_PEnum.other,\n ProfileType_PEnum.accommodation, ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.restaurant,\n ProfileType_PEnum.variant, ProfileType_PEnum.venues\n ]\n },\n {\n name: \"Facilities\", \n route: \"facilities\",\n id: \"generalFacilitiesButton\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.infrastructure, ProfileType_PEnum.destination, ProfileType_PEnum.other]\n },\n {\n name: \"Contact details\", \n route: \"contactdetails\",\n id: \"generalContactDetailsButton\"\n }\n ]\n },\n {\n name: \"Location\", \n route: \"location\", \n id: \"locationTab\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.other],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat, ProfileCategory_PEnum.vehicle],\n children: [\n {\n name: \"Address\", \n route: \"maplocation\",\n id: \"locationMapLocationButton\"\n }, \n {\n name: \"Directions (to)\", \n route: \"directionsto\",\n id: \"locationDirectionsToButton\", \n restricted: [ProfileTier_DB_PEnum.Professional],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.mobileSafari],\n profileTypeRestrictedFrom: [ProfileType_PEnum.destination]\n }, \n {\n name: \"Directions (from)\", \n route: \"directionsfrom\", \n id: \"locationDirectionsFromButton\",\n restricted: [ProfileTier_DB_PEnum.Professional],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.mobileSafari],\n profileTypeRestrictedFrom: [ProfileType_PEnum.destination]\n }, \n {\n name: \"Associations\", \n route: \"Associations\", \n id: \"locationAssociationsButton\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.other],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.dmo, ProfileCategory_PEnum.vehicle, ProfileCategory_PEnum.rail, ProfileCategory_PEnum.boat, ProfileCategory_PEnum.country]\n }\n ]\n },\n {\n name: \"Media\", \n route: \"media\", \n id: \"mediaTab\",\n children: [\n {\n name: \"Images\", \n route: \"images\",\n id: \"mediaImagesButton\"\n }, \n {\n name: \"Videos\", \n route: \"videos\", \n id: \"mediaVideosButton\",\n restricted: [ProfileTier_DB_PEnum.Professional, ProfileTier_DB_PEnum.Lite]\n }, \n {\n name: \"Virtual tours\", \n route: \"virtualtours\", \n id: \"mediaVirtualToursButton\",\n restricted: [ProfileTier_DB_PEnum.Professional]\n }, \n {\n name: \"Appearances\", \n route: \"appearances\",\n id: \"mediaAppearancesButton\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }\n ]\n },\n {\n name: \"Venue options\", \n route: \"venueoptions\",\n id: \"venueOptionsTab\",\n profileType: [ProfileType_PEnum.venues],\n children: [\n {\n name: \"Venues\", \n route: \"venues\"\n }\n ]\n },\n {\n name: \"Rooms and services\", \n route: \"roomsandservices\", \n id: \"roomsServicesTab\",\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.vehicle],\n children: [\n {\n name: \"Sleeping arrangements\", \n route: \"sleepingarrangements\",\n id: \"roomsServicesSleepingArrangementButton\"\n }, \n {\n id: \"roomsServicesActivitiesButton\",\n name: \"Activities\", \n route: \"activities\", \n restricted: [ProfileTier_DB_PEnum.Professional],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.mobileSafari]\n }, \n {\n id: \"roomsServicesRestaurantButton\",\n name: \"Restaurants\", \n route: \"restaurants\", \n restricted: [ProfileTier_DB_PEnum.Professional],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.mobileSafari]\n }\n ]\n },\n {\n name: \"Sleeping arrangements and services\", \n route: \"sleepingarrangementsandservices\", \n profileType: [ProfileType_PEnum.accommodation],\n profileCategoryRestrictedFrom: getAllCategoriesExcept([ProfileCategory_PEnum.vehicle]),\n children: [\n {\n name: \"Sleeping arrangements\", \n route: \"sleepingarrangements\"\n }, \n {\n name: \"Amenities\", \n route: \"amenities\"\n }\n ]\n }, \n {\n name: \"Activity options\", \n route: \"activityoptions\",\n id: \"activityOptionTab\",\n profileType: [ProfileType_PEnum.activity, ProfileType_PEnum.attraction],\n children: [\n {\n name: \"Activities\", \n route: \"activities\"\n }\n ]\n },\n {\n name: \"Available spaces\", \n route: \"avaliblespaces\",\n id: \"availableSpacesTab\",\n profileType: [ProfileType_PEnum.restaurant, ProfileType_PEnum.infrastructure],\n children: [\n {\n name: \"Spaces\", \n route: \"spaces\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.infrastructure]\n },\n {\n name: \"Spaces\", \n route: \"infrastructurespaces\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.restaurant]\n }\n ]\n }, \n {\n name: \"Available options\", \n route: \"availableoptions\",\n profileType: [ProfileType_PEnum.information, ProfileType_PEnum.other],\n children: [\n {\n name: \"Options\", \n route: \"options\"\n }\n ]\n }, \n {\n name: \"Attractions\", \n route: \"attractions\",\n profileType: [ProfileType_PEnum.destination],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.dmo],\n children: [\n {\n name: \"Attractions\", \n route: \"attractions\"\n },\n {\n name: \"Activities\", \n route: \"activities\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }, \n {\n name: \"Stays\", \n route: \"stays\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }, \n {\n name: \"Destinations\", \n route: \"destinations\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }\n ]\n },\n {\n name: \"Places to explore\", \n route: \"attractions\",\n profileType: [ProfileType_PEnum.destination],\n profileCategoryRestrictedFrom: [ProfileCategory_PEnum.country, ProfileCategory_PEnum.area, ProfileCategory_PEnum.other],\n children: [\n {\n name: \"Attractions\", \n route: \"attractions\"\n },\n {\n name: \"Activities\", \n route: \"dmo/activities\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }, \n {\n name: \"Stays\", \n route: \"dmo/stays\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }, \n {\n name: \"Destinations\", \n route: \"dmo/destinations\", \n restricted: [ProfileTier_DB_PEnum.Professional]\n }\n ]\n },\n {\n name: \"Other\", \n route: \"other\",\n id: \"otherTab\", \n children: [\n {\n name: \"Documents\", \n route: \"documents\",\n id: \"otherDocumentsButton\"\n }, \n {\n name: \"Rates\", \n route: \"rates\", \n id: \"otherRatesButton\",\n restricted: [ProfileTier_DB_PEnum.Professional],\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.restaurant, ProfileType_PEnum.infrastructure, ProfileType_PEnum.destination, ProfileType_PEnum.other]\n }, \n {\n name: \"Itineraries & packages\", \n route: \"itineraries\",\n id: \"otherItinerariesPackagesButton\",\n profileCategoryRestrictedFrom: getAllCategoriesExcept([\n ProfileCategory_PEnum.rail,\n ProfileCategory_PEnum.boat,\n ProfileCategory_PEnum.vehicle,\n ProfileCategory_PEnum.mobileSafari\n ]),\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.infrastructure, ProfileType_PEnum.destination, ProfileType_PEnum.other]\n },\n {\n name: \"Packages\", \n route: \"packages\",\n id: \"otherPackagesButton\",\n restricted: [ProfileTier_DB_PEnum.Professional],\n profileCategoryRestrictedFrom: getAllCategoriesExcept([...venueCategoryList])\n }, \n {\n name: \"Scheduled departures\", \n route: \"scheduled-departures\",\n id: \"otherScheduledDeparturesButton\",\n profileCategoryRestrictedFrom: getAllCategoriesExcept([\n ProfileCategory_PEnum.rail,\n ProfileCategory_PEnum.boat,\n ProfileCategory_PEnum.vehicle,\n ProfileCategory_PEnum.mobileSafari\n ]),\n restricted: [ProfileTier_DB_PEnum.Professional],\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.infrastructure, ProfileType_PEnum.destination, ProfileType_PEnum.other]\n }, \n {\n name: \"Integrations\", \n route: \"integrations\",\n id: \"otherIntegrationButton\",\n profileTypeRestrictedFrom: [ProfileType_PEnum.information, ProfileType_PEnum.destination, ProfileType_PEnum.other]\n }\n ]\n }\n]\n\nconst otherCategory = { name: \"Other\", icon: \"\", description: \"\", value: ProfileCategory_PEnum.other }\n\nexport const accommodationCategoryArray = [\n {name: \"Hotel\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.hotel, cardId: \"categoryHotelChoiceCard\"},\n {name: \"Guest House\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.guestHouse, cardId: \"categoryGuestHouseChoiceCard\"},\n {name: \"Short-term Rental\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.shortTermRental, cardId: \"categoryShortTermRentalChoiceCard\"},\n {name: \"Villa\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.villa, cardId:\"categoryVillaChoiceCard\"},\n {name: \"Lodge\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.lodge, cardId:\"categoryLodgeChoiceCard\"},\n {name: \"Motel\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.motel, cardId:\"categoryMotelChoiceCard\"},\n {name: \"Rail\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.rail, cardId:\"categoryRailChoiceCard\"},\n {name: \"Boat\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.boat, cardId:\"categoryBoatChoiceCard\"},\n {name: \"Mobile Safari\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.mobileSafari, cardId:\"categoryMobileSafariChoiceCard\"},\n {name: \"Camp / Seasonal Camps\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.camp, cardId:\"categoryCampChoiceCard\"},\n {name: \"Vehicle\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.vehicle, cardId:\"categoryVehicleChoiceCard\"},\n {...otherCategory, cardId:\"categoryOtherChoiceCard\"}\n]\n\nexport const activityCategoryArray = [\n {name: \"Adventure\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.adventure, cardId:\"categoryThingsToDoAdventureChoiceCard\"},\n {name: \"Leisure\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.leisure, cardId:\"categoryThingsToDoLeisureChoiceCard\"},\n {name: \"Outdoor\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.outdoor, cardId:\"categoryThingsToDoOutdoorChoiceCard\"},\n {name: \"Sport\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.sport, cardId:\"categoryThingsToDoSportChoiceCard\"},\n {name: \"Watersport\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.waterSport, cardId:\"categoryThingsToDoWatersportChoiceCard\"},\n {...otherCategory, cardId:\"categoryThingsToDoOtherChoiceCard\"}\n]\n\nexport const restaurantCategoryArray = [\n {name: \"African\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.african, cardId:\"categoryFoodAfricanChoiceCard\"},\n {name: \"Asian\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.asian, cardId:\"categoryFoodAsianSpiceChoiceCard\"},\n {name: \"Contemporary\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.contemporary, cardId:\"categoryFoodContemporaryChoiceCard\"},\n {name: \"Deli\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.deli, cardId:\"categoryFoodDeliChoiceCard\"},\n {name: \"Fast Foods\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.fastFoods, cardId:\"categoryFoodFastFoodsChoiceCard\"},\n {name: \"Fine Dining\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.fineDining, cardId:\"categoryFoodFineDiningChoiceCard\"},\n {name: \"Fusion\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.fusion, cardId:\"categoryFoodFusionChoiceCard\"},\n {name: \"Grill\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.grill, cardId:\"categoryFoodGrillChoiceCard\"},\n {name: \"Indian\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.indian, cardId:\"categoryFoodIndianChoiceCard\"},\n {name: \"Local\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.local, cardId:\"categoryFoodLocalChoiceCard\"},\n {name: \"Portuguese\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.portuguese, cardId:\"categoryFoodPortugueseChoiceCard\"},\n {name: \"Seafood\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.seafood, cardId:\"categoryFoodSeafoodChoiceCard\"},\n {name: \"Sushi\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.sushi, cardId:\"categoryFoodSushiChoiceCard\"},\n {...otherCategory, cardId:\"categoryFoodOtherChoiceCard\"}\n]\n\nexport const attractionsCategoryArray = [\n {name: \"Entertainment\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.entertainment, cardId:\"categoryAttractionsEntertainmentChoiceCard\"},\n {name: \"History & Culture\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.historyCulture, cardId:\"categoryAttractionsHistoryCultureChoiceCard\"},\n {name: \"Leisure\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.leisure, cardId:\"categoryAttractionsHistoryCultureChoiceCard\"},\n {name: \"Nature\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.nature, cardId:\"categoryAttractionsNatureChoiceCard\"},\n {name: \"Shopping\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.shopping, cardId:\"categoryAttractionsShoppingChoiceCard\"},\n {name: \"Wildlife\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.wildlife, cardId:\"categoryAttractionsWildlifeChoiceCard\"},\n {...otherCategory, cardId:\"categoryAttractionsOtherChoiceCard\"}\n]\n\nexport const informationServicesCategoryArray = [\n {name: \"Information\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.information, cardId:\"categoryServicesInformationInformationChoiceCard\"},\n {name: \"Meet and Greet\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.meetAndGreet, cardId:\"categoryServicesInformationMeetGreetChoiceCard\"},\n {name: \"Person\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.person, cardId:\"categoryServicesInformationPersonChoiceCard\"},\n {...otherCategory, cardId:\"categoryServicesInformationOtherChoiceCard\"}\n]\n\nexport const infrastructureCategoryArray = [\n {name: \"International airport\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.internationalAirport, cardId:\"categoryInfrastructureInternationalAirportChoiceCard\"},\n {name: \"Airport\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.airport, cardId:\"categoryInfrastructureAirportChoiceCard\"},\n {name: \"Airfield\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.airField, cardId:\"categoryInfrastructureAirfieldChoiceCard\"},\n {name: \"Harbour\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.harbour, cardId:\"categoryInfrastructureHarbourChoiceCard\"},\n {name: \"Train station\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.trainStation, cardId:\"categoryInfrastructureTrainStationChoiceCard\"},\n {...otherCategory, cardId:\"categoryFoodOtherChoiceCard\"}\n]\n\nexport const destinationCategoryArray = [\n {name: \"Area\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.area, cardId:\"categoryDestinationAreaChoiceCard\"},\n {name: \"DMO\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.dmo, cardId:\"categoryDestinationDMOChoiceCard\"},\n {name: \"Country\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.country, cardId:\"categoryDestinationCountryChoiceCard\"},\n {name: \"Other\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.other, cardId:\"categoryDestinationOtherStationChoiceCard\"}\n]\n\nexport const venuesCategoryArray = [\n {name: \"Bed & Breakfast\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.bedBreakfast, cardId:\"categoryVenuesBedAndBreakfastChoiceCard\"},\n {name: \"Corporate facility\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.corporateFacility, cardId:\"categoryVenuesCorporateFacilityChoiceCard\"},\n {name: \"Expo centre\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.expoCentre, cardId:\"categoryVenuesExpoCentreChoiceCard\"},\n {name: \"Guest houses & lodges\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.guestHousesLodges, cardId:\"categoryVenuesGuestHousesLodgesChoiceCard\"},\n {name: \"Tented or outdoor camp\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.tentedOutdoorCamp, cardId:\"categoryVenuesTentedOutdoorCampChoiceCard\"},\n {name: \"Other\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.other, cardId:\"categoryVenuesOtherChoiceCard\"}\n]\n\nexport const otherCategoryArray = [{name: \"Other\", icon :\"\", description: \"\", value: ProfileCategory_PEnum.other}]\n\nexport const iBrochureLanguagesMap = [\n { name: \"English\", code: \"en\", isMachine: false},\n { name: \"Catalan\", code: \"ca\", isMachine: true},\n { name: \"Chinese (Simplified)\", code: \"zh\", isMachine: false},\n { name: \"Chinese (Traditional)\", code: \"zh-TW\", isMachine: false},\n { name: \"Czech\", code: \"cs\", isMachine: false},\n { name: \"Danish\", code: \"da\", isMachine: true},\n { name: \"Dutch\", code: \"nl\", isMachine: true},\n { name: \"Finnish\", code: \"fi\", isMachine: false},\n { name: \"French\", code: \"fr\", isMachine: true},\n { name: \"German\", code: \"de\", isMachine: true},\n { name: \"Italian\", code: \"it\", isMachine: true},\n { name: \"Norwegian\", code: \"no\", isMachine: true},\n { name: \"Polish\", code: \"pl\", isMachine: true},\n { name: \"Portuguese\", code: \"pt\", isMachine: true},\n { name: \"Russian\", code: \"ru\", isMachine: false},\n { name: \"Spanish\", code: \"es\", isMachine: true},\n { name: \"Swedish\", code: \"sv\", isMachine: true}\n]\n\nexport const RoomConfiguration = [\n \"Select configuration\",\n \"Single\",\n \"Double\",\n \"Twin\",\n \"Triple\",\n \"Quad/Family\",\n \"Queen\",\n \"King\",\n \"Suite\",\n \"Studio\",\n \"Connecting\",\n \"Murphy\",\n \"Accessible\"\n]\n\nexport const MIN_IMAGES = 6\n\nexport const MIN_IMAGE_MEGA_PIXELS = 2\n\nexport const BOOTSTRAP_GRID_SYSTEM_MAX_COLUMNS = 12\n\nexport const getMaxImages = (profileTier) => {\n//Image limits \n //Basic=6 \n //Lite=30 \n //Professional=60 \n return profileTier === ProfileTier_DB_PEnum.Core ? 6 : profileTier === ProfileTier_DB_PEnum.Lite ? 30 : 60\n}\n\nexport const accounts = {\n FACEBOOK: 'Facebook',\n TWITTER: 'Twitter',\n INSTAGRAM: 'Instagram',\n PINTEREST: 'Pinterest'\n}\n\nexport const contactDetails = {\n MARKETING: 'Marketing',\n SALES: 'Sales',\n ACCOUNTS: 'Accounts'\n}\n\nexport const inclusionTypes = {\n select: 'Select...',\n optional: 'Optional',\n included: 'Included',\n extra: 'Extra'\n}\n\nexport const getDefaultProfileItemType = (profileItemTypes) => {\n switch (profileItemTypes[0]) {\n case ProfileItemType_PEnum.restaurant:\n return ProfileItemType_PEnum.restaurant\n case ProfileItemType_PEnum.activity:\n return ProfileItemType_PEnum.activity\n case ProfileItemType_PEnum.attraction:\n return ProfileItemType_PEnum.attraction\n case ProfileItemType_PEnum.option:\n return ProfileItemType_PEnum.option\n case ProfileItemType_PEnum.itineraries:\n return ProfileItemType_PEnum.itineraries\n case ProfileItemType_PEnum.amenity:\n return ProfileItemType_PEnum.amenity \n case ProfileItemType_PEnum.spaces:\n return ProfileItemType_PEnum.spaces\n case ProfileItemType_PEnum.venue:\n return ProfileItemType_PEnum.venue\n case ProfileItemType_PEnum.stays:\n return ProfileItemType_PEnum.stays\n case ProfileItemType_PEnum.destinations:\n return ProfileItemType_PEnum.destinations\n case ProfileItemType_PEnum.package:\n return ProfileItemType_PEnum.package\n default:\n return ProfileItemType_PEnum.room\n }\n}\n\nexport const GDSCodes = {\n AMADEUS: 'Amadeus',\n GALILEO: 'Galileo',\n PEGASUS: 'Pegasus',\n SABRE: 'Sabre',\n TRAVELPORT: 'Travelport',\n WORLDSPAN: 'Worldspan'\n}\n\nexport const gdsCodesProperties = {\n amadeus: 'Amadeus',\n galileo: 'Galileo',\n pegasus: 'Pegasus',\n sabre: 'Sabre',\n travelport: 'Travelport',\n worldspan: 'Worldspan'\n}\n\nexport const eventTypes = [\n {eventName: \"Banquet\", eventTypeIcon: banquetEventIcon, propertyName: \"maxCapacityForBanquet\"},\n {eventName: \"Boardroom\", eventTypeIcon: boardroomEventIcon, propertyName: \"maxCapacityForBoardroom\"},\n {eventName: \"Reception\", eventTypeIcon: resceptionEventIcon, propertyName: \"maxCapacityForReception\"},\n {eventName: \"School room\", eventTypeIcon: schoolRoomEventIcon, propertyName: \"maxCapacityForSchoolRoom\"},\n {eventName: \"Theatre\", eventTypeIcon: theatreEventIcon, propertyName: \"maxCapacityForTheater\"},\n {eventName: \"U-Shaped\", eventTypeIcon: uShapedEventIcon, propertyName: \"maxCapacityForUShaped\"}\n] \n\nexport const currencies = [\n {code: 'AFN', name: 'Afghan Afghani', country: 'Afghanistan'},\n {code: 'DZD', name: 'Algerian Dinar', country: 'Algeria'},\n {code: 'ARS', name: 'Argentine Peso', country: 'Argentina'},\n {code: 'AMD', name: 'Armenian Dram', country: 'Armenia'},\n {code: 'AWG', name: 'Aruban Florin', country: 'Aruba'},\n {code: 'AUD', name: 'Australian Dollar', country: 'Australia'},\n {code: 'AZN', name: 'Azerbaijanian Manat', country: 'Azerbaijan'},\n {code: 'BSD', name: 'Bahamian Dollar', country: 'Bahamas'},\n {code: 'BHD', name: 'Bahraini Dinar', country: 'Bahrain'},\n {code: 'THB', name: 'Thai Baht', country: 'Thailand'},\n {code: 'PAB', name: 'Panamanian Balboa', country: 'Panama'},\n {code: 'BBD', name: 'Barbados Dollar', country: 'Barbados'},\n {code: 'BYN', name: 'Belarussian Ruble', country: 'Belarus'},\n {code: 'BZD', name: 'Belize Dollar', country: 'Belize'},\n {code: 'BMD', name: 'Bermudian Dollar', country: 'Bermuda'},\n {code: 'VES', name: 'Bolivar Soberano', country: 'Bolivar'},\n {code: 'BOB', name: 'Bolivian Boliviano', country: 'Bolivia'},\n {code: 'BRL', name: 'Brazilian Real', country: 'Brazil'},\n {code: 'BND', name: 'Brunei Dollar', country: 'Brunei'},\n {code: 'BGN', name: 'Bulgarian Lev', country: 'Bulgaria'},\n {code: 'BIF', name: 'Burundi Franc', country: 'Burundi'},\n {code: 'CAD', name: 'Canadian Dollar', country: 'Canada'},\n {code: 'CVE', name: 'Cape Verde Escudo', country: 'Cape Verde'},\n {code: 'KYD', name: 'Cayman Islands Dollar', country: 'Cayman Islands'},\n {code: 'GHS', name: 'Ghanaian Cedi', country: 'Ghana'},\n {code: 'XOF', name: 'CFA Franc BCEAO', country: 'Benin, Burkina Faso, Guinea-Bissau, Ivory Coast, Mali, Niger, Senegal, Togo'},\n {code: 'XAF', name: 'CFA Franc BEAC', country: 'Cameroon, Central African Republic, Chad, Republic of the Congo, Equatorial Guinea, Gabon'},\n {code: 'XPF', name: 'CFP Franc', country: 'French Polynesia, New Caledonia, Wallis and Futuna'},\n {code: 'CLP', name: 'Chilean Peso', country: 'Chile'},\n {code: 'COP', name: 'Colombian Peso', country: 'Colombia'},\n {code: 'KMF', name: 'Comoro Franc', country: 'Comoros'},\n {code: 'CDF', name: 'Congolese France', country: 'Democratic Republic of the Congo'},\n {code: 'BAM', name: 'Convertible Marks', country: 'Bosnia and Herzegovina'},\n {code: 'NIO', name: 'Cordoba Oro', country: 'Nicaragua'},\n {code: 'CRC', name: 'Costa Rican Colon', country: 'Costa Rica'},\n {code: 'HRK', name: 'Croatian Kuna', country: 'Croatia'},\n {code: 'CZK', name: 'Czech Koruna', country: 'Czech Republic'},\n {code: 'GMD', name: 'Gambian Dalasi', country: 'Gambia'},\n {code: 'DKK', name: 'Danish Krone', country: 'Denmark'},\n {code: 'MKD', name: 'Macedonian Denar', country: 'North Macedonia'},\n {code: 'DJF', name: 'Djibouti Franc', country: 'Djibouti'},\n {code: 'STD', name: 'São Tomé and Príncipe Dobra', country: 'São Tomé and Príncipe'},\n {code: 'DOP', name: 'Dominican Peso', country: 'Dominican Republic'},\n {code: 'VND', name: 'Vietnamese Dong', country: 'Vietnam'},\n {code: 'XCD', name: 'East Caribbean Dollar', country: 'East Caribbean'},\n {code: 'EGP', name: 'Egyptian Pound', country: 'Egypt'},\n {code: 'SVC', name: 'El Salvador Colon', country: 'El Salvador'},\n {code: 'ETB', name: 'Ethiopian Birr', country: 'Ethiopia'},\n {code: 'EUR', name: 'European Euro', country: 'Eurozone'},\n {code: 'FKP', name: 'Falkland Islands Pound', country: 'Falkland Islands'},\n {code: 'FJD', name: 'Fiji Dollar', country: 'Fiji'},\n {code: 'HUF', name: 'Hungarian Forint', country: 'Hungary'},\n {code: 'GIP', name: 'Gibraltar Pound', country: 'Gibraltar'},\n {code: 'HTG', name: 'Gourde', country: 'Haiti'},\n {code: 'PYG', name: 'Paraguayan Guaraní', country: 'Paraguay'},\n {code: 'GNF', name: 'Guinea Franc', country: 'Guinea'},\n {code: 'GYD', name: 'Guyana Dollar', country: 'Guyana'},\n {code: 'HKD', name: 'Hong Kong Dollar', country: 'Hong Kong'},\n {code: 'UAH', name: 'Ukrainian Hryvnia', country: 'Ukraine'},\n {code: 'ISK', name: 'Iceland Krona', country: 'Iceland'},\n {code: 'INR', name: 'Indian Rupee', country: 'India'},\n {code: 'IRR', name: 'Iranian Rial', country: 'Iran'},\n {code: 'IQD', name: 'Iraqi Dinar', country: 'Iraq'},\n {code: 'JMD', name: 'Jamaican Dollar', country: 'Jamaica'},\n {code: 'JOD', name: 'Jordanian Dinar', country: 'Jordan'},\n {code: 'KES', name: 'Kenyan Shilling', country: 'Kenya'},\n {code: 'PGK', name: 'Papua New Guinean Kina', country: 'Papua New Guinea'},\n {code: 'LAK', name: 'Lao Kip', country: 'Laos'},\n {code: 'EEK', name: 'Estonian Kroon', country: 'Estonia'},\n {code: 'KWD', name: 'Kuwaiti Dinar', country: 'Kuwait'},\n {code: 'MWK', name: 'Malawian Kwacha', country: 'Malawi'},\n {code: 'AOA', name: 'Kwanza', country: 'Angola'},\n {code: 'MMK', name: 'Myanmar Kyat', country: 'Myanmar'},\n {code: 'GEL', name: 'Georgian Lari', country: 'Georgia'},\n {code: 'LVL', name: 'Latvian Lats', country: 'Latvia'},\n {code: 'LBP', name: 'Lebanese Pound', country: 'Lebanon'},\n {code: 'ALL', name: 'Albanian Lek', country: 'Albania'},\n {code: 'HNL', name: 'Honduran Lempira', country: 'Honduras'},\n {code: 'SLL', name: 'Sierra Leonean Leone', country: 'Sierra Leone'},\n {code: 'LRD', name: 'Liberian Dollar', country: 'Liberia'},\n {code: 'LYD', name: 'Libyan Dinar', country: 'Libya'},\n {code: 'SZL', name: 'Swazi Lilangeni', country: 'Eswatini'},\n {code: 'LTL', name: 'Lithuanian Litas', country: 'Lithuania'},\n {code: 'LSL', name: 'Lesotho Loti', country: 'Lesotho'},\n {code: 'MGA', name: 'Malagasy Ariary', country: 'Madagascar'},\n {code: 'MYR', name: 'Malaysian Ringgit', country: 'Malaysia'},\n {code: 'TMT', name: 'Azerbaijani Manat', country: 'Turkmenistan'},\n {code: 'MUR', name: 'Mauritius Rupee', country: 'Mauritius Rupee'},\n {code: 'MZN', name: 'Mozambican Metical', country: 'Mozambique'},\n {code: 'MXN', name: 'Mexican Peso', country: 'Mexico'},\n {code: 'MDL', name: 'Moldovan Leu', country: 'Moldolva'},\n {code: 'MAD', name: 'Moroccan Dirham', country: 'Morocco'},\n {code: 'NGN', name: 'Nigerian Naira', country: 'Nigeria'},\n {code: 'ERN', name: 'Eritrean Nakfa', country: 'Eritrea'},\n {code: 'NAD', name: 'Namibia Dollar', country: 'Namibia'},\n {code: 'NPR', name: 'Nepalese Rupee', country: 'Nepal'},\n {code: 'ANG', name: 'Netherlands Antillian Guilder', country: 'Curaçao and Sint Maarten'},\n {code: 'ILS', name: 'New Israeli Sheqel', country: 'Israel'},\n {code: 'RON', name: 'Romanian Leu', country: 'Romania'},\n {code: 'TWD', name: 'New Taiwan Dollar', country: 'Republic of China (Taiwan)'},\n {code: 'NZD', name: 'New Zealand Dollar', country: 'New Zealand'},\n {code: 'BTN', name: 'Bhutanese Ngultrum', country: 'Kingdom of Bhutan'},\n {code: 'KPW', name: 'North Korean Won', country: 'North Korea'},\n {code: 'NOK', name: 'Norwegian Krone', country: 'Norway'},\n {code: 'PEN', name: 'Peruvian Sol', country: 'Peru'},\n {code: 'MRO', name: 'Mauritanian Ouguiya', country: 'Mauritania'},\n {code: 'TOP', name: 'Tongan Paʻanga', country: 'Tonga'},\n {code: 'PKR', name: 'Pakistan Rupee', country: 'Pakistan'},\n {code: 'MOP', name: 'Macanese Pataca', country: 'Macau'},\n {code: 'UYU', name: 'Peso Uruguayo', country: 'Uruguay'},\n {code: 'PHP', name: 'Philippine Peso', country: 'Philippines'},\n {code: 'GBP', name: 'Pound Sterling', country: 'United Kingdom, Jersey, Guernsey, the Isle of Man, South Georgia and the South Sandwich Islands, the British Antarctic Territory, Tristan da Cunha'},\n {code: 'BWP', name: 'Botswana Pula', country: 'Botswana'},\n {code: 'QAR', name: 'Qatari Rial', country: 'State of Qatar'},\n {code: 'GTQ', name: 'Guatemalan Quetzal', country: 'Quetzal'},\n {code: 'ZAR', name: 'South African Rand', country: 'South Africa'},\n {code: 'OMR', name: 'Rial Omani', country: 'Oman'},\n {code: 'KHR', name: 'Cambodian Riel', country: 'Cambodia'},\n {code: 'MVR', name: 'Maldivian Rufiyaa', country: 'Maldives'},\n {code: 'IDR', name: 'Indonesian Rupiah', country: 'Rufiyaa'},\n {code: 'RUB', name: 'Russian Ruble', country: 'Russia'},\n {code: 'RWF', name: 'Rwanda Franc', country: 'Rwanda'},\n {code: 'SHP', name: 'Saint Helena Pound', country: 'Saint Helena and Ascension'},\n {code: 'SAR', name: 'Saudi Riyal', country: 'Saudi Arabia'},\n {code: 'RSD', name: 'Serbian Dinar', country: 'Serbia'},\n {code: 'SCR', name: 'Seychelles Rupee', country: 'Seychelles'},\n {code: 'SGD', name: 'Singapore Dollar', country: 'Singapore'},\n {code: 'SBD', name: 'Solomon Islans Dollar', country: 'Solomon Islands'},\n {code: 'KGS', name: 'Kyrgyzstani Som', country: 'Kyrgyz Republic'},\n {code: 'SOS', name: 'Somali Shilling', country: 'Somalia'},\n {code: 'TJS', name: 'Tajikistani Somoni', country: 'Tajikistan'},\n {code: 'LKR', name: 'Sri Lanka Rupee', country: 'Sri Lanka'},\n {code: 'SDG', name: 'Sudanese Pound', country: 'Republic of the Sudan'},\n {code: 'SRD', name: 'Surinamese Dollar', country: 'Republic of the Sudan'},\n {code: 'SEK', name: 'Swedish Krona', country: 'Sweden'},\n {code: 'CHF', name: 'Swiss Franc', country: 'Switzerland and Liechtenstein'},\n {code: 'SYP', name: 'Syrian Pound', country: 'Syria'},\n {code: 'BDT', name: 'Bangladeshi Taka', country: `People's Republic of Bangladesh`},\n {code: 'WST', name: 'Samoan Tala', country: 'Samoa'},\n {code: 'TZS', name: 'Tanzanian Shilling', country: 'Tanzania'},\n {code: 'KZT', name: 'Kazakhstani Tenge', country: 'Kazakhstan'},\n {code: 'TTD', name: 'Trinidad and Tobago Dollar', country: 'Trinidad and Tobago'},\n {code: 'MNT', name: 'Mongolian Tugrik', country: 'Mongolia'},\n {code: 'TND', name: 'Tunisian Dinar', country: 'Tunisia'},\n {code: 'TRY', name: 'Turkish Lira', country: 'Turkey'},\n {code: 'AED', name: 'UAE Dirham', country: 'United Arab Emirates'},\n {code: 'UGX', name: 'Uganda Shilling', country: 'Uganda'},\n {code: 'CLF', name: 'Unidad de Fomento', country: 'Chile'},\n {code: 'USD', name: 'US Dollar', country: 'United States'},\n {code: 'UZS', name: 'Uzbekistan Sum', country: 'Uzbekistan'},\n {code: 'VUV', name: 'Vanuatu Vatu', country: 'Vanuatu'},\n {code: 'KRW', name: 'South Korean Won', country: 'South Korea'},\n {code: 'YER', name: 'Yemeni Rial', country: 'Yemen'},\n {code: 'JPY', name: 'Japanese Yen', country: 'Japan'},\n {code: 'CNY', name: 'Yuan Renminbi', country: `People's Republic of China`},\n {code: 'ZMW', name: 'Zambian Kwacha', country: 'Zambia'},\n {code: 'ZWL', name: 'Zimbabwe Dollar', country: 'Zimbabwe'},\n {code: 'PLN', name: 'Polish Zloty', country: 'Poland'}\n]\n\nexport const discountPercentages = [10, 15, 20, 25, 30]\n\nexport const pricingStructures = [\n { name: 'Single (S)', key: PricingConfigType_PEnum.single, profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues, ProfileType_PEnum.activity, ProfileType_PEnum.attraction]}, \n { name: 'Per Person (PP)', key: PricingConfigType_PEnum.perPerson, profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.activity, ProfileType_PEnum.attraction, ProfileType_PEnum.venues] }, \n { name: 'Per Person Sharing (PPS)', key: PricingConfigType_PEnum.perPersonSharing, profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues, ProfileType_PEnum.activity, ProfileType_PEnum.attraction] },\n { name: 'Per Person Per Night Sharing (PPPNS)', key: PricingConfigType_PEnum.perPersonPerNightSharing, profileTypes: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues, ProfileType_PEnum.activity, ProfileType_PEnum.attraction]},\n { name: 'Per Room / Suite', key: PricingConfigType_PEnum.perRoomSuite, profileTypes: [ProfileType_PEnum.accommodation] }, \n { name: 'Per Unit / Villa', key: PricingConfigType_PEnum.perUnitVilla, profileTypes: [ProfileType_PEnum.accommodation] }\n]\n\nexport const ratePricingOptionGridSequences = [\n //For grid config sequence, so config items appear in the order UX want not the order they were created.\n { key: PricingConfigType_PEnum.single, sequence: 0 },\n { key: PricingConfigType_PEnum.perPerson, sequence: 1 },\n { key: PricingConfigType_PEnum.perPersonSharing, sequence: 2 },\n { key: PricingConfigType_PEnum.perPersonPerNightSharing, sequence: 3 },\n { key: PricingConfigType_PEnum.perRoomSuite, sequence: 4 },\n { key: PricingConfigType_PEnum.perUnitVilla, sequence: 5 },\n { key: PricingConfigType_PEnum.pax, sequence: 6 },\n { key: PricingConfigType_PEnum.age, sequence: 7 }\n]\n\nexport const conditionsOptions = [\n {title: 'Inclusion', key: 'Inclusion'}, \n {title: 'Payment and Cancellation', key: 'PaymentCancellation'}, \n {title: 'Child Policy', key: 'ChildPolicy'}, \n {title: 'Terms and Conditions', key: 'TermsConditions'}\n]\n\nexport const CONFIG = {\n CONSTS: {\n LATITUDE: {\n MIN: -90,\n MAX: 90\n },\n LONGITUDE: {\n MIN: -180,\n MAX: 180\n },\n CHECK_MACHINE_TRANS_COMPLETE_MILLIS: 15000\n }\n}\n\nexport const coverImageLookupMap = [\n {\n type: ProfileItemType_PEnum.room,\n mediaType: MediaType_PEnum.roomsCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Rooms'\n },\n {\n type: ProfileItemType_PEnum.sleepingArrangement,\n mediaType: MediaType_PEnum.sleepingArrangementsCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Sleeping Arrangement'\n },\n {\n type: ProfileItemType_PEnum.suite,\n mediaType: MediaType_PEnum.suitesCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Suites'\n },\n {\n type:ProfileItemType_PEnum.tent,\n mediaType: MediaType_PEnum.tentsCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Tents'\n },\n {\n type:ProfileItemType_PEnum.unit,\n mediaType: MediaType_PEnum.unitsCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Units'\n },\n {\n type:ProfileItemType_PEnum.villa,\n mediaType: MediaType_PEnum.villasCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Villas'\n },\n {\n type:ProfileItemType_PEnum.dome,\n mediaType: MediaType_PEnum.domesCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Domes'\n },\n {\n type:ProfileItemType_PEnum.carriage,\n mediaType: MediaType_PEnum.carriagesCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Carriages'\n },\n {\n type:ProfileItemType_PEnum.cabin,\n mediaType: MediaType_PEnum.cabinsCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Cabins'\n },\n {\n type: ProfileItemType_PEnum.cabana,\n mediaType: MediaType_PEnum.cabanasCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Cabanas'\n },\n {\n type:ProfileItemType_PEnum.apartment,\n mediaType: MediaType_PEnum.apartmentsCoverImag,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.venues],\n name: 'Apartments'\n },\n {\n type:ProfileItemType_PEnum.restaurant,\n mediaType: MediaType_PEnum.restaurantsCoverImage,\n profileType: [ProfileType_PEnum.accommodation],\n name: 'Restaurants'\n },\n {\n type:ProfileItemType_PEnum.activity,\n mediaType: MediaType_PEnum.activitiesCoverImage,\n profileType: [\n ProfileType_PEnum.accommodation,\n ProfileType_PEnum.activity,\n ProfileType_PEnum.attraction,\n ProfileType_PEnum.destination\n ],\n name: 'Activity options'\n },\n {\n type: FeatureType_PEnum.facility,\n mediaType: MediaType_PEnum.facilitiesCoverImage,\n profileType: [ProfileType_PEnum.accommodation, ProfileType_PEnum.activity, ProfileType_PEnum.attraction],\n name: 'Facilities'\n },\n {\n type:ProfileItemType_PEnum.restaurant,\n mediaType: MediaType_PEnum.spacesCoverImage,\n profileType: [ProfileType_PEnum.restaurant],\n name: 'Available spaces'\n },\n {\n type:ProfileItemType_PEnum.spaces,\n mediaType: MediaType_PEnum.spacesCoverImage,\n profileType: [ProfileType_PEnum.infrastructure],\n name: 'Available spaces'\n },\n {\n type: ProfileItemType_PEnum.option,\n mediaType: MediaType_PEnum.activitiesCoverImage,\n profileType: [ProfileType_PEnum.information],\n name: 'Activity options'\n },\n {\n type: ProfileItemType_PEnum.option,\n mediaType: MediaType_PEnum.optionCoverImage,\n profileType: [ProfileType_PEnum.other],\n name: 'Available options'\n },\n {\n type:ProfileItemType_PEnum.amenity,\n mediaType: MediaType_PEnum.amenitiesCoverImage,\n profileType: [ProfileType_PEnum.accommodation],\n name: 'Amenities'\n },\n {\n type:ProfileItemType_PEnum.attraction,\n mediaType: MediaType_PEnum.attractionsCoverImage,\n profileType: [ProfileType_PEnum.destination],\n name: 'Attractions'\n },\n {\n type:ProfileItemType_PEnum.stays,\n mediaType: MediaType_PEnum.staysCoverImage,\n profileType: [ProfileType_PEnum.destination],\n name: 'Stays'\n },\n {\n type:ProfileItemType_PEnum.destinations,\n mediaType: MediaType_PEnum.destinationsCoverImage,\n profileType: [ProfileType_PEnum.destination],\n name: 'Destinations'\n },\n {\n type:ProfileItemType_PEnum.venue,\n mediaType: MediaType_PEnum.venuesCoverImage,\n profileType: [ProfileType_PEnum.venues],\n name: 'Venue options'\n }\n]\n\nexport const wizardStepId = {\n //TODO: phase wizardNumberSteps out, it is incorrect and misleading. The step number is not fixed but dependent on profile type.\n AFFILIATE_STEP_NUMBER: 0,\n TYPE_STEP_NUMBER: 2,\n DESCRIPTION_STEP_NUMBER: 4,\n LOCATION_STEP_NUMBER: 5,\n DESTINATION_LINKING_STEP_NUMBER: 6,\n FACILITIES_STEP_NUMBER: 7,\n LANGUAGE_STEP_NUMBER: 8,\n INFORMATION_STEP_NUMBER: 9,\n IMAGE_STEP_NUMBER: 10,\n FINALISE_STEP_NUMBER: 11\n}\n\nexport const filterFeaturesData = (data, filterType) => {\n //Recursively parses the featuresData tree structure, filtering out config items (tree leaves) whose restrictedTo array does not contain the specified filterType.\n //A config item is included if:\n //1. Its restrictedTo array contains filterType.\n //2. It has no restrictedTo property.\n //2. filterType parameter is not passed and is therefore null.\n if (Array.isArray(data)) {\n data = data.filter(x => (!x.restrictedTo || !x.restrictedTo.length) || !filterType || x.restrictedTo.some(y => y === filterType))\n .sort((a, b) => a.name.localeCompare(b.name))\n } else {\n for (const i in data) {\n data[i] = filterFeaturesData(data[i], filterType)\n }\n }\n return data\n}\n\nexport const setRateGridDisplaySettings = (configItem) => {\n //Set the pricing config title for each grid row. And set gridSequence, so config items appear in the order UX want not the order they were created.\n const structureItem = pricingStructures.find(x => x.key === configItem.configType)\n const sequenceItem = ratePricingOptionGridSequences.find(x => x.key === configItem.configType)\n if (configItem.configType === PricingConfigType_PEnum.pax) {\n configItem.title = `Passengers: ${configItem.fromValue} - ${configItem.toValue} ${configItem.isPP ? 'PP' : configItem.isPPS ? 'PPS' : ''}`\n } else if (configItem.configType === PricingConfigType_PEnum.age) {\n configItem.title = `Child ages: ${configItem.fromValue} - ${configItem.toValue}`\n } else {\n configItem.title = structureItem ? structureItem.name : ''\n }\n configItem.gridSequence = sequenceItem ? sequenceItem.sequence : 0\n}\n\nexport const isAnyMtLanguages = (iBrochureLanguages) => {\n const arr = iBrochureLanguagesMap.filter(x => iBrochureLanguages.some(y => y === x.name))\n return arr?.some(z => z.isMachine)\n}","// ** Logo\nconst SpinnerComponent = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default SpinnerComponent\n","export default __webpack_public_path__ + \"static/media/logo.86b72fab.svg\";","import axios from 'axios'\nimport { convertToRaw } from 'draft-js'\nimport draftToHtml from 'draftjs-to-html'\nimport {\n accommodationCategoryArray,\n activityCategoryArray,\n attractionsCategoryArray,\n destinationCategoryArray,\n iBrochureLanguagesMap,\n informationServicesCategoryArray,\n infrastructureCategoryArray,\n otherCategoryArray,\n restaurantCategoryArray,\n venuesCategoryArray\n} from '../configs/profileConfig'\nimport { profileTypeMap } from '../configs/profileTypeConfig'\nimport { AssociationType_DB_Enum, DocumentTypes_DB_PEnum, MediaType_PEnum, useFileUploader_PEnums } from '../configs/pseudoEnums'\nimport { TranslatableText } from '../utility/TranslatableText'\n\n// ** Checks if an object is empty (returns boolean)\nexport const isObjEmpty = obj => Object.keys(obj).length === 0\n\n// ** Returns K format from a number\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\n\n// ** Converts HTML to string\nexport const htmlToString = html => html.replace(/<\\/?[^>]+(>|$)/g, '')\n\n// ** Checks if the passed date is today\nconst isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\n/**\n ** Format and return date in Humanize format\n ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\n if (!value) return value\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n// ** Returns short month of passed date\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value)\n let formatting = { month: 'short', day: 'numeric' }\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: 'numeric', minute: 'numeric' }\n }\n\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\nexport const formatDateUTCShort = (value) => {\n if (value) {\n const date = new Date(value)\n const formatting = { year:'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }\n return new Intl.DateTimeFormat('en-GB', formatting).format(new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())))\n } else {\n return ''\n }\n}\n\nexport const formatDateYearShort = (date) => {\n if (date) {\n if (typeof date === 'string') {\n date = new Date(date)\n }\n const day = date.getDate().toLocaleString('en-US', {\n minimumIntegerDigits: 2,\n useGrouping: false\n })\n const month = (date.getMonth() + 1).toLocaleString('en-US', {\n minimumIntegerDigits: 2,\n useGrouping: false\n })\n const year = date.getFullYear()\n const yy = year.toString().substr(-2)\n return `${day}.${month}.${yy}`\n }\n}\n\n// ** Returns correct date format to be used in the profile grid\nexport const GetProfileGridDate = (dateString) => {\n if (dateString) {\n const currentDate = new Date(new Date().toDateString())\n const date = new Date(new Date(dateString).toDateString())\n const days = (currentDate.getTime() - date.getTime()) / (1000 * 60 * 60 * 24)\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n let message = `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()}`\n \n if (days === 0) {\n message = \"< 1 day ago\"\n } else if (days === 1) {\n message = \" 1 day ago\"\n } else if (days < 8) {\n message = `${days} days ago`\n }\n return message\n }\n return ''\n}\n\n\n/**\n ** Return if user is logged in\n ** This is completely up to you and how you want to store the token in your frontend application\n * ? e.g. If you are using cookies to store the application please update this function\n */\nexport const isUserLoggedIn = () => localStorage.getItem('userData')\nexport const getUserData = () => JSON.parse(localStorage.getItem('userData'))\n\n/**\n ** This function is used for demo purpose route navigation\n ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n ** Please note role field is just for showing purpose it's not used by anything in frontend\n ** We are checking role just for ease\n * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'admin') return '/'\n if (userRole === 'client') return '/access-control'\n return '/login'\n}\n \n// ** React Select Theme Colors\nexport const selectThemeColors = theme => ({\n ...theme,\n //*** PLEASE NO NOT CHANGE THESE VALUES WITHOUT TESTING ALL THE AREAS THEY AFFECT ***\n colors: {\n ...theme.colors,\n primary25: '#6CB7411a', // for option hover bg-color - USED FOR DROP DOWNS IN SLEEPING ARRANGEMENTS OVERLAY\n primary50: '#6CB74166', //for active colour on select \n //primary75 not sure where this is used in component but if there are issues this value should be checked\n primary: '#6CB741', // for selected option bg-color - (this is our Wetu $primary colour, see _variables.scss) - USED FOR DROP DOWNS IN SLEEPING ARRANGEMENTS OVERLAY\n neutral10: '#82868b', // for tags bg-color\n neutral20: '#ededed', // for input border-color\n neutral30: '#ededed' // for input hover border-color\n }\n})\n\nexport const updateOrAddItem = (existingItems, updateItem, comparisonField) => {\n //If item of this type exists in the existingItems array update it, otherwise add it. \n //Can be used of any object that has a 'comparisonField' property, eg. for contacts, pass 'type'.\n if (!existingItems || existingItems.length === 0) {\n return [updateItem]\n }\n let found = false\n existingItems = existingItems.map((existingItem) => {\n if (existingItem[comparisonField] === updateItem[comparisonField]) {\n found = true\n return updateItem\n }\n return existingItem\n })\n if (!found) {\n existingItems.push(updateItem)\n }\n return existingItems\n}\n\nexport const sortObjectArray = (array, sortBy, groupBy) => {\n //Sorts an object array by object property name sortBy. groupBy parameter is optional.\n if (groupBy) {\n sortObjectArray(array, groupBy)\n }\n return array?.sort((a, b) => (\n (!groupBy || (groupBy && a[groupBy] === b[groupBy])) ? a[sortBy] > b[sortBy] ? 1 : -1 : 0\n ))\n}\n\nexport const sortObjectArrayDesc = (array, sortBy, groupBy) => {\n //Sorts an object array (descending) by object property name sortBy. groupBy parameter is optional.\n if (groupBy) {\n sortObjectArrayDesc(array, groupBy)\n }\n return array?.sort((a, b) => (\n (!groupBy || (groupBy && a[groupBy] === b[groupBy])) ? a[sortBy] < b[sortBy] ? 1 : -1 : 0\n ))\n}\n\nexport const deleteItem = (existingItems, comparisonField, comparisonValue) => {\n const findIndex = existingItems?.findIndex(x => x[comparisonField] === comparisonValue)\n if (findIndex >= 0) {\n existingItems.splice(findIndex, 1)\n }\n return existingItems\n}\n\nexport const updateObject = (targetObject, updateSourceObject) => {\n //Updates properties of targetObject with properties of updateSourceObject of the same name. eg. updateObject(profile, {name: 'Ellerman Hoos'}) will update the profile's name to Ellerman Hoos if profile has a property called 'name'.\n //Can be used on any object. targetObject is passed and changed by reference, so no return value needed.\n for (const propertyName in updateSourceObject) {\n if (targetObject[propertyName] !== undefined) {\n targetObject[propertyName] = updateSourceObject[propertyName]\n }\n }\n}\n\nexport const firstLetterUpper = (word) => {\n return word?.substring(0, 1).toUpperCase() + word?.substring(1)\n}\n\nexport const getWordCount = (text) => {\n return text ? text.trim().split(' ').length : 0\n}\n\nconst addPlural = (word, pluralSuffix) => {\n if (pluralSuffix === 'ies' || pluralSuffix === 'ves') { //https://www.teachstarter.com/au/teaching-resource/rules-for-plurals-s-es-ies-ves/\n word = word.slice(0, -1) //category => categor. But most words are just 's', eg. document => documents\n }\n return word + pluralSuffix\n}\n\nexport const pluralise = (word, checker, pluralSuffix = 's') => {\n //If plural suffix not supplied assume 's'.\n if (typeof checker === 'number') {\n return checker !== 1 ? addPlural(word, pluralSuffix) : word\n } else if (typeof checker === 'boolean') {\n return checker ? addPlural(word, pluralSuffix) : word\n }\n return 'unknown'\n}\n\nexport const replaceAll = (text, findString, replaceString) => {\n const array = text.split(findString)\n return array.join(replaceString)\n}\n\nexport const getWordCountMsg = (inputText, maxWords, errorObject) => {\n //errorObject is a wrapper object so we can return a primitive type (isError) by reference.\n const wordCount = getWordCount(inputText)\n const diff = maxWords - wordCount\n const wordLabel = pluralise('word', Math.abs(diff), 's')\n\n if (diff > 0) {\n return `${diff} ${wordLabel} remaining`\n } else if (diff < 0) {\n if (errorObject) {\n errorObject.isError = true\n }\n return `${diff * -1} ${wordLabel} too many`\n }\n return `${maxWords} words exactly!`\n}\n\nexport const logError = (err) => {\n console.error(err) //eg. \"Error: Request failed with status code 500.\"\n if (err?.response?.data) {\n console.error(err.response.data) //ex.Message and StackTrace from API.\n }\n}\n\nexport const getDefaultLandingRowsArray = () => {\n const rows = []\n const classColours = ['landing-color-green', 'landing-color-yellow', 'landing-color-red', 'landing-color-blue']\n for (let i = 0; i < 50; i++) {\n const row = {id: i, statusColour: classColours[Math.floor(Math.random() * 4)], ratingColour: classColours[Math.floor(Math.random() * 4)] }\n rows.push(row)\n }\n return rows\n}\n\nexport const getSanitisedFullTextInput = (searchText) => {\n const terms = searchText?.replace(/[\\])}[{(-]/g, '').trim() //Remove brackets from search eg. [CPT] and also hyphens. Regex from https://stackoverflow.com/questions/10844194/remove-parenthesis-from-string-in-javascript/10844426\n return `\"${terms}*\"`\n}\n\nexport const getQueryStringId = () => {\n const loc = window.location.search\n const questionMarkPos = loc?.indexOf('?')\n if (questionMarkPos >= 0) {\n const equalsPos = loc?.indexOf('=', questionMarkPos + 1)\n if (equalsPos >= 0) {\n return loc?.substring(equalsPos + 1)\n }\n }\n return ''\n}\n\nexport const cleanDraftToHtml = (html) => {\n //The HTML generated by 'draftToHtml' (3rd party) is unusual. This function does find/replace to create the HTML we want.\n if (html === '

\\n') {\n //This ensures translationItems get deleted when they delete a translation.\n html = ''\n }\n return html?.replace(//g, \"\").replace(/<\\/ins>/g, \"\")\n}\n\nexport const sortObject = (obj) => {\n return Object.keys(obj).sort().reduce(function (result, key) {\n result[key] = obj[key]\n return result\n }, {})\n}\n\nconst DegreeToRadian = (angle) => Math.PI * angle / 180.0\n\n// Using similar haversineCalculation to Backend API\nexport const haversineCalculation = (lat1, lng1, lat2, lng2) => {\n const earthRadius = 3958.75\n const dLat = DegreeToRadian(lat2 - lat1)\n const dLng = DegreeToRadian(lng2 - lng1)\n\n const a = (Math.sin(dLat / 2)\n * Math.sin(dLat / 2))\n + ((Math.cos(DegreeToRadian(lat1))\n * Math.cos(DegreeToRadian(lat2)))\n * (Math.sin(dLng / 2) * Math.sin(dLng / 2)))\n\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n const dist = earthRadius * c\n\n const kmConversion = 1.609\n\n const distance = dist * kmConversion\n return distance\n}\n\nexport const toTitleCase = (sentence) => {\n //Converts \"this is a title\" to \"This Is A Title\"\n return sentence.replace(\n /\\w\\S*/g,\n function(txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()\n }\n )\n}\n\nexport const toPascalCase = (sentence) => {\n const titleCaseSentence = toTitleCase(sentence)\n return titleCaseSentence.replace(/\\s/g, '')\n}\n\nexport const firstLettersUpper = (str) => {\n return str.toLowerCase().replace(/(^\\s*\\w|[\\.\\!\\?]\\s*\\w)/g, function(c) { return c.toUpperCase() })\n}\n\nexport const toSentenceCase = (sentence) => {\n //Converts \"sleeping arrangements\" to \"Sleeping arrangements\". Or \"this is a sentence. this is another\" to \"This is a sentence. This is another\"\n return firstLettersUpper(sentence)\n}\n\nexport const getFileExtension = (url) => {\n const fileExtension = url.split(/[#?]/)[0].split('.')?.pop()?.trim()?.toLowerCase()\n return fileExtension ? fileExtension : ''\n}\n\nexport const getViewableContentType = (fileExtensionLower) => {\n //Return the content type for file types that can be viewed in a new browser tab.\n return fileExtensionLower === 'pdf' ? 'application/pdf'\n : fileExtensionLower === 'jpg' ? 'image/jpeg'\n : fileExtensionLower === 'jpeg' ? 'image/jpeg'\n : fileExtensionLower === 'png' ? 'image/png'\n : fileExtensionLower === 'gif' ? 'image/gif'\n : fileExtensionLower === 'svg' ? 'image/svg+xml'\n : ''\n}\n\nexport const openLink = async (url) => {\n //PDFs and images should be opened in new browser tab by getting data in bytes and setting content type: //https://stackoverflow.com/questions/61135269/displaying-pdf-file-from-azure-blob-storage-container-in-new-tab\n //By default window.open(url, \"_blank\") downloads the file.\n const config = {\n responseType: \"blob\"\n }\n try {\n const fileExtension = getFileExtension(url)\n const contentType = getViewableContentType(fileExtension)\n if (contentType) {\n const response = await axios.get(url, config)\n const fileBytes = new Blob([response.data], { type: contentType })\n url = URL.createObjectURL(fileBytes)\n }\n window.open(url, \"_blank\")\n } catch (e) {\n console.error('Error opening file', e)\n window.open(url, \"_blank\")\n }\n}\n\nexport const getMediaTypeDescriptor = (mediaType, isTitleCase, isPlural = false) => {\n let descriptor = mediaType === MediaType_PEnum.documentation ? \n 'document' :\n mediaType === MediaType_PEnum.video || mediaType === MediaType_PEnum.embedVideo ? \n 'video' :\n mediaType === MediaType_PEnum.virtualTour ? \n 'virtual tour' :\n mediaType === MediaType_PEnum.panorama ?\n 'panorama' : 'image'\n if (isPlural) {\n descriptor += 's'\n }\n return isTitleCase ? toTitleCase(descriptor) : descriptor\n}\n\nexport const arrayContainsElements = (testArray, elementsArray) => {\n //Returns true if testArray contains all the elements in elementsArray, otherwise false.\n elementsArray = elementsArray.slice().sort()\n testArray = testArray.slice().sort()\n return elementsArray.every(function(value, index) {\n return value === testArray[index]\n })\n}\n\nexport const getMissingArrayElements = (testArray, elementsArray) => {\n //Returns the elements that are missing from testArray (irrespective of order).\n return elementsArray.filter(x => !testArray.find(y => x === y))\n}\n\nconst parseWayPointObject = (wayPoint) => {\n let wayPointString = \"\"\n if (wayPoint) {\n wayPoint.forEach(item => {\n wayPointString = `${wayPointString},${item.lat()},${item.lng()}`\n })\n }\n return wayPointString\n}\n\nexport const parseDirectionObject = (direction) => {\n const parsedInstructions = []\n let points = \"\"\n let wayPoints = \"\"\n let wayPointCount = 0\n direction.forEach(leg => {\n leg.steps.forEach(step => {\n parsedInstructions.push(step.instructions.replace(/<(?:.|\\n)*?>/gm, ''))\n points = points + step.path\n })\n wayPoints = parseWayPointObject(leg.via_waypoints).slice(1)\n wayPointCount = leg.via_waypoints.length\n })\n points = points.replaceAll('(', '').replaceAll(')', '')\n return {parsedInstructions, points, wayPoints, wayPointCount}\n}\n\nexport const getLanguageCodes = (iBrochureLanguages, languages) => {\n return iBrochureLanguages.filter(x => languages.find(y => y === x.name))\n}\n\nexport const removeObjectArrayElements = (objectArray, comparisonField, removeElements) => {\n //Removes removeElements from objectArray if there is a match by comparisonField.\n return objectArray?.filter(\n x => !removeElements?.find(\n y => y[comparisonField] === x[comparisonField]\n )\n )\n}\n\nexport const formatFileSize = (fileSizeKb) => {\n if (fileSizeKb > 1000) {\n return `${(fileSizeKb / 1000).toFixed(1)} MB`\n } else {\n return `${fileSizeKb.toFixed(0)} KB`\n }\n}\n\n//Returns every nth element of an array. \n//eg. everyNth([1, 2, 3, 4, 5, 6], 2) return [2, 4, 6]\n//eg. everyNth([1, 2, 3, 4, 5, 6], 2, 1) return [1, 3, 5]\n//Seems to work directly on a JS dictionary (object) across browsers as well, but internet says you should use Object.keys/values(dictionary) instead.\nexport const everyNth = (arr, nth, offset = 0) => arr?.filter((e, i) => i % nth === nth - 1 - offset)\n\n//Remove array element if found. eg. removeArrayElement([1, 2, 3], 2) returns [1, 3].\nexport const removeArrayElement = (arr, element) => {\n const findIndex = arr.findIndex(x => x === element)\n if (findIndex >= 0) {\n arr.splice(findIndex, 1)\n }\n return arr\n}\n\n//Copies sourceArray[i].propertyName into targetArray[j].propertyName where idFieldName matches\nexport const copyObjectArrayProperty = (sourceArray, targetArray, propertyName, idFieldName) => {\n sourceArray?.forEach(sourceItem => {\n const targetItem = targetArray.find(x => x[idFieldName] === sourceItem[idFieldName])\n if (targetItem) {\n targetItem[propertyName] = sourceItem[propertyName]\n }\n })\n}\n\nexport const getNewSequenceNumber = (collection) => {\n if (collection.length === 0) {\n return 0\n }\n return Math.min.apply(\n Math, collection?.map(\n (item) => {\n return item.sequence\n }\n )\n ) - 1\n}\n\nexport const isValidUrl = (url) => {\n try {\n return !!new URL(url)\n } catch (e) {\n return false\n }\n}\n\nexport const convertDraftJsToHtml = (translatableText, langCode) => {\n const draftJsData = TranslatableText.getStringValue(translatableText, langCode)\n let html = ''\n if (draftJsData?.getCurrentContent) {\n html = cleanDraftToHtml(draftToHtml(convertToRaw(draftJsData.getCurrentContent())))\n }\n\n const existingItem = TranslatableText.get(translatableText, langCode)\n if (html || existingItem?.existsInDb) { //Don't save a blank translationItem, unless it already exists in DB in which case we should delete it (the API will delete it if stringValue is empty).\n TranslatableText.update(translatableText, langCode, html)\n } else if (!html && !existingItem?.existsInDb) { //The object contains draftJs data which we don't want to post to the API, so delete array element.\n TranslatableText.deleteTranslatableTextItem(translatableText, langCode)\n }\n}\n\nexport const getMegaPixels = (mediaItem) => {\n const width = mediaItem?.width\n const height = mediaItem?.height\n if (width > 0 && height > 0) {\n return ((width * height) / 1000000).toFixed(1)\n }\n return 0\n}\n\n// Converts a list to a \"dictionary\" (used with Selector_PEnum to only show the selected controls)\nexport const getSelectedItemsFromList = (listOfItems) => {\n return listOfItems?.reduce((previous, current) => {\n previous[current] = true\n return previous\n }, {})\n}\n\nexport const getTypeAndCategoryMapConfig = (profileType, profileCategory) => {\n let type = profileTypeMap[profileType] || profileTypeMap.default \n \n if (type.categoryOverride) {\n const categoryOverride = type.categoryOverride[profileCategory]\n type = { ...type, ...categoryOverride}\n }\n\n return type\n}\n\nexport const getFeatureCategory = (featuresSection) => {\n return [...new Set(featuresSection.map(item => item.category))]\n}\n\nexport const getFeatureSubCategory = (featuresSection) => {\n return [...new Set(featuresSection.map(item => item.subCategory))]\n}\n\nexport const updateAllArrayElements = (arr, fieldName, newValue) => {\n if (arr?.length) {\n arr?.map(x => { x[fieldName] = newValue })\n }\n return arr\n}\n\nexport const getSliderImages = (mediaItems) => {\n const nonDeletedMediaItems = mediaItems?.sort(c => c.sequence).filter(x => !x.isMarkedForDeletion)\n const mediaItemsImages = nonDeletedMediaItems?.filter(x => x.mediaType === MediaType_PEnum.image)\n\n const sliderImages = nonDeletedMediaItems\n .filter(x => x.mediaType === MediaType_PEnum.sliderImages)\n const sliderMediaImages = mediaItemsImages.slice(1, 4)\n sliderImages.forEach((mediaItem) => {\n sliderMediaImages[mediaItem.sequence] = mediaItem\n })\n return sliderMediaImages\n}\n\nexport const getProfileCategoryDisplayName = (categoryType) => {\n const categories = [\n ...accommodationCategoryArray, \n ...activityCategoryArray,\n ...restaurantCategoryArray,\n ...attractionsCategoryArray,\n ...informationServicesCategoryArray,\n ...infrastructureCategoryArray,\n ...destinationCategoryArray,\n ...otherCategoryArray,\n ...venuesCategoryArray\n ]\n\n const category = categories.find(c => c.value === categoryType)\n return category?.name || ''\n}\n\nexport const isDomNodeChildOf = (domNode, parentId, compareIdAsSubstring = false) => {\n //Checks if a dom node is a child (or grandchild etc.) of dom node with parentId.\n let parentNode = domNode?.parentNode\n while (parentNode) {\n if (parentNode.id === parentId || (compareIdAsSubstring && parentNode.id?.indexOf(parentId) >= 0)) {\n return true\n }\n parentNode = parentNode.parentNode\n }\n return false\n}\n\nexport const EMAIL_REGEX = /^($|(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$)/i\n\nexport const checkEmailValid = (value) => {\n if (!value) {\n return true\n }\n return EMAIL_REGEX.test(value) \n}\n\nexport const firstLetterLower = (word) => {\n return word?.substring(0, 1).toLowerCase() + word?.substring(1)\n}\n\nexport const getLanguageCodeList = (profileLanguageList) => {\n const languageCodeList = []\n iBrochureLanguagesMap.forEach(iBrochure => {\n profileLanguageList.forEach(language => {\n if (iBrochure.name === language) {\n languageCodeList.push({ name: language, code: iBrochure.code })\n }\n })\n })\n return languageCodeList\n}\n\nexport const createAssociatedItem = (associatedItem, profileId, type, associatedItems, isRequired = false) => {\n const newAssociatedItem = {}\n newAssociatedItem.associatedProfileId = associatedItem.profileId\n newAssociatedItem.name = associatedItem.name\n newAssociatedItem.latitude = associatedItem.pin.latitude\n newAssociatedItem.longitude = associatedItem.pin.longitude\n newAssociatedItem.type = type\n newAssociatedItem.profileId = profileId\n newAssociatedItem.isPreferred = associatedItems.length === 0\n newAssociatedItem.isPrivate = associatedItem.isPrivate\n newAssociatedItem.sequence = getNewSequenceNumber(associatedItems)\n newAssociatedItem.isRequired = isRequired\n\n return newAssociatedItem\n}\n\nexport const replaceAssociatedItem = (associatedItem, associatedReplacing) => {\n const newAssociatedItem = {}\n newAssociatedItem.associatedProfileId = associatedReplacing.profileId\n newAssociatedItem.name = associatedReplacing.name\n newAssociatedItem.latitude = associatedReplacing.pin.latitude\n newAssociatedItem.longitude = associatedReplacing.pin.longitude\n newAssociatedItem.isPrivate = associatedReplacing.isPrivate\n\n newAssociatedItem.profileId = associatedItem.profileId\n newAssociatedItem.isPreferred = associatedItem.isPreferred\n newAssociatedItem.sequence = associatedItem.sequence\n newAssociatedItem.type = associatedItem.type\n newAssociatedItem.isRequired = associatedItem.isRequired\n return newAssociatedItem\n}\n\nexport const getDocumentsEnumUiLabel = (documentsEnum) => {\n switch (documentsEnum) {\n case DocumentTypes_DB_PEnum.covidNotice:\n return 'COVID-19 notice'\n case DocumentTypes_DB_PEnum.factSheet:\n return 'Fact sheets'\n case DocumentTypes_DB_PEnum.foodAndBeverage:\n return 'Food and beverage'\n case DocumentTypes_DB_PEnum.faqs:\n return 'FAQs'\n case DocumentTypes_DB_PEnum.otherGeneral:\n return 'Other / General'\n default:\n return documentsEnum\n }\n}\n\nexport const getDestinationProfile = (destinations) => {\n const profileIds = []\n\n destinations\n .filter(x => x.type === AssociationType_DB_Enum.destination)\n .forEach(c => { \n profileIds.push(c.associatedProfileId)\n })\n return {profileIds}\n}\n\nexport const toFloat = (inputString, isOnChange = false, numDecimalPlaces = null) => {\n //Strips out non-numeric characters. parseFloat is needed because the regex accepts 1.2.3\n let newVal = inputString.replace(/[^\\d.-]/g, '') //Allows 1. or 1.2.3\n if (!isOnChange) {\n newVal = parseFloat(newVal) //1.2.3 => 1.2\n } else {\n //If this is onChange then we need to allow '1.'\n newVal = newVal.split('.').splice(0, 2).join('.') //1.2.3 => 1.2\n }\n\n if (numDecimalPlaces) {\n newVal = newVal.substr(0, newVal.indexOf('.') > -1 ? newVal.indexOf('.') + (numDecimalPlaces + 1) : undefined)\n }\n return newVal\n}\n\nexport const updateUploadMedia = (filesDone, mediaItems) => {\n filesDone.forEach(uploadedMediaItem => {\n const media = mediaItems.find(x => x.id === uploadedMediaItem.id)\n if (media) {\n media.blobRelativePath = uploadedMediaItem.blobRelativePath\n media.blobUrl = uploadedMediaItem.blobUrl\n }\n })\n\n return mediaItems\n}\n\nexport const processDoneUpload = (status, actionToTake, filesDone, mediaItems) => {\n if (status === useFileUploader_PEnums.DONE) {\n updateUploadMedia(filesDone, mediaItems)\n actionToTake()\n }\n}\n\nexport const getDmoLinkProfile = (profile) => {\n const dmoLinkProfile = profile.associatedItems?.find(associated => associated.type === AssociationType_DB_Enum.dmoLink)\n return dmoLinkProfile\n}\n\nexport const getDmoLinkProfileId = (profile) => {\n return getDmoLinkProfile(profile)?.associatedProfileId\n}\n\nexport const getNotMarkedForDeletion = (items) => items.filter(item => !item.isMarkedForDeletion)\n\nexport const concatArraysIfNotNull = (...arrays) => {\n //return a concatenation of arrays that are not null, or else [] if they are all null.\n return [].concat(...arrays.filter(Array.isArray))\n}\n\nexport const getTrackingMediaId = (mediaItem) => {\n if (mediaItem.documentType) { \n return `${mediaItem.documentType}_${mediaItem.id}`\n }\n return mediaItem.id\n}\n\nexport const stringIsNullUndefinedOrEmpty = (str) => {\n return str === undefined || str === null || str.length <= 0\n}\n\nexport const isWetuOwned = (row) => {\n // Wetu owned doesnt always have a operator assigned, if it does it it will be 1\n return !row.profileAccounts?.length || row.profileAccounts?.some(x => x.operatorId === 1)\n}\n\nexport const groupBy = (arr, groupByFieldName) => {\n //Creates an array of arrays from arr, grouped by groupByFieldName.\n //Eg. groupBy([{i: 1, x: 'a'}, {i: 1, x: 'b'}, {i: 2, x: 'c'}, {i: 2, x: 'd'}], 'i') will group by i to create an array of arrays of length 2, each element containing 2 elements.\n let data = arr.reduce(function(accumulator, currentValue) {\n (accumulator[currentValue[groupByFieldName]] = accumulator[currentValue[groupByFieldName]] || []).push(currentValue)\n return accumulator\n }, [])\n if (!Array.isArray(data)) {\n data = [data]\n }\n return data\n}","// ** Initial State\nconst initialState = {\n userData: {}\n}\n\nconst authReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'LOGIN':\n return {\n ...state,\n userData: action.data,\n [action.config.storageTokenKeyName]: action[action.config.storageTokenKeyName],\n [action.config.storageRefreshTokenKeyName]: action[action.config.storageRefreshTokenKeyName]\n }\n case 'LOGOUT':\n const obj = { ...action }\n delete obj.type\n return { ...state, userData: {}, ...obj }\n default:\n return state\n }\n}\n\nexport default authReducer\n","// ** Initial State\nconst initialState = {\n suggestions: [],\n bookmarks: [],\n query: ''\n}\n\nconst navbarReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_SEARCH_QUERY':\n return { ...state, query: action.val }\n case 'GET_BOOKMARKS':\n return { ...state, suggestions: action.data, bookmarks: action.bookmarks }\n case 'UPDATE_BOOKMARKED':\n let objectToUpdate\n\n // ** find & update object\n state.suggestions.find(item => {\n if (item.id === action.id) {\n item.isBookmarked = !item.isBookmarked\n objectToUpdate = item\n }\n })\n\n // ** Get index to add or remove bookmark from array\n const bookmarkIndex = state.bookmarks.findIndex(x => x.id === action.id)\n\n if (bookmarkIndex === -1) {\n state.bookmarks.push(objectToUpdate)\n } else {\n state.bookmarks.splice(bookmarkIndex, 1)\n }\n\n return { ...state }\n default:\n return state\n }\n}\n\nexport default navbarReducer\n","// ** ThemeConfig Import\nimport themeConfig from '@configs/themeConfig'\n\n// ** Returns Initial Menu Collapsed State\nconst initialMenuCollapsed = () => {\n const item = window.localStorage.getItem('menuCollapsed')\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed\n}\n\n// ** Initial State\nconst initialState = {\n isRTL: themeConfig.layout.isRTL,\n menuCollapsed: initialMenuCollapsed(),\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth\n}\n\nconst layoutReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_CONTENT_WIDTH':\n return { ...state, contentWidth: action.value }\n case 'HANDLE_MENU_COLLAPSED':\n window.localStorage.setItem('menuCollapsed', action.value)\n return { ...state, menuCollapsed: action.value }\n case 'HANDLE_MENU_HIDDEN':\n return { ...state, menuHidden: action.value }\n case 'HANDLE_RTL':\n return { ...state, isRTL: action.value }\n default:\n return state\n }\n}\n\nexport default layoutReducer\n","import { isAnyMtLanguages } from '../../../configs/profileConfig'\nimport { ProfileCategory_PEnum, ProfileStatus_PEnum, ProfileTier_DB_PEnum, StatusNotification_PEnum, TranslationFieldType_PEnum } from '../../../configs/pseudoEnums'\nimport { TranslatableText } from '../../../utility/TranslatableText'\n\n// ** Initial State\nexport const initialState = {\n isWetuUser: false,\n isUserAuthenticated: false,\n adminUpdatedProfile: null,\n suggestions: { country: [], associations: [], directions: [], airports: [] },\n suggestedDestinations: [],\n profilesInReview: [],\n profileSummaries: [],\n features: {\n featuresData: {\n activities: [],\n property: [],\n rooms: [],\n services: []\n },\n languages: [],\n iBrochureLanguages: [],\n friendly: [],\n specialInterests: [],\n tourOperatorTourAgentGuidance: [],\n suitableFor: [],\n weatherRequirement: [],\n cuisine: [],\n ambiance: [],\n participation: [],\n skills: [],\n venueEquipment: []\n },\n profile: {\n id: '',\n accountIds: [],\n isDistributed: false,\n isEnabled: false,\n profileId: '',\n name: '',\n shortDescription: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.ShortDescription),\n richDescription: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.RichDescription),\n travelInformation: {}, \n type: null,\n languageGuide:[{}],\n category: null,\n pin: { latitude: 0, longitude: 0, drivingLatitude: 0, drivingLongitude: 0 },\n streetAddress: '',\n postalCode: '',\n city: '',\n media: [], //When we load a saved profile the media is passed as a child of profile, but we should never use profile.media in the UI.\n province: '',\n suburb: '',\n country: '',\n contacts: [],\n checkinTimeFrom: '',\n checkinTimeTo: '',\n checkoutTimeFrom: '',\n roomCount: 0,\n tentCount: 0,\n cabinCount: 0,\n seatCount: 0,\n maxGroupSize: 0,\n accommodationsCount: 0,\n restaurantsCount: 0,\n loungesCount: 0,\n terminalsCount: 0,\n shopsCount: 0, \n accommodationsCount: 0,\n restaurantsCount: 0,\n loungesCount: 0,\n terminalsCount: 0,\n shopsCount: 0,\n destinationSize: '',\n population: '',\n destinationCurrency: '',\n starRating: 0,\n features: [], // On Wizard Publish will add English as a feature\n isChanged: false,\n isLoading: true,\n isCreated: false,\n isValidated: false,\n isReviewRequired: false,\n validationSucceeded: false, //if isValidated==true && validationSucceeded==false then review is required.\n isPublished: false,\n isPublishing: false,\n isInReview: false,\n isPrivate: false,\n tier: ProfileTier_DB_PEnum.Core,\n iBrochureLanguages: [\"English\"],\n tags: [],\n associatedItems: [],\n aliases: [],\n resetObject: null,\n qualityAssuranceBody: '',\n alternativeRating: '',\n minimumChildAge: 0,\n availableAccommodationOnsite: 0,\n availableAccommodationOffsite: 0,\n redirectUrl: '',\n dateCreated: null,\n links: {},\n affiliate: 'None', //Setting the Default affiliate to none.\n affiliateCode: '',\n operatingHoursByDay: {\n isOpenPublicHolidays: false,\n isByAppointment: false\n },\n availableLanguages: [],\n officialLanguages: [],\n enabledDisabledProfile: {},\n upgradedDowngradedProfile: {},\n dmo: {\n activities: [],\n stays: [],\n destinations: [],\n polygon: {}\n },\n existsInCache: false,\n profileEditorErrors: {},\n showZoom: true,\n zoomTo: 0,\n minimumZoom: 0,\n maximumZoom: 0,\n //If they downgrade we cannot set isMachineTranslationsEnabled to false because if they click Upgrade again we need to re-show their MT langauges:\n isMtEnabled: (profile) => { return profile.isMachineTranslationsEnabled && profile.tier === ProfileTier_DB_PEnum.Professional && isAnyMtLanguages(profile.iBrochureLanguages) },\n isNightsbridgeData: false,\n hasErrorGettingNightsbridgeData: false,\n userName: '' //Needed for ProfileUpdate changes, so passed back to API controllers that don't have accounts service.\n },\n includeToolbarWithBreadcrumb: true,\n profileGrid: {\n currentPage: 1,\n rowsPerPage: 50,\n searchText: '',\n sortColumn: {\n sortColumnName: 'DateCreated',\n sortDirection: 'desc'\n },\n totalPage: 1,\n tierFilter: '',\n typeFilter: '',\n statusFilter: '',\n recordCount: 0,\n noRecords: false,\n currentOperatorId: 0, //Needed so we can create a profileAccounts array for a newly published profile, so we can insert it into the existing profileSummaries, to remove the flicker when the new data loads.\n currentUserName: '', //Needed for profileAccounts array\n preventReload: false //When we create a new profile we don't want the grid to refresh from the API.\n },\n profileEditor: {\n children: [],\n profileEditorImage: \"\",\n profileSliderImages: []\n },\n publishedProfile: {},\n deletedProfile: {},\n deletedProfileId: '',\n linkedScheduledDepartures: [],\n operators: [],\n statusNotification: StatusNotification_PEnum.None,\n isSavingButtonId: null, //The ID of the SpinnerSaveButton that has been clicked. Set inside SpinnerSaveButton.\n isSaving: false, //Set to true once in the axios function. Not set in SpinnerSaveButton because validation logic may prevent axios function running which means the spinner would not disappear if validation fails (and there could be multiple conditional statements before the axios function).\n hasUpgraded: false\n}\n\nconst profileReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'CREATE_PROFILE':\n return {\n ...state,\n profile: {\n ...state.profile,\n id: action.data.profile.id,\n profileId: action.data.profile.id,\n isCreated: action.data.profile.isCreated,\n isValidated: action.data.profile.isValidated,\n isPublished: action.data.profile.isPublished,\n isChanged: false,\n dateCreated: action.data.profile.dateCreated,\n shortDescription: action.data.profile.shortDescription, \n richDescription: action.data.profile.richDescription,\n profileAccounts: action.data.profile.profileAccounts\n }\n }\n case 'SET_DELETED_PROFILE_ID':\n return { ...state, deletedProfileId: action.data }\n case 'INSERT_PROFILE_SUMMARY_AT_TOP':\n const profile = action.data\n const copyProfileSummaries = _.cloneDeep(state.profileSummaries)\n if (copyProfileSummaries?.length > 0 && copyProfileSummaries[0].id !== profile.id) {\n copyProfileSummaries.unshift(profile)\n } else {\n copyProfileSummaries[0] = profile\n }\n return {\n ...state, \n profileSummaries: copyProfileSummaries,\n profileGrid: { ...state.profileGrid, preventReload: true }\n }\n case 'SET_PREVENT_GRID_RELOAD':\n return { ...state, profileGrid: { ...state.profileGrid, preventReload: action.data } }\n case 'SET_PROFILE_SUMMARIES':\n const gridChanges = {\n sortColumn: { sortColumnName: action.data.sortColumnName, sortDirection: action.data.sortDirection },\n totalPage: action.data.totalPage,\n currentPage: action.data.currentPage,\n rowsPerPage: action.data.rowsPerPage,\n tierFilter: action.data.tierFilter,\n typeFilter: action.data.typeFilter,\n statusFilter: action.data.statusFilter,\n recordCount: action.data.recordCount,\n noRecords: action.data.profileSummaries?.length === 0,\n currentOperatorId: action.data.operatorId,\n currentUserName: action.data.userName\n }\n const newProfileGrid = { ...state.profileGrid, ...gridChanges }\n return { ...state, profileGrid: newProfileGrid, profileSummaries: action.data.profileSummaries }\n case 'UPDATE_PROFILE_SUMMARY_CR':\n const copyExistingItems = _.cloneDeep(state.profileSummaries)\n const responseProfile = action.data\n const existing = copyExistingItems.find(x => x.id === responseProfile.id)\n existing.contentRating = responseProfile.contentRating\n return { ...state, profileSummaries: copyExistingItems }\n case 'SET_SEARCH_TEXT':\n return { ...state, profileGrid: { ...state.profileGrid, searchText: action.data } }\n case 'SET_PROFILE':\n return { ...state, \n profile: { \n ...action.data, \n dmo: action.data.category === ProfileCategory_PEnum.dmo ? state.profile.dmo : {\n activities: [],\n stays: [],\n destinations: []\n }\n } \n }\n case 'SET_NAME':\n return { ...state, profile: { ...state.profile, name: action.data, isChanged: true, isValidated: false } }\n case 'SET_DESCRIPTION':\n return { ...state, profile: { ...state.profile, shortDescription: action.data, isChanged: true } }\n case 'SET_TYPE':\n return { ...state, profile: { ...state.profile, type: action.data, isValidated: false } }\n case 'SET_CATEGORY':\n return { ...state, profile: { ...state.profile, category: action.data } }\n case 'SET_NAME_ADDRESS_LOCATION':\n const data = action.data\n return {\n ...state,\n profile: { ...state.profile, name: data.name, pin: data.pin, streetAddress: data.streetAddress, postalCode: data.postalCode, country: data.country, city: data.city, suburb: data.suburb, province: data.province, isChanged: true, isValidated: false }\n }\n case 'SET_PIN':\n return { ...state, profile: { ...state.profile, pin: action.data, isChanged: true, isValidated: false } }\n case 'SET_STREET_ADDRESS':\n return { ...state, profile: { ...state.profile, streetAddress: action.data, isChanged: true } }\n case 'SET_POSTAL_CODE':\n return { ...state, profile: { ...state.profile, postalCode: action.data, isChanged: true } }\n case 'SET_CITY':\n return { ...state, profile: { ...state.profile, city: action.data, isChanged: true } }\n case 'SET_PROVINCE':\n return { ...state, profile: { ...state.profile, province: action.data, isChanged: true } }\n case 'SET_SUBURB':\n return { ...state, profile: { ...state.profile, suburb: action.data, isChanged: true } }\n case 'SET_COUNTRY':\n return { ...state, profile: { ...state.profile, country: action.data, isChanged: true } }\n case 'SET_PROFILE_CONTACT':\n let found = false\n const existingItems = (!state.profile.contacts \n || state.profile.contacts.length === 0) ? [] : state.profile.contacts.map((existingItem) => {\n if (existingItem.type === action.data.type && existingItem.fieldType === action.data.fieldType) {\n found = true\n return action.data\n }\n return existingItem\n })\n \n if (!found) {\n existingItems.push(action.data)\n }\n \n return {\n ...state,\n profile: {\n ...state.profile,\n contacts: existingItems,\n isChanged: true\n }\n }\n case 'DELETE_PROFILE_CONTACT':\n const contactsCopy = Object.assign([], state.profile.contacts)\n if (action.data.type && action.data.fieldType) {\n const findIndex = contactsCopy?.findIndex(x => x.type === action.data.type && x.fieldType === action.data.fieldType)\n if (findIndex >= 0) {\n contactsCopy.splice(findIndex, 1)\n }\n } else if (!action.data.fieldType && action.data.type) {\n const fields = contactsCopy.filter(y => y.type === action.data.type)\n fields.forEach(field => {\n const findIndex = contactsCopy?.findIndex(z => z.type === field.type && z.fieldType === field.fieldType)\n if (findIndex >= 0) {\n contactsCopy.splice(findIndex, 1)\n }\n })\n }\n return { ...state, profile: { ...state.profile, contacts: contactsCopy, isChanged: true } }\n case 'SET_PROFILE_CHECK_IN_FROM':\n return { ...state, profile: { ...state.profile, checkinTimeFrom: action.data, isChanged: true } }\n case 'SET_PROFILE_CHECK_IN_TO':\n return { ...state, profile: { ...state.profile, checkinTimeTo: action.data, isChanged: true } }\n case 'SET_PROFILE_CHECK_OUT_FROM':\n return { ...state, profile: { ...state.profile, checkoutTimeFrom: action.data, isChanged: true } }\n \n case 'SET_ACCOMMODATIONS_COUNT':\n return { ...state, profile: { ...state.profile, accommodationsCount: action.data, isChanged: true } }\n case 'SET_RESTAURANTS_COUNT':\n return { ...state, profile: { ...state.profile, restaurantsCount: action.data, isChanged: true } }\n case 'SET_LOUNGES_COUNT':\n return { ...state, profile: { ...state.profile, loungesCount: action.data, isChanged: true } }\n case 'SET_TERMINALS_COUNT':\n return { ...state, profile: { ...state.profile, terminalsCount: action.data, isChanged: true } }\n case 'SET_SHOPS_COUNT':\n return { ...state, profile: { ...state.profile, shopsCount: action.data, isChanged: true } }\n\n case 'SET_PROFILE_ROOM_COUNT':\n return { ...state, profile: { ...state.profile, roomCount: action.data, isChanged: true } }\n case 'SET_PROFILE_CABIN_COUNT':\n return { ...state, profile: { ...state.profile, cabinCount: action.data, isChanged: true } }\n case 'SET_PROFILE_TENT_COUNT':\n return { ...state, profile: { ...state.profile, tentCount: action.data, isChanged: true } }\n case 'SET_PROFILE_SEAT_COUNT':\n return { ...state, profile: { ...state.profile, seatCount: action.data, isChanged: true } }\n case 'SET_PROFILE_MAX_GROUP_SIZE':\n return { ...state, profile: { ...state.profile, maxGroupSize: action.data, isChanged: true } }\n case 'SET_PROFILE_MINIMUM_CHILD_AGE':\n return { ...state, profile: { ...state.profile, minimumChildAge: action.data, isChanged: true } }\n case 'SET_PROFILE_ACCOMMODATION_ON_SITE':\n return { ...state, profile: { ...state.profile, availableAccommodationOnsite: action.data, isChanged: true } }\n case 'SET_PROFILE_ACCOMMODATION_OFF_SITE':\n return { ...state, profile: { ...state.profile, availableAccommodationOffsite: action.data, isChanged: true } }\n case 'SET_PROFILE_STAR_RATING':\n return { ...state, profile: { ...state.profile, starRating: action.data, isChanged: true } }\n case 'SET_PROFILE_QUALITY_ASSURANCE_BODY':\n return { ...state, profile: { ...state.profile, qualityAssuranceBody: action.data, isChanged: true } }\n case 'SET_PROFILE_ALTERNATIVE_RATING':\n return { ...state, profile: { ...state.profile, alternativeRating: action.data, isChanged: true } }\n case 'SET_PROFILE_CAPACITY':\n return { ...state, profile: { ...state.profile, capacity: action.data, isChanged: true } }\n case 'SET_PROFILE_DIMENSIONS':\n return { ...state, profile: { ...state.profile, dimensions: action.data, isChanged: true } }\n case 'SET_PROFILE_IATA_CODE':\n return { ...state, profile: { ...state.profile, iataCode: action.data, isChanged: true } }\n case 'SET_PROFILE_ICAO_CODE':\n return { ...state, profile: { ...state.profile, icaoCode: action.data, isChanged: true } }\n case 'SET_PROFILE_INFRASTRUCTURE_SIZE':\n return { ...state, profile: { ...state.profile, infrastructureSize: action.data, isChanged: true } }\n case 'SET_FEATURES':\n return { ...state, profile: { ...state.profile, features: action.data, isChanged: true } }\n case 'RESET_PROFILE':\n return { ...state, profile: { ...initialState.profile, resetObject: new Date() } }\n case 'SET_IS_PUBLISHING':\n return { ...state, profile: { ...state.profile, isPublishing: action.data } }\n case 'SET_TIER':\n return { ...state, profile: { ...state.profile, tier: action.data } }\n case 'SET_VISIBILITY':\n return { ...state, profile: { ...state.profile, isPrivate: action.data } }\n case 'SET_WIZARD_SAVE_PAGE_NUMBER':\n return { ...state, profile: { ...state.profile, wizardSavePageNum: action.data, saveTrigger: new Date() } }\n case 'SET_LOAD_TRIGGER':\n return { ...state, profile: { ...state.profile, wizardSavePageNum: action.data, loadTrigger: new Date() } }\n case 'SET_IS_LOADING':\n return { ...state, profile: { ...state.profile, isLoading: action.data } }\n case 'SET_IS_CHANGED':\n return { ...state, profile: { ...state.profile, isChanged: action.data } }\n case 'SET_REDIRECT_URL':\n return { ...state, profile: { ...state.profile, redirectUrl: action.data } }\n case 'SET_ACTIVE_PROFILE_EDITOR_CHILDREN':\n return { ...state, profileEditor: { ...state.profileEditor, children: action.data } }\n case 'SET_PROFILE_EDITOR_IMAGE':\n return { ...state, profileEditor: { ...state.profileEditor, profileEditorImage: action.data } }\n case 'SET_PUBLISHED_PROFILE':\n return { ...state, publishedProfile: action.data } \n case 'SET_PROFILE_OFFICIAL_LANGUAGES':\n return { ...state, profile: { ...state.profile, officialLanguages: action.data, isChanged: true } }\n case 'SET_PROFILE_POPULATION':\n return { ...state, profile: { ...state.profile, population: action.data, isChanged: true } }\n case 'SET_PROFILE_DESTINATION_SIZE':\n return { ...state, profile: { ...state.profile, destinationSize: action.data, isChanged: true } }\n case 'SET_PROFILE_DESTINATION_CURRENCY':\n return { ...state, profile: { ...state.profile, destinationCurrency: action.data, isChanged: true } }\n case 'SET_PROFILE_LANGUAGE_GUIDE':\n return { ...state, profile: { ...state.profile, languageGuide: action.data, isChanged: true } } \n case 'SET_IBROCHURE_LANGUAGES':\n return { ...state, profile: { ...state.profile, iBrochureLanguages: action.data } } //We don't set isChanged here because this happens on load. \n case 'SET_PROFILE_TAGS':\n return { ...state, profile: { ...state.profile, tags: action.data, isChanged: true } }\n case 'SET_PROFILE_SEARCH_ALIASES':\n return { ...state, profile: { ...state.profile, aliases: action.data, isChanged: true } }\n case 'SET_PROFILE_TRANSLATABLE_TEXT_SHORT_DESCRIPTION':\n return { ...state, profile: { ...state.profile, shortDescription: action.data, isChanged: true } }\n case 'SET_PROFILE_TRANSLATABLE_TEXT_RICH_DESCRIPTION':\n return { ...state, profile: { ...state.profile, richDescription: action.data } }\n case 'SET_PROFILE_LINKS':\n return { ...state, profile: { ...state.profile, links: action.data, isChanged: true } }\n case 'SET_ASSOCIATED_ITEMS':\n return { ...state, profile: { ...state.profile, associatedItems: action.data, isChanged: true } }\n case 'SET_PROFILE_AFFILIATE':\n return { ...state, profile: { ...state.profile, affiliate: action.data, isChanged: true } }\n case 'SET_PROFILE_SLIDER_IMAGES':\n return { ...state, profileEditor: { ...state.profileEditor, profileSliderImages: action.data } }\n case 'SET_OPERATING_HOURS_BY_DAY':\n return { ...state, profile: { ...state.profile, operatingHoursByDay: action.data } }\n case 'GET_ALL_FEATURES':\n return { ...state, features: action.data }\n case 'SET_PROFILE_FEATURE_LANGUAGES':\n return { ...state, profile: { ...state.profile, availableLanguages: action.data } }\n case 'GET_PROFILE_AUTOCOMPLETE': \n return { ...state, suggestions: {...state.suggestions, [action.data.suggestionsFor]: action.data.suggestions }}\n case 'CLEAR_PROFILE_AUTOCOMPLETE': \n return { ...state, suggestions: {...state.suggestions, [action.data.suggestionsToClear]: [] }}\n case 'GET_PROFILES_IN_REVIEW':\n return { ...state, profilesInReview: action.data }\n case 'ENABLE_DISABLE_PROFILE':\n return { ...state, enabledDisabledProfile: action.data}\n case 'CLEAR_ENABLE_DISABLE_PROFILE':\n return { ...state, enabledDisabledProfile: {}}\n case 'SET_ITEMS_FOR_DMO_PROFILE':\n const { type, list } = action.data\n return { ...state, profile: { ...state.profile, dmo: {...state.profile.dmo, [`${type}`]: list} }}\n case 'UPGRADE_DOWNGRADE_PROFILE':\n return { ...state, upgradedDowngradedProfile: action.data}\n case 'CLEAR_UPGRADE_DOWNGRADE_PROFILE':\n return { ...state, upgradedDowngradedProfile: {}}\n case 'SET_PROFILE_TIER':\n const summaries = Object.assign([], state.profileSummaries)\n const profileSummary = summaries.find(p => p.id === action.data.profileId)\n if (profileSummary) {\n profileSummary.tier = action.data.tier\n }\n return {...state, profileSummaries: summaries}\n case 'SET_DELETED_PROFILE':\n return { ...state, deletedProfile: action.data }\n case 'REMOVE_PROFILE':\n const profileSummaries = Object.assign([], state.profileSummaries)\n const summary = profileSummaries.find(p => p.id === action.data)\n if (profileSummaries.indexOf(summary) > -1) {\n profileSummaries.splice(profileSummaries.indexOf(summary), 1)\n }\n return { ...state, profileSummaries: profileSummaries }\n case 'SET_IS_MACHINE_TRANSLATIONS_ENABLED':\n return { ...state, profile: { ...state.profile, isMachineTranslationsEnabled: action.data, isChanged: true } }\n case 'SET_EXISTS_IN_CACHE':\n return { ...state, profile: { ...state.profile, existsInCache: action.data } }\n case 'SET_OPERATORS':\n return { ...state, operators: action.data }\n case 'SET_SUGGESTED_DESTINATIONS':\n return {...state, suggestedDestinations: action.data }\n case 'SET_SELECTED_DESTINATION':\n return {...state, profile: {...state.profile, associatedItems: action.data }}\n case 'SET_PROFILE_STATUS':\n return { ...state, profile: { ...state.profile, status: action.data, isChanged: true } }\n case 'UPDATE_PROFILE_STATUS_IN_GRID': {\n const profileList = Object.assign([], state.profileSummaries)\n const matchingProfile = profileList.find(p => p.id === action.data.id)\n if (profileList.indexOf(matchingProfile) > -1) {\n matchingProfile.status = action.data.status\n }\n return {...state, profileSummaries: profileList}\n }\n case 'UPDATE_PROFILE_SUMMARY_IN_GRID': {\n const profileList = _.cloneDeep(state.profileSummaries)\n const matchingProfile = profileList.find(p => p.id === action.data.id)\n if (profileList.indexOf(matchingProfile) > -1) {\n matchingProfile.status = action.data.status\n matchingProfile.country = action.data.country\n matchingProfile.province = action.data.province\n matchingProfile.city = action.data.city\n matchingProfile.suburb = action.data.suburb\n }\n return {...state, profileSummaries: profileList}\n }\n case 'SET_STATUS_NOTIFICATION':\n return { ...state, profile: { ...state.profile, statusNotification: action.data} }\n case 'UPDATE_PROFILE_SUMMARY' :\n const profileSummariesCopy = Object.assign([], state.profileSummaries)\n const foundProfileSummary = profileSummariesCopy.find(p => p.id === action.data.profileId)\n foundProfileSummary.statusNotification = action.data.statusNotification\n return {...state, profileSummaries: profileSummariesCopy}\n case 'SET_IS_PUBLISHED':\n return { ...state, profile: { ...state.profile, isPublished: action.data } }\n case 'PROFILE_FIELD_VALIDATION_FAILURE':\n const errorsCopy = Object.assign({}, state.profile.profileEditorErrors)\n if (action.data.error) {\n errorsCopy[action.data.field] = action.data.error\n } else {\n if (errorsCopy.hasOwnProperty(action.data.field)) {\n delete errorsCopy[action.data.field]\n }\n }\n return { ...state, profile: { ...state.profile, profileEditorErrors: errorsCopy}}\n case 'SET_MAXIMUM_ZOOM':\n return { ...state, profile: { ...state.profile, maximumZoom: action.data}}\n case 'SET_MINIMUM_ZOOM':\n return { ...state, profile: { ...state.profile, minimumZoom: action.data}}\n case 'SET_ZOOM_TO':\n return { ...state, profile: { ...state.profile, zoomTo: action.data}}\n case 'SET_SHOW_ZOOM':\n return { ...state, profile: { ...state.profile, showZoom: action.data}}\n case 'SET_IS_SAVING_BUTTON_ID':\n return { ...state, isSavingButtonId: action.data }\n case 'SET_IS_SAVING':\n return { ...state, isSaving: action.data }\n case 'CLEAR_IS_SAVING':\n return { ...state, isSavingButtonId: null, isSaving: false } //Resets both spinner button properties for convenience.\n case 'SET_ADMIN_UPDATED_PROFILE':\n return { ...state, adminUpdatedProfile: action.data }\n case 'SET_AFFILIATE':\n return { ...state, profile: { ...state.profile, affiliate: action.data}}\n case 'SET_AFFILIATE_CODE':\n return { ...state, profile: { ...state.profile, affiliateCode: action.data}}\n case 'SET_PRINCIPAL_ID':\n return { ...state, profile: { ...state.profile, principalId: action.data}}\n case 'UPDATE_PROFILE_OPERATOR_IDS':\n const summariesCopy = Object.assign([], state.profileSummaries)\n action.data.update.forEach(a => {\n const profileToUpdate = summariesCopy.find(p => p.id === a.profileId)\n profileToUpdate.profileAccounts.push(a)\n })\n if (action.data.remove.ids.length > 0) {\n const operatorProfileSummary = summariesCopy.find(p => p.id === action.data.remove.profileId)\n action.data.remove.ids.forEach(id => {\n const findIndex = operatorProfileSummary.profileAccounts.findIndex(x => x.id === id)\n if (findIndex >= 0) {\n operatorProfileSummary.profileAccounts.splice(findIndex, 1)\n }\n })\n }\n return {...state, profileSummaries: summariesCopy}\n case 'SET_USERDATA':\n return { ...state, isWetuUser: action.data.operatorId === 1, isUserAuthenticated: true }\n case 'SET_IS_WETU_USER':\n return { ...state, isWetuUser: action.data }\n case 'INCLUDE_TOOLBAR_WITH_BREADCRUMB':\n return { ...state, includeToolbarWithBreadcrumb: action.data}\n case 'SET_PROFILE_EDITOR_URL':\n return { ...state, profileEditorUrl: action.data}\n case 'SET_IS_NIGHTSBRIDGE_DATA':\n return { ...state, profile: { ...state.profile, isNightsbridgeData: action.data}}\n case 'ERROR_GETTING_NIGHTSBRIDGE_DATA':\n return { ...state, profile: { ...state.profile, hasErrorGettingNightsbridgeData: true}, isSaving: false}\n case 'CLEAR_GET_NIGHTSBRIDGE_DATA_ERROR':\n return { ...state, profile: { ...state.profile, hasErrorGettingNightsbridgeData: false}, isSaving: false}\n case 'ADD_REMOVE_PROFILE_OPERATOR_IDS': {\n const profileSummaryCopy = _.cloneDeep(state.profileSummaries)\n \n const profileToUpdate = profileSummaryCopy.find(p => p.id === action.data.profileId)\n\n if (profileToUpdate) {\n if (action.data.accountsToAdd.length > 0) {\n profileToUpdate.profileAccounts.push(...action.data.accountsToAdd)\n }\n \n action.data.accountsToRemove.forEach(id => {\n const findIndex = profileToUpdate.profileAccounts.findIndex(x => x.id === id)\n profileToUpdate.profileAccounts.splice(findIndex, 1)\n })\n }\n return {...state, profileSummaries: profileSummaryCopy}\n }\n \n case 'SSE_ENABLE_DISABLE_PROFILE': {\n const profileSummaryItemsCopy = _.cloneDeep(state.profileSummaries)\n const profileItemToUpdate = profileSummaryItemsCopy.find(p => p.id === action.data.profileId)\n if (profileItemToUpdate) {\n profileItemToUpdate.status = action.data.isEnabled \n ? ProfileStatus_PEnum.Active \n : ProfileStatus_PEnum.Disabled\n profileItemToUpdate.isEnabled = action.data.isEnabled\n }\n return { ...state, profileSummaries: profileSummaryItemsCopy}\n }\n\n case 'HAS_TIER_UPGRADED': {\n return {...state, hasUpgraded: action.data}\n }\n \n default:\n return state\n }\n}\n\nexport default profileReducer","import { ProfileCategory_PEnum, ProfileTier_DB_PEnum, StatusNotification_PEnum } from '../../../configs/pseudoEnums'\n// ** Initial State\nexport const initialState = {\n profilesInReview: [],\n profileSummaries: [],\n profileRelationship: { //Loaded when the \n isTrustedRelationship: false,\n profileRating: 0,\n numItineraries: 0,\n relationshipContacts: []\n },\n profile: {\n id: '',\n accountIds: [],\n isDistributed: false,\n isEnabled: false,\n profileId: '',\n name: '',\n type: null,\n category: null,\n streetAddress: '',\n postalCode: '',\n city: '',\n province: '',\n suburb: '',\n country: '',\n contacts: [],\n isChanged: false,\n isLoading: true,\n isCreated: false,\n isValidated: false,\n isReviewRequired: false,\n validationSucceeded: false, //if isValidated==true && validationSucceeded==false then review is required.\n isPublished: false,\n isPublishing: false,\n isInReview: false,\n isPrivate: false,\n tier: ProfileTier_DB_PEnum.Core,\n dateCreated: null,\n userName: '' //Needed for ProfileUpdate changes, so passed back to API controllers that don't have accounts service.\n },\n profileGrid: {\n currentPage: 1,\n rowsPerPage: 50,\n searchText: '',\n sortColumn: {\n sortColumnName: 'DateCreated',\n sortDirection: 'desc'\n },\n totalPage: 1,\n tierFilter: '',\n typeFilter: '',\n statusFilter: '',\n recordCount: 0,\n noRecords: false,\n currentOperatorId: 0, //Needed so we can create a profileAccounts array for a newly published profile, so we can insert it into the existing profileSummaries, to remove the flicker when the new data loads.\n currentUserName: '', //Needed for profileAccounts array\n preventReload: false //When we create a new profile we don't want the grid to refresh from the API.\n },\n operators: [],\n statusNotification: StatusNotification_PEnum.None\n}\n\nconst pubReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'SET_PROFILE_SUMMARIES':\n const gridChanges = {\n sortColumn: { sortColumnName: action.data.sortColumnName, sortDirection: action.data.sortDirection },\n totalPage: action.data.totalPage,\n currentPage: action.data.currentPage,\n rowsPerPage: action.data.rowsPerPage,\n tierFilter: action.data.tierFilter,\n typeFilter: action.data.typeFilter,\n statusFilter: action.data.statusFilter,\n recordCount: action.data.recordCount,\n noRecords: action.data.profileSummaries?.length === 0,\n currentOperatorId: action.data.operatorId,\n currentUserName: action.data.userName\n }\n const newProfileGrid = { ...state.profileGrid, ...gridChanges }\n return { ...state, profileGrid: newProfileGrid, profileSummaries: action.data.profileSummaries }\n case 'SET_PROFILE':\n return { ...state, \n profile: { \n ...action.data, \n dmo: action.data.category === ProfileCategory_PEnum.dmo ? state.profile.dmo : {\n activities: [],\n stays: [],\n destinations: []\n }\n } \n }\n case 'SET_PROFILE_RELATIONSHIP':\n return { ...state, profileRelationship: action.data }\n case 'SET_RELATIONSHIP_CONTACT':\n const newData = Array.isArray(action.data) ? action.data : [action.data]\n const existingContacts = state.profileRelationship.relationshipContacts\n newData.forEach(item => {\n const itemIndex = existingContacts.findIndex(x => x.id === item.id)\n if (itemIndex >= 0) {\n existingContacts[itemIndex] = item\n } else {\n existingContacts.push(item)\n }\n })\n return { ...state, \n profileRelationship: {\n ...state.profileRelationship, \n relationshipContacts: existingContacts\n } \n }\n case 'DELETE_RELATIONSHIP_CONTACTS':\n const existingContactArray = state.profileRelationship.relationshipContacts\n return { ...state,\n profileRelationship: {\n ...state.profileRelationship,\n relationshipContacts: existingContactArray.filter(x => !action.data.includes(x.id))\n }\n }\n case 'SET_CONTACT':\n //Unlike profile contact, there can be more than one contacttype for a relationship (preferred contact 1, preferred contact 2 etc.).\n //So we must identify by id, not type.\n let found = false\n const existingItems = (!state.profile.contacts \n || state.profile.contacts.length === 0) ? [] : state.profile.contacts.map((existingItem) => {\n if (existingItem.type === action.data.type && existingItem.fieldType === action.data.fieldType && existingItem.id === action.data.id) {\n found = true\n return action.data\n }\n return existingItem\n })\n \n if (!found) {\n existingItems.push(action.data)\n }\n return {\n ...state,\n profile: {\n ...state.profile,\n contacts: existingItems,\n isChanged: true\n }\n }\n case 'DELETE_PROFILE_CONTACT':\n const contactsCopy = Object.assign([], state.profile.contacts)\n if (action.data.type && action.data.fieldType) {\n const findIndex = contactsCopy?.findIndex(x => x.type === action.data.type && x.fieldType === action.data.fieldType)\n if (findIndex >= 0) {\n contactsCopy.splice(findIndex, 1)\n }\n } else if (!action.data.fieldType && action.data.type) {\n const fields = contactsCopy.filter(y => y.type === action.data.type)\n fields.forEach(field => {\n const findIndex = contactsCopy?.findIndex(z => z.type === field.type && z.fieldType === field.fieldType)\n if (findIndex >= 0) {\n contactsCopy.splice(findIndex, 1)\n }\n })\n }\n return { ...state, profile: { ...state.profile, contacts: contactsCopy, isChanged: true } }\n\n case 'SET_OPERATORS':\n return { ...state, operators: action.data }\n case 'SET_STATUS_NOTIFICATION':\n return { ...state, profile: { ...state.profile, statusNotification: action.data} }\n case 'UPDATE_PROFILE_OPERATOR_IDS':\n const summariesCopy = Object.assign([], state.profileSummaries)\n action.data.update.forEach(a => {\n const profileToUpdate = summariesCopy.find(p => p.id === a.profileId)\n profileToUpdate.profileAccounts.push(a)\n })\n if (action.data.remove.ids.length > 0) {\n const operatorProfileSummary = summariesCopy.find(p => p.id === action.data.remove.profileId)\n action.data.remove.ids.forEach(id => {\n const findIndex = operatorProfileSummary.profileAccounts.findIndex(x => x.id === id)\n if (findIndex >= 0) {\n operatorProfileSummary.profileAccounts.splice(findIndex, 1)\n }\n })\n }\n return {...state, profileSummaries: summariesCopy}\n case 'ADD_REMOVE_PROFILE_OPERATOR_IDS': {\n const profileSummaryCopy = _.cloneDeep(state.profileSummaries)\n \n const profileToUpdate = profileSummaryCopy.find(p => p.id === action.data.profileId)\n\n if (profileToUpdate) {\n if (action.data.accountsToAdd.length > 0) {\n profileToUpdate.profileAccounts.push(...action.data.accountsToAdd)\n }\n \n action.data.accountsToRemove.forEach(id => {\n const findIndex = profileToUpdate.profileAccounts.findIndex(x => x.id === id)\n profileToUpdate.profileAccounts.splice(findIndex, 1)\n })\n }\n return {...state, profileSummaries: profileSummaryCopy}\n }\n \n default:\n return state\n }\n}\n\nexport default pubReducer","import { TranslationFieldType_PEnum } from '../../../configs/pseudoEnums'\nimport { sortObjectArray, updateOrAddItem } from '../../../utility/Utils'\n\n// ** Initial State\nconst initialState = {\n directions: [],\n isValidated: false,\n isLoading: true,\n isSaving: false,\n isSubmitting: false,\n currentEditorLanguageCodes: {0: 'en'} \n}\n\nexport const getDefaultDirection = (profileId) => {\n return {\n id: '',\n name: TranslatableText.getNew(true, '', TranslationFieldType_PEnum.Name),\n originId: '', \n destinationId: '', \n originPin: {},\n destinationPin: {}, \n originName: '', \n destinationName: '', \n wayPoints: '', \n instructions: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Direction),\n isChanged: false,\n profileId,\n sequence: 0,\n isDirectionTo: true,\n count: 1,\n size: 0,\n existsInDb: false\n }\n}\n\nconst directionReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'GET_DIRECTION':\n return { ...state, ...state.directions.find(x => x.id === action.data)}\n case 'GET_DIRECTIONS':\n return { ...state, directions: action.data }\n case 'SET_IS_VALIDATED':\n return {...state, profile: {...state.directions, isValidated: action.data}}\n case 'SET_IS_LOADING':\n return {...state, profile: {...state.directions, isLoading: action.data}}\n case 'SET_IS_SUBMITTING':\n return {...state, profile: {...state.directions, isSubmitting: action.data}}\n case 'DELETE_DIRECTION':\n state.directions.splice(state.directions.findIndex(x => x.id === action.data), 1)\n return {...state, directions: _.cloneDeep(state.directions) }\n case 'SET_DIRECTION':\n return {...state, \n directions: sortObjectArray(updateOrAddItem(state.directions, action.data, 'id'), 'sequence')\n }\n case 'SET_DIRECTIONS':\n return { ...state, directions: action.data, isLoading: false, isSaving: false, isSubmitting: false\n }\n case 'RESET_DIRECTIONS':\n return {...state, \n directions: initialState.directions,\n isValidated: initialState.isValidated,\n isLoading: initialState.isLoading,\n isSaving: initialState.isSaving,\n isSubmitting: initialState.isSubmitting\n }\n default:\n return state\n }\n}\n\nexport default directionReducer\n","\n// ** Initial State\nconst initialState = {\n show: false,\n title: '',\n message: '',\n showSuccessTick: false,\n showError: false,\n autoHide: true,\n autoHideDelay: 6000,\n customCss: {},\n customHeader: null,\n timeoutId: 0 //The machine translations toast needs to be globally accessible. If you re-request MT on another page it should cancel the first checkExistsInCache request.\n}\n\nconst toasterReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'SET_TOAST':\n return {\n ...state, \n show: action.data.show, \n title: action.data.title, \n message: action.data.message, \n autoHide: typeof action.data.autoHide !== 'undefined' ? action.data.autoHide : true,\n showSuccessTick: typeof action.data.showSuccessTick !== 'undefined' ? action.data.showSuccessTick : false,\n autoHideDelay: typeof action.data.autoHideDelay !== 'undefined' ? action.data.autoHideDelay : state.autoHideDelay,\n showError: typeof action.data.showError !== 'undefined' ? action.data.showError : false,\n customCss: typeof action.data.customCss !== 'undefined' ? action.data.customCss : state.customCss,\n customHeader: typeof action.data.customHeader !== 'undefined' ? action.data.customHeader : null\n }\n case 'CLOSE_TOAST':\n return {\n ...state,\n show: false\n }\n case 'SET_TIMEOUT_ID':\n return {\n ...state,\n timeoutId: action.data\n }\n case 'CLEAR_TIMEOUT':\n clearTimeout(state.timeoutId)\n return {\n ...state,\n timeoutId: 0\n }\n default:\n return state\n }\n }\n \n export default toasterReducer\n ","const initialState = []\n\nconst scheduledDepartures = (state = initialState, action) => {\n switch (action.type) {\n case 'GET_SCHEDULED_DEPARTURE':\n return [...action.data]\n case 'SET_LINKED_SCHEDULED_DEPARTURE': {\n const departuresItineraries = _.cloneDeep(state)\n const departIndex = departuresItineraries.findIndex(x => x.id === action.data.id)\n const depart = departuresItineraries.at(departIndex)\n depart.linked = action.data.linked\n return [...departuresItineraries]\n }\n default:\n return state\n }\n}\n\nexport default scheduledDepartures","// ** Redux Imports\nimport { combineReducers } from 'redux'\n\n// ** Reducers Imports\nimport auth from './auth'\nimport navbar from './navbar'\nimport layout from './layout'\nimport profileReducer from './profile'\nimport pubReducer from './pub'\nimport profileItemReducer from './profileItem'\nimport mediaReducer from './media'\nimport directionReducer from './directions'\nimport toasterReducer from './toaster'\nimport ratesReducer from './rates'\nimport scheduledDepartures from './scheduledDepartures'\n\nconst rootReducer = combineReducers({\n auth,\n navbar,\n layout,\n profileReducer,\n pubReducer,\n profileItemReducer,\n mediaReducer,\n directionReducer,\n toasterReducer,\n ratesReducer,\n scheduledDepartures\n})\n\nexport default rootReducer\n","// ** Redux, Thunk & Root Reducer Imports\nimport thunk from 'redux-thunk'\nimport createDebounce from 'redux-debounced'\nimport rootReducer from '../reducers/rootReducer'\nimport { createStore, applyMiddleware, compose } from 'redux'\n\n// ** init middleware\nconst middleware = [thunk, createDebounce()]\n\n// ** Dev Tools\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n// ** Create store\nconst store = createStore(rootReducer, {}, composeEnhancers(applyMiddleware(...middleware)))\n\nexport { store }\n","// ** React Imports\nimport { useEffect, useState, createContext } from 'react'\n\n// ** Create Context\nconst ThemeColors = createContext()\n\nconst ThemeContext = ({ children }) => {\n // ** State\n const [colors, setColors] = useState({})\n\n //** ComponentDidMount\n useEffect(() => {\n if (window !== 'undefined') {\n //** Get variable value\n const getHex = color => window.getComputedStyle(document.body).getPropertyValue(color).trim()\n\n //** Colors obj\n const obj = {\n primary: {\n light: getHex('--primary').concat('1a'),\n main: getHex('--primary')\n },\n secondary: {\n light: getHex('--secondary').concat('1a'),\n main: getHex('--secondary')\n },\n success: {\n light: getHex('--success').concat('1a'),\n main: getHex('--success')\n },\n danger: {\n light: getHex('--danger').concat('1a'),\n main: getHex('--danger')\n },\n warning: {\n light: getHex('--warning').concat('1a'),\n main: getHex('--warning')\n },\n info: {\n light: getHex('--info').concat('1a'),\n main: getHex('--info')\n },\n dark: {\n light: getHex('--dark').concat('1a'),\n main: getHex('--dark')\n }\n }\n\n setColors({ ...obj })\n }\n }, [])\n\n return {children}\n}\n\nexport { ThemeColors, ThemeContext }\n","// ** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Third Party Components\nimport { Button } from 'reactstrap'\nimport classnames from 'classnames'\n\n// ** Styles\nimport './ripple-button.scss'\n\nconst RippleButton = ({ className, children, onClick, ...rest }) => {\n // ** States\n const [mounted, setMounted] = useState(false)\n const [isRippling, setIsRippling] = useState(false)\n const [coords, setCoords] = useState({ x: -1, y: -1 })\n\n // ** Toggle mounted on mount & unmount\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n // ** Check for coords and set ripple\n useEffect(() => {\n if (mounted) {\n if (coords.x !== -1 && coords.y !== -1) {\n setIsRippling(true)\n setTimeout(() => setIsRippling(false), 500)\n } else {\n setIsRippling(false)\n }\n }\n }, [coords])\n\n // ** Reset Coords on ripple end\n useEffect(() => {\n if (mounted) {\n if (!isRippling) setCoords({ x: -1, y: -1 })\n }\n }, [isRippling])\n\n return (\n {\n const rect = e.target.getBoundingClientRect()\n setCoords({ x: e.clientX - rect.left, y: e.clientY - rect.top })\n if (onClick) {\n onClick(e)\n }\n }}\n {...rest}\n >\n {children}\n {isRippling ? (\n \n ) : null}\n \n )\n}\n\n// ** PropTypes\nRippleButton.propTypes = {\n ...Button.propTypes\n}\n\nButton.Ripple = RippleButton\n","/*eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker === null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (response.status === 404 || (contentType !== null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","// ** React Imports\nimport { Suspense, lazy } from 'react'\nimport ReactDOM from 'react-dom'\n\n// ** Redux Imports\nimport { Provider } from 'react-redux'\nimport { store } from './redux/storeConfig/store'\n\n// ** Toast & ThemeColors Context\nimport { ToastContainer } from 'react-toastify'\nimport { ThemeContext } from './utility/context/ThemeColors'\n\n// ** Spinner (Splash Screen)\nimport Spinner from '../src/views/components/spinner/fallback-spinner'\n\n// ** Ripple Button\nimport './@core/components/ripple-button'\n\n// ** PrismJS\nimport 'prismjs'\nimport 'prismjs/themes/prism-tomorrow.css'\nimport 'prismjs/components/prism-jsx.min'\n\n// ** React Perfect Scrollbar\nimport 'react-perfect-scrollbar/dist/css/styles.css'\n\n// ** React Toastify\nimport '@styles/react/libs/toastify/toastify.scss'\n\n// ** Core styles\nimport './@core/assets/fonts/feather/iconfont.css'\nimport './@core/scss/core.scss'\nimport './assets/scss/style.scss'\n\n// ** Service Worker\nimport * as serviceWorker from './serviceWorker'\n\n// ** Lazy load app\nconst LazyApp = lazy(() => import('./App'))\n\nReactDOM.render(\n \n }>\n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","// You can customize the template with the help of this file\n\n//Template config options\nconst themeConfig = {\n app: {\n appName: 'Wetu',\n appLogoImage: require('@src/assets/images/logo/logo.svg').default\n },\n layout: {\n isRTL: false,\n skin: 'light', // light, dark, bordered, semi-dark\n routerTransition: 'fadeIn', // fadeIn, fadeInLeft, zoomIn, none or check this for more transition https://animate.style/\n type: 'vertical', // vertical, horizontal\n contentWidth: 'full', // full, boxed\n menu: {\n isHidden: false,\n isCollapsed: false\n },\n navbar: {\n // ? For horizontal menu, navbar type will work for navMenu type\n type: 'static', // static , sticky , floating, hidden\n backgroundColor: 'white' // BS color options [primary, success, etc]\n },\n footer: {\n type: 'hidden' // static, sticky, hidden\n },\n customizer: false,\n scrollTop: true // Enable scroll to top button\n }\n}\n\nexport default themeConfig\n","export default __webpack_public_path__ + \"static/media/icon_things-to-do.ed266158.svg\";","export default __webpack_public_path__ + \"static/media/icon_food-and-beverage.8bbec9e0.svg\";","export default __webpack_public_path__ + \"static/media/icon_accommodation.59ea150f.svg\";","export default __webpack_public_path__ + \"static/media/icon_attractions.d4950bb2.svg\";","export default __webpack_public_path__ + \"static/media/icon_infrastructure.6e7229f6.svg\";","export default __webpack_public_path__ + \"static/media/icon_destination.1b190484.svg\";","export default __webpack_public_path__ + \"static/media/icon_venues_bw.bb90fc7a.svg\";","export default __webpack_public_path__ + \"static/media/profile-marker.59ea150f.svg\";","import { accommodationCategoryArray, activityCategoryArray, attractionsCategoryArray, informationServicesCategoryArray, infrastructureCategoryArray, restaurantCategoryArray, venuesCategoryArray, destinationCategoryArray, otherCategoryArray } from './profileConfig'\nimport { ProfileType_PEnum, ProfileItemType_PEnum, sleepingArrangementTypes, MediaType_PEnum, Selector_PEnum, ProfileCategory_PEnum } from './pseudoEnums'\n\nimport activityPin from '../assets/images/icons/profile-type-pin-icons/icon_things-to-do.svg'\nimport restaurantPin from '../assets/images/icons/profile-type-pin-icons/icon_food-and-beverage.svg'\nimport accommodationPin from '../assets/images/icons/profile-type-pin-icons/icon_accommodation.svg'\nimport attractionsPin from '../assets/images/icons/profile-type-pin-icons/icon_attractions.svg'\nimport infrastructurePin from '../assets/images/icons/profile-type-pin-icons/icon_infrastructure.svg'\nimport destinationPin from '../assets/images/icons/profile-type-pin-icons/icon_destination.svg'\nimport venuePin from '../assets/images/icons/profile-type-pin-icons/icon_venues_bw.svg'\n\nimport profileMarker from '../assets/images/icons/profile-marker.svg'\n\nexport const profileTypeMap = { \n [ProfileType_PEnum.accommodation]: {\n descHeaderType: 'property',\n imageHeaderType: 'property',\n profileTypeCategories: accommodationCategoryArray,\n profileLocationIcon: accommodationPin,\n descriptionExample: (\n Set in the vibrant heart of Cape Town’s Waterfront, surrounded by restaurants, shopping, art and entertainment, on the doorstep of Table Mountain; and within easy reach of spectacular beaches.\n ),\n profileItems: {\n name: \"Sleeping arrangements\",\n description: \"Tell us about your rooms, units, or other sleeping arrangements.\",\n navText: \"Add sleeping arrangements\",\n navId: \"finaliseAddSleepingArrangementButton\",\n profileItemTypes: sleepingArrangementTypes,\n typeLabelLower: \"sleeping arrangement\"\n }, \n titleOverlay: \"What does your room type look like?\",\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfRooms,\n Selector_PEnum.minChildAge,\n Selector_PEnum.checkInTime,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.facilities,\n Selector_PEnum.roomPlan,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ], \n coverImageName: 'Why stay here',\n coverImageMediaType: MediaType_PEnum.whyStayHereCoverImage,\n categoryOverride: {\n [ProfileCategory_PEnum.mobileSafari]: {\n informationHeader: 'Camp information',\n informationHeadingSubText: 'Fill in the basics with your phone number and email address.',\n imageHeaderSubText: 'Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. ',\n descHeaderType: 'mobile safari',\n imageHeaderType: 'mobile safari',\n phoneLabel: 'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n locationMap: { mobileSafari: true },\n descriptionExample: (<>\n In addition to ticking off the Big Five and nearly 600 bird species, Botswana offers an unparalleled game experience and natural diversity. Choosing a mobile safari over a traditional lodge is a truly immersive and life-changing experience that captures the essence of the African camping safari.\n

\n Explore remote islands on foot, boat up to elephant herds, and zoom across floodplains in a custom 4x4 in search of game. Watch birds flit across china-blue skies in the afternoons.\n

\n Prior to your departure, we spend time learning about your interests. So, whether you're a wildlife photographer or birder - or simply need to disconnect from the world. There isn't a better way to experience incredible game viewing in a truly wild environment than on a mobile safari.\n ),\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfTents,\n Selector_PEnum.minChildAge,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.participation,\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.languageSpoken\n ],\n titleOverlay: 'What does your sleeping arrangement look like?',\n excludePinAndAddress: true\n },\n [ProfileCategory_PEnum.boat]: {\n informationHeadingSubText: 'Fill in the basics with your phone number and email address.',\n imageHeaderSubText: 'Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. ',\n descHeaderType: 'boat',\n imageHeaderType: 'boat',\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfCabins,\n Selector_PEnum.minChildAge,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.facilities,\n Selector_PEnum.roomPlan,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ], \n facilityLabel: 'Cruise facilities',\n accommodationFacilityLabel: \"Cabin facilities\",\n descriptionExample: (\n Taking her passengers to ports all over the world, the Brilliance of the Seas offers a wide variety of itineraries. Onboard activities and experiences include dance classes, scrapbooking, game shows, pool parties, outdoor movie nights, and shopping, while guests are accommodated in comfortable cabins arranged in various configurations. The ship offers an array of dining and imbibing options, including bars, lounges, coffee shops, restaurants, and fast food outlets.\n ),\n excludePinAndAddress: true\n },\n [ProfileCategory_PEnum.rail]: {\n informationHeadingSubText: 'Fill in the basics with your phone number and email address.',\n imageHeaderSubText: 'Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. ',\n descHeaderType: 'train',\n imageHeaderType: 'train',\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfCabins,\n Selector_PEnum.minChildAge,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.facilities,\n Selector_PEnum.roomPlan,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ], \n facilityLabel: 'Train facilities',\n accommodationFacilityLabel: \"Cabin facilities\",\n descriptionExample: (\n <>\n Step aboard South America's first luxury sleeper train for an unparalleled journey across the Andean plains on board the region's first luxury sleeper train. Travel in sumptuous style between Cusco, Puno, and Arequipa on a one-and two-night adventure, alighting to explore spectacular sights such as Lake Titicaca and the Sumbay caves.\n

\n On board, every detail conjures up the landscape through which the train passes, from subtle takes Peruvian motifs to hand-loomed textiles. Enjoy enticing local specialties in our dining cars, delicious cocktails in the lounge car, and indulgent treatments in our spa car.\n \n ),\n excludePinAndAddress: true\n },\n [ProfileCategory_PEnum.vehicle] : {\n descriptionExample: (<>For those who treasure creature comforts and like camping in style, the Maui Motorhome range is an excellent choice. Campervans are built on quality European Mercedes or VW chassis less than 2.5 years old, so they drive as well as they look. This design combines space, comfort, and style, essentially creating a room where guests can live. In addition to warm neutral colors, reading spotlights, and roomy living areas, the Maui range offers the ultimate in campervan holidays.),\n descHeaderType: 'vehicle',\n languageHeadingStep: 'Languages spoken by your service offering',\n informationHeadingSubText:'Fill in the basics with your phone number and email address.',\n phoneLabel:'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n imageHeaderType: 'vehicle ',\n imageHeaderSubText:'Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. ',\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.minChildAge,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.participation,\n Selector_PEnum.tags,\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.capacityAndDimensions,\n Selector_PEnum.languageSpoken\n ],\n excludePinAndAddress: true\n },\n [ProfileCategory_PEnum.camp]: {\n descriptionExample: (<>\n A prime river location on the banks of the South Luangwa River, Chamilandu Bushcamp is one of Zambia's finest river camps. There is nothing more luxurious than the four-poster beds in the stilted thatch bungalows offered by Chamilandu. In addition to having only three ‘suites’ in the entire camp, this camp is well-known for its exclusivity, guaranteeing you will have an intimate bush experience whatever the time of year.\n

\n As with most camps in the region, Chamilandu is open between June and November, when walking safaris are most popular. Even when you’re not on a drive or walking in the surrounding grasslands you are bound to see many animals. Its charm lies in its proximity to the action: watching game from your bed or enjoying a sundowner from the bathtub while sipping a hot coffee is a must-do experience at Chamilandu.\n )\n }\n }\n },\n [ProfileType_PEnum.activity]: {\n descHeaderType: 'activity',\n imageHeaderType: 'activity',\n profileTypeCategories: activityCategoryArray,\n profileLocationIcon: activityPin,\n descriptionExample: (If you ever have the chance to view Victoria Falls, it would be a life-changing experience and the best way to experience them would be on a guided tour. Learn how the falls formed and what the local customs and traditions are surrounding these natural wonders. In addition to these tours, you will also likely have the opportunity to visit the local art and craft center after the tour.), \n informationHeadingSubText: 'Fill in the basics with your phone number and email address, along with the operating hours.',\n profileItems: {\n name: \"Activity options\",\n description: \"Tell us about your various options.\",\n navText: \"Add options\",\n navId: \"finaliseAddActivityButton\",\n profileItemTypes: [ProfileItemType_PEnum.activity],\n typeLabelLower: \"activity option\",\n profileItemHeader: \"activity option\"\n },\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.maxGroupSize,\n Selector_PEnum.minChildAge,\n Selector_PEnum.operatingHours,\n Selector_PEnum.requirements,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.tags,\n Selector_PEnum.inclusion,\n Selector_PEnum.languageSpoken\n ],\n titleOverlay: 'What does your option look like?',\n coverImageName: 'Why do this',\n coverImageMediaType: MediaType_PEnum.whyDoThisCoverImage\n },\n [ProfileType_PEnum.restaurant]: {\n descHeaderType: 'restaurant',\n imageHeaderType: 'restaurant',\n informationHeadingSubText:'Fill in the basics with your phone number and email address, along with the operating hours.',\n profileTypeCategories: restaurantCategoryArray,\n profileLocationIcon: restaurantPin,\n descriptionExample: (\n <>\n The restaurant and menus at the Black Olive are designed to encourage conversation, whether it is a casual meal, a business lunch, or a leisurely dining event.\n

You can enjoy our waterfront views, starry nights, and cool breezes on our alfresco balcony, or dine inside in the comfort of air conditioning. \n

We are pleased to say that our restaurant is highly appreciated not just by the town's residents but also by travelers and diners from Cape Town and the surrounding areas.\n ),\n profileItems: {\n name: \"Available spaces\",\n description: \"Tell us about your various spaces. \",\n navText: \"Add space\",\n navId: \"finaliseAddAvailableSpacesButton\",\n profileItemTypes: [ProfileItemType_PEnum.restaurant],\n typeLabelLower: \"available space\",\n titleDescription:\"Add your various spaces, for example a private dining room with enticing descriptions and images.\",\n profileItemHeader: \"available space\"\n },\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfSeats,\n Selector_PEnum.minChildAge,\n Selector_PEnum.operatingHours,\n Selector_PEnum.friendly,\n Selector_PEnum.restaurantStyle,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ],\n titleOverlay: 'What does your space look like?',\n coverImageName: 'Why eat here',\n coverImageMediaType: MediaType_PEnum.whyEatHereCoverImage\n },\n [ProfileType_PEnum.attraction]: {\n descHeaderType: 'attraction',\n imageHeaderType: 'attraction',\n profileTypeCategories: attractionsCategoryArray,\n profileLocationIcon: attractionsPin,\n informationHeadingSubText:'Fill in the basics with your phone number and email address, along with the operating hours.',\n descriptionExample: (<>\n {`While it is called the Leaning Tower or Tower of Pisa, it was never used to defend the city; instead,it serves as a bell tower for the religious complex in Duomo Square.`}
\n \n {`With its seven bells - one for each musical note - the largest of which weighs three and a half tons - it played an important role both in `}\n {`human and divine timekeeping. The building is known throughout the world for its beauty, its extraordinary `}\n {`tilt, which makes it an authentic miracle of statics, and its location in the world-famous `}\n {`Piazza dei Miracoli, of which it is undoubtedly the crown jewel. Because of this, it's considered one `}\n {`of the 7 Wonders of the World.`}\n \n ),\n phoneLabel:'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n profileItems: {\n name: \"Activity options\",\n description: \"Tell us about your various options.\",\n navText: \"Add options\",\n navId: \"finaliseAddOptionButton\",\n profileItemTypes: [ProfileItemType_PEnum.activity],\n typeLabelLower: \"activity option\",\n profileItemHeader: \"activity option\"\n },\n phoneLabel:'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.maxGroupSize,\n Selector_PEnum.minChildAge,\n Selector_PEnum.friendly,\n Selector_PEnum.specialInterests,\n Selector_PEnum.operatingHours,\n Selector_PEnum.requirements,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.tags,\n Selector_PEnum.inclusion,\n Selector_PEnum.languageSpoken\n ],\n titleOverlay: 'What does your activity option look like?',\n\n coverImageName: 'Why visit here',\n coverImageMediaType: MediaType_PEnum.whyVisitHereCoverImage\n },\n [ProfileType_PEnum.information]: {\n descHeaderType: 'information / service',\n descSubText: 'Start by telling us the name and description of your service.',\n imageHeaderType: 'service',\n imageHeaderSubText: 'Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer.',\n profileTypeCategories: informationServicesCategoryArray,\n profileLocationIcon: '',\n descriptionExample: (<>\n {`In essence, meet and greet airport services help travelers breeze through all airport formalities with ease and comfort. ABC Safaris guarantees all of that and more. The airport Meet & Greet service we offer is more adaptive to the dynamic challenges that come with modern-day international travel. We're here to offer you the absolute best service, comfort, and luxury on your upcoming trips.`}\n \n ),\n languageHeadingStep: 'Languages spoken by your service offering',\n informationHeadingSubText: 'Fill in the basics with your phone number and email address.',\n phoneLabel:'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n profileItems: {\n name: \"Available options\",\n description: \"Tell us about your various options.\",\n navText: \"Add available options\",\n navId: \"finaliseAddAvailableOptionButton\",\n profileItemTypes: [ProfileItemType_PEnum.option],\n typeLabelLower: \"available option\",\n profileItemHeader: \"option\"\n },\n phoneLabel:'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n titleOverlay: 'What do your available options look like?',\n showSelectors:[\n Selector_PEnum.skills,\n Selector_PEnum.specialInterests,\n Selector_PEnum.inclusion,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ],\n coverImageName: 'Why do this',\n coverImageMediaType: MediaType_PEnum.whyVisitHereCoverImage,\n excludePinAndAddress: true\n },\n [ProfileType_PEnum.infrastructure]: {\n descHeaderType: 'infrastructure',\n imageHeaderType: 'infrastructure',\n profileTypeCategories: infrastructureCategoryArray,\n profileLocationIcon: infrastructurePin,\n informationHeadingSubText:'Fill in the basics with your phone number and email address, along with the operating hours.',\n descriptionExample: (<>\n Known as the Port of Cape Town, the Cape Town harbour lies between the Cape Peninsula and the west coast of Africa. It is one of the busiest ports in South Africa and handles the freshest fruit due to its location along one of the busiest commerce routes in the world. Durban is the port that handles most containers.\n

\n The port also has important repair and maintenance facilities used by a number of large fishing fleets and parts of the West African oil industry. Due to the numerous tourist attractions offered by the Cape and its surrounding region, many cruise ships also dock in the port.\n ),\n profileItems: {\n name: \"Available spaces\",\n description: \"Tell us about your various spaces.\",\n navText: \"Add space\",\n profileItemTypes: [ProfileItemType_PEnum.spaces],\n typeLabelLower: \"Available space\",\n profileItemHeader: \"Space\",\n typeLabelButton: \"Add space\",\n titleDescription: 'Add your various spaces with enticing descriptions and images'\n\n }, \n titleOverlay: \"What does your space look like?\",\n showSelectors:[ \n Selector_PEnum.numberOfAccommodations,\n Selector_PEnum.numberOfRestaurants,\n Selector_PEnum.numberOfLounges,\n Selector_PEnum.numberOfTerminals,\n Selector_PEnum.numberOfShops,\n Selector_PEnum.operatingHours,\n Selector_PEnum.airportCode,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken\n ], \n coverImageName: 'Why stay here',\n coverImageMediaType: MediaType_PEnum.whyStayHereCoverImage\n },\n [ProfileType_PEnum.destination]: {\n descHeaderType: 'attraction',\n imageHeaderType: 'destination',\n phoneLabel: 'Telephone number',\n altPhoneLabel: 'Alternative',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n informationHeadingSubText:'Fill in the basics with your phone number and email address.',\n imageHeaderSubText: \"Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. \",\n profileTypeCategories: destinationCategoryArray,\n profileLocationIcon: destinationPin,\n locationMap: { destination: true },\n descriptionExample: (<>\n Set at the confluence of the Indian and Atlantic oceans and backed by the iconic Table Mountain, the bustling city of Cape Town presents an alluring combination of drawcards. Incredible powdery white beaches, highly acclaimed wine routes, and astonishingly beautiful mountain trails surround a cosmopolitan hub. This diverse metropolis is filled with superb shops and restaurants, extraordinary heritage monuments, a multitude of entertainment venues, and a spectacular, chic waterfront harbour.\n

\n Highlights include the Zeitz Museum of Contemporary African Art; Table Mountain's jaw-dropping views; Boulders Beach, where penguins might swim right up to you in the warm Indian ocean waters; the Kirstenbosch Botanical Gardens, where you can walk along a treetop canopy among incredible native flora or watch an open-air concert at the base of the mountain; Robben Island, where visitors can see the cell where Nelson Mandela was imprisoned for 27 years; and many more.\n ),\n profileItems: {\n name: \"Attractions\",\n description: \"Add your various attractions with enticing descriptions and images.\",\n navText: \"Add Attraction\",\n profileItemTypes: [ProfileItemType_PEnum.attraction],\n typeLabelLower: \"attraction\"\n }, \n titleOverlay: \"Describe your attraction\",\n showSelectors:[\n Selector_PEnum.languageGuide,\n Selector_PEnum.demographic\n ],\n coverImageName: '',\n coverImageMediaType: '',\n categoryOverride: {\n [ProfileCategory_PEnum.dmo]: {\n descHeaderType: 'destination',\n locationMap: { dmo: true },\n descriptionExample: (<>\n Located in South Africa’s beautiful Eastern Cape Province, Kariega Private Game Reserve lies in the upper reaches of the beautiful Kariega River Valley.\n

\n Stretching for over 10 000 hectares, the landscape of the reserve features impressive vistas of forest, savannah grasslands scattered with abundant wildlife, and encompassing two rivers: the Kariega and the Bushmans rivers.\n

\n Visitors can spot the Big Five as well as a variety of other animals including giraffe, eland, zebra, wildebeest, and an array of bird species; paddle a kayak, jump on a game drive or a river cruise for a close encounter with the reserve’s plentiful wildlife.\n ),\n showSelectors:[ \n Selector_PEnum.languageGuide,\n Selector_PEnum.demographic\n ],\n excludePinAndAddress: true\n },\n [ProfileCategory_PEnum.area]: {\n descHeaderType: 'destination',\n locationMap: { area: true },\n descriptionExample: (<>\n Located in South Africa’s beautiful Eastern Cape Province, Kariega Private Game Reserve lies in the upper reaches of the beautiful Kariega River Valley.\n

\n Stretching for over 10 000 hectares, the landscape of the reserve features impressive vistas of forest, savannah grasslands scattered with abundant wildlife, and encompassing two rivers: the Kariega and the Bushmans rivers.\n

\n Visitors can spot the Big Five as well as a variety of other animals including giraffe, eland, zebra, wildebeest, and an array of bird species; paddle a kayak, jump on a game drive or a river cruise for a close encounter with the reserve’s plentiful wildlife.\n ),\n showSelectors:[]\n },\n [ProfileCategory_PEnum.country]: {\n descHeaderType: 'destination',\n locationMap: { area: true, header: 'Map location' },\n descriptionExample: (<>\n Situated in the southern reaches of Africa, Botswana is renowned for its pristine wilderness areas characterised by deep lagoons, wetlands, lush palms, rugged hills, and desert plains. The country’s primary tourist drawcard is undoubtedly the vast red expanse of the Kalahari Desert and its remarkably beautiful Okavango Delta, the largest inland delta in the world. These natural wonders provide a tranquil haven for an abundance of African wildlife to thrive. Other highlights include the impressive Makgadikgadi Salt Pans, where visitors are privy to massive zebra migrations during the flood season; the Savuti plains, which host a significant pride of lions; and the Tsodilo Hills, where 4500 rock paintings form a unique record of human settlement over many millennia.\n ),\n showSelectors: [\n Selector_PEnum.demographic,\n Selector_PEnum.languageGuide\n ]\n },\n [ProfileCategory_PEnum.other]: {\n descHeaderType: 'destination',\n locationMap: { other: true },\n descriptionExample: (<>\n Located in South Africa’s beautiful Eastern Cape Province, Kariega Private Game Reserve lies in the upper reaches of the beautiful Kariega River Valley.\n

\n Stretching for over 10 000 hectares, the landscape of the reserve features impressive vistas of forest, savannah grasslands scattered with abundant wildlife, and encompassing two rivers: the Kariega and the Bushmans rivers.\n

\n Visitors can spot the Big Five as well as a variety of other animals including giraffe, eland, zebra, wildebeest, and an array of bird species; paddle a kayak, jump on a game drive or a river cruise for a close encounter with the reserve’s plentiful wildlife.\n ),\n showSelectors:[]\n }\n }\n },\n \n [ProfileType_PEnum.venues]: {\n descHeaderType: 'Venues',\n imageHeaderType: 'property',\n profileTypeCategories: venuesCategoryArray,\n profileLocationIcon: venuePin,\n informationHeadingSubText:'Fill in the basics with your phone number and email address.',\n descriptionExample: (<>\n Less than an hour from Cape Town City Centre and Cape Town International Airport, located in the heart of the Cape Winelands, The Royal Orchid Cape Town brings you exquisite conferencing facilities with a multitude of fun breakaways and team-building activities right on your doorstep.\n

\n Think wide-open spaces surrounded by majestic mountains, wholesome food celebrating the home-grown bounty of The Royal Orchid, on-site chefs who can cater to your needs, and a great variety of luxury farm accommodation suited for groups big and small.\n

\n We understand the need for results-driven conferencing and that’s why we’ve made sure our conferencing venues are filled with plenty of natural light to keep the creative juices flowing so the team can be as productive as ever.\n ),\n profileItems: {\n venues: {\n name: \"Venue options\",\n description: \"Tell us about your venue options.\",\n navText: \"Add venues\",\n navId: \"finaliseAddVenueButton\",\n profileItemTypes: [ProfileItemType_PEnum.venue],\n typeLabelLower: \"venue\",\n titleOverlay: \"What does your venue look like?\"\n },\n sleepingArrangements: {\n name: \"Sleeping arrangements\",\n description: \"Tell us about your rooms, units, or other sleeping arrangements.\",\n navText: \"Add sleeping arrangements\",\n navId: \"finaliseAddSleepingArrangementButton\",\n profileItemTypes: sleepingArrangementTypes,\n typeLabelLower: \"sleeping arrangement\",\n titleOverlay: \"What does your room type look like?\"\n }}, \n showSelectors: {\n venues: [\n Selector_PEnum.numberOfRooms,\n Selector_PEnum.minChildAge, \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.languageSpoken,\n Selector_PEnum.friendly,\n Selector_PEnum.venueDetails,\n Selector_PEnum.venueEquipment,\n Selector_PEnum.availableAccommodationOnsite,\n Selector_PEnum.availableAccommodationOffsite,\n Selector_PEnum.tags\n ],\n sleepingArrangements: [\n Selector_PEnum.sleepingArrangement,\n Selector_PEnum.numberOfRooms,\n Selector_PEnum.minChildAge,\n Selector_PEnum.languageSpoken,\n Selector_PEnum.friendly,\n Selector_PEnum.qualityAssurance,\n Selector_PEnum.venueEquipment,\n Selector_PEnum.availableAccommodationOnsite,\n Selector_PEnum.availableAccommodationOffsite,\n Selector_PEnum.roomPlan,\n Selector_PEnum.tags\n ]\n }, \n coverImageName: 'Why conference here',\n coverImageMediaType: MediaType_PEnum.whyConferenceHereCoverImage\n },\n\n [ProfileType_PEnum.other]: {\n descHeaderType: 'product offering',\n languageHeadingStep: 'Languages spoken at your product offering',\n imageHeaderType: 'product offering',\n phoneLabel: 'Telephone number',\n phoneErrorMessage: \"Please enter a telephone or reservation telephone number.\",\n informationHeadingSubText:'Fill in the basics with your phone number and email address.',\n imageHeaderSubText: \"Photos are a great way to showcase your product offering. Choose up to {maxFiles} photos to represent your online presence. Drag images to reorder as you prefer. \",\n profileTypeCategories: otherCategoryArray,\n profileLocationIcon: destinationPin,\n profileItems: {\n name: \"Available options\",\n description: \"Tell us about your various options.\",\n navText: \"Add option\",\n profileItemTypes: [ProfileItemType_PEnum.option],\n typeLabelLower: \"option\"\n }, \n titleOverlay: \"Describe your option\",\n showSelectors:[\n Selector_PEnum.languageSpoken,\n Selector_PEnum.skills,\n Selector_PEnum.specialInterests,\n Selector_PEnum.inclusion,\n Selector_PEnum.tags\n ],\n coverImageName: 'Why do this',\n coverImageMediaType: MediaType_PEnum.whyDoThisCoverImage,\n excludePinAndAddress: true\n },\n default: {\n descHeaderType: \"\",\n imageHeaderType: \"\",\n profileTypeCategories: [],\n profileLocationIcon: profileMarker,\n descriptionExample: (''),\n profileItems: {\n name: \"\",\n description: \"\",\n navText: \"\",\n profileItemTypes: [],\n typeLabelLower: \"\",\n typeLabelPlural: \"\"\n },\n showSelectors:[ \n Selector_PEnum.qualityAssurance,\n Selector_PEnum.numberOfRooms,\n Selector_PEnum.maxGroupSize,\n Selector_PEnum.numberOfSeats,\n Selector_PEnum.minChildAge,\n Selector_PEnum.checkInTime,\n Selector_PEnum.operatingHours,\n Selector_PEnum.requirements,\n Selector_PEnum.skills,\n Selector_PEnum.friendly,\n Selector_PEnum.restaurantStyle,\n Selector_PEnum.specialInterests,\n Selector_PEnum.tourGuidance,\n Selector_PEnum.tags,\n Selector_PEnum.languageSpoken,\n Selector_PEnum.languageGuide,\n Selector_PEnum.demographic\n ],\n coverImageName: '',\n coverImageMediaType: ''\n }\n}","import _ from 'lodash'\nimport { DocumentTypes_DB_PEnum, ProfileItemVisibility_DB_PEnum, TranslationFieldType_PEnum } from '../../../configs/pseudoEnums'\nimport { TranslatableText } from '../../../utility/TranslatableText'\nimport { removeObjectArrayElements, sortObjectArray } from '../../../utility/Utils'\n\n// ** Initial State\nconst initialState = {\n mediaItems: [],\n mediaItemSummary: [],\n documentSummaries: [], \n currentIndex: 0,\n isMediaLoaded: false,\n bannerDestinationImages:[],\n showEditImageOverlaySaveToast: false, //If the overlay is opened from the profileItem overlay it should show a save toast.\n fileUploadProgress: {},\n sasToken: ''\n}\n\nexport const getDefaultMediaItem = (mediaType = '') => {\n return {\n id: 0,\n blobId: Date.now(), //newUuid(), //We need a GUID because this needs to be unique, because we store the blob directly from the UI (before we have generated a mediaItem.id [int] on the API side).\n name: TranslatableText.getNew(true, '', TranslationFieldType_PEnum.Name),\n profileId: '',\n parentId: '',\n parentEntityType: '',\n mediaType: mediaType,\n documentType: DocumentTypes_DB_PEnum.none,\n blobRelativePath: '', //Format: profileId/fileName (where fileName is mediaItem.id_originalFileName)\n localUrl: '',\n blobUrl: '',\n embedUrl: '', //For embedded videos.\n azureContainerName: '',\n credit: '',\n fileName: '',\n fileType: '',\n hasFileSizeWarning: false,\n fileSizeKb: 0,\n width: 0,\n height: 0,\n originalFileName: '',\n sequence: 0,\n hasAcceptedUsagePolicy: true,\n visibility: ProfileItemVisibility_DB_PEnum.publicAndTrade,\n uploadErrorMessage: '',\n description: TranslatableText.getNew(true, '', TranslationFieldType_PEnum.Description),\n lastModified: '',\n isChanged: true, //True if an item has been added, edited or deleted. If MediaItem (not blob) has changed (sequence, credit, name etc.) and DB needs to be updated. Use blobUrl to detect if blob exists in db.\n isMarkedForDeletion: false, //True if an item is marked for deletion\n existsInDb: false,\n isRoomPlanImage: false,\n autoTags: [],\n manualTags: \"\",\n thumbnailUrl: '',\n thumbnailBlobRelativePath: ''\n }\n}\n\nconst getUpdatedListAfterDb = (oldList, listChanges) => {\n //For each item in listChanges: \n //if it is a delete, then delete the item from old list. \n //If it is a change, update the item in old list.\n //If it is unchanged, leave the old item as is.\n\n const newList = []\n oldList?.forEach(item => {\n const changeItem = listChanges.find(x => x.id === item.id)\n if (changeItem) {\n if (!changeItem.isMarkedForDeletion) {\n newList.push({...changeItem, existsInDb: true, isChanged: false})\n }\n } else {\n newList.push(item)\n }\n })\n listChanges?.forEach(item => {\n if (!oldList?.find(x => x.id === item.id)) {\n newList.push({...item, existsInDb: true})\n }\n })\n return newList\n}\n\nconst mediaReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'SET_MEDIAITEMS':\n return { ...state, mediaItems: action.data }\n \n case 'ADD_MEDIAITEMS': {\n let cloneAddMediaItems = _.cloneDeep(state.mediaItems)\n\n // filter out media that was not added but edited at the same time.\n const existingMediaItems = action.data.filter(x => cloneAddMediaItems.some(y => y.id === x.id))\n \n // get the added media that was part of the added/updated media\n const newMediaItems = action.data.filter(x => !existingMediaItems.some(y => y.id === x.id))\n\n existingMediaItems.forEach(media => {\n const updateMediaIndex = cloneAddMediaItems.findIndex(x => x.id === media.id)\n cloneAddMediaItems[updateMediaIndex] = media\n })\n\n cloneAddMediaItems = [...cloneAddMediaItems, ...newMediaItems]\n \n return { ...state, mediaItems: cloneAddMediaItems }\n } \n\n case 'UPDATE_MEDIAITEMS': {\n const cloneUpdateMediaItems = _.cloneDeep(state.mediaItems)\n action.data.deletedItem.forEach(mediaItem => {\n const mediaIndex = state.mediaItems.findIndex(x => x.id === mediaItem.id)\n cloneUpdateMediaItems.splice(mediaIndex, 1)\n })\n \n action.data.mediaItems.forEach(media => {\n const updateMediaIndex = cloneUpdateMediaItems.findIndex(x => x.id === media.id)\n if (updateMediaIndex !== -1) {\n cloneUpdateMediaItems[updateMediaIndex] = media\n } else {\n cloneUpdateMediaItems.push(media)\n }\n })\n \n return { ...state, mediaItems: cloneUpdateMediaItems }\n }\n case 'SET_MEDIAITEMS_SUMMARY':\n return { ...state, mediaItemsSummary: action.data }\n case 'SET_DOCUMENT_SUMMARIES':\n return { ...state, documentSummaries: action.data }\n case 'DELETE_MEDIAITEM':\n state.mediaItems.splice(state.mediaItems.findIndex(x => x.id === action.data), 1)\n return {...state, mediaItems: state.mediaItems }\n case 'DELETE_MEDIAITEMS':\n const remaining = removeObjectArrayElements(state.mediaItems, 'id', action.data)\n return {...state, mediaItems: remaining }\n case 'SET_SELECTED_MEDIAITEMS_AFTER_DB_UPDATE':\n let newMediaItems = getUpdatedListAfterDb(state.mediaItems, action.data)\n newMediaItems = sortObjectArray(_.cloneDeep(newMediaItems), 'sequence', 'mediaType')\n return { ...state, mediaItems: newMediaItems }\n case 'RESET_MEDIAITEMS':\n return {...state, mediaItems: initialState.mediaItems, mediaItemSummary: initialState.mediaItemSummary}\n case 'SET_CURRENT_INDEX':\n return {...state, currentIndex: action.data}\n case 'SET_ISMEDIALOADED':\n return {...state, isMediaLoaded: action.data}\n case 'SET_DESTINATION_BANNER_IMAGES':\n return {...state, bannerDestinationImages: action.data }\n case 'SET_SHOW_EDIT_IMAGE_OVERLAY_SAVE_TOAST':\n return {...state, showEditImageOverlaySaveToast: action.data }\n case 'SET_MEDIA_UPLOAD_PERCENT': \n return {...state, fileUploadProgress: {...state.fileUploadProgress, [action.data.mediaId]: action.data.filePercent} }\n case 'SET_SAS_TOKEN':\n return {...state, sasToken: action.data}\n default:\n return state\n }\n}\n\nexport default mediaReducer\n","import { sortObjectArray, updateOrAddItem } from '../../../utility/Utils'\nimport { TranslatableText } from '../../../utility/TranslatableText'\nimport { EntityType_PEnum, ProfileItemType_PEnum, ProfileItemUnitOfArea_PEnum, ProfileItemUnitOfDistance_PEnum, TranslationFieldType_PEnum } from '../../../configs/pseudoEnums'\n\n// ** Initial State\nconst initialState = {\n profileItems: [],\n fullProfileItems: [],\n profileItemOverviews: [],\n isValidated: false,\n isLoading: true,\n isSaving: false,\n isSubmitting: false,\n currentEditorLanguageCodes: {0: 'en'} //Allows us to set the selected language tab from outside of the TranslatableTextEditor component. An optional key can be supplied to the TranslatableTextEditor if there is more than one TranslatableTextEditor on a page, so that changing the language tab on one does not affect the other.\n}\n\nexport const getDefaultProfileItem = (profileId, profileItemType) => {\n return {\n id: '',\n features: [],\n name: TranslatableText.getNew(true, '', TranslationFieldType_PEnum.Name),\n configuration: '',\n description: TranslatableText.getNew(true, '', TranslationFieldType_PEnum.description),\n entityType: EntityType_PEnum.profileItem,\n isChanged: false,\n isEditing: false, //Set to true for item currently edited in the overlay (so we can match the DB version with the local version after save)\n media: [],\n profileId,\n sequence: 0,\n type: profileItemType,\n count: 1,\n size: 0,\n units: profileItemType === ProfileItemType_PEnum.venue ? ProfileItemUnitOfDistance_PEnum.metres : ProfileItemUnitOfArea_PEnum.squareMetres,\n existsInDb: false,\n inclusionType: '', //activities-only property\n affiliateCode: '' //sleeping arrangement only property\n }\n}\n\nconst profileItemReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'GET_PROFILEITEM':\n return { ...state, ...state.profileItems.find(x => x.id === action.data)}\n case 'GET_PROFILEITEMS':\n return { ...state, profileItems: action.data }\n case 'SET_CURRENT_EDITOR_LANGUAGE_CODE':\n return { ...state, currentEditorLanguageCodes: action.data }\n case 'SET_IS_VALIDATED':\n return {...state, profile: {...state.profileItems, isValidated: action.data}}\n case 'SET_IS_LOADING':\n return {...state, profile: {...state.profileItems, isLoading: action.data}}\n case 'SET_IS_SUBMITTING':\n return {...state, profile: {...state.profileItems, isSubmitting: action.data}}\n case 'DELETE_PROFILEITEM':\n const deleteIndex = state.profileItems.findIndex(x => x.id === action.data)\n if (deleteIndex >= 0) {\n const copy = _.cloneDeep(state.profileItems)\n copy.splice(deleteIndex, 1)\n //The cloneDeep is needed. Otherwise dependent useEffects will not fire. Even though an item has been deleted, and redux state updates!\n return {...state, profileItems: copy }\n }\n case 'SET_PROFILEITEM':\n return {...state, \n profileItems: sortObjectArray(updateOrAddItem(state.profileItems, action.data, 'id'), 'sequence')\n }\n case 'SET_SELECTED_PROFILE_ITEM':\n return {...state, selectedProfileItem: action.data }\n case 'SET_PROFILEITEMS':\n return { ...state, profileItems: action.data, isLoading: false, isSaving: false, isSubmitting: false\n }\n case 'SET_FULL_PROFILEITEMS':\n return { ...state, fullProfileItems: action.data, isLoading: false, isSaving: false, isSubmitting: false}\n case 'SET_PROFILEITEM_OVERVIEWS':\n return { ...state, profileItemOverviews: action.data, isLoading: false, isSaving: false, isSubmitting: false}\n case 'RESET_PROFILEITEMS':\n return {...state, \n profileItems: initialState.profileItems,\n isValidated: initialState.isValidated,\n isLoading: initialState.isLoading,\n isSaving: initialState.isSaving,\n isSubmitting: initialState.isSubmitting\n }\n default:\n return state\n }\n}\n\nexport default profileItemReducer\n","import { InclusionType_PEnum, TranslationFieldType_PEnum } from '../../../configs/pseudoEnums'\nimport { TranslatableText } from '../../../utility/TranslatableText'\n\nconst initialState = { \n id: 0,\n profileId: '',\n rateConditions: [\n { type: 'Inclusion', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text), isChanged: false }, \n { type: 'PaymentCancellation', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text), isChanged: false }, \n { type: 'ChildPolicy', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text), isChanged: false }, \n { type: 'TermsConditions', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text), isChanged: false } //TODO: this array should really be empty until we add conditions, but it affects too much functionality in how the TranslatableTextEditor works with rates overlay.\n ],\n ratePricings: [],\n rateSeasons: [],\n currencyCode: 'ZAR',\n existsInDb: false,\n ratePricingConfigurations: [{}],\n hideNettRate: true,\n nettRate: null,\n rateExtraFeeItems: [],\n onlineRatesUrls: {}, //Dictionary: {profileItemType: Url}. This is to handle venues which have a different Url for each profileItem type.\n conditionsDraftJS: {}\n}\n\nexport const getNewRatePricingConfig = (configType, profileItemId, parentProfileItemId, isDummyElement = false, id = 0, isPricingFrom = false) => {\n return {\n id,\n profileRateId: 0,\n profileItemId,\n discountedValue: 0,\n isPricingFrom: isPricingFrom, \n configType: configType ? configType : '', //TODO: make enum\n isPP: false, //isPP/isPPS: it can be neither, one or the other, but not both.\n isPPS: false,\n fromValue: '', //Can include a '+' sign so varchar\n toValue: '',\n existsInDb: false,\n isMarkedForDeletion: false,\n isSelected: false,\n isDummyElement, //To avoid the controlled/uncontrolled error.\n parentProfileItemId,\n gridSequence: 0,\n title: ''\n }\n}\n\nexport const getNewRateExtraFeeItem = (id) => {\n return {\n id,\n itemName: '',\n price: null,\n inclusionType: InclusionType_PEnum.none\n }\n}\n\nexport const getNewRatePricing = (rateSeasonId, ratePricingConfigurationId) => {\n return {\n rateSeasonId, \n ratePricingConfigurationId,\n id: 0, //This can just remain 0 on the UI if !existsInDb because it is not used (we use rateSeasonId and rateConfigId to identify).\n existsInDb: false,\n isMarkedForDeletion: false\n }\n}\n\nconst ratesReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'SET_PROFILE_ID':\n return {...state, profileId: action.data }\n case 'SET_RATES_DATA':\n const { rateConditions, ...other } = action.data \n if (rateConditions?.length > 0) {\n const currentConditions = _.cloneDeep(state.rateConditions)\n rateConditions.forEach(condition => {\n const conditionInCurrentList = currentConditions.find(c => c.type === condition.type)\n conditionInCurrentList.text = condition.text\n conditionInCurrentList.id = condition.id\n conditionInCurrentList.existsInDb = condition.existsInDb\n })\n currentConditions.forEach(condition => { condition.isMarkedForDeletion = false })\n return {...state, ...action.data, rateConditions: currentConditions, conditionsDraftJS: {} }\n }\n return {...state, ...other, conditionsDraftJS: {}}\n case 'SET_RATE_PRICINGS':\n return {...state, ratePricings: action.data }\n case 'SET_RATE_CONDITIONS':\n const conditionsPayload = action.data\n if (conditionsPayload?.length > 0) {\n const stateConditionsCopy = _.cloneDeep(state.rateConditions)\n conditionsPayload.forEach(condition => {\n const conditionInCurrentList = stateConditionsCopy.find(c => c.type === condition.type)\n conditionInCurrentList.text = condition.text\n conditionInCurrentList.isChanged = condition.isChanged\n conditionInCurrentList.isMarkedForDeletion = condition.isMarkedForDeletion\n conditionInCurrentList.existsInDb = condition.existsInDb\n conditionInCurrentList.id = condition.id\n })\n return {...state, rateConditions: stateConditionsCopy }\n }\n return state\n case 'SET_PROFILE_RATE_SEASONS':\n return {...state, rateSeasons: action.data }\n case 'SET_SEASON_RANGES':\n return {...state, season:{...state.season, dateRanges: action.data }}\n case 'DELETE_SEASON':\n const seasonsClone = _.cloneDeep(state.rateSeasons)\n const ratePricingsClone = _.cloneDeep(state.ratePricings)\n return {...state, rateSeasons: seasonsClone.filter(season => season.id !== action.data), rates: ratePricingsClone.filter(rate => rate.RateSeasonId !== action.data)}\n case 'SET_RATES_PRICING_OPTIONS':\n return {...state, pricingOptions: action.data }\n case 'SET_HIDE_NET_RATE':\n return {...state, hideNettRate: action.data }\n case 'SET_NETT_RATE':\n return {...state, nettRate: action.data }\n case 'SET_EXTRA_FEES':\n return {...state, rateExtraFeeItems: action.data }\n case 'SET_CURRENCY_CODE':\n return {...state, currencyCode: action.data }\n case 'SET_RATES_URL':\n return {...state, onlineRatesUrls: action.data }\n case 'SET_CONDITIONS_DRAFTJS':\n const currentConditionsDraftJS = _.cloneDeep(state.conditionsDraftJS)\n return {...state, conditionsDraftJS: {...currentConditionsDraftJS, ...action.data}}\n case 'RESET_RATES':\n const defaultConditions = [\n { type: 'Inclusion', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text) }, \n { type: 'PaymentCancellation', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text) }, \n { type: 'ChildPolicy', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text) }, \n { type: 'TermsConditions', text: TranslatableText.getNew(false, '', TranslationFieldType_PEnum.Text) }\n ]\n return {...initialState, profileId: action.data, rateConditions: defaultConditions}\n case 'SET_RATE_PRICING_CONFIGURATIONS':\n return {...state, ratePricingConfigurations: action.data }\n default:\n return state\n }\n}\n\nexport default ratesReducer"],"sourceRoot":""}