* fix(BOOK-138): Fixed issue when hovering markers and info windows for both city cluster marker as city markers. Approved-by: Matilda Landström
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { create } from "zustand"
|
|
|
|
export type SelectedMarker = {
|
|
cityId: string
|
|
location: { lat: number; lng: number }
|
|
} | null
|
|
|
|
interface DestinationPageCitiesMapState {
|
|
hoveredCityMarker: string | null
|
|
hoveredInfoWindow: string | null
|
|
activeCityMarker: SelectedMarker
|
|
setHoveredInfoWindow: (hovered: string | null) => void
|
|
setHoveredCityMarker: (cityId: string | null) => void
|
|
setActiveCityMarker: (marker: SelectedMarker) => void
|
|
resetActiveAndHoveredState: () => void
|
|
}
|
|
|
|
export const useDestinationPageCitiesMapStore =
|
|
create<DestinationPageCitiesMapState>((set) => ({
|
|
hoveredCityMarker: null,
|
|
hoveredInfoWindow: null,
|
|
activeCityMarker: null,
|
|
setHoveredInfoWindow: (hovered) =>
|
|
set(() => ({ hoveredInfoWindow: hovered })),
|
|
setHoveredCityMarker: (cityId) => set({ hoveredCityMarker: cityId }),
|
|
setActiveCityMarker: (selectedMarker) =>
|
|
set({ activeCityMarker: selectedMarker }),
|
|
resetActiveAndHoveredState: () =>
|
|
set({
|
|
activeCityMarker: null,
|
|
hoveredCityMarker: null,
|
|
hoveredInfoWindow: null,
|
|
}),
|
|
}))
|