1.1.3 • Published 2 months ago

edit-on-slate v1.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Edit-On-Slate

Slate 기반의 리액트 텍스트 에디터 라이브러리입니다.

특징

  • 텍스트 서식 지정 (굵게, 기울임, 밑줄, 코드)
  • 블록 스타일 (제목, 인용구, 목록)
  • 마크다운 단축키 지원
  • 커스터마이징 가능한 스타일
  • 리액트 컴포넌트로 쉽게 통합
  • 다양한 폰트 및 색상 지원
  • 반응형 디자인

설치

npm install edit-on-slate
# 또는
yarn add edit-on-slate

사용법

기본 사용법

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을 통해 폰트가 로드됩니다. 별도의 설정이 필요하지 않습니다.

import { Editor } from "edit-on-slate";
// 폰트 스타일시트가 자동으로 로드됩니다

2. 커스텀 폰트 사용하기

자신만의 폰트를 사용하려면 CSS 변수를 재정의하세요:

:root {
  --font-family-sans: "나눔고딕", "맑은 고딕", sans-serif;
  --font-family-serif: "나눔명조", serif;
  --font-family-mono: "D2Coding", monospace;
}

3. CDN 폰트 직접 로드하기

라이브러리의 폰트 로딩을 비활성화하고 직접 폰트를 로드하려면:

<!-- 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. 폰트 로딩 유틸리티 사용하기

라이브러리에서 제공하는 폰트 로딩 유틸리티를 사용하여 폰트 로딩을 최적화할 수 있습니다:

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

속성타입기본값설명
valueDescendant[]-에디터의 현재 값
onChange(value: Descendant[]) => void-에디터 값이 변경될 때 호출되는 함수
placeholderstring'내용을 입력하세요...'에디터가 비어있을 때 표시되는 텍스트
readOnlybooleanfalse읽기 전용 모드 활성화 여부
classNamestring-에디터 컨테이너에 적용할 CSS 클래스
styleReact.CSSProperties-에디터 컨테이너에 적용할 인라인 스타일

마크다운 단축키

에디터는 다음과 같은 마크다운 단축키를 지원합니다:

  • # + 공백: 제목 1
  • ## + 공백: 제목 2
  • ### + 공백: 제목 3
  • > + 공백: 인용구
  • - 또는 * 또는 + + 공백: 글머리 기호 목록
  • 1. + 공백: 번호 매기기 목록

커스터마이징

에디터의 스타일은 CSS-in-JS 라이브러리인 Emotion을 사용하여 구현되었습니다. 스타일을 커스터마이징하려면 컴포넌트를 확장하거나 CSS 클래스를 오버라이드하세요.

배포하기

Edit-On-Slate를 npm에 배포하려면 다음 단계를 따르세요:

  1. 버전 업데이트:
npm version patch # 패치 버전 업데이트
npm version minor # 마이너 버전 업데이트
npm version major # 메이저 버전 업데이트
  1. npm에 배포:
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

1.1.3

2 months ago

1.1.2

2 months ago

1.1.1

2 months ago

1.1.0

2 months ago

1.0.5

2 months ago

1.0.4

2 months ago

1.0.3

2 months ago

1.0.2

2 months ago

1.0.1

2 months ago

1.0.0

2 months ago