@teleporthq/teleport-shared 0.43.71 → 0.43.75
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/__tests__/_fixtures/rich-text/README.md +6 -0
- package/__tests__/_fixtures/rich-text/help-accept-an-invitation.html +50 -0
- package/__tests__/_fixtures/rich-text/help-activate-an-appsumo-license.html +44 -0
- package/__tests__/_fixtures/rich-text/help-add-custom-code-to-your-site.html +61 -0
- package/__tests__/_fixtures/rich-text/help-connect-a-custom-domain.html +106 -0
- package/__tests__/_fixtures/rich-text/help-custom-animations-with-code.html +69 -0
- package/__tests__/_fixtures/rich-text/help-generate-a-store.html +78 -0
- package/__tests__/_fixtures/rich-text/help-keyboard-shortcuts.html +417 -0
- package/__tests__/_fixtures/rich-text/help-prompting-tips.html +82 -0
- package/__tests__/_fixtures/rich-text/help-sitemap-robots-and-llms-txt.html +82 -0
- package/__tests__/_fixtures/rich-text/help-use-a-csv-file-or-static-data.html +61 -0
- package/__tests__/_helpers/rich-text-content-runtime-emitter.ts +117 -0
- package/__tests__/function-sources.ts +30 -0
- package/__tests__/utils/content-tables.ts +69 -0
- package/__tests__/utils/rich-text-content-runtime-module.ts +115 -0
- package/__tests__/utils/rich-text-content.ts +131 -0
- package/dist/cjs/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/page-transition/index.d.ts +1 -0
- package/dist/cjs/page-transition/index.d.ts.map +1 -1
- package/dist/cjs/page-transition/index.js +1 -0
- package/dist/cjs/page-transition/index.js.map +1 -1
- package/dist/cjs/page-transition/variant-sources.generated.d.ts +7 -0
- package/dist/cjs/page-transition/variant-sources.generated.d.ts.map +1 -0
- package/dist/cjs/page-transition/variant-sources.generated.js +14 -0
- package/dist/cjs/page-transition/variant-sources.generated.js.map +1 -0
- package/dist/cjs/scroll-scene/engine-source.d.ts.map +1 -1
- package/dist/cjs/scroll-scene/engine-source.js +2 -5
- package/dist/cjs/scroll-scene/engine-source.js.map +1 -1
- package/dist/cjs/scroll-scene/helper-sources.generated.d.ts +9 -0
- package/dist/cjs/scroll-scene/helper-sources.generated.d.ts.map +1 -0
- package/dist/cjs/scroll-scene/helper-sources.generated.js +16 -0
- package/dist/cjs/scroll-scene/helper-sources.generated.js.map +1 -0
- package/dist/cjs/scroll-scene/index.d.ts +1 -0
- package/dist/cjs/scroll-scene/index.d.ts.map +1 -1
- package/dist/cjs/scroll-scene/index.js +3 -1
- package/dist/cjs/scroll-scene/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils/content-tables.d.ts +78 -0
- package/dist/cjs/utils/content-tables.d.ts.map +1 -0
- package/dist/cjs/utils/content-tables.js +123 -0
- package/dist/cjs/utils/content-tables.js.map +1 -0
- package/dist/cjs/utils/rich-text-content-codegen.d.ts +20 -0
- package/dist/cjs/utils/rich-text-content-codegen.d.ts.map +1 -0
- package/dist/cjs/utils/rich-text-content-codegen.js +55 -0
- package/dist/cjs/utils/rich-text-content-codegen.js.map +1 -0
- package/dist/cjs/utils/rich-text-content-runtime-source.d.ts +2 -0
- package/dist/cjs/utils/rich-text-content-runtime-source.d.ts.map +1 -0
- package/dist/cjs/utils/rich-text-content-runtime-source.js +591 -0
- package/dist/cjs/utils/rich-text-content-runtime-source.js.map +1 -0
- package/dist/cjs/utils/rich-text-content.d.ts +150 -0
- package/dist/cjs/utils/rich-text-content.d.ts.map +1 -0
- package/dist/cjs/utils/rich-text-content.js +649 -0
- package/dist/cjs/utils/rich-text-content.js.map +1 -0
- package/dist/cjs/utils/table-access.d.ts.map +1 -1
- package/dist/cjs/utils/table-access.js +5 -7
- package/dist/cjs/utils/table-access.js.map +1 -1
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/page-transition/index.d.ts +1 -0
- package/dist/esm/page-transition/index.d.ts.map +1 -1
- package/dist/esm/page-transition/index.js +1 -0
- package/dist/esm/page-transition/index.js.map +1 -1
- package/dist/esm/page-transition/variant-sources.generated.d.ts +7 -0
- package/dist/esm/page-transition/variant-sources.generated.d.ts.map +1 -0
- package/dist/esm/page-transition/variant-sources.generated.js +11 -0
- package/dist/esm/page-transition/variant-sources.generated.js.map +1 -0
- package/dist/esm/scroll-scene/engine-source.d.ts.map +1 -1
- package/dist/esm/scroll-scene/engine-source.js +2 -5
- package/dist/esm/scroll-scene/engine-source.js.map +1 -1
- package/dist/esm/scroll-scene/helper-sources.generated.d.ts +9 -0
- package/dist/esm/scroll-scene/helper-sources.generated.d.ts.map +1 -0
- package/dist/esm/scroll-scene/helper-sources.generated.js +13 -0
- package/dist/esm/scroll-scene/helper-sources.generated.js.map +1 -0
- package/dist/esm/scroll-scene/index.d.ts +1 -0
- package/dist/esm/scroll-scene/index.d.ts.map +1 -1
- package/dist/esm/scroll-scene/index.js +1 -0
- package/dist/esm/scroll-scene/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils/content-tables.d.ts +78 -0
- package/dist/esm/utils/content-tables.d.ts.map +1 -0
- package/dist/esm/utils/content-tables.js +114 -0
- package/dist/esm/utils/content-tables.js.map +1 -0
- package/dist/esm/utils/rich-text-content-codegen.d.ts +20 -0
- package/dist/esm/utils/rich-text-content-codegen.d.ts.map +1 -0
- package/dist/esm/utils/rich-text-content-codegen.js +50 -0
- package/dist/esm/utils/rich-text-content-codegen.js.map +1 -0
- package/dist/esm/utils/rich-text-content-runtime-source.d.ts +2 -0
- package/dist/esm/utils/rich-text-content-runtime-source.d.ts.map +1 -0
- package/dist/esm/utils/rich-text-content-runtime-source.js +588 -0
- package/dist/esm/utils/rich-text-content-runtime-source.js.map +1 -0
- package/dist/esm/utils/rich-text-content.d.ts +150 -0
- package/dist/esm/utils/rich-text-content.d.ts.map +1 -0
- package/dist/esm/utils/rich-text-content.js +613 -0
- package/dist/esm/utils/rich-text-content.js.map +1 -0
- package/dist/esm/utils/table-access.d.ts.map +1 -1
- package/dist/esm/utils/table-access.js +5 -7
- package/dist/esm/utils/table-access.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +6 -0
- package/src/page-transition/index.ts +1 -0
- package/src/page-transition/variant-sources.generated.ts +14 -0
- package/src/scroll-scene/engine-source.ts +7 -10
- package/src/scroll-scene/helper-sources.generated.ts +18 -0
- package/src/scroll-scene/index.ts +1 -0
- package/src/utils/content-tables.ts +151 -0
- package/src/utils/rich-text-content-codegen.ts +52 -0
- package/src/utils/rich-text-content-runtime-source.ts +587 -0
- package/src/utils/rich-text-content.ts +677 -0
- package/src/utils/table-access.ts +4 -2
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
// GENERATED from src/utils/rich-text-content.ts — do not edit by hand. Regenerate with
|
|
2
|
+
// UPDATE_RICH_TEXT_CONTENT_RUNTIME=1 npx jest packages/teleport-shared/__tests__/utils/rich-text-content-runtime-module.ts
|
|
3
|
+
// (see generateRichTextContentRuntimeModuleSource for why this is a string).
|
|
4
|
+
/* tslint:disable:no-invalid-template-strings -- the lines are JavaScript source */
|
|
5
|
+
export var RICH_TEXT_CONTENT_RUNTIME_MODULE_SOURCE = [
|
|
6
|
+
'/**',
|
|
7
|
+
' * Rich-text content: the stored form of a post body and the form the editor',
|
|
8
|
+
' * holds. Generated from @teleporthq/teleport-shared; edit it there.',
|
|
9
|
+
' *',
|
|
10
|
+
' * Stored HTML is plain: nested lists, tables with header rows, code blocks,',
|
|
11
|
+
" * callouts. The editor gets lists as Quill's lines and every block Quill has",
|
|
12
|
+
' * no blot for wrapped in a protected block it treats as one unit, and writes',
|
|
13
|
+
' * stored HTML back through fromEditorHtml.',
|
|
14
|
+
' */',
|
|
15
|
+
'',
|
|
16
|
+
'export var PROTECTED_BLOCK_CLASS = "tq-protected"',
|
|
17
|
+
'',
|
|
18
|
+
'export var PROTECTED_BLOCK_ATTR = "data-tq-protected"',
|
|
19
|
+
'',
|
|
20
|
+
'export var PROTECTED_BLOCK_BLOT_NAME = "tq-protected-block"',
|
|
21
|
+
'',
|
|
22
|
+
'export var PROTECTED_BLOCK_KINDS = [',
|
|
23
|
+
' "table",',
|
|
24
|
+
' "code",',
|
|
25
|
+
' "callout",',
|
|
26
|
+
' "list",',
|
|
27
|
+
' "quote",',
|
|
28
|
+
' "html"',
|
|
29
|
+
']',
|
|
30
|
+
'',
|
|
31
|
+
'export var CALLOUT_CLASS = "tq-callout"',
|
|
32
|
+
'',
|
|
33
|
+
'export var CALLOUT_KIND_ATTR = "data-kind"',
|
|
34
|
+
'',
|
|
35
|
+
'export var CALLOUT_KINDS = [',
|
|
36
|
+
' "note",',
|
|
37
|
+
' "tip",',
|
|
38
|
+
' "important",',
|
|
39
|
+
' "warning",',
|
|
40
|
+
' "caution"',
|
|
41
|
+
']',
|
|
42
|
+
'',
|
|
43
|
+
'export var RICH_TEXT_EMBED_CLASS = "tq-embed"',
|
|
44
|
+
'',
|
|
45
|
+
'export var RICH_TEXT_IMAGE_CLASS = "ql-content-image"',
|
|
46
|
+
'',
|
|
47
|
+
'export var QUILL_LIST_ITEM_ATTR = "data-list"',
|
|
48
|
+
'',
|
|
49
|
+
'export var QUILL_INDENT_CLASS_PREFIX = "ql-indent-"',
|
|
50
|
+
'',
|
|
51
|
+
'export var RICH_TEXT_INLINE_TAGS = [',
|
|
52
|
+
' "A",',
|
|
53
|
+
' "ABBR",',
|
|
54
|
+
' "B",',
|
|
55
|
+
' "BR",',
|
|
56
|
+
' "CODE",',
|
|
57
|
+
' "DEL",',
|
|
58
|
+
' "EM",',
|
|
59
|
+
' "I",',
|
|
60
|
+
' "IMG",',
|
|
61
|
+
' "INS",',
|
|
62
|
+
' "KBD",',
|
|
63
|
+
' "MARK",',
|
|
64
|
+
' "S",',
|
|
65
|
+
' "SMALL",',
|
|
66
|
+
' "SPAN",',
|
|
67
|
+
' "STRIKE",',
|
|
68
|
+
' "STRONG",',
|
|
69
|
+
' "SUB",',
|
|
70
|
+
' "SUP",',
|
|
71
|
+
' "U"',
|
|
72
|
+
']',
|
|
73
|
+
'',
|
|
74
|
+
'export var RICH_TEXT_BLOCK_TAGS = [',
|
|
75
|
+
' "ARTICLE",',
|
|
76
|
+
' "ASIDE",',
|
|
77
|
+
' "BLOCKQUOTE",',
|
|
78
|
+
' "DD",',
|
|
79
|
+
' "DETAILS",',
|
|
80
|
+
' "DIV",',
|
|
81
|
+
' "DL",',
|
|
82
|
+
' "DT",',
|
|
83
|
+
' "FIGCAPTION",',
|
|
84
|
+
' "FIGURE",',
|
|
85
|
+
' "FOOTER",',
|
|
86
|
+
' "FORM",',
|
|
87
|
+
' "H1",',
|
|
88
|
+
' "H2",',
|
|
89
|
+
' "H3",',
|
|
90
|
+
' "H4",',
|
|
91
|
+
' "H5",',
|
|
92
|
+
' "H6",',
|
|
93
|
+
' "HEADER",',
|
|
94
|
+
' "HR",',
|
|
95
|
+
' "LI",',
|
|
96
|
+
' "MAIN",',
|
|
97
|
+
' "NAV",',
|
|
98
|
+
' "OL",',
|
|
99
|
+
' "P",',
|
|
100
|
+
' "PRE",',
|
|
101
|
+
' "SECTION",',
|
|
102
|
+
' "SUMMARY",',
|
|
103
|
+
' "TABLE",',
|
|
104
|
+
' "TBODY",',
|
|
105
|
+
' "TD",',
|
|
106
|
+
' "TFOOT",',
|
|
107
|
+
' "TH",',
|
|
108
|
+
' "THEAD",',
|
|
109
|
+
' "TR",',
|
|
110
|
+
' "UL"',
|
|
111
|
+
']',
|
|
112
|
+
'',
|
|
113
|
+
'export function parseRichTextFragment(html) {',
|
|
114
|
+
" const doc = new DOMParser().parseFromString('<!doctype html><html><body>' + html, 'text/html');",
|
|
115
|
+
' return doc.body;',
|
|
116
|
+
'}',
|
|
117
|
+
'',
|
|
118
|
+
'export function escapeRichTextText(value) {',
|
|
119
|
+
" return String(value).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');",
|
|
120
|
+
'}',
|
|
121
|
+
'',
|
|
122
|
+
'export function escapeRichTextAttribute(value) {',
|
|
123
|
+
" return escapeRichTextText(value).replace(/\"/g, '"');",
|
|
124
|
+
'}',
|
|
125
|
+
'',
|
|
126
|
+
'export function isProtectedBlockKind(value) {',
|
|
127
|
+
' return PROTECTED_BLOCK_KINDS.indexOf(String(value)) !== -1;',
|
|
128
|
+
'}',
|
|
129
|
+
'',
|
|
130
|
+
'export function buildProtectedBlockHtml(kind, html) {',
|
|
131
|
+
' return (`<div class="${PROTECTED_BLOCK_CLASS}" ${PROTECTED_BLOCK_ATTR}="${kind}" contenteditable="false">` +',
|
|
132
|
+
' html +',
|
|
133
|
+
" '</div>');",
|
|
134
|
+
'}',
|
|
135
|
+
'',
|
|
136
|
+
'export function readProtectedBlockValue(element) {',
|
|
137
|
+
' const kind = element.getAttribute(PROTECTED_BLOCK_ATTR);',
|
|
138
|
+
' return {',
|
|
139
|
+
" kind: isProtectedBlockKind(kind) ? kind : 'html',",
|
|
140
|
+
' html: element.innerHTML,',
|
|
141
|
+
' };',
|
|
142
|
+
'}',
|
|
143
|
+
'',
|
|
144
|
+
'export function isCalloutKind(value) {',
|
|
145
|
+
' return CALLOUT_KINDS.indexOf(String(value)) !== -1;',
|
|
146
|
+
'}',
|
|
147
|
+
'',
|
|
148
|
+
'export function buildCalloutHtml(kind, innerHtml) {',
|
|
149
|
+
' return `<aside class="${CALLOUT_CLASS}" ${CALLOUT_KIND_ATTR}="${kind}">${innerHtml}</aside>`;',
|
|
150
|
+
'}',
|
|
151
|
+
'',
|
|
152
|
+
'export function buildCodeBlockHtml(language, code, escaped) {',
|
|
153
|
+
" const text = escaped ? code : escapeRichTextText(code || '');",
|
|
154
|
+
" const lang = String(language || '').replace(/[^\\w.+#-]/g, '');",
|
|
155
|
+
" const classAttr = lang && lang !== 'plain' ? ` class=\"language-${lang}\"` : '';",
|
|
156
|
+
' return `<pre><code${classAttr}>${text}</code></pre>`;',
|
|
157
|
+
'}',
|
|
158
|
+
'',
|
|
159
|
+
'export function hasClass(element, className) {',
|
|
160
|
+
" const classes = (element.getAttribute('class') || '').split(/\\s+/);",
|
|
161
|
+
' return classes.indexOf(className) !== -1;',
|
|
162
|
+
'}',
|
|
163
|
+
'',
|
|
164
|
+
'export function isRichTextInlineNode(node) {',
|
|
165
|
+
' if (node.nodeType === 3 || node.nodeType === 8) {',
|
|
166
|
+
' return true;',
|
|
167
|
+
' }',
|
|
168
|
+
' if (node.nodeType !== 1) {',
|
|
169
|
+
' return false;',
|
|
170
|
+
' }',
|
|
171
|
+
' return RICH_TEXT_INLINE_TAGS.indexOf(node.tagName) !== -1;',
|
|
172
|
+
'}',
|
|
173
|
+
'',
|
|
174
|
+
'export function isBlankTextNode(node) {',
|
|
175
|
+
" return node.nodeType === 3 && !/\\S/.test(node.nodeValue || '');",
|
|
176
|
+
'}',
|
|
177
|
+
'',
|
|
178
|
+
'export function isRichTextBlockElement(node) {',
|
|
179
|
+
' return (!!node && node.nodeType === 1 && RICH_TEXT_BLOCK_TAGS.indexOf(node.tagName) !== -1);',
|
|
180
|
+
'}',
|
|
181
|
+
'',
|
|
182
|
+
'export function stripInterBlockWhitespace(root) {',
|
|
183
|
+
" if (root.nodeType === 1 && root.tagName === 'PRE') {",
|
|
184
|
+
' return;',
|
|
185
|
+
' }',
|
|
186
|
+
' const rootIsBlock = root.nodeType !== 1 || isRichTextBlockElement(root);',
|
|
187
|
+
' const children = Array.prototype.slice.call(root.childNodes);',
|
|
188
|
+
' children.forEach((child) => {',
|
|
189
|
+
' if (child.nodeType === 3) {',
|
|
190
|
+
' const afterBlock = isRichTextBlockElement(child.previousSibling) || (rootIsBlock && !child.previousSibling);',
|
|
191
|
+
' const beforeBlock = isRichTextBlockElement(child.nextSibling) || (rootIsBlock && !child.nextSibling);',
|
|
192
|
+
' // A run of white space renders as one space; stored HTML keeps it that way',
|
|
193
|
+
' // (a no-break space is not white space here).',
|
|
194
|
+
" let text = (child.nodeValue || '').replace(/[ \\t\\r\\n\\f]+/g, ' ');",
|
|
195
|
+
' if (afterBlock) {',
|
|
196
|
+
" text = text.replace(/^\\s+/, '');",
|
|
197
|
+
' }',
|
|
198
|
+
' if (beforeBlock) {',
|
|
199
|
+
" text = text.replace(/\\s+$/, '');",
|
|
200
|
+
' }',
|
|
201
|
+
' if (!text && (afterBlock || beforeBlock)) {',
|
|
202
|
+
' root.removeChild(child);',
|
|
203
|
+
' }',
|
|
204
|
+
' else if (text !== child.nodeValue) {',
|
|
205
|
+
' child.nodeValue = text;',
|
|
206
|
+
' }',
|
|
207
|
+
' return;',
|
|
208
|
+
' }',
|
|
209
|
+
' if (child.nodeType === 1) {',
|
|
210
|
+
' stripInterBlockWhitespace(child);',
|
|
211
|
+
' }',
|
|
212
|
+
' });',
|
|
213
|
+
'}',
|
|
214
|
+
'',
|
|
215
|
+
'export function unwrapSingleParagraphListItems(root) {',
|
|
216
|
+
" Array.prototype.slice.call(root.querySelectorAll('li')).forEach((item) => {",
|
|
217
|
+
' const paragraphs = Array.prototype.slice',
|
|
218
|
+
' .call(item.children)',
|
|
219
|
+
" .filter((child) => child.tagName === 'P');",
|
|
220
|
+
' const blocks = Array.prototype.slice',
|
|
221
|
+
' .call(item.children)',
|
|
222
|
+
' .filter((child) => !isRichTextInlineNode(child));',
|
|
223
|
+
" const nested = blocks.filter((child) => child.tagName === 'UL' || child.tagName === 'OL');",
|
|
224
|
+
' if (paragraphs.length !== 1 || blocks.length !== 1 + nested.length) {',
|
|
225
|
+
' return;',
|
|
226
|
+
' }',
|
|
227
|
+
' const paragraph = paragraphs[0];',
|
|
228
|
+
' while (paragraph.firstChild) {',
|
|
229
|
+
' item.insertBefore(paragraph.firstChild, paragraph);',
|
|
230
|
+
' }',
|
|
231
|
+
' item.removeChild(paragraph);',
|
|
232
|
+
' });',
|
|
233
|
+
'}',
|
|
234
|
+
'',
|
|
235
|
+
'export function isExternalWebLink(href) {',
|
|
236
|
+
" return /^https?:\\/\\//i.test(String(href || '').trim());",
|
|
237
|
+
'}',
|
|
238
|
+
'',
|
|
239
|
+
'export function normalizeLinkTargets(root) {',
|
|
240
|
+
" Array.prototype.slice.call(root.querySelectorAll('a[href]')).forEach((link) => {",
|
|
241
|
+
" if (isExternalWebLink(link.getAttribute('href') || '')) {",
|
|
242
|
+
" if (!link.getAttribute('target')) {",
|
|
243
|
+
" link.setAttribute('rel', 'noopener noreferrer');",
|
|
244
|
+
" link.setAttribute('target', '_blank');",
|
|
245
|
+
' }',
|
|
246
|
+
' return;',
|
|
247
|
+
' }',
|
|
248
|
+
" link.removeAttribute('target');",
|
|
249
|
+
" link.removeAttribute('rel');",
|
|
250
|
+
' });',
|
|
251
|
+
'}',
|
|
252
|
+
'',
|
|
253
|
+
'export function wrapBareBlockquoteContent(root) {',
|
|
254
|
+
" Array.prototype.slice.call(root.querySelectorAll('blockquote')).forEach((quote) => {",
|
|
255
|
+
' const children = Array.prototype.slice.call(quote.childNodes);',
|
|
256
|
+
' const bare = children.filter((child) => !isBlankTextNode(child));',
|
|
257
|
+
' if (!bare.length || !bare.every((child) => isRichTextInlineNode(child))) {',
|
|
258
|
+
' return;',
|
|
259
|
+
' }',
|
|
260
|
+
" const paragraph = quote.ownerDocument.createElement('p');",
|
|
261
|
+
' children.forEach((child) => paragraph.appendChild(child));',
|
|
262
|
+
' quote.appendChild(paragraph);',
|
|
263
|
+
' });',
|
|
264
|
+
'}',
|
|
265
|
+
'',
|
|
266
|
+
'export function serializeRichTextNode(node) {',
|
|
267
|
+
' if (node.nodeType === 1) {',
|
|
268
|
+
' return node.outerHTML;',
|
|
269
|
+
' }',
|
|
270
|
+
' if (node.nodeType === 3) {',
|
|
271
|
+
" return escapeRichTextText(node.nodeValue || '');",
|
|
272
|
+
' }',
|
|
273
|
+
" return '';",
|
|
274
|
+
'}',
|
|
275
|
+
'',
|
|
276
|
+
'export function readInlineHtml(element) {',
|
|
277
|
+
" let html = '';",
|
|
278
|
+
' Array.prototype.slice.call(element.childNodes).forEach((node) => {',
|
|
279
|
+
' if (node.nodeType === 1) {',
|
|
280
|
+
' const child = node;',
|
|
281
|
+
" if (child.tagName === 'UL' || child.tagName === 'OL') {",
|
|
282
|
+
' return;',
|
|
283
|
+
' }',
|
|
284
|
+
" if (child.tagName === 'P') {",
|
|
285
|
+
' html += child.innerHTML;',
|
|
286
|
+
' return;',
|
|
287
|
+
' }',
|
|
288
|
+
' }',
|
|
289
|
+
' html += serializeRichTextNode(node);',
|
|
290
|
+
' });',
|
|
291
|
+
" return html.replace(/^\\s+|\\s+$/g, '');",
|
|
292
|
+
'}',
|
|
293
|
+
'',
|
|
294
|
+
'export function isQuillSimpleList(list) {',
|
|
295
|
+
" if (list.hasAttribute('start')) {",
|
|
296
|
+
' return false;',
|
|
297
|
+
' }',
|
|
298
|
+
' const items = Array.prototype.slice.call(list.children);',
|
|
299
|
+
' for (let i = 0; i < items.length; i += 1) {',
|
|
300
|
+
' const item = items[i];',
|
|
301
|
+
" if (item.tagName !== 'LI') {",
|
|
302
|
+
' return false;',
|
|
303
|
+
' }',
|
|
304
|
+
' const children = Array.prototype.slice.call(item.childNodes);',
|
|
305
|
+
' let paragraphs = 0;',
|
|
306
|
+
' let nested = null;',
|
|
307
|
+
' for (let j = 0; j < children.length; j += 1) {',
|
|
308
|
+
' const child = children[j];',
|
|
309
|
+
' if (isRichTextInlineNode(child)) {',
|
|
310
|
+
' if (nested && !isBlankTextNode(child)) {',
|
|
311
|
+
' return false;',
|
|
312
|
+
' }',
|
|
313
|
+
' continue;',
|
|
314
|
+
' }',
|
|
315
|
+
' const tag = child.tagName;',
|
|
316
|
+
" if (tag === 'P') {",
|
|
317
|
+
' paragraphs += 1;',
|
|
318
|
+
' if (paragraphs > 1 || nested) {',
|
|
319
|
+
' return false;',
|
|
320
|
+
' }',
|
|
321
|
+
' continue;',
|
|
322
|
+
' }',
|
|
323
|
+
" if ((tag === 'UL' || tag === 'OL') && !nested) {",
|
|
324
|
+
' nested = child;',
|
|
325
|
+
' continue;',
|
|
326
|
+
' }',
|
|
327
|
+
' return false;',
|
|
328
|
+
' }',
|
|
329
|
+
' if (nested && !isQuillSimpleList(nested)) {',
|
|
330
|
+
' return false;',
|
|
331
|
+
' }',
|
|
332
|
+
' }',
|
|
333
|
+
' return true;',
|
|
334
|
+
'}',
|
|
335
|
+
'',
|
|
336
|
+
'export function flattenListForQuill(list) {',
|
|
337
|
+
" let html = '<ol>';",
|
|
338
|
+
' const walk = (node, indent) => {',
|
|
339
|
+
" const type = node.tagName === 'OL' ? 'ordered' : 'bullet';",
|
|
340
|
+
' Array.prototype.slice.call(node.children).forEach((item) => {',
|
|
341
|
+
" if (item.tagName !== 'LI') {",
|
|
342
|
+
' return;',
|
|
343
|
+
' }',
|
|
344
|
+
' const indentClass = indent > 0 ? ` class="${QUILL_INDENT_CLASS_PREFIX}${indent}"` : \'\';',
|
|
345
|
+
' html += `<li ${QUILL_LIST_ITEM_ATTR}="${type}"${indentClass}>${readInlineHtml(item)}</li>`;',
|
|
346
|
+
' Array.prototype.slice.call(item.children).forEach((child) => {',
|
|
347
|
+
" if (child.tagName === 'UL' || child.tagName === 'OL') {",
|
|
348
|
+
' walk(child, indent + 1);',
|
|
349
|
+
' }',
|
|
350
|
+
' });',
|
|
351
|
+
' });',
|
|
352
|
+
' };',
|
|
353
|
+
' walk(list, 0);',
|
|
354
|
+
" return html + '</ol>';",
|
|
355
|
+
'}',
|
|
356
|
+
'',
|
|
357
|
+
'export function isQuillSimpleBlockquote(quote) {',
|
|
358
|
+
' const children = Array.prototype.slice.call(quote.childNodes);',
|
|
359
|
+
' for (let i = 0; i < children.length; i += 1) {',
|
|
360
|
+
' const child = children[i];',
|
|
361
|
+
' if (isRichTextInlineNode(child)) {',
|
|
362
|
+
' continue;',
|
|
363
|
+
' }',
|
|
364
|
+
" if (child.tagName !== 'P') {",
|
|
365
|
+
' return false;',
|
|
366
|
+
' }',
|
|
367
|
+
' }',
|
|
368
|
+
' return true;',
|
|
369
|
+
'}',
|
|
370
|
+
'',
|
|
371
|
+
'export function blockquoteLinesForQuill(quote) {',
|
|
372
|
+
' const lines = [];',
|
|
373
|
+
" let pending = '';",
|
|
374
|
+
' const flush = () => {',
|
|
375
|
+
' if (/\\S/.test(pending)) {',
|
|
376
|
+
" lines.push(pending.replace(/^\\s+|\\s+$/g, ''));",
|
|
377
|
+
' }',
|
|
378
|
+
" pending = '';",
|
|
379
|
+
' };',
|
|
380
|
+
' Array.prototype.slice.call(quote.childNodes).forEach((node) => {',
|
|
381
|
+
" if (node.nodeType === 1 && node.tagName === 'P') {",
|
|
382
|
+
' flush();',
|
|
383
|
+
' lines.push(node.innerHTML);',
|
|
384
|
+
' return;',
|
|
385
|
+
' }',
|
|
386
|
+
' pending += serializeRichTextNode(node);',
|
|
387
|
+
' });',
|
|
388
|
+
' flush();',
|
|
389
|
+
" return lines.map((line) => `<blockquote>${line}</blockquote>`).join('');",
|
|
390
|
+
'}',
|
|
391
|
+
'',
|
|
392
|
+
'export function protectedKindForElement(element) {',
|
|
393
|
+
' const tag = element.tagName;',
|
|
394
|
+
" if (tag === 'TABLE') {",
|
|
395
|
+
" return 'table';",
|
|
396
|
+
' }',
|
|
397
|
+
" if (tag === 'PRE') {",
|
|
398
|
+
" return 'code';",
|
|
399
|
+
' }',
|
|
400
|
+
" if (tag === 'ASIDE' && hasClass(element, CALLOUT_CLASS)) {",
|
|
401
|
+
" return 'callout';",
|
|
402
|
+
' }',
|
|
403
|
+
" if (tag === 'UL' || tag === 'OL') {",
|
|
404
|
+
" return 'list';",
|
|
405
|
+
' }',
|
|
406
|
+
" if (tag === 'BLOCKQUOTE') {",
|
|
407
|
+
" return 'quote';",
|
|
408
|
+
' }',
|
|
409
|
+
" return 'html';",
|
|
410
|
+
'}',
|
|
411
|
+
'',
|
|
412
|
+
'export function toEditorHtml(storedHtml) {',
|
|
413
|
+
' const body = parseRichTextFragment(normalizeLegacyRichTextHtml(storedHtml));',
|
|
414
|
+
" let html = '';",
|
|
415
|
+
' Array.prototype.slice.call(body.childNodes).forEach((node) => {',
|
|
416
|
+
' if (node.nodeType === 3) {',
|
|
417
|
+
" if (/\\S/.test(node.nodeValue || '')) {",
|
|
418
|
+
" html += '<p>' + escapeRichTextText(node.nodeValue || '') + '</p>';",
|
|
419
|
+
' }',
|
|
420
|
+
' return;',
|
|
421
|
+
' }',
|
|
422
|
+
' if (node.nodeType !== 1) {',
|
|
423
|
+
' return;',
|
|
424
|
+
' }',
|
|
425
|
+
' const element = node;',
|
|
426
|
+
' const tag = element.tagName;',
|
|
427
|
+
" if (tag === 'P' || /^H[1-6]$/.test(tag)) {",
|
|
428
|
+
' html += element.outerHTML;',
|
|
429
|
+
' return;',
|
|
430
|
+
' }',
|
|
431
|
+
' if (isRichTextInlineNode(element)) {',
|
|
432
|
+
" html += '<p>' + element.outerHTML + '</p>';",
|
|
433
|
+
' return;',
|
|
434
|
+
' }',
|
|
435
|
+
" if (tag === 'DIV' && hasClass(element, PROTECTED_BLOCK_CLASS)) {",
|
|
436
|
+
' html += element.outerHTML;',
|
|
437
|
+
' return;',
|
|
438
|
+
' }',
|
|
439
|
+
" if (tag === 'FIGURE' &&",
|
|
440
|
+
' (hasClass(element, RICH_TEXT_IMAGE_CLASS) || hasClass(element, RICH_TEXT_EMBED_CLASS))) {',
|
|
441
|
+
' html += element.outerHTML;',
|
|
442
|
+
' return;',
|
|
443
|
+
' }',
|
|
444
|
+
" if ((tag === 'UL' || tag === 'OL') && isQuillSimpleList(element)) {",
|
|
445
|
+
' html += flattenListForQuill(element);',
|
|
446
|
+
' return;',
|
|
447
|
+
' }',
|
|
448
|
+
" if (tag === 'BLOCKQUOTE' && isQuillSimpleBlockquote(element)) {",
|
|
449
|
+
' html += blockquoteLinesForQuill(element);',
|
|
450
|
+
' return;',
|
|
451
|
+
' }',
|
|
452
|
+
' html += buildProtectedBlockHtml(protectedKindForElement(element), element.outerHTML);',
|
|
453
|
+
' });',
|
|
454
|
+
' return html;',
|
|
455
|
+
'}',
|
|
456
|
+
'',
|
|
457
|
+
'export function fromEditorHtml(editorHtml) {',
|
|
458
|
+
' const body = parseRichTextFragment(editorHtml);',
|
|
459
|
+
' Array.prototype.slice',
|
|
460
|
+
" .call(body.querySelectorAll('.' + PROTECTED_BLOCK_CLASS))",
|
|
461
|
+
' .forEach((wrapper) => {',
|
|
462
|
+
' const parent = wrapper.parentNode;',
|
|
463
|
+
' if (!parent) {',
|
|
464
|
+
' return;',
|
|
465
|
+
' }',
|
|
466
|
+
' while (wrapper.firstChild) {',
|
|
467
|
+
' parent.insertBefore(wrapper.firstChild, wrapper);',
|
|
468
|
+
' }',
|
|
469
|
+
' parent.removeChild(wrapper);',
|
|
470
|
+
' });',
|
|
471
|
+
' const normalized = parseRichTextFragment(normalizeLegacyRichTextHtml(body.innerHTML));',
|
|
472
|
+
' unwrapSingleParagraphListItems(normalized);',
|
|
473
|
+
' wrapBareBlockquoteContent(normalized);',
|
|
474
|
+
' normalizeLinkTargets(normalized);',
|
|
475
|
+
' stripInterBlockWhitespace(normalized);',
|
|
476
|
+
' return trimEmptyEdgeParagraphs(normalized.innerHTML);',
|
|
477
|
+
'}',
|
|
478
|
+
'',
|
|
479
|
+
'export function toCanonicalRichTextHtml(html) {',
|
|
480
|
+
' return fromEditorHtml(html);',
|
|
481
|
+
'}',
|
|
482
|
+
'',
|
|
483
|
+
'export function trimEmptyEdgeParagraphs(html) {',
|
|
484
|
+
' return html',
|
|
485
|
+
" .replace(/^(?:\\s*<p>(?:<br\\s*\\/?>|\\s| )*<\\/p>)+/, '')",
|
|
486
|
+
" .replace(/(?:<p>(?:<br\\s*\\/?>|\\s| )*<\\/p>\\s*)+$/, '');",
|
|
487
|
+
'}',
|
|
488
|
+
'',
|
|
489
|
+
'export function normalizeLegacyRichTextHtml(html) {',
|
|
490
|
+
" let out = String(html || '');",
|
|
491
|
+
' out = out.replace(/<span class="ql-ui"[^>]*>(?:<\\/span>)?/g, \'\');',
|
|
492
|
+
" out = out.replace(/<(ol|ul)(\\s[^>]*)?>((?:(?!<\\/?(?:ol|ul)\\b)[\\s\\S])*)<\\/\\1>/g, (match, _tag, _attrs, inner) => inner.indexOf(QUILL_LIST_ITEM_ATTR + '=') === -1 ? match : rebuildQuillListHtml(inner));",
|
|
493
|
+
' out = out.replace(/<div class="ql-code-block-container"[^>]*>((?:\\s*<div class="ql-code-block"[^>]*>[\\s\\S]*?<\\/div>)*)\\s*<\\/div>/g, (_match, inner) => rebuildQuillCodeBlockHtml(inner));',
|
|
494
|
+
' out = out.replace(/<pre data-language="([^"]*)">\\n?([\\s\\S]*?)\\n?<\\/pre>/g, (_match, language, code) => buildCodeBlockHtml(language, code, true));',
|
|
495
|
+
' out = out.replace(/((?:<blockquote>(?:(?!<\\/?blockquote\\b)[\\s\\S])*<\\/blockquote>\\s*)+)/g, (run) => mergeBlockquoteLines(run));',
|
|
496
|
+
" out = out.replace(/(\\S)(?: | )(?=\\S)/g, '$1 ');",
|
|
497
|
+
' return out;',
|
|
498
|
+
'}',
|
|
499
|
+
'',
|
|
500
|
+
'export function rebuildQuillListHtml(innerHtml) {',
|
|
501
|
+
' const items = [];',
|
|
502
|
+
' const pattern = /<li\\b([^>]*)>([\\s\\S]*?)<\\/li>/g;',
|
|
503
|
+
' let match = pattern.exec(innerHtml);',
|
|
504
|
+
' while (match) {',
|
|
505
|
+
' const attrs = match[1];',
|
|
506
|
+
' const typeMatch = /data-list="([^"]*)"/.exec(attrs);',
|
|
507
|
+
' const indentMatch = /ql-indent-(\\d+)/.exec(attrs);',
|
|
508
|
+
' items.push({',
|
|
509
|
+
" type: typeMatch && typeMatch[1] === 'ordered' ? 'ordered' : 'bullet',",
|
|
510
|
+
' indent: indentMatch ? parseInt(indentMatch[1], 10) : 0,',
|
|
511
|
+
" html: match[2].replace(/^\\s+|\\s+$/g, ''),",
|
|
512
|
+
' });',
|
|
513
|
+
' match = pattern.exec(innerHtml);',
|
|
514
|
+
' }',
|
|
515
|
+
' if (!items.length) {',
|
|
516
|
+
" return '';",
|
|
517
|
+
' }',
|
|
518
|
+
' const render = (from, level) => {',
|
|
519
|
+
" let html = '';",
|
|
520
|
+
' let i = from;',
|
|
521
|
+
" let openType = '';",
|
|
522
|
+
' const close = () => {',
|
|
523
|
+
' if (openType) {',
|
|
524
|
+
" html += openType === 'ordered' ? '</ol>' : '</ul>';",
|
|
525
|
+
" openType = '';",
|
|
526
|
+
' }',
|
|
527
|
+
' };',
|
|
528
|
+
' while (i < items.length) {',
|
|
529
|
+
' const item = items[i];',
|
|
530
|
+
' if (item.indent < level) {',
|
|
531
|
+
' break;',
|
|
532
|
+
' }',
|
|
533
|
+
' if (item.indent > level) {',
|
|
534
|
+
' // A deeper line with nothing above it reads as this level.',
|
|
535
|
+
' item.indent = level;',
|
|
536
|
+
' }',
|
|
537
|
+
' if (openType !== item.type) {',
|
|
538
|
+
' close();',
|
|
539
|
+
' openType = item.type;',
|
|
540
|
+
" html += openType === 'ordered' ? '<ol>' : '<ul>';",
|
|
541
|
+
' }',
|
|
542
|
+
" html += '<li>' + item.html;",
|
|
543
|
+
' i += 1;',
|
|
544
|
+
' if (i < items.length && items[i].indent > level) {',
|
|
545
|
+
' const nested = render(i, level + 1);',
|
|
546
|
+
' html += nested.html;',
|
|
547
|
+
' i = nested.next;',
|
|
548
|
+
' }',
|
|
549
|
+
" html += '</li>';",
|
|
550
|
+
' }',
|
|
551
|
+
' close();',
|
|
552
|
+
' return { html, next: i };',
|
|
553
|
+
' };',
|
|
554
|
+
' return render(0, 0).html;',
|
|
555
|
+
'}',
|
|
556
|
+
'',
|
|
557
|
+
'export function rebuildQuillCodeBlockHtml(innerHtml) {',
|
|
558
|
+
' const lines = [];',
|
|
559
|
+
" let language = '';",
|
|
560
|
+
' const pattern = /<div class="ql-code-block"([^>]*)>([\\s\\S]*?)<\\/div>/g;',
|
|
561
|
+
' let match = pattern.exec(innerHtml);',
|
|
562
|
+
' while (match) {',
|
|
563
|
+
' const languageMatch = /data-language="([^"]*)"/.exec(match[1]);',
|
|
564
|
+
' if (languageMatch && !language) {',
|
|
565
|
+
' language = languageMatch[1];',
|
|
566
|
+
' }',
|
|
567
|
+
" lines.push(match[2] === '<br>' ? '' : match[2]);",
|
|
568
|
+
' match = pattern.exec(innerHtml);',
|
|
569
|
+
' }',
|
|
570
|
+
" return buildCodeBlockHtml(language, lines.join('\\n'), true);",
|
|
571
|
+
'}',
|
|
572
|
+
'',
|
|
573
|
+
'export function mergeBlockquoteLines(run) {',
|
|
574
|
+
' const lines = [];',
|
|
575
|
+
' const pattern = /<blockquote>([\\s\\S]*?)<\\/blockquote>/g;',
|
|
576
|
+
' let match = pattern.exec(run);',
|
|
577
|
+
' while (match) {',
|
|
578
|
+
' if (/<(?:p|ul|ol|div|pre|table|aside|figure|h[1-6])\\b/.test(match[1])) {',
|
|
579
|
+
' return run;',
|
|
580
|
+
' }',
|
|
581
|
+
' lines.push(match[1]);',
|
|
582
|
+
' match = pattern.exec(run);',
|
|
583
|
+
' }',
|
|
584
|
+
" return '<blockquote>' + lines.map((line) => '<p>' + line + '</p>').join('') + '</blockquote>';",
|
|
585
|
+
'}',
|
|
586
|
+
'',
|
|
587
|
+
].join('\n');
|
|
588
|
+
//# sourceMappingURL=rich-text-content-runtime-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-text-content-runtime-source.js","sourceRoot":"","sources":["../../../src/utils/rich-text-content-runtime-source.ts"],"names":[],"mappings":"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"}
|