@emailmaker/emailmaker 1.1.71 → 1.1.75

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +376 -0
  2. package/README.md +37 -1
  3. package/{emailmaker-core.614726aa.js → emailmaker-core.705f9cde.js} +6 -6
  4. package/emailmaker-esm.js +127 -127
  5. package/{emailmaker-po.614726aa.js → emailmaker-po.705f9cde.js} +1 -1
  6. package/emailmaker.d.ts +66 -0
  7. package/emailmaker.js +3 -3
  8. package/iframe/js/amp.CcyAlXr8.js +1 -0
  9. package/iframe/js/iframe-eblock.js +1 -1
  10. package/iframe/js/iframe.js +1 -1
  11. package/iframe/js/rules.B-wCbIo7.js +1 -1
  12. package/package.json +30 -9
  13. package/static/core/{95c1e180.js → 1f9bc4c3.js} +3 -3
  14. package/static/core/{3137210f.js → 23d0be47.js} +3 -3
  15. package/static/core/{654b7a89.js → 3af12861.js} +17590 -15179
  16. package/static/core/{18d7246c.js → 4efbc972.js} +1478 -1458
  17. package/static/core/{53fb6a84.js → 7093b78e.js} +53 -53
  18. package/static/core/{e700a71a2.js → 7af547562.js} +1305 -1241
  19. package/static/core/{67830da5.js → 8e559366.js} +4 -4
  20. package/static/core/aaa151dc.js +2129 -0
  21. package/static/core/{4a3fcabb2.js → baee7d8b2.js} +864 -819
  22. package/static/core/{3cf11ac9.js → d6093d8d.js} +7 -7
  23. package/static/core/e430193d.js +3189 -0
  24. package/static/core/{4d14fed2.js → e44c2cac.js} +6 -6
  25. package/static/core/{d2975cfe.js → fb14792c.js} +1561 -1304
  26. package/static/umd-runtime/ui-kit.js +1171 -1103
  27. package/ui-kit/index.js +1541 -1469
  28. package/favicon-b.ico +0 -0
  29. package/favicon.ico +0 -0
  30. package/fonts/SegoeUI-Bold.woff2 +0 -0
  31. package/fonts/SegoeUI-Semibold.woff2 +0 -0
  32. package/fonts/SegoeUI.woff2 +0 -0
  33. package/iframe/js/amp.D4LpeCG3.js +0 -1
  34. package/js/amplitude.min.js +0 -10859
  35. package/js/sourcebuster.min.js +0 -672
  36. package/manifest.json +0 -17
  37. package/npm-publish.manifest.json +0 -65
  38. package/static/core/13d868f1.js +0 -2119
  39. package/static/core/319cf5c8.js +0 -3150
  40. package/static/media/image-editor/images/samples/large_sample.jpg +0 -0
  41. package/static/media/image-editor/images/samples/sample1.jpg +0 -0
  42. package/static/media/image-editor/images/samples/sample1_thumbnail.jpg +0 -0
  43. package/static/media/image-editor/images/samples/sample2.jpg +0 -0
  44. package/static/media/image-editor/images/samples/sample2_thumbnail.jpg +0 -0
  45. package/static/media/image-editor/images/samples/sample3.jpg +0 -0
  46. package/static/media/image-editor/images/samples/sample3_thumbnail.jpg +0 -0
  47. package/static/media/image-editor/images/samples/sample4.json +0 -871
  48. package/static/media/image-editor/images/samples/sample4_preview.jpg +0 -0
  49. package/test-font.otf +0 -0
  50. package/test-font.ttf +0 -0
  51. package/test-font.woff2 +0 -0
  52. package/tsconfig.json +0 -14
  53. package/two_step_headless_plugin.html +0 -558
  54. /package/iframe/{iframe-eblock.614726aa.html → iframe-eblock.705f9cde.html} +0 -0
  55. /package/iframe/{iframe.614726aa.html → iframe.705f9cde.html} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,376 @@
1
+ # Changelog
2
+
3
+ Все значимые изменения проекта документируются в этом файле.
4
+
5
+ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/).
6
+
7
+ ---
8
+
9
+ ## [1.1.71] - 2026-09-03
10
+
11
+ ### Добавлено
12
+
13
+ - Страница настроек проекта: одна страница с вкладками — описание и логотип, хранилище, фирменные
14
+ стили, участники и роли, интеграции, плагин. Фирменные шрифты и цвета проекта подхватываются
15
+ редактором, несохранённые правки не теряются при уходе со страницы
16
+ - Карточка проекта в списке показывает описание и логотип; в таблице участников появились роль,
17
+ дата приглашения, дата присоединения и последний вход
18
+ - Алгоритмический конвертер вёрстки Stripo в формат EmailMaker: параметр `stripoConverterEnabled`.
19
+ Работает локально и мгновенно, без обращения к ИИ. Письма с фиксированным дизайном конвертируются
20
+ в неадаптивном виде, адаптивные — с мобильными правилами
21
+ - Чат поддержки доступен всем пользователям: подключается напрямую, без Google Tag Manager, и узнаёт
22
+ вошедшего пользователя
23
+ - Режим предпросмотра письма без служебных маркеров скрытых блоков
24
+ - Тексты ошибок API переведены на русский, украинский, испанский и португальский; язык ответа
25
+ выбирается по профилю пользователя и заголовку `Accept-Language`
26
+
27
+ ### Исправлено
28
+
29
+ - Показ и сохранение письма в плагине: повторный `show()` того же письма не пересоздаёт холст,
30
+ переход на другое письмо не ждёт таймаут, первое сохранение не перезагружает редактор, а второе
31
+ идёт с уже присвоенным id и не плодит копию; после `destroy` запросов больше нет
32
+ - Тема и предзаголовок из вёрстки не теряются при сохранении, а ответ сохранения не откатывает
33
+ свежие метаданные письма
34
+ - Новое письмо из шаблона не теряет связь с родителем; история запрашивается по показанному письму
35
+ - Экспорт: письмо терялось из-за разметки после `</html>`; сбой сборки HTML больше не выдаётся за
36
+ пустой результат
37
+ - Конвертер вёрстки: блоки не теряются на письме BeeFree, правленном руками; кнопке без своей ширины
38
+ больше не навязываются 200px
39
+ - Социальные блоки различаются в панели настроек по позиции в документе
40
+ - Ссылки в письме больше не оборачиваются в `span` с подчёркиванием
41
+ - File Manager: имя файла не теряется в CDN-ссылке с query; настройки доходят до отдельного
42
+ редактора картинок
43
+ - Переводы: меню «Проект», окно о несохранённых изменениях, описания и статусы интеграций
44
+ - Каталог чужой локали больше не применяется, а пустой ответ не затирает кэш переводов
45
+ - Навигация в SaaS-версии
46
+
47
+ ---
48
+
49
+ ## [1.1.60] - 2026-08-14
50
+
51
+ ### Добавлено
52
+
53
+ - Экспорт письма PNG-архивом: в архиве десктопная и мобильная версии письма
54
+ - Пробный период: диалог с предложением попробовать платный тариф в редакторе и единый диалог
55
+ активации на странице тарифов
56
+ - Ограничения по тарифу владельца проекта: автосохранение и платные диалоги учитывают тариф
57
+ владельца, а не текущего пользователя; тариф владельца добавлен в доменную модель проекта
58
+ - File Manager: блокируемые вкладки библиотеки с бейджем
59
+
60
+ ### Исправлено
61
+
62
+ - Устойчивость плагина к сбоям бэкенда: отложенный переход в standalone-режим, failover не
63
+ срывается на ошибках авторизации и возвращается на основной origin после восстановления
64
+ - Производительность редактора: меньше лишних перерисовок панели письма и форм настроек,
65
+ плавный drag-and-drop
66
+ - Публичный предпросмотр письма больше не уводит на страницу входа
67
+ - Headless-контейнер без заданного размера ломал раскладку письма и сжимал картинки
68
+ - File Manager: превью показывает файл, пока миниатюра не готова; сжатие изображений отключается
69
+ при нулевых лимитах; убрано дублирование папок в дереве
70
+
71
+ ---
72
+
73
+ ## [1.1.47] - 2026-08-07
74
+
75
+ ### Добавлено
76
+
77
+ - Подключение собственного ИИ хоста вместо встроенного: колбэки `handleAITextRequest` (чат-ассистент
78
+ и генератор писем) и `handleAIImageRequest` (генерация картинок) в `init(options)`. Хост получает
79
+ прогресс через `onProgress`, частичный HTML через `onStreamChunk` и `AbortSignal` для отмены;
80
+ такие генерации не блокируются лимитами EmailMaker и не списываются в счётчики подписки.
81
+ - Публичный контракт `templateDirectives`: политика экранирования шаблонных директив ESP-синтаксисов,
82
+ единообразно применяется в редакторе, блочном редакторе и при экспорте (HTML, EML, ZIP)
83
+ - App-токены для интеграторов: `POST /auth/app/token`, конвертер вёрстки работает по app-токенам
84
+ с лимитами на клиента
85
+ - Headless-режим встраивания редактора
86
+ - Смена пароля в профиле пользователя
87
+ - File Manager: параллельное сжатие загружаемых файлов
88
+
89
+ ### Исправлено
90
+
91
+ - Отключён автоперевод страницы браузером — он ломал редактор
92
+ - Monaco: ESM-воркеры при cross-origin publicPath
93
+ - Кириллические имена файлов декодируются при загрузке по URL
94
+ - Стабильное встраивание в Angular и Module Federation хосты
95
+
96
+ ### Изменено
97
+
98
+ - Переход на React 19 (Redux Toolkit 2, собственный IframeResizer)
99
+ - Вход через Google, Яндекс и eLama, регистрация и капча переведены на новый Go-бэкенд
100
+ (`/api/v2/auth/*`)
101
+ - Страница проектов переводится на Go-бэкенд `/api/v2` (под флагом): участники и приглашения,
102
+ настройки одним сохранением, теги и папки, интеграции ESP, настройки хранилища
103
+ - File Manager: провайдер на Go-бэкенде (под флагом) — фоновая индексация старого дерева файлов
104
+ с индикатором прогресса, автоподгрузка миниатюр, корзина с восстановлением в выбранную папку
105
+
106
+ ---
107
+
108
+ ## [1.1.29] - 2026-07-14
109
+
110
+ ### Добавлено
111
+
112
+ - Конвертер чужой вёрстки в формат EmailMaker: раздельные параметры `beeFreeConverterEnabled` (детерминированная конвертация BeeFree/Stripo) и `aiLayoutConverterEnabled` (ИИ-конвертация прочей вёрстки)
113
+ - CAPTCHA на формах входа и регистрации (Cloudflare Turnstile, Yandex SmartCaptcha)
114
+ - UTM-метки и динамические подстановки в URL при экспорте
115
+ - Улучшения VML-кнопок для совместимости с Outlook
116
+
117
+ ### Исправлено
118
+
119
+ - Синхронизация контента между iframe и Monaco (эхо-цикл, автосохранение)
120
+ - Стабильный embed редактора во внешних React/Microfrontend-приложениях (StrictMode, publicPath)
121
+ - Читаемые тосты ошибок; автосохранение не блокирует пользовательские правки
122
+ - Белый экран при недоступном API локализации
123
+
124
+ ### Изменено
125
+
126
+ - UI Kit и интерфейс переведены на Ant Design 6
127
+ - File Manager обновлён до 1.1.0
128
+
129
+ ---
130
+
131
+ ## [1.1.25] - 2026-07-07
132
+
133
+ ### Добавлено
134
+
135
+ - Копирование float-блоков
136
+ - Глобальные блоки: доступны всем пользователям, переработана синхронизация
137
+ - Режим кода в боковой панели редактора
138
+ - Пустые состояния в таблицах писем и проектов
139
+ - Индикаторы загрузки сохранения и автосохранения
140
+
141
+ ### Исправлено
142
+
143
+ - Subject и preheader письма
144
+ - Восстановление автосохранения после сбоя
145
+ - Случайное удаление всех стилей в блоке
146
+ - Санитизация HTML от AdGuard и других расширений браузера
147
+ - Vite host plugin: public path в dev-режиме
148
+
149
+ ---
150
+
151
+ ## [1.1.7] - 2026-06-15
152
+
153
+ ### Добавлено
154
+
155
+ - Аналитика действий в iframe редактора письма
156
+ - Улучшен drag-and-drop вставки атомов в письмо
157
+
158
+ ### Исправлено
159
+
160
+ - Превью изображений и видео в настройках элемента (`SelectedImageForm`)
161
+ - Синхронизация meta и layout в форме соцблоков (`SelectedSocialForm`)
162
+ - Детекция и санитизация стилей, ломаемых расширениями браузера (adblock)
163
+ - Навигация по вкладкам панели настроек (`PanelFormTabsOverrides`)
164
+
165
+ ### Изменено
166
+
167
+ - Sentry: переход на переустановленный self-hosted инстанс
168
+
169
+ ---
170
+
171
+ ## [1.1.0] - 2026-06-08
172
+
173
+ ### Добавлено
174
+
175
+ - Система плагинов: extensions API, sandbox API, CLI для разработки плагинов, внутренние плагины; API получения настроек письма (DEV-11837)
176
+ - Глобальные блоки: создание, маркеры в превью, синхронизация изменений по всем шаблонам
177
+ - Страница проектов (DEV-11990): режим карточек, поиск и фильтры, роль Viewer, управление участниками из меню и списка, частые проекты в боковом меню
178
+ - Переключение светлой/тёмной темы в редакторе письма
179
+ - Автосохранение с механизмом повторных попыток; корректная обработка `projectId` для нового письма (DEV-14828)
180
+ - Откат письма к предыдущей версии (DEV-15046)
181
+ - Локализация компонентов UI Kit
182
+ - Аналитика изменений настроек элементов в панели (Amplitude `change_element_setting`)
183
+ - Нормализация ссылок в полях href
184
+ - EML-экспорт: встраивание изображений в base64
185
+
186
+ ### Исправлено
187
+
188
+ - Текстовый редактор: форматирование и редактирование текста (DEV-14640, DEV-14852)
189
+ - Редактирование переменных письма (DEV-14582)
190
+ - Тёмная тема в меню проектов и карточке входящих (DEV-14842)
191
+ - Стикеры в редакторе Pixie (DEV-14969)
192
+ - Monaco: воркеры при разных origin; ESM-сборка редактора
193
+ - Мобильное выравнивание текста и кнопок
194
+ - URL превью изображений переведены на env-переменные (DEV-15052)
195
+
196
+ ### Изменено
197
+
198
+ - Сборка переведена на Vite/ESM; монорепо на pnpm
199
+ - Prod-релизы и версия npm-пакетов определяются git-тегами (`emm-v*`)
200
+ - Санитизация HTML письма от вмешательства расширений браузера
201
+
202
+ ---
203
+
204
+ ## [1.0.117] - 2026-04-07
205
+
206
+ ### Добавлено
207
+
208
+ - Списки в текстовом редакторе (DEV-12615)
209
+ - Якорные ссылки
210
+ - Страница и UX биллинга: лимиты (`limitsApi`), статистика использования, модалки paywall и повышения лимита (`LimitUpgradeModal`, в том числе превышение `image_generate`), виджет тарифа в левом меню (`MenuTariffWidget`): триал, подписка, автопродление (DEV-11223 и связанные задачи)
211
+ - Модальные окна биллинга: выбор тарифа при оплате (`PlanCheckoutChoiceModal`), запрос счёта для юрлица с префилдом и синхронизацией полей (`TariffInvoiceRequestModal`)
212
+ - Переработка социальных блоков: drag-and-drop, подсказки в настройках, пользовательские иконки; платформа VK (`vkv`); контраст и фон атомов и ячеек; кнопка удаления в форме соцэлемента; обновление CDN URL и генерация ссылок на иконки (DEV-13666 и смежные правки)
213
+ - Опции форматирования текста в `SelectedTextCommonForm`
214
+ - Поддержка `commonStyles` в iframe и глубокое слияние стилей контента; доработка отступов панелей
215
+ - Удаление `width` и `max-width` у изображений в неадаптивных письмах (`stripImageWidthForNonResponsive`)
216
+ - Проверки явной ширины контент-колонок во многоколоночных структурах и корректный пересчёт ширин блоков
217
+
218
+ ### Исправлено
219
+
220
+ - Тема письма: пробелы и разбор тега `title` (`getSubject`)
221
+ - Вёрстка письма: ширина колонок с классом `em-insert-ignore`
222
+ - Интеграции: Dotdigital, Klaviyo, ActiveCampaign; URL справки по API-ключу Brevo
223
+ - Файловый менеджер: уведомление при дубликате папки (409), прокрутка списка папок в подменю «Переместить», доработки DataSource и копирования; исключение null в FloatingBlocks; обработка загрузки файлов
224
+ - Нормализация превью изображений для редактора Pixie и форматов отображения через `normalizeImageFormatForDisplay` в загрузчиках изображений
225
+ - Фон текста в письме (DEV-14472)
226
+ - Навигация к родительскому элементу кнопки (DEV-14443)
227
+ - Открытие центра изображений (DEV-14425)
228
+ - Соцблоки: селекторы корневых таблиц, стили форм и `ColorPickerInput`, отступы в `EmailPane` и социальной форме
229
+ - Переключение темы; ошибки halt, Sentry и Unisender; вычисление путей в плагине Vite
230
+ - Отключена проверка TypeScript в HTML в редакторе Monaco
231
+ - Кнопки: единые `height` и `line-height` с переменными темы в `Button.scss`
232
+
233
+ ### Изменено
234
+
235
+ - Обновлены версии Sentry, файлового менеджера и прочих зависимостей
236
+ - Обновлены базовые URL CDN-иконок соцсетей
237
+ - Биллинг: упрощение и рефакторинг `BillingPage`, баннеры и кнопки автопродления; замена сборки webhook на `buildLegacyWebhookRequest`; удалены прокси Streamline и Giphy; поддержка кастомного прокси (DEV-14043)
238
+ - Общие стили: специфичность шрифтов (`PanelForm`, `common.scss`), стили платёжных кнопок в `BillingBannerModal`
239
+ - Компонент `Ribbon` и уведомления; локализация части биллинга и интерфейса
240
+ - CI: удалена джоба Allure; настройки `GIT_CLONE_PATH` для тестовых VM
241
+
242
+ ---
243
+
244
+ ## [1.0.109] - 2026-04-07
245
+
246
+ ### Добавлено
247
+
248
+ - Списки в текстовом редакторе (DEV-12615)
249
+ - Учёт настроек AI: отключение запросов диалогов при выключенном ассистенте; расширение контекста для промпта
250
+ - Поля subscription в методах логирования (DEV-13876)
251
+ - Отправка ошибок из error boundary в статистику
252
+
253
+ ### Исправлено
254
+
255
+ - Тема письма: обработка пробелов и разбор тега `title` (getSubject)
256
+ - Файловый менеджер: уведомление при дубликате папки (409), прокрутка списка папок в подменю «Переместить», доработки DataSource и копирования
257
+ - Ссылки в формах: корректные протокол по умолчанию и пустые URL
258
+ - Песочница: drag-and-drop и перекрытие кликов (pointer-events)
259
+ - Регистрация `applicationElementSettingsSet` и фильтрация путей элементов
260
+ - Нормализация превью изображений для редактора Pixie
261
+
262
+ ### Изменено
263
+
264
+ - Обновлены версии Sentry и зависимостей
265
+
266
+ ---
267
+
268
+ ## [1.0.108] - 2026-03-26
269
+
270
+ ### Добавлено
271
+
272
+ - Вкладка интеграций в модальном окне проекта
273
+ - События data layer при экспорте письма
274
+ - Настройка локальной загрузки в центре изображений (`imageCenterLocalUploadEnabled`)
275
+
276
+ ### Исправлено
277
+
278
+ - Файловый менеджер: отказ от Redux во взаимодействии с FM (DEV-14018, DEV-13858), прокси, фронтовая пагинация, лишняя папка Edited при загрузке
279
+ - Редактор и sandbox: iframe contenteditable, вставка пустых списков (DEV-13612), редактирование текста (DEV-13608), удаление с конца блока (DEV-13558), мобильные свойства текста (DEV-13679)
280
+ - Кнопка в письме (DEV-13746); иконки выравнивания через `currentColor` (DEV-13790)
281
+ - Дублирование уведомлений при отправке тестового письма (DEV-10977)
282
+ - Сортировка в таблице проектов (DEV-13759)
283
+ - Автосохранение: проверка `revisionService`, `emailId` в revisionToApply
284
+
285
+ ### Изменено
286
+
287
+ - Таблицы Blocks / Emails / Projects / Members: вёрстка, меню, drag-and-drop на страницах блока и письма
288
+ - Webhook в компоненте кнопок письма
289
+
290
+ ---
291
+
292
+ ## [1.0.104-alpha.1] - 2026-03-02
293
+
294
+ ### Добавлено
295
+
296
+ **Интеграции:**
297
+
298
+ - Интеграция с Unisender и управление настройками
299
+ - Система доступности интеграций для конкретных приложений
300
+
301
+ **Редактор:**
302
+
303
+ - Ограничения для бесплатного плана в компоненте ButtonsEmail
304
+ - Поддержка mailto ссылок (subject, body) — DEV-13102
305
+ - Функциональность массовых блоков
306
+ - Сортировка элементов
307
+ - Вставка ссылки с нужным цветом — DEV-13172
308
+
309
+ **AI и UX:**
310
+
311
+ - AI-функциональность в EmailPageHeader с проверкой оплаты
312
+ - Улучшенные анимации модальных окон
313
+
314
+ **FileManager:**
315
+
316
+ - Поддержка задания нового имени при копировании файлов и папок
317
+ - Очистка кеша
318
+
319
+ ### Исправлено
320
+
321
+ **Редактор таблиц:**
322
+
323
+ - Вёрстка выпадающего меню элемента Таблица — DEV-13370
324
+ - Работа редактора таблиц — DEV-13371
325
+
326
+ **Вставка и ссылки:**
327
+
328
+ - Дублирование тегов при вставке текста — DEV-13293
329
+ - Дублирование ссылок при вставке — DEV-13378
330
+
331
+ **Элементы:**
332
+
333
+ - Добавление элемента Кнопка в письмо — DEV-13312
334
+ - Некорректное отображение настроек маркеров — DEV-13313
335
+ - Запрет переноса строки для уведомления — DEV-13143
336
+
337
+ **Данные и API:**
338
+
339
+ - Изменения тегов и групп при отправке данных письма — DEV-10189
340
+ - Расчёт суммы рекуррентного платежа с `is_only_first_period` — DEV-13377
341
+ - Уведомление при ошибке отправки тестового письма
342
+ - Локализация в yandexLoginProxyPage
343
+ - Проверка истечения JWT токена и обработка 401 ответа
344
+
345
+ ### Изменено
346
+
347
+ **Рефакторинг sandbox.js → TypeScript:**
348
+
349
+ - Миграция на модульную структуру с типами и централизованным состоянием
350
+ - Модули для обработки событий мыши, клавиатуры, drag-and-drop
351
+ - Обработчики настроек элементов (ссылки, переменные, отступы)
352
+ - Модули для аккордеонов, кнопок, каруселей, таблиц
353
+ - Утилиты для текстового форматирования, стилей и VML
354
+
355
+ **Интеграции:**
356
+
357
+ - IntegrationSettings переименован в IntegrationSettingsData
358
+ - Unisender интеграция мигрирована на гибкую структуру
359
+
360
+ **UI:**
361
+
362
+ - Обновлён layout для BlocksTable и EmailsTable
363
+ - Улучшены стили чекбоксов в таблицах
364
+
365
+ ### Тестирование
366
+
367
+ - Интеграционные тесты для html2Dom, dom2Html и export-пайплайна
368
+ - Функциональные тесты для css namespace в dom2Html
369
+ - Функциональные тесты html2Dom
370
+ - Тесты для функции createWrapper
371
+
372
+ ---
373
+
374
+ ## [1.0.103] - 2026-02-05
375
+
376
+ *Changelog не документирован*
package/README.md CHANGED
@@ -186,6 +186,42 @@ emailmaker
186
186
 
187
187
  ### React (обёртка)
188
188
 
189
+ В пакете есть готовый компонент: он сам создаёт контейнер, вызывает **`init`** при монтировании
190
+ и **`destroy`** при размонтировании.
191
+
192
+ ```tsx
193
+ import Emailmaker from '@emailmaker/emailmaker/react';
194
+
195
+ const content = { email: { id: 'new' }, templateId: 1 };
196
+ const editorConfig = { theme: 'light' };
197
+ const editorStyle = { height: '100vh' };
198
+
199
+ export function EmailmakerEditor({ project, getAuthToken }) {
200
+ return (
201
+ <Emailmaker
202
+ getAuthToken={getAuthToken}
203
+ project={project}
204
+ content={content}
205
+ config={editorConfig}
206
+ style={editorStyle}
207
+ />
208
+ );
209
+ }
210
+ ```
211
+
212
+ Компонент принимает те же опции, что и **`init`**, плюс `id`, `className`, `style` и `container`
213
+ (остальные атрибуты контейнера). **`element`** передавать не нужно — компонент подставляет свой
214
+ `div`. `react` версии 16.8 и выше должен быть в зависимостях вашего проекта: в пакет он не входит.
215
+
216
+ Два ограничения, о которых лучше знать заранее:
217
+
218
+ - Любое обновление props приводит к **`reset`** редактора. Держите объекты и колбэки стабильными
219
+ (`useMemo` / `useCallback`), иначе редактор будет пересоздаваться на каждый рендер родителя.
220
+ - Ошибки инициализации компонент не пробрасывает и никак не показывает. Если **`init`** падает,
221
+ вы увидите пустой контейнер — для диагностики вызовите **`init`** напрямую.
222
+
223
+ Когда нужен полный контроль над жизненным циклом, обёртку пишут руками.
224
+
189
225
  Минимальный каркас: монтирование, **`destroy`** при размонтировании.
190
226
 
191
227
  ```tsx
@@ -482,7 +518,7 @@ emailmaker.init({
482
518
  | handleTestEmailModal | Открыто окно тестовой отправки. |
483
519
  | handleDestroy | Перед уничтожением экземпляра. |
484
520
  | handleLoad | Завершена загрузка экземпляра; можно безопасно вызывать **`getEmail`** и др. |
485
- | handleLoadImage | Загрузка изображения пользователем; **`handleFileProxy`**, **`handleUrlProxy`** — прокси файлов/URL при необходимости. |
521
+ | handleLoadImage | Загрузка изображения пользователем; **`handleFileProxy`**, **`handleUrlProxy`** — прокси файлов/URL при необходимости. Вернуть URL; исключение из обработчика = отказ (редактор не грузит картинку на свой бэкенд), **`undefined`** — редактор дозагружает сам, кроме замкнутого контура (**`standaloneKey`**). |
486
522
  | handleNotify | Произвольное уведомление. |
487
523
  | handleError | Ошибка (можно переопределить UI). |
488
524
  | handleSuccess | Успешная операция. |
@@ -3,16 +3,16 @@ __emailmaker__.define("core", [
3
3
  "exports",
4
4
  "module",
5
5
  "static/core/7df48ae1.js",
6
- "static/core/d2975cfe.js",
7
- "static/core/18d7246c.js",
8
- "static/core/95c1e180.js"
6
+ "static/core/fb14792c.js",
7
+ "static/core/4efbc972.js",
8
+ "static/core/1f9bc4c3.js"
9
9
  ], function(f, E, me) {
10
10
  Object.defineProperties(E, {
11
11
  __esModule: { value: !0 },
12
12
  [Symbol.toStringTag]: { value: "Module" }
13
13
  });
14
14
  f("./static/core/7df48ae1.js");
15
- const n = f("./static/core/d2975cfe.js"), l = f("./static/core/18d7246c.js"), m = f("./static/core/95c1e180.js");
15
+ const n = f("./static/core/fb14792c.js"), l = f("./static/core/4efbc972.js"), m = f("./static/core/1f9bc4c3.js");
16
16
  var A = "Editor instance was destroyed and cannot be reused. A fresh instance will be created instead.";
17
17
  function w() {
18
18
  const e = new Error(A);
@@ -534,7 +534,7 @@ __emailmaker__.define("core", [
534
534
  R
535
535
  ];
536
536
  async function Z() {
537
- return (await Promise.resolve().then(() => f("./static/core/654b7a89.js"))).default;
537
+ return (await Promise.resolve().then(() => f("./static/core/3af12861.js"))).default;
538
538
  }
539
539
  var ee = (e) => {
540
540
  let t = null, o = !1;
@@ -669,5 +669,5 @@ __emailmaker__.define("core", [
669
669
  ampHtml: o
670
670
  };
671
671
  }
672
- E.init = ae, E.parseAMP = le, E.version = "1.1.71";
672
+ E.init = ae, E.parseAMP = le, E.version = "1.1.75";
673
673
  });