/**
 * 모든 모달의 공통 기능 (닫기, ESC 처리, 배경 클릭 등)을 관리하는 베이스 모달 모듈입니다.
 */

export function closeModals() {
  const modals = document.querySelectorAll('.modal-overlay');
  modals.forEach(modal => modal.classList.add('hidden'));
}

export function initBaseModal() {
  // ESC 키로 닫기
  window.addEventListener('keydown', (e) => {
    if (e.key === 'Escape') closeModals();
  });

  // 배경(Overlay) 및 닫기/취소 버튼 클릭 시 닫기
  document.addEventListener('click', (e) => {
    const target = e.target as HTMLElement;
    
    // 1. 오버레이 클릭 시 닫기
    if (target.classList.contains('modal-overlay')) {
      closeModals();
    }
    
    // 2. 닫기 또는 취소 버튼 클릭 시 닫기 (이름 패턴 기준)
    const btn = target.closest('button');
    if (btn && (btn.id.startsWith('btn-close-') || btn.id.startsWith('btn-cancel-'))) {
      closeModals();
    }
  });

  return { closeAllModals: closeModals };
}

/**
 * 특정 모달 열기 (기존의 classList 조작을 정형화)
 */
export function openModal(id: string) {
  const modal = document.getElementById(id);
  if (modal) {
    modal.classList.remove('hidden');
  }
}
