글자에 특수문자가 있는 경우 드래그가 안되는 문제

한글이 입력이 안돼요

제목 입력할때 캐럿이 도망간다!!!

마크다운 트러블슈팅2: 캐럿이 아닌 나와의 싸움이었다

캐럿이 뭘까?

텍스트 에디터에서 텍스트가 삽입될 위치를 나타내는 깜빡이는 수직선(|) 으로, 일반적으로 커서라 부르지만 약간의 차이가 있다.

즉, 커서가 더 넓은 의미의 포인터이고, 캐럿은 텍스트 편집시에만 사용되는 포인터이다.

캐럿에서 문제가 생길게 있나?

일반적인 input 엘레먼트, contenteditable 속성등을 사용해 텍스트 입력을 받는 경우, 브라우저가 기본적으로 캐럿을 관리해서 따로 캐럿을 관리할 필요가 없다. 하지만 이번 프로젝트의 경우 일반 텍스트 에디터와는 차이점이 존재한다. Nocta의 CRDT구조를 보면 알 수 있듯이, 일반적인 텍스트 에디터와는 차이가 있다.

스크린샷 2024-12-25 오후 7.26.24.png

스크린샷 2024-12-25 오후 7.30.26.png

hello를 입력하고 w를 입력하게 되면, CRDT 상태가 변경되어 블록이 리렌더링되면서 캐럿의 위치가 0번째 위치로 초기화 된다. 이를 해결하기 위해 직접 캐럿을 관리하는 방식 을 도입했다.