에디터가 개인적으로 이번 프로젝트 만드는데 있어서

가장 큰 걸림돌이자 가장 삽질을 많이한곳이다.

맨 처음엔 직접 만들어보자는 생각이 들었다.

https://github.com/dbstpwlsWork32/ship-duck-fe/tree/PENDING__CMS

하지만 contentEditable로 라인을 하나의 블럭단위로 작업하면 블럭 내부에선 편했지만

드래그 & 드랍, 키보드 방향키 이동 등에서는 정말 고려해야할 사항이 너무 많았기 때문에

라이브러리를 사용해서 만들기로 했다.

https://github.com/dbstpwlsWork32/ship-duck-fe/tree/PENDING_CMS_SLATEJS

많은 라이브러리중에서 선택한것은 가장 가벼우며 react와의 결합성을 두고 만들어진 slatejs며

공식문서에 개념과 예제게 친절하게 잘 설명되어있어서 즐겁고 편하게 작업했었다.

하지만 모바일 한글입력에서 문제점이 있었다. 를 입력하면 ㄱㅏ로 입력되는등의 유니코드 관련 문제였다. slatejs github issue를 봐보니 그제서야 아직도 해결 안된문제인걸 알았으며

울며 겨자먹기로 다른 라이브러리를 탐색해봤지만 외국에서 만든 lib는 거의 유니코드 문제가 있었다. 이를 해결하기 위해선 tui같은 한국에서 만들어진 에디터를 사용해야 했는데 해당 에디터들은

번들사이즈 크기가 장난아니게 무거웠다 (번들포비아 기준 200kb이상). 결국 복잡한 기능은 줄이고 직접 만들기로 했다.

issue 사항은 다음과같다.

https://github.com/dbstpwlsWork32/ship-duck-fe/issues/10

https://github.com/dbstpwlsWork32/ship-duck-fe/issues/11

#11에서 기술된대로 recoil의 useRecoilEffect를 사용해서 컴포넌트의 리렌더링을 최소화했으며