@emailmaker/emailmaker 1.0.111 → 1.0.112
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.en.md +11 -0
- package/CHANGELOG.md +11 -0
- package/README.md +133 -100
- package/asset-manifest.json +201 -194
- package/emailmaker-esm.js +1 -1
- package/emailmaker.d.ts +7 -0
- package/emailmaker.js +1 -1
- package/iframe/429.js +1 -1
- package/iframe/766.js +1 -1
- package/iframe/css/sandbox-darktheme.css +23 -7
- package/iframe/css/sandbox.css +24 -12
- package/iframe/iframe-eblock.74901875d20216edb83e.html +1 -0
- package/iframe/iframe.74901875d20216edb83e.html +1 -0
- package/iframe/index.html +1 -1
- package/iframe/js/525.bff782f1.js +1 -0
- package/iframe/js/667.c9866ca9.js +1 -0
- package/iframe/js/882.b5fdb736.js +1 -0
- package/iframe/sandbox-eblock.js +1 -1
- package/js/amplitude.min.js +8 -10
- package/js/browser-image-compression.js +3054 -1
- package/js/sourcebuster.min.js +0 -1
- package/package.json +1 -1
- package/static/css/{8778.3f22f159.chunk.css → 5929.da77bde7.chunk.css} +2 -2
- package/static/css/{6310.ce3b451b.chunk.css → 6310.49bbc429.chunk.css} +2 -2
- package/static/css/9617.a0959176.chunk.css +2 -0
- package/static/css/main.e8c41fba.css +2 -0
- package/static/js/1241.e3e56034.js +2 -0
- package/static/js/1330.ef930318.js +2 -0
- package/static/js/1332.0cb959b4.js +2 -0
- package/static/js/1377.2c61acc1.js +2 -0
- package/static/js/1454.84d2c0a8.js +2 -0
- package/static/js/1502.8a2f6e6b.js +2 -0
- package/static/js/1510.e74cce46.js +2 -0
- package/static/js/1626.3320a5f3.js +2 -0
- package/static/js/1640.27be7178.js +2 -0
- package/static/js/1788.d2bc729b.js +2 -0
- package/static/js/{1807.edd17ae4.js → 1807.ac0394b7.js} +3 -3
- package/static/js/1872.43ec6943.js +2 -0
- package/static/js/{1902.a37551ca.js → 1902.f48fb9a9.js} +2 -2
- package/static/js/{1940.18a1ab22.js → 1940.524f0244.js} +3 -3
- package/static/js/197.6d76c202.js +2 -0
- package/static/js/2066.c62582aa.js +2 -0
- package/static/js/2114.e385ca42.js +2 -0
- package/static/js/2139.775a0a57.js +3 -0
- package/static/js/2408.c5572548.js +2 -0
- package/static/js/2438.712814b0.js +2 -0
- package/static/js/2491.d65e25c3.js +3 -0
- package/static/js/2491.d65e25c3.js.LICENSE.txt +163 -0
- package/static/js/2827.36a23b69.js +2 -0
- package/static/js/284.efb80df6.js +2 -0
- package/static/js/2844.54191136.js +2 -0
- package/static/js/290.b615a90b.js +2 -0
- package/static/js/2917.a6e819bf.js +2 -0
- package/static/js/2988.2496986e.js +2 -0
- package/static/js/327.31ca6e0d.js +3 -0
- package/static/js/327.31ca6e0d.js.LICENSE.txt +29 -0
- package/static/js/3302.84e32b62.js +2 -0
- package/static/js/3411.311c6ae0.js +2 -0
- package/static/js/3624.c30f383e.js +2 -0
- package/static/js/3628.92b55e43.js +3 -0
- package/static/js/3711.102a68ee.js +2 -0
- package/static/js/3816.8f941c79.js +2 -0
- package/static/js/3914.72124e24.js +2 -0
- package/static/js/4425.47aa4461.js +2 -0
- package/static/js/4607.f88cf27a.js +2 -0
- package/static/js/4686.180d7a12.js +2 -0
- package/static/js/4702.eb86f466.js +2 -0
- package/static/js/4813.b282e8cb.js +2 -0
- package/static/js/4823.ddb0914d.js +2 -0
- package/static/js/494.447cdadd.js +2 -0
- package/static/js/5108.b3eccf14.js +2 -0
- package/static/js/5261.8499aaa1.js +2 -0
- package/static/js/5322.413feb5a.js +2 -0
- package/static/js/5432.a1089dad.js +2 -0
- package/static/js/5466.50904f4e.js +2 -0
- package/static/js/5641.7f2999ab.js +3 -0
- package/static/js/{2076.a35d6556.js.LICENSE.txt → 5641.7f2999ab.js.LICENSE.txt} +0 -9
- package/static/js/5653.016de6aa.js +2 -0
- package/static/js/566.a759ee99.js +3 -0
- package/static/js/566.a759ee99.js.LICENSE.txt +20 -0
- package/static/js/5827.9dcc9443.js +2 -0
- package/static/js/5862.faad8f74.js +2 -0
- package/static/js/5864.6033ee51.js +2 -0
- package/static/js/5902.33cce976.js +2 -0
- package/static/js/5929.2a1cee14.js +2 -0
- package/static/js/5980.d73d6b51.js +2 -0
- package/static/js/6033.eb6097f0.js +2 -0
- package/static/js/6135.3b810692.js +2 -0
- package/static/js/6310.cafc9a48.js +2 -0
- package/static/js/6418.59058d0d.js +2 -0
- package/static/js/6428.57a30f96.js +2 -0
- package/static/js/6552.271c84f5.js +2 -0
- package/static/js/6618.feb19bcb.js +2 -0
- package/static/js/6764.2a43d6d5.js +2 -0
- package/static/js/6832.2e6f8499.js +2 -0
- package/static/js/7234.d3966e99.js +2 -0
- package/static/js/7288.efae06f4.js +2 -0
- package/static/js/737.b395c2b2.js +2 -0
- package/static/js/7426.1de30709.js +2 -0
- package/static/js/7673.2db4eeee.js +3 -0
- package/static/js/{5255.9c7c7b3d.js.LICENSE.txt → 7673.2db4eeee.js.LICENSE.txt} +9 -0
- package/static/js/77.9fcf0459.js +2 -0
- package/static/js/7974.db4992e0.js +2 -0
- package/static/js/8013.352d92bf.js +2 -0
- package/static/js/8466.d3339ec9.js +2 -0
- package/static/js/8534.a012d026.js +2 -0
- package/static/js/8580.1528b456.js +2 -0
- package/static/js/8590.3e646adc.js +2 -0
- package/static/js/8682.b39ae089.js +2 -0
- package/static/js/8796.27f3a38e.js +2 -0
- package/static/js/8839.75fb5ef2.js +2 -0
- package/static/js/912.42ae1bb7.js +3 -0
- package/static/js/9169.a1d48107.js +2 -0
- package/static/js/9200.f1b7e119.js +2 -0
- package/static/js/9487.6209c75a.js +3 -0
- package/static/js/9487.6209c75a.js.LICENSE.txt +24 -0
- package/static/js/9508.4fb40b12.js +2 -0
- package/static/js/9578.4d598f9d.js +2 -0
- package/static/js/9617.a3001b3b.js +3 -0
- package/static/js/9716.e99deec1.js +2 -0
- package/static/js/emailmaker_core.7ae04314.js +3 -0
- package/iframe/iframe-eblock.dfbe43189ad0132f9332.html +0 -1
- package/iframe/iframe.dfbe43189ad0132f9332.html +0 -1
- package/iframe/js/174.65a3f00f.js +0 -1
- package/iframe/js/525.590fe008.js +0 -1
- package/iframe/js/882.f76853fe.js +0 -1
- package/static/css/3934.8026f9d8.chunk.css +0 -2
- package/static/css/main.4042dfaa.css +0 -2
- package/static/js/1117.2e051755.js +0 -3
- package/static/js/1117.2e051755.js.LICENSE.txt +0 -40
- package/static/js/1157.1e6829d5.js +0 -3
- package/static/js/1157.1e6829d5.js.LICENSE.txt +0 -9
- package/static/js/1241.9f7c977b.js +0 -2
- package/static/js/1330.607183c7.js +0 -2
- package/static/js/1332.3eba834b.js +0 -2
- package/static/js/1377.b486b1f4.js +0 -2
- package/static/js/1454.23356a65.js +0 -2
- package/static/js/1502.6be06fc7.js +0 -2
- package/static/js/1510.32a77efc.js +0 -2
- package/static/js/1626.0cd4dd3f.js +0 -2
- package/static/js/1640.7ae88653.js +0 -2
- package/static/js/1788.e7e85733.js +0 -2
- package/static/js/1872.610556e1.js +0 -2
- package/static/js/197.64f9fd6b.js +0 -2
- package/static/js/2066.a4cfddd1.js +0 -2
- package/static/js/2076.a35d6556.js +0 -3
- package/static/js/2114.dff67863.js +0 -2
- package/static/js/2139.fe670ca3.js +0 -3
- package/static/js/2408.8dcea713.js +0 -2
- package/static/js/2438.02617e55.js +0 -2
- package/static/js/2827.e02551c9.js +0 -2
- package/static/js/284.89002158.js +0 -2
- package/static/js/2844.4c02df45.js +0 -2
- package/static/js/290.3b771060.js +0 -2
- package/static/js/2917.f75d7ce1.js +0 -2
- package/static/js/2988.6d43f35a.js +0 -2
- package/static/js/3302.9b320bc9.js +0 -2
- package/static/js/3411.69f4008b.js +0 -2
- package/static/js/3624.a7076f34.js +0 -2
- package/static/js/3628.d51bff41.js +0 -3
- package/static/js/3711.d621dbad.js +0 -2
- package/static/js/3816.bf684fe1.js +0 -2
- package/static/js/3914.c63f1b85.js +0 -2
- package/static/js/3934.0fa3a225.js +0 -3
- package/static/js/4425.39579a63.js +0 -2
- package/static/js/4607.25f2d561.js +0 -2
- package/static/js/4686.6a800b56.js +0 -2
- package/static/js/4702.de98cbd5.js +0 -2
- package/static/js/4813.ca2fe39e.js +0 -2
- package/static/js/4823.d4ba65be.js +0 -2
- package/static/js/494.87c48e86.js +0 -2
- package/static/js/5108.473a7fe1.js +0 -2
- package/static/js/5255.9c7c7b3d.js +0 -3
- package/static/js/5261.3e64116f.js +0 -2
- package/static/js/5279.3b38adf9.js +0 -2
- package/static/js/5322.ce259c32.js +0 -2
- package/static/js/5466.a0f769cb.js +0 -2
- package/static/js/5612.37f3811e.js +0 -3
- package/static/js/5612.37f3811e.js.LICENSE.txt +0 -30
- package/static/js/5653.5f06277c.js +0 -2
- package/static/js/5827.6555a26a.js +0 -2
- package/static/js/5862.225d9aac.js +0 -2
- package/static/js/5864.340bc721.js +0 -2
- package/static/js/5902.73cb2cc4.js +0 -2
- package/static/js/5980.fbc691ed.js +0 -2
- package/static/js/6033.71847c1c.js +0 -2
- package/static/js/6135.ceb22131.js +0 -2
- package/static/js/6310.27dbb05e.js +0 -2
- package/static/js/6418.5c3bf780.js +0 -2
- package/static/js/6428.8b233458.js +0 -2
- package/static/js/6552.9d811323.js +0 -2
- package/static/js/6618.8866f1fa.js +0 -2
- package/static/js/6764.9e4a7f5f.js +0 -2
- package/static/js/6832.4c4f3da7.js +0 -2
- package/static/js/7288.170ea51b.js +0 -2
- package/static/js/737.fae14b35.js +0 -2
- package/static/js/7394.ff9436a5.js +0 -3
- package/static/js/7426.eaa2cbe4.js +0 -2
- package/static/js/77.6ea8ad5d.js +0 -2
- package/static/js/7974.5b71f208.js +0 -2
- package/static/js/8466.ae622785.js +0 -2
- package/static/js/8534.10b79ff1.js +0 -2
- package/static/js/8559.e923c875.js +0 -2
- package/static/js/8580.dd55156b.js +0 -2
- package/static/js/8590.2779de33.js +0 -2
- package/static/js/8682.ec99bbfe.js +0 -2
- package/static/js/8778.f3616411.js +0 -2
- package/static/js/8796.a6838d71.js +0 -2
- package/static/js/8839.25cace14.js +0 -2
- package/static/js/9169.dee65ca6.js +0 -2
- package/static/js/9200.63433716.js +0 -2
- package/static/js/9508.a68ced7b.js +0 -2
- package/static/js/9716.fb4af6bc.js +0 -2
- package/static/js/emailmaker_core.5b5a28fd.js +0 -3
- package/static/media/icon-border-radius.2a56b93a7711558098a622296b7ae2e1.svg +0 -1
- package/static/media/icon-create-block.0b077f4000bf7907b9ea871d28c7fb1e.svg +0 -1
- /package/iframe/js/{525.590fe008.js.LICENSE.txt → 525.bff782f1.js.LICENSE.txt} +0 -0
- /package/iframe/js/{174.65a3f00f.js.LICENSE.txt → 667.c9866ca9.js.LICENSE.txt} +0 -0
- /package/iframe/js/{882.f76853fe.js.LICENSE.txt → 882.b5fdb736.js.LICENSE.txt} +0 -0
- /package/static/js/{1807.edd17ae4.js.LICENSE.txt → 1807.ac0394b7.js.LICENSE.txt} +0 -0
- /package/static/js/{1940.18a1ab22.js.LICENSE.txt → 1940.524f0244.js.LICENSE.txt} +0 -0
- /package/static/js/{2139.fe670ca3.js.LICENSE.txt → 2139.775a0a57.js.LICENSE.txt} +0 -0
- /package/static/js/{3628.d51bff41.js.LICENSE.txt → 3628.92b55e43.js.LICENSE.txt} +0 -0
- /package/static/js/{3934.0fa3a225.js.LICENSE.txt → 912.42ae1bb7.js.LICENSE.txt} +0 -0
- /package/static/js/{7394.ff9436a5.js.LICENSE.txt → 9617.a3001b3b.js.LICENSE.txt} +0 -0
- /package/static/js/{emailmaker_core.5b5a28fd.js.LICENSE.txt → emailmaker_core.7ae04314.js.LICENSE.txt} +0 -0
package/CHANGELOG.en.md
CHANGED
|
@@ -64,10 +64,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
64
64
|
### Added
|
|
65
65
|
|
|
66
66
|
**Integrations:**
|
|
67
|
+
|
|
67
68
|
- Unisender integration and settings management
|
|
68
69
|
- App-specific integration availability system
|
|
69
70
|
|
|
70
71
|
**Editor:**
|
|
72
|
+
|
|
71
73
|
- Free plan restrictions in ButtonsEmail component
|
|
72
74
|
- mailto link support (subject, body) — DEV-13102
|
|
73
75
|
- Mass blocks functionality
|
|
@@ -75,29 +77,35 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
75
77
|
- Insert link with correct color — DEV-13172
|
|
76
78
|
|
|
77
79
|
**AI & UX:**
|
|
80
|
+
|
|
78
81
|
- AI functionality in EmailPageHeader with payment verification
|
|
79
82
|
- Improved modal animations
|
|
80
83
|
|
|
81
84
|
**FileManager:**
|
|
85
|
+
|
|
82
86
|
- Support for custom names when copying files and folders
|
|
83
87
|
- Cache clearing
|
|
84
88
|
|
|
85
89
|
### Fixed
|
|
86
90
|
|
|
87
91
|
**Table Editor:**
|
|
92
|
+
|
|
88
93
|
- Dropdown menu layout for Table element — DEV-13370
|
|
89
94
|
- Table editor functionality — DEV-13371
|
|
90
95
|
|
|
91
96
|
**Paste & Links:**
|
|
97
|
+
|
|
92
98
|
- Tag duplication when pasting text — DEV-13293
|
|
93
99
|
- Link duplication when pasting — DEV-13378
|
|
94
100
|
|
|
95
101
|
**Elements:**
|
|
102
|
+
|
|
96
103
|
- Adding Button element to email — DEV-13312
|
|
97
104
|
- Incorrect marker settings display — DEV-13313
|
|
98
105
|
- Line break restriction for notifications — DEV-13143
|
|
99
106
|
|
|
100
107
|
**Data & API:**
|
|
108
|
+
|
|
101
109
|
- Tag and group changes when sending email data — DEV-10189
|
|
102
110
|
- Recurring payment calculation with `is_only_first_period` — DEV-13377
|
|
103
111
|
- Notification on test email send error
|
|
@@ -107,6 +115,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
107
115
|
### Changed
|
|
108
116
|
|
|
109
117
|
**sandbox.js → TypeScript Refactoring:**
|
|
118
|
+
|
|
110
119
|
- Migration to modular structure with types and centralized state
|
|
111
120
|
- Modules for mouse, keyboard, and drag-and-drop event handling
|
|
112
121
|
- Element settings handlers (links, variables, padding)
|
|
@@ -114,10 +123,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
114
123
|
- Utilities for text formatting, styles, and VML
|
|
115
124
|
|
|
116
125
|
**Integrations:**
|
|
126
|
+
|
|
117
127
|
- IntegrationSettings renamed to IntegrationSettingsData
|
|
118
128
|
- Unisender integration migrated to flexible structure
|
|
119
129
|
|
|
120
130
|
**UI:**
|
|
131
|
+
|
|
121
132
|
- Updated layout for BlocksTable and EmailsTable
|
|
122
133
|
- Improved checkbox styles in tables
|
|
123
134
|
|
package/CHANGELOG.md
CHANGED
|
@@ -59,10 +59,12 @@
|
|
|
59
59
|
### Добавлено
|
|
60
60
|
|
|
61
61
|
**Интеграции:**
|
|
62
|
+
|
|
62
63
|
- Интеграция с Unisender и управление настройками
|
|
63
64
|
- Система доступности интеграций для конкретных приложений
|
|
64
65
|
|
|
65
66
|
**Редактор:**
|
|
67
|
+
|
|
66
68
|
- Ограничения для бесплатного плана в компоненте ButtonsEmail
|
|
67
69
|
- Поддержка mailto ссылок (subject, body) — DEV-13102
|
|
68
70
|
- Функциональность массовых блоков
|
|
@@ -70,29 +72,35 @@
|
|
|
70
72
|
- Вставка ссылки с нужным цветом — DEV-13172
|
|
71
73
|
|
|
72
74
|
**AI и UX:**
|
|
75
|
+
|
|
73
76
|
- AI-функциональность в EmailPageHeader с проверкой оплаты
|
|
74
77
|
- Улучшенные анимации модальных окон
|
|
75
78
|
|
|
76
79
|
**FileManager:**
|
|
80
|
+
|
|
77
81
|
- Поддержка задания нового имени при копировании файлов и папок
|
|
78
82
|
- Очистка кеша
|
|
79
83
|
|
|
80
84
|
### Исправлено
|
|
81
85
|
|
|
82
86
|
**Редактор таблиц:**
|
|
87
|
+
|
|
83
88
|
- Вёрстка выпадающего меню элемента Таблица — DEV-13370
|
|
84
89
|
- Работа редактора таблиц — DEV-13371
|
|
85
90
|
|
|
86
91
|
**Вставка и ссылки:**
|
|
92
|
+
|
|
87
93
|
- Дублирование тегов при вставке текста — DEV-13293
|
|
88
94
|
- Дублирование ссылок при вставке — DEV-13378
|
|
89
95
|
|
|
90
96
|
**Элементы:**
|
|
97
|
+
|
|
91
98
|
- Добавление элемента Кнопка в письмо — DEV-13312
|
|
92
99
|
- Некорректное отображение настроек маркеров — DEV-13313
|
|
93
100
|
- Запрет переноса строки для уведомления — DEV-13143
|
|
94
101
|
|
|
95
102
|
**Данные и API:**
|
|
103
|
+
|
|
96
104
|
- Изменения тегов и групп при отправке данных письма — DEV-10189
|
|
97
105
|
- Расчёт суммы рекуррентного платежа с `is_only_first_period` — DEV-13377
|
|
98
106
|
- Уведомление при ошибке отправки тестового письма
|
|
@@ -102,6 +110,7 @@
|
|
|
102
110
|
### Изменено
|
|
103
111
|
|
|
104
112
|
**Рефакторинг sandbox.js → TypeScript:**
|
|
113
|
+
|
|
105
114
|
- Миграция на модульную структуру с типами и централизованным состоянием
|
|
106
115
|
- Модули для обработки событий мыши, клавиатуры, drag-and-drop
|
|
107
116
|
- Обработчики настроек элементов (ссылки, переменные, отступы)
|
|
@@ -109,10 +118,12 @@
|
|
|
109
118
|
- Утилиты для текстового форматирования, стилей и VML
|
|
110
119
|
|
|
111
120
|
**Интеграции:**
|
|
121
|
+
|
|
112
122
|
- IntegrationSettings переименован в IntegrationSettingsData
|
|
113
123
|
- Unisender интеграция мигрирована на гибкую структуру
|
|
114
124
|
|
|
115
125
|
**UI:**
|
|
126
|
+
|
|
116
127
|
- Обновлён layout для BlocksTable и EmailsTable
|
|
117
128
|
- Улучшены стили чекбоксов в таблицах
|
|
118
129
|
|
package/README.md
CHANGED
|
@@ -3,45 +3,59 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
# Установка
|
|
6
|
+
|
|
6
7
|
Выполните этот код в командной строке:
|
|
7
8
|
|
|
8
9
|
```cmd
|
|
9
|
-
$ npm i @emailmaker/emailmaker@1.0.
|
|
10
|
+
$ npm i @emailmaker/emailmaker@1.0.112 -save
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
Добавьте EmailMaker plugin в ваш App config.
|
|
14
|
+
|
|
13
15
|
### Для сборщика Webpack
|
|
16
|
+
|
|
14
17
|
Импорт пакета:
|
|
18
|
+
|
|
15
19
|
```javascript
|
|
16
|
-
const emailMakerPlugin = require('@emailmaker/emailmaker/webpack')
|
|
20
|
+
const emailMakerPlugin = require('@emailmaker/emailmaker/webpack');
|
|
17
21
|
```
|
|
22
|
+
|
|
18
23
|
Определение пакета в приложении:
|
|
24
|
+
|
|
19
25
|
```javascript
|
|
20
26
|
module.exports = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
]
|
|
24
|
-
}
|
|
27
|
+
plugins: [new EmailmakerWebpackPlugin()],
|
|
28
|
+
};
|
|
25
29
|
```
|
|
30
|
+
|
|
26
31
|
### Для сборщика Vite
|
|
32
|
+
|
|
27
33
|
Импорт пакета:
|
|
34
|
+
|
|
28
35
|
```javascript
|
|
29
|
-
import emailMakerPlugin from 'emailmaker/vite'
|
|
36
|
+
import emailMakerPlugin from 'emailmaker/vite';
|
|
30
37
|
```
|
|
38
|
+
|
|
31
39
|
Определение пакета в приложении:
|
|
40
|
+
|
|
32
41
|
```javascript
|
|
33
42
|
export default defineConfig({
|
|
34
|
-
|
|
35
|
-
})
|
|
43
|
+
plugins: [emailMakerPlugin()],
|
|
44
|
+
});
|
|
36
45
|
```
|
|
46
|
+
|
|
37
47
|
# Инициализация
|
|
48
|
+
|
|
38
49
|
Импортируйте EmailMaker plugin в вашем компоненте:
|
|
50
|
+
|
|
39
51
|
```javascript
|
|
40
|
-
import * as emailmaker from
|
|
52
|
+
import * as emailmaker from '@emailmaker/emailmaker';
|
|
41
53
|
```
|
|
54
|
+
|
|
42
55
|
Параметры инициализации плагина содержат параметр `getAuthToken`. В него должна быть передана функция, которая запрашивает авторизационный OAuth токен по Client ID и Client Secret.
|
|
43
56
|
|
|
44
57
|
### Получение OAuth токена на бэкенде
|
|
58
|
+
|
|
45
59
|
```curl
|
|
46
60
|
curl --location 'https://api.emailmaker.ru/oauth/token' \
|
|
47
61
|
--header 'Content-Type: application/x-www-form-urlencoded' \
|
|
@@ -51,27 +65,34 @@ curl --location 'https://api.emailmaker.ru/oauth/token' \
|
|
|
51
65
|
```
|
|
52
66
|
|
|
53
67
|
### Создание сущности EmailMaker plugin
|
|
68
|
+
|
|
54
69
|
```javascript
|
|
55
|
-
emailmaker
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
70
|
+
emailmaker
|
|
71
|
+
.init({
|
|
72
|
+
getAuthToken: getAuthToken,
|
|
73
|
+
element: '#test',
|
|
74
|
+
content: {
|
|
75
|
+
title: 'Email subject',
|
|
76
|
+
html: `КОД_ПИСЬМА`,
|
|
77
|
+
},
|
|
78
|
+
config: {},
|
|
79
|
+
})
|
|
80
|
+
.then((instance) => {});
|
|
64
81
|
```
|
|
82
|
+
|
|
65
83
|
КОД_ПИСЬМА можно взять из <a href="https://emcdn.ru/plugin/new-email.html" target="_blank">нашего образца</a> или вставить HTML-код своего письма.
|
|
66
84
|
|
|
67
85
|
# Конфигурация
|
|
86
|
+
|
|
68
87
|
Конфигурация плагина представляет собой JSON с несколькими уровнями вложенности. В конфигурации вы можете настроить внешний вид, содержимое, с которым будет работать плагин и логику.
|
|
69
88
|
|
|
70
89
|
### element
|
|
90
|
+
|
|
71
91
|
Вы можете передать строку `element` в конфигурацию плагина. Это селектор DOM-элемента, внутри которого нужно инициализировать плагин. Если элемент не определен, приложение будет запущено в фоновом режиме.
|
|
72
92
|
|
|
73
93
|
### content
|
|
74
|
-
|
|
94
|
+
|
|
95
|
+
Секция `content` содержит параметры письма, которое нужно отобразить в редакторе.
|
|
75
96
|
В этот параметр может быть передано:
|
|
76
97
|
|
|
77
98
|
#### {string}
|
|
@@ -79,6 +100,7 @@ emailmaker.init({
|
|
|
79
100
|
HTML верстка письма.
|
|
80
101
|
|
|
81
102
|
#### {object} email options
|
|
103
|
+
|
|
82
104
|
```javascript
|
|
83
105
|
{
|
|
84
106
|
id?: string; // Уникальный ID проекта в вашей системе.
|
|
@@ -89,6 +111,7 @@ HTML верстка письма.
|
|
|
89
111
|
```
|
|
90
112
|
|
|
91
113
|
#### {object} full description
|
|
114
|
+
|
|
92
115
|
```javascript
|
|
93
116
|
{
|
|
94
117
|
temlateId?: string; // ID шаблона внутри EmailMaker.
|
|
@@ -100,8 +123,10 @@ HTML верстка письма.
|
|
|
100
123
|
|
|
101
124
|
Можно изменить содержимое в любой момент после инициализации с помощью метода `instance.show(content)`.
|
|
102
125
|
|
|
103
|
-
### config
|
|
126
|
+
### config
|
|
127
|
+
|
|
104
128
|
Раздел для настройки внешнего вида и настроек редактора. Вы можете изменить конфигурацию этого раздела после инициализации, используя `emailmaker.setConfig` или `emailmaker.updateConfig`.
|
|
129
|
+
|
|
105
130
|
##### Список параметров секции config
|
|
106
131
|
| Параметр | Описание | Значение по умолчанию |
|
|
107
132
|
| -------------------------------------- | --------------------------------------------------------------------------- | --------------------- |
|
|
@@ -240,10 +265,12 @@ HTML верстка письма.
|
|
|
240
265
|
| imageCenterEditorEnabled | Таб редактора изображений. | true |
|
|
241
266
|
| compressMaxSize | Макс. вес картинки после оптимизации, Мб. | true |
|
|
242
267
|
| compressMaxWidthOrHeight | Макс. ширина картинки после оптимизации, px. | true |
|
|
243
|
-
|
|
244
268
|
### Обработка событий
|
|
269
|
+
|
|
245
270
|
События могут быть переданы в конфигурации или добавлены после при работе с экземпляром плагина. Все подписчики событий могут быть асинхронными функциями.
|
|
246
|
-
|
|
271
|
+
|
|
272
|
+
#### Пример
|
|
273
|
+
|
|
247
274
|
```javascript
|
|
248
275
|
emailmaker.init({
|
|
249
276
|
....,
|
|
@@ -256,8 +283,11 @@ emailmaker.init({
|
|
|
256
283
|
const dispose = instance.handleSaveEmail(async (e) => {});
|
|
257
284
|
});
|
|
258
285
|
```
|
|
286
|
+
|
|
259
287
|
Передавая асинхронную функцию, вы можете реализовать асинхронную загрузку данных.
|
|
260
|
-
|
|
288
|
+
|
|
289
|
+
#### Пример
|
|
290
|
+
|
|
261
291
|
```javascript
|
|
262
292
|
emailmaker.init({
|
|
263
293
|
element: "#test",
|
|
@@ -267,54 +297,58 @@ emailmaker.init({
|
|
|
267
297
|
handleReadEmail: async (id) => {
|
|
268
298
|
return await fetchData(id); // Ваша функция получения данных.
|
|
269
299
|
}
|
|
270
|
-
}).then((instance) => {
|
|
300
|
+
}).then((instance) => {
|
|
271
301
|
setTimeout(() => instance.show({ id: "2" }), 1000)
|
|
272
302
|
});
|
|
273
303
|
```
|
|
304
|
+
|
|
274
305
|
### События
|
|
275
|
-
|
|
276
|
-
|
|
|
277
|
-
|
|
|
278
|
-
|
|
|
279
|
-
|
|
|
280
|
-
|
|
|
281
|
-
|
|
|
282
|
-
|
|
|
283
|
-
|
|
|
284
|
-
|
|
|
285
|
-
|
|
|
286
|
-
|
|
|
287
|
-
|
|
|
288
|
-
|
|
|
289
|
-
|
|
|
290
|
-
|
|
|
291
|
-
|
|
|
292
|
-
|
|
|
293
|
-
|
|
|
294
|
-
|
|
|
295
|
-
|
|
|
296
|
-
|
|
|
297
|
-
|
|
|
298
|
-
|
|
|
299
|
-
|
|
|
306
|
+
|
|
307
|
+
| Обработчик события | Описание |
|
|
308
|
+
| ------------------------- | ------------------------------------------ |
|
|
309
|
+
| handleReadEmail | Чтение письма |
|
|
310
|
+
| handleSaveEmail | Сохранение / обновление письма |
|
|
311
|
+
| handleReadEmailRevisions | Чтение списка автосохранений |
|
|
312
|
+
| handleEmailAutosave | Автосохранение |
|
|
313
|
+
| handleReadBlocks | Чтение списка блоков проекта |
|
|
314
|
+
| handleSaveBlock | Сохранение / обновление блока проекта |
|
|
315
|
+
| handleRemoveBlock | Удаление блока проекта |
|
|
316
|
+
| handleReadComments | Чтение списка комментариев письма |
|
|
317
|
+
| handleSaveComment | Сохранение / обновление комментария |
|
|
318
|
+
| handleRemoveComment | Удаление комментария письма |
|
|
319
|
+
| handleSaveButtonClick | Нажатие кнопки сохранения письма |
|
|
320
|
+
| handleNextButtonClick | Нажатие кнопки Далее |
|
|
321
|
+
| handlePreviousButtonClick | Нажатие кнопки Назад |
|
|
322
|
+
| handleEmailChanged | Изменение любого параметра письма |
|
|
323
|
+
| handleHtmlChanged | Изменение кода письма |
|
|
324
|
+
| handleDestroy | Деструкция плагина |
|
|
325
|
+
| handleLoad | Окончание инициализации экземпляра плагина |
|
|
326
|
+
| handleLoadImage | Загрузка изображений |
|
|
327
|
+
| handleNotify | Уведомление |
|
|
328
|
+
| handleError | Уведомление типа Ошибка |
|
|
329
|
+
| handleSuccess | Уведомление типа Успех |
|
|
330
|
+
| handleTestEmailSend | Отправка тестового письма |
|
|
331
|
+
| handleTestEmailModal | Открытие модального окна тестового письма |
|
|
332
|
+
|
|
300
333
|
### Методы
|
|
301
|
-
|
|
302
|
-
|
|
|
303
|
-
|
|
|
304
|
-
|
|
|
305
|
-
|
|
|
306
|
-
|
|
|
307
|
-
|
|
|
308
|
-
|
|
|
309
|
-
|
|
|
310
|
-
|
|
|
311
|
-
|
|
|
312
|
-
|
|
|
313
|
-
|
|
|
314
|
-
|
|
|
315
|
-
|
|
|
316
|
-
|
|
|
317
|
-
|
|
|
334
|
+
|
|
335
|
+
| Метод | Описание |
|
|
336
|
+
| ----------------- | ----------------------------------------- |
|
|
337
|
+
| init | Инициализация (async) |
|
|
338
|
+
| show | Изменение содержимого после инициализации |
|
|
339
|
+
| destroy | Деструкция экземпляра |
|
|
340
|
+
| reset | Сброс всей конфигурации |
|
|
341
|
+
| getEmail | Получение текущего письма |
|
|
342
|
+
| getConfig | Получение конфигурации |
|
|
343
|
+
| getBlocks | Получение блоков проекта |
|
|
344
|
+
| getComments | Получение комментариев письма |
|
|
345
|
+
| getEmailRevisions | Получение списка контроля версий |
|
|
346
|
+
| setConfig | Установка новых парамеров config |
|
|
347
|
+
| updateConfig | Добавление к параметрам config |
|
|
348
|
+
| notify | Показ уведомлений |
|
|
349
|
+
| getElement | Получение элемента инициализации |
|
|
350
|
+
| save | Сохраенние письма. |
|
|
351
|
+
| compileEmail | Получение скопмилированного письма |
|
|
318
352
|
|
|
319
353
|
### 📂 Файловый менеджер
|
|
320
354
|
|
|
@@ -376,45 +410,44 @@ emailmaker.init({
|
|
|
376
410
|
- **comparator** — функция сравнения двух файлов для сортировки. По умолчанию сравнение по имени
|
|
377
411
|
- **filterMatch** — функция проверки, проходит ли файл текущий фильтр. По умолчанию поиск по имени
|
|
378
412
|
|
|
379
|
-
|
|
380
413
|
### Интерфейс `StorageProvider`
|
|
381
414
|
|
|
382
415
|
#### Свойства
|
|
383
416
|
|
|
384
|
-
| Свойство
|
|
385
|
-
|
|
386
|
-
| `pathMode`
|
|
387
|
-
| `rootId`
|
|
388
|
-
| `trashPath`
|
|
389
|
-
| `tempPath`
|
|
390
|
-
| `useSoftDelete`
|
|
391
|
-
| `ensureFolderTrailingSlash` | `boolean` | Добавлять к путям папок завершающий слэш
|
|
392
|
-
| `validateDuplicates`
|
|
417
|
+
| Свойство | Тип | Описание | По умолчанию |
|
|
418
|
+
| --------------------------- | --------- | ----------------------------------------------------------- | ------------ |
|
|
419
|
+
| `pathMode` | `boolean` | Использовать путь как идентификатор для папок | - |
|
|
420
|
+
| `rootId` | `string` | Пользовательский идентификатор корневой папки | `''` |
|
|
421
|
+
| `trashPath` | `string` | Путь к корзине/папке для удаленных файлов | - |
|
|
422
|
+
| `tempPath` | `string` | Путь к временной папке для загрузок | - |
|
|
423
|
+
| `useSoftDelete` | `boolean` | Включить программное мягкое удаление | `false` |
|
|
424
|
+
| `ensureFolderTrailingSlash` | `boolean` | Добавлять к путям папок завершающий слэш | `true` |
|
|
425
|
+
| `validateDuplicates` | `boolean` | Проверка на существование при операциях с файлами и папками | - |
|
|
393
426
|
|
|
394
427
|
#### Методы
|
|
395
428
|
|
|
396
|
-
##### Основные методы
|
|
397
|
-
|
|
398
|
-
| Метод
|
|
399
|
-
|
|
400
|
-
| **getItems**
|
|
401
|
-
| **createFolder**
|
|
402
|
-
| uploadFile
|
|
403
|
-
| uploadFiles
|
|
404
|
-
| **uploadFileByUrl** | `url: string`, `folderId?: string`
|
|
405
|
-
| `findItemByPath`
|
|
406
|
-
| `setController`
|
|
407
|
-
| `getFileData`
|
|
408
|
-
| `getUrl`
|
|
409
|
-
| `getThumbnailUrl`
|
|
410
|
-
| `renameItem`
|
|
411
|
-
| `deleteItem`
|
|
412
|
-
| `deleteItems`
|
|
413
|
-
| `moveItem`
|
|
414
|
-
| `moveItems`
|
|
415
|
-
| `copyItem`
|
|
416
|
-
| `copyItems`
|
|
417
|
-
| `updateFile`
|
|
429
|
+
##### Основные методы
|
|
430
|
+
|
|
431
|
+
| Метод | Параметры | Возвращает | Описание |
|
|
432
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
433
|
+
| **getItems** | `options`:<br>- `folderId?: string`<br>- `search?: string`<br>- `sortBy?: string`<br>- `sortOrder?: 'asc'\|'desc'`<br>- `page?: number`<br>- `limit?: number`<br>- `itemType: 'all'\|'file'\|'folder'` | `{ items: FileSystemItem[], pagination?: Partial<ApiPaginationResponse> }` | Получить список файлов и папок с фильтрацией, сортировкой, пагинацией |
|
|
434
|
+
| **createFolder** | `name: string`, `parentid?: string` | `FileSystemItem` | Создать новую папку |
|
|
435
|
+
| uploadFile | `file`: <br>- `name: string`<br>- `size: number`<br>- `type: string`<br>- `folderId?: string`<br>- `data: Blob \| string`<br>- `thumbnail?: string`<br>- `dimensions?: string`<br>- `aspectRatio?: string`<br>- `extension?: string` | `FileSystemItemUpdate` | Загрузить файл с метаданными |
|
|
436
|
+
| uploadFiles | `request`:<br>- `items`: массив объектов:<br> - `requestId?: string` — необязательный идентификатор для сопоставления результата<br> - `name: string` — имя файла<br> - `size: number` — размер файла в байтах<br> - `type: string` — MIME-тип файла<br> - `folderId?: string \| null` — целевая папка<br> - `data: Blob \| string` — содержимое файла<br> - `extension?: string` — расширение файла<br>- `folderId?: string \| null` — папка для загрузки по умолчанию | `BatchResult<UploadFileResultData>` | Загрузить несколько файлов. Порядок элементов важен — при отсутствии `requestId` результаты сопоставляются по индексу |
|
|
437
|
+
| **uploadFileByUrl** | `url: string`, `folderId?: string` | `FileSystemItem` | Загрузить файл по URL (проверять существующие файлы) |
|
|
438
|
+
| `findItemByPath` | `path: string` | `FileSystemItem \| undefined` | Найти системные файлы/папки по пути |
|
|
439
|
+
| `setController` | `controller: StorageProviderController` | `void` | Установить контроллер управления кэшем |
|
|
440
|
+
| `getFileData` | `file: FileSystemItem` | `Blob` | Получить содержимое файла как blob |
|
|
441
|
+
| `getUrl` | `file: FileSystemItem` | `string` | Получить URL для доступа к файлу |
|
|
442
|
+
| `getThumbnailUrl` | `file: FileSystemItem` | `string` | Получить URL миниатюры |
|
|
443
|
+
| `renameItem` | `item: FileSystemItem`, `newName: string` | `FileSystemItemUpdate` | Переименовать файл/папку |
|
|
444
|
+
| `deleteItem` | `item: FileSystemItem` | `void` | Удалить один элемент (перемещает в корзину при мягком удалении) |
|
|
445
|
+
| `deleteItems` | `items: FileSystemItem[]` | `BatchResult<never>` | Удалить несколько элементов |
|
|
446
|
+
| `moveItem` | `item: FileSystemItem`, `targetFolderId?: string` | `FileSystemItemUpdate` | Переместить один элемент |
|
|
447
|
+
| `moveItems` | `items: FileSystemItem[]`, `targetFolderId?: string` | `BatchResult<FileSystemItemUpdate>` | Переместить несколько элементов |
|
|
448
|
+
| `copyItem` | `item: FileSystemItem`, `targetFolderId?: string` | `FileSystemItemUpdate` | Копировать один элемент |
|
|
449
|
+
| `copyItems` | `items: FileSystemItem[]`, `targetFolderId?: string` | `BatchResult<FileSystemItemUpdate>` | Копировать несколько элементов |
|
|
450
|
+
| `updateFile` | `file: FileSystemItem`, `updates`: объект с метаданными | `FileSystemItemUpdate` | Обновить метаданные/содержимое файла |
|
|
418
451
|
|
|
419
452
|
##### Определения типов
|
|
420
453
|
|
|
@@ -431,4 +464,4 @@ emailmaker.init({
|
|
|
431
464
|
- **Разрешение путей**: `trashPath` и `tempPath` преобразуются в реальные идентификаторы папок
|
|
432
465
|
- **Загрузка по URL**: Должна проверять, существует ли файл уже на текущем сервере
|
|
433
466
|
- **Управление кэшем**: Используйте `setController` для запросов инвалидации кэша
|
|
434
|
-
- **Двойное мягкое удаление**: Если бэкенд уже реализует мягкое удаление, оставьте `useSoftDelete=false`
|
|
467
|
+
- **Двойное мягкое удаление**: Если бэкенд уже реализует мягкое удаление, оставьте `useSoftDelete=false`
|