wysiwyg-editor-3lab 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +118 -6
- package/dist/{index-DjRrWih5.mjs → index-D8F-sEXp.mjs} +7408 -6604
- package/dist/index-D8F-sEXp.mjs.map +1 -0
- package/dist/{index-aqFdHXK3.js → index-PjfLe6dO.js} +73 -70
- package/dist/index-PjfLe6dO.js.map +1 -0
- package/dist/{index.es-D29Vzsox.js → index.es-D6T1b1XW.js} +2 -2
- package/dist/{index.es-D29Vzsox.js.map → index.es-D6T1b1XW.js.map} +1 -1
- package/dist/{index.es-CMxss2vX.mjs → index.es-URzwyQLw.mjs} +2 -2
- package/dist/{index.es-CMxss2vX.mjs.map → index.es-URzwyQLw.mjs.map} +1 -1
- package/dist/index.esm.js +24 -19
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +9 -1
- package/dist/index-DjRrWih5.mjs.map +0 -1
- package/dist/index-aqFdHXK3.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.1.1] - 2026-01-20
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Исправлена публикация пакета
|
|
12
|
+
|
|
13
|
+
## [1.1.0] - 2025-01-20
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **ChatEditor** — новый компактный компонент для чатов и мессенджеров
|
|
17
|
+
- Минимальный тулбар с компактными кнопками (28x28px)
|
|
18
|
+
- Поддержка форматирования: жирный, курсив, подчёркивание, зачёркивание
|
|
19
|
+
- Цвет текста и фона с палитрой из 24 цветов
|
|
20
|
+
- Вставка ссылок через модальное окно
|
|
21
|
+
- Вставка изображений (загрузка файла или кастомный handler)
|
|
22
|
+
- Вставка видео YouTube/Vimeo через модальное окно
|
|
23
|
+
- Вставка таблиц с выбором строк/столбцов
|
|
24
|
+
- Эмодзи пикер
|
|
25
|
+
- Блок кода
|
|
26
|
+
- Отправка по Ctrl+Enter или Enter
|
|
27
|
+
- Кастомизация через props (включение/отключение функций)
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- **PreviewPanel** — убраны хардкодные стили, теперь наследует тему
|
|
31
|
+
- **CSS Variables** — применяются локально к каждому редактору, а не глобально
|
|
32
|
+
- Тёмная тема по умолчанию
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Исправлено применение CSS переменных в React (использование setProperty)
|
|
36
|
+
- Исправлены z-index для всплывающих окон (цвета, эмодзи)
|
|
37
|
+
- Модальные окна теперь открываются поверх всего контента
|
|
38
|
+
|
|
8
39
|
## [1.0.0] - 2025-01-19
|
|
9
40
|
|
|
10
41
|
### Added
|
package/README.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Pro WYSIWYG Editor
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/wysiwyg-editor-3lab)
|
|
4
|
+
[](https://www.npmjs.com/package/wysiwyg-editor-3lab)
|
|
5
|
+
[](https://bundlephobia.com/package/wysiwyg-editor-3lab)
|
|
6
|
+
[](https://github.com/3lab/wysiwyg-editor/blob/main/LICENSE)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
|
|
3
9
|
Профессиональный WYSIWYG редактор для React с headless архитектурой. Полный набор функций для создания богатого текстового контента.
|
|
4
10
|
|
|
5
11
|
## ✨ Особенности
|
|
@@ -14,15 +20,16 @@
|
|
|
14
20
|
- 🎨 **Полная кастомизация** — настройка через props
|
|
15
21
|
- 📦 **Без зависимостей** — только React peer dependency
|
|
16
22
|
- 💻 **Автоопределение кода** — автоматическая подсветка синтаксиса при вставке кода
|
|
23
|
+
- 💬 **ChatEditor** — компактный редактор для чатов и мессенджеров
|
|
17
24
|
|
|
18
25
|
## 📦 Установка
|
|
19
26
|
|
|
20
27
|
```bash
|
|
21
|
-
npm install
|
|
28
|
+
npm install wysiwyg-editor-3lab
|
|
22
29
|
# или
|
|
23
|
-
yarn add
|
|
30
|
+
yarn add wysiwyg-editor-3lab
|
|
24
31
|
# или
|
|
25
|
-
pnpm add
|
|
32
|
+
pnpm add wysiwyg-editor-3lab
|
|
26
33
|
```
|
|
27
34
|
|
|
28
35
|
**Важно:** Добавьте Font Awesome в ваш проект:
|
|
@@ -36,7 +43,8 @@ pnpm add @3lab/wysiwyg-editor
|
|
|
36
43
|
### Базовое использование
|
|
37
44
|
|
|
38
45
|
```tsx
|
|
39
|
-
import { WysiwygEditor } from '
|
|
46
|
+
import { WysiwygEditor } from 'wysiwyg-editor-3lab';
|
|
47
|
+
import 'wysiwyg-editor-3lab/style.css';
|
|
40
48
|
|
|
41
49
|
function App() {
|
|
42
50
|
return <WysiwygEditor placeholder="Начните печатать..." />;
|
|
@@ -47,7 +55,8 @@ function App() {
|
|
|
47
55
|
|
|
48
56
|
```tsx
|
|
49
57
|
import { useState } from 'react';
|
|
50
|
-
import { WysiwygEditor, EditorMeta } from '
|
|
58
|
+
import { WysiwygEditor, EditorMeta } from 'wysiwyg-editor-3lab';
|
|
59
|
+
import 'wysiwyg-editor-3lab/style.css';
|
|
51
60
|
|
|
52
61
|
function App() {
|
|
53
62
|
const [html, setHtml] = useState('');
|
|
@@ -70,7 +79,8 @@ function App() {
|
|
|
70
79
|
### Uncontrolled с автосохранением
|
|
71
80
|
|
|
72
81
|
```tsx
|
|
73
|
-
import { WysiwygEditor } from '
|
|
82
|
+
import { WysiwygEditor } from 'wysiwyg-editor-3lab';
|
|
83
|
+
import 'wysiwyg-editor-3lab/style.css';
|
|
74
84
|
|
|
75
85
|
function App() {
|
|
76
86
|
return (
|
|
@@ -84,6 +94,108 @@ function App() {
|
|
|
84
94
|
}
|
|
85
95
|
```
|
|
86
96
|
|
|
97
|
+
## 💬 ChatEditor — компактный редактор для чатов
|
|
98
|
+
|
|
99
|
+
Специальный компонент для мессенджеров и чатов с минимальным интерфейсом:
|
|
100
|
+
|
|
101
|
+
```tsx
|
|
102
|
+
import { ChatEditor } from 'wysiwyg-editor-3lab';
|
|
103
|
+
import 'wysiwyg-editor-3lab/style.css';
|
|
104
|
+
|
|
105
|
+
function Chat() {
|
|
106
|
+
return (
|
|
107
|
+
<ChatEditor
|
|
108
|
+
placeholder="Введите сообщение..."
|
|
109
|
+
onSubmit={(html) => {
|
|
110
|
+
console.log('Отправлено:', html);
|
|
111
|
+
// Отправка на сервер
|
|
112
|
+
}}
|
|
113
|
+
submitOnCtrlEnter={true}
|
|
114
|
+
enableEmoji={true}
|
|
115
|
+
enableBold={true}
|
|
116
|
+
enableItalic={true}
|
|
117
|
+
enableCode={true}
|
|
118
|
+
enableLink={true}
|
|
119
|
+
enableTextColor={true}
|
|
120
|
+
enableBgColor={true}
|
|
121
|
+
enableImage={true}
|
|
122
|
+
enableVideo={true}
|
|
123
|
+
enableTable={true}
|
|
124
|
+
maxHeight={150}
|
|
125
|
+
/>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### ChatEditor Props
|
|
131
|
+
|
|
132
|
+
| Prop | Type | Default | Описание |
|
|
133
|
+
|------|------|---------|----------|
|
|
134
|
+
| `value` | `string` | - | HTML контент (controlled) |
|
|
135
|
+
| `defaultValue` | `string` | - | Начальный HTML (uncontrolled) |
|
|
136
|
+
| `onChange` | `(html: string, meta: EditorMeta) => void` | - | Callback при изменении |
|
|
137
|
+
| `onSubmit` | `(html: string) => void` | - | Callback при отправке |
|
|
138
|
+
| `placeholder` | `string` | `"Введите сообщение..."` | Placeholder текст |
|
|
139
|
+
| `theme` | `"dark" \| "light"` | `"dark"` | Тема оформления |
|
|
140
|
+
| `maxHeight` | `number \| string` | `200` | Максимальная высота |
|
|
141
|
+
| `minHeight` | `number \| string` | `40` | Минимальная высота |
|
|
142
|
+
| `enableEmoji` | `boolean` | `true` | Эмодзи пикер |
|
|
143
|
+
| `enableBold` | `boolean` | `true` | Жирный текст |
|
|
144
|
+
| `enableItalic` | `boolean` | `true` | Курсив |
|
|
145
|
+
| `enableUnderline` | `boolean` | `false` | Подчёркивание |
|
|
146
|
+
| `enableStrike` | `boolean` | `false` | Зачёркивание |
|
|
147
|
+
| `enableLink` | `boolean` | `true` | Вставка ссылок |
|
|
148
|
+
| `enableCode` | `boolean` | `true` | Блок кода |
|
|
149
|
+
| `enableList` | `boolean` | `false` | Списки |
|
|
150
|
+
| `enableTextColor` | `boolean` | `false` | Цвет текста |
|
|
151
|
+
| `enableBgColor` | `boolean` | `false` | Цвет фона |
|
|
152
|
+
| `enableImage` | `boolean` | `false` | Вставка изображений |
|
|
153
|
+
| `enableVideo` | `boolean` | `false` | Вставка видео |
|
|
154
|
+
| `enableTable` | `boolean` | `false` | Вставка таблиц |
|
|
155
|
+
| `onImageUpload` | `(file: File) => Promise<string>` | - | Кастомный загрузчик изображений |
|
|
156
|
+
| `submitOnEnter` | `boolean` | `false` | Отправка по Enter |
|
|
157
|
+
| `submitOnCtrlEnter` | `boolean` | `true` | Отправка по Ctrl+Enter |
|
|
158
|
+
| `submitButtonText` | `string` | `"Отправить"` | Текст кнопки |
|
|
159
|
+
| `showSubmitButton` | `boolean` | `true` | Показать кнопку отправки |
|
|
160
|
+
|
|
161
|
+
## 🎨 Кастомизация
|
|
162
|
+
|
|
163
|
+
### Встроенные темы
|
|
164
|
+
|
|
165
|
+
```tsx
|
|
166
|
+
<WysiwygEditor themeName="dark" /> // Темная тема
|
|
167
|
+
<WysiwygEditor themeName="light" /> // Светлая тема
|
|
168
|
+
<WysiwygEditor themeName="minimal" /> // Минималистичная
|
|
169
|
+
<WysiwygEditor themeName="colorful" /> // Яркая
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Пользовательские цвета
|
|
173
|
+
|
|
174
|
+
```tsx
|
|
175
|
+
<WysiwygEditor
|
|
176
|
+
themeName="custom"
|
|
177
|
+
customTheme={{
|
|
178
|
+
primary: '#ff6b6b',
|
|
179
|
+
bgPrimary: '#fff5f5',
|
|
180
|
+
textPrimary: '#2d3748',
|
|
181
|
+
borderRadius: '8px',
|
|
182
|
+
}}
|
|
183
|
+
/>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Управление панелью предпросмотра
|
|
187
|
+
|
|
188
|
+
```tsx
|
|
189
|
+
<WysiwygEditor
|
|
190
|
+
enablePreviewPanel={true}
|
|
191
|
+
previewPosition="right" // 'right' | 'bottom' | 'none'
|
|
192
|
+
previewWidth={400}
|
|
193
|
+
previewHeight={600}
|
|
194
|
+
/>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Подробнее в [CUSTOMIZATION_GUIDE.md](./CUSTOMIZATION_GUIDE.md) и [INTEGRATION_EXAMPLES.md](./INTEGRATION_EXAMPLES.md)
|
|
198
|
+
|
|
87
199
|
## 📖 API
|
|
88
200
|
|
|
89
201
|
### WysiwygEditor Props
|