ilokesto

createOverlayStore

createOverlayStore()는 open, close, closeAll, reject, remove, clear, subscribe, getSnapshot, getInitialSnapshot을 가진 OverlayStoreApi를 반환합니다. 내부적으로 @ilokesto/store에 OverlayState를 저장하고 overlay id별 pending promise settler를 보관합니다.

const store = createOverlayStore();
const request = store.open<boolean>({ type: 'confirm', props: { title: 'Delete?' } });
store.close(request.id, true);
store.remove(request.id);
const result = await request.promise;

open은 OverlayItem을 만들고 { id, promise }를 반환하며 활성 explicit id는 기존 request로 deduplicate됩니다. close는 열린 item 하나를 closing으로 바꾸고 closeResult를 기록합니다. closeAll은 완료하지 않은 채 모든 열린 item을 closing으로 바꿉니다. reject는 rejection을 기록하고 제거 시 reject합니다. remove는 특정 item을 제거하고 id가 없으면 최신 item을 제거한 뒤 promise를 완료합니다. clear는 모든 item을 완료하고 제거합니다. 일반 React component에서는 useOverlay를 쓰고 test나 고급 shell에서는 store를 직접 사용하세요.

실무 메모

레퍼런스 문서는 런타임 계약을 정확히 설명합니다. 가이드에서는 이 API를 제품별 helper로 감쌀 수 있지만, 같은 lifecycle 언어를 유지해야 합니다. open은 item을 만들고, close는 closing 상태를 시작하며, remove는 item을 완료하고 삭제하고, clear는 provider 범위의 모든 대기 중인 overlay를 끝냅니다.

목차