지금상황 설명할께.
우리는 crdt를 써서 한글을 입력하게하는데
다른사람들에게도 동시입력이 잘되는 환경을 하고싶어.
근데 우리는 contenteditable속성에서
innerHTML을 써서 각 글자들의 속성을 부여해서
일반적으로 하나의 html 안에서 캐럿관리가 아니라 조금 특수하거든?
그래서 지금 생각이 나는건
setCaretPosition({ blockId: editorCRDT.current.currentBlock.id, linkedList: editorCRDT.current.LinkedList, position: editorCRDT.current.currentBlock?.crdt.currentCaret, pageId, });
이렇게 캐럿포지션이 새로 바뀐상태에서 봐달라고 한단말이야.
근데 이제 새로운 입력이 들어올때
어디가 바뀌었는지 알아야 그부분만 블록을 재 렌더링 해줄 수 있잖아?
끄리고 만약에 내가 작성중인데 블록이 재 렌더링되면,
내 캐럿을 저장해놓고 블록이 렌더링 된다음에 내 캐럿을 원래 위치로 움직여줘야하잖아?
뭐 내가
abc[여기]d 입력하고있는데
다른사람이 abc앞에 123을 썼어.
123abd[여기]d 저기4인덱스에서 7인덱스로 이동하게 하는
그런걸 만들어 보려고하거든?
그래서 내생각엔 react fiber node reconciliation 처럼