/**
 * 모든 모달의 공통 기능 (닫기, ESC 처리, 배경 클릭 등)을 관리하는 베이스 모듈입니다.
 */
export function initBaseModal() {
  const modals = document.querySelectorAll('.modal-overlay');
  const closeButtons = document.querySelectorAll('.btn-icon, [id^="btn-cancel-"]');

  // 모든 모달 닫기 함수
  const closeAllModals = () => {
    modals.forEach(modal => modal.classList.add('hidden'));
    // SW 관련 추가 모달 처리
    document.getElementById('sw-user-modal')?.classList.add('hidden');
    document.getElementById('sw-user-edit-modal')?.classList.add('hidden');
    document.getElementById('dashboard-detail-modal')?.classList.add('hidden');
  };

  // 닫기 버튼 이벤트 바인딩
  closeButtons.forEach(btn => {
    btn.addEventListener('click', closeAllModals);
  });

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

  // 배경(Overlay) 클릭 시 닫기
  modals.forEach(modal => {
    modal.addEventListener('click', (e) => {
      if (e.target === modal) closeAllModals();
    });
  });

  return { closeAllModals };
}

/**
 * 특정 모달을 엽니다.
 * @param modalId 모달 엘리먼트의 ID
 */
export function openModal(modalId: string) {
  const modal = document.getElementById(modalId);
  if (modal) {
    modal.classList.remove('hidden');
  }
}
