@emailmaker/emailmaker 1.3.4 → 1.3.8

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 (73) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +20 -0
  3. package/emailmaker-core.091c986b.js +874 -0
  4. package/emailmaker-esm.js +53 -39
  5. package/{emailmaker-po.87ebe001.js → emailmaker-po.091c986b.js} +1 -1
  6. package/emailmaker.d.ts +95 -5
  7. package/emailmaker.js +54 -40
  8. package/iframe/.vite/manifest.json +4 -4
  9. package/iframe/css/sandbox-dark.css +2 -9
  10. package/iframe/css/sandbox-light.css +2 -9
  11. package/iframe/css/sandbox.css +13 -23
  12. package/iframe/{iframe-eblock.87ebe001.html → iframe-eblock.091c986b.html} +2 -2
  13. package/iframe/{iframe.87ebe001.html → iframe.091c986b.html} +2 -2
  14. package/iframe/js/elMarkupHelper.DoIAMao4.js +279 -0
  15. package/iframe/js/{iframe-eblock.body.87ebe001.js → iframe-eblock.body.091c986b.js} +1 -1
  16. package/iframe/js/iframe-eblock.js +2 -2
  17. package/iframe/js/iframe.body.091c986b.js +129 -0
  18. package/iframe/js/iframe.js +2 -2
  19. package/package.json +1 -1
  20. package/runtime/react/index.js +1 -1
  21. package/static/core/166a67bd.js +1 -0
  22. package/static/core/1a65ef0f.js +1 -0
  23. package/static/core/{4cdd6e6c.js → 1c67ab93.js} +1 -1
  24. package/static/core/{27599903.js → 1d004581.js} +1 -1
  25. package/static/core/{79e13595.js → 220d7d31.js} +1 -1
  26. package/static/core/{afb0d556.js → 2da7d310.js} +2 -2
  27. package/static/core/322d3e9f.js +1 -0
  28. package/static/core/{d8175c7f.js → 34756b09.js} +1 -1
  29. package/static/core/36f3f772.js +1 -0
  30. package/static/core/3b9931cd.js +1 -0
  31. package/static/core/{312fb954.js → 3bff2ae6.js} +1 -1
  32. package/static/core/{5afad425.js → 454350da.js} +1 -1
  33. package/static/core/{4797d4f7.js → 4852c0de.js} +6 -6
  34. package/static/core/{75a2537a.js → 5272f5b2.js} +1 -1
  35. package/static/core/{76163cc7.js → 5f176d0a.js} +1 -1
  36. package/static/core/674e22a5.js +1 -0
  37. package/static/core/{27986c36.js → 6ce85877.js} +1 -1
  38. package/static/core/7b8fbc31.js +1 -0
  39. package/static/core/{5ebf9f1e.js → 867b1e0a.js} +1 -1
  40. package/static/core/89b1052c.js +1 -0
  41. package/static/core/{81c0d133.js → 8b8c93f4.js} +1 -1
  42. package/static/core/8e97c82c.js +163 -0
  43. package/static/core/8eea6488.js +1 -0
  44. package/static/core/9a4cfb0a.js +1 -0
  45. package/static/core/{81a16991.js → 9d388494.js} +1 -1
  46. package/static/core/{2269bf04.js → 9e1370a6.js} +1 -1
  47. package/static/core/{9a7e933e.js → a59d579e.js} +1 -1
  48. package/static/core/{87c47034.js → a6abc393.js} +2 -2
  49. package/static/core/aa33047a.js +1 -0
  50. package/static/core/abde5a43.js +2 -0
  51. package/static/core/{d833a29f.js → b69579c4.js} +1 -1
  52. package/static/core/{489390a3.js → bcc4db3e.js} +1 -1
  53. package/static/core/{78916fed.js → c0b0ceff.js} +3 -3
  54. package/static/core/c5edcfc7.js +1 -0
  55. package/static/core/{122c5ed9.js → c9d5118c.js} +1 -1
  56. package/static/core/{81cc5690.js → caf9f1a6.js} +1 -1
  57. package/static/core/{7601732d.js → d241119a.js} +1 -1
  58. package/static/core/d4c10a7e.js +10 -0
  59. package/static/core/d517188a.js +1 -0
  60. package/static/core/db92581b.js +19 -0
  61. package/static/core/{a15ab3fe.js → de0d3c9a.js} +1 -1
  62. package/static/core/{8cebeef2.js → e995a70d.js} +1 -1
  63. package/static/core/ee26ef3d.js +1 -0
  64. package/static/core/f399000c.js +1 -0
  65. package/static/core/{67cc6cb2.js → f875f388.js} +1 -1
  66. package/static/esm/{9610f2de.js → 95cbf920.js} +1 -1
  67. package/static/umd-runtime/{runtime.BHEKxbjr.js → runtime.CV4WRxRc.js} +1 -1
  68. package/vendor/@emailmaker/ui-kit/package.json +1 -1
  69. package/emailmaker-core.87ebe001.js +0 -859
  70. package/iframe/js/elMarkupHelper.CO37NCd9.js +0 -278
  71. package/iframe/js/iframe.body.87ebe001.js +0 -129
  72. package/static/core/32e15918.js +0 -1
  73. package/static/core/b8941eda.js +0 -28
package/CHANGELOG.md CHANGED
@@ -6,6 +6,64 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## [Не выпущено]
10
+
11
+ ### Добавлено
12
+
13
+ - Кнопка «Начать с пустого письма» на холсте: появляется, когда в письме нечего показать, и возвращает каркас,
14
+ в который снова можно вставлять блоки
15
+
16
+ ### Изменено
17
+
18
+ - Письмо со стёртым кодом сохраняется пустым, как любая другая правка: `save()` больше не отказывает с причиной
19
+ `empty-content`, событие `EMAIL_EMPTY_SAVE_BLOCKED` не приходит, а пустой снимок уходит в автосохранение
20
+ - Новое письмо плагина: `show()` без `code` открывает обновлённый код заготовки, а пустая `subject` заменяется темой
21
+ «Новое письмо» на языке интерфейса. Эта тема попадает в `<title>` и в `getEmail()`
22
+ - Карточка «Пустой шаблон» создаёт письмо без запроса к серверу и без родительских блоков
23
+
24
+ ## [1.3.5] - 2026-11-03
25
+
26
+ ### Добавлено
27
+
28
+ - Платформа плагинов, первый этап: `defineCommand`, `defineView`, `domView`, `createSource`, `ok`, `err`
29
+ и `Arg` в `extensions-api`, службы `Commands` и `Ui`. Плагин добавляет свои команды, пункты и панели на
30
+ места `toolbar`, `sidebar`, `dialog`, `documentSettings`, `menu:document`, `menu:export`, `menu:view`,
31
+ `menu:save`, `statusBar` и `notices`
32
+ - Команды редактора для плагинов: `ui.openView`, `ui.closeView`, `document.getSnapshot`, `document.save`
33
+ (сохраняет так же, как кнопка «Сохранить»); хуки `useCommand`, `useSource`, `useEditor` в
34
+ `extensions-react`; тестовый набор `extensions-api/testing`
35
+ - Корзина блоков: кнопка «Очистить корзину» для владельца и администратора
36
+
37
+ ### Исправлено
38
+
39
+ - Копия глобального блока — обычный блок: `handleCloneBlock` получает `code` без `em-block-id` и
40
+ `em-block-version`, а вставка копии больше не считается вставкой оригинала и не переписывает его.
41
+ «Создать новый блок» из копии тоже не уносит метку прежнего блока
42
+ - Версия глобального блока: переименование и теги её не сдвигают, поэтому письмо не видит свежий блок
43
+ устаревшим; `saveBlock()` ставит новую версию
44
+ - «Обновить текущий блок»: блок не из прочитанного списка редактор ищет через `handleReadBlock`, затем в
45
+ `handleReadBlocks`; не нашёл — отказ `BLOCK_EDITING_ERROR`, и `handleSaveBlock` не получает неполный блок.
46
+ Если `handleReadBlock` ответил, что блока нет, глобальный блок заводится заново
47
+ - Окно обновления глобальных блоков появляется и при входе через скрытый редактор, а в «Обновлено»
48
+ считает только реально заменённые вставки; остальное показывает предупреждением
49
+ - Значок глобального блока на холсте выглядит как значки устройств и не ломает надпись «Вставить сюда»
50
+ - Новое письмо без правок снова создаётся через 10 секунд, а не через интервал `autosaveTimeout`
51
+ - ESM-пакет: webpack больше не пишет «Critical dependency» и его dev-сервер не закрывает страницу окном
52
+ предупреждений
53
+ - Скрипт интегратора в песочнице: `App` из `extensions-sandbox` не падает с ошибкой «App not registered
54
+ in DI container»
55
+ - `ModalApi`: `update()` меняет открытое окно (раньше вызов не действовал), а то, что не передали, остаётся
56
+ прежним; `onClose` срабатывает и при закрытии крестиком, и через `close(id)`
57
+ - Шаблоны плагина в CLI: стенд разработки и шаблон `minimal` не тянут React, проект проходит `tsc`,
58
+ демо-письмо стенда не вызывает запросы истории с ответом 404
59
+
60
+ ### Изменено
61
+
62
+ - Создание письма автосохранением приходит в `source` как `AUTOSAVE`. Раньше `source` был пустым: если вы
63
+ узнавали такое создание по пустому значению, обновите проверку
64
+
65
+ ---
66
+
9
67
  ## [1.2.5] - 2026-10-28
10
68
 
11
69
  ### Добавлено
package/README.md CHANGED
@@ -111,6 +111,25 @@ export default defineConfig({
111
111
 
112
112
  Имя класса Webpack-плагина строится из имени приложения в `package.json` (для **`@emailmaker/emailmaker`** это **`EmailmakerWebpackPlugin`**).
113
113
 
114
+ ## Кеширование после обновления пакета
115
+
116
+ Плагин сборки копирует статику пакета в вашу сборку, и раздаёт её ваш сервер. Чтобы после обновления
117
+ пакета пользователи сразу получали новую версию, без сброса кеша браузера, разделите файлы на два вида.
118
+
119
+ | Файлы | `Cache-Control` | Почему |
120
+ | --- | --- | --- |
121
+ | С хешем в имени: **`emailmaker-core.<hash>.js`**, **`emailmaker-po.<hash>.js`**, **`static/**/<hash>.js`**, **`iframe/iframe.<hash>.html`**, **`iframe/js/*.<hash>.js`**, **`static/media/*.<hash>.*`** | `public, max-age=31536000, immutable` | Новое содержимое приходит под новым именем, старое можно держать сколько угодно. |
122
+ | Без хеша: **`emailmaker.js`**, **`emailmaker-esm.js`**, **`compat-globals.js`**, **`iframe/js/boot-guard.js`**, **`iframe/css/*.css`** и остальные | `no-cache` | Имя одно на все версии. Браузер хранит файл, но перед использованием сверяет его с сервером: если он не менялся, ответ — короткий `304`. |
123
+ | Ваши HTML-страницы с редактором | `no-cache` | Страница должна подхватывать новый вход редактора. |
124
+
125
+ Хеш — это 8 шестнадцатеричных символов (`.f9289386.`, 20 — у картинок и шрифтов) или 8 символов base64
126
+ в каталогах **`static/*`** и **`iframe/js`** (`DS2seoW7.js`). Другие восьмибуквенные имена (`Checkbox.js`) — не хеш.
127
+
128
+ Не ставьте долгий `max-age` или `expires` на файлы без хеша. Закешированный **`emailmaker.js`** ссылается
129
+ на ядро и чанки своей версии: после обновления браузер будет запускать старый редактор, а если старые
130
+ файлы удалены — получит ошибки загрузки. Если вход **`emailmaker-esm.js`** собирает ваш сборщик,
131
+ имя ему даёт он — тогда правило касается только скопированной статики.
132
+
114
133
  # Инициализация
115
134
 
116
135
  Импортируйте плагин в коде приложения:
@@ -593,6 +612,7 @@ HTML-разметка письма.
593
612
  | blocksEmptyEnabled | Показ пустых блоков. | true |
594
613
  | blocksSavedEnabled | Показ сохранённых блоков. | true |
595
614
  | blocksCommonEnabled | Показ общих блоков. | true |
615
+ | blocksCommonSource | Откуда брать общие блоки при хранении блоков на Go, если `handleReadCommonBlocks` ничего не вернул: `gallery` — галерея продукта, `project` — блоки проекта, к которому привязан ключ плагина (только вставка). | gallery |
596
616
  | blocksTemplateEnabled | Показ блоков шаблона. | true |
597
617
  | blocksSearchEnabled | Показ поиска по блокам. | true |
598
618
  | blocksAddPanelEnabled | Показ панели добавления блока в визуальном редакторе. | true |