/** 앱 전역 상태 */ import products from '../data/index.js'; import { STATUS_META } from './config.js'; export const productsData = products; export const state = { currentPage: 1, activeCategories: new Set(['All']), visibleProducts: [], // 초기값은 빈 배열로 두고 main.js나 filter.js에서 첫 계산 searchKeyword: '', viewMode: 'grid', selectedIds: new Set(JSON.parse(sessionStorage.getItem('selectedProductIds') || '[]')), activeTags: new Set([]), // 선택된 태그들을 저장 (비어있으면 전체 노출) // visible이 true인 상태만 초기 활성 필터로 저장 activeStatuses: new Set( Object.entries(STATUS_META) .filter(([_, meta]) => meta.isSystemVisible && meta.isDefaultActive) .map(([status]) => status), ), }; // 선택 내역이 변경될 때마다 세션 스토리지에 저장하는 헬퍼 함수 export function saveSelection() { sessionStorage.setItem('selectedProductIds', JSON.stringify(Array.from(state.selectedIds))); }