Skip to content

Commit 917d319

Browse files
committed
feat: md editor
1 parent 166db95 commit 917d319

12 files changed

Lines changed: 3680 additions & 173 deletions

MARKDOWN_SETUP.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Установка зависимостей Markdown
2+
3+
После клонирования репозитория выполните:
4+
5+
```bash
6+
npm install
7+
```
8+
9+
Это установит все необходимые зависимости, включая:
10+
11+
- `react-markdown`: основной парсер Markdown
12+
- `remark-gfm`: поддержка таблиц и зачеркнутого текста
13+
- `rehype-highlight`: подсветка синтаксиса кода
14+
15+
## Ручная установка (если нужно)
16+
17+
```bash
18+
npm install react-markdown@^9.0.1 remark-gfm@^4.0.0 rehype-highlight@^6.0.0
19+
```
20+
21+
## Проверка установки
22+
23+
После установки проверьте, что зависимости добавлены в `package.json`:
24+
25+
```json
26+
{
27+
"dependencies": {
28+
"react-markdown": "^9.0.1",
29+
"remark-gfm": "^4.0.0",
30+
"rehype-highlight": "^6.0.0"
31+
}
32+
}
33+
```
34+
35+
## Запуск
36+
37+
```bash
38+
npm run dev
39+
```
40+
41+
Приложение запустится с полной поддержкой Markdown!

MARKDOWN_SUPPORT.md

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
# Поддержка Markdown
2+
3+
Приложение теперь поддерживает полный Markdown синтаксис для создания красивых сообщений, топиков и форумов.
4+
5+
## Реализованные возможности
6+
7+
### 1. Markdown парсер
8+
9+
**Библиотеки:**
10+
- `react-markdown` - основной парсер
11+
- `remark-gfm` - поддержка таблиц и зачеркнутого текста
12+
- `rehype-highlight` - подсветка синтаксиса кода
13+
14+
**Поддерживаемые элементы:**
15+
-**Текст:** жирный, курсив, зачеркнутый
16+
-**Заголовки:** H1-H6
17+
-**Списки:** маркированные и нумерованные
18+
-**Ссылки:** `[text](url)`
19+
-**Код:** inline `code` и блоки кода
20+
-**Цитаты:** `> quote`
21+
-**Таблицы:** GitHub Flavored Markdown
22+
-**Изображения:** `![alt](url)`
23+
24+
### 2. Markdown редактор
25+
26+
**Компонент `MarkdownEditor`:**
27+
- Панель инструментов с кнопками форматирования
28+
- Горячие клавиши (Ctrl+B, Ctrl+I, etc.)
29+
- Предварительный просмотр
30+
- Подсказки синтаксиса
31+
32+
**Инструменты:**
33+
- **Жирный текст:** `**text**` или Ctrl+B
34+
- **Курсив:** `*text*` или Ctrl+I
35+
- **Код:** `` `code` `` или Ctrl+`
36+
- **Ссылка:** `[text](url)` или Ctrl+K
37+
- **Список:** `- item` или Ctrl+Shift+8
38+
- **Нумерованный список:** `1. item` или Ctrl+Shift+7
39+
- **Цитата:** `> text` или Ctrl+Shift+>
40+
41+
### 3. Интеграция в компоненты
42+
43+
**Обновленные страницы:**
44+
-**TopicPage:** ответы с Markdown
45+
-**ForumPage:** создание топиков с Markdown
46+
-**HomePage:** описания форумов с Markdown
47+
48+
**Компоненты:**
49+
-**MarkdownContent:** отображение отформатированного текста
50+
-**MarkdownEditor:** редактор с подсказками
51+
52+
## Синтаксис Markdown
53+
54+
### Основной текст
55+
```markdown
56+
**Жирный текст**
57+
*Курсив*
58+
~~Зачеркнутый~~
59+
`inline code`
60+
```
61+
62+
### Заголовки
63+
```markdown
64+
# Заголовок 1
65+
## Заголовок 2
66+
### Заголовок 3
67+
```
68+
69+
### Списки
70+
```markdown
71+
- Маркированный список
72+
- Второй пункт
73+
74+
1. Нумерованный список
75+
2. Второй пункт
76+
```
77+
78+
### Ссылки и изображения
79+
```markdown
80+
[Текст ссылки](https://example.com)
81+
![Альтернативный текст](https://example.com/image.jpg)
82+
```
83+
84+
### Код
85+
```markdown
86+
`inline code`
87+
88+
```javascript
89+
// Блок кода с подсветкой
90+
function hello() {
91+
console.log('Hello, World!');
92+
}
93+
```
94+
```
95+
96+
### Цитаты
97+
```markdown
98+
> Это цитата
99+
> Продолжение цитаты
100+
```
101+
102+
### Таблицы
103+
```markdown
104+
| Заголовок 1 | Заголовок 2 |
105+
|-------------|-------------|
106+
| Ячейка 1 | Ячейка 2 |
107+
| Ячейка 3 | Ячейка 4 |
108+
```
109+
110+
## Стилизация
111+
112+
### Темная тема
113+
- Автоматическая адаптация под темную тему
114+
- Подсветка кода в темных тонах
115+
- Контрастные цвета для лучшей читаемости
116+
117+
### Адаптивность
118+
- Таблицы с горизонтальной прокруткой на мобильных
119+
- Оптимизированные отступы и размеры
120+
- Поддержка touch устройств
121+
122+
## Производительность
123+
124+
### Оптимизации
125+
- Ленивая загрузка компонентов Markdown
126+
- Эффективный парсинг только при необходимости
127+
- Минимальные зависимости
128+
129+
### Кеширование
130+
- Компоненты переиспользуются
131+
- Стили загружаются один раз
132+
- Минимизированный CSS
133+
134+
## Совместимость
135+
136+
### Браузеры
137+
- ✅ Chrome 70+
138+
- ✅ Firefox 65+
139+
- ✅ Safari 12+
140+
- ✅ Edge 79+
141+
142+
### Устройства
143+
- ✅ Desktop
144+
- ✅ Tablet
145+
- ✅ Mobile (iOS Safari, Android Chrome)
146+
147+
## Примеры использования
148+
149+
### Создание топика
150+
```markdown
151+
# Как использовать React Hooks
152+
153+
React Hooks позволяют использовать состояние и другие возможности React без классов.
154+
155+
## Основные хуки
156+
157+
### useState
158+
```javascript
159+
const [count, setCount] = useState(0);
160+
```
161+
162+
### useEffect
163+
```javascript
164+
useEffect(() => {
165+
document.title = `Count: ${count}`;
166+
}, [count]);
167+
```
168+
169+
## Заключение
170+
171+
Hooks делают код более читаемым и переиспользуемым!
172+
```
173+
174+
### Ответ на сообщение
175+
```markdown
176+
Спасибо за подробное объяснение! 👍
177+
178+
Особенно полезным показался пример с `useEffect`:
179+
180+
```javascript
181+
useEffect(() => {
182+
// Эффект выполняется при изменении count
183+
console.log('Count changed:', count);
184+
}, [count]);
185+
```
186+
187+
Теперь все стало намного понятнее!
188+
```
189+
190+
## Безопасность
191+
192+
-**XSS защита:** автоматическое экранирование HTML
193+
-**Санитизация:** удаление опасных тегов
194+
-**Валидация:** проверка синтаксиса Markdown
195+
196+
## Расширения
197+
198+
Возможно добавить в будущем:
199+
- Кастомные компоненты (спойлеры, предупреждения)
200+
- Drag & drop изображений
201+
- Автосохранение черновиков
202+
- Предпросмотр в реальном времени
203+
- Экспорт в PDF/HTML

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,26 @@
7272

7373
Подробное описание: см. [USER_PROFILE.md](./USER_PROFILE.md)
7474

75+
### Поддержка Markdown
76+
77+
Приложение поддерживает полный Markdown синтаксис для создания красивых сообщений:
78+
79+
-**Парсер Markdown** с подсветкой кода и таблицами
80+
-**Редактор с подсказками** и горячими клавишами
81+
-**Панель инструментов** для быстрого форматирования
82+
-**Предварительный просмотр** сообщений
83+
-**Поддержка GFM** (GitHub Flavored Markdown)
84+
85+
**Возможности редактора:**
86+
- **Жирный/курсив:** `**text**`, `*text*` или Ctrl+B/Ctrl+I
87+
- **Код:** `` `code` `` или Ctrl+`
88+
- **Ссылки:** `[text](url)` или Ctrl+K
89+
- **Списки:** `- item` или Ctrl+Shift+8
90+
- **Цитаты:** `> text` или Ctrl+Shift+>
91+
- **Таблицы и многое другое**
92+
93+
Подробное описание: см. [MARKDOWN_SUPPORT.md](./MARKDOWN_SUPPORT.md)
94+
7595
## Исправления ошибок
7696

7797
### Ошибка "cant find variable topic page"

0 commit comments

Comments
 (0)