UNPKG

edit-on-slate

Version:

Slate 기반의 직관적이고 강력한 리액트 텍스트 에디터 라이브러리

192 lines (139 loc) 6.55 kB
# Edit-On-Slate Slate 기반의 리액트 텍스트 에디터 라이브러리입니다. ## 특징 - 텍스트 서식 지정 (굵게, 기울임, 밑줄, 코드) - 블록 스타일 (제목, 인용구, 목록) - 마크다운 단축키 지원 - 커스터마이징 가능한 스타일 - 리액트 컴포넌트로 쉽게 통합 - 다양한 폰트 및 색상 지원 - 반응형 디자인 ## 설치 ```bash npm install edit-on-slate # 또는 yarn add edit-on-slate ``` ## 사용법 ### 기본 사용법 ```tsx import React, { useState } from "react"; import { Editor } from "edit-on-slate"; import { Descendant } from "slate"; const MyEditor = () => { const [value, setValue] = useState<Descendant[]>([ { type: "paragraph", children: [{ text: "에디터에 내용을 입력해보세요!" }], }, ]); const handleChange = (newValue: Descendant[]) => { setValue(newValue); }; return <Editor value={value} onChange={handleChange} />; }; export default MyEditor; ``` ### 폰트 사용 방법 이 라이브러리는 기본적으로 CDN을 통해 웹 폰트(Nanum Gothic, Pretendard)를 로드합니다. 빌드에 폰트 파일을 포함하지 않고 다음과 같은 방법으로 폰트를 사용할 수 있습니다: #### 1. 기본 제공 폰트 사용하기 라이브러리를 import하면 자동으로 CDN을 통해 폰트가 로드됩니다. 별도의 설정이 필요하지 않습니다. ```tsx import { Editor } from "edit-on-slate"; // 폰트 스타일시트가 자동으로 로드됩니다 ``` #### 2. 커스텀 폰트 사용하기 자신만의 폰트를 사용하려면 CSS 변수를 재정의하세요: ```css :root { --font-family-sans: "나눔고딕", "맑은 고딕", sans-serif; --font-family-serif: "나눔명조", serif; --font-family-mono: "D2Coding", monospace; } ``` #### 3. CDN 폰트 직접 로드하기 라이브러리의 폰트 로딩을 비활성화하고 직접 폰트를 로드하려면: ```html <!-- HTML의 head 섹션에 추가 --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700;800&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css"> ``` #### 4. 폰트 로딩 유틸리티 사용하기 라이브러리에서 제공하는 폰트 로딩 유틸리티를 사용하여 폰트 로딩을 최적화할 수 있습니다: ```tsx import { loadFontStylesheet, waitForFont, isFontLoaded } from "edit-on-slate"; // 최적화된 방식으로 폰트 스타일시트 로드 loadFontStylesheet('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700&display=swap'); // 폰트가 로드되었는지 확인 const isLoaded = isFontLoaded('Noto Sans KR'); console.log('폰트 로드 여부:', isLoaded); // 폰트가 로드될 때까지 기다리기 waitForFont('Noto Sans KR').then(loaded => { if (loaded) { console.log('폰트가 성공적으로 로드되었습니다!'); } else { console.log('폰트 로딩 타임아웃'); } }); // 기본 폰트 로드 (Nanum Gothic, Pretendard) import { loadDefaultFonts } from "edit-on-slate"; loadDefaultFonts(); ``` ## Props | 속성 | 타입 | 기본값 | 설명 | | ----------- | ----------------------------- | ---------------------- | -------------------------------------- | | value | Descendant[] | - | 에디터의 현재 값 | | onChange | (value: Descendant[]) => void | - | 에디터 값이 변경될 때 호출되는 함수 | | placeholder | string | '내용을 입력하세요...' | 에디터가 비어있을 때 표시되는 텍스트 | | readOnly | boolean | false | 읽기 전용 모드 활성화 여부 | | className | string | - | 에디터 컨테이너에 적용할 CSS 클래스 | | style | React.CSSProperties | - | 에디터 컨테이너에 적용할 인라인 스타일 | ## 마크다운 단축키 에디터는 다음과 같은 마크다운 단축키를 지원합니다: - `#` + 공백: 제목 1 - `##` + 공백: 제목 2 - `###` + 공백: 제목 3 - `>` + 공백: 인용구 - `-` 또는 `*` 또는 `+` + 공백: 글머리 기호 목록 - `1.` + 공백: 번호 매기기 목록 ## 커스터마이징 에디터의 스타일은 CSS-in-JS 라이브러리인 Emotion을 사용하여 구현되었습니다. 스타일을 커스터마이징하려면 컴포넌트를 확장하거나 CSS 클래스를 오버라이드하세요. ## 배포하기 Edit-On-Slate를 npm에 배포하려면 다음 단계를 따르세요: 1. 버전 업데이트: ```bash npm version patch # 패치 버전 업데이트 npm version minor # 마이너 버전 업데이트 npm version major # 메이저 버전 업데이트 ``` 2. npm에 배포: ```bash npm run publish:npm ``` ## Git 릴리스 및 태깅 릴리스를 생성할 때는 다음 가이드라인을 따르세요: 1. 버전 이름에 'v' 접두사 사용하기: - 예: `v1.0.0`, `v2.3.4` 2. 프로덕션용이 아닌 경우 pre-release 버전 추가: - 예: `v0.2.0-alpha`, `v5.9-beta.3` 3. Semantic Versioning 규칙 따르기: - **MAJOR**: 호환되지 않는 API 변경 시 (예: `v2.0.0`) - **MINOR**: 이전 버전과 호환되는 기능 추가 시 (예: `v1.1.0`) - **PATCH**: 이전 버전과 호환되는 버그 수정 시 (예: `v1.0.1`) - **PRE-RELEASE**: 개발 단계 표시 (예: `v1.0.0-alpha.1`) 4. 릴리스 노트 작성 시 다음 내용 포함: - 새로운 기능 - 버그 수정 - 주요 변경 사항 - 사용 중단 예정 기능 새 릴리스는 자동으로 이 저장소의 최신 릴리스로 표시됩니다. 필요한 경우 'Set as the latest release' 옵션을 해제하여 semantic version과 생성 날짜에 따라 최신 릴리스가 결정되도록 할 수 있습니다. ## 기여하기 1. 이 저장소를 포크합니다. 2. 새 브랜치를 생성합니다: `git checkout -b feature/amazing-feature` 3. 변경사항을 커밋합니다: `git commit -m 'Add some amazing feature'` 4. 브랜치에 푸시합니다: `git push origin feature/amazing-feature` 5. Pull Request를 제출합니다. ## 라이센스 MIT