본문으로 이동

코어 이론

@sectile/core는 화면을 그리지 않습니다. 항목의 관계와 상호작용 상태를 값으로 표현하고, 현재 상태와 의미 사건을 받아 다음 상태와 순서 있는 명령을 계산합니다.

명령은 포커스 이동이나 스크롤 같은 효과를 실행하라는 요청이지, 효과 자체가 아닙니다. DOM·Terminal·Vue가 각 환경에서 명령을 해석하므로 Core의 계산은 실행 환경과 무관하게 검증할 수 있습니다.

모델은 항목 관계와 유효한 값을, 상태는 현재 위치·선택·펼침·텍스트처럼 기억할 사실을 정의합니다. 사건은 move-next, select, insert-text처럼 사용자의 의도를 표현하고, 정책은 사용 가능 여부와 경계 동작처럼 제품마다 달라지는 선택을 명시합니다.

전이가 성공하면 새 불변 상태와 명령 목록을 함께 반환합니다. 실패하면 형식이 있는 오류를 반환하고 기존 상태와 명령을 바꾸지 않습니다.

공통 어휘

Core는 순서, 범위, 격자, 계층을 항목 관계의 기본형으로 사용합니다. 여기에 현재 위치, 선택, 펼침, 텍스트를 독립된 상태로 조합합니다. 한 모델이 한 가지 사실만 소유하므로 현재 위치를 옮겨도 선택을 유지할지, 함께 옮길지를 컴포넌트 정책으로 분명하게 정할 수 있습니다.

컴포넌트는 이 재료를 결정적인 상태 전이로 묶습니다. 날짜와 달력 계산은 @sectile/temporal, 표 형식 데이터 상호작용은 @sectile/tabular, 화면 영역과 항목 배치는 @sectile/virtual이 맡습니다.

공개 명세를 읽는 법

Core의 공개 문서는 API 이름만 나열하지 않습니다. 어떤 값을 만들 수 있는지, 어떤 연산과 관찰 결과가 있는지, 그리고 구현이 지켜야 할 법칙·실패·비용을 함께 정의합니다.

같은 공개 입력 흐름에서 상태, 명령, 조회 결과와 실패가 같고 모든 법칙과 비용 상한을 지키면 내부 구현이 달라도 같은 모델로 볼 수 있습니다.

조합이 기본 단위다

목록 상자는 순서에 현재 위치와 선택을 더하고, 콤보박스는 순서·텍스트·팝업 상태를 함께 씁니다. 계층 격자는 계층과 격자 좌표에 펼침·현재 위치·선택·편집 상태를 결합합니다. 조합 원리에서 각 컴포넌트가 어떤 사실을 소유하고 어떻게 원자적으로 갱신하는지 확인할 수 있습니다.

MIT 라이선스로 배포합니다.