import { create } from "zustand"; const DEFAULT_CENTER = { lat: -6.2, lng: 106.816666 }; export const useMaps = create((set, get) => ({ // ==== STATE ==== selectedPosition: null, addressMaps: '', detailAddress: {}, pinedMaps: false, // posisi sementara (create/edit) tempPositionCreate: null, tempPositionEdit: null, // ==== SETTERS ==== setSelectedPosition: (position) => set({ selectedPosition: position }), setAddressMaps: (addressMaps) => set({ addressMaps }), setDetailAddress: (detailAddress) => set({ detailAddress }), setPinedMaps: (pinedMaps) => set({ pinedMaps }), setTempPositionCreate: (position) => set({ tempPositionCreate: position }), setTempPositionEdit: (position) => set({ tempPositionEdit: position }), resetTempPositionCreate: () => set({ tempPositionCreate: null }), resetTempPositionEdit: () => set({ tempPositionEdit: null }), getDefaultCenter: () => DEFAULT_CENTER, isPinned: () => { const p = get().selectedPosition; if (!p) return false; // parse string -> number const lat = parseFloat(p.lat); const lng = parseFloat(p.lng); // cek kalau bukan angka valid if (isNaN(lat) || isNaN(lng)) return false; // cek apakah sama dengan default const isDefault = Math.abs(lat - DEFAULT_CENTER.lat) < 1e-6 && Math.abs(lng - DEFAULT_CENTER.lng) < 1e-6; return !isDefault; }, resetPin: () => set({ selectedPosition: null, addressMaps: '', detailAddress: {}, pinedMaps: false, tempPositionCreate: null, tempPositionEdit: null, }), }));