{"version":3,"file":"static/chunks/3079.cb8efe6c7e9d5382.js","mappings":"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","sources":["webpack://_N_E/../../libs/mi-groups-components/src/organisms/ReslinkGuest/ReslinkGuest.tsx"],"sourcesContent":["import React, { FC, useEffect, useState } from 'react';\nimport { InlineMessages, InlineMessagesType } from '@marriott/mi-ui-library';\nimport { EditableComponent } from '@adobe/aem-react-editable-components';\nimport { useQuery } from '@apollo/client';\nimport {\n  getReslinkEventByIdQuery,\n  HotelMediaContent,\n  ReslinkEventByIdResponse,\n  ReslinkEventByIdInput,\n  ReslinkType,\n} from '@marriott/mi-groups-graphql';\nimport { useLocaleStore } from '../../store';\nimport { isAllowedForLocale, getQueryParams, setCalendarOptions } from '../../utils';\nimport { ViewType } from '../SearchResults/SearchResults.types';\nimport { ViewToggle } from '../../molecules';\nimport { PROPERTY_IMAGE_LIST_CATEGORY_LIMIT, HTTP_SUCCESS_CODE } from '../../constants';\nimport { ReslinkGuestProps } from './ReslinkGuest.types';\nimport { PropertyMap } from './PropertyMap';\nimport { EventBanner } from './EventBanner';\nimport { PropertyList } from './PropertyList';\nimport { StyledPropertyList } from './ReslinkGuest.styles';\n\nexport const ReslinkGuestConfig = {\n  emptyLabel: 'ReslinkGuest',\n  isEmpty: () => true,\n  resourceType: `${process.env['NEXT_PUBLIC_AEM_SITE']}/components/content/reslink/reslinkguest`,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ReslinkGuest: FC<{ model: ReslinkGuestProps }> = (props: any) => {\n  const {\n    carouselAriaLabel,\n    carouselImageAriaLabel,\n    logoAriaLabel,\n    bannerImageAltText,\n    externalLinkAriaLabel,\n    bookBy,\n    toAirport,\n    reviews,\n    reviewTooltipText,\n    freeWifi,\n    viewHotelDetails,\n    priceType,\n    dateLabels,\n    roomsAndGuests,\n    checkAvailability,\n    trackingProperties,\n    hotelDetails: hotelDetailsLabel,\n    overview,\n    amenities,\n    map,\n    mapAriaLabel,\n    errors,\n  } = props.model;\n\n  const { shortWeekdayNames, longWeekdayNames, shortMonthNames, longMonthNames } = dateLabels;\n\n  const { locale } = useLocaleStore();\n\n  const [eventId, setEventId] = useState('');\n  const [reslinkType, setReslinkType] = useState<ReslinkType>(ReslinkType.NONE);\n  const [showMapView, setShowMapView] = useState(false);\n\n  useEffect(() => {\n    setCalendarOptions({\n      shortWeekdayNames,\n      longWeekdayNames,\n      shortMonthNames,\n      longMonthNames,\n    });\n  }, [shortWeekdayNames, longWeekdayNames, shortMonthNames, longMonthNames]);\n\n  useEffect(() => {\n    const { id, key } = getQueryParams(window.location.search);\n    setEventId(id);\n    setReslinkType(ReslinkType[key as keyof typeof ReslinkType] ?? ReslinkType.NONE);\n  }, []);\n\n  const reslinkEventInput: ReslinkEventByIdInput = {\n    input: { eventId, reslinkType },\n    imageLimitPerCategory: PROPERTY_IMAGE_LIST_CATEGORY_LIMIT,\n  };\n\n  const {\n    data: eventData,\n    loading,\n    error,\n  } = useQuery<{\n    groupsReslinkEventById: ReslinkEventByIdResponse;\n  }>(getReslinkEventByIdQuery, {\n    variables: reslinkEventInput,\n    context: {\n      headers: {\n        'accept-language': locale,\n        'uxl-cache-disable': true,\n      },\n    },\n    fetchPolicy: 'no-cache',\n    skip: !eventId,\n  });\n\n  const { groupsReslinkEventById } = eventData || {};\n  const { eventName, eventDescription, eventCustomLinks, customImageURLs, hotelDetails, httpStatus } =\n    groupsReslinkEventById || {};\n\n  const filteredHotelDetails =\n    reslinkType === ReslinkType.GRP ? hotelDetails?.filter(property => property.miniHotelInfo.length) : hotelDetails;\n  const allPropertiesExpired = reslinkType === ReslinkType.GRP && !filteredHotelDetails?.length;\n\n  const transformMedia = {\n    photoGallery: {\n      hotelView: {\n        edges: customImageURLs?.map((item, index) => ({\n          node: {\n            alternateDescription: `${bannerImageAltText} ${index + 1}`,\n            imageUrls: {\n              wideHorizontal: `${item.link}`,\n              classicHorizontal: `${item.link}`,\n              square: `${item.link}`,\n            },\n          },\n        })),\n      },\n    },\n  };\n\n  const toggleView = () => {\n    setShowMapView(!showMapView);\n  };\n\n  return (\n    <EditableComponent config={ReslinkGuestConfig} {...props}>\n      {loading ? (\n        <div className=\"m-spinner-m d-block mx-auto my-4\"></div>\n      ) : error || (eventData && httpStatus && httpStatus !== HTTP_SUCCESS_CODE) ? (\n        <div className=\"py-4\">\n          <InlineMessages\n            type={InlineMessagesType.Error}\n            title={errors.apiFailure.title}\n            messageList={[errors.apiFailure.description]}\n          />\n        </div>\n      ) : eventData && !groupsReslinkEventById?.isActive ? (\n        <div className=\"py-4\">\n          <div className=\"t-title-m mb-2\">{errors.disabled.title}</div>\n          <div>{errors.disabled.description}</div>\n        </div>\n      ) : allPropertiesExpired ? (\n        <div className=\"py-4\">\n          <div className=\"t-title-m mb-2\">{errors?.expiredProperties?.title}</div>\n          <div>{errors?.expiredProperties?.description}</div>\n        </div>\n      ) : (\n        <div className=\"m-container-fullbleed\">\n          {eventName && !showMapView ? (\n            <EventBanner\n              eventTitle={eventName}\n              eventDescription={eventDescription as string}\n              customLinks={eventCustomLinks}\n              externalLinkAriaLabel={externalLinkAriaLabel}\n              {...(customImageURLs?.length ? { media: transformMedia as HotelMediaContent } : null)}\n            />\n          ) : null}\n          <StyledPropertyList>\n            {filteredHotelDetails?.length ? (\n              <div className=\"container\">\n                {showMapView ? (\n                  <PropertyMap\n                    reslinkType={reslinkType}\n                    propertyLabels={props.model}\n                    properties={filteredHotelDetails}\n                    toggleView={toggleView}\n                  />\n                ) : (\n                  <>\n                    <PropertyList\n                      reslinkType={reslinkType}\n                      isMapView={showMapView}\n                      properties={filteredHotelDetails}\n                      propertyLabels={{\n                        carouselAriaLabel,\n                        carouselImageAriaLabel,\n                        logoAriaLabel,\n                        bookBy,\n                        toAirport,\n                        reviews,\n                        reviewTooltipText,\n                        freeWifi,\n                        viewHotelDetails,\n                        priceType,\n                        dateLabels,\n                        roomsAndGuests,\n                        checkAvailability,\n                        trackingProperties,\n                        hotelDetails: hotelDetailsLabel,\n                        overview,\n                        amenities,\n                        mapAriaLabel,\n                        apiError: errors.apiFailure.title,\n                      }}\n                    />\n                    {isAllowedForLocale(locale) && (\n                      <ViewToggle\n                        ctaLabel={map}\n                        variant={ViewType.MAP_VIEW}\n                        ctaAriaLabel={mapAriaLabel}\n                        toggleView={toggleView}\n                      />\n                    )}\n                  </>\n                )}\n              </div>\n            ) : null}\n          </StyledPropertyList>\n        </div>\n      )}\n    </EditableComponent>\n  );\n};\n"],"names":["ReslinkGuestConfig","emptyLabel","isEmpty","resourceType","process","errors","carouselAriaLabel","carouselImageAriaLabel","logoAriaLabel","bannerImageAltText","externalLinkAriaLabel","bookBy","toAirport","reviews","reviewTooltipText","freeWifi","viewHotelDetails","priceType","dateLabels","roomsAndGuests","checkAvailability","trackingProperties","hotelDetails","hotelDetailsLabel","overview","amenities","map","mapAriaLabel","props","model","shortWeekdayNames","longWeekdayNames","shortMonthNames","longMonthNames","locale","useLocaleStore","eventId","setEventId","useState","reslinkType","setReslinkType","ReslinkType","NONE","showMapView","setShowMapView","useEffect","setCalendarOptions","id","key","getQueryParams","window","location","search","reslinkEventInput","input","imageLimitPerCategory","PROPERTY_IMAGE_LIST_CATEGORY_LIMIT","data","eventData","loading","error","useQuery","getReslinkEventByIdQuery","variables","context","headers","fetchPolicy","skip","groupsReslinkEventById","eventName","eventDescription","eventCustomLinks","customImageURLs","httpStatus","filteredHotelDetails","GRP","filter","property","miniHotelInfo","length","allPropertiesExpired","transformMedia","photoGallery","hotelView","edges","item","index","node","alternateDescription","imageUrls","wideHorizontal","link","classicHorizontal","square","toggleView","EditableComponent","config","div","className","HTTP_SUCCESS_CODE","InlineMessages","type","InlineMessagesType","Error","title","apiFailure","messageList","description","isActive","expiredProperties","EventBanner","eventTitle","customLinks","media","StyledPropertyList","PropertyMap","propertyLabels","properties","PropertyList","isMapView","apiError","isAllowedForLocale","ViewToggle","ctaLabel","variant","ViewType","MAP_VIEW","ctaAriaLabel","disabled"],"sourceRoot":"","ignoreList":[]}