@emailmaker/emailmaker 1.1.72 → 1.1.81

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 (61) hide show
  1. package/CHANGELOG.md +418 -0
  2. package/README.md +37 -1
  3. package/{emailmaker-core.bd3c8144.js → emailmaker-core.5550faa5.js} +6 -6
  4. package/emailmaker-esm.js +127 -127
  5. package/{emailmaker-po.bd3c8144.js → emailmaker-po.5550faa5.js} +1 -1
  6. package/emailmaker.d.ts +4 -0
  7. package/emailmaker.js +3 -3
  8. package/iframe/js/amp.BtGCOg7N.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/{ab6da7f5.js → 16751762.js} +7 -7
  14. package/static/core/1cb65d65.js +3280 -0
  15. package/static/core/{ec8d567d2.js → 20625a132.js} +2736 -2475
  16. package/static/core/{a5a25e092.js → 26d559d32.js} +95 -95
  17. package/static/core/{ce8ca64c.js → 395f82fa.js} +3 -3
  18. package/static/core/{dda6d713.js → 438f4766.js} +4 -4
  19. package/static/core/{2dd8b882.js → 4d48fdcd.js} +84 -84
  20. package/static/core/{f5f707b8.js → 544a8fe8.js} +51 -51
  21. package/static/core/{893bd50e.js → 5be7581f.js} +21336 -18551
  22. package/static/core/{dd6d3ae42.js → 60e2f0e02.js} +40 -40
  23. package/static/core/758a0c3c.js +1098 -0
  24. package/static/core/{dd625043.js → 8fe345a7.js} +15 -15
  25. package/static/core/adc7cd4e.js +2134 -0
  26. package/static/core/{fab6e3c1.js → d0a3e529.js} +2465 -2615
  27. package/static/core/{34b3c6f9.js → d239a2a0.js} +278 -254
  28. package/static/core/{5da8610f.js → d34d3cc0.js} +3447 -3122
  29. package/static/core/{98529d8d2.js → ed08ded22.js} +1315 -1242
  30. package/static/core/{2181dfc12.js → f6e0d3702.js} +2138 -2086
  31. package/static/umd-runtime/ui-kit.js +1171 -1103
  32. package/ui-kit/index.js +1541 -1469
  33. package/favicon-b.ico +0 -0
  34. package/favicon.ico +0 -0
  35. package/fonts/SegoeUI-Bold.woff2 +0 -0
  36. package/fonts/SegoeUI-Semibold.woff2 +0 -0
  37. package/fonts/SegoeUI.woff2 +0 -0
  38. package/iframe/js/amp.D4LpeCG3.js +0 -1
  39. package/js/amplitude.min.js +0 -10859
  40. package/js/sourcebuster.min.js +0 -672
  41. package/manifest.json +0 -17
  42. package/npm-publish.manifest.json +0 -65
  43. package/static/core/84e7cbac.js +0 -925
  44. package/static/core/8815169a.js +0 -3189
  45. package/static/core/e84eccff.js +0 -2122
  46. package/static/media/image-editor/images/samples/large_sample.jpg +0 -0
  47. package/static/media/image-editor/images/samples/sample1.jpg +0 -0
  48. package/static/media/image-editor/images/samples/sample1_thumbnail.jpg +0 -0
  49. package/static/media/image-editor/images/samples/sample2.jpg +0 -0
  50. package/static/media/image-editor/images/samples/sample2_thumbnail.jpg +0 -0
  51. package/static/media/image-editor/images/samples/sample3.jpg +0 -0
  52. package/static/media/image-editor/images/samples/sample3_thumbnail.jpg +0 -0
  53. package/static/media/image-editor/images/samples/sample4.json +0 -871
  54. package/static/media/image-editor/images/samples/sample4_preview.jpg +0 -0
  55. package/test-font.otf +0 -0
  56. package/test-font.ttf +0 -0
  57. package/test-font.woff2 +0 -0
  58. package/tsconfig.json +0 -14
  59. package/two_step_headless_plugin.html +0 -558
  60. /package/iframe/{iframe-eblock.bd3c8144.html → iframe-eblock.5550faa5.html} +0 -0
  61. /package/iframe/{iframe.bd3c8144.html → iframe.5550faa5.html} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,418 @@
1
+ # Changelog
2
+
3
+ Все значимые изменения проекта документируются в этом файле.
4
+
5
+ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/).
6
+
7
+ ---
8
+
9
+ ## [1.1.81] - 2026-09-17
10
+
11
+ ### Добавлено
12
+
13
+ - Стили проекта в плагине: раздел `projectStyles` в `init(options)` — фирменная палитра, свои шрифты
14
+ и ссылки на соцсети. Цвета появляются в палитрах, шрифты — в списке шрифтов и на холсте, а элемент
15
+ «Соцсети» заполняется ссылками проекта вместо заглушки
16
+ - Экспорт письма в Markdown: подпункт в меню экспорта в текст, параметр `exportMarkdownEnabled`
17
+ - Аннотации Gmail для вкладки «Промоакции»: отдельная вкладка в боковой панели с предпросмотром
18
+ карточки, параметр `annotationsEnabled` (по умолчанию выключен)
19
+ - Кнопка «Поменять местами» для колонок float-блока
20
+ - Ограничения тарифа действуют на все функции редактора: недоступное помечено замком с предложением
21
+ перейти на старший тариф или скрыто; после оплаты замки снимаются без перезагрузки
22
+
23
+ ### Исправлено
24
+
25
+ - Показ и сохранение письма в плагине: переход на другое письмо и показ шаблона не пересоздают
26
+ редактор; тема и предзаголовок, правленные в интерфейсе, не откатываются; несохранённые правки из
27
+ автосохранения не перетираются серверной версией; новое письмо без вёрстки открывается с
28
+ заготовкой, а холст не сбрасывается после первого сохранения; `save()` без показанного письма
29
+ сразу возвращает ошибку
30
+ - Плагин: если `handleLoadImage` выбросил ошибку, редактор показывает её текст и не отправляет
31
+ картинку на бэкенд EmailMaker; стили проекта у бэкенда EmailMaker больше не запрашиваются
32
+ - Стили сохранённого блока больше не растягивают интерфейс редактора; превью блока получает
33
+ правильную высоту после загрузки картинок
34
+ - Редактор: переменная в адресе картинки сохраняется; цвет текста в стилях контента меняется после
35
+ белого; ячейка-обёртка кнопки не показывается в хлебных крошках; выключенная рамка не возвращается со старыми значениями; после удаления последнего блока не остаётся пустой таблицы
36
+ - Конвертер вёрстки BeeFree: отступы текста, кнопок, соцсетей и разделителей переносятся из
37
+ исходника, свободный текст не теряется, шрифты Google подключаются
38
+ - File Manager: понятные имена файлов из стоков и GIF вместо `photo-<id>` и `giphy-downsized`;
39
+ превью гифки видно сразу; версия в query ссылки не принимается за расширение; в консоли больше нет рекламного сообщения i18next
40
+ - Уведомление об ошибке показывает ответ сервера, например «Лимит превышен», а не `rejected`
41
+ - Переводы: окна участников проекта, счётчик блоков при массовом сохранении, строки конвертера
42
+ вёрстки
43
+
44
+ ### Изменено
45
+
46
+ - Состав npm-пакета задан белым списком: тестовый стенд плагина, тестовые шрифты, скрипты аналитики
47
+ и PWA-манифест в пакет больше не попадают; в пакет добавлен `CHANGELOG.md`
48
+
49
+ ---
50
+
51
+ ## [1.1.71] - 2026-09-03
52
+
53
+ ### Добавлено
54
+
55
+ - Страница настроек проекта: одна страница с вкладками — описание и логотип, хранилище, фирменные
56
+ стили, участники и роли, интеграции, плагин. Фирменные шрифты и цвета проекта подхватываются
57
+ редактором, несохранённые правки не теряются при уходе со страницы
58
+ - Карточка проекта в списке показывает описание и логотип; в таблице участников появились роль,
59
+ дата приглашения, дата присоединения и последний вход
60
+ - Алгоритмический конвертер вёрстки Stripo в формат EmailMaker: параметр `stripoConverterEnabled`.
61
+ Работает локально и мгновенно, без обращения к ИИ. Письма с фиксированным дизайном конвертируются
62
+ в неадаптивном виде, адаптивные — с мобильными правилами
63
+ - Чат поддержки доступен всем пользователям: подключается напрямую, без Google Tag Manager, и узнаёт
64
+ вошедшего пользователя
65
+ - Режим предпросмотра письма без служебных маркеров скрытых блоков
66
+ - Тексты ошибок API переведены на русский, украинский, испанский и португальский; язык ответа
67
+ выбирается по профилю пользователя и заголовку `Accept-Language`
68
+
69
+ ### Исправлено
70
+
71
+ - Показ и сохранение письма в плагине: повторный `show()` того же письма не пересоздаёт холст,
72
+ переход на другое письмо не ждёт таймаут, первое сохранение не перезагружает редактор, а второе
73
+ идёт с уже присвоенным id и не плодит копию; после `destroy` запросов больше нет
74
+ - Тема и предзаголовок из вёрстки не теряются при сохранении, а ответ сохранения не откатывает
75
+ свежие метаданные письма
76
+ - Новое письмо из шаблона не теряет связь с родителем; история запрашивается по показанному письму
77
+ - Экспорт: письмо терялось из-за разметки после `</html>`; сбой сборки HTML больше не выдаётся за
78
+ пустой результат
79
+ - Конвертер вёрстки: блоки не теряются на письме BeeFree, правленном руками; кнопке без своей ширины
80
+ больше не навязываются 200px
81
+ - Социальные блоки различаются в панели настроек по позиции в документе
82
+ - Ссылки в письме больше не оборачиваются в `span` с подчёркиванием
83
+ - File Manager: имя файла не теряется в CDN-ссылке с query; настройки доходят до отдельного
84
+ редактора картинок
85
+ - Переводы: меню «Проект», окно о несохранённых изменениях, описания и статусы интеграций
86
+ - Каталог чужой локали больше не применяется, а пустой ответ не затирает кэш переводов
87
+ - Навигация в SaaS-версии
88
+
89
+ ---
90
+
91
+ ## [1.1.60] - 2026-08-14
92
+
93
+ ### Добавлено
94
+
95
+ - Экспорт письма PNG-архивом: в архиве десктопная и мобильная версии письма
96
+ - Пробный период: диалог с предложением попробовать платный тариф в редакторе и единый диалог
97
+ активации на странице тарифов
98
+ - Ограничения по тарифу владельца проекта: автосохранение и платные диалоги учитывают тариф
99
+ владельца, а не текущего пользователя; тариф владельца добавлен в доменную модель проекта
100
+ - File Manager: блокируемые вкладки библиотеки с бейджем
101
+
102
+ ### Исправлено
103
+
104
+ - Устойчивость плагина к сбоям бэкенда: отложенный переход в standalone-режим, failover не
105
+ срывается на ошибках авторизации и возвращается на основной origin после восстановления
106
+ - Производительность редактора: меньше лишних перерисовок панели письма и форм настроек,
107
+ плавный drag-and-drop
108
+ - Публичный предпросмотр письма больше не уводит на страницу входа
109
+ - Headless-контейнер без заданного размера ломал раскладку письма и сжимал картинки
110
+ - File Manager: превью показывает файл, пока миниатюра не готова; сжатие изображений отключается
111
+ при нулевых лимитах; убрано дублирование папок в дереве
112
+
113
+ ---
114
+
115
+ ## [1.1.47] - 2026-08-07
116
+
117
+ ### Добавлено
118
+
119
+ - Подключение собственного ИИ хоста вместо встроенного: колбэки `handleAITextRequest` (чат-ассистент
120
+ и генератор писем) и `handleAIImageRequest` (генерация картинок) в `init(options)`. Хост получает
121
+ прогресс через `onProgress`, частичный HTML через `onStreamChunk` и `AbortSignal` для отмены;
122
+ такие генерации не блокируются лимитами EmailMaker и не списываются в счётчики подписки.
123
+ - Публичный контракт `templateDirectives`: политика экранирования шаблонных директив ESP-синтаксисов,
124
+ единообразно применяется в редакторе, блочном редакторе и при экспорте (HTML, EML, ZIP)
125
+ - App-токены для интеграторов: `POST /auth/app/token`, конвертер вёрстки работает по app-токенам
126
+ с лимитами на клиента
127
+ - Headless-режим встраивания редактора
128
+ - Смена пароля в профиле пользователя
129
+ - File Manager: параллельное сжатие загружаемых файлов
130
+
131
+ ### Исправлено
132
+
133
+ - Отключён автоперевод страницы браузером — он ломал редактор
134
+ - Monaco: ESM-воркеры при cross-origin publicPath
135
+ - Кириллические имена файлов декодируются при загрузке по URL
136
+ - Стабильное встраивание в Angular и Module Federation хосты
137
+
138
+ ### Изменено
139
+
140
+ - Переход на React 19 (Redux Toolkit 2, собственный IframeResizer)
141
+ - Вход через Google, Яндекс и eLama, регистрация и капча переведены на новый Go-бэкенд
142
+ (`/api/v2/auth/*`)
143
+ - Страница проектов переводится на Go-бэкенд `/api/v2` (под флагом): участники и приглашения,
144
+ настройки одним сохранением, теги и папки, интеграции ESP, настройки хранилища
145
+ - File Manager: провайдер на Go-бэкенде (под флагом) — фоновая индексация старого дерева файлов
146
+ с индикатором прогресса, автоподгрузка миниатюр, корзина с восстановлением в выбранную папку
147
+
148
+ ---
149
+
150
+ ## [1.1.29] - 2026-07-14
151
+
152
+ ### Добавлено
153
+
154
+ - Конвертер чужой вёрстки в формат EmailMaker: раздельные параметры `beeFreeConverterEnabled` (детерминированная конвертация BeeFree/Stripo) и `aiLayoutConverterEnabled` (ИИ-конвертация прочей вёрстки)
155
+ - CAPTCHA на формах входа и регистрации (Cloudflare Turnstile, Yandex SmartCaptcha)
156
+ - UTM-метки и динамические подстановки в URL при экспорте
157
+ - Улучшения VML-кнопок для совместимости с Outlook
158
+
159
+ ### Исправлено
160
+
161
+ - Синхронизация контента между iframe и Monaco (эхо-цикл, автосохранение)
162
+ - Стабильный embed редактора во внешних React/Microfrontend-приложениях (StrictMode, publicPath)
163
+ - Читаемые тосты ошибок; автосохранение не блокирует пользовательские правки
164
+ - Белый экран при недоступном API локализации
165
+
166
+ ### Изменено
167
+
168
+ - UI Kit и интерфейс переведены на Ant Design 6
169
+ - File Manager обновлён до 1.1.0
170
+
171
+ ---
172
+
173
+ ## [1.1.25] - 2026-07-07
174
+
175
+ ### Добавлено
176
+
177
+ - Копирование float-блоков
178
+ - Глобальные блоки: доступны всем пользователям, переработана синхронизация
179
+ - Режим кода в боковой панели редактора
180
+ - Пустые состояния в таблицах писем и проектов
181
+ - Индикаторы загрузки сохранения и автосохранения
182
+
183
+ ### Исправлено
184
+
185
+ - Subject и preheader письма
186
+ - Восстановление автосохранения после сбоя
187
+ - Случайное удаление всех стилей в блоке
188
+ - Санитизация HTML от AdGuard и других расширений браузера
189
+ - Vite host plugin: public path в dev-режиме
190
+
191
+ ---
192
+
193
+ ## [1.1.7] - 2026-06-15
194
+
195
+ ### Добавлено
196
+
197
+ - Аналитика действий в iframe редактора письма
198
+ - Улучшен drag-and-drop вставки атомов в письмо
199
+
200
+ ### Исправлено
201
+
202
+ - Превью изображений и видео в настройках элемента (`SelectedImageForm`)
203
+ - Синхронизация meta и layout в форме соцблоков (`SelectedSocialForm`)
204
+ - Детекция и санитизация стилей, ломаемых расширениями браузера (adblock)
205
+ - Навигация по вкладкам панели настроек (`PanelFormTabsOverrides`)
206
+
207
+ ### Изменено
208
+
209
+ - Sentry: переход на переустановленный self-hosted инстанс
210
+
211
+ ---
212
+
213
+ ## [1.1.0] - 2026-06-08
214
+
215
+ ### Добавлено
216
+
217
+ - Система плагинов: extensions API, sandbox API, CLI для разработки плагинов, внутренние плагины; API получения настроек письма (DEV-11837)
218
+ - Глобальные блоки: создание, маркеры в превью, синхронизация изменений по всем шаблонам
219
+ - Страница проектов (DEV-11990): режим карточек, поиск и фильтры, роль Viewer, управление участниками из меню и списка, частые проекты в боковом меню
220
+ - Переключение светлой/тёмной темы в редакторе письма
221
+ - Автосохранение с механизмом повторных попыток; корректная обработка `projectId` для нового письма (DEV-14828)
222
+ - Откат письма к предыдущей версии (DEV-15046)
223
+ - Локализация компонентов UI Kit
224
+ - Аналитика изменений настроек элементов в панели (Amplitude `change_element_setting`)
225
+ - Нормализация ссылок в полях href
226
+ - EML-экспорт: встраивание изображений в base64
227
+
228
+ ### Исправлено
229
+
230
+ - Текстовый редактор: форматирование и редактирование текста (DEV-14640, DEV-14852)
231
+ - Редактирование переменных письма (DEV-14582)
232
+ - Тёмная тема в меню проектов и карточке входящих (DEV-14842)
233
+ - Стикеры в редакторе Pixie (DEV-14969)
234
+ - Monaco: воркеры при разных origin; ESM-сборка редактора
235
+ - Мобильное выравнивание текста и кнопок
236
+ - URL превью изображений переведены на env-переменные (DEV-15052)
237
+
238
+ ### Изменено
239
+
240
+ - Сборка переведена на Vite/ESM; монорепо на pnpm
241
+ - Prod-релизы и версия npm-пакетов определяются git-тегами (`emm-v*`)
242
+ - Санитизация HTML письма от вмешательства расширений браузера
243
+
244
+ ---
245
+
246
+ ## [1.0.117] - 2026-04-07
247
+
248
+ ### Добавлено
249
+
250
+ - Списки в текстовом редакторе (DEV-12615)
251
+ - Якорные ссылки
252
+ - Страница и UX биллинга: лимиты (`limitsApi`), статистика использования, модалки paywall и повышения лимита (`LimitUpgradeModal`, в том числе превышение `image_generate`), виджет тарифа в левом меню (`MenuTariffWidget`): триал, подписка, автопродление (DEV-11223 и связанные задачи)
253
+ - Модальные окна биллинга: выбор тарифа при оплате (`PlanCheckoutChoiceModal`), запрос счёта для юрлица с префилдом и синхронизацией полей (`TariffInvoiceRequestModal`)
254
+ - Переработка социальных блоков: drag-and-drop, подсказки в настройках, пользовательские иконки; платформа VK (`vkv`); контраст и фон атомов и ячеек; кнопка удаления в форме соцэлемента; обновление CDN URL и генерация ссылок на иконки (DEV-13666 и смежные правки)
255
+ - Опции форматирования текста в `SelectedTextCommonForm`
256
+ - Поддержка `commonStyles` в iframe и глубокое слияние стилей контента; доработка отступов панелей
257
+ - Удаление `width` и `max-width` у изображений в неадаптивных письмах (`stripImageWidthForNonResponsive`)
258
+ - Проверки явной ширины контент-колонок во многоколоночных структурах и корректный пересчёт ширин блоков
259
+
260
+ ### Исправлено
261
+
262
+ - Тема письма: пробелы и разбор тега `title` (`getSubject`)
263
+ - Вёрстка письма: ширина колонок с классом `em-insert-ignore`
264
+ - Интеграции: Dotdigital, Klaviyo, ActiveCampaign; URL справки по API-ключу Brevo
265
+ - Файловый менеджер: уведомление при дубликате папки (409), прокрутка списка папок в подменю «Переместить», доработки DataSource и копирования; исключение null в FloatingBlocks; обработка загрузки файлов
266
+ - Нормализация превью изображений для редактора Pixie и форматов отображения через `normalizeImageFormatForDisplay` в загрузчиках изображений
267
+ - Фон текста в письме (DEV-14472)
268
+ - Навигация к родительскому элементу кнопки (DEV-14443)
269
+ - Открытие центра изображений (DEV-14425)
270
+ - Соцблоки: селекторы корневых таблиц, стили форм и `ColorPickerInput`, отступы в `EmailPane` и социальной форме
271
+ - Переключение темы; ошибки halt, Sentry и Unisender; вычисление путей в плагине Vite
272
+ - Отключена проверка TypeScript в HTML в редакторе Monaco
273
+ - Кнопки: единые `height` и `line-height` с переменными темы в `Button.scss`
274
+
275
+ ### Изменено
276
+
277
+ - Обновлены версии Sentry, файлового менеджера и прочих зависимостей
278
+ - Обновлены базовые URL CDN-иконок соцсетей
279
+ - Биллинг: упрощение и рефакторинг `BillingPage`, баннеры и кнопки автопродления; замена сборки webhook на `buildLegacyWebhookRequest`; удалены прокси Streamline и Giphy; поддержка кастомного прокси (DEV-14043)
280
+ - Общие стили: специфичность шрифтов (`PanelForm`, `common.scss`), стили платёжных кнопок в `BillingBannerModal`
281
+ - Компонент `Ribbon` и уведомления; локализация части биллинга и интерфейса
282
+ - CI: удалена джоба Allure; настройки `GIT_CLONE_PATH` для тестовых VM
283
+
284
+ ---
285
+
286
+ ## [1.0.109] - 2026-04-07
287
+
288
+ ### Добавлено
289
+
290
+ - Списки в текстовом редакторе (DEV-12615)
291
+ - Учёт настроек AI: отключение запросов диалогов при выключенном ассистенте; расширение контекста для промпта
292
+ - Поля subscription в методах логирования (DEV-13876)
293
+ - Отправка ошибок из error boundary в статистику
294
+
295
+ ### Исправлено
296
+
297
+ - Тема письма: обработка пробелов и разбор тега `title` (getSubject)
298
+ - Файловый менеджер: уведомление при дубликате папки (409), прокрутка списка папок в подменю «Переместить», доработки DataSource и копирования
299
+ - Ссылки в формах: корректные протокол по умолчанию и пустые URL
300
+ - Песочница: drag-and-drop и перекрытие кликов (pointer-events)
301
+ - Регистрация `applicationElementSettingsSet` и фильтрация путей элементов
302
+ - Нормализация превью изображений для редактора Pixie
303
+
304
+ ### Изменено
305
+
306
+ - Обновлены версии Sentry и зависимостей
307
+
308
+ ---
309
+
310
+ ## [1.0.108] - 2026-03-26
311
+
312
+ ### Добавлено
313
+
314
+ - Вкладка интеграций в модальном окне проекта
315
+ - События data layer при экспорте письма
316
+ - Настройка локальной загрузки в центре изображений (`imageCenterLocalUploadEnabled`)
317
+
318
+ ### Исправлено
319
+
320
+ - Файловый менеджер: отказ от Redux во взаимодействии с FM (DEV-14018, DEV-13858), прокси, фронтовая пагинация, лишняя папка Edited при загрузке
321
+ - Редактор и sandbox: iframe contenteditable, вставка пустых списков (DEV-13612), редактирование текста (DEV-13608), удаление с конца блока (DEV-13558), мобильные свойства текста (DEV-13679)
322
+ - Кнопка в письме (DEV-13746); иконки выравнивания через `currentColor` (DEV-13790)
323
+ - Дублирование уведомлений при отправке тестового письма (DEV-10977)
324
+ - Сортировка в таблице проектов (DEV-13759)
325
+ - Автосохранение: проверка `revisionService`, `emailId` в revisionToApply
326
+
327
+ ### Изменено
328
+
329
+ - Таблицы Blocks / Emails / Projects / Members: вёрстка, меню, drag-and-drop на страницах блока и письма
330
+ - Webhook в компоненте кнопок письма
331
+
332
+ ---
333
+
334
+ ## [1.0.104-alpha.1] - 2026-03-02
335
+
336
+ ### Добавлено
337
+
338
+ **Интеграции:**
339
+
340
+ - Интеграция с Unisender и управление настройками
341
+ - Система доступности интеграций для конкретных приложений
342
+
343
+ **Редактор:**
344
+
345
+ - Ограничения для бесплатного плана в компоненте ButtonsEmail
346
+ - Поддержка mailto ссылок (subject, body) — DEV-13102
347
+ - Функциональность массовых блоков
348
+ - Сортировка элементов
349
+ - Вставка ссылки с нужным цветом — DEV-13172
350
+
351
+ **AI и UX:**
352
+
353
+ - AI-функциональность в EmailPageHeader с проверкой оплаты
354
+ - Улучшенные анимации модальных окон
355
+
356
+ **FileManager:**
357
+
358
+ - Поддержка задания нового имени при копировании файлов и папок
359
+ - Очистка кеша
360
+
361
+ ### Исправлено
362
+
363
+ **Редактор таблиц:**
364
+
365
+ - Вёрстка выпадающего меню элемента Таблица — DEV-13370
366
+ - Работа редактора таблиц — DEV-13371
367
+
368
+ **Вставка и ссылки:**
369
+
370
+ - Дублирование тегов при вставке текста — DEV-13293
371
+ - Дублирование ссылок при вставке — DEV-13378
372
+
373
+ **Элементы:**
374
+
375
+ - Добавление элемента Кнопка в письмо — DEV-13312
376
+ - Некорректное отображение настроек маркеров — DEV-13313
377
+ - Запрет переноса строки для уведомления — DEV-13143
378
+
379
+ **Данные и API:**
380
+
381
+ - Изменения тегов и групп при отправке данных письма — DEV-10189
382
+ - Расчёт суммы рекуррентного платежа с `is_only_first_period` — DEV-13377
383
+ - Уведомление при ошибке отправки тестового письма
384
+ - Локализация в yandexLoginProxyPage
385
+ - Проверка истечения JWT токена и обработка 401 ответа
386
+
387
+ ### Изменено
388
+
389
+ **Рефакторинг sandbox.js → TypeScript:**
390
+
391
+ - Миграция на модульную структуру с типами и централизованным состоянием
392
+ - Модули для обработки событий мыши, клавиатуры, drag-and-drop
393
+ - Обработчики настроек элементов (ссылки, переменные, отступы)
394
+ - Модули для аккордеонов, кнопок, каруселей, таблиц
395
+ - Утилиты для текстового форматирования, стилей и VML
396
+
397
+ **Интеграции:**
398
+
399
+ - IntegrationSettings переименован в IntegrationSettingsData
400
+ - Unisender интеграция мигрирована на гибкую структуру
401
+
402
+ **UI:**
403
+
404
+ - Обновлён layout для BlocksTable и EmailsTable
405
+ - Улучшены стили чекбоксов в таблицах
406
+
407
+ ### Тестирование
408
+
409
+ - Интеграционные тесты для html2Dom, dom2Html и export-пайплайна
410
+ - Функциональные тесты для css namespace в dom2Html
411
+ - Функциональные тесты html2Dom
412
+ - Тесты для функции createWrapper
413
+
414
+ ---
415
+
416
+ ## [1.0.103] - 2026-02-05
417
+
418
+ *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/5da8610f.js",
7
- "static/core/fab6e3c1.js",
8
- "static/core/84e7cbac.js"
6
+ "static/core/d34d3cc0.js",
7
+ "static/core/d0a3e529.js",
8
+ "static/core/758a0c3c.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/5da8610f.js"), l = f("./static/core/fab6e3c1.js"), m = f("./static/core/84e7cbac.js");
15
+ const n = f("./static/core/d34d3cc0.js"), l = f("./static/core/d0a3e529.js"), m = f("./static/core/758a0c3c.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/893bd50e.js"))).default;
537
+ return (await Promise.resolve().then(() => f("./static/core/5be7581f.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.72";
672
+ E.init = ae, E.parseAMP = le, E.version = "1.1.81";
673
673
  });