ship-gis/src/stores/uiStore.js
HeungTak Lee f4f0cb274f dark 프로젝트 구현 현재 상태 스냅샷
- Vite 마이그레이션, OpenLayers+Deck.gl 지도 연동
- STOMP WebSocket 선박 실시간 데이터 수신
- 선박 범례/필터/카운트, 다크시그널 처리
- Ctrl+Drag 박스선택, 우클릭 컨텍스트 메뉴
- 측정도구, 상세모달, 호버 툴팁
- darkSignalIds Set 패턴, INSHORE/OFFSHORE 타임아웃

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:01:54 +09:00

29 lines
794 B
JavaScript

import { create } from 'zustand';
/**
* UI 상태 관리 스토어
*/
export const useUIStore = create((set) => ({
// 사이드패널 열림 상태
isPanelOpen: true,
togglePanel: () => set((state) => ({ isPanelOpen: !state.isPanelOpen })),
setPanel: (isOpen) => set({ isPanelOpen: isOpen }),
// 활성 메뉴
activeMenu: 'ship',
setActiveMenu: (menu) => set({ activeMenu: menu }),
// 로딩 상태
isLoading: false,
setLoading: (loading) => set({ isLoading: loading }),
// 모달 상태
modals: {},
openModal: (modalId, data = null) => set((state) => ({
modals: { ...state.modals, [modalId]: { isOpen: true, data } },
})),
closeModal: (modalId) => set((state) => ({
modals: { ...state.modals, [modalId]: { isOpen: false, data: null } },
})),
}));