@escapenavigator/utils 1.10.144 → 1.10.146
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/dist/email-builder/from-html.d.ts +20 -113
- package/dist/email-builder/from-html.js +30 -794
- package/dist/email-builder/from-html.test.js +1 -608
- package/dist/email-builder/placeholders.js +7 -10
- package/dist/email-builder/strip-html.d.ts +1 -2
- package/dist/email-builder/strip-html.js +1 -2
- package/dist/quill-clipboard-matchers.d.ts +13 -10
- package/dist/quill-clipboard-matchers.js +13 -10
- package/package.json +3 -4
|
@@ -22,8 +22,7 @@
|
|
|
22
22
|
* - не сохраняем формат (bold/italic): Maily-`variable`-нода рендерит
|
|
23
23
|
* значение как plain text, теги внутри значения остаются буквальными.
|
|
24
24
|
* Если когда-то понадобится rich-text-подстановка — отдельная история
|
|
25
|
-
* (надо конвертить HTML в TipTap-ноды и инлайнить в doc
|
|
26
|
-
* `convertLegacyHtmlToEmailContent`).
|
|
25
|
+
* (надо конвертить HTML в TipTap-ноды и инлайнить в doc).
|
|
27
26
|
* - не сохраняем переносы строк: Maily-render не превращает `\n` в
|
|
28
27
|
* `<br>` (он эмитит весь текст одним `Fragment`), так что переносы
|
|
29
28
|
* визуально не видны. Лучше один параграф, чем «странные» дыры.
|
|
@@ -25,8 +25,7 @@ exports.stripHtml = stripHtml;
|
|
|
25
25
|
* - не сохраняем формат (bold/italic): Maily-`variable`-нода рендерит
|
|
26
26
|
* значение как plain text, теги внутри значения остаются буквальными.
|
|
27
27
|
* Если когда-то понадобится rich-text-подстановка — отдельная история
|
|
28
|
-
* (надо конвертить HTML в TipTap-ноды и инлайнить в doc
|
|
29
|
-
* `convertLegacyHtmlToEmailContent`).
|
|
28
|
+
* (надо конвертить HTML в TipTap-ноды и инлайнить в doc).
|
|
30
29
|
* - не сохраняем переносы строк: Maily-render не превращает `\n` в
|
|
31
30
|
* `<br>` (он эмитит весь текст одним `Fragment`), так что переносы
|
|
32
31
|
* визуально не видны. Лучше один параграф, чем «странные» дыры.
|
|
@@ -23,17 +23,20 @@
|
|
|
23
23
|
import Delta from 'quill-delta';
|
|
24
24
|
export type ClipboardMatcher = [number | string, (node: Node, delta: Delta) => Delta];
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* на `onChange` КАЖДОГО редактора — это финальная страховка поверх
|
|
29
|
-
* clipboard-matcher'ов (которые ловят только вставку): что бы ни оказалось
|
|
30
|
-
* в редакторе (вставка, набор двойных пробелов, загрузка легаси-контента),
|
|
31
|
-
* наружу уходит текст без nbsp.
|
|
26
|
+
* Убирает неразрывные пробелы из Quill-HTML: и литеральные сущности
|
|
27
|
+
* (` `/` `/` `), и сам символ U+00A0.
|
|
32
28
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
29
|
+
* ВАЖНО: не вешать на `onChange` контролируемого ReactQuill. Редактор
|
|
30
|
+
* сравнивает `value`-проп со своей внутренней сериализацией (она хранит
|
|
31
|
+
* ` `); если на каждый change подсовывать очищенное значение, оно
|
|
32
|
+
* никогда не совпадёт — ReactQuill бесконечно вызывает `setEditorContents`
|
|
33
|
+
* → `onChange` → `setState` и страница виснет («Maximum update depth»).
|
|
34
|
+
*
|
|
35
|
+
* Правильные места: (1) нормализация при ЗАГРУЗКЕ/сохранении (см.
|
|
36
|
+
* `normalizeIfTags`, `sanitizeQuillHtml`), (2) clipboard-matcher на вставку
|
|
37
|
+
* (`normalizeWhitespaceInDelta` ниже), (3) рендер письма (`transformText`).
|
|
38
|
+
* nbsp вреден тем, что запрещает перенос строки (абзацы рвутся посреди
|
|
39
|
+
* слова) и ломает разбор `{{#if X}}` (нужен обычный пробел после `#if`).
|
|
37
40
|
*/
|
|
38
41
|
export declare function stripNonBreakingSpaces(html?: string | null): string;
|
|
39
42
|
/**
|
|
@@ -31,17 +31,20 @@ exports.getStripColorClipboardMatchers = getStripColorClipboardMatchers;
|
|
|
31
31
|
exports.getNormalizeWhitespaceClipboardMatchers = getNormalizeWhitespaceClipboardMatchers;
|
|
32
32
|
const quill_delta_1 = __importDefault(require("quill-delta"));
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* на `onChange` КАЖДОГО редактора — это финальная страховка поверх
|
|
37
|
-
* clipboard-matcher'ов (которые ловят только вставку): что бы ни оказалось
|
|
38
|
-
* в редакторе (вставка, набор двойных пробелов, загрузка легаси-контента),
|
|
39
|
-
* наружу уходит текст без nbsp.
|
|
34
|
+
* Убирает неразрывные пробелы из Quill-HTML: и литеральные сущности
|
|
35
|
+
* (` `/` `/` `), и сам символ U+00A0.
|
|
40
36
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
37
|
+
* ВАЖНО: не вешать на `onChange` контролируемого ReactQuill. Редактор
|
|
38
|
+
* сравнивает `value`-проп со своей внутренней сериализацией (она хранит
|
|
39
|
+
* ` `); если на каждый change подсовывать очищенное значение, оно
|
|
40
|
+
* никогда не совпадёт — ReactQuill бесконечно вызывает `setEditorContents`
|
|
41
|
+
* → `onChange` → `setState` и страница виснет («Maximum update depth»).
|
|
42
|
+
*
|
|
43
|
+
* Правильные места: (1) нормализация при ЗАГРУЗКЕ/сохранении (см.
|
|
44
|
+
* `normalizeIfTags`, `sanitizeQuillHtml`), (2) clipboard-matcher на вставку
|
|
45
|
+
* (`normalizeWhitespaceInDelta` ниже), (3) рендер письма (`transformText`).
|
|
46
|
+
* nbsp вреден тем, что запрещает перенос строки (абзацы рвутся посреди
|
|
47
|
+
* слова) и ломает разбор `{{#if X}}` (нужен обычный пробел после `#if`).
|
|
45
48
|
*/
|
|
46
49
|
function stripNonBreakingSpaces(html) {
|
|
47
50
|
if (!html)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@escapenavigator/utils",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.146",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,12 +14,11 @@
|
|
|
14
14
|
"test": "jest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@escapenavigator/types": "^1.10.
|
|
17
|
+
"@escapenavigator/types": "^1.10.142",
|
|
18
18
|
"axios": "^0.21.4",
|
|
19
19
|
"class-transformer": "^0.5.1",
|
|
20
20
|
"class-validator": "^0.13.2",
|
|
21
21
|
"i18next": "^21.6.4",
|
|
22
|
-
"node-html-parser": "^7.1.0",
|
|
23
22
|
"quill-delta": "^5.1.0"
|
|
24
23
|
},
|
|
25
24
|
"devDependencies": {
|
|
@@ -28,5 +27,5 @@
|
|
|
28
27
|
"ts-jest": "^29.1.1",
|
|
29
28
|
"typescript": "^5.6"
|
|
30
29
|
},
|
|
31
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "022977230155bf802f8c3f349fb49a42ad7fd5a9"
|
|
32
31
|
}
|