Skip to content

모달 시스템 아키텍처 개편 및 노드 렌더러 래퍼 구현#12

Merged
y-minion merged 14 commits intodevelopfrom
feature/node-component
Dec 30, 2025
Merged

모달 시스템 아키텍처 개편 및 노드 렌더러 래퍼 구현#12
y-minion merged 14 commits intodevelopfrom
feature/node-component

Conversation

@y-minion
Copy link
Copy Markdown
Contributor

🔍 변경 사항 요약

이번 PR에서는 모달 시스템의 구조를 전면적으로 개편하고, 에디터와 라이브 모드에서 각각 사용될 노드 렌더러 래퍼를 구현했습니다. 또한 리액트 보안 이슈 대응을 위한 의존성 업데이트와 에디터 상태 관리를 위한 스토어가 추가되었습니다.

주요 변경 사항은 다음과 같습니다:

  1. 모달 시스템 고도화: ModalHost를 중심으로 역할을 분리하고, 렌더링 로직을 단순화하여 유지보수성을 높였습니다.
  2. 노드 렌더러 구조 확립: Live 모드와 Editor 모드 환경에 맞춰 노드 렌더링을 이원화하고, 공통 래퍼 컴포넌트를 적용했습니다.
  3. 상태 관리: 에디터 전용 useEditorStore를 구현했습니다.

🛠️ 상세 작업 내용

✨ 기능 추가 (Features)

  • 모달 호스트 및 렌더러 구현: 중앙 집중식 모달 관리를 위한 ModalHost와 실제 콘텐츠를 그리는 ModalRenderer를 구현했습니다.

  • 노드 렌더러 래퍼:
    모든 모드에서 공통으로 사용되는 NodeRendererWrapper 구현
    라이브 모드용 렌더러 및 래퍼 구현

  • 에디터 스토어: 에디터 상태 관리를 위한 useEditorStore (Zustand) 추가

♻️ 리팩토링 (Refactoring)

  • 모달 역할 분리: Modal 컴포넌트와 ModalHost의 책임을 명확히 분리 (Overlay, Positioning 로직 이동).
  • Context 및 타입 재정의: 변경된 모달 시스템에 맞춰 RuntimeContext 및 관련 타입(Action, Node 등)을 수정했습니다.
  • 더미 데이터 추가: 테스트 및 개발 용이를 위한 더미 데이터 구조 개선.

📝 문서

modal_node_system.md: 모달 노드 시스템 설계에 대한 문서 추가

📦 기타

의존성 업그레이드: 리액트 보안 이슈 해결을 위한 패키지 버전 업데이트

✅ 체크리스트

  • 모달이 정상적으로 열리고 닫히는지 확인
  • 에디터 모드와 라이브 모드에서 노드가 올바르게 렌더링되는지 확인
  • 기존 타입 에러가 없는지 확인

모달의 기능과 로직이 변경되면서 타입구조 변경
활성화된 id를 상태로 갖고 provider로 활성화된 모달의 id를 관리할 수 있도록 로직 수정
modalHost에 의해 사용되는 모달 렌더러를 고려해 전체적인 로직 수정 완료
상위에서 모달 렌더링을 총괄하는 매니저 컴포넌트(모달호스트) 구현 완료.
버튼 클릭시 모달이 렌더링되는 로직이 연결되어 있으면 modalHost가 DB에서 모달 데이터를 받아서 모달 렌더러에게 전달합니다.
모달 더미 데이터 추가
모달의 오버레이도 렌더링하던 역할을 분리함. 오직 modal노드만 렌더링 하도록 역할을 작게 나눔.
모달 노드의 오버레이를 렌더링 하도록 역할 수정.
ModalHost가  DB에서 모달관련 데이터를 받아오면 모달 노드렌더러에게 props으로 전달하며 모달 노드 렌더럴을 호출한다.
팀원들과 공유할 수 있는 모달 노드 전용 설계 문서 작성
기존에 라이브/에디터 모드 모두에서 혼용되던 래퍼 컴포넌트를 분리하기 위해 라이브 모드 전용 래퍼 컴포넌트를 구현.
기존에 라이브/에디터 모드에서 모두 사용되면 래퍼 컴포넌트를 에디터 모드에서만 사용되도록 역할 분리 완료. 라이브 모드에서는 LiveModeWrapper래퍼 컴포넌트를 사용하도록 분리 완료.
에디터 섹션에서 노드를 클릭할때 사이드바에서 선택된 노드를 알 수 있게 해줌. 스토어 내부의 액션들을 내무에서 커스텀 훅으로 따로export해서 나중에 스토어가 커지거나 변경되도 내부에서만 변경할 수 있도록 구현 완료.
두가지 모드에서 사용되는 노드 렌더러 래퍼컴포넌트 구현완료. 노드 렌더러는 항상 래퍼 컴포넌트를 100%채우도록 렌더링 되기 때문에 노드의 레이아웃은 현재 래퍼 컴포넌트가 담당한다.
@y-minion y-minion merged commit dc413bc into develop Dec 30, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant