import { create } from 'zustand'; import type { POI } from '../types'; interface POIsState { /** Currently opened POIs */ openedPOIs: POI[]; /** * Opens a POI if not already opened * @param poi - The POI to open */ openPOI: (poi: POI) => void; /** * Closes a specific POI * @param poiId - The ID of the POI to close */ closePOI: (poiId: number) => void; /** * Closes all opened POIs */ closeAll: () => void; } export const usePOIsStore = create((set) => ({ openedPOIs: [], openPOI: (poi) => set((state) => { // Don't add if POI is already opened if (state.openedPOIs.some(p => p.id === poi.id)) { return state; } return { openedPOIs: [...state.openedPOIs, poi] }; }), closePOI: (poiId) => set((state) => ({ openedPOIs: state.openedPOIs.filter(poi => poi.id !== poiId) })), closeAll: () => set({ openedPOIs: [] }) }));