@pega/cosmos-react-rte 9.0.0-build.9.8 → 9.0.0

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 (191) hide show
  1. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts +4 -2
  2. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts.map +1 -1
  3. package/lib/components/DynamicContentEditor/DynamicContentEditor.js +64 -59
  4. package/lib/components/DynamicContentEditor/DynamicContentEditor.js.map +1 -1
  5. package/lib/components/Editor/Editor.context.d.ts +6 -6
  6. package/lib/components/Editor/Editor.context.d.ts.map +1 -1
  7. package/lib/components/Editor/Editor.context.js +1 -1
  8. package/lib/components/Editor/Editor.context.js.map +1 -1
  9. package/lib/components/Editor/Editor.d.ts +1 -10
  10. package/lib/components/Editor/Editor.d.ts.map +1 -1
  11. package/lib/components/Editor/Editor.js +301 -490
  12. package/lib/components/Editor/Editor.js.map +1 -1
  13. package/lib/components/Editor/Editor.styles.d.ts +37 -7
  14. package/lib/components/Editor/Editor.styles.d.ts.map +1 -1
  15. package/lib/components/Editor/Editor.styles.js +60 -30
  16. package/lib/components/Editor/Editor.styles.js.map +1 -1
  17. package/lib/components/Editor/Editor.test-ids.d.ts +2 -1
  18. package/lib/components/Editor/Editor.test-ids.d.ts.map +1 -1
  19. package/lib/components/Editor/Editor.test-ids.js +2 -0
  20. package/lib/components/Editor/Editor.test-ids.js.map +1 -1
  21. package/lib/components/Editor/Editor.types.d.ts +34 -14
  22. package/lib/components/Editor/Editor.types.d.ts.map +1 -1
  23. package/lib/components/Editor/Editor.types.js.map +1 -1
  24. package/lib/components/Editor/IframeTiptapEditor.d.ts +30 -0
  25. package/lib/components/Editor/IframeTiptapEditor.d.ts.map +1 -0
  26. package/lib/components/Editor/IframeTiptapEditor.js +695 -0
  27. package/lib/components/Editor/IframeTiptapEditor.js.map +1 -0
  28. package/lib/components/Editor/ImageActionButtons.d.ts +20 -0
  29. package/lib/components/Editor/ImageActionButtons.d.ts.map +1 -0
  30. package/lib/components/Editor/ImageActionButtons.js +84 -0
  31. package/lib/components/Editor/ImageActionButtons.js.map +1 -0
  32. package/lib/components/Editor/ImageEditDialog.d.ts +17 -0
  33. package/lib/components/Editor/ImageEditDialog.d.ts.map +1 -0
  34. package/lib/components/Editor/ImageEditDialog.js +90 -0
  35. package/lib/components/Editor/ImageEditDialog.js.map +1 -0
  36. package/lib/components/Editor/TableCellMenu.d.ts +35 -0
  37. package/lib/components/Editor/TableCellMenu.d.ts.map +1 -0
  38. package/lib/components/Editor/TableCellMenu.js +120 -0
  39. package/lib/components/Editor/TableCellMenu.js.map +1 -0
  40. package/lib/components/Editor/Toolbar/AIRewriteButton.d.ts +17 -0
  41. package/lib/components/Editor/Toolbar/AIRewriteButton.d.ts.map +1 -0
  42. package/lib/components/Editor/Toolbar/AIRewriteButton.js +79 -0
  43. package/lib/components/Editor/Toolbar/AIRewriteButton.js.map +1 -0
  44. package/lib/components/Editor/Toolbar/AlignmentSelect.d.ts +8 -0
  45. package/lib/components/Editor/Toolbar/AlignmentSelect.d.ts.map +1 -0
  46. package/lib/components/Editor/Toolbar/AlignmentSelect.js +137 -0
  47. package/lib/components/Editor/Toolbar/AlignmentSelect.js.map +1 -0
  48. package/lib/components/Editor/Toolbar/AnchorButton.d.ts +3 -4
  49. package/lib/components/Editor/Toolbar/AnchorButton.d.ts.map +1 -1
  50. package/lib/components/Editor/Toolbar/AnchorButton.js +156 -82
  51. package/lib/components/Editor/Toolbar/AnchorButton.js.map +1 -1
  52. package/lib/components/Editor/Toolbar/ColorPickerButton.d.ts +9 -0
  53. package/lib/components/Editor/Toolbar/ColorPickerButton.d.ts.map +1 -0
  54. package/lib/components/Editor/Toolbar/ColorPickerButton.js +190 -0
  55. package/lib/components/Editor/Toolbar/ColorPickerButton.js.map +1 -0
  56. package/lib/components/Editor/Toolbar/FontFamilySelect.d.ts +8 -0
  57. package/lib/components/Editor/Toolbar/FontFamilySelect.d.ts.map +1 -0
  58. package/lib/components/Editor/Toolbar/FontFamilySelect.js +150 -0
  59. package/lib/components/Editor/Toolbar/FontFamilySelect.js.map +1 -0
  60. package/lib/components/Editor/Toolbar/FontSizeSelect.d.ts +8 -0
  61. package/lib/components/Editor/Toolbar/FontSizeSelect.d.ts.map +1 -0
  62. package/lib/components/Editor/Toolbar/FontSizeSelect.js +145 -0
  63. package/lib/components/Editor/Toolbar/FontSizeSelect.js.map +1 -0
  64. package/lib/components/Editor/Toolbar/ImageButton.d.ts +5 -5
  65. package/lib/components/Editor/Toolbar/ImageButton.d.ts.map +1 -1
  66. package/lib/components/Editor/Toolbar/ImageButton.js +131 -18
  67. package/lib/components/Editor/Toolbar/ImageButton.js.map +1 -1
  68. package/lib/components/Editor/Toolbar/SourceCodeButton.d.ts +8 -0
  69. package/lib/components/Editor/Toolbar/SourceCodeButton.d.ts.map +1 -0
  70. package/lib/components/Editor/Toolbar/SourceCodeButton.js +49 -0
  71. package/lib/components/Editor/Toolbar/SourceCodeButton.js.map +1 -0
  72. package/lib/components/Editor/Toolbar/TableButton.d.ts +8 -0
  73. package/lib/components/Editor/Toolbar/TableButton.d.ts.map +1 -0
  74. package/lib/components/Editor/Toolbar/TableButton.js +291 -0
  75. package/lib/components/Editor/Toolbar/TableButton.js.map +1 -0
  76. package/lib/components/Editor/Toolbar/TextSelect.d.ts +4 -5
  77. package/lib/components/Editor/Toolbar/TextSelect.d.ts.map +1 -1
  78. package/lib/components/Editor/Toolbar/TextSelect.js +61 -30
  79. package/lib/components/Editor/Toolbar/TextSelect.js.map +1 -1
  80. package/lib/components/Editor/Toolbar/Toolbar.d.ts +17 -6
  81. package/lib/components/Editor/Toolbar/Toolbar.d.ts.map +1 -1
  82. package/lib/components/Editor/Toolbar/Toolbar.js +169 -47
  83. package/lib/components/Editor/Toolbar/Toolbar.js.map +1 -1
  84. package/lib/components/Editor/Toolbar/Toolbar.test-ids.d.ts +2 -2
  85. package/lib/components/Editor/Toolbar/Toolbar.test-ids.d.ts.map +1 -1
  86. package/lib/components/Editor/Toolbar/Toolbar.test-ids.js +17 -1
  87. package/lib/components/Editor/Toolbar/Toolbar.test-ids.js.map +1 -1
  88. package/lib/components/Editor/Toolbar/WordCount.d.ts +8 -0
  89. package/lib/components/Editor/Toolbar/WordCount.d.ts.map +1 -0
  90. package/lib/components/Editor/Toolbar/WordCount.js +31 -0
  91. package/lib/components/Editor/Toolbar/WordCount.js.map +1 -0
  92. package/lib/components/Editor/extensions/FontSize.d.ts +21 -0
  93. package/lib/components/Editor/extensions/FontSize.d.ts.map +1 -0
  94. package/lib/components/Editor/extensions/FontSize.js +42 -0
  95. package/lib/components/Editor/extensions/FontSize.js.map +1 -0
  96. package/lib/components/Editor/extensions/PreserveDiv.d.ts +13 -0
  97. package/lib/components/Editor/extensions/PreserveDiv.d.ts.map +1 -0
  98. package/lib/components/Editor/extensions/PreserveDiv.js +73 -0
  99. package/lib/components/Editor/extensions/PreserveDiv.js.map +1 -0
  100. package/lib/components/Editor/extensions/TableCellSelection.d.ts +4 -0
  101. package/lib/components/Editor/extensions/TableCellSelection.d.ts.map +1 -0
  102. package/lib/components/Editor/extensions/TableCellSelection.js +53 -0
  103. package/lib/components/Editor/extensions/TableCellSelection.js.map +1 -0
  104. package/lib/components/Editor/extensions/TextIndent.d.ts +22 -0
  105. package/lib/components/Editor/extensions/TextIndent.d.ts.map +1 -0
  106. package/lib/components/Editor/extensions/TextIndent.js +137 -0
  107. package/lib/components/Editor/extensions/TextIndent.js.map +1 -0
  108. package/lib/components/Editor/hooks/useCloseOnEditorClick.d.ts +5 -0
  109. package/lib/components/Editor/hooks/useCloseOnEditorClick.d.ts.map +1 -0
  110. package/lib/components/Editor/hooks/useCloseOnEditorClick.js +18 -0
  111. package/lib/components/Editor/hooks/useCloseOnEditorClick.js.map +1 -0
  112. package/lib/components/Editor/hooks/useEscapeKey.d.ts +4 -0
  113. package/lib/components/Editor/hooks/useEscapeKey.d.ts.map +1 -0
  114. package/lib/components/Editor/hooks/useEscapeKey.js +24 -0
  115. package/lib/components/Editor/hooks/useEscapeKey.js.map +1 -0
  116. package/lib/components/Editor/hooks/useIframeSetup.d.ts +54 -0
  117. package/lib/components/Editor/hooks/useIframeSetup.d.ts.map +1 -0
  118. package/lib/components/Editor/hooks/useIframeSetup.js +284 -0
  119. package/lib/components/Editor/hooks/useIframeSetup.js.map +1 -0
  120. package/lib/components/Editor/hooks/useImageActions.d.ts +19 -0
  121. package/lib/components/Editor/hooks/useImageActions.d.ts.map +1 -0
  122. package/lib/components/Editor/hooks/useImageActions.js +198 -0
  123. package/lib/components/Editor/hooks/useImageActions.js.map +1 -0
  124. package/lib/components/Editor/hooks/useTableCellMenu.d.ts +22 -0
  125. package/lib/components/Editor/hooks/useTableCellMenu.d.ts.map +1 -0
  126. package/lib/components/Editor/hooks/useTableCellMenu.js +120 -0
  127. package/lib/components/Editor/hooks/useTableCellMenu.js.map +1 -0
  128. package/lib/components/Editor/iframeContentStyles.d.ts +10 -0
  129. package/lib/components/Editor/iframeContentStyles.d.ts.map +1 -0
  130. package/lib/components/Editor/iframeContentStyles.js +162 -0
  131. package/lib/components/Editor/iframeContentStyles.js.map +1 -0
  132. package/lib/components/Editor/index.d.ts +2 -0
  133. package/lib/components/Editor/index.d.ts.map +1 -1
  134. package/lib/components/Editor/index.js +1 -0
  135. package/lib/components/Editor/index.js.map +1 -1
  136. package/lib/components/Editor/sanitize.d.ts +3 -0
  137. package/lib/components/Editor/sanitize.d.ts.map +1 -0
  138. package/lib/components/Editor/sanitize.js +11 -0
  139. package/lib/components/Editor/sanitize.js.map +1 -0
  140. package/lib/components/Editor/utils/htmlPlaceholder.d.ts +69 -0
  141. package/lib/components/Editor/utils/htmlPlaceholder.d.ts.map +1 -0
  142. package/lib/components/Editor/utils/htmlPlaceholder.js +154 -0
  143. package/lib/components/Editor/utils/htmlPlaceholder.js.map +1 -0
  144. package/lib/components/RichTextEditor/DecoratorComponents/Table.d.ts +6 -4
  145. package/lib/components/RichTextEditor/DecoratorComponents/Table.d.ts.map +1 -1
  146. package/lib/components/RichTextEditor/DecoratorComponents/Table.js +10 -8
  147. package/lib/components/RichTextEditor/DecoratorComponents/Table.js.map +1 -1
  148. package/lib/components/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  149. package/lib/components/RichTextEditor/RichTextEditor.js +15 -2
  150. package/lib/components/RichTextEditor/RichTextEditor.js.map +1 -1
  151. package/lib/components/RichTextEditor/RichTextEditor.styles.d.ts +5 -5
  152. package/lib/components/RichTextEditor/RichTextEditor.styles.d.ts.map +1 -1
  153. package/lib/components/RichTextEditor/RichTextEditor.styles.js +3 -5
  154. package/lib/components/RichTextEditor/RichTextEditor.styles.js.map +1 -1
  155. package/lib/components/RichTextEditor/RichTextEditor.types.d.ts +5 -0
  156. package/lib/components/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
  157. package/lib/components/RichTextEditor/RichTextEditor.types.js.map +1 -1
  158. package/lib/components/RichTextEditor/RichTextViewer.d.ts.map +1 -1
  159. package/lib/components/RichTextEditor/RichTextViewer.js +9 -2
  160. package/lib/components/RichTextEditor/RichTextViewer.js.map +1 -1
  161. package/lib/components/RichTextEditor/Toolbar/Toolbar.js +1 -1
  162. package/lib/components/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  163. package/lib/components/RichTextEditor/Toolbar/Toolbar.types.d.ts +4 -4
  164. package/lib/components/RichTextEditor/Toolbar/Toolbar.types.d.ts.map +1 -1
  165. package/lib/components/RichTextEditor/Toolbar/Toolbar.types.js.map +1 -1
  166. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.d.ts.map +1 -1
  167. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.js +41 -26
  168. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  169. package/lib/components/RichTextEditor/utils/htmlConverter.d.ts +2 -0
  170. package/lib/components/RichTextEditor/utils/htmlConverter.d.ts.map +1 -1
  171. package/lib/components/RichTextEditor/utils/htmlConverter.js +12 -0
  172. package/lib/components/RichTextEditor/utils/htmlConverter.js.map +1 -1
  173. package/lib/components/RichTextEditor/utils/interactionRenderer.d.ts.map +1 -1
  174. package/lib/components/RichTextEditor/utils/interactionRenderer.js +20 -19
  175. package/lib/components/RichTextEditor/utils/interactionRenderer.js.map +1 -1
  176. package/lib/components/RichTextEditor/utils/markdownConverter.d.ts.map +1 -1
  177. package/lib/components/RichTextEditor/utils/markdownConverter.js +131 -30
  178. package/lib/components/RichTextEditor/utils/markdownConverter.js.map +1 -1
  179. package/lib/components/RichTextEditor/utils/renderers.d.ts +5 -3
  180. package/lib/components/RichTextEditor/utils/renderers.d.ts.map +1 -1
  181. package/lib/components/RichTextEditor/utils/renderers.js +62 -34
  182. package/lib/components/RichTextEditor/utils/renderers.js.map +1 -1
  183. package/lib/components/RichTextEditor/utils/slateConverter.d.ts +4 -3
  184. package/lib/components/RichTextEditor/utils/slateConverter.d.ts.map +1 -1
  185. package/lib/components/RichTextEditor/utils/slateConverter.js +86 -38
  186. package/lib/components/RichTextEditor/utils/slateConverter.js.map +1 -1
  187. package/package.json +30 -8
  188. package/lib/components/Editor/ImageEditor.d.ts +0 -10
  189. package/lib/components/Editor/ImageEditor.d.ts.map +0 -1
  190. package/lib/components/Editor/ImageEditor.js +0 -292
  191. package/lib/components/Editor/ImageEditor.js.map +0 -1
@@ -2,17 +2,116 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { marked } from 'marked';
3
3
  import { hasProp } from '@pega/cosmos-react-core';
4
4
  import parseTextToCustomSlateNodes from './interactionRenderer';
5
+ const getTableColumnAlignment = (alignment) => {
6
+ if (alignment === 'left' || alignment === 'center' || alignment === 'right') {
7
+ return alignment;
8
+ }
9
+ return undefined;
10
+ };
11
+ const applyFormatting = (children, token, formatKey) => {
12
+ if (children.length === 1 && 'type' in children[0] && children[0].type === 'custom') {
13
+ return {
14
+ ...children[0],
15
+ [formatKey]: true
16
+ };
17
+ }
18
+ if (children.length > 1) {
19
+ return {
20
+ type: 'text',
21
+ children: children.map(child => ({
22
+ ...child,
23
+ [formatKey]: true
24
+ }))
25
+ };
26
+ }
27
+ const baseNode = children.length > 0 && !('type' in children[0])
28
+ ? children[0]
29
+ : { text: 'text' in token ? token.text || '' : '' };
30
+ return {
31
+ ...baseNode,
32
+ [formatKey]: true
33
+ };
34
+ };
35
+ const MARKED_TOKEN_TYPES = [
36
+ 'blockquote',
37
+ 'br',
38
+ 'code',
39
+ 'codespan',
40
+ 'def',
41
+ 'del',
42
+ 'em',
43
+ 'escape',
44
+ 'heading',
45
+ 'hr',
46
+ 'html',
47
+ 'image',
48
+ 'link',
49
+ 'list',
50
+ 'list_item',
51
+ 'paragraph',
52
+ 'space',
53
+ 'strong',
54
+ 'table',
55
+ 'text'
56
+ ];
57
+ const MARKED_TOKEN_TYPE_SET = new Set(MARKED_TOKEN_TYPES);
58
+ const isMarkedToken = (token) => MARKED_TOKEN_TYPE_SET.has(token.type);
59
+ const getCustomComponentFromMarkdownMap = (token, markdownMap) => {
60
+ return markdownMap?.[token.type]?.(token);
61
+ };
62
+ /** Flattens inline text wrappers so table cells get a flat list of Text nodes. */
63
+ const flattenInlineNodes = (nodes) => nodes.flatMap(node => 'type' in node && node.type === 'text' && 'children' in node
64
+ ? flattenInlineNodes(node.children)
65
+ : [node]);
66
+ const markDownToSlate = (tokens, interactionRenderers, markdownMap, convertTokenToSlateNode) => {
67
+ return tokens.map(token => {
68
+ return convertTokenToSlateNode(token, interactionRenderers, markdownMap);
69
+ });
70
+ };
71
+ const convertTableCellToSlateNode = (cell, convertTokenToSlateNode, interactionRenderers, markdownMap, align, isHeaderCell) => {
72
+ const children = cell.tokens?.length
73
+ ? flattenInlineNodes(markDownToSlate(cell.tokens.filter(isMarkedToken), interactionRenderers, markdownMap, convertTokenToSlateNode))
74
+ : parseTextToCustomSlateNodes(cell.text || '', interactionRenderers);
75
+ const tableCell = {
76
+ type: 'table-cell',
77
+ ...(align ? { align } : {}),
78
+ ...(isHeaderCell ? { isHeaderCell: true } : {}),
79
+ children: children.length > 0 ? children : [{ text: '' }]
80
+ };
81
+ return tableCell;
82
+ };
83
+ const convertTableRowsToSlateNodes = (rows, convertTokenToSlateNode, interactionRenderers, markdownMap, alignments, isHeaderCell) => {
84
+ return rows.map(row => {
85
+ return {
86
+ type: 'table-row',
87
+ children: row.map((cell, columnIndex) => {
88
+ return convertTableCellToSlateNode(cell, convertTokenToSlateNode, interactionRenderers, markdownMap, getTableColumnAlignment(alignments?.[columnIndex]), isHeaderCell);
89
+ })
90
+ };
91
+ });
92
+ };
5
93
  export const getNode = (token, interactionRenderers, markdownMap) => {
6
94
  if (!hasProp(token, 'type') || token.type === 'def')
7
95
  return { type: 'paragraph', children: [{ text: '' }] };
96
+ if (token.type === 'html') {
97
+ if (/^<br\s*\/?>$/i.test(token.raw.trim())) {
98
+ return { text: '\n' };
99
+ }
100
+ const parsed = parseTextToCustomSlateNodes(token.raw, interactionRenderers);
101
+ if (parsed.length === 1) {
102
+ return parsed[0];
103
+ }
104
+ return {
105
+ type: 'paragraph',
106
+ children: parsed
107
+ };
108
+ }
8
109
  let children;
9
110
  if (hasProp(token, 'tokens')) {
10
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
11
- children = markDownToSlate(token.tokens || [], interactionRenderers, markdownMap);
111
+ children = markDownToSlate(token.tokens || [], interactionRenderers, markdownMap, getNode);
12
112
  }
13
113
  else if (hasProp(token, 'items')) {
14
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
15
- children = markDownToSlate(token.items, interactionRenderers, markdownMap);
114
+ children = markDownToSlate(token.items, interactionRenderers, markdownMap, getNode);
16
115
  }
17
116
  else {
18
117
  let mdText = '';
@@ -23,7 +122,7 @@ export const getNode = (token, interactionRenderers, markdownMap) => {
23
122
  children = parseTextToCustomSlateNodes(mdText, interactionRenderers);
24
123
  }
25
124
  if (markdownMap?.[token.type]) {
26
- const CustomComponent = markdownMap[token.type](token);
125
+ const CustomComponent = getCustomComponentFromMarkdownMap(token, markdownMap);
27
126
  if (CustomComponent)
28
127
  return {
29
128
  type: 'override',
@@ -59,28 +158,16 @@ export const getNode = (token, interactionRenderers, markdownMap) => {
59
158
  };
60
159
  }
61
160
  case 'em': {
62
- return {
63
- italic: true,
64
- text: token.text || ''
65
- };
161
+ return applyFormatting(children, token, 'italic');
66
162
  }
67
163
  case 'strong': {
68
- return {
69
- bold: true,
70
- text: token.text || ''
71
- };
164
+ return applyFormatting(children, token, 'bold');
72
165
  }
73
166
  case 'del': {
74
- return {
75
- 'line-through': true,
76
- text: token.text || ''
77
- };
167
+ return applyFormatting(children, token, 'line-through');
78
168
  }
79
169
  case 'codespan': {
80
- return {
81
- code: true,
82
- text: token.text || ''
83
- };
170
+ return applyFormatting(children, token, 'code');
84
171
  }
85
172
  case 'list': {
86
173
  if (token.ordered) {
@@ -108,13 +195,32 @@ export const getNode = (token, interactionRenderers, markdownMap) => {
108
195
  };
109
196
  }
110
197
  case 'code': {
111
- const [, language] = /^```([^\n]+)/.exec(token.raw) ?? [];
112
198
  return {
113
199
  type: 'code-block',
114
- language,
200
+ language: token.lang,
115
201
  children: [{ text: token.text }]
116
202
  };
117
203
  }
204
+ case 'table': {
205
+ const headerRows = token.header?.length ? [token.header] : [];
206
+ const bodyRows = token.rows || [];
207
+ const headerSlateRows = convertTableRowsToSlateNodes(headerRows, getNode, interactionRenderers, markdownMap, token.align, true);
208
+ const bodySlateRows = convertTableRowsToSlateNodes(bodyRows, getNode, interactionRenderers, markdownMap, token.align);
209
+ const tableBody = {
210
+ type: 'table-body',
211
+ children: bodySlateRows
212
+ };
213
+ const tableChildren = headerSlateRows.length > 0
214
+ ? [{ type: 'table-head', children: headerSlateRows }, tableBody]
215
+ : [tableBody];
216
+ return {
217
+ type: 'table',
218
+ children: tableChildren
219
+ };
220
+ }
221
+ case 'br': {
222
+ return { text: '\n' };
223
+ }
118
224
  case 'hr': {
119
225
  return {
120
226
  type: 'horizontal-rule',
@@ -137,11 +243,6 @@ export const getNode = (token, interactionRenderers, markdownMap) => {
137
243
  }
138
244
  }
139
245
  };
140
- const markDownToSlate = (tokens, interactionRenderers, markdownMap) => {
141
- return tokens.map(token => {
142
- return getNode(token, interactionRenderers, markdownMap);
143
- });
144
- };
145
246
  export const convertMarkdownForEditor = (md = '', searchRenderers) => {
146
247
  return [
147
248
  {
@@ -153,9 +254,9 @@ export const convertMarkdownForEditor = (md = '', searchRenderers) => {
153
254
  // Converts markdown into Slate compatible nodes, also takes regex used
154
255
  // in Feed Component to pass them down to custom elements
155
256
  const convertMarkdown = (md, interactionRenderers, markdownMap) => {
156
- const lexer = new marked.Lexer({ gfm: false });
257
+ const lexer = new marked.Lexer({ gfm: true });
157
258
  const output = lexer.lex(md);
158
- return markDownToSlate(output, interactionRenderers, markdownMap);
259
+ return markDownToSlate(output, interactionRenderers, markdownMap, getNode);
159
260
  };
160
261
  export default convertMarkdown;
161
262
  //# sourceMappingURL=markdownConverter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PegaCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\nimport type { MarkedToken } from 'marked';\nimport type { FC } from 'react';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\nexport const getNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): Element | Text => {\n if (!hasProp(token, 'type') || token.type === 'def')\n return { type: 'paragraph', children: [{ text: '' }] };\n\n let children;\n\n if (hasProp(token, 'tokens')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(\n (token.tokens as MarkedToken[]) || [],\n interactionRenderers,\n markdownMap\n );\n } else if (hasProp(token, 'items')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(token.items, interactionRenderers, markdownMap);\n } else {\n let mdText = '';\n\n if (token.type === 'text') mdText = token.raw;\n else if (hasProp(token, 'text')) mdText = token.text;\n\n children = parseTextToCustomSlateNodes(mdText, interactionRenderers);\n }\n\n if (markdownMap?.[token.type]) {\n const CustomComponent = (\n markdownMap[token.type] as (token: MarkedToken) => FC<{ token: MarkedToken }> | undefined\n )(token);\n if (CustomComponent)\n return {\n type: 'override',\n component: <CustomComponent token={token} />,\n children: [{ text: '' }]\n };\n }\n\n if (!children.length) {\n return {\n type: 'paragraph',\n children: [{ text: token.raw }]\n };\n }\n\n switch (token.type) {\n case 'paragraph': {\n return {\n type: token.type,\n children\n };\n }\n case 'heading': {\n return {\n type:\n token.depth && token.depth <= 4\n ? (`heading-${token.depth}` as `heading-${1 | 2 | 3 | 4}`)\n : 'heading-4',\n children\n };\n }\n case 'link': {\n return {\n href: token.href,\n text: token.text || ''\n };\n }\n case 'em': {\n return {\n italic: true,\n text: token.text || ''\n };\n }\n case 'strong': {\n return {\n bold: true,\n text: token.text || ''\n };\n }\n case 'del': {\n return {\n 'line-through': true,\n text: token.text || ''\n };\n }\n case 'codespan': {\n return {\n code: true,\n text: token.text || ''\n };\n }\n case 'list': {\n if (token.ordered) {\n return {\n type: 'ordered-list',\n start: typeof token.start === 'number' ? token.start : 1,\n children: children as PegaCustom.ListItemElement[]\n };\n }\n\n return {\n type: 'unordered-list',\n children: children as PegaCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\n };\n }\n case 'blockquote': {\n return {\n type: 'block-quote',\n children\n };\n }\n case 'code': {\n const [, language] = /^```([^\\n]+)/.exec(token.raw) ?? [];\n return {\n type: 'code-block',\n language,\n children: [{ text: token.text }]\n };\n }\n case 'hr': {\n return {\n type: 'horizontal-rule',\n children: [{ text: '' }]\n };\n }\n case 'image': {\n return {\n type: 'image',\n alt: token.text,\n src: token.href,\n children: [{ text: '' }]\n };\n }\n default: {\n return {\n type: token.type,\n children\n } as Element;\n }\n }\n};\n\nconst markDownToSlate = (\n tokens: MarkedToken[],\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n return tokens.map(token => {\n return getNode(token, interactionRenderers, markdownMap);\n });\n};\n\nexport const convertMarkdownForEditor = (\n md = '',\n searchRenderers?: InteractionRenderers[]\n): (Element | Text)[] => {\n return [\n {\n type: 'paragraph',\n children: parseTextToCustomSlateNodes(md, searchRenderers)\n }\n ];\n};\n\n// Converts markdown into Slate compatible nodes, also takes regex used\n// in Feed Component to pass them down to custom elements\nconst convertMarkdown = (\n md: string,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n const lexer = new marked.Lexer({ gfm: false });\n const output = lexer.lex(md) as MarkedToken[];\n return markDownToSlate(output, interactionRenderers, markdownMap);\n};\n\nexport default convertMarkdown;\n"]}
1
+ {"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PegaCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\nimport type { MarkedToken, Tokens } from 'marked';\nimport type { ComponentType } from 'react';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { TokenMap, InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\ntype TableColumnAlignment = 'left' | 'center' | 'right';\n\ntype MarkedTokenToSlateNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n) => Element | Text;\n\nconst getTableColumnAlignment = (\n alignment: Tokens.Table['align'][number] | undefined\n): TableColumnAlignment | undefined => {\n if (alignment === 'left' || alignment === 'center' || alignment === 'right') {\n return alignment;\n }\n\n return undefined;\n};\n\nconst applyFormatting = (\n children: (Element | Text)[],\n token: MarkedToken,\n formatKey: 'italic' | 'bold' | 'code' | 'line-through'\n): Element | Text => {\n if (children.length === 1 && 'type' in children[0] && children[0].type === 'custom') {\n return {\n ...children[0],\n [formatKey]: true\n };\n }\n\n if (children.length > 1) {\n return {\n type: 'text',\n children: children.map(child => ({\n ...child,\n [formatKey]: true\n }))\n };\n }\n\n const baseNode =\n children.length > 0 && !('type' in children[0])\n ? children[0]\n : { text: 'text' in token ? token.text || '' : '' };\n\n return {\n ...baseNode,\n [formatKey]: true\n };\n};\n\nconst MARKED_TOKEN_TYPES = [\n 'blockquote',\n 'br',\n 'code',\n 'codespan',\n 'def',\n 'del',\n 'em',\n 'escape',\n 'heading',\n 'hr',\n 'html',\n 'image',\n 'link',\n 'list',\n 'list_item',\n 'paragraph',\n 'space',\n 'strong',\n 'table',\n 'text'\n] as const satisfies readonly MarkedToken['type'][];\nconst MARKED_TOKEN_TYPE_SET: ReadonlySet<string> = new Set(MARKED_TOKEN_TYPES);\n\nconst isMarkedToken = (token: MarkedToken | Tokens.Generic): token is MarkedToken =>\n MARKED_TOKEN_TYPE_SET.has(token.type);\n\nconst getCustomComponentFromMarkdownMap = <K extends keyof TokenMap>(\n token: TokenMap[K],\n markdownMap?: RichTextViewerProps['markdownMap']\n): ComponentType<{ token: TokenMap[K] }> | undefined => {\n return markdownMap?.[token.type]?.(token);\n};\n\n/** Flattens inline text wrappers so table cells get a flat list of Text nodes. */\nconst flattenInlineNodes = (nodes: (Element | Text)[]): (Element | Text)[] =>\n nodes.flatMap(node =>\n 'type' in node && node.type === 'text' && 'children' in node\n ? flattenInlineNodes(node.children)\n : [node]\n );\n\nconst markDownToSlate = (\n tokens: MarkedToken[],\n interactionRenderers: InteractionRenderers[] | undefined,\n markdownMap: RichTextViewerProps['markdownMap'] | undefined,\n convertTokenToSlateNode: MarkedTokenToSlateNode\n): (Element | Text)[] => {\n return tokens.map(token => {\n return convertTokenToSlateNode(token, interactionRenderers, markdownMap);\n });\n};\n\nconst convertTableCellToSlateNode = (\n cell: Tokens.TableCell,\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n align?: TableColumnAlignment,\n isHeaderCell?: boolean\n): PegaCustom.TableCellElement => {\n const children = cell.tokens?.length\n ? flattenInlineNodes(\n markDownToSlate(\n cell.tokens.filter(isMarkedToken),\n interactionRenderers,\n markdownMap,\n convertTokenToSlateNode\n )\n )\n : parseTextToCustomSlateNodes(cell.text || '', interactionRenderers);\n\n const tableCell: PegaCustom.TableCellElement = {\n type: 'table-cell',\n ...(align ? { align } : {}),\n ...(isHeaderCell ? { isHeaderCell: true } : {}),\n children: children.length > 0 ? children : [{ text: '' }]\n };\n\n return tableCell;\n};\n\nconst convertTableRowsToSlateNodes = (\n rows: Tokens.TableCell[][],\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n alignments?: Tokens.Table['align'],\n isHeaderCell?: boolean\n): PegaCustom.TableRowElement[] => {\n return rows.map(row => {\n return {\n type: 'table-row',\n children: row.map((cell, columnIndex) => {\n return convertTableCellToSlateNode(\n cell,\n convertTokenToSlateNode,\n interactionRenderers,\n markdownMap,\n getTableColumnAlignment(alignments?.[columnIndex]),\n isHeaderCell\n );\n })\n };\n });\n};\n\nexport const getNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): Element | Text => {\n if (!hasProp(token, 'type') || token.type === 'def')\n return { type: 'paragraph', children: [{ text: '' }] };\n\n if (token.type === 'html') {\n if (/^<br\\s*\\/?>$/i.test(token.raw.trim())) {\n return { text: '\\n' };\n }\n\n const parsed = parseTextToCustomSlateNodes(token.raw, interactionRenderers);\n if (parsed.length === 1) {\n return parsed[0];\n }\n return {\n type: 'paragraph',\n children: parsed\n };\n }\n\n let children: (Element | Text)[];\n\n if (hasProp(token, 'tokens')) {\n children = markDownToSlate(\n (token.tokens as MarkedToken[]) || [],\n interactionRenderers,\n markdownMap,\n getNode\n );\n } else if (hasProp(token, 'items')) {\n children = markDownToSlate(token.items, interactionRenderers, markdownMap, getNode);\n } else {\n let mdText = '';\n\n if (token.type === 'text') mdText = token.raw;\n else if (hasProp(token, 'text')) mdText = token.text;\n\n children = parseTextToCustomSlateNodes(mdText, interactionRenderers);\n }\n\n if (markdownMap?.[token.type]) {\n const CustomComponent = getCustomComponentFromMarkdownMap(token, markdownMap);\n if (CustomComponent)\n return {\n type: 'override',\n component: <CustomComponent token={token} />,\n children: [{ text: '' }]\n };\n }\n\n if (!children.length) {\n return {\n type: 'paragraph',\n children: [{ text: token.raw }]\n };\n }\n\n switch (token.type) {\n case 'paragraph': {\n return {\n type: token.type,\n children\n };\n }\n case 'heading': {\n return {\n type:\n token.depth && token.depth <= 4\n ? (`heading-${token.depth}` as `heading-${1 | 2 | 3 | 4}`)\n : 'heading-4',\n children\n };\n }\n case 'link': {\n return {\n href: token.href,\n text: token.text || ''\n };\n }\n case 'em': {\n return applyFormatting(children, token, 'italic');\n }\n case 'strong': {\n return applyFormatting(children, token, 'bold');\n }\n case 'del': {\n return applyFormatting(children, token, 'line-through');\n }\n case 'codespan': {\n return applyFormatting(children, token, 'code');\n }\n case 'list': {\n if (token.ordered) {\n return {\n type: 'ordered-list',\n start: typeof token.start === 'number' ? token.start : 1,\n children: children as PegaCustom.ListItemElement[]\n };\n }\n\n return {\n type: 'unordered-list',\n children: children as PegaCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\n };\n }\n case 'blockquote': {\n return {\n type: 'block-quote',\n children\n };\n }\n case 'code': {\n return {\n type: 'code-block',\n language: token.lang,\n children: [{ text: token.text }]\n };\n }\n case 'table': {\n const headerRows = token.header?.length ? [token.header] : [];\n const bodyRows = token.rows || [];\n\n const headerSlateRows = convertTableRowsToSlateNodes(\n headerRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align,\n true\n );\n\n const bodySlateRows = convertTableRowsToSlateNodes(\n bodyRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align\n );\n\n const tableBody: PegaCustom.TableBodyElement = {\n type: 'table-body',\n children: bodySlateRows\n };\n\n const tableChildren:\n | [PegaCustom.TableHeadElement, PegaCustom.TableBodyElement]\n | [PegaCustom.TableBodyElement] =\n headerSlateRows.length > 0\n ? [{ type: 'table-head', children: headerSlateRows }, tableBody]\n : [tableBody];\n\n return {\n type: 'table',\n children: tableChildren\n };\n }\n case 'br': {\n return { text: '\\n' };\n }\n case 'hr': {\n return {\n type: 'horizontal-rule',\n children: [{ text: '' }]\n };\n }\n case 'image': {\n return {\n type: 'image',\n alt: token.text,\n src: token.href,\n children: [{ text: '' }]\n };\n }\n default: {\n return {\n type: token.type,\n children\n } as Element;\n }\n }\n};\n\nexport const convertMarkdownForEditor = (\n md = '',\n searchRenderers?: InteractionRenderers[]\n): (Element | Text)[] => {\n return [\n {\n type: 'paragraph',\n children: parseTextToCustomSlateNodes(md, searchRenderers)\n }\n ];\n};\n\n// Converts markdown into Slate compatible nodes, also takes regex used\n// in Feed Component to pass them down to custom elements\nconst convertMarkdown = (\n md: string,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n const lexer = new marked.Lexer({ gfm: true });\n const output = lexer.lex(md) as MarkedToken[];\n return markDownToSlate(output, interactionRenderers, markdownMap, getNode);\n};\n\nexport default convertMarkdown;\n"]}
@@ -1,18 +1,20 @@
1
1
  import type { RenderElementProps, RenderLeafProps } from 'slate-react';
2
2
  import type { PegaCustom } from 'slate';
3
3
  import type { ComponentType, ReactElement } from 'react';
4
- export declare const slateNodeRenderer: (props: RenderElementProps) => JSX.Element;
4
+ export declare const slateNodeRenderer: ({ children, element, attributes }: RenderElementProps) => JSX.Element;
5
5
  type Node = {
6
6
  children: JSX.Element[];
7
7
  type: string;
8
+ align?: 'left' | 'center' | 'right';
8
9
  href?: string;
9
10
  italic?: boolean;
10
11
  start?: number;
11
12
  bold?: boolean;
12
13
  'line-through'?: boolean;
13
14
  code?: boolean;
15
+ isHeaderCell?: boolean;
14
16
  component?: JSX.Element | ComponentType<{
15
- children: Record<string, string> | ReactElement;
17
+ children: Record<string, string | boolean> | ReactElement;
16
18
  }>;
17
19
  src?: string;
18
20
  alt?: string;
@@ -20,7 +22,7 @@ type Node = {
20
22
  };
21
23
  export declare const nodeRenderer: (node: Node) => JSX.Element;
22
24
  export declare const slateLeafRenderer: (props: RenderLeafProps) => import("react/jsx-runtime").JSX.Element;
23
- export declare const StyledSpan: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
25
+ export declare const StyledSpan: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
24
26
  export declare const leafRenderer: (leaf: PegaCustom.Text) => import("react/jsx-runtime").JSX.Element;
25
27
  export {};
26
28
  //# sourceMappingURL=renderers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAa,YAAY,EAAE,MAAM,OAAO,CAAC;AAYpE,eAAO,MAAM,iBAAiB,GAAI,OAAO,kBAAkB,gBAsG1D,CAAC;AAEF,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAA;KAAE,CAAC,CAAC;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,gBA4EtC,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,OAAO,eAAe,4CAiCvD,CAAC;AAEF,eAAO,MAAM,UAAU,0GAEtB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,CAAC,IAAI,4CAgCjD,CAAC"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAa,YAAY,EAAE,MAAM,OAAO,CAAC;AAmBpE,eAAO,MAAM,iBAAiB,GAAI,mCAAmC,kBAAkB,gBAoHtF,CAAC;AAEF,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EACN,GAAG,CAAC,OAAO,GACX,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,YAAY,CAAA;KAAE,CAAC,CAAC;IACjF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,gBA0FtC,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,OAAO,eAAe,4CAiCvD,CAAC;AAEF,eAAO,MAAM,UAAU,+NAEtB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,CAAC,IAAI,4CAgCjD,CAAC"}
@@ -5,69 +5,83 @@ import BlockQuote from '../DecoratorComponents/BlockQuote';
5
5
  import CodeBlock from '../DecoratorComponents/CodeBlock';
6
6
  import Code from '../DecoratorComponents/Code';
7
7
  import HorizontalRule from '../DecoratorComponents/HorizontalRule';
8
- import { Table, TableRow, TableCell, TableBody } from '../DecoratorComponents/Table';
8
+ import { Table, TableHead, TableRow, TableCell, TableHeaderCell, TableBody } from '../DecoratorComponents/Table';
9
9
  // Renderer for block level elements
10
- export const slateNodeRenderer = (props) => {
11
- switch (props.element.type) {
10
+ export const slateNodeRenderer = ({ children, element, attributes }) => {
11
+ switch (element.type) {
12
12
  case 'heading-1':
13
- return (_jsx(Text, { variant: 'h1', ...props.attributes, children: props.children }));
13
+ return (_jsx(Text, { variant: 'h1', ...attributes, children: children }));
14
14
  case 'heading-2':
15
- return (_jsx(Text, { variant: 'h2', ...props.attributes, children: props.children }));
15
+ return (_jsx(Text, { variant: 'h2', ...attributes, children: children }));
16
16
  case 'heading-3':
17
- return (_jsx(Text, { variant: 'h3', ...props.attributes, children: props.children }));
17
+ return (_jsx(Text, { variant: 'h3', ...attributes, children: children }));
18
18
  case 'heading-4':
19
- return (_jsx(Text, { variant: 'h4', ...props.attributes, children: props.children }));
19
+ return (_jsx(Text, { variant: 'h4', ...attributes, children: children }));
20
20
  case 'ordered-list':
21
- return _jsx("ol", { ...props.attributes, children: props.children });
21
+ return _jsx("ol", { ...attributes, children: children });
22
22
  case 'unordered-list':
23
- return _jsx("ul", { ...props.attributes, children: props.children });
23
+ return _jsx("ul", { ...attributes, children: children });
24
24
  case 'list-item':
25
- return (_jsx("li", { ...props.attributes, "data-order": props.element.order, "data-level": props.element.level, "data-id": props.element.id, "data-parent-id": props.element.parentId, children: props.children }));
25
+ return (_jsx("li", { ...attributes, "data-order": element.order, "data-level": element.level, "data-id": element.id, "data-parent-id": element.parentId, children: children }));
26
26
  case 'block-quote':
27
- return _jsx(BlockQuote, { ...props.attributes, children: props.children });
27
+ return _jsx(BlockQuote, { ...attributes, children: children });
28
28
  case 'code-block':
29
- return (_jsx(CodeBlock, { ...props.attributes, language: props.element.language, children: props.children }));
29
+ return (_jsx(CodeBlock, { ...attributes, language: element.language, children: children }));
30
30
  case 'horizontal-rule':
31
31
  return _jsx(HorizontalRule, {});
32
32
  case 'custom': {
33
- const CustomComponent = props.element.component;
34
- let child = _jsx(CustomComponent, { ...props.attributes, children: props.element.content });
35
- if (props.element.href) {
36
- child = _jsx(Link, { href: props.element.href, children: child });
33
+ const CustomComponent = element.component;
34
+ const contentWithFormatting = {
35
+ ...element.content,
36
+ ...(element.bold && { bold: true }),
37
+ ...(element.italic && { italic: true }),
38
+ ...(element['line-through'] && { 'line-through': true }),
39
+ ...(element.code && { code: true })
40
+ };
41
+ let child = _jsx(CustomComponent, { ...attributes, children: contentWithFormatting });
42
+ if (element.href) {
43
+ child = _jsx(Link, { href: element.href, children: child });
37
44
  }
38
- if (props.element.italic) {
45
+ if (element.italic) {
39
46
  child = _jsx("em", { children: child });
40
47
  }
41
- if (props.element.bold) {
48
+ if (element.bold) {
42
49
  child = _jsx("strong", { children: child });
43
50
  }
44
- if (props.element['line-through']) {
51
+ if (element['line-through']) {
45
52
  child = _jsx("del", { children: child });
46
53
  }
47
- if (props.element.code) {
54
+ if (element.code) {
48
55
  child = _jsx(Code, { children: child });
49
56
  }
50
57
  return child;
51
58
  }
52
59
  case 'override': {
53
- return props.element.component;
60
+ return element.component;
54
61
  }
55
62
  case 'table':
56
- return _jsx(Table, { ...props.attributes, children: props.children });
63
+ return _jsx(Table, { ...attributes, children: children });
64
+ case 'table-head':
65
+ return _jsx(TableHead, { ...attributes, children: children });
57
66
  case 'table-body':
58
- return _jsx(TableBody, { ...props.attributes, children: props.children });
67
+ return _jsx(TableBody, { ...attributes, children: children });
59
68
  case 'table-row':
60
- return _jsx(TableRow, { ...props.attributes, children: props.children });
61
- case 'table-cell':
62
- return _jsx(TableCell, { ...props.attributes, children: props.children });
69
+ return _jsx(TableRow, { ...attributes, children: children });
70
+ case 'table-cell': {
71
+ const cellProps = element.align ? { ...attributes, align: element.align } : attributes;
72
+ if (element.isHeaderCell) {
73
+ return _jsx(TableHeaderCell, { ...cellProps, children: children });
74
+ }
75
+ return _jsx(TableCell, { ...cellProps, children: children });
76
+ }
63
77
  case 'paragraph':
64
- return (_jsx("div", { children: _jsx(Text, { ...props.attributes, children: props.children }) }));
78
+ return (_jsx("div", { children: _jsx(Text, { ...attributes, children: children }) }));
65
79
  case 'image':
66
- return (_jsxs("div", { ...props.attributes, children: [_jsx(Image, { src: props.element.src, alt: props.element.alt }), props.children] }));
80
+ return (_jsxs("div", { ...attributes, children: [_jsx(Image, { src: element.src, alt: element.alt ?? '' }), children] }));
67
81
  case 'image-placeholder':
68
- return _jsx("div", { ...props.attributes, children: props.children });
82
+ return _jsx("div", { ...attributes, children: children });
69
83
  default: {
70
- return _jsx("span", { ...props.attributes, children: props.children });
84
+ return _jsx("span", { ...attributes, children: children });
71
85
  }
72
86
  }
73
87
  };
@@ -96,7 +110,14 @@ export const nodeRenderer = (node) => {
96
110
  return _jsx(HorizontalRule, {});
97
111
  case 'custom': {
98
112
  const CustomComponent = node.component;
99
- let child = _jsx(CustomComponent, { children: node.content });
113
+ const contentWithFormatting = {
114
+ ...node.content,
115
+ ...(node.bold && { bold: true }),
116
+ ...(node.italic && { italic: true }),
117
+ ...(node['line-through'] && { 'line-through': true }),
118
+ ...(node.code && { code: true })
119
+ };
120
+ let child = _jsx(CustomComponent, { children: contentWithFormatting });
100
121
  if (node.href) {
101
122
  child = _jsx(Link, { href: node.href, children: child });
102
123
  }
@@ -119,16 +140,23 @@ export const nodeRenderer = (node) => {
119
140
  }
120
141
  case 'table':
121
142
  return _jsx(Table, { children: node.children });
143
+ case 'table-head':
144
+ return _jsx(TableHead, { children: node.children });
122
145
  case 'table-body':
123
146
  return _jsx(TableBody, { children: node.children });
124
147
  case 'table-row':
125
148
  return _jsx(TableRow, { children: node.children });
126
- case 'table-cell':
127
- return _jsx(TableCell, { children: node.children });
149
+ case 'table-cell': {
150
+ const cellProps = node.align ? { align: node.align } : undefined;
151
+ if (node.isHeaderCell) {
152
+ return _jsx(TableHeaderCell, { ...cellProps, children: node.children });
153
+ }
154
+ return _jsx(TableCell, { ...cellProps, children: node.children });
155
+ }
128
156
  case 'paragraph':
129
157
  return (_jsx("div", { children: _jsx(Text, { children: node.children }) }));
130
158
  case 'image':
131
- return (_jsxs("div", { children: [_jsx(Image, { src: node.src, alt: node.alt }), node.children] }));
159
+ return (_jsxs("div", { children: [_jsx(Image, { src: node.src, alt: node.alt ?? '' }), node.children] }));
132
160
  case 'image-placeholder':
133
161
  return _jsx("div", { children: node.children });
134
162
  case 'space':
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { RenderElementProps, RenderLeafProps } from 'slate-react';\nimport type { PegaCustom } from 'slate';\nimport type { ComponentType, ReactNode, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { Text, Link, Image } from '@pega/cosmos-react-core';\n\nimport BlockQuote from '../DecoratorComponents/BlockQuote';\nimport CodeBlock from '../DecoratorComponents/CodeBlock';\nimport Code from '../DecoratorComponents/Code';\nimport HorizontalRule from '../DecoratorComponents/HorizontalRule';\nimport { Table, TableRow, TableCell, TableBody } from '../DecoratorComponents/Table';\n\n// Renderer for block level elements\nexport const slateNodeRenderer = (props: RenderElementProps) => {\n switch (props.element.type) {\n case 'heading-1':\n return (\n <Text variant='h1' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-2':\n return (\n <Text variant='h2' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-3':\n return (\n <Text variant='h3' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-4':\n return (\n <Text variant='h4' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'ordered-list':\n return <ol {...props.attributes}>{props.children}</ol>;\n case 'unordered-list':\n return <ul {...props.attributes}>{props.children}</ul>;\n case 'list-item':\n return (\n <li\n {...props.attributes}\n data-order={props.element.order}\n data-level={props.element.level}\n data-id={props.element.id}\n data-parent-id={props.element.parentId}\n >\n {props.children}\n </li>\n );\n case 'block-quote':\n return <BlockQuote {...props.attributes}>{props.children}</BlockQuote>;\n case 'code-block':\n return (\n <CodeBlock {...props.attributes} language={props.element.language}>\n {props.children}\n </CodeBlock>\n );\n case 'horizontal-rule':\n return <HorizontalRule />;\n case 'custom': {\n const CustomComponent = props.element.component;\n let child = <CustomComponent {...props.attributes}>{props.element.content}</CustomComponent>;\n if (props.element.href) {\n child = <Link href={props.element.href}>{child}</Link>;\n }\n if (props.element.italic) {\n child = <em>{child}</em>;\n }\n if (props.element.bold) {\n child = <strong>{child}</strong>;\n }\n if (props.element['line-through']) {\n child = <del>{child}</del>;\n }\n if (props.element.code) {\n child = <Code>{child}</Code>;\n }\n return child;\n }\n case 'override': {\n return props.element.component;\n }\n case 'table':\n return <Table {...props.attributes}>{props.children}</Table>;\n case 'table-body':\n return <TableBody {...props.attributes}>{props.children}</TableBody>;\n case 'table-row':\n return <TableRow {...props.attributes}>{props.children}</TableRow>;\n case 'table-cell':\n return <TableCell {...props.attributes}>{props.children}</TableCell>;\n case 'paragraph':\n return (\n <div>\n <Text {...props.attributes}>{props.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div {...props.attributes}>\n <Image src={props.element.src} alt={props.element.alt as string} />\n {props.children}\n </div>\n );\n case 'image-placeholder':\n return <div {...props.attributes}>{props.children}</div>;\n default: {\n return <span {...props.attributes}>{props.children}</span>;\n }\n }\n};\n\ntype Node = {\n children: JSX.Element[];\n type: string;\n href?: string;\n italic?: boolean;\n start?: number;\n bold?: boolean;\n 'line-through'?: boolean;\n code?: boolean;\n component?: JSX.Element | ComponentType<{ children: Record<string, string> | ReactElement }>;\n src?: string;\n alt?: string;\n content?: Record<string, string>;\n};\n\n// Renderer for block level elements\nexport const nodeRenderer = (node: Node) => {\n switch (node.type) {\n case 'heading-1':\n return <Text variant='h1'>{node.children}</Text>;\n case 'heading-2':\n return <Text variant='h2'>{node.children}</Text>;\n case 'heading-3':\n return <Text variant='h3'>{node.children}</Text>;\n case 'heading-4':\n return <Text variant='h4'>{node.children}</Text>;\n case 'ordered-list':\n return <ol start={node.start}>{node.children}</ol>;\n case 'unordered-list':\n return <ul>{node.children}</ul>;\n case 'list-item':\n return <li>{node.children}</li>;\n case 'block-quote':\n return <BlockQuote>{node.children}</BlockQuote>;\n case 'code-block':\n return <CodeBlock>{node.children}</CodeBlock>;\n case 'horizontal-rule':\n return <HorizontalRule />;\n case 'custom': {\n const CustomComponent = node.component as ComponentType<{\n children?: Record<string, string> | ReactElement;\n }>;\n let child = <CustomComponent>{node.content}</CustomComponent>;\n if (node.href) {\n child = <Link href={node.href}>{child}</Link>;\n }\n if (node.italic) {\n child = <em>{child}</em>;\n }\n if (node.bold) {\n child = <strong>{child}</strong>;\n }\n if (node['line-through']) {\n child = <del>{child}</del>;\n }\n if (node.code) {\n child = <Code>{child}</Code>;\n }\n return child;\n }\n case 'override': {\n return node.component as JSX.Element;\n }\n case 'table':\n return <Table>{node.children}</Table>;\n case 'table-body':\n return <TableBody>{node.children}</TableBody>;\n case 'table-row':\n return <TableRow>{node.children}</TableRow>;\n case 'table-cell':\n return <TableCell>{node.children}</TableCell>;\n case 'paragraph':\n return (\n <div>\n <Text>{node.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div>\n <Image src={node.src} alt={node.alt as string} />\n {node.children}\n </div>\n );\n case 'image-placeholder':\n return <div>{node.children}</div>;\n case 'space':\n return <br />;\n default: {\n return <>{node.children}</>;\n }\n }\n};\n\n// Renderer for inline elements\nexport const slateLeafRenderer = (props: RenderLeafProps) => {\n let child = props.children;\n\n if (props.leaf.searchResult) {\n const CustomComponent = props.leaf.searchResult.component;\n return (\n <span {...props.attributes}>\n <CustomComponent {...props.leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (props.leaf.code) {\n child = <Code>{child}</Code>;\n }\n\n if (props.leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (props.leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (props.leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (props.leaf.href) {\n child = <Link href={props.leaf.href}>{child}</Link>;\n }\n\n return <span {...props.attributes}>{child}</span>;\n};\n\nexport const StyledSpan = styled.span`\n white-space: pre-line;\n`;\n\nexport const leafRenderer = (leaf: PegaCustom.Text) => {\n let child: string | ReactNode = leaf.text;\n if (leaf.searchResult) {\n const CustomComponent = leaf.searchResult.component;\n return (\n <span>\n <CustomComponent {...leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (leaf.code) {\n child = <Code>{child}</Code>;\n }\n\n if (leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (leaf.href) {\n child = <Link href={leaf.href}>{child}</Link>;\n }\n\n return <StyledSpan>{child}</StyledSpan>;\n};\n"]}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { RenderElementProps, RenderLeafProps } from 'slate-react';\nimport type { PegaCustom } from 'slate';\nimport type { ComponentType, ReactNode, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { Text, Link, Image } from '@pega/cosmos-react-core';\n\nimport BlockQuote from '../DecoratorComponents/BlockQuote';\nimport CodeBlock from '../DecoratorComponents/CodeBlock';\nimport Code from '../DecoratorComponents/Code';\nimport HorizontalRule from '../DecoratorComponents/HorizontalRule';\nimport {\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableHeaderCell,\n TableBody\n} from '../DecoratorComponents/Table';\n\n// Renderer for block level elements\nexport const slateNodeRenderer = ({ children, element, attributes }: RenderElementProps) => {\n switch (element.type) {\n case 'heading-1':\n return (\n <Text variant='h1' {...attributes}>\n {children}\n </Text>\n );\n case 'heading-2':\n return (\n <Text variant='h2' {...attributes}>\n {children}\n </Text>\n );\n case 'heading-3':\n return (\n <Text variant='h3' {...attributes}>\n {children}\n </Text>\n );\n case 'heading-4':\n return (\n <Text variant='h4' {...attributes}>\n {children}\n </Text>\n );\n case 'ordered-list':\n return <ol {...attributes}>{children}</ol>;\n case 'unordered-list':\n return <ul {...attributes}>{children}</ul>;\n case 'list-item':\n return (\n <li\n {...attributes}\n data-order={element.order}\n data-level={element.level}\n data-id={element.id}\n data-parent-id={element.parentId}\n >\n {children}\n </li>\n );\n case 'block-quote':\n return <BlockQuote {...attributes}>{children}</BlockQuote>;\n case 'code-block':\n return (\n <CodeBlock {...attributes} language={element.language}>\n {children}\n </CodeBlock>\n );\n case 'horizontal-rule':\n return <HorizontalRule />;\n case 'custom': {\n const CustomComponent = element.component;\n const contentWithFormatting = {\n ...element.content,\n ...(element.bold && { bold: true }),\n ...(element.italic && { italic: true }),\n ...(element['line-through'] && { 'line-through': true }),\n ...(element.code && { code: true })\n };\n let child = <CustomComponent {...attributes}>{contentWithFormatting}</CustomComponent>;\n if (element.href) {\n child = <Link href={element.href}>{child}</Link>;\n }\n if (element.italic) {\n child = <em>{child}</em>;\n }\n if (element.bold) {\n child = <strong>{child}</strong>;\n }\n if (element['line-through']) {\n child = <del>{child}</del>;\n }\n if (element.code) {\n child = <Code>{child}</Code>;\n }\n return child;\n }\n case 'override': {\n return element.component;\n }\n case 'table':\n return <Table {...attributes}>{children}</Table>;\n case 'table-head':\n return <TableHead {...attributes}>{children}</TableHead>;\n case 'table-body':\n return <TableBody {...attributes}>{children}</TableBody>;\n case 'table-row':\n return <TableRow {...attributes}>{children}</TableRow>;\n case 'table-cell': {\n const cellProps = element.align ? { ...attributes, align: element.align } : attributes;\n if (element.isHeaderCell) {\n return <TableHeaderCell {...cellProps}>{children}</TableHeaderCell>;\n }\n return <TableCell {...cellProps}>{children}</TableCell>;\n }\n case 'paragraph':\n return (\n <div>\n <Text {...attributes}>{children}</Text>\n </div>\n );\n case 'image':\n return (\n <div {...attributes}>\n <Image src={element.src} alt={element.alt ?? ''} />\n {children}\n </div>\n );\n case 'image-placeholder':\n return <div {...attributes}>{children}</div>;\n default: {\n return <span {...attributes}>{children}</span>;\n }\n }\n};\n\ntype Node = {\n children: JSX.Element[];\n type: string;\n align?: 'left' | 'center' | 'right';\n href?: string;\n italic?: boolean;\n start?: number;\n bold?: boolean;\n 'line-through'?: boolean;\n code?: boolean;\n isHeaderCell?: boolean;\n component?:\n | JSX.Element\n | ComponentType<{ children: Record<string, string | boolean> | ReactElement }>;\n src?: string;\n alt?: string;\n content?: Record<string, string>;\n};\n\n// Renderer for block level elements\nexport const nodeRenderer = (node: Node) => {\n switch (node.type) {\n case 'heading-1':\n return <Text variant='h1'>{node.children}</Text>;\n case 'heading-2':\n return <Text variant='h2'>{node.children}</Text>;\n case 'heading-3':\n return <Text variant='h3'>{node.children}</Text>;\n case 'heading-4':\n return <Text variant='h4'>{node.children}</Text>;\n case 'ordered-list':\n return <ol start={node.start}>{node.children}</ol>;\n case 'unordered-list':\n return <ul>{node.children}</ul>;\n case 'list-item':\n return <li>{node.children}</li>;\n case 'block-quote':\n return <BlockQuote>{node.children}</BlockQuote>;\n case 'code-block':\n return <CodeBlock>{node.children}</CodeBlock>;\n case 'horizontal-rule':\n return <HorizontalRule />;\n case 'custom': {\n const CustomComponent = node.component as ComponentType<{\n children?: Record<string, string | boolean> | ReactElement;\n }>;\n const contentWithFormatting = {\n ...node.content,\n ...(node.bold && { bold: true }),\n ...(node.italic && { italic: true }),\n ...(node['line-through'] && { 'line-through': true }),\n ...(node.code && { code: true })\n };\n let child = <CustomComponent>{contentWithFormatting}</CustomComponent>;\n if (node.href) {\n child = <Link href={node.href}>{child}</Link>;\n }\n if (node.italic) {\n child = <em>{child}</em>;\n }\n if (node.bold) {\n child = <strong>{child}</strong>;\n }\n if (node['line-through']) {\n child = <del>{child}</del>;\n }\n if (node.code) {\n child = <Code>{child}</Code>;\n }\n return child;\n }\n case 'override': {\n return node.component as JSX.Element;\n }\n case 'table':\n return <Table>{node.children}</Table>;\n case 'table-head':\n return <TableHead>{node.children}</TableHead>;\n case 'table-body':\n return <TableBody>{node.children}</TableBody>;\n case 'table-row':\n return <TableRow>{node.children}</TableRow>;\n case 'table-cell': {\n const cellProps = node.align ? { align: node.align } : undefined;\n if (node.isHeaderCell) {\n return <TableHeaderCell {...cellProps}>{node.children}</TableHeaderCell>;\n }\n return <TableCell {...cellProps}>{node.children}</TableCell>;\n }\n case 'paragraph':\n return (\n <div>\n <Text>{node.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div>\n <Image src={node.src} alt={node.alt ?? ''} />\n {node.children}\n </div>\n );\n case 'image-placeholder':\n return <div>{node.children}</div>;\n case 'space':\n return <br />;\n default: {\n return <>{node.children}</>;\n }\n }\n};\n\n// Renderer for inline elements\nexport const slateLeafRenderer = (props: RenderLeafProps) => {\n let child = props.children;\n\n if (props.leaf.searchResult) {\n const CustomComponent = props.leaf.searchResult.component;\n return (\n <span {...props.attributes}>\n <CustomComponent {...props.leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (props.leaf.code) {\n child = <Code>{child}</Code>;\n }\n\n if (props.leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (props.leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (props.leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (props.leaf.href) {\n child = <Link href={props.leaf.href}>{child}</Link>;\n }\n\n return <span {...props.attributes}>{child}</span>;\n};\n\nexport const StyledSpan = styled.span`\n white-space: pre-line;\n`;\n\nexport const leafRenderer = (leaf: PegaCustom.Text) => {\n let child: string | ReactNode = leaf.text;\n if (leaf.searchResult) {\n const CustomComponent = leaf.searchResult.component;\n return (\n <span>\n <CustomComponent {...leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (leaf.code) {\n child = <Code>{child}</Code>;\n }\n\n if (leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (leaf.href) {\n child = <Link href={leaf.href}>{child}</Link>;\n }\n\n return <StyledSpan>{child}</StyledSpan>;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { Element, Text } from 'slate';
1
+ import { Element as SlateElement, Text as SlateText } from 'slate';
2
2
  export declare const slateToHtmlMap: {
3
3
  link: string;
4
4
  'heading-1': string;
@@ -12,6 +12,7 @@ export declare const slateToHtmlMap: {
12
12
  'code-block': string;
13
13
  'horizontal-rule': string;
14
14
  table: string;
15
+ 'table-head': string;
15
16
  'table-body': string;
16
17
  'table-row': string;
17
18
  'table-cell': string;
@@ -24,6 +25,6 @@ export declare const slateToHtmlMap: {
24
25
  href: string;
25
26
  image: string;
26
27
  };
27
- export declare const constructHtml: (nodes: (Element | Text)[]) => string;
28
- export declare const convertSlateToHtml: (nodes: (Element | Text)[]) => string;
28
+ export declare const constructHtml: (nodes: (SlateElement | SlateText)[]) => Node[];
29
+ export declare const convertSlateToHtml: (nodes: (SlateElement | SlateText)[]) => string;
29
30
  //# sourceMappingURL=slateConverter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slateConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/slateConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAKtC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;CAyB1B,CAAC;AA8BF,eAAO,MAAM,aAAa,GAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,KAAG,MAkCzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,KAAG,MAW9D,CAAC"}
1
+ {"version":3,"file":"slateConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/slateConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAanE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAC;AAqDF,eAAO,MAAM,aAAa,GAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,KAAG,IAAI,EAoEvE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,KAAG,MAiBxE,CAAC"}