@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.
- package/CHANGELOG.md +418 -0
- package/README.md +37 -1
- package/{emailmaker-core.bd3c8144.js → emailmaker-core.5550faa5.js} +6 -6
- package/emailmaker-esm.js +127 -127
- package/{emailmaker-po.bd3c8144.js → emailmaker-po.5550faa5.js} +1 -1
- package/emailmaker.d.ts +4 -0
- package/emailmaker.js +3 -3
- package/iframe/js/amp.BtGCOg7N.js +1 -0
- package/iframe/js/iframe-eblock.js +1 -1
- package/iframe/js/iframe.js +1 -1
- package/iframe/js/rules.B-wCbIo7.js +1 -1
- package/package.json +30 -9
- package/static/core/{ab6da7f5.js → 16751762.js} +7 -7
- package/static/core/1cb65d65.js +3280 -0
- package/static/core/{ec8d567d2.js → 20625a132.js} +2736 -2475
- package/static/core/{a5a25e092.js → 26d559d32.js} +95 -95
- package/static/core/{ce8ca64c.js → 395f82fa.js} +3 -3
- package/static/core/{dda6d713.js → 438f4766.js} +4 -4
- package/static/core/{2dd8b882.js → 4d48fdcd.js} +84 -84
- package/static/core/{f5f707b8.js → 544a8fe8.js} +51 -51
- package/static/core/{893bd50e.js → 5be7581f.js} +21336 -18551
- package/static/core/{dd6d3ae42.js → 60e2f0e02.js} +40 -40
- package/static/core/758a0c3c.js +1098 -0
- package/static/core/{dd625043.js → 8fe345a7.js} +15 -15
- package/static/core/adc7cd4e.js +2134 -0
- package/static/core/{fab6e3c1.js → d0a3e529.js} +2465 -2615
- package/static/core/{34b3c6f9.js → d239a2a0.js} +278 -254
- package/static/core/{5da8610f.js → d34d3cc0.js} +3447 -3122
- package/static/core/{98529d8d2.js → ed08ded22.js} +1315 -1242
- package/static/core/{2181dfc12.js → f6e0d3702.js} +2138 -2086
- package/static/umd-runtime/ui-kit.js +1171 -1103
- package/ui-kit/index.js +1541 -1469
- package/favicon-b.ico +0 -0
- package/favicon.ico +0 -0
- package/fonts/SegoeUI-Bold.woff2 +0 -0
- package/fonts/SegoeUI-Semibold.woff2 +0 -0
- package/fonts/SegoeUI.woff2 +0 -0
- package/iframe/js/amp.D4LpeCG3.js +0 -1
- package/js/amplitude.min.js +0 -10859
- package/js/sourcebuster.min.js +0 -672
- package/manifest.json +0 -17
- package/npm-publish.manifest.json +0 -65
- package/static/core/84e7cbac.js +0 -925
- package/static/core/8815169a.js +0 -3189
- package/static/core/e84eccff.js +0 -2122
- package/static/media/image-editor/images/samples/large_sample.jpg +0 -0
- package/static/media/image-editor/images/samples/sample1.jpg +0 -0
- package/static/media/image-editor/images/samples/sample1_thumbnail.jpg +0 -0
- package/static/media/image-editor/images/samples/sample2.jpg +0 -0
- package/static/media/image-editor/images/samples/sample2_thumbnail.jpg +0 -0
- package/static/media/image-editor/images/samples/sample3.jpg +0 -0
- package/static/media/image-editor/images/samples/sample3_thumbnail.jpg +0 -0
- package/static/media/image-editor/images/samples/sample4.json +0 -871
- package/static/media/image-editor/images/samples/sample4_preview.jpg +0 -0
- package/test-font.otf +0 -0
- package/test-font.ttf +0 -0
- package/test-font.woff2 +0 -0
- package/tsconfig.json +0 -14
- package/two_step_headless_plugin.html +0 -558
- /package/iframe/{iframe-eblock.bd3c8144.html → iframe-eblock.5550faa5.html} +0 -0
- /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/
|
|
7
|
-
"static/core/
|
|
8
|
-
"static/core/
|
|
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/
|
|
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/
|
|
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.
|
|
672
|
+
E.init = ae, E.parseAMP = le, E.version = "1.1.81";
|
|
673
673
|
});
|