30 lines
880 B
TypeScript
30 lines
880 B
TypeScript
import type { HotelData } from "@/types/components/hotelReservation/selectHotel/hotelCardListingProps"
|
|
import type { HotelPin } from "@/types/components/hotelReservation/selectHotel/map"
|
|
|
|
export function getVisibleHotelPins(
|
|
map: google.maps.Map | null,
|
|
filteredHotelPins: HotelPin[]
|
|
) {
|
|
if (!map || !filteredHotelPins) return []
|
|
|
|
const bounds = map.getBounds()
|
|
if (!bounds) return []
|
|
|
|
return filteredHotelPins.filter((pin) => {
|
|
const { lat, lng } = pin.coordinates
|
|
return bounds.contains({ lat, lng })
|
|
})
|
|
}
|
|
|
|
export function getVisibleHotels(
|
|
hotels: HotelData[],
|
|
filteredHotelPins: HotelPin[],
|
|
map: google.maps.Map | null
|
|
) {
|
|
const visibleHotelPins = getVisibleHotelPins(map, filteredHotelPins)
|
|
const visibleHotels = hotels.filter((hotel) =>
|
|
visibleHotelPins.some((pin) => pin.operaId === hotel.hotelData.operaId)
|
|
)
|
|
return visibleHotels
|
|
}
|